|
邀请回答
马上注册,享受更多特权
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
问题:中型PLC有时候在断电重启后,会发现Axis.fSetPosition和Axis.fActPosition数值发生了突变,但是实际机械位置却没有动。
分析:我们在解决问题之前首先了解下这两个值是怎么算出来的
线性模式:fActPosition = (iTurn *2^23 + diActPosition)*(iRatioTechUnitsNum/dwRatioTechUnitsDenom)-fOffsetPostion
旋转模式:fActPosition = (dwActposition- dwPosOffsetForResiduals) *(iRatioTechUnitsNum / dwRatioTechUnitsDenom)-fOffsetPosition
其中iTurn和dwPosOffsetForResiduals分别是线性模式和旋转模式下的溢出计数,diActPosition以及dwActposition分别是线性和旋转模式下从编码器那里获取的编码位置,iRatioTechUnitsNum/dwRatioTechUnitsDenom 是软件后台轴配置单位换算界面的齿轮比信息。 fOffsetPostion则是触发MC_SetPosition后坐标的偏移量。
一般而言,齿轮比iRatioTechUnitsNum/dwRatioTechUnitsDenom在配置完成后便不会改变,diActPosition以及dwActposition是从伺服侧读取上来的,对绝对值伺服来说也不会改变。因此可以导致位置突变的原因便分析出来了,那就是iTurn和dwPosOffsetForResidual或fOffsetPosition发生了变化,因为这几个变量是非保持变量,因此每次断电后这些数据会清零。
下面我们对这几个变量进行逐个分析:
iTurn和dwPosOffsetForResidual 只有在伺服溢出后才会有计数(对23位绝对值编码器的电机来说,超过±255圈后便会溢出)
fOffsetPosition 只有触发MC_SetPosition才会有数值。
总结: 当23位编码器电机单方向旋转超过255圈后或使用了MC_SetPosition功能后重启会导致位置突变。
知道了原因,那我们来看看解决措施:将对应变量做成掉电保持!为此我们有一个功能块可以解决该问题——>SMC3_PersistPosition,
新建一个 SMC3_PersistPosition_Data 类型实例,功能块数据变量输入persistentData,变量类型为 RETAIN PERSISTENT保持类型
|
-
功能块使用方法
上一篇: 汇川中型PLC转矩控制下一篇: CNC G代码使用分享
|