PLC内部是如何存储数据的
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#时:分:秒.毫秒(注意秒和毫秒间是一点)。