无符号整数(字节)运算

通过modbus读取一个数值,该数值为符号整数,需要通过除32后再减273来求得真实值。但是S7-200的整数计算只能是有付号运算。如何能够实现无符号整数的运算呢?谢谢!

问题补充:
感谢zjw01316的帮忙!请教一下:把读这个数最高位复位为0转换成整数(I),再把最高位置位为1的作用是什么呢?你也说了,以不同的格式查看一个数据,或是使用不同格式的指令处理它,会得到不同的效果。我就是想找一个可以把整数(字节)做为无符号整数(DINT)计算的指令。S7-2OO有吗?

最佳答案

字节默认为正数,你把读这个数最高位复位为0转换成整数(I),再把最高位置位为1.除法如要要显示小数的话,再转换为实数,32也转换为实数32.0,不需要直接整数相除。
----------------------------------------------------------------------------------
S7-200的数据主要分为:
1、与实际输入/输出信号相关的输入/输出映象区:
I:数字量输入(DI) 
Q:数字量输出(DO) 
AI:模拟量输入 
AQ:模拟量输出
2、内部数据存储区
V:变量存储区,可以按位、字节、字或双字来存取V 区数据 
M:位存储区,可以按位、字节、字或双字来存取M区数据 
T:定时器存储区,用于时间累计,分辨率分为1ms、10ms、100ms三种 
C:计数器存储区,用于累计其输入端脉冲电平由低到高的次数。CPU提供了三种类 型的计数器:一种只能增计数;一种只能减计数;另外一种既可 以增计数,又可以减计数

 
1、所有的数据在PLC中都是以二进制形式表示的 
2、数据都有其特定的长度和表示方式,称为格式 
3、数据的格式与用于运算、处理它的指令相关 
4、以不同的格式查看一个数据,或是使用不同格式的指令处理它,会得到不同的效果 
表1. S7-200支持的数据格式
寻址格式 数据长度
(二进制位) 数据类型 取值范围 
BOOL(位) 1(位) 布尔数
(二进制位)  真(1);假(0) 
BYTE(字节)  8
(字节) 无符号整数 0 ~ 255;0 ~ FF(Hex) 
INT(整数) 16
(字) 有符号整数 - 32768 ~ 32767;
8000 ~ 7FFF(Hex) 
WORD(字) 无符号整数 0 ~ 65535;
0 ~ FFFF(Hex) 
DINT
(双整数) 32
(双字) 有符号整数 - 2147483648 ~ 2147483647
8000 0000 ~ 7FFF FFFF(Hex) 
DWORD
(双字) 无符号整数 0 ~ 4294967295;
0 ~ FFFF FFFF(Hex) 
REAL
(实数) IEEE 32位
单精度浮点数  -3.402823E+38 ~ -1.175495E-38(负数);
+1.175495E-38 ~+3.402823E+38(正数); 0.0※ 
ASCII 8/个
(字节) 字符列表 ASCII字符、
汉字内码(每个汉字2字节) 
STRING
(字符串) 字符串 1 ~ 254个ASCII字符、
汉字内码(每个汉字2字节) 

※ 实数不能绝对准确地表示“零”


 在西门子 S7-200 · LOGO! · SITOP 参考Beta Version 0.93中的S7-200PLC里有关于数据方面知识。
西门子 S7-200 · LOGO! · SITOP 参考Beta Version 0.93
下载地址http://www2.ad.siemens.com.cn/Download/Upload/AS/application/A0136.chm
回答者: zjw01316 - 初级技术员  第5级
------------------------------------------------------
回答补充:有一个很严重的问题先,你说把采集出来的数除以32,再减去273,那么这个数最少是8736,否则就是负数。而一个字节最大才是255.算出来肯定是负数了。。
如果你说错了,是想乘以32再减273,那么你直接把字节转换成双整数运算就可以,

参考资料:http://www.ad.siemens.com.cn/service/answer/solution.asp?Q_id=36592_1028.html

提问者对于答案的评价:
谢谢!

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc311778.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月1日 下午2:58
下一篇 2020年11月1日 下午2:58

相关推荐

  • 模拟量输入信号干扰

    最近在设备调试过程中发现,只要我合上电动阀的断路器,仪表的输出4-20mA信号至EM231模块,输入电流信号没多大波动,但是在PLC软件监控中数值波动很大,为此,我做了几个试验。我…

    SIMATIC S7-200 2020年11月1日
  • S7-200 PID输出范围上下限设定

    S7-200使用PID过程中,想修改输出的上下限。如:设定值在0–20%范围内时,输出要求在0–25%之间调整;设定值在20–50%范围内时,输出要求在30–65%之间调整…

    2021年7月5日
  • 检测电机卡死的程序怎么写

    我想用接近传感器来检测电机卡死和皮带打滑,这样的程序用S7-200怎么编写?(要考虑电机是否是停止状态)  最佳答案  看门狗电路。 2个接近开关,电…

    SIMATIC S7-200 2021年7月5日
  • 224xp的DI端子如何接线

    很弱智的问题啊,附了接线图,图中DI是否必须传入电源?1M和0.1直接短接 不能作为I0.1的输入? 图片说明:    最佳答案 需要电源,1M,2M…

    2020年10月31日
  • pc access sp3 通讯

    我用pc access sp3和s7-200通讯,计算机安装的是XP SP,装完pc access sp3后,测试正常,然后安装W…

    SIMATIC S7-200 2020年11月1日
  • 关于S7200 MICROWIN中的程序库

    请教我的MICROWIN中库是空的,以前没注意到,里面应该是有内容的,那么我的为何是空的?敬请指教!y6843@sina.com,673049828 问题补充:按照zhangli0…

    SIMATIC S7-200 2018年12月2日
  • CPU 226CN 密码忘了怎么办

    CPU 226CN 密码忘了怎么办,以前的程序,下到PLC里面后发现密码忘了,设定的是3级密码,无法上传和下载,我想改程序,改不了,怎么办啊,急急急!!!! 问…

    SIMATIC S7-200 2020年11月1日
  • S7-200的CPU224XP,我想用它来控制伺服驱动器,但不知道控制指令。

    S7-200/224XP晶体管输出的可以如何发伺服高速脉冲吗?如发脉冲的速度和脉冲的个数,可以自己填这些脉冲频率和总量的,如果可以那么用什么指令来写啊?S7-300晶体管输出带高速…

    SIMATIC S7-200 2020年10月31日
  • 所有的USB/PPI 通讯电缆都能支持串口通讯吗?

    想买根USB/PPI电缆与电脑的连接,用串口通信调试软件做实验,但是听说有的电缆只支持程序上下载,并不支持串口通信,是真的吗?哪种型号的电缆可以用于串口通讯? 最佳答案 原装USB…

    SIMATIC S7-200 2021年7月5日
  • 200的结构化程序

    200带参数的子程序改变了接口如何在主程序中 直接编译过来而不用重新调用子程序 重新全部填写接口参数 最佳答案 测试了一下,没有更新功能~不过有个简单的做法按下…

    2021年7月5日