怎样保证多圈绝对式编码器位置信息掉电保存
线性模式(Finite)下,如果需要掉电保持数据,必须保存:
A:对象字典0x6064(用户实际反馈指令单位)
B:Axis.iTurn(溢出次数,PLC记录的伺服相对运动距离大于2^23指令单位时加一,注意:不是读取伺服的多圈值)
C:Axis.dwRatioTechUnitsDenom(比例单位分母)
D:Axis.iRatioTechUnitsNum(比例单位分子)。
模数模式(Module)下,如果需要掉电保持数据,必须保存:
A:对象字典0x6064(用户实际反馈脉冲单位)。
B:Axis.dwPosOffsetForResiduals(剩余位置偏移)。
C:Axis.dwRatioTechUnitsDenom(比例单位分母)。
D:Axis.iRatioTechUnitsNum(比例单位分子)。
其中0x6064是从编码器读取的,不需要保存。而C、D栏的数据在下载程序的时候已存储到PLC。所以程序只要保存B栏数据:
iTurn(溢出次数)、dwPosOffsetForResiduals (剩余位置偏移)。
多圈绝对值编码器位置保存功能块提供了保存、加载B栏数据的功能,功能块如下图所示:
功能块的参数的解释如下:
保存功能块的使用:
1、新建一个SMC3_PersistPosition类型的实例,命名SMC3_PersistPosition_0。
2、新建一个SMC3_PersistPosition_Data类型实例persistentData。变量类型为RETAIN PERSISTENT,如下图:
SMC3_PersistPosition_Data结构体变量如下
4、SMC3_PersistPosition_0实例的bEnable变量初始化为 TRUE,或者直接给输入端口赋值TRUE、Axis输入端为需要保存位置的轴。
5、新建保持变量文件,添加完成后,重新编译程序。
6、编译无误后,打开“PersistentVars”文件,在文件空白处右击选择“Add all instance paths(添加所有实例路径)”后,编译下载程序,绝对值编码器的数据保存功能已生效,如图:
注意:为了保证上电后SMC3_PersistPosition_0加载数据的正确性,需判断输出变量bPositionRestored的状态,如果数据读取正确,bPositionRestored的状态为TRUE。