恭喜,你发布的帖子
发布于 2023-12-06 15:13:26
27楼
问题的关键所在:
1)说明书中:采用的是【二进制源码】的形式表示负数(有符号整数);
2)SMART200中:有符号整数采用【二进制补码】的形式来表示负数(有符号整数);
因此,通讯读取的温度值为负值时,不能直接用【整数_双整数】、【双整数_实数】、再除以10.0来转换。
可以:
1、参考:1楼、11楼、20楼、23楼、24楼的提示等转换;
2、PT100传感器未接入或线路故障的处理:通讯读取的数据=-1时为【故障】;
在PLC数字系统中(如:SMART200),对有符号整数(最常用)的表示方法是使用二进制数的补码形式表示,即该二进制数的最高有效位是符号位,正整数的补码同该二进制数,负整数的补码是该二进制数除了符号位外按位取反后加1。
1)如:FFFF(十六进制正数)=65535(十进制正数)=-1(十进制有符号整数的负数)=1111 1111 1111 1111(二进制正数);
2)用二进制数的补码形式表示:-1的编码:
1、符号位的值:1;
2、-1取绝对值=1;
3、1的二进制编码(用二字节时,符号位除外):000 0000 0000 0001;
4、000 0000 0000 0001按位取反后=111 1111 1111 110;
5、111 1111 1111 110加上1=111 1111 1111 1111;
6、在最高位添加上表示负数的符号位 1=【1】111 1111 1111 1111。即:-1 使用二进制数的补码形式表示为 1111 1111 1111 1111
请填写推广理由:
分享
只看
楼主