Control Registers
Target Position (P0)
The target position register is the value of the motor position you wish to send the motor to. This is measured in pulses. By default the motor will perform 1000 pulses per revolution. By sending the motor a position of 1,000,000,000 the motor will continue to run forward to an infinite position until stopped. Internally this writes to the P0 register in the motor.
Target Speed (S0)
The speed parameters in the motor are measured in pulses per second. The values you program in the motor are a multiple of the speed unit that is set in parameter K37. By Default, this speed unit is set to 100 pulses per second. This means that if you set the motors speed value to 50, the rotational speed of the motor will be 100pps x 50 = 5000 pulses per second. Internally this writes to the S0 register in the motor.
Target Acceleration (A0)
The motors acceleration is measured in thousands of pulses per second squared (Kpps2). This means that if you set the motors acceleration value to 10, for example, the motor will accelerate to the desired speed at 10,000 pulse/sec2. For example, if the speed was set to 5000 pulses per second, we would reach this speed in half a second with an acceleration value of 10. Internally this writes to the A0 register in the motor.
Control Word (R0)
The Control word is a holding register which you can set to command the motor to perform different functions such as starting a motion, stopping, homing, etc.
Internally this writes to the R0 register int eh motor. It is used for the Control Word. It has the following value options
R0 Value | Description |
---|---|
0 | Do nothing |
1 | Start the position move |
2 | Stop the motor |
3 | Enable the motor |
4 | Disable the motor |
5 | Home the motor |
- Changing the value of the control word immediately executes the operation
- If the Control Word is left with the value 1 then changing the position once the motor has come to a stop will execute the next move. This allows the Modbus master to only change the position and not need to also toggle the control word to execute the next move.
- The home routine is by default set to a hardstop search in the CCW direction. Please see K42 to K48 for home routine options.
General Purpose Variable (V0)
The variable, V0, can be used as a general purpose variable. This can be read and written to via the write command, and can be manipulated via a CML program running in the motor, if so desired.
Command Structure
Read Status (T→O)
Input Assembly Object - Instance 0x65
The read status command can be sent by using the following parameters:
Service | 0x0E |
---|---|
Class | 0x04 |
Attribute | 0x03 |
Instance | 0x65 |
Data Length | 14 |
Data description:
Bytes | Data |
---|---|
0-1 | Communication Error Code |
2-5 | Motor Status Code |
6-9 | Motor Position |
10-13 | V0 value |
Example:
By sending the motor the read status command, the motor will respond with the motor status, current position, and value of a general use variable V0 in the following format:
00 00 | 08 00 00 00 | 88 13 00 00 | 0F 00 00 00 |
---|---|---|---|
Comm Error | Motor Status | Current Position | Value of V0 |
In the example above, the motor status is 8 (ready), the motor position is 5000, and the value of V0 is 16.
All values are written and read in little endian, byte-wise manner. Therefore, the value of "0F 00 00 00" is 16 and not 251658240 as it would be read in a big endian manner.
1.1.1 Communication Error Code
Bit (0=LSB) | Status Flag |
---|---|
0 | Communication Error – motor controller is responding with communication error codes |
1 | Communication Error – communication with motor controller has timed out (was previously established) |
2 | Communication Error – communication with motor controller was never established |
3-7 | Reserved |
8 | EtherNet/IP module has defaults loaded and needs motor configuration loaded |
9 | EtherNet/IP module has motor configuration loaded and will initialize on reset |
10-15 | Reserved |
The communication error code can also be read from:
Service | 0x0E |
Class | 0x64 |
Instance | 0x1 |
Attribute | 0x64 |
Motor Status Code:
Value | Error | Status |
---|---|---|
0 | NO | Motor Running |
1 | YES | Position Error overflow – motor disabled |
2 | YES | Over Speed – motor disabled |
4 | YES | Over Current – motor disable |
8 | NO | Motor is position |
16 | NO | Motor windings disabled |
128 | YES | Over Temperature Limit – motor disabled |
512 | NO | Emergency Stop Enabled – motor disabled |
Write Command (O →T)
Output Assembly Object - Instance 0x66
The read status command can be sent by using the following parameters:
Service | 0x10 |
---|---|
Class | 0x04 |
Attribute | 0x03 |
Instance | 0x66 |
Data Length | 22 bytes |
Data description:
Bytes | Description |
---|---|
0-1 | Communication to motor controller run/idle flag. This should always be set to 1 |
2-5 | Position Word - P0 (32 bit) |
6-9 | Speed Word - S0 (32 bit) |
10-13 | Acceleration Word - A0 (32 bit) |
14-17 | Control Word - R0 (32 bit) |
18-21 | V0 variable (32 bit) |
Example:
The following format is used for the write command:
01 00 | 00 CA 9A 3B | FF 00 00 00 | FF 00 00 00 | 01 00 00 00 | 01 00 00 00 |
---|---|---|---|---|---|
Comm Flag | Target Position | Target Speed | Target Acceleration | Control Word | V0 |
In the above example, we are commanding the motor to go to position 1000000000 (infinite move) at a speed of 255 and acceleration of 255. Setting the control word to 1 to start the move, and setting V0 to 1.
Configuration Object
Configuration Assembly Object - Instance 0x80
The Ethernet/IP communications interface does not implement the Configuration Assembly Object. However, some Ethernet/IP scanner (client) devices require a Configuration Assembly Object to be specified when configuring server devices. In this case Instance 0x80 should be used with a data length of 0 bytes.