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 不同进制的数的表示方法
(续)
2.数据类型
数据类型决定了以什么方式或格式理解或访问存储区中的数据。S7-300有三种数据类型:
1)基本数据类型。定义不超过32位的数据。
2)复式数据类型。定义超过32位或由其他数据类型组成的数据。
3)参数类型。定义传给FB和FC的参数。
(1)基本数据类型 STEP7软件中使用的基本数据类型有三种:以绝对地址表示的变量、以符号地址表示的变量和常数。
要访问一个变量,必须要找到它在存储空间中的位置,在STEP7中,I/O信号、位存储变量、定时器、计数器等都可以通过绝对地址和符号地址两种方式来按访问。在STEP7指令中需要访问变量时,可以任意定义为绝对地址或符号地址,二者在软件中还可以相互转换显示。
1)变量的绝对地址。变量的绝对地址是在STEP7中硬件组态时设置的输入、输出地址。STEP7中的变量绝对地址的定义遵循如下形式:
变量的绝对地址=关键字+地址数据
STEP7中常用的绝对地址的关键字见表3-5。
表3-5 绝对地址关键字
其中,I、Q、M、L有位寻址、字节寻址、字寻址和双字寻址几种方法。PI、PQ有字节寻址、字寻址、双字寻址几种方式。图3-7所示为对同一块存储区域用不同方式寻址的区别。需要注意,在MW100中,MB100是高字节,MB101是低字节;在MD100中,MB100是最高字节,MB103是最低字节,这与在汇编语言中的习惯用法不同。
图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。
图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输入输出值大多为整数,若用浮点数处理这些数据时需要进行整数和浮点数之间的转换。浮点数的运算速度比整数运算的慢。
图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编程语言的基本数据类型
(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个字节。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。