Technical FAQs

Ask a Question

Procedure to send commands over Modbus to PM5000 using Modbus Tester

Issue:
Customer wants to send a command to a PM5000 to perform remote configuration or a meter reset.

Product Line:
PM5100 (PM5110)
PM5300 (PM5330, PM5340)
PM5500 (PM5560, PM5563)

Environment:
Remote meter configuration / resets

Resolution:
*Warning: The command procedure listed here can cause undesirable results to your product if applied incorrectly. Before sending any commands, verify all commands and parameters are correct. If you have any doubts, contact Technical Support for guidance.*

The following instructions use Modbus Tester to read and write the commands. Other Modbus polling softwares can also be used. 

Step 1: Identify the Command Number and necessary Parameters
  1. Open the Modbus Register List
  2. Navigate to the Commands tab and locate the desired command
  3. Write down the Command Number and the Parameters
In this example, the user wants to send the Reset All Energies command to the PM5560. As shown in Table 1, the Reset All Energies command number is 2020. This command also has 1 parameter, the command semaphore. This information will be necessary in Step 3.
 
Table 1: Modbus Register List Excerpt
Command Name Command Number Command Tag Parameters
Reset All Energies 2020 C_RESET_ALL_ENERGIES (1) Command Semaphore

Step 2: Get the Semaphore
  1. In Modbus Tester, set the Data Type to "Holding Register (R03 / W16)".
  2. The Command Semaphore is stored in Modbus register 5680. Therefore, set the Starting Register to 5680.
  3. Set # or Registers to be 1.
  4. Then Click on Read once. 
Note: During this time no other communication with the meter should run in the background. Otherwise it may cause in error.
Note: Only perform the reading operation once. Doing more than once will cause in error. If by mistake the operation is performed more than one time then it is advised to try to do the operation again after 4 min. 

  1. Write down the Semaphore value

Step 3: Sending the Command
  1. In Modbus Tester, set the Starting Register to 5000 and the # of Registers to 2.
Note: If the command requires more than 2 parameters, increase the # of Registers accordingly. Modbus Tester only allows a maximum of 10 registers. If there are greater than 10 parameters for the given command, then a different Modbus polling software that is capable of writing more than 10 registers must be used.
  1. Set register 5000 to the Command value
  2. Set register 5001 to the Semaphore value
  3. Set registers 5002 - 5124 to the parameter values, if used
For this example, recall that Reset All Energies has a Command value of 2020.
Register 5000 = 2020
Register 5001 = 62283
Registers 5002 - 5124 = not used for this command
  1. Then Click "Write"

Additional Information:

What commands are available?
A full list of the commands that can be sent to the PM5000 are detailed in the Modbus Register List under the Commands tab.
The table below lists several of the most common commands:
 
Warm Start Reset
Set Date/Time
Reset Cycle Count
Reset All Min/Max
Reset All Demands
Reset Power Demand
Reset All Peak Demands
Reset Power Peak Demands
Reset Input Metering Peak Demand
Reset All Energies
Reset All Accumulated Energies
Reset Input Metering Accumulations
Meter Initialization
Acknowledge Alarms
Disable Alarms
Clear Data Log
Reset Diagnostic Log

What is a Semaphore and what is its purpose?
The semaphore is a number that is used to control write access to the PM5000. The semaphore can only be read once in a 4 min by a single master. Therefore, it is the only master that can send a command within the 4 min period. This process guarantees that the PM5000 is only receiving a command from one device at a time.

NOTE: The semaphore value which is received is valid for 4 minutes when not used, that is 4 minutes from the previous semaphore write.
For example: if the received semaphore value is used at the 3rd minute 30th second from when the value is recieved, then the same semaphore is valid for next 4 minutes.
You may use the semaphore value multiple times within that 4 minute window.
You will need to read the command semaphore again after 4 minutes from the previous read has elapsed in order to get the new number.
Was this helpful?
What can we do to improve the information ?