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