S7-200CN: BCD码与整数的转换应用举例-跟我学 - 81/185
课程编号:V0217
暂无简介
点击这里,打开新窗口观看完整视频
该视频下的所有用户提问列表
请看附图,IW0被强制为2#1001000100010000,为什么在LAD中显示为-28400?这个是怎么得出的?望高手解惑。
图片说明:
最佳答案
西门子 PLC 系统的单整数即16 位二进制整数的取值范围为 -32768 到 +32767。
其中:最高位是符号位,符号位为 0,则为正整数;符号位为 1,则表示这个数是一个负数,而负数存储时是以补码存储的,负整数的补码在用整数方式监视时,系统会将补码换算成真值。
因为正整数的原码 = 其反码 = 其补码,并且就是其本身,而负整数的补码与原码表示方式是不同的。所以我们可以认为整数在西门子的 PLC 系统中就是以补码的形式存储的。
关于这方面的内容,可以百度一下码制方面的内容去了解一下。
现在来解析你所看到的。
原强制值为 2# 1001 0001 0001 0000,它最高位为 1,则是一个负数,至于是多大的负数,则要按负数的补码求真值的方法来算。 求的过程如下:
负数补码: 2# 1001 0001 0001 0000
减1得 2# 1001 0001 0000 1111
按位取反 2# 0110 1110 1111 0000
将最后得到的二进制码转换为十进制就是 28400,加上符号,则为 -28400,就是你程序中监视到的值。
提问者对于答案的评价:
原因、过程清晰,谢谢。
最佳答案作者回复:
谢谢夸奖,共同学习
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc366693.html