开 篇
本文以Beckhoff公司PLC通过CANOpen协议控制路斯特ServerC plus驱动器驱动phase伺服电机系统为实验背景给出的。下文控制字为PLC扫描上来的驱动器(BOXx,其中x代表站号)的RxPDO1中的变量1(Var-0),状态字为PLC扫描上来的驱动器(BOXx)的TxPDO1中的变量1(Var-0)。控制字和状态字均为16absolute relative字节。详情请参照文档“EK1100+EL6751连路斯特ServerC plus 驱动路斯特400w电机”。
第一章 控制字
控制字为16字节,常用的仅为0~8字节。控制字的各字节定义如下:
设备控制命令将有控制字的下列组合所触发,其中4-6和8字节根据当前运行模式有关。
☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞
读上面表格总结控制字如下:
1 control word=6 (Quick Stop=1,Enable voltage=1,其它=0)
开始时电机驱动器的状态为Switch on disable,此时会切换到状态ready to switch on ,在这种状态下应该能进行模式切换了。
2 control word=F (Enable Operation=1,Quick Stop=1,Enable voltage=1,Switch on=1,其它=0)
此时会给上了使能。如果选择的是速度模式(Modes of operation=3)且速度不为0(target velocity≠0),则电动机应开始转动。
3 在给上使能且模式为Profile position mode(通过DriverManager在驱动器中设定)前提下,control word=1F (New setpoint=1,Enable Operation=1,Quick Stop=1,Enable voltage=1,Switch on=1,其它=0)
如果是位置模式(Modes of operation=1)且速度不为0(profile velocity≠0),则电动机开始相对转动。
4 在给上使能且模式为Profile position mode(通过DriverManager在驱动器中设定)前提下,control word=5F (abs/rel=1,New setpoint=1,Enable Operation=1,Quick Stop=1,Enable voltage=1,Switch on=1,其它=0)
如果是位置模式(Modes of operation=1)且速度不为0(profile velocity≠0),则电动机开始绝对转动。
⑤ 先control_word.7=0,后control_word.7=1,即Fault reset: 0→1
此时会完成复位错误。
☜☜☜☜☜☜☜☜☜☜☜☜☜☜☜☜☜☜☜☜☜☜☜☜☜☜☜☜☜☜☜☜☜☜☜☜☜☜☜
第二章 状态字
状态字的个字节定义如下:
Bit 4 :Voltage enable
电源已连接。
Bit 5:Quick Stop
这一字节为低电平时表示控制器正在执行“Quick-Stop”。当驱动器为“ready for operation”(即Operation Enable)时状态字的bit 0,bit 1和bit 2 被设定为1。其它字节代表驱动器的附加状态,例如正在执行“Quick-Stop”。当产生一个错误时,Fault字节被设定。
Bit 7:Warning
警告,例如温度限制等。当警告发生时,电动机状态不能进行切换。关于警告的更多信息,参考FAULT CODE。
Bit 8:
生产厂商指定,当前未被应用。
Bit 9:
当前未被应用。
Bit 10:Target reached
当SetPoint到达时,这一位会自动被置1。而SetPoint基于运行模式(Operation mode)。SetPoint改变将会影响这一字节。
对于stop命令,这一字节会保持原状态不变。
Bit 11:Internal Limit active
当内部限制到达的时候这一字节被设定。这一字节是基于OPERATION MODE的。
Bit 12和13:
这一字节基于OPERATION MODE。
这两个字节是对生产厂家特定生效的,在各种运行模式的章节给出了其注释说明。
☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞
由上述内容我们可以看出,我们只需要读状态字的某些特定位就能判断出电机当前的工作状态,例如:status_word.10=1或status_word.10=0,即可完成实现对电机当前是否已Target reached进行判断。
☜☜☜☜☜☜☜☜☜☜☜☜☜☜☜☜☜☜☜☜☜☜☜☜☜☜☜☜☜☜☜☜☜☜☜☜☜☜☜
第三章 编程实例
一、速度模式运行(完全状态字判断方式)
确认target_velocity是否为0,velocitystart表示速度模式的启动开关,velocityflag表示速度模式运行的标志。
IF velocitystart AND (NOT velocityflag) THEN
modes_of_operation:=3;
END_IF
//将运行模式设定为速度模式
IF modes_of_operation_display =3 AND velocitystart AND NOT velocityflag THEN
control_word:=0;
velocityflag:=TRUE;
END_IF
IF status_word=16#5670 OR status_word=16#5270 AND velocitystart THEN
control_word:=6;
END_IF
IF status_word=16#5631 OR status_word=16#5231 AND velocitystart THEN
control_word:=F;
END_IF
//以上部分实现控制字依此给定0,6,F,实现速度模式运行
IF status_word=16#5637 AND velocitystart THEN
velocitystart :=FALSE;
END_IF
二、绝对位置模式运行(状态字按位判断方式)
确认profile_velocity是否为0,absolutestart表示绝对位置模式的启动开关,后面对absolutestart的置false可避免重复发控制字0.
IF absolutestart THEN
modes_of_operation:=1;
END_IF
//将运行模式设定为位置模式
IF modes_of_operation_display =1 AND relativestart THEN
control_word:=0;
absolutestart :=FALSE;
END_IF
(* IF modes_of_operation_display =1 AND status_word=16#4670 THEN*)
IF modes_of_operation_display =1 AND status_word.6=1 AND status_word.0=0 AND status_word.1=0 AND status_word.2=0 AND status_word.3=0 THEN
(即:)
control_word:=6;
END_IF
(* IF modes_of_operation_display =1 AND status_word=16#4631 THEN*)
IF modes_of_operation_display =1 AND status_word.6=0 AND status_word.5=1 AND status_word.0=1 AND status_word.1=0 AND status_word.2=0 AND status_word.3=0 THEN
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论