合信论坛

快捷导航
查看: 3851|回复: 0

SMC_SetPersistPos指令应用实例

[复制链接]

0

主题

0

帖子

30

积分

游客

积分
30
发表于 2023-2-6 18:02:40 | 显示全部楼层 |阅读模式
SMC_SetPersistPos指令简介:
11.png
功能:保存掉电前的圈数,重新上电后根据圈数和轴当前坐标计算出ActPos。重新下载硬件组态,该功能失效。
前期准备:A4N+H36
A4N绝对值系列伺服驱动器匹配绝对值编码器时,根据实际应用情况可设置 P41 (总线式绝对值编码器设定),选用绝对值编码器的使用方式(默认增量方式)。如使用绝对值方式,接好线缆,初次上电,伺服可能会出现 6 号错误(P244 Bit6 为 1),此时需设置 P282=16来清除绝对值编码器错误,然后重新上电(控制电源)。

H36的固件需要2.49及以上,需添加新的SMC库。

线性轴:
当位置数据溢出时,PLC将以iTurn记忆607A溢出次数(线性模式)。当从0到2^31再从-2^31到0递增变化,每溢出一次iTurn变量加1;而0到-2^31再从2^31到0递减变化,每溢出一次iTurn变量减1。
轴目标位置(fSetPosition)、反馈位置(fActPosition计算方法:
fActPosition = ((iTurn 2^32 + dwActPosition) iRatioTechUnitsNum)/ dwRatioTechUnitsDenom
其中变量:
iTurn :溢出次数
dwLastPosition :上一次命令位置(每个周期会同步607A的值)
dwActPosition :当前周期6064的值
iRatioTechUnitsNum :缩放比例分子
dwRatioTechUnitsDenom : 比例缩放分母
由于iTurn属于轴内存变量,掉电数据不保持。所以PLC重启、热复位、下载程序操作导致iTurn值为据默认值0。因而导致目标位置(fSetPosition)、反馈位置(fActPosition)与断电前不一致。

A4N的圈数范围是(-16384~16383),可以在伺服驱动器面板P242查看。绝对值编码器单圈位置为2^17;即0~131071。
硬件组态中设置量纲比131072:1。
此时使用相对位置指令,Dis=1,实际电机跑一圈,607A和6064在映射中可以在线查看到值为131072.
DIS=1.jpg DIS=1映射.jpg DIS=1伺服.jpg

当DIS大于16384时,位置溢出后,位置计数和圈数会从-16384开始向0递增。ActPos会持续累加。
例如不溢出
(断电前)DIS=16384时,P242=16384,6064=-2147483648,6064值/131072=-16384,根据公式ActPos=1*32768+(-16384)=16384。
DIS=16384.jpg
(重新上电)如果这时候没使用该保持指令,断电后,溢出值无法保存下来,重新上电后就变成ActPos=0*32768+16384(上电后读回来的6064)。因为处于溢出临界值,所以断上电几乎没有差异。
DIS=16384上电.png

溢出:
(断电前)DIS=16384.1时溢出,6064=-2147470635,6064值/131072=-16,383.9,根据公式ActPos=1*32768+(-16,383.9)=16384.1。
DIS=16384.1.jpg
(重新上电)如果这时候没使用该保持指令,断电后,溢出值无法保存下来,重新上电后就变成ActPos=0*32768+(-16,383.9)(上电后读回来的6064)=-16383.9。就会和断电前的位置不同。
DIS=16384.1上电0.jpg

(重新上电带掉电保持)如果使用该保持指令,断电后,溢出值保存下来,重新上电后就变成ActPos=1*32768+(-16,383.9)(上电后读回来的6064)=16384.1。就会和断电前的位置相同。
DIS=16384.1上电1.jpg


旋转轴:旋转模式和线性轴模式一样,溢出后掉电重启只读6064的位置,不保存溢出周期数。

举例说明:还是按照上面的量纲。模值360。也就是一个旋转周期,转360圈。
溢出:
(断电前)DIS=16744时,P242=-16024,6064=-2100297728,6064值/131072=-16024,根据公式ActPos=1*32768+(-16024)=16744,然后除以360周期数取余数就是实际值184。 Dis=16744.jpg
(重新上电不带掉电保持)如果这时候没使用该保持指令,断电后,溢出值无法保存下来,重新上电后就变成ActPos=0*32768+(-16024)=-16024,然后除以360周期数取余数就是实际值176(因为360一个周期,整除后还剩下-184,也就是正176)。明显与断电前的位置不同
Dis=16744上电.jpg
(重新上电带掉电保持)如果使用该保持指令,断电后,溢出值保存下来,重新上电后就变成ActPos=1*32768+(-16024)=16744,然后除以360周期数取余数就是实际值184。就会和断电前的位置相同。
Dis=16744上电保持.jpg

下面列出几种情况:
一、未溢出不带保持
断电前:ActPos=239.5975                                                                                                         重新上电:ActPos=239.5974
未溢出不带保持.png             未溢出不带保持1.png
断电前后几乎没差别,在没溢出的情况下,根据当前圈数计算出来的位置是准确的。


二、溢出不带保持
断电前:ActPos=58.39796                                                                                                         重新上电:ActPos=50.39745
溢出不带保持.png             溢出不带保持1.png
断电前后明显差别,在溢出的情况下,没保存溢出数,只根据当前圈数计算出来的位置是不准确的。


三、溢出带保持
断电前:ActPos=213.8979                                                                                                         重新上电:ActPos=213.8965
溢出带保持.png             溢出带保持1.png
断电前后几乎没差别,在溢出的情况下,保存溢出数等,根据当前圈数计算出来的位置是准确的。



setpersistpos指令测试.zip

32.3 KB, 下载次数: 411

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

本版积分规则

客服热线
400-700-4858 周一至周五:09:00 - 18:00
深圳市南山区打石一路深圳国际创新谷6栋A座9层

深圳市合信自动化技术有限公司(简称“合信技术”)成立于2003年,高新技术企业,专注于工业自动化产品的研发、生产、销售和技术服务,依靠高质量、高性能的自动化控制产品与方案为客户创造最大价值,立志于成为全球领先的工业自动化解决方案供应商。

Archiver|手机版|小黑屋|COTRUST Inc. ( 粤ICP备13051915号 )

GMT+8, 2024-7-17 20:33 , Processed in 0.068390 second(s), 23 queries .

快速回复 返回顶部 返回列表