Modbus RTU Individual Register Details
Modbus RTU - Control Word
Modbus Register 1 is the Control Word and can be used to Run the drive in either Forward or Reverse, Stop the drive and Reset drive Fault Codes.
When using the Control Word to run the drive it needs to be used in combination with Register 2 Speed Reference. The speed reference register provides the drives running speed and details can be found in the topic: Modbus RTU - Speed Reference.
The Control Word consists of 16 bits (2 Bytes), though only bits 0 - 2 are used.
The table below shows the function of each bit in the Control Word.
Bit Number | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Byte | High Byte | Low Byte | ||||||||||||||
Bit Function when 1 | Reserved | Fault Reset Request | Run Reverse | Run Forward | ||||||||||||
Important
Drive must be set to RTU command source in P1-01 to run the drive via Modbus RTU.
To start the drive over Modbus you will need to use the Control Word Register which is Register 1.
Register 1 - Bit Number | Running Direction | Drive Action | |
|---|---|---|---|
Action when Bit = 0 | Action when Bit = 1 | ||
0 | Forward | Drive Stopped / Stop the drive | Run the Drive Forward with Register 2 Speed Reference |
1 | Reverse | Drive Stopped / Stop the drive | Run the Drive Reverse with Register 2 Speed Reference |
2 | N/A | No Action | Reset Fault - If the drive is under a fault condition (fault code displayed) |
An example Modbus telegram to run the drive forward by writing to Register 1 is as follows:
01 06 00 01 00 01 48 0A
Breaking down this message it translate as follows:
Part of Telegram | Description | Value in Hex (Decimal) | Drive Description |
|---|---|---|---|
01 | Drive Address | 0x01 (1) | Needs to match P2-01 value |
06 | Function Code | 0x06 (6) | Write Single Register command |
00 00 | Register Address | Physical: 0x0000 (0) Logical: 0x0001 (1) | Writing to Register 1 (Control Word) |
00 01 | Register Value | 0x 0001 (1) | Writing a value of 1 as the run forward command is bit 0 = 1. In binary the control word would look like: 0000 0000 0000 0001 |
48 0A | CRC | 0x480A (18442) | Message error checking code. |
While the telegram above runs the drive forward there is currently no speed reference so the drive will just sit at 0 speed and not accelerate. To change the drives speed reference you need to write to Register 2.
An example Modbus telegram to give a speed reference of 50Hz is below by writing to Register 2.
Part of Telegram | Description | Value in Hex (Decimal) | Drive Description |
|---|---|---|---|
01 | Drive Address | 0x01 (1) | Needs to match P2-01 value |
06 | Function Code | 0x06 (6) | Write Single Register command |
00 01 | Register Address | Physical: 0x0001 (1) Logical: 0x0002 (2) | Writing to Register 1 (Speed Reference) |
01 F4 | Register Value | 0x01F4 (500) | Writing a value of 500 to run the drive at 50Hz. |
D8 1D | CRC | 0xD81D (55325) | Message error checking code. |
Now sending these two commands will run the drive forward at 50Hz speed reference.
In this example we will run the drive in Reverse over Modbus at a speed reference.
First we need to construct the telegram to give the drive a run command using Register 1 (Control Word) to send the command.
An example telegram is shown in the table below:
Part of Telegram | Description | Value in Hex (Decimal) | Drive Description |
|---|---|---|---|
01 | Drive Address | 0x01 (1) | Needs to match P2-01 value |
06 | Function Code | 0x06 (6) | Write Single Register command |
00 00 | Register Address | Physical: 0x0000 (0) Logical: 0x0001 (1) | Writing to Register 1 (Control Word) |
00 02 | Register Value | 0x 0002 (2) | Writing a value of 2 to run the drive in reverse. In binary the control word would look like: 0000 0000 0000 0010 |
08 0B | CRC | 0x080B (2059) | Message error checking code. |
Now we need to send a speed reference to the drive so it does not sit at 0Hz.
To do this use Register 2 which is Speed Reference.
An example Modbus telegram to give a speed reference of 25Hz is below by writing to Register 2.
Part of Telegram | Description | Value in Hex (Decimal) | Drive Description |
|---|---|---|---|
01 | Drive Address | 0x01 (1) | Needs to match P2-01 value |
06 | Function Code | 0x06 (6) | Write Single Register command |
00 01 | Register Address | Physical: 0x0001 (1) Logical: 0x0002 (2) | Writing to Register 2 (Speed Reference) |
00 FA | Register Value | 0x00FA (250) | Writing a value of 250 to run the drive at 25Hz. |
58 49 | CRC | 0x5849 (22601) | Message error checking code. |
Now by sending these two telegrams we are running the drive in reverse at 25Hz.
Below are a few common problems encountered and simple solutions:
Problem | Solutions | Note |
|---|---|---|
Getting Modbus Timeout Error |
| |
| P2-01 - Modbus Address P2-02 - Modbus Baud Rate | |
| Drive will not except a value outside of the parameter range | |
Drive is enabled but at 0 speed |
| Speed Reference via Modbus can be viewed in parameter P2-51 |
Drive will not stop |
| When running either bit 0 or bit 1 will be 1 for the run command depending on the direction. To stop the drive the Control Word should be 0 or for binary 0000 0000 0000 0000. |
Drive will not start |
| If both bits are high the drive will not start or will stop if running. Only one direction command should be given. The Control Word in Binary should NOT look like this: 0000 0000 0000 0011 as this has both the run forward & run rerverse bits high. |
| Some software use 0 based addressing so in this case the Control Word would be Register 0 in that software rather than Register 1. | |
| The drive can only be controlled over Modbus if the Command Source in P1-01 is set to 1. | |
| The drive must not have a fault code present. The fault code can be viewed either via the drive display, parameter P0-37, Modbus Register 6 (Upper Byte) or OptiTools Pro. | |
| Terminals STO1 & STO2 should both have 24V present so they are in a closed state. The state of the STO ports can be viewed by either Parameter P0-03 or Modbus Register 10003 NoteThe drive does not need any Digital Input to be present to run. |
Modbus RTU - Speed Reference
The drives speed can be adjusted in real time over Modbus with Register 2 (Speed Reference).
This can be used in combination with the drive Control Word in Register 1 to run the drive (the topic detailing the control word is found here: Modbus RTU - Control Word).
While controlling the drive over Modbus the Speed Reference Register acts as the only source of the drives speed reference.
When controlling the drive over Modbus the drive still follows the parameters settings for the S-Ramps(Group 8 & Group 9). For example if you set the acceleration ramp time to 5 seconds in P8-02 the drive will still take 5 seconds to reach the speed reference.
How to use different Speed Units for the Speed Reference
Modbus Control supports all of the 4 different speed units. Modbus Registers containing a speed will use the currently active unit in the drive.
The table below lists the available speed reference units and how to set them
Speed Reference Unit | How to Set | Modbus Scaling |
|---|---|---|
Hz | Default unit of the drive. P4-06 MUST = 0 P3-08 MUST = 0 | 1 = 0.1Hz |
rpm | P4-06 > 0 - Should match the motor nameplate value | 1 = 1 rpm |
ft/s | P4-06 > 0 - Should match the motor nameplate value P3-08 < 100 | 1 = 0.01 ft/s |
m/s | P4-06 > 0 - Should match the motor nameplate value P3-08 ≥ 100 | 1 = 0.01 m/s |
To control the drive Speed Reference over Modbus you will need to use Register 2.
Sending Speed Reference Command via Modbus
An example telegram to sent to the drive to change the speed reference is: 01 06 00 01 05 DC DA C3
Lets decode this telegram
Part of Telegram | Description | Value in Hex (Decimal) | Drive Description |
|---|---|---|---|
01 | Drive Address | 0x01 (1) | Needs to match P2-01 value |
06 | Function Code | 0x06 (6) | Write Single Register command |
00 01 | Register Address | Physical: 0x0001 (1) Logical: 0x0002 (2) | Writing to Register 2 (Speed Reference) The software used fro this message uses 0 based addressing |
05 DC | Register Value | 0x05DC (1500) | This part of the telegram is where we write our desired speed reference In this case the value is 1500. As the drive is using rpm as the speed units then this equals 1500rpm |
DA C3 | CRC | 0xDAC3 (56003) | Message error checking code |
What we can see from this message is that we are sending a speed reference command with a value of 1500 to the drive with address 1.
Response to Speed Reference Command
The response we get back from the drive is as follows: 01 03 02 05 DC BA 8D
Decoding this telegram:
Part of Telegram | Description | Value in Hex (Decimal) | Drive Description |
|---|---|---|---|
01 | Drive Address | 0x01 (1) | Should be the same as P2-01 |
03 | Function Code | 0x03 (3) | Read Holding Registers command |
02 | Byte Count | 0x02 (2) | Number of Bytes (2 in this case) |
05 DC | Register Value | 0x05DC (1500) | This shows that 1500 has been accepted as a valid speed reference by the drive |
BA 8D | CRC | 0xBA8D (47757) | Message error checking code. |
From this response telegram we can see that the drive has accepted the speed reference value and will now run at 1500rpm when the drive is enabled via the Control Word in Register 1.
Travel Curve Adjustments with Modbus
When controlling the drive over Modbus the travel curve parameters (Ramps, Jerks, Gains) can all be adjusted by their normal parameters. The drive will always follow these parameters for the travel curve profile.
These parameters can be read/written via the normal method over Modbus with the normal parameter access method which can be found in the topic: Modbus RTU - Reading and Writing Parameters.
Below are a few common problems encountered and simple solutions:
Problem | Solutions | Notes |
|---|---|---|
Getting invalid response |
| If the speed reference is not in the range of P8-01 the drive will reject the value. |
Drive is not running at the sent speed reference value |
| If you a sending a speed reference in rpm the drive should be set to use rpm as the units to Hz or linear. Use the table Units Setting to select the drives speed units. |
| 1 = 0.1Hz 1 = 1 rpm 1 = 0.01 ft/s 1 = 0.01 m/s |
Modbus RTU - Status Word
The drive's Status Word can be monitored in Modbus Register 6 and is a read only register.
The Status Word is comprised of 16 bits with each bit having it's own function assigned to it that will toggle 0 or 1 depending on which condition is met.
The functions assigned to each bit of the Status Word are listed below:
Bit | Definition | Condition when Bit = 0 | Condition when Bit = 1 |
|---|---|---|---|
0 | Ready | Drive has any of the following a fault code, lost mains supply or Safety Chain is open | Drive is free from fault codes, has mains supply and Safety Chain is closed |
1 | Running | When drive is stopped | When drive is running |
2 | Tripped | When drive has no fault code | When drive has tripped and displays a fault code |
3 | Reserved | Reserved | Reserved |
4 | Reserved | Reserved | Reserved |
5 | Reserved | Reserved | Reserved |
6 | Speed Set-point Reached (At Speed) | When drive is not at target speed reference | When drive reaches target speed reference |
7 | Below Minimum Speed | When drive is above minimum speed (P8-02 value) | When drive speed is less than P8-02 value and drive is enabled |
8 | Overload | When drive output current is below P4-03 value | When drive output current is above P4-03 value (Overload Conditions) |
9 | Mains Loss | When drive is supplied from mains power | Whens mains power is lost |
10 | Heatsink > 85°C | When P0-48 is below 85°C | When P0-48 is > 85°C |
11 | Control Board > 80°C | When drive P0-49 temperature is < 80°C | When drive P0-49 temperature is > 80°C |
12 | Switching Frequency Reduction | When no switching frequency reduction is not active | When switching frequency reduction is active |
13 | Reverse Rotation | When drive speed sign is positive | When drive speed sign is negative |
14 | Auto-tune Active | When Auto-tune is not active | When Auto-tune is in progress |
15 | Live Toggle Bit | No message read | Message Read |
Request to Read drive drives Status Word
To read the drive Status Word use Register 6. Below is an example telegram using Modbus to request (Tx) the drive status word from Register 6:
Part of Telegram | Description | Value in Hex (Decimal) | Drive Description |
|---|---|---|---|
01 | Drive Address | 0x01 (1) | Needs to match P2-01 value |
06 | Function Code | 0x06 (6) | Read Holding Registers command |
00 05 | Register Address | Physical: 0x0005 (5) Logical: 0x0006 (6) | Reading to Register 6 (Status Word) |
00 01 | Register Value | 0x 0001 (1) | Writing a value of 1 to read only the drive Status Word register |
94 0B | CRC | 0x940B (37899) | Message error checking code. |
Response from the Drive showing the Status Word
Now below is the response from the drive (Rx) which details the Status Word after the request has been sent: 01 03 02 80 43 98 75.
Part of Telegram | Description | Value in Hex (Decimal) | Drive Description |
|---|---|---|---|
01 | Drive Address | 0x01 (1) | Needs to match P2-01 value |
03 | Function Code | 0x03 (3) | Read Holding Registers command |
02 | Byte Count | 0x02 (2) | Number of Bytes (2 in this case) |
8043 | Register Value | 0x8043 (32835) | This gives the current Drive Status Word In binary the control word would look like: 1000 0000 0100 0011 |
98 75 | CRC | 0x9875 (39029) | Message error checking code. |
Understanding the Status Word from the Modbus message
From the deconstructed telegram above, the Status Word returns the value: 1000 0000 0100 0011
Lets break down this status word into its individual bits and using the table of each bits function we can define what the drive is doing below:
From the Status Word we can see that the drive is:
Running at target speed reference
Not in overload conditions
For full details of this Status Word example see the table below to fully define what the drive is doing in this example.
Bit | Status Word Individual Bit Status | What does each bit status mean |
|---|---|---|
0 | 1 | Bit 0 has a status of 1 which is Drive Ready so we know the drive is fee from faults, has mains supply and the Safety Chain is closed |
1 | 1 | Bit 1 being in a 1 state shows the drive is running |
2 | 0 | As bit 2 is 0 the drive has no fault codes present |
3 | 0 | Reserved |
4 | 0 | |
5 | 0 | |
6 | 1 | Bit 6 being 1 shows the drive is at it's target speed reference |
7 | 0 | Bit 7 being 1 shows the drive is NOT below the speed set in P8-02 |
8 | 0 | Bit 8 being 0 means the drive is not in overload conditions and the Motor Current (P0-25) is below the value in P4-03 |
9 | 0 | As bit 9 is 0 the drive is supplied from mains power |
10 | 0 | Bit 10 being 0 means the drive is not overheated |
11 | 0 | Bit 11 being 0 means the drive is not overheated |
12 | 0 | Bit 12 with a status of indicates there is no switching frequency reduction |
13 | 0 | Bit 13 being 0 shows the drive has a positive speed sign so should be running forward (upwards) |
14 | 0 | Bit 14 being 0 shows that an Auto-tune is not active |
15 | 1 | Bit 15 being toggled at 1 means a message is being read |
Below are a few common problems encountered and simple solutions:
Problem | Solutions | Note |
|---|---|---|
Status Word is not changing value |
| If using 0 based address 1 must be subtracted from all Register address number |
| If you are not connected via Modbus the Status Word will not change |
Modbus RTU – Control & Monitoring Registers
All parameters are accessible for Read and Write over Modbus RTU communication. The following is a list of additional accessible Modbus Registers available in the drive which can be used to control and monitor the drive.
Note
Registers can be read regardless of the setting in parameter P1-01.
Register Number | Upper Byte | Lower Byte | Read/Write | Notes |
|---|---|---|---|---|
1 | Command Control Word | R/W | Command control word used to control the drive when operating with Modbus RTU. | |
2 | Commanded Speed Reference | R/W | This Register is used to send the Speed Reference command to the drive over Modbus | |
3 | Reserved | R/W | Reserved | |
4 | Reserved | RW | Reserved | |
5 | Internal Speed Reference | RO | 0.01Hz Reference | |
6 | Status Word | RO | Shows the Status of the drive | |
7 | Output Speed | RO | Output speed in the units that the drive is operating in. e.g. rpm, m/s to one decimal place | |
8 | Output Current | RO | Output current of the drive to one decimal place, e.g.105 = 10.5 Amps | |
9 | Output Torque | RO | Motor output torque level to one decimal place, e.g. 474 = 47.4 % | |
10 | Output Power | RO | Output power of the drive to two decimal places, e.g.1100 = 11.00 kW | |
11 | Digital Input Status | RO | Represents the status of the drive inputs | |
12 | Reserved | Reserved | Reserved | Reserved |
13 | Drive Power Rating | RO | Drive Power Rating in kW | |
14 | Drive Voltage Rating | RO | Drive Power Rating in Volts | |
15 | I/O Firmware | RO | Major*100+Minor | |
16 | Power Firmware | RO | Major*100+Minor | |
17 | Drive Type Code | RO | Always 0x0330 | |
18 | Active Fault Code Sub Index | Active Fault Code | RO | Register 18 shows currently active fault code on the drive. Bits 15 - 8 shows the fault codes sub index. If there is no Sub Index values are 0. Bits 7 - 0 shows the active fault code that matches Optitools Pro and other documentation. |
19 | Alarm Code | RO | When an Alarm is triggered from the drive this register shows what alarm is active. Each bit corresponds to an alarm. The table shows the each bit and it's associated alarm. | |
20 | Analog 1 Level | RO | Analog Input 1 Applied Signal level in % to one decimal place, e.g. 1000 = 100.0% | |
21 | Analog 2 Level | RO | Analog Input 2 Applied Signal level in % to one decimal place, e.g. 1000 = 100.0% | |
22 | Pre Ramp Speed Reference | RO | Internal drive frequency setpoint | |
23 | DC bus voltage | RO | Measured DC Bus Voltage in Volts | |
24 | Drive temperature | RO | Measured Heatsink Temperature in °C | |
25 | Serial Number Part 1 | RO | Modbus Registers 25 - 28 show the Drive Serial Number in parts, combining all these Registers together gives the complete Drive Serial Number. | |
26 | Serial Number Part 2 | |||
27 | Serial Number Part 3 | |||
28 | Serial Number Part 4 | |||
29 | Digital Output Status | RO | Bit is set to 1 when Digital Output is closed (high) | |
30 | Energy Consumption kWh | RO | Energy Consumption in kWh | |
31 | Energy Consumption MWh | RO | Energy Consumption in MWh | |
32 | Reserved | Reserved | Reserved | |
33 | Reserved | Reserved | Reserved | |
34 | Drive total run time (h) | RO | Drive total run time in hours | |
35 | Drive total run time (m) | RO | Drive total run time in minutes | |
36 | Run time since last enable (h) | RO | Drive run time in hours since last enable | |
37 | Run time since last enable (m) | RO | Drive run time in minutes since last enable | |
38 | Service time remaining | RO | Time remaining until next service is due | |
39 | Control Board Temperature | RO | Control Board Temperature in °C | |
40 - 47 | Reserved | Reserved | Reserved | |
48 | STO Status | RO | 1 When Safe Torque Off is closed (both STO1 and STO2 ports need to be closed) | |