1.2 PLC的组成与工作原理

1.2.1 PLC的基本组成

从图1-6可以看出,PLC内部主要由中央处理器(CPU)、存储器、输入接口、输出接口、通信接口和拓展接口等组成。

1.中央处理器

中央处理器由控制器、运算器和寄存器组成,这些电路都集成在一个芯片内。CPU通过数据总线、地址总线和控制总线与存储单元、输入输出接口电路相连接。与一般计算机一样,CPU是PLC的核心,它按PLC中系统程序赋予的功能指挥PLC有条不紊地进行工作。用户程序和数据事先存入存储器中,当PLC处于运行方式时,CPU按循环扫描方式执行用户程序。

图1-6 PLC的结构组成

2.存储器

存储器用于完成系统诊断、命令解释、功能子程序调用管理、逻辑运算、通信及各种参数设定等功能。

3.输入接口

输入接口用来进行输入信号的隔离滤波及电平转换;输入单元接口是PLC获取控制现场信号的输入通道。输入接口电路由滤波电路、光电隔离电路和输入内部电路组成,如图1-7所示。

图1-7 输入接口电路

4.输出接口

输出接口用来对PLC的输出进行放大及电平转换,驱动控制对象。输出接口电路由输出锁存器、电平转换电路及输出功率放大电路组成。PLC功率输出电路有3种形式:继电器输出、晶体管输出和晶闸管输出,如图1-8所示。

5.通信接口

每个S7-300/400 PLC均支持MPI协议。不必添加CP(通信处理器)便可将S7设备连接至MPI网络,如图1-9所示。

图1-8 PLC功率输出电路

a)继电器输出型 b)晶体管输出型 c)晶闸管输出型

图1-9 MPI网络

1.2.2 PLC的工作原理

PLC系统通电后,首先进行内部处理,包括:①系统的初始化,如设置堆栈指针,工作单元清零,初始化编程接口,设置工作标志及工作指针等;②工作状态选择,如编程状态、运动状态等。PLC系统工作过程对用户编程来说影响不大,但是PLC在运行用户程序时的工作过程对于用户编程者来说关系密切,务必引起用户编程人员注意。

严格地讲,一个扫描周期主要包括:为保障系统正常运行的公共操作占用时间,系统与外界交换信息占用时间及执行用户程序占用时间三部分,如图1-10所示。对于用户编程者来说,没有必要详细了解PLC系统的动作过程,但务必了解PLC在运行状态执行用户指令的动作过程。

PLC在运行状态执行用户指令的动作过程可分为3个时间段。第一阶段是输入信号采样阶段;第二阶段是用户指令执行阶段;第三阶段是结果输出阶段。

图1-10 PLC典型的扫描周期

输入信号采样阶段又叫输入刷新(I刷新)阶段,PLC以扫描方式顺序读入外面信号的输入状态(接通或断开状态),并将此状态输入到输入映像存储器中,PLC工作在输入刷新阶段,只允许PLC接受输入口的状态信息,PLC的第二、第三阶段的动作处于屏蔽状态。

用户指令执行阶段:PLC执行用户程序总是根据梯形图的顺序先左后右,从上到下地对每条指令进行读取及解释,并送至输入映像存储器和输出映像存储器中读取输入和输出的状态,结合原来的各软元件的数据及状态进行逻辑运算,运算出每条指令的结果,并马上把结果存入相应的寄存器(如果是输出Q的状态就暂存在输出映像存储器)中,然后再执行下一条指令,直至“END”。在进行用户程序执行阶段,PLC的第一阶段和第三阶段动作是处于屏蔽状态的,即在此时,PLC的输入口信息即使变化,输入数据寄存器的内容也不会改变,输出锁存器的动作也不会改变。

结果输出阶段也叫输出刷新(Q刷新)阶段,当PLC指令执行阶段完成后,输出映像存储器的状态将成批输出到输出锁存寄存器中,输出锁存寄存器对应着PLC硬件的物理输出点,这时才是PLC的实际输出。在Q刷新时,PLC对第一阶段和第二阶段是处于屏蔽状态的。

输入刷新、程序执行及输出刷新构成PLC用户程序的一个扫描周期。PLC内部设置了监视定时器(平时说的看门狗),用来监视每个扫描周期是否超出规定的时间,一旦超过,PLC就停止运行,从而避免了由于PLC内部CPU出现故障使程序运行进入死循环。

1.2.3 PLC的编程语言

1.梯形图Ladder DiagramLAD

梯形图是使用最多的PLC编程语言,如图1-11所示。因与继电器电路很相似,具有直观易懂的特点,很容易被熟悉继电器控制的电气人员所掌握,特别适合于数字量逻辑控制。

图1-11 梯形图程序

2.语句表Statement ListSTL

语句表是类似于计算机汇编语言的一种文本编程语言,如图1-12所示,由多条语句组成一个程序段。语句表适合于经验丰富的程序员使用,可以实现某些梯形图不能实现的功能。

图1-12 语句表程序

3.功能块图Function Block DiagramFBD

功能块图类似于用布尔代数的图形逻辑符号来表示控制逻辑,如图1-13所示,一些复杂的功能用指令框表示,适合有数字电路基础的编程人员使用。功能块图在国内很少有人使用。

图1-13 功能块程序

4.顺序功能图Sequential Function ChartSFC

顺序功能图用来编写顺序控制的程序,如图1-14所示。编写时,工艺过程被划分为若干个顺序出现的步,每步中包括控制输出的动作,从一步到另一步的转换由转换条件来控制,特别适合于生产制造过程。

西门子STEP7中的该编程语言是S7 Graph。

5.结构化文本Structured TextST

结构化文本是为IEC61131-3标准创建的一种专用的高级编程语言,如图1-15所示。与梯形图相比,它可以实现复杂的数学运算,编写的程序非常简洁和紧凑。

图1-14 S7 Graph程序

图1-15 S7 SCL程序

STEP7中该编程语言是S7结构化控制语言(Structured Control Language,SCL),编程结构和C语言、Pascal语言相似,特别适合于习惯使用高级语言编程的人使用。

1.2.4 S7-300/400 PLC的存储区

西门子S7-300/400 PLC的存储区可以分为装载存储区、工作存储区和系统存储区。

1.装载存储器

装载存储器用于保存不包含符号地址和注释的用户程序和系统数据(组态、连接和模块参数等)。有的CPU集成装载存储器,有的可以用微存储器卡(Multi-Media Card,MMC)来扩展,CPU 31xC的用户程序只能装入插入式的MMC。断电时数据保存在MMC存储器中,数据块的内容基本上永久保留。下载程序时,用户程序被下载到CPU的装载存储器,CPU把可执行部分复制到工作存储器,符号表和注释保存在编程设备中。

2.工作存储器

它是集成的RAM存储器,用于存储用户程序和数据,包括组织块、功能、功能块、数据块。为了保证程序执行的快速性和不过多占用工作存储器,只有与程序执行有关的块才会被装入工作存储器。复位CPU的存储器时,工作存储器中数据会被清除,但程序不会被删除。

3.系统存储器

系统存储器是CPU为用户运行程序提供的存储区。系统存储器被划分成多个地址区,常用的存储区有过程映像输入区(I)、过程映像输出区(Q)、外部设备输入区(PI)、外部设备输出区(PQ)、位存储区(M)、定时器(T)、计时器(C)、数据块寄存器(DB/DI)、本地数据寄存器(L)、累加器(ACCU)、地址寄存器(AR)和状态字寄存器等。

1)过程映像输入区(I)又称输入继电器区,在每个扫描周期开始时,CPU将输入模块外部端子的状态读入过程映像输入区,该过程称为输入刷新。在执行程序阶段,CPU不理会新状态值,直到下一个扫描周期开始才读入新状态值。

2)过程映像输出区(Q)又称输出继电器区,在执行程序阶段,产生的各种输出值不是马上送往输出模块,而是先保存在过程映像输出区,等程序执行结束后,CPU马上将过程映像输出区的这些输出值送往输出模块,使之从输出端子产生输出,该过程称为输出刷新。

3)对外部输入/输出设备进行访问,除了可以通过映像区外,还可以通过外部设备输入/输出区(PI/PQ)直接进行访问。但通过外部设备输入/输出区访问时,只能是按照字节、字、双字来存取。由于过程映像区在CPU模块中,所以访问过程映像区要比外部设备输入/输出区速度快得多。

4)位存储区(M)又称辅助继电器,辅助继电器可分为普通型和保持型,普通型继电器在CPU处于停止状态时,其状态全部复位。保持型继电器在CPU处于停止状态时,其状态保持停止前的状态。辅助继电器通常用来保存中间结果。

5)定时器(T)相当于继电器控制系统中的时间继电器。定时器是由位和字组成的复合存储单元,定时器用字单元存储定时时间值,用位单元存储定时器的触点状态。

西门子S7-300/400 PLC的S5定时器有5种,分别是脉冲定时器(SPULSE)、扩展脉冲定时器(SPEXT)、接通延时S5定时器(SODT)、保持型接通延时S5定时器(SODTS)和断开延时定时器(SOFFDT)。定时器有普通型用途和保持型之分,通过STEP7编程软件可以把普通型定义为保持型,或者将保持型定义为普通型。

6)计数器(C)用于计算计数脉冲上升沿的次数,计数器是由位和字组成的复合存储单元,计数器用字单元存储当前计数值,用位单元存储计数器的触点状态。

S7-300/400 PLC的计数器有3种,分别是加计数器、减计数器和加减计数器。

7)数据块可分为共享数据块(DB)和背景数据块(DI),共享数据块用来存放数据,和位存储区使用方法类似,唯一不同的是数据块的存储空间很大。背景数据块直接分配给函数块,作为函数块的静态变量。数据块相当于S7-200/200 SMART PLC中的V区,不同的是共享数据块相当于程序当中直接使用的V区,背景数据块相当于在一些高级功能配置中进行存储器分配时用到的V区,例如S7-200 SMART在做GET/PUT通信时要分配50个字节的V区地址,如图1-16所示。

图1-16 存储器分配地址

8)本地数据寄存器(L)用于存储逻辑块(OB、FB和FC)中使用的临时数据。

9)累加器(ACCU)是用于处理字节、字或双字的寄存器,语句表程序中最为常用。S7-300 PLC有ACC1和ACC2两个累加器,S7-400 PLC有ACC1、ACC2、ACC3和ACC4四个累加器。累加器为32位,可以按字节、字或双字来存取,在按字节或字来存取时,数据都存放于累加器的低端,即以右端对齐为原则。

10)地址寄存器(AR):西门子S7-300/400 PLC中有两个地址寄存器,分别是ARI和AR2,使用地址寄存器可以对各个存储区的存储单元进行寄存器寻址,地址存储器的内容加上偏移量形成指针。

11)状态字寄存器用于存储CPU执行指令后的状态,状态字寄存器是一个16位寄存器,但它只用到了低9位(高7位未定义),状态字寄存器各位的功能如图1-17所示。状态字寄存器的某些位用于判断某些指令是否执行和以什么样的方式执行,执行指令时可能改变状态中的某些位。

图1-17 状态字寄存器各位的功能

状态字寄存器的第0位为首次检测位(FC)。CPU对梯形图的第一条指令进行检查,称为首次检查。首次检查位在开始执行首次检查时总是为0,在逻辑串指令执行过程中首次检查位总是为1,逻辑执行完后会将首次检查位清零。首次检查的结果保存在RLO位(第1位),首次检查后的RLO位状态称为首次检查结果。

状态字寄存器的第1位为逻辑结果状态位(RLO)。当CPU执行逻辑指令或比较指令时,执行的结果保存在RLO位,如果RLO=1,表示有能流流到运算点;如果RLO=0,则表示无能流流到运算点。

状态字寄存器的第2位为状态位(STA)。执行位逻辑指令时,STA位值总是与该位的值一致。

状态字寄存器的第3位为或位(OR)。在先逻辑“与”后逻辑“或”的逻辑运算中,OR位暂时保存逻辑“与”的操作结果,以便进行后面的逻辑“或”运算,在执行其他指令时,OR位会被清零。

状态字寄存器的第4位为溢出位(OV)。在执行算术运算或浮点数比较指令时,如果出现错误(如溢出、非法操作和不规范的格式),溢出位被置1,后面的同类指令执行结果正常时,该位会清零。

状态字寄存器的第5位称为溢出状态保持位(OS)。溢出存储位是与OV位一起被置位的,而且在更新算术指令之后,它能够保持这种状态,也就是说,它的状态不会由于下一个算术指令的结果而改变。这样,即使是在程序的后面部分,也还有机会判断数字区域是否溢出或者指令是否含有无效实数。OS位只有通过如下命令进行复位:JOS(若OS=1,则跳转)命令、块调用命令和块结束命令。

状态字寄存器的第6、7位为组合状态位(CC0、CC1)。这两位以状态组合的形式反映了累加器1在CPU执行数学运算函数指令的结果、比较指令的结果,字逻辑指令的结果,移位指令或循环移位指令移出位的状态。

状态字寄存器的第8位为二进制结果位(BR)。它将字处理程序与位处理联系起来,在一段既有位操作又有字操作的程序中,用于表示字逻辑是否正确。将BR位加入程序后,无论字操作结果如何,都不会造成二进制逻辑链中断。在梯形图的方块指令中,BR位与ENO位(使能输出位)有对应关系,用于表明方块指令是否被正确执行:如果执行出现了错误,BR位为0,ENO位也为0;如果功能被正确执行,BR位为1,ENO位也为1。在用户编写的FB/FC程序中,应该对BR位进行管理,函数块正确执行后,使BR位为1,否则使其为0。使用SAVE指令将RLO存入BR中,从而达到管理BR位目的。

S7-300/400的S5定时器和计数器数量取决于PLC的型号,越是高级的型号支持得越多,低级的型号相对支持得少。

当普通的定时器或计数器不够用时,也可以使用IEC定时器和IEC计数器,IEC定时器和计数器分别是:加计数器CTU、减计数器CTD、加减计数器CTUD、脉冲定时器TP、通电延时定时器TON和断电延时定时器TOF。IEC定时器和计时器在使用数量上没有限制。