[西门子] S7-200 SMART 基础篇之数据类型

[复制链接]
查看158 | 回复0 | 2024-4-23 19:27:14 | 显示全部楼层 |阅读模式
S7-200 SMART 入门篇之数据类型
S7-200 SMART的数据主要分为:
1、与实际输入/输出信号相关的输入/输出映象区:
▶ I:数字量输入(DI)           例如:按钮、接近开关、行程开关等
▶ Q:数字量输出(DO)        例如:指示灯、接触器线圈、电磁阀等
▶ AI:模拟量输入(AI)         例如:压力、温度、流量等
▶ AQ:模拟量输出(AQ)      例如:频率给定、控制调节阀等
2、内部数据存储区:
▶ V:变量存储区,可以按位、字节、字或双字来存取V 区数据
▶ M:位存储区,可以按位、字节、字或双字来存取M区数据
▶ T:定时器存储区,用于时间累计
▶ C:计数器存储区,用于累计其输入端脉冲电平由低到高的次数
▶ HC:高速计数器,独立于 CPU 的扫描周期对高速事件进行计数,高速计数器的当前值是只读值,仅可作为双字(32 位)来寻址
▶ AC:累加器,可以像存储器一样使用的读/写器件,可以按字节、字或双字访问累加器中的数据
▶ SM:特殊存储器,提供了在 CPU 和用户程序之间传递信息的一种方法。可以使用这些位来选择和控制 CPU 的某些特殊功能, 可以按位、字节、字或双字访问 SM 位
▶ L:局部存储区,用于向子例程传递形式参数
▶ S:顺序控制继电器,用于将机器或步骤组织到等效的程序段中,实现控制程序的逻辑分段。可以按位、字节、字或双字访问 S 存储器
         

V存储器存储范围以CPU SR20 ,ST20为例,存储范围VB0到VB8191,其它型号的CPU存储空间更大
通俗地说,数据类型决定了数据可以接收哪些值,使用该数据能够执行哪些指令,即数据类型定义了允许的数据范围和允许使用的指令。
一、数据存储类型与数据长度
在计算机中使用的都是二进制数,其最基本的存储单位是位(bit)
8位二进制数组成1个字节(Byte),其中的第0位为最低位(LSB),第7位为最高位(MSB)
两个字节(16位)组成1个字(Word)
两个字(32位)组成1个双字(Double Word)
把位、字节、字和双字占用的连续位数称为长度。

S7-200SMART支持的基本数据类型、数据长度及范围:


二、常数及格式
PLC内部的所有数据都是以二进制存储,但常数的书写可以用二进制、十进制、十六进制、ASCII码或浮点数等多种形式。
二进制:二进制的1位要么为0、要么为1,位数据的数据类型称为BOOL(布尔)型。
可以用一个二进制的位来表示开关量的两种不同的状态,例如:按钮的按下和松开,线圈的通电和断电等。
十进制:阿拉伯数字0 、1 、2 、3 、4 、5 、6 、7 、8 、9 表示十进制
八进制:阿拉伯数字0 、1 、2 、3 、4 、5 、6 、7表示八进制
十六进制:用0 、1 、2 、3 、4 、5 、6 、7 、8 、9 、A 、B、C、D、E、F表示十六进制
浮点数:就是小数

正数与负数:
以一个字为例:最高位为符号位,0为正数,1位负数。

三、数据寻址
CPU 将信息存储在不同存储单元,每个位置均具有唯一的地址。可以根据存储器地址来存取数据。
数据区存储器地址的表示格式有位(V0.0)、字节(VB1)、字(VW2)、双字(VD4)地址格式。
1、位寻址举例:区域标识符、字节地址、分隔符、位号

位寻址:M0.0 、M0.1 、Q0.0 、Q1.0 、I0.0 、I2.0 、V0.0 、V10.0
2、字节、字、双字寻址举例:
字节寻址:VB20、VB21、VB22、VB23、VB24、VB25、MB10、MB11、MB12、MB13、MB14、MB15、
字寻址:VW30、VW32、VW34、VW36、VW38、VW40、AIW16、AIW18、AQW16、AQW18、
双字寻址:VD50、VD54、VD58、VD62、VD64、VD68、
字节寻址每递增一次地址加1,字寻址每递增一次地址加2,双字寻址每递增一次地址加4

四、间接寻址:参考前面的文章间接寻址


下面简单介绍一下二进制、十进制、十六进制之间的转换:
二、八、十、十六进制之间关系的结构图

在数字后面加上不同的字母来表示不同的进位制。B(Binary)表示二进制,O(Octal)表示八进制,D(Decimal)或不加表示十进制,H(Hexadecimal)表示十六进制。例如:(101011)B=(53)O=(43)D=(2B)H


二进制 → 十进制
  方法:二进制数从低位到高位(即从右往左)计算,第0位的权值是2的0次方,第1位的权值是2的1次方,第2位的权值是2的2次方,依次递增下去,把最后的结果相加的值就是十进制的值了。
  例:将二进制的(110101)B转换为十进制的步骤如下:(从右往左,依次是第0位、第1位、。。。)
1. 第0位 1 x 2^0 = 1;
2. 第1位 0 x 2^1 = 0;
3. 第2位 1 x 2^2 = 4;
4. 第3位 0 x 2^3 = 0;
5. 第4位 1 x 2^4 = 16;
6. 第5位 1 x 2^5 = 32;
7. 读数,把结果值相加,1+0+4+0+16+32=53,即(110101)B=(53)D。


十六进制 → 十进制
  方法:十六进制数从低位到高位(即从右往左)计算,第0位的权值是16的0次方,第1位的权值是16的1次方,第2位的权值是16的2次方,依次递增下去,把最后的结果相加的值就是十进制的值了。
  十六进制就是逢16进1,十六进制的16个数为0 、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。
  例:将十六进制的(24F)H转换为十进制的步骤如下:
1. 第0位 F x 16^0 = 15;
2. 第1位 4 x 16^1 = 64;
3. 第2位 2x 16^2= 512;
4. 读数,把结果值相加,512+64+15=591,即(24F)H=(591)D。
               
十进制 → 二进制
  方法:除2取余法,即每次将整数部分除以2,余数为该位权上的数,而商继续除以2,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数读起,一直到最前面的一个余数。
  例:将十进制的(43)D转换为二进制的步骤如下:
1. 将商43除以2,商21余数为1;
2. 将商21除以2,商10余数为1;
3. 将商10除以2,商5余数为0;
4. 将商5除以2,商2余数为1;
5. 将商2除以2,商1余数为0;
6. 将商1除以2,商0余数为1;
7. 读数,因为最后一位是经过多次除以2才得到的,因此它是最高位,读数从最后的余数向前读,101011,即(43)D=(101011)B。



十进制 → 十六进制
  方法:除16取余法,即每次将整数部分除以16,余数为该位权上的数,而商继续除以16,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数起,一直到最前面的一个余数。
  例:将十进制的(796)D转换为十六进制的步骤如下:
1. 将商796除以16,商49余数为12,对应十六进制的C;
2. 将商49除以16,商3余数为1;
3. 将商3除以16,商0余数为3;
4. 读数,因为最后一位是经过多次除以16才得到的,因此它是最高位,读数从最后的余数向前读,31C,即(796)D=(31C)H。



二进制 → 十六进制
  方法:取四合一法,即从二进制的小数点为分界点,向左(向右)每四位取成一位,接着将这四位二进制按权相加,然后,按顺序进行排列,小数点的位置不变,得到的数字就是我们所求的十六进制数。如果向左(向右)取四位后,取到最高(最低)位时候,如果无法凑足四位,可以在小数点最左边(最右边),即整数的最高位(最低位)添0,凑足四位。
  例:将二进制的(11010111)B转换为十六进制的步骤如下:
1. 0111 = 7;
2. 1101 = D;
3. 读数,读数从高位到低位,即(11010111)B=(D7)H。



十六进制 → 二进制
  方法:取一分四法,即将一位十六进制数分解成四位二进制数,用四位二进制按权相加去凑这位十六进制数,小数点位置照旧。
  例:将十六进制的(D7)H转换为二进制的步骤如下:
1. D = 1101;
2. 7 = 0111;
3. 读数,读数从高位到低位,即(D7)H=(11010111)B。

本文文档下载链接:
   
链接:https://pan.baidu.com/s/1hQR8suv46qYgUmV2l6oTHA?pwd=vohb
提取码:vohb
   



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则