二子
雪世界
YLYN
siren
直接加绝对值指令即可。
引用YLYN 的回复内容:看不明白
如果要转换的数值大于0那么,此数值的绝对值就是正数,即正数的绝对值。
newchp
你怎么知道这个数是小于“0”,还是大于“0”?比如:dm100里的“0034”?cmp #0 dm100
dm100里的“0034”与0比较当然是大于0了,没有必要去计算什么了。
在计算中,如果出现负数,CPU会自动识别的。只要你用cmp #0 dm100这个指令做比较即可。
还是不明白,具体到cmp #0 dm100 不论dm100里是什么数只能有2种可能:等于或小于
请明确给出完整的程序
试了半天没出结果,经专家指点,应该用CPS比较命令。
但是CPS只适用二进制,为解决lz问题,我认为出负数的可能只有减法运算,既然这样,在做d1-d2,前先比较 d1与 d2,小就改成d2-d1
你采用的是哪种型号的PLC?
我用的是OMRON CP1H的PLC做的梯形程序。型号的不同指令应用就有所不一样。
你试过吗?
还可以利用“借位”标志CY作补码运算更简单
比较运算只不过是求绝对值的一种方法。
利用“借位”标志CY作补码运算也可以实现的。
张家界
zhaochunpeng
busy
没哪么简单,如果这么简单还要补码运算干吗?
请看看“带符号二进制减发”指令
各位:就像我上面说的一样,求绝对值就是将负号拿掉,仅此而已。
不要走太多弯路,就像我以前做格雷码编码器的数据输入一样,需要通过每位的异或运算计算,现在就一个GRY命令即可。