本帖最后由 Laijiexin 于 2022-9-30 11:09 编辑
线性模式(Finite)下,如果需要掉电保持数据,必须保存: A:对象字典0x6064(用户实际反馈指令单位) B:Axis.iTurn(溢出次数,PLC记录的伺服相对运动距离大于2^32指令单位时加一,注意:不是读取伺服的多圈值) 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 (剩余位置偏移)。
一、SMC3_PersistPosition_指令介绍
该指令用来保持纪录实轴绝对值编码器的位置(断电重启控制器后,恢复断电前位置记录值)。如果伺服电机使用的是绝对值编码器,使用该功能块配合使用。
该指令保存的数据如下结构体:
二、以C66+A4N为例
轴配置
2.1不带掉电保持举例
程序步骤,先设置当前位置为0,再跑相对运动720,然后断上电,记录下fActPosition的数字。
第一次运行结束时的位置:
不带绝对1
第一次断上电后的位置:
不带绝对11
第二次运行结束时的位置:
不带绝对2
第二次断上电后的位置:
不带绝对22
2.2带掉电保持举例
1、新建一个SMC3_PersistPosition类型的实例
2、新建一个SMC3_PersistPosition_Data类型实例Data。
3、编译无误后,添加持续变量对象“PersistentVars”文件,在文件空白处右击选择“Add all instance paths(添加所有实例路径)”后,编译下载程序
4、程序步骤,先设置当前位置为0,再跑相对运动720,保持SMC3_PersistPosition模块使能置位,然后断上电,记录下fActPosition的数字。
第一次运行结束时的位置:
第一次断上电后的位置:
第二次运行结束时的位置:
第二次断上电后的位置:
这里的微小变化是因为伺服映射的16#6064(position actual value)抖动导致的。
|