工业控制系统网络安全实战
上QQ阅读APP看书,第一时间看更新

1.2.1 PLC

PLC是一种专门为在工业环境下应用而设计的数字运算操作电子系统。它采用一种可编程的存储器,在其内部存储执行逻辑运算、顺序控制、定时、计数和算术运算等操作的指令,通过数字式或模拟式的输入输出来控制各种类型的机械设备或生产过程。

1.PLC硬件结构

PLC的结构多种多样,但其组成基本相同,都以微处理器为核心,通常包括电源模块、中央处理单元(CPU)、存储器(RAM、ROM)、输入/输出单元(I/O)、通信接口等部分。

(1)电源模块

有些PLC中的电源是与CPU合二为一的,有些是分开的,其主要用途是为PLC的CPU和I/O提供工作电源,有些也为输入电路提供24V的工作电源。电源如果为交流则通常为220VAC或110VAC,若为直流则常为24V,少数直流为12V。

(2)中央处理单元

CPU是PLC的控制中枢。它按照PLC系统程序赋予的功能接收并存储从编程器输入的用户程序和数据,负责检查电源、存储器、I/O以及警戒定时器的状态,并能诊断用户程序中的语法错误。

为了进一步提高PLC的可靠性,近年来对大型PLC还采用了双CPU构成冗余系统,或采用三CPU的表决式系统。这样,即使某个CPU出现故障,整个系统也能正常运行。

(3)存储器

存储器主要用于存放系统程序、用户程序及工作数据。

(4)输入/输出单元

PLC主要通过各种输入/输出(I/O)模块与外界联系,按I/O点数确定模块规格及数量。I/O模块可多可少,但其最大数量受CPU所能管理的基本配置,即最大的底板或机架槽数所限。I/O模块集成了PLC的I/O电路,其输入寄存器反映输入信号状态,输出点反映输出锁存器状态。

输入单元用来获取输入组件的信号动作,并通过内部总线将数据送入存储器,由CPU处理驱动程序的指令部分。

输出单元是用来驱动外部负载的接口,主要原理是由CPU处理已写入PLC的程序指令,进而控制外部负载,如指示灯、接触器、继电器、阀门等。

PLC输出模块在工业环境中用来控制制动器、气阀及电动机等。

(5)通信

现在PLC大多具有可扩展通信网络模块,简单的PLC以BUS电缆或RS-232方式进行通信,较高端的PLC会采用USB或以太网方式进行通信。PLC通信协议可分为RS-232、RS-422、RS-432、RS-485、IEEE 1394、IEEE 488(GPIB),其中RS-432最为少见。目前,国际上最常用的通信协议为Modbus-ASCII模式及Modbus-RTU模式,此为Modicon公司所制订的通信协议。PROFIBUS则为西门子公司所制定。日本三菱电机则推出了CC-LINK通信协议。

2.软件系统

PLC是软硬件一体设备,各供应商都会设计自己的软件系统,如西门子的step7、通用电气的IFIX。当然也有工业界的安卓系统为PLC提供内核软件的研发,如德国3S公司(Smart Software Solutions GmbH)的CoDeSys是全球最著名的PLC软件平台,被很多硬件厂家支持。同时还有KW、infoteam、ISaGRAF公司提供类似产品。

下面以CoDeSys为例,介绍PLC的软件系统。CoDeSys分为两部分。

1)CoDeSys IDE,即CoDeSys集成开发环境,支持Windows和Linux系统,由终端用户使用。它支持IEC 61131-3标准下的IL、ST、FBD、LD、CFC、SFC六种PLC编程语言,用户可以在同一项目中选择不同的语言编辑子程序、功能模块等。

2)CoDeSys Runtime,即硬件平台系统。需要设备制造商与3S公司共同完成。

(1)PLC内部运作方式

虽然PLC使用的阶梯图程序中往往用到许多继电器、计时器和计数器等的名称,但PLC内部并非具有这些硬件实体,而是以存储器与编程方式进行逻辑控制,并借由输出组件连接外部机械设备完成实体控制,因此能大大减少控制器所需的硬件空间。实际上PLC运行阶梯图程序的方式是先将代码逐行扫描读入CPU后运行控制动作。整个扫描过程包括三大步骤:输入采样阶段、用户程序执行阶段、输出状态更新阶段。

1)输入采样阶段。在该阶段,PLC以扫描方式依次读入所有输入状态和数据,并将它们存入I/O映象区中的相应单元。输入采样结束后,转入用户程序执行和输出状态更新阶段。

2)用户程序执行阶段。在该阶段,PLC总是按由上而下的顺序扫描用户程序(梯形图)。扫描每一条梯形图时,又总是先扫描梯形图左边由各触点构成的控制线路,并按先左后右、先上后下的顺序对由触点构成的控制线路进行逻辑运算,然后根据逻辑运算的结果更新该逻辑线圈在系统RAM存储区中对应位的状态,或者更新该输出线圈在I/O映象区中对应位的状态,或者确定是否要执行该梯形图所规定的特殊功能指令。

3)输出状态更新阶段。当扫描用户程序结束后,PLC就进入输出状态更新阶段。在此期间,CPU按照I/O映象区内对应的状态和数据更新所有的输出锁存电路,再经输出电路驱动相应的外设。这才是PLC的真正输出。

这三个步骤称为PLC的扫描周期,其完成所需的时间称为PLC的反应时间,PLC输入信号的间隔时间若小于此反应时间,则有误读的可能性。每次程序运行后与下一次程序运行前,输出与输入状态会被更新一次,因此称此种运作方式为输出输入端“程序结束再生”。

(2)外部设备

外部设备是PLC系统不可分割的一部分,它有四大类。

编程设备。有简易编程器和智能图形编程器,用于编程、系统设置、监控PLC及PLC所控制系统的工作状况。编程器是PLC开发应用、监测运行、检查维护不可缺少的器件,但它不直接参与现场控制运行。

监控设备。包括数据监视器和图形监视器。直接监视数据或通过画面监视数据。

存储设备。有存储卡、存储磁带、软盘或只读存储器,用于永久性地存储用户数据,使用户程序不丢失,如EPROM、EEPROM写入器等。

输入输出设备。用于接收信号或输出信号,一般有条码读入器、输入模拟量的电位器、打印机等。

(3)程序设计

PLC的编程语言与一般计算机编程语言相比具有明显的特点,它既不同于高级语言,也不同于一般的汇编语言,既要易于编写,又要易于调试。目前,还没有一种对各厂家产品都能兼容的编程语言。IEC 61131-3是一个国际标准,它规范了PLC相关的软硬件,其最终目的是让PLC用户在不更改软件设计的情况下可以轻易更换PLC硬件。IEC 61131-3主要提供了六种编程语言,分别如下。

1)指令表IL或SL(Instruction List或Statement List)。类似汇编语言的描述方式。

SL示例程序如下:

2)结构式文本(Structured Text, ST)。类似Pascal与C语言的语法,适合实现较复杂的算法,调试上也比阶梯图容易得多。

ST示例程序如下:

3)梯形图(Ladder Diagram, LD)。类似于传统上以继电器控制接触器的阶梯图。梯形图是通过连线把PLC指令的梯形图符号连接在一起的连通图,用以表达所使用的PLC指令及其前后顺序,它与电气原理图很相似。

LD示例程序如下:

4)顺序功能流程图(Sequential Function Chart, SFC)。类似于流程设计(Flow Design),由流程图中的步骤组合而成,主要用来规划动作顺序。所谓步序式控制,即一步一步控制,而步骤之间是有关联性,有顺序性的,必须有上一个动作(STL),才会引导(SET)下一个动作(STL)。

SFC示例程序如下:

5)功能区块图(Function Block Diagram, FBD)。以画电路图的方式来写PLC程序。常用的程序及回路可通过FB(功能区块)的创建轻易地重复利用。

FBD示例程序如下:

其他一些高端的PLC还具有与计算机兼容的C语言、BASIC语言、专用的高级语言(如西门子公司的GRAPH5、三菱公司的MELSAP、富士电机的Micrex-SX系列),还有用布尔逻辑语言、计算机兼容的汇编语言等。