无符号整数(字节)运算

通过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

相关推荐

  • U23分析仪无法校准

    现场有台U23的分析仪,量程是0到200的,以前一直用101的标气校准,最近突然提示校准不成功,通101标气测到100也提示不成功,经测试,标气浓度设为96以下可以校准,96以上就…

    SIMATIC S7-200 2021年7月5日
  • 大神求助谢谢

    是这样的,总共九个西门子plc一个做主站,一个s7300 八个s7200 ,300是dp   s7200带以太网模块 每…

    SIMATIC S7-200 2017年6月9日
  • 子程序调用问题求助

    请问各位高手,我在用S7-200编程时,主程序里第一网络段调用了一个子程序,第二个网络段也调用了一个子程序(其中有一层嵌套),当运行时,如果第二个网络段的子程序调用运行时,第一个网…

    SIMATIC S7-200 2021年7月5日
  • Q0.0动作异常

    最近有遇到一个奇怪的问题,有三个子程序完全相同(子程序中的定时器全部是10毫秒定时器用作动作延时),但0号子程序输出的q0.0会不定时不能关闭,其它两个子程序动作完全正常。子程序是…

    SIMATIC S7-200 2021年7月5日
  • 西门子200编程问题

    主程序中的Q0.5是由主程序中的M0.5和子程序中的M16.5并行控制,当调用子程序的条件不再适合时.子程序按理不再调用.那时应该M16.5=0,但是由于M16.5依然不置0导致Q…

    SIMATIC S7-200 2021年7月5日
  • 址s7200smart编程软件怎么输入m点地

    址s7200smart编程软件怎么输入m点地址,如图所示,上面的地址标注时,系统只能选下拉框里的i、q、sm地址 图片说明:    最佳答案 看下图,下图中的M…

    2021年7月5日
  • 求一拖二供水程序

    S7200一拖二恒压供水系统? 变频器一拖二异步切换,先用变频器控制M1水泵电机启动调速,当变频器达到50HZ时延时1分钟水压力还在下限,把M1水泵电机切换到工频运行,而…

    SIMATIC S7-200 2018年12月6日
  • s7200字交换编程

    我用modbus通讯读取从机的双字中,高位字和低位字是相反的,需进行交换(是字转换,非字节转换)。由于传输的字数较多,请问怎么编程,比较方便快捷。最好能举个例。谢谢! 问题补充:S…

    SIMATIC S7-200 2017年6月24日
  • 西门子200怎样和中控室联网

    我做的工程怎样和另一家公司的中控室联网,请问有几种联网可以达到目的呀 最佳答案 和另一家公司的中控室联网,请问有几种联网可以达到目的呀?1、首先要看该中控室支持什么通讯。2、西门子…

    SIMATIC S7-200 2020年10月31日
  • s7226cn通讯

    我现在S7200下载程序时无法下载,请教个位老师.我用的PLC型号是S7226CN,下载电缆是我用232\485的转换器做的,转换器的+\-接PLC的3\8,这应该没有问题,原来我…

    SIMATIC S7-200 2021年7月4日