Introduction
This section explains how to use the CM1-T Cool Muscle motor with EtherNet/IP. It is assumed there is a basic knowledge of EtherNet/IP and PLC programming. The implementation makes use of the different Direct Control in the motor. It does not use CML logic and bank programming. However, setup (K) and controller gain (H) parameters are used for things like motor resolution, s-curve, software limits, etc. These are all accessible to be setup with Control Room or over explicit messages.
Device Profile
The CM1-T uses a generic device profile. This is to allow it to be flexible and operate in a number of operation modes.
Direct Control Operation
This mode enables the PLC to directly control the motor. See Direct Control on how to use the I/O messages to control the motor. Add on instructions are supplied in the downloads section.
CML Operation
This mode lets to motor control itself through CML programming. The PLC reads and writes to registers to monitor and make changes how the motor operates.
I/O Messages
There are two distinct I/O Assemblies based on the operation mode required.
Direct Control Operation
|
I/O |
Assembly Instance |
Size |
|---|---|---|
|
Input |
100 |
36 |
|
Output |
112 |
28 |
|
Configuration |
1 |
0 |
T2O (Input) Message
-
Instance = 100
-
Size = 36 bytes
|
Byte |
Name |
Data Type |
|---|---|---|
|
0-3 |
us50Counter |
DINT |
|
4-7 |
ActualPosition |
DINT |
|
8-11 |
MotionTarget |
DINT |
|
12-15 |
ActualSpeed |
DINT |
|
16-17 |
MotorStatus |
INT |
|
18-19 |
PercentActualCurrent |
INT |
|
20-21 |
PercentOverloadTorque |
INT |
|
22-23 |
AnalogIN |
INT |
|
24-25 |
DCVoltage |
INT |
|
26 |
DigitalIO |
SINT |
|
27 |
Temperature |
SINT |
|
28 |
ModeOfOperationDisplay |
SINT |
|
29 |
ErrorCode(1) |
SINT |
|
30-31 |
ReadAddress1 |
INT |
|
32-35 |
ReadValue1 |
DINT |
(1) - ErrorCode is currently reserved and returns 0. Use MotorStatus to get motor error information
O2T (Output) Message
-
Instance = 112
-
Size = 28
|
Byte |
Name |
Data Type |
|---|---|---|
|
0-3 |
TargetPosition |
DINT |
|
4-7 |
TargetSpeed |
DINT |
|
8-9 |
TargetTorque |
INT |
|
10-11 |
TargetAccelertion |
INT |
|
12-13 |
TargetDeceleration |
INT |
|
14-15 |
Controlword |
INT |
|
16 |
ModeOfOperation |
SINT |
|
17 |
DigitalOUT |
SINT |
|
18-19 |
WriteAddress1 |
INT |
|
20-23 |
WriteValue1 |
DINT |
|
24-25 |
ReadAddress1 |
INT |
|
26-27 |
PAD |
INT |
CML Operation
|
I/O |
Assembly Instance |
Size |
|---|---|---|
|
Input |
101 |
60 |
|
Output |
113 |
44 |
|
Configuration |
1 |
0 |
T2O (Input) Message
-
Instance = 101
-
Size = 60 bytes
|
Byte |
Name |
Data Type |
|---|---|---|
|
0-3 |
us50Counter |
DINT |
|
4-7 |
ActualPosition |
DINT |
|
8-11 |
MotionTarget |
DINT |
|
12-15 |
ActualSpeed |
DINT |
|
16-17 |
MotorStatus |
INT |
|
18-19 |
PercentActualCurrent |
INT |
|
20-21 |
PercentOverloadTorque |
INT |
|
22-23 |
AnalogIN |
INT |
|
24-25 |
DCVoltage |
INT |
|
26 |
DigitalIO |
SINT |
|
27 |
Temperature |
SINT |
|
28 |
ModeOfOperationDisplay |
SINT |
|
29 |
ErrorCode(1) |
SINT |
|
30-31 |
ReadAddress1 |
INT |
|
32-35 |
ReadValue1 |
DINT |
|
36-37 |
ReadAddress2 |
INT |
|
38-39 |
ReadAddress3 |
INT |
|
40-41 |
ReadAddress4 |
INT |
|
42-43 |
ReadAddress5 |
INT |
|
44-47 |
ReadValue2 |
DINT |
|
48-51 |
RadValue3 |
DINT |
|
52-55 |
ReadValue4 |
DINT |
|
56-59 |
ReadValue5 |
DINT |
(1) - ErrorCode is currently reserved and returns 0. Use MotorStatus to get motor error information
O2T (Output) Message
-
Instance = 113
-
Size = 44
|
Byte |
Name |
Data Type |
|---|---|---|
|
0-3 |
WriteValue1 |
DINT |
|
4-7 |
WriteValue2 |
DINT |
|
8-11 |
WriteValue3 |
DINT |
|
12-15 |
WriteValue4 |
DINT |
|
16-19 |
WriteValue5 |
DINT |
|
20-21 |
WriteAddress1 |
INT |
|
22-23 |
WriteAddress2 |
INT |
|
24-25 |
WriteAddress3 |
INT |
|
26-27 |
WriteAddress4 |
INT |
|
28-29 |
WriteAddress5 |
INT |
|
30-31 |
ReadAddress1 |
INT |
|
32-33 |
ReadAddress2 |
INT |
|
34-35 |
ReadAddress3 |
INT |
|
36-37 |
ReadAddress4 |
INT |
|
38-39 |
ReadAddress5 |
INT |
|
40 |
DigitalOUT |
SINT |
|
41 |
PAD |
SINT |
|
42-43 |
PAD |
INT |
Read/Write Motor Registers
In the I/O messages there is the ability to read and write to internal motor registers. These registers could be configured as flags, input counters, or other custom operations.
-
Direct Operation has
-
1 x read register
-
1 x write register
-
-
CML Operation has
-
5 x read registers
-
5 x write registers
-
The register addresses can be changed after a cycle to read/write to more than 1 register.
Register Address
The register address is coded into a 2 byte (UINT16) format as follows
|
B1 |
B0 |
|---|---|
|
Register Type (P, S, A, V, etc) |
Register Number (0 to max) |
Register Address = Register Type Register Number
The following list maps the register type and the applicable number range
|
B1 Value (hex) |
Register |
Register No. Range |
Example |
||
|---|---|---|---|---|---|
|
Register |
Address |
||||
|
Hex |
Decimal |
||||
|
16#00 |
N/A |
N/A |
- |
- |
- |
|
16#01 |
reserved |
reserved |
- |
- |
- |
|
16#02 |
reserved |
reserved |
- |
- |
- |
|
16#03 |
P |
0-25 |
P0 |
16#0300 |
768 |
|
16#04 |
S |
0-15 |
S1 |
16#0x0401 |
1025 |
|
16#05 |
A |
0-8 |
A5 |
16#0x0505 |
1285 |
|
16#06 |
T |
0-8 |
T2 |
16#0x0602 |
1538 |
|
16#07 |
M |
0-8 |
M0 |
16#0x0700 |
1792 |
|
16#08 |
R |
0-25 |
R16 |
16#0x0810 |
2064 |
|
16#09 |
N |
0-25 |
N15 |
16#0x090F |
2319 |
|
16#0A |
V |
0-15 |
V10 |
16#0x0A0A |
2570 |
For a complete list go to EtherNet/IP#Complete Register Address Map
Explicit Messages
K Parameters - Setup Parameters
-
Get Attribute Single - Service Code 0x0E
-
Set Attribute Single - Service Code 0x10
|
Class |
0x64 |
|---|---|
|
Instance |
1 |
|
Attribute |
The attribute represents the K number. example: K37 → 37d → 0x25 |
H Parameters - Gain Parameters
-
Get Attribute Single - Service Code 0x0E
-
Set Attribute Single - Service Code 0x10
|
Class |
0x65 |
|---|---|
|
Instance |
1 |
|
Attribute |
H0 → 0x01
|
Direct Control Operation
Control Modes
This section focuses on controlling the motor with the provided Add on Instructions (AOIs). These will satisfy most applications, however, if required, the motor can be controlled by setting the CM1-T objects directly (see I/O Messages). Understanding the Direct Control will be important in this case.
There are currently 3 main control modes available while running the motor over EtherNet/IP.
-
Position - this mode sets the motor to run to a target position. The position could be absolute or relative
-
Speed - this mode allows the motors speed to be controlled for continuous motion
-
Torque - this mode allows the motors torque to be controlled.
The control modes are mapped to the ModeOfOperation value from the CM1T_ControlMode AOI:
|
Control Mode |
CM1T_ControlMode AOI value |
O2T ModeOfOperation Value |
|---|---|---|
|
Position |
0 |
3 |
|
Speed |
1 |
3 |
|
Torque |
2 |
11 |
In addition:
-
Homing is an additional mode that can be executed at any point. Homing should start from a known safe state to avoid unexpected changes in motion
-
All modes can be switched to during motion. It is recommended the state is switched during a known safe state.
-
Torque can be limited in all modes. Running in torque mode will disable errors such as position error which can still occur in other modes if the set torque is too low. The torque is set in 0.1% of rated torque. The range is [0,1100]. By default the torque is set to 1100 when using the AOIs supplied.
All modes use common objects such as position, speed, torque, acceleration and controlword. Switching parameters in another mode will change the value in the existing mode.
Setting the Start bit to 0 will NOT halt motion. The HALT bit must be used to interrupt motion.
Position Mode
Absolute position and relative position both use the position mode. The key difference in operation between the two is the usage of the start bit in the CM1T_Controlword. An absolute move will accept a new position immediately if the start bit is 1.
Start Bit Usage
|
BIT |
Name |
Value |
Description |
|---|---|---|---|
|
B0 |
Start/New Set Point |
0 |
|
|
0 → 1 |
|
||
|
1 |
Execute any changes in any of the profile registers immediately. |
Motion Parameters
Position moves will accept the following motion parameters. These will be processed immediately if the start bit is high.
|
Name |
Unit |
Data Type |
Access |
|---|---|---|---|
|
PositionTarget |
counts |
DINT |
AOI(2) or Axis tag |
|
SpeedTarget |
counts/s |
DINT |
AOI or Axis tag |
|
AccelerationTarget |
1000 counts/s2 |
INT |
AOI or Axis tag |
|
DecelerationTarget(1) |
1000 counts/s2 |
INT |
AOI or Axis tag |
|
TorqueTarget |
0.1% rated torque |
INT |
Axis Tag |
(1) If the deceleration is set to 0 the acceleration value will be used
(2) MoveAbsolute or MoveRelative AOI
Speed Mode
A speed move has no target position and will continue to run at the target speed. Setting a -ve speed value will reverse direction.
Start Bit Usage
|
BIT |
Name |
Value |
Description |
|---|---|---|---|
|
B0 |
Start/New Set Point |
0 |
|
|
0 → 1 |
|
||
|
1 |
Execute any changes in any of the profile registers immediately. |
Motion Parameters
Speed moves will accept the following motion parameters. These will be processed immediately if the start bit is high.
|
Name |
Unit |
Data Type |
Access |
|---|---|---|---|
|
SpeedTarget |
counts/s |
DINT |
AOI(2) or Axis tag |
|
AccelerationTarget |
1000 counts/s2 |
INT |
AOI or Axis tag |
|
DecelerationTarget(1) |
1000 counts/s2 |
INT |
AOI or Axis tag |
|
TorqueTarget |
0.1% rated torque (1) |
INT |
Axis Tag |
(1) If the deceleration is set to 0 the acceleration value will be used
(2) MoveSpeed AOI
Torque Mode
A torque move only uses a target torque and maximum speed. Acceleration of the motor should be limited by adjusting the target torque or speed.
Setting a -ve torque value will reverse direction.
Start Bit Usage
|
BIT |
Name |
Value |
Description |
|---|---|---|---|
|
B0 |
Start/New Set Point |
0 |
|
|
0 → 1 |
|
||
|
1 |
Execute any changes in any of the profile registers immediately. |
Motion Parameters
Torque moves will accept the following motion parameters. These will be processed immediately if the start bit is high.
|
Name |
Unit |
Data Type |
Access |
|---|---|---|---|
|
SpeedTarget |
counts/s |
DINT |
AOI(1) or Axis tag |
|
TorqueTarget |
0.1% rated torque Range: ± 1100 Where:
|
INT |
AOI or Axis Tag |
(1) MoveTorque AOI
General Resources
Examples and demos for a number of controllers can be found in Examples and Demos.
EDS File
The CM1-T EtherNet/IP eds file can be found on the Datasheets and Downloads page.
CM1-T Library
The CM1-T Library for use with Codesys, Schneider, Beckhoff, Wago and other IEC 61131-3 PLCs can be found on the Datasheets and Downloads page.
RSLogix Resources
RSLogix resource page.
Appendix
A - Support Files
B - Complete Register Address Map
K Registers
|
Register |
Address |
|
|---|---|---|
|
Hex |
Decimal |
|
|
K21 |
16#0115 |
277 |
|
K22 |
16#0116 |
278 |
|
K23 |
16#0117 |
279 |
|
K24 |
16#0118 |
280 |
|
K25 |
16#0119 |
281 |
|
K26 |
16#011A |
282 |
|
K27 |
16#011B |
283 |
|
K28 |
16#011C |
284 |
|
K29 |
16#011D |
285 |
|
K30 |
16#011E |
286 |
|
K31 |
16#011F |
287 |
|
K32 |
16#0120 |
288 |
|
K33 |
16#0121 |
289 |
|
K34 |
16#0122 |
290 |
|
K35 |
16#0123 |
291 |
|
K36 |
16#0124 |
292 |
|
K37 |
16#0125 |
293 |
|
K38 |
16#0126 |
294 |
|
K39 |
16#0127 |
295 |
|
K40 |
16#0128 |
296 |
|
K41 |
16#0129 |
297 |
|
K42 |
16#012A |
298 |
|
K43 |
16#012B |
299 |
|
K44 |
16#012C |
300 |
|
K45 |
16#012D |
301 |
|
K46 |
16#012E |
302 |
|
Register |
Address |
|
|---|---|---|
|
Hex |
Decimal |
|
|
K47 |
16#012F |
303 |
|
K48 |
16#0130 |
304 |
|
K49 |
16#0131 |
305 |
|
K50 |
16#0132 |
306 |
|
K51 |
16#0133 |
307 |
|
K52 |
16#0134 |
308 |
|
K53 |
16#0135 |
309 |
|
K54 |
16#0136 |
310 |
|
K55 |
16#0137 |
311 |
|
K56 |
16#0138 |
312 |
|
K57 |
16#0139 |
313 |
|
K58 |
16#013A |
314 |
|
K59 |
16#013B |
315 |
|
K60 |
16#013C |
316 |
|
K61 |
16#013D |
317 |
|
K62 |
16#013E |
318 |
|
K63 |
16#013F |
319 |
|
K64 |
16#0140 |
320 |
|
K65 |
16#0141 |
321 |
|
K66 |
16#0142 |
322 |
|
K67 |
16#0143 |
323 |
|
K68 |
16#0144 |
324 |
|
K69 |
16#0145 |
325 |
|
K70 |
16#0146 |
326 |
|
K71 |
16#0147 |
327 |
|
K72 |
16#0148 |
328 |
|
Register |
Address |
|
|---|---|---|
|
Hex |
Decimal |
|
|
K73 |
16#0149 |
329 |
|
K74 |
16#014A |
330 |
|
K75 |
16#014B |
331 |
|
K76 |
16#014C |
332 |
|
K77 |
16#014D |
333 |
|
K78 |
16#014E |
334 |
|
K79 |
16#014F |
335 |
|
K80 |
16#0150 |
336 |
|
K81 |
16#0151 |
337 |
|
K82 |
16#0152 |
338 |
|
K83 |
16#0153 |
339 |
|
K84 |
16#0154 |
340 |
|
K85 |
16#0155 |
341 |
|
K86 |
16#0156 |
342 |
|
K87 |
16#0157 |
343 |
|
K88 |
16#0158 |
344 |
|
K89 |
16#0159 |
345 |
|
K90 |
16#015A |
346 |
H Registers
|
Register |
Address |
|
|---|---|---|
|
Hex |
Decimal |
|
|
H0 |
16#0200 |
512 |
|
H1 |
16#0201 |
513 |
|
H2 |
16#0202 |
514 |
|
H3 |
16#0203 |
515 |
|
H4 |
16#0204 |
516 |
|
H5 |
16#0205 |
517 |
|
H6 |
16#0206 |
518 |
|
H7 |
16#0207 |
519 |
P Registers
|
Register |
Address |
|
|---|---|---|
|
Hex |
Decimal |
|
|
P0 |
16#0300 |
768 |
|
P1 |
16#0301 |
769 |
|
P2 |
16#0302 |
770 |
|
P3 |
16#0303 |
771 |
|
P4 |
16#0304 |
772 |
|
P5 |
16#0305 |
773 |
|
P6 |
16#0306 |
774 |
|
P7 |
16#0307 |
775 |
|
P8 |
16#0308 |
776 |
|
P9 |
16#0309 |
777 |
|
P10 |
16#030A |
778 |
|
P11 |
16#030B |
779 |
|
P12 |
16#030C |
780 |
|
P13 |
16#030D |
781 |
|
P14 |
16#030E |
782 |
|
P15 |
16#030F |
783 |
|
P16 |
16#0310 |
784 |
|
P17 |
16#0311 |
785 |
|
P18 |
16#0312 |
786 |
|
P19 |
16#0313 |
787 |
|
P20 |
16#0314 |
788 |
|
P21 |
16#0315 |
789 |
|
P22 |
16#0316 |
790 |
|
P23 |
16#0317 |
791 |
|
P24 |
16#0318 |
792 |
|
P25 |
16#0319 |
793 |
S Registers
|
Register |
Address |
|
|---|---|---|
|
Hex |
Decimal |
|
|
S0 |
16#0400 |
1024 |
|
S1 |
16#0401 |
1025 |
|
S2 |
16#0402 |
1026 |
|
S3 |
16#0403 |
1027 |
|
S4 |
16#0404 |
1028 |
|
S5 |
16#0405 |
1029 |
|
S6 |
16#0406 |
1030 |
|
S7 |
16#0407 |
1031 |
|
S8 |
16#0408 |
1032 |
|
S9 |
16#0409 |
1033 |
|
S10 |
16#040A |
1034 |
|
S11 |
16#040B |
1035 |
|
S12 |
16#040C |
1036 |
|
S13 |
16#040D |
1037 |
|
S14 |
16#040E |
1038 |
|
S15 |
16#040F |
1039 |
A Registers
|
Register |
Address |
|
|---|---|---|
|
Hex |
Decimal |
|
|
A0 |
16#0500 |
1280 |
|
A1 |
16#0501 |
1281 |
|
A2 |
16#0502 |
1282 |
|
A3 |
16#0503 |
1283 |
|
A4 |
16#0504 |
1284 |
|
A5 |
16#0505 |
1285 |
|
A6 |
16#0506 |
1286 |
|
A7 |
16#0507 |
1287 |
|
A8 |
16#0508 |
1288 |
T Registers
|
Register |
Address |
|
|---|---|---|
|
Hex |
Decimal |
|
|
T1 |
16#0601 |
1537 |
|
T2 |
16#0602 |
1538 |
|
T3 |
16#0603 |
1539 |
|
T4 |
16#0604 |
1540 |
|
T5 |
16#0605 |
1541 |
|
T6 |
16#0606 |
1542 |
|
T7 |
16#0607 |
1543 |
|
T8 |
16#0608 |
1544 |
M Registers
|
Register |
Address |
|
|---|---|---|
|
Hex |
Decimal |
|
|
M0 |
16#0700 |
1792 |
|
M1 |
16#0701 |
1793 |
|
M2 |
16#0702 |
1794 |
|
M3 |
16#0703 |
1795 |
|
M4 |
16#0704 |
1796 |
|
M5 |
16#0705 |
1797 |
|
M6 |
16#0706 |
1798 |
|
M7 |
16#0707 |
1799 |
R Registers
|
Register |
Address |
|
|---|---|---|
|
Hex |
Decimal |
|
|
R0 |
16#0800 |
2048 |
|
R1 |
16#0801 |
2049 |
|
R2 |
16#0802 |
2050 |
|
R3 |
16#0803 |
2051 |
|
R4 |
16#0804 |
2052 |
|
R5 |
16#0805 |
2053 |
|
R6 |
16#0806 |
2054 |
|
R7 |
16#0807 |
2055 |
|
R8 |
16#0808 |
2056 |
|
R9 |
16#0809 |
2057 |
|
R10 |
16#080A |
2058 |
|
R11 |
16#080B |
2059 |
|
R12 |
16#080C |
2060 |
|
R13 |
16#080D |
2061 |
|
R14 |
16#080E |
2062 |
|
R15 |
16#080F |
2063 |
|
R16 |
16#0810 |
2064 |
|
R17 |
16#0811 |
2065 |
|
R18 |
16#0812 |
2066 |
|
R19 |
16#0813 |
2067 |
|
R20 |
16#0814 |
2068 |
|
R21 |
16#0815 |
2069 |
|
R22 |
16#0816 |
2070 |
|
R23 |
16#0817 |
2071 |
|
R24 |
16#0818 |
2072 |
|
R25 |
16#0819 |
2073 |
N Registers
|
Register |
Address |
|
|---|---|---|
|
Hex |
Decimal |
|
|
N0 |
16#0900 |
2304 |
|
N1 |
16#0901 |
2305 |
|
N2 |
16#0902 |
2306 |
|
N3 |
16#0903 |
2307 |
|
N4 |
16#0904 |
2308 |
|
N5 |
16#0905 |
2309 |
|
N6 |
16#0906 |
2310 |
|
N7 |
16#0907 |
2311 |
|
N8 |
16#0908 |
2312 |
|
N9 |
16#0909 |
2313 |
|
N10 |
16#090A |
2314 |
|
N11 |
16#090B |
2315 |
|
N12 |
16#090C |
2316 |
|
N13 |
16#090D |
2317 |
|
N14 |
16#090E |
2318 |
|
N15 |
16#090F |
2319 |
|
N16 |
16#0910 |
2320 |
|
N17 |
16#0911 |
2321 |
|
N18 |
16#0912 |
2322 |
|
N19 |
16#0913 |
2323 |
|
N20 |
16#0914 |
2324 |
|
N21 |
16#0915 |
2325 |
|
N22 |
16#0916 |
2326 |
|
N23 |
16#0917 |
2327 |
|
N24 |
16#0918 |
2328 |
|
N25 |
16#0919 |
2329 |
V Registers
|
Register |
Address |
|
|---|---|---|
|
Hex |
Decimal |
|
|
V0 |
16#0A00 |
2560 |
|
V1 |
16#0A01 |
2561 |
|
V2 |
16#0A02 |
2562 |
|
V3 |
16#0A03 |
2563 |
|
V4 |
16#0A04 |
2564 |
|
V5 |
16#0A05 |
2565 |
|
V6 |
16#0A06 |
2566 |
|
V7 |
16#0A07 |
2567 |
|
V8 |
16#0A08 |
2568 |
|
V9 |
16#0A09 |
2569 |
|
V10 |
16#0A0A |
2570 |
|
V11 |
16#0A0B |
2571 |
|
V12 |
16#0A0C |
2572 |
|
V13 |
16#0A0D |
2573 |
|
V14 |
16#0A0E |
2574 |
|
V15 |
16#0A0F |
2575 |