1. 数据类型
在PLC项目编程中,离不开数据类型和变量,搞清楚数据类型和数据类型的转换很重要。
常用的数据类型包括以下几种:
位(bit),字节(Byte),字(Word),双字(Double Word),整型数(INT),双整型书(DINT),及实数/浮点数(Real)
1.1 位(bit)
常称作布尔量BOOL,在高级语言中,会说布尔变量,布尔控件等。
取值:0 ,1
寻址:I0.0 M0.0 Q0.0 等。
应用:在DI,DO梯形图编程中,会大量用到I点,M点,Q点。
1.2 字节(Byte)
8个bit组成一个Byte,其中0位表示最低位,7位表示最高位。如MB0(包括M0.0-M0.7位),IB0(包括I0.0-I0.7位),QB0(包括Q0.0-Q0.7位)。
寻址:MB0,IB0,QB0,VB0等。
范围:00-FF(十进制0-255)
应用:MB0赋值为1(0000 0001)即M0.0赋值为真,其余M0.1-M0.7为假。
MB2赋值为1(0000 0010)即M0.1赋值为真,其余为假。
MB3赋值为1(0000 0011)即M0.1和M0.0赋值为真,其余为假。
······
![f39fff4c380e64947524be0f0b6a1ffe.png](https://i-blog.csdnimg.cn/blog_migrate/9ed402069af7213eb546d19fce83b149.jpeg)
1.3 字(Word)
相邻的两个字节(Byte)组成一个字(Word),来表示一个无符号数。一个Word包括16bit。
寻址:MW0,IW0,QW0,VW0等。
范围:0000-FFFF(十进制0-65536)
应用:在模拟量的处理采集中会大量涉及到Word的应用。要注意数据的转换,在后面一块说。
······
注意:相邻两个字要慎用,如MW0(MB0+MB1),MW1(MB1+MB2),所以用了MW0,再用就从MW2,MW4这么用。
![da347094b540fd554a30c831081c5d7a.png](https://i-blog.csdnimg.cn/blog_migrate/060c3eb0b1f96d0f651b2b2328b3d71e.jpeg)
![9bba9ec630307b9a3348ef4dd9dc900a.png](https://i-blog.csdnimg.cn/blog_migrate/9bda10fdd7f70f1a11be89373e739c02.jpeg)
1.4 双字(Double Word)
相邻的两个字(Word)组成一个字(DWord),来表示一个无符号数。一个双字包括32bit。如MD0由MW0(MB0,MB1),MW2(MB2,MB3)组成。
寻址:MD0,ID0,QD0,VD0等。
范围:0000 0000-FFFF FFFF(十进制0-4294967295)
应用:在模拟量的处理采集中会大量涉及到DWord的应用。要注意数据的转换,在后面一块说。
······
注意:相邻两个字要慎用,如MD0(MW0+MW1),MD2(MW2+MW3),所以用了MD0,再用就从MD2,MD4这么用。
![cdc3b95c5394351edc820240f6cc0940.png](https://i-blog.csdnimg.cn/blog_migrate/1c3147a476aa64ef0f7e2eb71526986f.jpeg)
1.5 16位整形(INT,Integer)
整数为有符号数,最高位为符号位,1表示负数,0表示正数。范围为-32768-32767.
寻址:MW0,IW0,QW0,VW0,DB1.DBW0等。
范围:-32768-32767
应用:IW0包括IB0和IB1,IB0为高字节,IB1为低字节;
注意:16位整形数和Word的寻址地址是一样的,这里就看把这个寻址地址定义为什么数据类型了。
注意2:注意区分寻址地址和数据类型,这里讨论的是数据类型。可以把一个寻址地址(DB1.DBW0)里的数定义为无符号数(Word)或(INT)
1.6 32位整形(INT,Integer)
一个32位整数里包括两个字或者说4个字节共32位(bit0-bit31),最高位的bit31表示符号位,bit31=1表示为负数。
寻址:MD0,ID0,QD0,VD0,DB0.DBD0等。
范围:-2147483648-2147483647
注意:32位整形数和DWord的寻址方式是一样的,这里就看把这个寻址地址定义为什么数据类型了。
注意2:注意区分寻址地址和数据类型,这里讨论的是数据类型。可以把一个寻址地址(DB1.DBD0)里的数定义为无符号数(DWord)或(DINT)
1.7 实数/浮点数(Real)
浮点数为32为,可以用小数来表示。
寻址:MD0,ID0,QD0,VD0,DB0.DBD0等。
范围:±1.75495×10 -38-±1.75495×10 38
2. 位、字节、字、双字关系表
![9b1690f17fa7e9e656fdd55ab6b7b350.png](https://i-blog.csdnimg.cn/blog_migrate/2ff109ec7648ec1abb540ef96e41b20f.jpeg)
3. 应用举例
在PLC模拟量的采集和输出中,经常会用到数据类型转换和线性转换,这里只简单说一下,具体应用在下一篇中介绍。
在模拟量的采集中,采集到的数据类型为16位整型,要想把它转换为物理量,就需要线性转换,线性转换就涉及到加减乘除,就需要把整形转换为实数型。
在S71200,1500中,模拟量的寻址:如%IW9。
![4c0538da22de835c7d9969faae8877d1.png](https://i-blog.csdnimg.cn/blog_migrate/4bb69444da8592dcc9991ec4b84d48bf.jpeg)
在1200中,INT数据类型直接可以转换为Real类型
在S7300,200中,模拟量寻址:PIW0。
在300和200PLC中不允许INT直接转换为Real,先要把INT转化为DINT,然后把DINT转换为REAL。
![9059c7257f7d717b246b1816dc71ae7d.png](https://i-blog.csdnimg.cn/blog_migrate/a550eed32f1005baaa5d29f30f8a9045.jpeg)
![ab3f3cca19e27b8dd8b1e2acbd080999.png](https://i-blog.csdnimg.cn/blog_migrate/6fd3231779853af92cec68f9782529df.jpeg)