硬件:AS228R + AS-FCOPM CANopen 主站卡 + ASDA-A2-M(CANopen 伺服驱动器,驱动线性电缸),ISPSoft 编程,DS402 标准 CANopen 运动协议。 电缸:丝杆电缸,行程 0~200mm;丝杆导程 5mm,电机一圈 = 移动 5mm。 站号:伺服 NodeID=1,波特率 1Mbps。
一、伺服驱动器预先参数(ASDA-A2-M)
P1-01 = 1 :控制来源:通讯(CANopen)
P3-00 = 1 :CANopen节点ID=1
P3-01 = 0403H:波特率1Mbps
P5-04:回零模式(示例:17H,负向寻找原点开关,离开原点开关后Z相锁定零点,根据机械调整)
P1-44:Profile速度,P1-45:加减速;
P2-69:增量编码器=0;绝对值编码器=1(需电池盒)
接线:原点传感器接到伺服 DI,硬限位 POT/NOT 接入伺服 DI
二、ISPSoft CANopen 网络配置
硬件 HWCONFIG:添加 AS-FCOPM CANopen 主站卡
COMMGR / CANopen Builder 导入 A2-M EDS 文件,添加从站 Node1
单位换算: 电机一圈 1280000 pulse,导程 5mm 1mm = 1280000 /5 = 256000 PUU
程序写位置直接填 PUU,或者用浮点数做 mm 换算。
三、使用指令说明
INITC:CANopen 网络初始化,指定总轴数量ASDON:伺服使能(Servo ON)ZRNM:启动回原点(DS402 Homing Mode)ZRNC:回原点完成确认DDRVA:CANopen 绝对定位指令(AS 系列 CANopen 专用,目标位置 PUU,速度 PUU/s)系统标志位: SM1681:CANopen 初始化完成;SM1682:网络异常; SM1600:轴 1 伺服就绪;SM1601:轴 1 运动中;SM1602:轴 1 定位完成;SM1603:轴 1 报警
变量分配
M0:CANopen 初始化触发
M1:伺服使能 ON
M2:回原点启动按钮
M3:绝对定位触发(移动到 100mm 位置)
M10:轴故障复位
D0:目标位置 PUU;D1:定位速度 PUU/s
D100:轴 1 当前位置 PUU(CANopen 读取)
四、ST 语言完整程序(ISPSoft ST,推荐;也可转梯形图)
//=====================
// 1. CANopen总线初始化
//=====================
IF M0 THEN
INITC(S1:=1); //S1=网络伺服轴数量=1
END_IF;
//=====================
// 2. 伺服使能 Servo ON
//=====================
IF SM1681 AND M1 THEN //初始化完成,使能触点ON
ASDON(S1:=1, S2:=1); //S1=站号1;S2=1=伺服ON
ELSE
ASDON(S1:=1, S2:=0); //OFF
END_IF;
//=====================
// 3. 回原点 ZRNM 回零指令(DS402 Homing)
//=====================
IF SM1600 AND M2 AND NOT SM1601 THEN //伺服就绪、回零触发、不在运动
ZRNM(S1:=1); //启动Node1轴回原点
END_IF;
IF ZRNC(S1:=1) THEN //ZRNC读取回原点状态
M100_HomeDone := TRUE; //回原点完成标志
ELSE
M100_HomeDone := FALSE;
END_IF;
//=====================
// 4. 绝对定位 DDRVA(CANopen绝对定位)
//=====================
//目标:100mm → D0 = 100 * 256000 = 25600000 PUU
D0 := 25600000;
D1 := 1280000; //速度:电机1r/s → 5mm/s
IF M100_HomeDone AND M3 AND NOT SM1601 THEN //回零完成 + 定位触发 + 轴静止
DDRVA(S1:=1, S2:=D0, S3:=D1); //S1站号;S2目标位置PUU;S3速度
END_IF;
//读取当前实时位置
CANRD(S1:=1, S2:=16#6064, S3:=D100); //读DS402对象6064h,实际位置
//故障复位
IF M10 THEN
CANWR(S1:=1, S2:=16#6040, S3:=16#0080); //控制字故障复位
END_IF;
五、梯形图逻辑流程简述
M0 触发 INITC → SM1681=ON
M1 接通 → ASDON 使能伺服,SM1600=ON(伺服就绪)
M2 回零按钮 → ZRNM 启动回原点;电缸按 P5-04 设定模式寻找原点,碰到原点开关后 Z 相锁定零点;ZRNC=ON 代表原点建立完成
M3 定位按钮(必须原点完成 M100_HomeDone=1 才允许执行)→ DDRVA 执行绝对定位,走到 D0 设定的 PUU 位置,SM1602=ON,定位完成。
六、安全联锁
//硬限位联锁,一旦触发,禁止运动
IF (I0.0=ON OR I0.1=ON) THEN
ASDON(S1:=1,S2:=0); //伺服OFF
M3:=FALSE;
M2:=FALSE;
END_IF;
//急停
IF I0.2=ON THEN
ASDON(S1:=1,S2:=0);
END_IF;
七、重要注意事项
增量编码器电缸:每次上电必须回原点;绝对值编码器(带电池盒)上电可直接读绝对位置,不需要每次回零。
单位换算:DDRVA 的目标是 PUU 脉冲单位,不是毫米;HMI 画面上显示 mm,程序做浮点数换算:
Real_Pos_mm := D100 / 256000.0;DS402 状态机:伺服会经过 Switch On Disabled → Ready → Switched On → Operation Enable,ASDON 指令内部处理状态字 6040h。
软限位:伺服驱动器 P5-12/P5-13 设置行程上下限;硬限位 DI 接入伺服驱动器,硬件切断运动,PLC 程序做双重保护。
总线终端电阻:CAN 总线两端(PLC 侧 + 最后一台伺服)接入 120Ω 终端电阻,防止通讯抖动。
八、动作时序逻辑
上电 → M0 初始化 CANopen → M1 伺服使能 → M2 回原点(电缸搜寻原点)→ 原点完成标志置 ON → M3 触发绝对定位,电缸移动至设定位置,定位完成。
九、可选扩展
增加 JOG 点动指令
JOGM增加扭矩限幅,做压装力控
多轴扩展:Node2、Node3,最多 8 轴 CANopen 总线。


