本文来源于:施家邦 工控邦
3.功能块的接口变量如图所示
创建的【overflow_compensate】功能块的接口变量,如图5所示。
图5 功能块的接口变量
4.LXM28S多圈位置溢出功能块的ST程序编写
双击打开【overflow_compensate】的FB功能块编写程序,功能块的编程思路就是程序不仅记录正常运行的每次溢出,再利用一个掉电保存的persistent变量记录位置溢出的次数,在上电时判断断电后电机是否发生移动并导致了新的溢出,将两者的变化量加到一起得到总的溢出次数,并按总的溢出次数做对应补偿,然后给伺服轴加上使能后,判断轴处于停止位置后再使用MC_Setpostion功能块完成位置补偿。LXM28S多圈位置溢出功能块的ST程序和注释如图6所示。
图6 LXM28S多圈位置溢出功能块的ST程序和注释
溢出圈数的补偿值有一定的周期性,读者也可以把每圈的补偿计算出来,在轴配置参数和模数值不变的前提下,使用Case语句来补偿也是可以的。
功能块编写完成后要进行编译和纠错,然后在程序中调用即可。
5.功能块的管脚定义
▼ 功能块的输入管脚如表1所示。
表1 功能块的输入管脚
管脚名称 |
管脚变量 类型 |
说明 |
i_ifAxis |
DAL.IF_DeviceAccess |
28S的伺服轴 |
i_diDrivePosition |
DINT |
28S反馈给M262的位置 |
i_iP5_82 |
INT |
多圈编码器的圈数P5-82参数值 |
i_xP5_82_OK |
BOOL |
读取圈数有效 |
i_diGearIn |
UDINT |
设置成轴配置的GearIn参数 |
i_diGearOut |
UDINT |
设置成轴配置的GearOut参数 |
i_lrPositionResolution |
LREAL |
设置成轴配置的PositionResolution参数 |
i_LrModulo |
LREAL |
设置成模数值 |
i_xDirection |
BOOL |
此处必须设成true,读者必须确认工作方向是位置递增方向 |
i_xPowerEnable |
BOOL |
伺服使能输入信号,使能后自动完成位置补偿 |
i_xHomeDoneFlag |
BOOL |
使用P8-44键盘回原点,完成后将此标志位为真 |
▼ 功能块的输入输出管脚,如表2所示。
表2 功能块的输入输出管脚
管脚名称 |
管脚变量 类型 |
说明 |
IO_diLastPostion_Persist |
DINT |
用于记忆断电前的28S反馈位置,断电保持变量 |
IO_iLastP5_82_Persist |
INT |
用于记忆断电前的圈数,断电保持变量 |
IO_diOverflowTurn_Persist |
INT |
用于记忆溢出次数,断电保持变量 |
▼ 功能块的输出管脚,如表3所示。
表3 功能块的输出管脚
管脚名称 |
管脚变量 类型 |
说明 |
q_xSercosCommunicationState_OK: |
BOOL |
Sercos状态为4时为真,否则为假 |
q_diPowerOff_EnocoderCounter: |
UDINT |
断电时的编码器圈数 |
q_diPowerUp_EnocoderCounter: |
UDINT |
上电时的编码器圈数 |
q_xPowerEnabled: |
BOOL |
28伺服的使能参数 |
q_xRestored: |
BOOL |
位置补偿完成标志位 |
6.测试平台软件版本
1. LMCM262和28S的固件版本
在实验室中ESME软件采用的版本是2.01,28S的固件测试为版本2.78.3。
2. SoMove调试软件和DTM版本
使用SoMove软件2.8.4+V1.6.12版本的DTM文件进行了【overflow_compensate】的FB功能块的调试。
3. Lexiumstudio 调试软件版本
使用lexium studio V1.15.0,主要用于检查伺服驱动器和电机。
7.调试和参数设置
(1) TM262在线做初始值复位或做Reset Persistent Variables时,需要对所有采用功能块的轴重新寻原点,或者使用其它方式复位溢出圈数值等变量。
(2) 28S的位置、速度、同步运动时,注意速度给定值不要超过P1-55的最大速度值,笔者对此进行了极限实验,设置速度给定值超过了P1-55的最大速度值,实验结果是28S停机时会失控,断开伺服使能才能停止电机,同时,功能块存储的位置也会失效。
(3) 在张江研发实验室,我对不同固件版本也进行了相对实验,其中,固件版本2.78.3的28S,多圈编码器设置原点操作流程与之前的版本不同,需要将参数P8-44设3然后再设2,而之前的版本仅需把P8-44设2即可。
(4) 建议读者在程序中采用非周期读取参数功能块来读取P5-82的参数值,此参数虽然并不参与控制,但可以直观的看出是否错误的设置了P5-79=1,因为这个参数可以让多圈电机按单圈电机进行工作,读者在使用我创建的这个【overflow_compensate】的FB功能块时是不能设置P5-79=1的,否则会导致驱动器的位置不能保存,应予以重视。
往期回顾