普通PLC实现ECam电子凸轮运动控制
TM241等普通PLC实现电子凸轮功能/CNC
第三方库使用指南
1,本方案的特点2
2,软件,硬件要求2
3,软件组态3
4,驱动配置8
5,软件参数配置9
6,软件功能块FB编程(完全兼容Softmotion FB功能块)16
7,Zx FB功能块与Softmotion FB功能块的等价关系16
8,CNC功能块简介21
9,电子凸轮同步功能22
10,超级主轴24
11,使用zAx.Mech.lrFollowGain(跟随增益)消除/降低跟随误差(Following Error)25
12,掉电保存位置功能块26
13,附录:如何添加库文件27
14,常见问题及对策:30
1,本方案的特点
本方案使用普通的PLC,通过软件算法,实现伺服运动轨迹规划,通过Can总线控制伺服进行同步运动,使得伺服驱动器减少了运动轨迹计算,从而提高伺服的稳定性(以LXM28为例,通过上位机发送同步位置,不会一些莫名其妙的问题。如,定位信号完成done,该来不来,来了又不消失,或者,出现严重滞后等。这些都是因为驱动器在运算轨迹路径的过程中,出现抖动,或者响应慢。另外,done信号还需要通过Can传输给PLC,这也会导致信号延迟太大。而采用同步控制,路径规划计算放在PLC内部,降低了驱动器的负荷,有效改善了类似情况的发生)。同时,使用同步控制伺服,可以提高伺服的使用效果。即使是控制伺服走PTP,也可以非常方便的实时修改ACC,DEC等参数,可以中途修改路径终点,可以非常方便的实现S曲线,减少伺服对机械的冲击,降低设备运行噪音,提高设备性能,使用寿命,提升设备档次。
基于以上特点,市面上,凡是有同步运动功能的硬件,价格都比较昂贵。而该方案使用普通PLC的硬件,价格优势十分明显。LMC058价格几乎是TM241CEC24x3倍!而CPU性能几乎一样。这对价格敏感的客户,很尴尬。一方面,设备要求不高,没有必要使用高速高性能的运动控制器,另一方面,入门级的运动控制器,价格又不低。国产的运动控制器,价格也不便宜。而且,品牌影响力不高,尤其是出口机器。
另外,可以有效扩展运动控制器的同步轴数,比如LMC058的Canopen接口,TM262Lx5,可以增加TMSCO1模块,扩展Can接口,扩展非SERCOSIII同步轴。
2,软件,硬件要求
编程平台:Somachine V43,ESME V11
添加ZxMcLib电子凸轮库(或ZxRobotLib CNC库)文件(详细见文章后面附录)
TM241,TM251,TM258,LMC058,M262+TMSCO1等,具有CanOpen接口或PTO接口
具有Can接口的伺服,如LXM32A,LXM28A,并且支持IP(插补)或CSP(循环同步)模式。要求不高的场合,可以使用脉冲接口伺服,如LXM23D,LXM26
完全兼容Softmotion功能块,Zx-FB的状态位,故障信息,Help,完全与对应的MC_FB保持一致。原来的编程知识是重要的知识积累,得到很好的保持
性能表现(以全部做电子凸轮同步为准):
以TM241CEC24T为例
4轴凸轮同步,同步时间在2-4ms,若程序量较大,可以放大到6ms。
8轴凸轮同步,同步时间在4-6ms,若程序量较大,可以放大到8ms。
以LMC058为例
2个Can总线接口,都可以实现凸轮同步控制,理论上,同步轴数可以翻倍,当然还受限于CPU计算能力,会牺牲部分同步时间性能
以TM262+TMSCO1为例
由于CPU性能比TM241提高4-7倍,理论上,可以驱动更多的同步轴(还要综合考虑Can总线负荷)
需要编码器做主轴时:增加高速计数模块 TM3XHSC202
各个PLC平台综合比较
从CPU性能,是否自带Can总线接口,是否自带HSC编码器接口,是否自带PTO接口(PTO可带脉冲凸轮伺服,或接伺服,或接步进),自带IO数量等综合因素来看,TM241CEC24x是性价比最高的硬件平台
有没有同步轴数限制?
以TM241CECx为例,其Can接口最大从轴数量为63轴,如果启用同步功能,最大同步时间可以设置很大,但是同步性能会很差。故,一般设置10ms以内的同步时间周期为好。受此限制,Can总线同步轴数最大约10轴左右(PTO可以额外控制脉冲凸轮同步最大4个轴)。如果对同步性能要求不高,则可以驱动更多的同步轴。
PTO同步轴特点
使用PTO做凸轮控制,可以接任何普通的具有脉冲接口的伺服,或者步进,成本低廉,对性能要求不高,又需要做同步运动的机器,有很好的契合度。比如:枕式包装机,口罩机。针对这种机器,甚至可以选择TM241C40X等没有Can接口的PLC,直接用PTO控制4轴以内的同步驱动,可以进一步降低成本。另一方面,TM241的PTO脉冲频率上限为100KHz,在规划曲线时,要充分考虑,不要超过此限制。伺服设置上,可以通过增加电子齿轮比来提高脉冲频率对应的伺服转速,可以有效避免此缺陷。
3,软件组态
确定总线任务周期:单位:S(一定要匹配下面(小节3-3)SDO中的设置)否则:出现电机顿挫现象,而且给定参数-实际参数不一致。如:给定速度100,实际速度可能或者高一些,或者低一些
配置Can总线
配置同步总线
添加LXM28A驱动器普通的EDS文件,
推荐版本:SELXM28_017528E.eds
配置驱动器
1.添加SDO(16#1006/16#60C2一定要匹配gcrCycletime)否则:出现电机顿挫现象
2.配置R-PDO
3.配置S-PDO
4,驱动配置
建立轴参数结构体:zAx
建立主轴编码器
添加一个HSC,修改名称“MasterEncoder”
5,软件参数配置
编码器配置(注意:一定要将ZxEncToAxis,ZxDrive,eCam放在程序的前面,保证上电第一时间能够初始化,否则程序会Crash!!!)
跳出对话框
CanOpen总线伺服驱动配置(注意:一定要将ZxEncToAxis,ZxDrive,eCam放在程序的前面,保证上电第一时间能够初始化,否则程序会Crash!!!)
跳出对话框
相当于LMC058里面的下列参数
PTO脉冲伺服驱动配置
升级版本的ZxDrive_PTO功能块,增加了对PTO脉冲频率是否超过限制的判断:
如果使用CFC编程,注意指令执行的先后顺序,确保ADR(PTO_X)得到最先执行!否则程序会Crash,并跳出弹窗,提示“xxx无源代码。。。”
第一个式子,尽量降低PLC脉冲输出频率。
第二个式子,尽量提高P1-44/P1-45
简单核算脉冲是否合适公式:
如果伺服噪音比较大,可通过设置适当的脉冲滤波来进行平滑,降低噪音。
以LXM26/LXM28为例,设置以下参数
6,软件功能块FB编程(完全兼容Softmotion FB功能块)
建立Motion程序
建立主轴编码器对象(详细见4-1)
建立轴对象实例(结合3-1,4-2)并在程序中调用
相当于CanMotion下面的马达对象
程序调用
7,Zx FB功能块与Softmotion FB功能块的等价关系
使能ZxPower
轴寻原点ZxHoming
轴复位ZxReset
轴设定位置ZxSetPostion
轴停止ZxStop
轴走速度模式ZxMoveVelocity
轴走相对定位ZxMoveRelative
轴走绝对定位ZxMoveAbsolute
轴走二次定位ZxMoveAdditive
轴暂停ZxHalt
轴点动ZxJog
轴寸动ZxInch
8,CNC功能块简介
通过读取Circle.txt文件,实现圆轨迹CNC功能
SMC_ReadNCFile1:ZxRobotLib.SM3_CNC.SMC_ReadNCFile := (sFileName:= 'circle.txt');
9,电子凸轮同步功能
建立凸轮曲线:建议使用LMC058的项目中的Cam编辑器,辅助设计凸轮曲线
定义电子凸轮对象及相关变量(注意:一定要将ZxEncToAxis,ZxDrive,eCam放在程序的前面,保证上电第一时间能够初始化,否则程序会Crash!!!)
注意:如果遇到编译出现“未知数据类型”错误,在数据类型前面加前缀:ZxMcLib。
其他如:
调用ZxCamTableSelect,ZxCamIn使用凸轮曲线
脱开凸轮曲线ZxCamOut
电子齿轮编程
10,超级主轴
使用2个主轴,来控制一个从轴。可以用ZxSuperAxis功能块来实现此应用。此时会生成一个Axis,此轴受到2个主轴的控制,Axis再作为其他轴的主轴。
11,使用zAx.Mech.lrFollowGain(跟随增益)消除/降低跟随误差(Following Error)
轴的实际位置与给定位置的差值,就是跟随误差
Following Error=fActPosition-fSetPosition。产生的原因有以下几个:
1,信号传输的滞后,总线发送给定位置到伺服,有时间滞后t1
2,伺服执行动作需要时间,有时间滞后t2
3,伺服把当前位置传输给控制器,有时间滞后t3
二者关系如下图,通常情况下,fActPosition总是小于fSetPosition
如何消除/降低这个滞后?可以使用zAx.Mech.lrFollowGain(跟随增益)
当把lrFollowGain=1.65,速度=200rpm时,FollowingError=-0.32°
当把lrFollowGain=1.65,速度=3000rpm时,FollowingError=-3.56°
12,掉电保存位置功能块
使用说明
1,上电后,ZxPower功能块的输出作为使能信号,给ZxKeepAxPosition
2,掉电后,伺服电机旋转总距离不要超过±1/4编码器最大范围(多圈编码器为4096圈:<±1024圈)
ZxRestoreAxPos = TRUE --> 恢复位置正常
ZxRestoreAxPos = FALSE --> 恢复位置错误
具体错误信息如下
iqsResult:
'BadNVRam'RAM存储器损坏
'OutOfWindow'位置超出允许范围
'BusNG'总线故障
'CheckSumErr'校验错误
'RestoreAxisPosReadError'读取轴编码器位置错误
13,附录:如何添加库文件
找到Devices中的Library Manager,点击Library repository
如下依次操作
关闭当前窗口,返回到Library Manager界面,选择Add library
选中相应的Company目录,比如ZxMotionControl,显示该目录下所有的库文件
选中相应的库文件,点击OK,返回到Library Manager界面,即可看到加载好的库文件。现在,就可以正常使用该库文件了。
该库文件为授权使用,未经授权,可以运行2小时。2小时后,重启可以继续运行2小时。
若需要CNC功能,需要添加另外的功能库Zx_Robot_MotionControl_Vx1.9.3.xxxxx.compiled-library
14,常见问题及对策:
注意:
A:一定要将ZxEncToAxis,ZxDrive,eCam曲线数据等,放在程序的前面,保证上电第一时间能够初始化
B:先定义zAx结构体,使用zAx结构体之前,一定要结合对应的ZxDrive使用,具体见5-2
C:如果使用CFC编程,注意指令执行的先后顺序,确保ADR(PTO_X)得到最先执行!
否则程序会Crash!!!弹出对话框“没有有用的源代码”
注意:
如果遇到编译出现“未知数据类型”错误,在数据类型前面加前缀:ZxMcLib。如:
总线设备Optional Device选项对总线的影响
选中:上电时,该设备掉线,不影响其他Can设备的正常工作
不选中:上电时,该设备掉线,其他Can设备会受到影响,比如伺服,无法使能
什么样的伺服驱动器可以实现Cam同步功能:
1.支持IP模式,即:Interpolation Positon Mode
2.支持CSP模式,即:Cyclic Synchronous Position Mode
IP与CSP模式的区别
相同点:从使用角度来说,二者没有本质区别。都可以实现Cam凸轮同步功能
不同点:R_PDO配置:
IP模式映射16#60C1_01
CSP模式映射16#607A_00
PDO映射区注意事项,起始地址使用(RPDO:16#1400,TPDO:16#1800)
在使用LXM23A的过程中,遇到报警AL113(同步时间错误),按下图处理
如何实现“凸轮开关”
该FC比“凸轮顶杆”(ZxDigitalCamSwitch)简单易用
例子:
切换曲线时,ZxCamIn.StartMode尽量使用absolute,可以有效降低切换时的过冲现象。
使用ZxGearIn时,如果该轴一直朝一个方向运行,最好改成“线性轴”,即:uiMoveType=1,否则容易出现跳变,LXM28报警AL520“位置偏差过大”
更改Cam曲线的最后一点的dY值,比如
XCamPoint[0].dX:=0;
XCamPoint[0].dY:=0;
XCamPoint[1].dX:=360;
XCamPoint[1].dY:=360;
该凸轮曲线的最后一点为XCamPoint[1].dY:=360,根据工艺需要修改为270,为了避免电机突跳,应该使用ZxCamIn.EndOfProfile来触发ZxCamTableSelect,同时用ZxCamTableSelect.Done触发ZxCamIn。
Schneider Electric OEM-Packaging Solution ADE纵永刚
提交