1.2 PLC的结构、性能及寻址方式
1.2.1 S7-200系列PLC的外部结构
1.PLC各部件的功能
S7-200系列PLC有CPU 21X和CPU 22X两代产品,外部结构如图1-6所示。它是整体式PLC,它将输入/输出模块、CPU模块、电源模块均装在一个机壳内,当系统需要扩展时,可选用需要的扩展模块与基本单元(主机)连接。
图1-6 S7-200系列PLC外部结构
① 输入接线端子:用于连接外部控制信号,在底部端子盖下是输入接线端子和为传感器提供的24 V直流电源。
② 输出接线端子:用于连接被控设备,在顶部端子盖下是输出接线端子和PLC的工作电源。
③ CPU状态指示灯:CPU状态指示灯有SF、STOP、RUN 3个,其作用如下所述。
SF:系统故障指示灯。当系统出现严重的错误或硬件故障时亮。
STOP:停止状态指示灯。编辑或修改用户程序,通过编程装置向 PLC 下载程序或进行系统设置时此灯亮。
RUN:运行指示灯。执行用户程序时亮。
④ 输入状态指示灯:用来显示是否有控制信号(如控制按钮、行程开关、接近开关、光电开关等数字量信号)接入PLC。
⑤ 输出状态指示灯:用来显示PLC是否有信号输出到执行设备(如接触器、电磁阀、指示灯等)。
⑥ 扩展接口:通过扁平电缆线,连接数字量I/O扩展模块、模拟量I/O扩展模块、热电偶模块和通信模块等。
⑦ 通信接口:支持PPI、MPI通信协议,有自由口通信能力。用以连接编程器、PLC网络等外部设备。
2.输入/输出接线
输入/输出模块电路是PLC与被控设备间传递输入/输出信号的接口部件。各输入/输出点的通/断状态用LED显示,外部接线就接在PLC输入/输出接线端子上。
S7-200系列CPU 22X主机的输入回路为直流双向光耦合输入电路,输出有继电器和场效应晶体管两种类型,用户可根据需要选用。
(1)输入接线
CPU 224的主机共有14个输入点(I0.0~I0.7、I1.0~I1.5)和10个输出点(Q0.0~Q0.7、Q1.0~Q1.1)。
(2)输出接线
CPU 224的输出电路有场效应晶体管输出电路和继电器输出电路两种供用户选用。在场效应晶体管输出电路中,PLC由24 V直流电源供电,负载采用了MOSFET功率器件,所以只能用直流电源为负载供电。输出端分成两组,每一组有1个公共端,共有1L、2L两个公共端,可接入不同电压等级的负载电源。输入/输出接线图如图1-7所示。
图1-7 CPU 224输入/输出接线图
1.2.2 S7-200系列PLC的性能
1.CPU模块性能
PLC的CPU性能主要描述PLC的存储器能力、指令运行时间、各种特殊功能等。这些技术性指标是选用PLC的依据,S7-200 PLC的CPU的主要技术指标如表1-1所示。
表1-1 CPU 22X主要技术指标
续表
2.I/O模块性能
PLC的I/O模块性能主要是描述I/O模块电路的电气性能,如电流、电压的大小,通断时间,隔离方式等。CPU 22X系列PLC的输入特性如表1-2所示,输出特性如表1-3所示。
表1-2 CPU 22X系列PLC的输入特性
表1-3 CPU 22X系列PLC的输出特性
续表
1.2.3 PLC的编程语言与程序结构
1.PLC的编程语言
由于各厂家PLC的编程语言和指令的功能和表达方式均不一样,有的甚至有相当大的差异,因此各厂家的PLC互不兼容。IEC于1994年5月公布了PLC标准IEC 61131,它由5部分组成,其中的第3部分(IEC 61131-3)是PLC的编程语言标准。
IEC 61131-3详细地说明了下述5种编程语言,如图1-8所示。
图1-8 PLC的编程语言
① 顺序功能图(Sequential Function Chart,SFC)。
② 梯形图(Ladder Diagram,LD)。
③ 功能块图(Function Block Diagram,FBD)。
④ 语句表(Instruction List,IL)。
⑤ 结构文本(Structured Text,ST)。
标准中有两种图形语言—梯形图和功能块图,还有两种文字语言——语句表和结构文本,而顺序功能图是一种结构块控制程序流程图。
(1)顺序功能图
顺序功能图是一种位于其他编程语言之上的图形语言,用来编制顺序控制程序。顺序功能图提供了一种组织程序的图形方法,步、转换和动作是顺序功能图中的3种主要组件。
(2) 梯形图
梯形图是使用最多的 PLC 图形编程语言。梯形图与继电器—接触器控制系统的电路图相似,具有直观易懂的优点,非常容易被熟悉继电器控制的技术人员掌握,特别适用于数字量逻辑控制。
梯形图由触点、线圈和用方框表示的功能块组成。触点代表逻辑输入条件,如外部的开关、按钮、内部条件等。线圈通常代表逻辑输出结果,用来控制外部的指示灯、接触器、内部的输出条件等。功能块用来表示定时器、计数器或数学运算等指令。
在分析梯形图的逻辑关系时,为了借用继电器电路图的分析方法,可以想象左右两侧垂直电源线之间有一个左正右负的直流电源电压,S7-200 PLC的梯形图中省略了右侧的垂直电源线,如图1-9所示。
当图1-9中的I0.0或M0.0的触点接通时,有一个假想的“能流”流过Q0.0线圈。利用能流这一概念,可以帮助我们更好地理解和分析梯形图,而能流只能是从左向右流动。
触点和线圈等组成的独立电路称为网络(Network),用编程软件生成的梯形图和指令表程序中有网络编号,允许以网络为单位,给梯形图加注释。本书为节省篇幅,一般没有标注网络号。在网络中,程序的逻辑运算按从左至右的方向执行,与能流的方向一致。各网络按从上至下的顺序执行,当执行完所有的网络后,下一个扫描周期返回到最上面的网络重新执行。使用编程软件可以直接生成和编辑梯形图。
(3)功能块图
功能块图是一种类似于数字逻辑电路的编程语言。该编程语言用类似与门、或门的方框来表示逻辑运算关系,方框的左侧为逻辑运算的输入变量,右侧为输出变量,输入、输出端的小圆圈表示“非”运算,方框用导线连接在一起,能流就从左向右流动。图1-10中的控制逻辑与图1-9中的控制逻辑完全相同。
图1-9 梯形图与语句表
图1-10 功能块图
(4)语句表
语句表是一种与计算机的汇编语言中的指令相似的助记符表达式,由指令组成语句表程序。
(5)结构文本
结构文本是一种专用的高级编程语言,与梯形图相比,它能实现复杂的数学运算,编写的程序非常简洁和紧凑。
(6)编程语言的相互转换和选用
在S7-200 PLC编程软件中,用户常选用梯形图和语句表编程,编程软件可以自动切换用户程序使用的编程语言。
梯形图中输入信号与输出信号之间的关系一目了然,易于理解,而语句表程序却较难阅读,其中的逻辑关系很难一眼看出。在设计复杂的数字量控制程序时建议使用梯形图语言。但语句表输入方便快捷,还可以为每一条语句加上注释,在设计通信、数学运算等高级应用程序时,建议使用语句表。
梯形图的一个网络中只能有一块独立电路。在语句表中,几块独立电路对应的语句可以放在一个网络中,但是这样的网络不能转换为梯形图,而梯形图程序一定能转换为语句表程序。
2.S7-200的程序结构
S7-200系列PLC的CPU控制程序由主程序、子程序和中断程序组成。
(1)主程序
主程序是程序的主体,每一个项目都必须并且只能有一个主程序。在主程序中可以调用子程序和中断程序。
主程序通过指令控制整个应用程序的执行,每个扫描周期都要执行一次主程序。因为各个程序都存放在独立的程序块中,各程序结束时不需要加入无条件结束指令或无条件返回指令。
(2)子程序
子程序仅在被其他程序调用时执行。同一个子程序可以在不同的地方被多次调用。使用子程序可以简化程序代码和减少扫描时间。
(3)中断程序
中断程序用来及时处理与用户程序的执行时序无关的操作,或者不能事先预测何时发生的中断事件。中断程序不是由用户程序调用,而是在中断事件发生时由操作系统调用。中断程序是用户编写的。
1.2.4 S7-200系列PLC的内存结构及寻址方式
PLC的内存分为程序存储区和数据存储区两部分。程序存储区用来存放用户程序,它由机器按顺序自动存储程序。数据存储区用来存放输入/输出状态及各种中间运行结果。本节主要介绍 S7-200系列PLC的数据存储区及寻址方式。
1.内存结构
S7-200系列PLC的数据存储区按存储器存储数据的长短可划分为字节存储器、字存储器和双字存储器3类。字节存储器有7个,如输入映像寄存器(I)、输出映像寄存器(Q)、变量存储器(V)、位存储器(M)、特殊存储器(SM)、顺序控制继电器(S)、局部变量存储器(L);字存储器有4个,如定时器(T)、计数器(C)、模拟量输入映像寄存器(AI)和模拟量输出映像寄存器(AQ);双字存储器有2个,如累加器(AC)和高速计数器(HC)。
(1)输入映像寄存器
输入映像寄存器是PLC用来接收用户设备发来的输入信号的。输入映像寄存器与PLC的输入点相连,如图1-11(a)所示。编程时应注意,输入映像寄存器的线圈必须由外部信号来驱动,不能在程序内部用指令来驱动。因此,在程序中输入映像寄存器只有触点,而没有线圈。
图1-11 输入/输出映像寄存器示意图
输入映像寄存器地址的编号范围为I0.0~I15.7。
I、Q、V、M、SM、L均可以按字节、字、双字存取。
(2)输出映像寄存器
输出映像寄存器用来存放CPU执行程序的数据结果,并在输出扫描阶段,将输出映像寄存器的数据结果传送给输出模块,再由输出模块驱动外部的负载,如图1-11(b)所示。若梯形图中 Q0.0的线圈通电,对应的硬件继电器的常开触点闭合,使接在标号Q0.0端子的外部负载通电,反之则外部负载断电。
在梯形图中每一个输出映像寄存器常开和常闭触点可以多次使用。
(3)变量存储器
变量存储器用来在程序执行过程中存放中间结果,或者用来保存与工序或任务有关的其他数据。
(4)位存储器
位存储器(M0.0~M31.7)类似于继电器—接触器控制系统中的中间继电器,用来存放中间操作状态或其他控制信息。虽然名为“位存储器”,但是也可以按字节、字、双字来存取。
S7-200系列PLC的M存储区只有32个字节(即MB0~MB31)。如果不够用可以用V存储区来代替M存储区。可以按位、字节、字、双字来存取V存储区的数据,如V10.1、VB0、VW100、VD200等。
(5)特殊存储器
特殊存储器用于CPU与用户之间交换信息,例如SM0.0一直为1状态,SM0.1仅在执行用户程序的第一个扫描周期为1状态。SM0.4和SM0.5分别提供周期为1 min和1 s的时钟脉冲。SM1.0、SM1.1和SM1.2分别为零标志位、溢出标志位和负数标志位,各特殊存储器的功能见附表1。
(6)顺序控制继电器
顺序控制继电器又称状态组件,与顺序控制继电器指令配合使用,用于组织设备的顺序操作,以实现顺序控制和步进控制。可以按位、字节、字或双字来取S位,编址范围为S0.0~S31.7。
(7)局部变量存储器
S7-200 PLC有64个字节的局部变量存储器,编址范围为LB0.0~LB63.7,其中60个字节可以用作暂时存储器或者给子程序传递参数。如果用梯形图编程,编程软件保留这些局部变量存储器的后4个字节。如果用语句表编程,可以使用所有的64个字节,但建议不要使用最后4个字节,最后4个字节为系统保留字节。
局部变量存储器和变量存储器很相似,主要区别在于局部变量存储器是局部有效的,变量存储器则是全局有效。全局有效是指同一个存储器可以被任何程序(如主程序、中断程序或子程序)存取,局部有效是指存储区和特定的程序相关联。
(8)定时器
PLC中定时器相当于继电器系统中的时间继电器,用于延时控制。S7-200 PLC有3种定时器,它们的时基增量分别为1 ms、10 ms和100 ms,定时器的当前值寄存器是16位有符号的整数,用于存储定时器累计的时基增量值(1~32 767)。
定时器的地址编号范围为T0~T255,它们的分辨率和定时范围各不相同,用户应根据所用CPU型号及时基,正确选用定时器编号。
(9)计数器
计数器主要用来累计输入脉冲个数,其结构与定时器相似,其设定值在程序中赋予。CPU提供了3种类型的计数器,分别为加计数器、减计数器和加/减计数器。计数器的当前值为16位有符号整数,用来存放累计的脉冲数(1~32 767)。计数器的地址编号范围为C0~C255。
(10)累加器
累加器是用来暂存数据的寄存器,可以同子程序之间传递参数,以及存储计算结果的中间值。S7-200 CPU中提供了4个32位累加器AC0~AC3。累加器支持以字节、字和双字的存取。按字节或字为单位存取时,累加器只使用低8位或低16位,数据存储长度由所用指令决定。
(11)高速计数器
CPU 224 PLC提供了6个高速计数器(每个计数器最高频率为30 kHz),用来累计比CPU扫描速率更快的事件。高速计数器的当前值为双字长的符号整数,且为只读值。高速计数器的地址由符号HC和编号组成,如HC0,HC1,…,HC5。
(12)模拟量输入映像寄存器
模拟量输入映像寄存器用于接收模拟量输入模块转换后的16位数字量,其地址编号为AIW0, AIW2…模拟量输入映像寄存器AI的数据为只读数据。
(13)模拟量输出映像寄存器
模拟量输出映像寄存器用于暂存模拟量输出模块的输入值,该值经过模拟量输出模块(D/A)转换为现场所需要的标准电压或电流信号,其地址编号以偶数表示,如AQW0,AQW2…模拟量输出值是只写数据,用户不能读取模拟量输出值。
2.寻址方式
(1)编址方式
在计算机中使用的数据均为二进制数,二进制数的基本单位是1个二进制位,8个二进制位组成1个字节,2个字节组成一个字,2个字组成一个双字。
存储器的单位可以是位、字节、字、双字,编址方式也可以是位、字节、字、双字。存储单元的地址由区域标识符、字节地址和位地址组成。
位编址:寄存器标识符+字节地址+位地址,如I0.1、M0.0、Q0.3等。
字节编址:寄存器标识符+字节长度(B)+字节号,如IB0、VB10、QB0等。
字编址:寄存器标识符+字长度(W)+起始字节号,如VW0表示VB0、VB1这两个字节组成的字。
双字编址:寄存器标识符+双字长度(D)+起始字节号,如VD20表示由VW20、VW21这两个字组成的双字或由VB20、VB21、VB22、VB23这4个字节组成的双字。
字节、字、双字的编址方式如图1-12所示。
(2)寻址方式
S7-200系列PLC指令系统的寻址方式有立即寻址、直接寻址和间接寻址。
① 立即寻址。对立即数直接进行读写操作的寻址方式称为立即寻址。立即数寻址的数据在指令中以常数形式出现,常数的大小由数据的长度(二进制数的位数)决定。不同数据的取值范围如表1-4所示。
图1-12 字节、字、双字的编址方式
表1-4 数据大小范围及相关整数范围
S7-200系列PLC中,常数值可为字节、字、双字,存储器以二进制方式存储所有常数。指令中可用二进制、十进制、十六进制或ASCII码形式来表示常数,其具体格式如下所述。
二进制格式:在二进制数前加2#表示,如2#1010。
十进制格式:直接用十进制数表示,如12345。
十六进制格式:在十六进制数前加16#表示,如16#4E4F。
ASCII码格式:用单引号ASCII码文本表示,如‘goodbye'。
② 直接寻址。直接寻址是指在指令中直接使用存储器的地址编号,直接到指定的区域读取或写入数据,如I0.1、MB10、VW200等。
③ 间接寻址。S7-200 PLC允许用指针对下述存储区域进行间接寻址:I、Q、V、M、S、AI、AQ、T(仅当前值)和C(仅当前值)。间接寻址不能用于位地址、HC或L。
在使用间接寻址之前,首先要创建一个指向该位置的指针,指针为双字值,用来存放一个存储器的地址,只能用V、L或AC作指针。建立指针时必须用双字传送指令(MOVD),将需要间接寻址的存储器地址送到指针中,如“MOVD&VB200,AC1”。指针也可以为子程序传递参数。&VB200表示VB200的地址,而不是VB200中的值,该指令的含义是将VB200的地址送到累加器AC1中。
指针建立好后,可利用指针存取数据。用指针存取数据时,在操作数前加“*”,表示该操作数为1个指针,如“MOVW *AC1,AC0”表示将 AC1中的内容为起始地址的一个字长的数据(即VB200、VB201的内容)送到AC0中,传送示意图如图1-13所示。
图1-13 使用指针的间接寻址
S7-200系列PLC的存储器寻址范围如表1-5所示。
表1-5 S7-200系列PLC的存储器寻址范围