PLC内部是如何存储数据的

传送和接收数据类型好是不同会造成错误,我就想了解一下各个数据类型最PLC内是怎么以二进制码存储的,正数好像最高位是0,负数好像最高位是1,正数存储是它本身,负数是以它的补码形式(除符号位取反再加1)存在的,对不对啊?但是怎样以1和0组成的呢,请各位专家给我解答或发个资料链接什么的,先谢谢各位了。

最佳答案

STEP 7基本数据类型
  
 说明:
 (1)WORD(字)
 一个字为16位,以二进制编码表示一个数值时,将16位分为4组,每组4位,分别表示数值中的一个数字。如16进制的W#16#1234的位图如下所示:
  
 使用16进制表示数值时没有符号位,所以16进制表示的数不会有负值。
 以BCD码表示时带有符号位,和16进制表示方法一样,也把16位分别4组,每组4位分别表示一个BCD码数字,但每位不能超过9.如+123以BCD码表示时的位图如下所示:
  
 DWORD和WORD的表示方法相同,只不过位数为32位,分为8组,每组4位分别表示一个数字。
 (2)INT(整数)
 一个INT型数值包括16位,在存储器中占有一个字的存储空间。INT型即可以表示正数,也可以表示负数,最高位为符号位(0表示正数,1表示负数)。以二进制编码表示一个数值时,除符号位以外,将每一位信号的数值相加即可表示一个整数。如+34位图如下图所示:
  
 一个负数的表示方法则是在正数的基础上将所有的位信号取反再加1,如-34的位图如下图所示:
  
 DINT(双整数)和INT的表示方法相同,只不过是32位。
 (3)REAL(浮点数)
 一个浮点数为32位,占有2个字的存储空间。一个浮点数包括符号位(S),指数(e)和尾数(m),三者分别占有的位图如下所示:
  
 指数(e)和尾数(m)的取值见下表:
  
 REAL数据类型的值都可以表示成1.m×2(e-bias)的形式,其中1≤e≤254,bias=127,S=0时为正值,S=1时为负值。
 如12.25的表示方法如下:
 S=0;
 指数e=27+21=128+2=130;
 尾数m=2-1+2-5=0.5+0.03125=0.53125;
 浮点值=(1+m)×2(e-bias)=(1+0.53125)×2(130-127)=1.53125×8=12.25.
 浮点数12.25的位图表示如下:
  
 SIMENS PLC浮点数小数位数最多为6位,要避免两个相差大于107的浮点数运算,否则会出现不正常的结果,如10000000.0+1.0结果仍是10000000.0。
 (4)S5Time(SIMATIC时间)
 S5Time时间占有16位,时间格式为:S5T#XH_XM_XS_XMS,其中:H,M,S,MS分别是时,分,秒和毫秒。S5Time的时间数据以BCD码二进制编码的格式存储,例如时基为1S,时间值为127S的位图表示如下:
  
 时基为时间的最小变化率,其定义如下:
  
 BCD码时间的最大值为999,通过选择不同的时基可以改变定时时间的长度,如100MS时间的定时器最长可定时99900MS.在编写程序时,CPU会根据设定的时间值自动选择时基,如S5T#2M_30S,为150要,大于100MS时基的最大定时长度而小于1S时基的最大定时长度,时基自动选定为1S。
 (5)Time(IEC时间)
 Time时间格式占32位,格式为:T#XD_XH_XM_XS_XMS,其中:D,H,M,S和MS分别表示天,时,分,秒和毫秒。
 (6)DATE(IEC日期)
 DATE日期格式占有16位存储空间,格式为D#年_月_日。
 (7)Time_OF_DAY(时间)
 此格式占用32位的存储空间,格式为:TOD#时:分:秒.毫秒(注意秒和毫秒间是一点)。

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

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

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

相关推荐