9
用户在编写程序时,变量的格式必须与指令的数据类型相匹配。S7系列plc的数据类型主要分为基本数据类型、复合数据类型和参数类型,对于S7 - 1500 PLC,还包括系统数据类型和硬件数据类型。
基本数据类型的操作数通常是32位以内的数据。基本数据类型分为位数据类型、数学数据类型、字符数据类型、定时器数据类型以及日期和时间数据类型。在日期和时间数据类型中,存在**过32位的数据类型;对于S7 - 1500 PLC而言,还增加了许多**过32位的此类数据类型。为方便比较学习,故一并放在基本数据类型中进行介绍。
位数据类型主要有布尔型( Bool)、字节型(Byte)、字型(Word)和双字型( DWord),对于S7 -1500 PLC,还支持长字型(LWord),而S7 - 300/400 PLC仅支持前4种。
在位数据类型中,只表示存储器中各位的状态是0 (FALSE)还是1(TURE)。其长度可以是一位( Bit)、一个字节(Byte,8位)、一个字(Word,16位)、一个双字(Double Word,32位)或一个长字(Long Word,64位),分别对应Bool、Byte、Word、DWord和LWord类型。位数据类型通常用二进制或十六进制格式赋值,如2# 01010101、16# 283C等。需注意的是,一位布尔型数据类型不能直接赋常数值。
位数据类型的常数表示需要在数据之前根据存储单元长度( Byte、Word、DWord、LWord)加上B#、W#、DW#或LW#(Bool型除外),所能表示的数据范围见表1。
表1 位数据类型的数据表示范围
位数据类型的数据表示范围
位数据类型的数据表示范围
对于S7 - 1500 PLC,数学数据类型主要有整数类型和实数类型(浮点数类型)。
整数类型又分为有符号整数类型和无符号整数类型。有符号整数类型包括短整数型( SInt)、整数型(Int)、双整数型(DInt)和长整数型(Llnt);无符号整数类型包括无符号短整数型( USInt)、无符号整数型(UInt)、无符号双整数型(UDInt)和无符号长整数型( ULInt)。对于S7 - 300/400 PLC,仅支持整数型Int和双整数型DInt。
短整数型、整数型、双整数型和长整数型数据为有符号整数,分别为8位、16位、32位和64位,在存储器中用二进制补码表示,较高位为符号位(0表示正数、1表示负数),其余各位为数值位。而无符号短整数型、无符号整数型、无符号双整数型和无符号长整数型数据均为无符号整数,每一位均为有效数值。
实数类型具体包括实数型( Real)和长实数型(LReal),均为有符号的浮点数,分别占用32位和64位,较高位为符号位(0表示正数、1表示负数),接下来的8位(或11位)为指数位,剩余位为尾数位,共同构成实数数值。实数的特点是利用有限的32位或64位可以表示一个很大的数,也可以表示一个很小的数。对于S7 - 300/400 PLC,仅支持实数型Real。
原有的字符数据类型( Char)长度为8 bit,操作数在存储器中占一个字节,以ASCII码格式存储单个字符。常量表示时使用单引号,例如常量字符A表示为‘A’或CHAR#′A′。表2列出了Char数据类型的属性。
表2 Char数据类型的属性
长度/bit 格 式 取值范围 输入值示例
8 ASCII字符 ASCII字符集 'A ',CHAR#′A′
长度/bit
格 式
取值范围
输入值示例
8
ASCII字符
ASCII字符集
'A ',CHAR#′A′
对于S7 - 1500 PLC,还支持宽字符类型(WChar),其操作数长度为16 bit,即在存储器中占用2B,以Unicode格式存储扩展字符集中的单个字符。但只涉及整个Unicode范围的一部分。常量表示时需要加WCHAR#前缀及单引号,例如常量字符a表示为WCHAR#‘a’。控制字符在输入时,以美元符号表示。表3列出了WChar数据类型的属性。
表3 WChar数据类型的属性
长度/bit 格 式 取值范围 输入值示例
16 Unicode字符 $0000~$D7FF WCHAR#'A', WCHAR#'$0041'
长度/bit
格 式
取值范围
输入值示例
16
Unicode字符
$0000~$D7FF
WCHAR#'A', WCHAR#'$0041'
定时器数据类型主要包括时间( Time)和S5时间(S5Time)数据类型。与S7 - 300/400 PLC相比,S7 - 1500 PLC还支持长时间(LTime)数据类型。
时间( Time)数据类型为32位的IEC定时器类型,内容用毫秒(ms)为单位的双整数表示,可以是正数或负数,表示信息包括天(d)、小时(h)、分钟(m)、秒(s)和毫秒( ms)。表4列出了Time数据类型的属性。
表4 Time数据类型的属性
Time数据类型的属性
Time数据类型的属性
S5时间(S5 Time)数据类型变量为16 bit,其中较高两位未用,接下来的两位为时基信息(00表示0. 01 s,01表示0.1 s,10表示1s,11表示10 s),剩余12位为BCD码格式的时间常数,其范围为0~ 999,如图1所示。该格式所表示的时间为时间常数与时基的乘积。S5 Time的常数格式为时间之前加S5T#,例如S5T#16sl00 ms,以时基0.1 s表示的时间常数为161,故对应的变量内容为2#0001 0001 0110 0001。
表5 列出了S5 Time数据类型的取值范围等属性。
表5 S5Time数据类型的属性
S5Time数据类型的属性
S5Time数据类型的属性
S5 Time时间格式
S5 Time时间格式
图1 S5 Time时间格式
长时间( LTime)数据类型为64位IEC定时器类型,操作数内容以纳秒(ns)为单位的长整数表示,可以是正数或负数。表示信息包括天(d)、小时(h)、分钟(m)、秒(s)、毫秒( ms)、微秒(μS)和纳秒(ns)。常数表示格式为时间前加LT#,如LT#11ns。表6列出了LTime数据类型的属性。
间接寻址方法,本文提到的主要是西门子S7-300plc.
1.区域内间接寻址
指针的较高位(*31位)x为0时为区域内的间接寻址,此时区域标示号rrr也为0,地址指针的格式与存储器间接寻址的相同。下面是区域内间接寻址的例子:
L P#5.0 //将间接寻址的指针装入累加器1
LAR1 //将累加器1的内容送AR1
A M[AR1, P#2.3] //AR1中的P#5.0加偏移量P#2.3,对M7.3进行操作
= Q[AR1, P#0.2] //逻辑运算的结果送Q5.2,P#5.0+P#0.2=P#5.2
L MW[AR1, P#19.0] //将MW24装入累加器1
方括号内为操作数的地址,它等于AR1中的地址值P#5.0加上逗号后面的地址偏移量,例如*3条指令中操作数的地址为P#5.0+P#2.3=P#7.3,即操作数为M7.3。
2.区域之间的间接寻址
指针的较高位(*31位)x = 1时为区域间的间接寻址,下面是区域间的间接寻址的例子:
L P#M 6.0 //将M6.0的双字地址装入累加器1
LAR1 //将累加器1的内容送到AR1
L W [AR1,P#20.0] //将MW26的内容传送到累加器1
P#M6.0对应的二进制数为2#1000 0011 0000 0000 0000 0000 0011 0000。因为地址指针P#M6.0已经包含有区域信息(rrr=2#011表示M区),*3条指令“L W[AR1, P#50.0]”没有必要再使用地址标识符M。
用地址指针读写字、字节或双字时,指针中小数点右边的位编号必须为0,否则将会出错。
输入(Input)模块和输出(Output)模块简称为I/O模块,数字量(又称为开关量)输入模块和数字量输出模块简称为DI模块和DO模块,模拟量输入模块和模拟量输出模块简称为AI模块和AO模块,它们统称为信号模块,简称为SM。
信号模块安装在CPU模块的右边,扩展能力较强的CPU可以扩展8个信号模块,以增加数字量和模拟量输入、输出点。
信号模块是系统的眼、耳、手、脚,是联系外部现场设备和CPU的桥梁。输入模块用来接收和采集输入信号,数字量输入模块用来接收从按钮、选择开关、数字拨码开关、限位开关、
接近开关
、光电开关、压力
继电器
等来的数字量输入信号。模拟量输入模块用来接收电位器、测速发电机和各种变送器提供的连续变化的模拟量电流、电压信号,或者直接接收热电阻、热电偶提供的温度信号。
数字量输出模块用来控制
接触器
、电磁阀、电磁铁、指示灯、数字显示装置和报警装置等输出设备,模拟量输出模块用来控制电动调节阀、
变频器
等执行器。
CPU模块内部的工作电压一般是DC5V,而PLC的外部输入/输出信号电压一般较高,例如DC24V或AC220V。从外部引入的尖峰电压和干扰噪声可能损坏CPU中的
元器件
,或使PLC不能正常工作。在信号模块中,用光耦合器、光敏晶闸管、小型继电器等器件来隔离PLC的内部电路和外部的输入、输出电路。信号模块除了传递信号外,还有电平转换与隔离的作用。
3、通信模块
通信模块安装在CPU模块的左边,较多可以添加3块通信模块,可以使用点对点通信模块、PROFIBUS模块、工业远程通信模块、AS-i接口模块和IO-Link模块。
4、SIMATIC HMI精简系列面板
与S7-1200配套的*二代精简面板的64K色高分辨率宽屏显示器的尺寸有4.3in、7in、9in和12in这4种,支持垂直安装,用TIA博途中的WinCC组态。它们有一个RS-422/RS-485接口或一个RJ45以太网接口,还有一个USB 2.0接口。USB接口可连接键盘、鼠标或条形码扫描仪,可用优盘实现数据记录。
5、编程软件
TIA是Totally Integrated Automation(全集成自动化)的简称,TIA博途(TIA Portal)是西门子自动化的全新工程设计软件平台。S7-1200用TIA博途中的STEP 7 Basic(基本版)或STEP 7 Professional(专业版)编程。
数字量输入模块用于连接外部的机械触点和电子数字式传感器,例如光电开关和接近开关等。数字量输入模块将来自现场的外部数字量信号的电平转换为plc内部的信号电平。输入电流一般为数毫安。
图1是直流输入模块的内部电路和外部接线图,图中只画出了一路输入电路,M或N是同一输入组内各内部输入电路的公共点。当图1中的外部电路接通时,光耦合器中的发光二极管( LED)点亮,光敏三极管饱和导通;外部电路断开时,光耦合器中的LED熄灭,光敏三极管截止,信号经背板总线接口传送给CPU模块。
交流输入模块的额定输入电压为AC 120 V或230 V。图2的电路用电容隔离输入信号中的直流成分,用电阻限流,交流成分经桥式整流电路转换为直流电流。外部电路接通时,光耦合器中的发光二极管和显示用的发光二极管点亮,光敏三极管饱和导通。外部电路断开时,光耦合器中的发光二极管熄灭,光敏三极管截止,信号经背板总线接口传送给CPU模块。
数字量输入模块电路
数字量输入模块电路
图1 数字量输入模块电路
数字量输入模块电路
数字量输入模块电路
图2 数字量输入模块电路
直流输入电路的延迟时间较短,可以直接与接近开关、光电开关等电子输入装置连接,DC 24 V是一种安全电压。如果信号线不是很长,PLC所处的物理环境较好,应考虑优先选用DC 24 V的输入模块。交流输入方式适合在有油雾、粉尘的恶劣环境下使用。
数字量输入模块可以直接连接两线式BERO接近开关,后者的输出信号为0状态时,其输出电流(空载电流)不为0。在选型时应**两线式BERO的空载电流小于输入模块允许的静态电流,否则将会产生错误的输入信号。
根据输入电流的流向,可以将输入电路分为源输入电路和漏输入电路。漏输入电路(见图1)的输入回路电流从模块的信号输入端流进来,从模块内部输入电路的公共点M流出去。PNP集电极开路输出的传感器应接到漏输入的数字量输入模块。
在源输入电路的输入回路中,电流从模块的信号输入端流出去,从模块内部输入电路的公共点M流进来。NPN集电极开路输出的传感器应接到源输入的数字量输入模块。
数字量模块的输入/输出电缆的较大长度为1000 m(屏蔽电缆)或600 m(非屏蔽电缆)