梦雨天涯
微信hui530527   &
级别: 网络英雄
精华主题: 0
发帖数量: 4487 个
工控威望: 7874 点
下载积分: 16357 分
在线时间: 3103(小时)
注册时间: 2016-10-31
最后登录: 2025-02-22
查看梦雨天涯的 主题 / 回贴
楼主  发表于: 51天前
图片:
图片:
如图,位置已经是0,但是还是在0来回跳动,导致有些位置需要等于这个位置才能动作的,无法动作。
现在取小数点后一位,进行4舍5入处理。
当然大佬们有更好的办法也可以讨论,实在是对这个伺服位置变化无可奈何
微信hui530527      b站账号,非标自动化谭工
请不要随意加我,不会随便通过。QQ群942493953
ren1823
级别: 工控侠客
精华主题: 0
发帖数量: 329 个
工控威望: 3001 点
下载积分: 107 分
在线时间: 458(小时)
注册时间: 2019-08-01
最后登录: 2025-02-21
查看ren1823的 主题 / 回贴
1楼  发表于: 51天前
只用来显示和位置赋值,四舍五入的话偏差会比较大    位置到达还是用指令的Done标志
//将当前位置赋值给临时变量
temp:=IN_当前位置;

//连乘小数位位数
FOR i:=1 TO 保留小数点位数  BY 1 DO
    temp:=temp*10.0;
END_FOR;

//先转换成整型除去剩余小数,再转换成浮点数
temp:=DINT_TO_REAL(REAL_TO_DINT(temp));

//连除获取保留设定小数点位数的浮点数
FOR i:=1 TO 保留小数点位数  BY 1 DO
    temp:=temp/10.0;
END_FOR;

OUT_当前位置:=temp;