首页 理论教育 S7-300 PLC编程语言的数据类型详解

S7-300 PLC编程语言的数据类型详解

时间:2023-06-29 理论教育 版权反馈
【摘要】:最高4位用来表示符号,16/32位BCD码的范围。S7-300有三种数据类型:1)基本数据类型。定义超过32位或由其他数据类型组成的数据。模拟信号包含16位或32位信息,在PLC中以字或双字的形式体现。需要注意的是,PLC输入输出值大多为整数,若用浮点数处理这些数据时需要进行整数和浮点数之间的转换。图3-9 浮点数的结构浮点数又称实数,表示为1.m×2e,例如123.4可表示为1.234×102。浮点数的表示范围为±1.175495×10-38~±3.402823×1038。

S7-300 PLC编程语言的数据类型详解

1.数制

(1)进制数 二进制数的1位(bit)只能取0和1这两个不同的值,用来表示开关量的ON/OFF这两种不同的状态。二进制常数:2#1111_0110_1001_0001。

(2)十六进制数 十六进制是逢16进1的数制,其使用的16个数字是0~9和A~F,每个数字占二进制数的4位。在STEP7中有以下几种表示形式:B#16#,W#16#,DW#16#。例如,B#16#3C对应的十进制数值为:3×16′+12×16°=60。

(3)BCD码 BCD码用4位二进制数表示一位十进制数,十进制数9对应的二进制数为1001。最高4位用来表示符号,16/32位BCD码的范围。BCD码实际上是十六进制数,但是各位之间逢十进一。296对应的BCD码为W#16#296,或2#0000001010010110。

2#0000000100101000对应的十进制数也是296,对应的十进制数为28+25+23=256+32+8=296。

不同进制的数的表示方法见表3-4。

3-4 不同进制的数的表示方法

978-7-111-44245-5-Chapter03-10.jpg

(续)

978-7-111-44245-5-Chapter03-11.jpg

2.数据类型

数据类型决定了以什么方式或格式理解或访问存储区中的数据。S7-300有三种数据类型:

1)基本数据类型。定义不超过32位的数据。

2)复式数据类型。定义超过32位或由其他数据类型组成的数据。

3)参数类型。定义传给FB和FC的参数。

(1)基本数据类型 STEP7软件中使用的基本数据类型有三种:以绝对地址表示的变量、以符号地址表示的变量和常数。

要访问一个变量,必须要找到它在存储空间中的位置,在STEP7中,I/O信号、位存储变量、定时器、计数器等都可以通过绝对地址和符号地址两种方式来按访问。在STEP7指令中需要访问变量时,可以任意定义为绝对地址或符号地址,二者在软件中还可以相互转换显示。

1)变量的绝对地址。变量的绝对地址是在STEP7中硬件组态时设置的输入、输出地址。STEP7中的变量绝对地址的定义遵循如下形式:

变量的绝对地址=关键字+地址数据

STEP7中常用的绝对地址的关键字见表3-5。

3-5 绝对地址关键字

978-7-111-44245-5-Chapter03-12.jpg

其中,I、Q、M、L有位寻址、字节寻址、字寻址和双字寻址几种方法。PI、PQ有字节寻址、字寻址、双字寻址几种方式。图3-7所示为对同一块存储区域用不同方式寻址的区别。需要注意,在MW100中,MB100是高字节,MB101是低字节;在MD100中,MB100是最高字节,MB103是最低字节,这与在汇编语言中的习惯用法不同。

978-7-111-44245-5-Chapter03-13.jpg

图3-7 字节、字和双字寻址方式

a)MB100 b)MW100 c)MD100

信号按照硬件模块的不同类型,可分为数字信号和模拟信号。

①数字信号。数字信号包含位信息,在PLC中以位(Bit)的形式体现。输入如按钮、开关、继电器触点等数字输入信号,输出如指示灯、接触器线圈等数字输出信号。

②模拟信号。模拟信号包含16位或32位信息,在PLC中以字(Word)或双字(DoubleWord)的形式体现。输入如温度计、pH计等模拟输入信号,输出如电动阀门的开度等模拟输出信号。

数字信号是以布尔(BOOL)量存储的,而模拟信号是以整数(INT)类型存储的。在STEP7中,有下面几种基本数字类型:

①位(Bit)。位变量的数据类型为BOOL(布尔)型,占用1个字节中的1位二进制数据。一个位变量的绝对地址表示形式为A.B,其中A表示字节,由CPU模块决定其数值,而B表示字节中的位,范围是0~7。

978-7-111-44245-5-Chapter03-14.jpg

图3-8 位与字节的存放规则

例如,图3-8中灰色小方块所示的数据是输入过程映像寄存器I的第3个字节的第2个位,所以其定义为IB3.2。

②字节(Byte)。字节变量的数据类型是由8位二进制数组成的BYTE,通过数据类型符号B和表示绝对地址的一个字节来表示的。例如,输入过程映像寄存器I的第3个字节定义为IB3。

③字(Word)。字变量的数据类型WORD包含两个字节的无符号数,取值范围为W#16#0000~W#16#FFFF。通过数据类型符号W和表示绝对地址的变量高字节所在的地址来表示。为了避免地址交叉使用,绝对地址一般是2的倍数。例如,MW100表示选择了位存储器从MB2开始的2个字节数据,即MW100=MB100+MB101。

④双字(Double Word)。双字变量的数据类型DWORD包含了4个字节的无符号数。范围DW#16#0000_0000~DW#16#FFFF_FFFF。通过数据类型符号D和表示绝对地址的变量高字节所在的地址来表示的。为了避免地址交叉使用,绝对地址一般是4的倍数。例如,MW100表示选择了位存储器从MB2开始的4个字节数据,即MD100=MB100+MB101+MB102+MB103。

⑤16位整数(INT,Integer)。整数变量是有符号数,以补码表示,在整数数字运算时使用。最高位为符号位,为0时为正数,为1时为负数。取值范围为-32768~32767。(www.xing528.com)

⑥32位整数(DINT,DoubleInteger)。双整数变量是有符号数,以补码表示,在整数数字运算时使用。最高位为符号位,为0时为正数,为1时为负数。取值范围为-2147483648~2147483647。

⑦32位浮点数。定义同计算机中的格式,如图3-9所示。需要注意的是,PLC输入输出值大多为整数,若用浮点数处理这些数据时需要进行整数和浮点数之间的转换。浮点数的运算速度比整数运算的慢。

978-7-111-44245-5-Chapter03-15.jpg

图3-9 浮点数的结构

浮点数又称实数(REAL),表示为1.m×2e,例如123.4可表示为1.234×102。指数e是有符号数。根据ANSI/IEEE标准

浮点数=1.m×2e

式中,指数e=E+127(1≤e≤254),为8位正整数。

ANSI/IEEE标准浮点数占用一个双字(32位)。

因为规定尾数的整数部分总是为1,只保留尾数的小数部分m(0~22位)。浮点数的表示范围为±1.175495×10-38~±3.402823×1038

浮点数的特点是用很小的存储空间(4个字节)可以表示非常大和非常小的数。

2)变量的符号地址。符号地址使用符号来取代绝对地址,可以根据变量的功能定义方便阅读的符号。注意,符号的定义需要用字母开头且不能使用关键字。

根据应用场合的不同,符号分为全局符号和局部符号。

①全局符号。可以定义全局符号的存储区域是I、Q、PI、PQ、M、T、C以及DB、OB、FB、FC。

在程序中,全局符号与绝对地址相对应,所以具有唯一性。在程序中符号显示在双引号内,在STEP7的菜单中,可以选择切换符号地址显示还是绝对地址显示。

②局部符号。局部符号是归属于功能块的。这些符号的定义只能包含字母、数字和下划线。局部符号只有在定义的块中才有效。同样的符号也可以定义在其他块中,但是意义可以完全不同。在程序中局部符号显示在“#”号之后。

3)常数。程序中经常需要实现给变量预置一个常数值,根据数据类型的不同,常数有不同的前缀。

S7-300PLC编程语言的基本数据类型见表3-6。对于其中一些重要的数据表示方法做出以下说明:

①P#为地址指针常数,例如P#M2.0是M2.0的地址。

②S5T#是16位S5时间常数,格式为S5T#aD_bH_cM_dS_eMS。S5T#4S30MS=4s30ms,取值范围为S5T#0~S5T#2H_46M_30S_0MS(9990s),时间增量为10ms。

③C#为计数器常数(BCD码),例如C#250。8位ASCII字符用单引号表示,例如‘ABC’。

④T#为带符号的32位IEC时间常数:T#1D_12H_30M_0S_250MS。

⑤DATE是IEC日期常数,例如D#2004-1-15。取值范围D#1990-1-1~D#2168-12-31。

⑥TOD#是32位实时时间(TimeofDay)常数,例如TOD#23:50:45.300。

3-6 S7-300PLC编程语言的基本数据类型

978-7-111-44245-5-Chapter03-16.jpg

(2)复合数据类型 通过组合基本数据类型和复合数据类型可以生成下面的数据类型:

1)数组(ARRAY),将一组同一类型的数据组合在一起

2)结构(STRUCT),将一组不同类型的数据组合在一起。

3)字符串(STRING),是最多有254个字符(CHAR)的一维数组。

4)日期和时间(DATE_AND_TIME),用于存储年、月、日、时、分、秒、毫秒和星期,占用8个字节,用BCD格式保存。星期天、星期一~星期六的代码为1~7。例如,DT#2004-07-15-12∶3∶15.200为2004年7月15日12时30分15.2秒。

5)用户定义的数据类型UDT(User-Defined Data Types)。在数据块DB和逻辑块的变量声明表中定义复合数据类型。

(3)参数类型 为在逻辑块之间传递参数的形参(Formal Parameter,形式参数)定义的数据类型:

1)TIMER(定时器)和COUNTER(计数器)。对应的实参(Actual Parameter,实际参数)应为定时器或计数器的编号,例如T3,C21。

2)BLOCK(块)。指定一个块用作输入和输出,实参应为同类型的块。

3)POINTER(指针)。指针用地址作为实参,例如P#M50.0。

4)ANY。用于实参的数据类型未知或实参可以使用任意数据类型的情况,占10个字节。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈