恭喜,你发布的帖子
发布于 2025-08-22 16:41:32
1楼
看你的 SCL 程序中两次使用了 (IF "堆垛机Z目标位置" = 0.7) 和 (IF "堆垛机Z当前位置" = 0.7) 这样的语句。
因为 "堆垛机Z目标位置" 和 "堆垛机Z当前位置" 是浮点数,在计算机中只有极少部分小数能够使用有限位数的二进制完整表达出来,其它绝大部分小数对于二进制来说就是“无限小数”而无法完整表达出来,只能是近似的数!
所以,你不能像对待整数那样使用 “=” 来做浮点数的逻辑判断的!像你这样使用的逻辑判断条件基本上是永远不成立的。因此,IF 块内的程序也是不会执行的。
因为我不懂你的工艺,所以下面的建议只供你参考。若不符合,请忽略!
你把这些浮点数比较条件放大100 倍,并取整后再比较。比如:
IF ROUND("堆垛机Z目标位置" * 100) = 70 THEN
……
IF ROUND("堆垛机Z当前位置" * 100) = 70 AND "计数" = 4 THEN
……
请填写推广理由:
分享
只看
楼主