Festo CMMT-ST
- lorenzing
- Offline
- New Member
-
Less
More
- Posts: 7
- Thank you received: 0
02 Nov 2025 10:06 #337701
by lorenzing
Replied by lorenzing on topic Festo CMMT-ST
Thank you so much, now looks good.
Can someone help me with "setp cia402.X.pos-scale 3600" value?
I've this type of motor with the same encoder: EMMB-ST-87-M-SM (X), EMMB-ST-87-M-SMB (Z1,Z2,Y1,Y2).
Z1, Z2 5mm/rev; X, Y1, Y2 180mm/rev.
Can someone help me with "setp cia402.X.pos-scale 3600" value?
I've this type of motor with the same encoder: EMMB-ST-87-M-SM (X), EMMB-ST-87-M-SMB (Z1,Z2,Y1,Y2).
Z1, Z2 5mm/rev; X, Y1, Y2 180mm/rev.
Please Log in or Create an account to join the conversation.
- lorenzing
- Offline
- New Member
-
Less
More
- Posts: 7
- Thank you received: 0
20 Nov 2025 14:36 #338799
by lorenzing
Replied by lorenzing on topic Festo CMMT-ST
Many problems have been solved by assigning numbers instead of the axis letter (e.g. X) in the .hal file probably generated errors as there were two motors for one axis.
# --- load components ---
loadrt [KINS]KINEMATICS
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS
# load EtherCAT xml then drivers
loadusr -W lcec_conf ethercat-conf.xml
loadrt lcec
loadrt cia402 count=5
# --- add functions to servo-thread ---
addf lcec.read-all servo-thread
# read from cia402 drivers (one per joint)
addf cia402.0.read-all servo-thread
addf cia402.1.read-all servo-thread
addf cia402.2.read-all servo-thread
addf cia402.3.read-all servo-thread
addf cia402.4.read-all servo-thread
# motion stack
addf motion-command-handler servo-thread
addf motion-controller servo-thread
# writes: cia402 then lcec
addf cia402.0.write-all servo-thread
addf cia402.1.write-all servo-thread
addf cia402.2.write-all servo-thread
addf cia402.3.write-all servo-thread
addf cia402.4.write-all servo-thread
addf lcec.write-all servo-thread
# estop
net estop-out iocontrol.0.user-enable-out => iocontrol.0.emc-enable-in
# =========================
# JOINT 0 (X) -> cia402.0 -> lcec.0.0
# =========================
#config
setp cia402.0.csp-mode 1
setp cia402.0.pos-scale -3600
#from servo(ethercat) to cia402
net 0-statusword lcec.0.0.srv-cia-statusword => cia402.0.statusword
net 0-opmode-display lcec.0.0.srv-opmode-display => cia402.0.opmode-display
net 0-drv-act-pos lcec.0.0.srv-actual-position => cia402.0.drv-actual-position
net 0-drv-act-velo lcec.0.0.srv-actual-velocity => cia402.0.drv-actual-velocity
#from cia402 to servo(ethercat)
net 0-controlword cia402.0.controlword => lcec.0.0.srv-cia-controlword
net 0-modes-of-operation cia402.0.opmode => lcec.0.0.srv-opmode
net 0-drv-target-pos cia402.0.drv-target-position => lcec.0.0.srv-target-position
#from motion to cia
net 0-enable <= joint.0.amp-enable-out => cia402.0.enable
net 0-amp-fault => joint.0.amp-fault-in <= cia402.0.drv-fault
net 0-pos-cmd <= joint.0.motor-pos-cmd => cia402.0.pos-cmd
net 0-pos-fb => joint.0.motor-pos-fb <= cia402.0.pos-fb
# =========================
# JOINT 1 (Y1) -> cia402.1 -> lcec.0.2
# =========================
#config
setp cia402.1.csp-mode 1
setp cia402.1.pos-scale -3600
#from servo(ethercat) to cia402
net 1-statusword lcec.0.2.srv-cia-statusword => cia402.1.statusword
net 1-opmode-display lcec.0.2.srv-opmode-display => cia402.1.opmode-display
net 1-drv-act-pos lcec.0.2.srv-actual-position => cia402.1.drv-actual-position
net 1-drv-act-velo lcec.0.2.srv-actual-velocity => cia402.1.drv-actual-velocity
#from cia402 to servo(ethercat)
net 1-controlword cia402.1.controlword => lcec.0.2.srv-cia-controlword
net 1-modes-of-operation cia402.1.opmode => lcec.0.2.srv-opmode
net 1-drv-target-pos cia402.1.drv-target-position => lcec.0.2.srv-target-position
#from motion to cia
net 1-enable <= joint.1.amp-enable-out => cia402.1.enable
net 1-amp-fault => joint.1.amp-fault-in <= cia402.1.drv-fault
net 1-pos-cmd <= joint.1.motor-pos-cmd => cia402.1.pos-cmd
net 1-pos-fb => joint.1.motor-pos-fb <= cia402.1.pos-fb
# =========================
# JOINT 2 (Y2) -> cia402.2 -> lcec.0.1
# =========================
#config
setp cia402.2.csp-mode 1
setp cia402.2.pos-scale 3600
#from servo(ethercat) to cia402
net 2-statusword lcec.0.1.srv-cia-statusword => cia402.2.statusword
net 2-opmode-display lcec.0.1.srv-opmode-display => cia402.2.opmode-display
net 2-drv-act-pos lcec.0.1.srv-actual-position => cia402.2.drv-actual-position
net 2-drv-act-velo lcec.0.1.srv-actual-velocity => cia402.2.drv-actual-velocity
#from cia402 to servo(ethercat)
net 2-controlword cia402.2.controlword => lcec.0.1.srv-cia-controlword
net 2-modes-of-operation cia402.2.opmode => lcec.0.1.srv-opmode
net 2-drv-target-pos cia402.2.drv-target-position => lcec.0.1.srv-target-position
#from motion to cia
net 2-enable <= joint.2.amp-enable-out => cia402.2.enable
net 2-amp-fault => joint.2.amp-fault-in <= cia402.2.drv-fault
net 2-pos-cmd <= joint.2.motor-pos-cmd => cia402.2.pos-cmd
net 2-pos-fb => joint.2.motor-pos-fb <= cia402.2.pos-fb
# =========================
# JOINT 3 (Z1) -> cia402.3 -> lcec.0.4
# =========================
#config
setp cia402.3.csp-mode 1
setp cia402.3.pos-scale 3600
#from servo(ethercat) to cia402
net 3-statusword lcec.0.4.srv-cia-statusword => cia402.3.statusword
net 3-opmode-display lcec.0.4.srv-opmode-display => cia402.3.opmode-display
net 3-drv-act-pos lcec.0.4.srv-actual-position => cia402.3.drv-actual-position
net 3-drv-act-velo lcec.0.4.srv-actual-velocity => cia402.3.drv-actual-velocity
#from cia402 to servo(ethercat)
net 3-controlword cia402.3.controlword => lcec.0.4.srv-cia-controlword
net 3-modes-of-operation cia402.3.opmode => lcec.0.4.srv-opmode
net 3-drv-target-pos cia402.3.drv-target-position => lcec.0.4.srv-target-position
#from motion to cia
net 3-enable <= joint.3.amp-enable-out => cia402.3.enable
net 3-amp-fault => joint.3.amp-fault-in <= cia402.3.drv-fault
net 3-pos-cmd <= joint.3.motor-pos-cmd => cia402.3.pos-cmd
net 3-pos-fb => joint.3.motor-pos-fb <= cia402.3.pos-fb
# =========================
# JOINT 4 (Z2) -> cia402.4 -> lcec.0.3
# =========================
#config
setp cia402.4.csp-mode 1
setp cia402.4.pos-scale 3600
#from servo(ethercat) to cia402
net 4-statusword lcec.0.3.srv-cia-statusword => cia402.4.statusword
net 4-opmode-display lcec.0.3.srv-opmode-display => cia402.4.opmode-display
net 4-drv-act-pos lcec.0.3.srv-actual-position => cia402.4.drv-actual-position
net 4-drv-act-velo lcec.0.3.srv-actual-velocity => cia402.4.drv-actual-velocity
#from cia402 to servo(ethercat)
net 4-controlword cia402.4.controlword => lcec.0.3.srv-cia-controlword
net 4-modes-of-operation cia402.4.opmode => lcec.0.3.srv-opmode
net 4-drv-target-pos cia402.4.drv-target-position => lcec.0.3.srv-target-position
#from motion to cia
net 4-enable <= joint.4.amp-enable-out => cia402.4.enable
net 4-amp-fault => joint.4.amp-fault-in <= cia402.4.drv-fault
net 4-pos-cmd <= joint.4.motor-pos-cmd => cia402.4.pos-cmd
net 4-pos-fb => joint.4.motor-pos-fb <= cia402.4.pos-fb
# End of HALPlease Log in or Create an account to join the conversation.
Time to create page: 0.048 seconds