查看: 569|回复: 8
收起左侧

[应用问题] PLC断上电后伺服轴位置突变问题处理文档(607A数据溢出问题)

汐雅 2023-6-25 20:49:38 | 显示全部楼层 |阅读模式
邀请回答

马上注册,享受更多特权

您需要 登录 才可以下载或查看,没有帐号?立即注册   

x
问题现象描述:客户在给整机断电或者给PLC断电后,再重新上电,通过触摸屏监控轴的实时位置与断电前的位置数值不一样,即PLC断上电前后伺服轴位置发生了突变,例如断电前伺服轴位置是1000,断上电之后发现伺服轴位置变成了-300,而伺服轴实际的物理位置并没有发生改变,特别注意,该类问题基本都是建立在伺服轴断上电后的位置不是0的基础上的,因为断上电之后轴位置变成0一般都是因为伺服没有装编码器电池或者H02-01没有设成1绝对值式导致的,并不属于此类问题的范畴,这种PLC断上电后伺服轴位置发生突变的原因基本都是由于PLC端发给伺服的目标位置指令607A数据类型溢出导致的;

问题原理分析:
1.从触摸屏上监控到的轴实时反馈位置本质上就是PLC中的轴结构体其中的一个元素,假设PLC中轴的名称为Axis,则轴的实时反馈位置对应的轴结构体元素就是Axis.fActPosition,而PLC断上电之后观察到伺服轴位置发生突变其实也就代表着Axis.fActPosition的值在PLC断上电的过程中发生了改变;
2.轴实时反馈位置数值在PLC中的计算公式如下所示,主要分为两种情况:
第一种情况:PLC端轴设置:线性模式;绝对值伺服(H02-01=1):线性模式;(多数情况)
此时轴目标位置(Axis.fSetPosition)、反馈位置(Axis.fActPosition)计算方法如下所示:
Axis.fSetPosition=((Axis.iTurn*2^32+Axis.dwLastPosition)*Axis.iRatioTechUnitsNum)/Axis.dwRatioTechUnitsDenom;
Axis.fActPosition=((Axis.iTurn*2^32+Axis.dwActPosition)*Axis.iRatioTechUnitsNum)/Axis.dwRatioTechUnitsDenom;
其中变量含义:  Axis.iTurn         :溢出次数;
Axis.dwLastPosition:上一次命令位置(每个周期会同步607A目标位置值)
Axis.dwActPosition :当前周期6064位置反馈的值
Axis.iRatioTechUnitsNum     :比例缩放分子
Axis.dwRatioTechUnitsDenom :比例缩放分母
当目标位置607A(数据类型是DINT)大于2^32-1数据溢出时,PLC将以轴结构体Axis.iTurn记忆607A溢出次数(线性模式)。当0->2^32-1递增变化,每溢出一次Axis.iTurn变量加 1,而2^32-1->0递减变化,每溢出一次Axis.iTurn变量减1。
由于Axis.iTurn属于轴内存变量,掉电数据不保持。所以PLC重启、热复位、下载程序操作导致Axis.iTurn值变成默认值0。因而导致目标位置(Axis.fSetPosition)、反馈位置 (Axis.fActPosition)与断电前不一致。
溢出次数Axis.iTurn与目标位置607A的数值大小息息相关,因此可以通过减小607A的数值来限制数值溢出,目标位置607A在PLC端的计算公式如下(单位为脉冲单位):
通过目标位置607A的计算公式可以看出如果想减小脉冲数的值大小,在移动距离和工作台旋转一圈的工作行程不变的情况下,可以减小电机旋转一圈的指令脉冲数或者齿轮比分子,也可以增大齿轮比分母,但是要注意,在更改了参数后导致607A减小后,相当于伺服输出的脉冲数也变少了,因此需要在伺服端设置齿轮比分子来平衡PLC端607A的减小,例如将电机旋转一圈的指令脉冲数缩小了16倍,那么目标位置607A的数值也相当于缩小了16倍,此时应该将伺服端的齿轮比分子即H05-07乘于16设成16即可保证换算平衡,这个缩小倍数可以自己定义;

第二种情况:PLC端轴设置:旋转模式;绝对值伺服(H02-01=1):线性模式;
此时轴目标位置(Axis.fSetPosition)、反馈位置(Axis.fActPosition)计算方法如下所示:
Axis.fSetPosition = ((Axis.dwLastPosition-Axis.dwPosOffsetForResiduals)* Axis.iRatioTechUnitsNum)/ Axis.dwRatioTechUnitsDenom
Axis.fActPosition = ((Axis.dwActPosition-Axis.dwPosOffsetForResiduals)* Axis.iRatioTechUnitsNum)/ Axis.dwRatioTechUnitsDenom
其中变量含义:  Axis.dwPosOffsetForResiduals   : 剩余偏差;
Axis.dwLastPosition:上一次命令位置(每个周期会同步607A目标位置值)
Axis.dwActPosition :当前周期6064位置反馈的值
Axis.iRatioTechUnitsNum     :比例缩放分子
Axis.dwRatioTechUnitsDenom :比例缩放分母
PLC端轴旋转模式与线性模式计算完全不同,当目标位置数据607A增量大于旋转周期值(Axis.dwOneTurn)时,PLC将记忆剩余偏差变量(Axis.dwPosOffsetForResiduals。当607A以0->2^32-1递增变化,每运转一个旋转周期剩余偏差变量(Axis.dwPosOffsetForResiduals)自加一个旋转周期值(Axis.dwOneTurn),而2^32-1->0递减变化,每运转一个旋转周期剩余偏差变量(Axis.dwPosOffsetForResiduals)自减一个旋转周期值(Axis.dwOneTurn)。机械运转一个旋转周期电机所产生的编码器增量不能被607A数据宽度(2^32)整除的时候溢出位置不为0。如果能够整除,607A溢出时刻,目标位置、反馈位置都为0或者周期值。

由于剩余偏差变量Axis.dwPosOffsetForResiduals 属于轴内存变量,掉电数据不保持。当 Axis.dwPosOffsetForResiduals值溢出后,PLC 重启、热复位、下载程序操作导致 Axis.dwPosOffsetForResiduals值变为默认值0。因而导致目标位置(Axis.fSetPosition)、反馈位置(Axis.fActPosition)与断电前可能不一致。

问题解决方案图片在文档中,有需要请自取。


PLC断上电后伺服轴位置突变问题处理文档.docx

300.1 KB, 下载次数: 18

售价: 10  [记录]

AM600配合绝对值电机上电位置突变分析补充.pdf

700.33 KB, 下载次数: 24

售价: 5  [记录]

点评

感谢分享  发表于 2023-7-13 08:18
谢谢分享  发表于 2023-6-28 13:28
感谢楼主分享,***一下。  发表于 2023-6-27 22:13
可以可以  发表于 2023-6-26 12:50




上一篇:SMC_ReadNCFile错误ID 2000 怎么解决
下一篇:InoProShop数组元素注释操作文档

已有 0 人打赏作者

回复 邀请回答送花

使用道具 举报

苍原 2023-6-26 09:54:51 | 显示全部楼层
好资料,先马克一下
回复 送花

使用道具 举报

工控小小生 2023-6-27 18:31:18 | 显示全部楼层
感谢分享,非常好的一个资料。
回复 送花

使用道具 举报

苍原 2023-6-27 20:55:19 | 显示全部楼层
好东西,谢谢分享
回复 送花

使用道具 举报

qy20191223 2023-8-4 15:17:53 | 显示全部楼层
好东西,值得观看。
回复 送花

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册   

本版积分规则

有技术问题,就上汇川技术社区

INOVANCE汇川技术 公众号

扫码下载掌上汇川APP

全国服务热线:8:30-17:30

4000-300124

苏州地址:江苏省苏州市吴中区越溪友翔路16号

深圳地址:深圳市龙华新区观澜街道高新技术产业园汇川技术总部大厦

Copyright © 2003-2100 汇川技术 Powered by Discuz! X3.4 ( 苏ICP备12002088号 )
快速回复 返回列表 返回顶部