1.3 PLC的基本结构、工作原理与编程语言

1.3.1 PLC的基本结构和各部分作用

PLC是计算机技术和继电器控制概念相结合的产物,结构与一般微型计算机系统基本相同,只不过它具有更强的与工业过程相连接的I/O接口,具有更适用于控制要求的编程语言,具有更适应工业环境的抗干扰能力。它由硬件系统和软件系统两大部分组成,硬件系统又分为CPU、存储器、电源、I/O模块、扩展接口模块、外部设备六个部分,如图1-1所示。

图1-1 PLC的组成

1.中央处理单元

类似通用计算机,中央处理单元(Central Processing Unit, CPU)是PLC的核心部分和控制中枢,由微处理器和控制接口电路组成。

微处理器由大规模集成电路的微处理芯片构成,包括逻辑运算和控制单元,以及一些用于CPU处理数据过程中暂时保存数据的寄存器,共同完成运算和控制任务。

微处理器能实现逻辑运算,协调控制系统内部各部分的工作,分时、分渠道地执行数据的存取、传送、比较和变换,完成用户程序所设计的任务,并根据运算结果控制输出设备。

控制接口电路是微处理器与主机内部其他单元进行联系的部件,主要有数据缓冲、单元选择、信号匹配、中断管理等功能。微处理器通过它来实现与各个内部单元之间可靠的信息交换和最佳的时序配合。

2.存储器单元

内存举足轻重,多采用半导体存储器单元,参数有存储容量和存取时间等,按物理性能可分为随机存储器(Random Assess Memory, RAM)和只读存储器(Read Only Memory, ROM)。

随机存储器(RAM)最为重要,又称为读/写存储器,要求存取速度快,主要用来存储I/O状态和计数器、定时器以及系统组态的参数。由一系列寄存器阵组成,每个寄存器代表一个二进制数,开始工作时的状态是随机的,置位后状态确定。为防止断电后数据丢失,由锂电池支持数据保护,一般为五年,电池电压降低时由欠电压指示灯发光来提醒用户。

只读存储器(ROM)是一种只读取、不写入的记忆体,存放基本程序和永久数据。制造ROM时,信息(程序或数据)就被存入并永久保存(掉电不丢失)。只读存储器有两种:一种是不可擦除ROM,只能写入一次、不能改写;另一种是可擦除ROM,以紫外线照射EPROM芯片上的透明窗口就能擦除芯片内的全部内容,并可重写,E2PROM也称为EEPROM,即可电擦除并再写入。这两种存储器的信息可保留十年左右。

相对于其他类型的半导体技术而言,铁电存储器具有一些独一无二的特性,它在RAM和ROM间搭起了一座跨越沟壑的桥梁,能兼容RAM的一切功能,并又和ROM技术一样具有非易失性,是一种非易失性的RAM。

各种PLC的最大寻址空间是不同的,但PLC存储空间按用途都可分为三个区域:

(1)系统程序存储区 系统程序存储区中存放着PLC厂家编写的系统程序,包括监控程序、管理程序、命令解释程序、功能子程序、诊断子程序以及各种系统参数等,固化在EPROM中。相当于PC的操作系统,和硬件一起决定PLC的性能。

(2)系统RAM存储区 系统RAM存储区包括I/O映像区、临时参数区以及系统软设备存储区。

1)I/O映像区:由于PLC投入运行后,只是在输入采样阶段才依次读入各输入状态和数据,在输出刷新阶段才将输出的状态和数据送至相应的外部设备。因此需要一定数量的存储单元(RAM)以存放I/O的状态和数据,这些单元称作I/O映像区。一个开关量占一个位(bit),一个模拟量占一个字(16bit)。

2)临时参数区:存放CPU的组态数据,如输入/输出CPU组态、设置输入滤波、脉冲捕捉、输出表配置、定义存储区保持范围、模拟电位器设置、高速计数器配置、高速脉冲输出配置、通信组态等,这些数据不断变化、不需长久保存,采用随机读写存储器(RAM)即可。

3)系统软设备存储区:PLC内部各类软设备,如逻辑线圈、数据寄存器、定时器、计数器、变址寄存器、累加器等的存储区,分为有、无失电保持的存储区域,前者在PLC断电时,由内部锂电池供电保持数据;后者当PLC断电时,数据被清零。

逻辑线圈与开关输出一样,每个逻辑线圈占用系统RAM存储区中的一个位,但不能直接驱动外设,只供用户在编程中使用。另外不同的PLC还提供数量不等的特殊逻辑线圈,具有不同的功能。

数据寄存器与模拟量I/O一样,每个数据寄存器占用系统RAM存储区中的一个字(16bit),不同的PLC还提供数量不等的特殊数据寄存器,具有不同的功能。

(3)用户程序存储区 用户程序存储区存放用户编写的应用程序,为调试、修改方便,先把用户程序存放在随机存储器(RAM)中,经运行考核、修改完善,达到设计要求后,再固化到EPROM中,替代RAM。

3.电源单元

电源单元是PLC的电源供给部分,把外部供应的电源变换成系统内部各单元所需的电源。PLC电源的交流输入端一般都设有脉冲RC吸收电路或二极管吸收电路,故允许工作交流输入电压范围比较宽,抗干扰能力比较强。一般交流电压波动在±10%~±15%的范围内,可不采取其他措施,而将PLC直接连接至交流电网。

除需要交流电源外,PLC还需要直流电源。一般直流5V供PLC内部使用,直流24V供I/O端和各种传感器使用,有的还为开关量输入单元连接的现场无源开关提供直流电源。应注意设计选择时保证直流不过载。

电源单元还包括掉电保护电路(配有大容量电容)和后备电池电源,以保持RAM在外部电源断电后存储的内容还可保持50h。PLC的电源一般采用开关电源。

4.输入/输出单元

输入/输出单元由输入、输出和功能模块构成,是PLC与现场被控装置或其他外部设备间的接口部件。I/O模块可与CPU放在一起,也可远程放置,通常I/O模块上还具有状态显示和I/O接线端子排。I/O模块及其接口的主要类型有数字量(开关量)输入、数字量(开关量)输出、模拟量输入、模拟量输出等。

输入模块将现场的输入信号经滤波、光电耦合隔离、电平转换、信号锁存电路等,变换为CPU能识别的低电压信号,送交CPU进行运算;带有锁存器的输出模块则将CPU输出的低电压信号变换、放大为能被控制器件接收的电压、电流信号,用来驱动信号灯、电磁阀、电磁开关等。I/O电压一般为1.6~5V,低电压能解决耗电量过大和发热量过高的问题,是节能降耗的本质所在。

通常PLC输入模块类型有直流、交流、交直流三种;PLC输出模块类型有继电器(交直流)、晶体管(直流)、双向晶闸管(交流)三种。

此外功能模块实际上是一些智能型I/O模块,如温度检测模块、位置检测/控制模块、PID控制模块、高速计数模块、运动控制模块、中断控制模块等,各有自己独立的CPU、系统程序、存储器,通过总线由PLC协调管理。CPU与I/O模块的连接由I/O接口完成。

5.接口单元

接口单元包括扩展接口、存储器接口、编程接口和通信接口。

扩展接口用于扩展I/O模块,使PLC控制规模配置得更加灵活,实际上为总线形式。可配置开关量I/O模块也可配置模拟量、高速计数等特殊I/O模块及通信适配器等。

存储器接口用于扩展用户程序存储区和用户数据参数存储区,可以根据使用的需要扩展存储器,内部接到总线上。

编程接口用于连接编程器或PC,由于PLC本身不带编程器或编程软件,所以为实现编程及通信、监控,在PLC上专门设有编程接口。

通信接口使PLC与PLC、PLC与PC或其他智能设备之间建立通信。外设I/O接口一般是RS-232C或RS-422A串行通信接口,进行串行/并行数据转换、通信格式识别、数据传输出错检验、信号电平转换等。

6.外部设备

外部设备已发展成为PLC系统不可缺少的部分。

(1)编程设备 编程(编程设备)或PC用来编辑、调试PLC用户程序,监控PLC以及PLC控制系统的工作状况等。

简易编程器多为助记符编程,个别的用图形编程(如东芝公司EX型),稍复杂点的用梯形图编程。采用先进编程软件,如C系的CX-Programmer、S7-1200的STEP 7 Basic、FX系的GX Developer,在个人计算机上实现编程。除编程、调试外,还可设定系统控制方式。

(2)监控设备 小的监控设备有数据监视器,可监视数据;大的监控设备有图形监视器,可通过画面监视数据。除了不能改变PLC的用户程序,编程器能做的它都能做。

(3)存储设备 存储设备用于永久存储用户数据,使用户程序不丢失,包括存储卡、存储磁带、软磁盘或只读存储器,实现存储的设备相应还有存卡器、磁带机、软驱或ROM写入器及其接口部件。

(4)输入输出设备 输入设备有条码读入器、输入模拟量的电位器等;输出设备有打印机、文本显示器等。

7.PLC软件系统

PLC除硬件系统外,还需软件系统的支持,它们相辅相成、缺一不可。PLC软件系统包括系统程序(又称系统软件)和用户程序(又称应用软件)。

(1)系统程序 系统程序由PLC厂家编制,固化于EPROM或EEPROM中,安装在PLC上。系统程序包括监控程序、管理程序、命令解释程序、功能子程序、诊断子程序、输入处理程序、编译程序、信息传送程序等。

(2)用户程序 用户程序是根据生产过程控制的要求,由用户使用厂家提供的编程语言自行编制的,包括开关量逻辑控制程序、模拟量运算程序、闭环控制程序和操作站系统应用程序等。

1.3.2 PLC的工作原理

PLC是一种专用工业控制计算机,工作原理与计算机控制系统基本相同。PLC采用周期循环扫描的工作方式,CPU连续执行用户程序和任务的循环序列称为扫描。

1.PLC对继电器控制系统的仿真

开辟I/O映像区,用存储程序控制替代接线程序控制,是包括水力发电生产在内的所有工业控制领域的新纪元。

(1)仿真或模拟继电器控制的编程方法 一个电气电路控制整体方案中,根据任务与功能不同可明显划分出主电路(完成主攻任务,表象是大电流)和辅助电路(完成控制、保护、信号等任务,表象是小电流)。用PLC替代继电器控制系统一般是指替代辅助电路的部分,而主电路部分基本保持不变。主电路中如含有大型继电器仍可继续使用,PLC可以用内部的软继电器(或称虚拟继电器)去控制外部的主电路开关继电器,运用PLC不是要“消灭”继电器,而是替代辅助电路中起控制、保护、信号作用的继电器,达到节能降耗的目的,这一点请务必注意。

对于控制、保护、信号等辅助电路构成的电气控制系统可分解为如图1-2所示的三个部分,即输入部分、控制部分、输出部分。

图1-2 电气控制系统的组成

输入部分由各种输入设备(如控制按钮、操作开关、位置开关、传感器)和全部输入信号构成,这些输入信号来自被控对象上的各种开关量信息及人工指令。控制部分是按照控制要求设计的,将主令电器、继电器、接触器等及其触点用导线连接成具有一定逻辑功能的控制电路,以固定方式接线,控制逻辑设置在硬接线中。这种固化程序不能灵活变更且故障点多,而运用PLC将克服这些缺点。输出部分由各种输出设备(如接触器、电磁阀、指示灯等执行元件)组成。

PLC控制系统组成也大致分为如图1-3所示的三部分,即输入部分、控制部分、输出部分。

图1-3 PLC控制系统的组成

这与继电器控制系统极为相似,输入部分、输出部分与继电器控制系统大致相同。差异是PLC中输入、输出部分多了I/O模块,增加了光电耦合、电平转换、功率放大等功能;PLC逻辑部分由微处理器、存储器组成,由计算机软件替代继电器构成的控制、保护与信号电路,实现“软接线”或“虚拟接线”,可以灵活编程,这是PLC节能降耗之外又一亮点。

下面从控制方式、控制速度、延时控制等三个方面阐述可编程序控制系统与继电器控制系统之间的差异。

1)控制方式。继电器控制系统采用硬件接线,是利用继电器机械触点的串联或并联及延时继电器的滞后动作等组合形成控制逻辑,只能完成既定的逻辑控制。而PLC控制系统采用存储逻辑,以程序方式存储在内存中,改变控制逻辑只需修改程序,即改变“软接线”或“虚拟接线”。

2)控制速度。继电器控制系统逻辑依靠触点的机械动作实现控制,工作频率低,为ms级,且机械触点有抖动现象。而PLC控制系统是程序指令控制半导体电路来实现控制,速度快,为μs级,严格同步,无触点抖动。

3)延时控制。继电器控制系统靠时间继电器的滞后动作实现延时控制,精度不高,受环境影响大,调整定时困难。而PLC控制系统用半导体集成电路作为定时器,时钟脉冲由晶体振荡器产生,精度高,调整定时方便,不受环境影响。

尽管PLC与继电器控制系统的控制部分组成元器件不同,但在控制系统中所起的逻辑控制作用是一致的。因而把PLC内部看作有许多“软继电器”或“虚拟继电器”,如“输入继电器”“输出继电器”“中间继电器”…“时间继电器”等。这样就可以模拟继电器控制系统的编程方法,仍然按照设计继电器控制电路的形式来编制程序,这就是极为方便的梯形图编程方法。另外PLC的I/O部分与继电器控制系统大致相同,因而安装也完全可以按常规的继电器控制设备进行。

总之PLC控制系统的I/O部分和电气控制系统的I/O部分基本相同,但控制部分是“可编程”的控制器,而不是继电器电路。PLC能方便地变更程序以实现控制功能的变化,从根本上解决了继电控制难以改变的问题以及其他问题(如触点烧灼)。除逻辑运算控制,PLC还具有数值运算及过程控制等复杂功能,是对继电器控制系统的崭新超越。

(2)接线程序控制、存储程序控制与建立PLC的I/O映像区 接线程序控制就是按电气控制电路接线的程序反复不断地依次检查各个输入开关的状态,根据接线的程序把结果赋值给输出。

1946年“计算机之父”美籍匈牙利数学家冯·诺伊曼(John von Neumann,1903~1957)提出“存储程序控制”原理,奠定了现代电子计算机的基本结构和工作方式,开创了程序设计的新时代。

PLC工作原理与接线程序控制十分相近,不同的是PLC控制由与计算机一样的“存储程序”来实现。PLC存储器内开辟有I/O映像区,大小与控制的规模有关。系统每一个I/O点都与I/O映像区的某一位相对应,I/O点编址号与I/O映像区的映像寄存器地址号相对应。

PLC工作时,将采集的输入信号状态存放在输入映像区对应位上,供用户程序执行时采用,不必直接与外部设备发生关系,而后将用户程序运算结果存放到输出映像区对应位上,以作为输出。这样不仅加速了程序执行,而且与外界的隔离提高了PLC控制的抗干扰能力。

2.PLC循环扫描的工作方式

PLC循环扫描工作方式有周期扫描方式、定时中断方式、输入中断方式、通信方式等,最主要的工作方式是周期扫描方式。PLC采用“顺序扫描,不断循环”的方式进行工作,每次扫描过程中,还需对输入信号采样并刷新输出状态。

(1)PLC的工作过程 PLC上电后,在CPU系统程序监控下,周而复始地按一定的顺序对系统内部各种任务进行查询、判断和执行,这个过程就是按顺序循环扫描。执行一个循环扫描过程所需的时间称为扫描周期,一般为0.1~100ms。PLC的工作过程如图1-4所示。

图1-4 PLC的工作过程

1)上电初始化。PLC上电后首先进行系统初始化处理,包括清除内部继电器区、复位定时器等,还对电源、PLC内部电路、用户程序的语法进行检查。设该过程占用时间T0

2)CPU自诊断。PLC在每个扫描周期都要进入CPU自诊断阶段,以确保系统可靠运行。包括检查用户程序存储器是否正常、扫描周期是否过长以及I/O单元的连接、I/O总线是否正常,复位监控定时器(Watch Dog Timer, WTD)等,发现异常情况时,根据错误类别发出报警输出或者停止PLC运行。设该过程占用时间T1

3)通信信息处理。当PLC和PC构成通信网络或由PLC构成分布系统时,需要一个通信服务过程,进行PLC与计算机间或与其他PLC间或与智能I/O模块间的信息交换。在多处理器系统中,CPU还要与数字处理器DPU交换信息。设该过程占用时间T2

4)外部设备服务。当PLC接有如终端设备、编程器、彩色图文显示器、打印机等外部设备时,每个扫描周期内要与外部设备交换信息。设该过程占用时间T3

5)用户程序执行。PLC在运行状态下,每一个扫描周期都要执行存储器中的用户程序,从输入映像寄存器和其他软元件的映像寄存器中读出有关元件的通/断状态,以扫描方式从程序000步开始按顺序运算,扫描一条执行一条,并把运算结果存入对应的输出映像寄存器中。设该过程占用时间T4,它主要取决于PLC的运行速度、用户程序的长短、指令种类。

6)I/O刷新过程。PLC运行时,每个扫描周期都进行输入信号刷新和输出信号刷新处理。输入处理过程将PLC全部输入端子的通/断状态,读进输入映像寄存器。在程序执行过程中即使输入状态变化,输入映像寄存器的内容也不会改变,直到下一扫描周期的输入处理阶段才读入这一变化。此外输入滤波器有一个响应延迟时间。

输出处理过程将输出映像寄存器的通/断状态向输出锁存寄存器传送,成为PLC的实际输出。PLC的对外输出触点相对输出元件的实际动作还有一个响应延迟时间。

设输入信号刷新和输出信号刷新过程占用时间为T5,主要取决于PLC所带I/O模块的种类和点数多少。

PLC周而复始地巡回扫描,执行上述整个过程,直至停机。可以看出,PLC的扫描周期T=T1+T2+T3+T4+T5,为0.1~100ms。T越长,要求输入信号的宽度越大。

(2)用户程序的循环扫描过程 PLC的工作过程与CPU的操作方式(STOP与RUN)有关,下面讨论RUN方式下执行用户程序的过程。

当PLC运行时,通过执行反映控制要求的用户程序来完成控制任务,有众多的操作,但CPU不是同时执行(这里不讨论多CPU并行),只按分时操作(串行工作)方式,从第一条程序开始,在无中断或跳转控制的情况下,按程序存储顺序先后逐条执行,这种串行工作过程即为PLC的扫描工作方式。程序结束后又从头开始扫描执行,循环运行。由于CPU运算处理速度很快,因而从宏观上来看,PLC外部出现的结果似乎是同时(并行)完成的。

PLC对用户程序进行循环扫描可划分为三个阶段,即输入采样阶段、程序执行阶段和输出刷新阶段,如图1-5所示。

图1-5 PLC用户程序的工作过程

1)输入采样阶段。这是第一个集中批处理过程,CPU按顺序逐个采集全部输入端子上的信号,不论是否接线,然后全部写到输入映像寄存器中。随即关闭输入接口,进入程序执行阶段,用到的输入信号的状态(ON或OFF)均从刚保存的输入映像寄存器中读取,不管此时外部输入信号的状态是否变化,如果发生了变化,那么也要等到下一个扫描周期的输入采样扫描阶段才去读取。由于PLC的扫描速度很快,因此可以认为这些采集到的输入信息是同时的。

2)程序执行阶段。这是第二个集中批处理过程,在执行用户程序阶段,CPU对用户程序按顺序进行扫描。若程序用梯形图表示,则总是按先上后下、从左至右的顺序进行扫描。当遇到程序跳转指令时,则根据是否满足跳转条件来决定程序是否跳转。每扫描到一条指令,若涉及输入信号状态,则从输入映像寄存器中读取,而不直接使用现场的立即输入信号(立即指令除外),对于其他信息,则从元件映像寄存器中读取。用户程序每一步运算的中间结果都立即写入元件映像寄存器中,对于输出继电器的扫描结果,也不是立即驱动外部负载,而是将结果写入输出映像寄存器中(立即指令除外)。在此阶段,允许对数字量I/O指令和不设置数字滤波的模拟量I/O指令进行处理,在扫描周期的各个部分,均可对中断事件进行响应。

在这个阶段,除了输入映像寄存器外,各个元件映像寄存器的内容均是随着程序的执行而不断变化的。

3)输出刷新阶段。这是第三个集中批处理过程,当CPU对全部用户程序扫描结束后,将元件映像寄存器中各输出继电器状态同时送到输出锁存器中,再通过一定方式(继电器、晶体管或晶闸管)经输出端子去驱动外部负载。在一个扫描周期内,只在输出刷新阶段才将输出状态从输出映像寄存器中集中输出,对输出接口进行刷新。用户程序执行过程中如果对输出结果多次赋值,则只有最后一次有效。输出刷新阶段结束后,CPU进入下一个扫描周期,重新执行输入集中采样,周而复始。

集中采样与集中输出的工作方式是PLC的又一特点,在采样期间,将所有输入信号(不论该信号当时是否要用)一起读入,此后在整个程序处理过程中PLC系统与外界隔离,直至输出控制信号。此时外界输入信号状态的变化要到下一个工作周期的采样阶段才能被读入,从根本上提高了系统的抗干扰能力和可靠性。

在程序执行阶段,由于输出映像区的内容会随程序执行的进程而变化,因此,在程序执行过程中,所扫描到的功能经解算后,结果马上就可以被后面将要扫描到的逻辑解算所利用,因而简化了程序设计。

(3)PLC的I/O延迟响应问题

1)I/O延迟响应。由于PLC采用循环扫描的工作方式,即对信息的串行处理方式,导致I/O延迟响应。当PLC的输入端有一个输入信号发生变化到PLC输出端对该输入变化做出反应,需要一段时间,这种现象称为I/O延迟响应或滞后现象,这段时间就称为响应时间或滞后时间。

从PLC的工作原理可以看出,输入信号的变化是否能改变其对应输入映像区的状态,主要取决于两点:第一,输入信号的变化要经过输入模块的转换才能进入PLC内部,这个转换需要的时间叫输入延时;第二,进入了PLC的信号只有在PLC处于输入刷新阶段时才能把输入的状态读到PLC的CPU输入映像区,此延时最长可达一个扫描周期T、最短接近于零。只有经过了上述两个延时,CPU才有可能读入输入信号的状态。输入延时是CPU可能读到输入端子信号状态发生变化的最短时间,而输入端子信号的状态变化被CPU读到的最长时间可达“扫描周期T+信号转换输入延时”,故输入信号的脉冲宽度至少比一个扫描周期T稍长。

当CPU把输出映像区里的运算结果赋予输出端时也需要延时,也有两部分:第一个延时发生在运算结果必须在输出刷新时,才能送入输出映像区对应的输出信号锁存器中,此延时最长可达一个扫描周期T、最短接近于零;第二个延时是输出信号锁存器的状态要通过输出模块的转换才能成为输出端的信号,这个输出转换需要的时间叫输出延时。

PLC循环扫描工作方式等因素会产生I/O延迟响应,在编程中,语句的安排也会影响响应时间。对于一般的工业控制,这种PLC的I/O响应滞后是完全允许的。但是对于要求响应时间小于扫描周期的控制系统则无法满足,这时可以使用智能I/O单元(如快速响应I/O模块)或专门的指令(如立即I/O指令),通过与扫描周期脱离的方式来解决。

2)响应时间。响应时间或滞后时间是设计PLC应用控制系统时应注意把握的一个重要参数,它与以下因素有关:①输入延迟时间(由RC输入滤波电路的时间常数决定,改变时间常数可调整输入延迟时间);②输出延迟时间(由输出电路的输出方式决定,继电器输出方式的延迟时间约为10ms,双向晶闸管输出方式在接通负载时延迟时间约为1ms、切断负载时延迟时间小于10ms,晶体管输出方式的延迟时间小于1ms);③PLC循环扫描的工作方式;④PLC对输入采样、输出刷新的集中处理方式;⑤用户程序中的语句能否合理安排。

这些因素中有的目前无法改变,有的则可以通过恰当选型、合理编程得到改善。例如选用晶闸管输出方式或晶体管输出方式可以加快响应速度等。

如果PLC在一个扫描周期刚结束之前收到一个输入信号,在下一个扫描周期进入输入采样阶段,那么这个输入信号就被采样,使输入更新,这时响应时间最短。

最短响应时间=输入延迟时间+1次用户程序执行时间+输出延迟时间(见图1-6)。

如果收到一个输入信号经输入延迟后,刚好错过I/O刷新时间,那么在该扫描周期内这个输入信号无效,要等下一个扫描周期输入采样阶段才被读入,使输入更新,这时响应时间最长。

最长响应时间=输入延迟时间+2次用户程序执行时间+输出延迟时间(见图1-6)。

图1-6 最短、最长I/O响应时间

输入信号若刚好错过I/O刷新时间,则至少应持续一个扫描周期才能保证被系统捕捉到。对于持续时间小于一个扫描周期的窄脉冲,可以通过设置脉冲捕捉功能使系统捕捉到。设置脉冲捕捉功能后,输入端信号的状态变化被锁存并一直保持到下一个扫描周期输入刷新阶段。这样,可使一个持续时间很短的窄脉冲信号保持到CPU读到为止。

PLC总响应延迟时间一般不长,对于一般系统无关紧要,对要求输入与输出信号之间的滞后时间尽量短的系统,可选用扫描速度较快的PLC或采取其他措施。

3)PLC对I/O的处理规则。PLC与继电器控制系统对信息处理方式是不同的,继电器控制系统是“并行”处理方式,只需要电流形成通路,可能有几个电器同时动作;而PLC以扫描方式处理信息,是顺序地、连续地、循环地逐条执行程序,任何时刻只执行一条指令,即以“串行”处理方式工作。因而在考虑PLC输入、输出间的关系时,应充分注意周期扫描工作方式。在用户程序执行阶段,PLC对I/O处理必须遵守以下规则:输入映像寄存器的内容,由上一扫描周期输入端子状态决定;输出映像寄存器的状态,由程序执行期间输出指令的执行结果决定;输出锁存器的状态,由上一次输出刷新期间输出映像寄存器的状态决定;输出端子板上各输出端的状态,由输出锁存器决定;执行程序时所用I/O状态值,取决于I/O映像寄存器的状态。

尽管PLC采用周期性循环扫描工作方式而产生I/O延迟响应的现象,但只要使其中一个扫描周期足够短,采样频率足够高,足以保证输入变量条件不变即可,即如果在第一个扫描周期内对某一输入变量的状态没有捕捉到,则保证在第二个扫描周期执行程序时使其存在。这样的工作状态,从宏观上讲,可以认为PLC恢复了系统对被控制变量控制的并行性。

扫描周期的长短和程序的长短有关,和每条指令执行时间长短有关。而后者又与指令的类型以及PLC的主频(CPU内核工作的时钟频率CPU Clock Speed)有关。

(4)PLC的中断处理过程 中断是对PLC外部事件或内部事件的一种响应和处理,包括中断事件、中断处理程序和中断控制指令三个部分。

1)响应问题。一般计算机系统的CPU在每一条指令执行结束时都要查询有无中断申请。而PLC对中断的响应则是在相关的程序块结束后查询有无中断申请,或者在执行用户程序时查询有无中断申请,若有中断申请,则转入执行中断服务程序。如果用户程序以块式结构组成,则在每块结束或执行块调用时处理中断。

2)中断源先后顺序及中断嵌套问题。在PLC中,中断源的信息是通过输入点进入系统的,PLC扫描输入点是按输入点编号的先后顺序进行的,因此中断源的先后顺序只要按输入点编号的顺序排列即可。多中断源可以有优先顺序,但无嵌套关系。

1.3.3 PLC的编程语言

PLC专为工业控制而开发,主要使用者是包括水力发电厂在内的广大工业领域的电气技术工作人员,从传统习惯出发,一般采用下列几种编程语言。

1.梯形图编程

梯形图(Ladder Diagram, LD)由原接触器、继电器构成的电气控制系统二次展开图演变而来,与电气控制系统的电路图相呼应,融合逻辑操作及控制于一体,是面向对象的、实时的、图形化的编程语言,形象、直观且实用,为广大电气工程人员所熟知,特别适合用于数字量逻辑控制,是使用最多的PLC编程语言,但不适合于编写大型控制程序。

(1)梯形图的格式 梯形图是PLC仿真或模拟继电器控制系统的编程方法,由触点、线圈或功能方框等基本编程元素构成。左、右垂线类似继电器控制图的电源线,称为左、右母线(Bus Bar)。左母线可看成能量提供者,触点闭合则能量流过,触点断开则能量阻断,这种能量流称为能流。来自能源的能流通过一系列逻辑控制条件,根据运算结果决定逻辑输出。

触点:代表逻辑控制条件,有动合触点和动断触点两种形式。

线圈:代表逻辑输出结果,能流到达,则该线圈被激励。

方框:代表某种特定功能的指令,能流通过方框,则执行其功能,如定时、计数、数据运算等。

每个梯形图网络由一个或多个梯级组成,每个输出元素(线圈或方框)可以构成一个梯级,每个梯级由一个或多个支路组成。通常每个支路可容纳的编程元素个数和每个网络允许的最多分支路数都有一定的限制,最右边的元素必须是输出元素,简单的编程元素只占用一条支路(如动合/动断触点、继电器线圈等),而有些编程元素要占多条支路(如矩阵功能)。在梯形图编程时,只有在一个梯级编制完整后才能继续后面的程序编制,从上至下、从左至右,左侧总是安排输入触点,并且把并联触点多的支路靠近最左端。输入触点不论是外部的按钮、行程开关,还是继电器触点,在图形符号上只用动合触点和动断触点两种表示方式,而不计及物理属性;输出线圈用圆形或椭圆形表示。

在梯形图中,每个编程元素应按一定的规则加标字母和数字串,不同的编程元素常用不同的字母符号和一定的数字串来表示。

(2)PLC梯形图编程的特点 梯形图与继电器控制电路图相呼应,决不是一一对应,彼此间存在许多差异。

1)PLC采用梯形图编程是模拟继电器控制系统的表示方法,各种元器件沿用继电器的叫法,但非物理继电器,称为软继电器或虚拟继电器。输入触点在存储器中相应位为“1”状态,表示继电器线圈通电,动合触点闭合或动断触点断开;输入触点在存储器中相应位为“0”状态,表示继电器线圈失电,动合触点断开或动断触点闭合。

2)梯形图中流过的能流不是物理电流,只能从左到右、自上而下,不允许倒流。能流到达,则线圈接通;能流是用户程序解算中满足输出执行条件的形象表示方式;能流流向的规定顺应了PLC的扫描是自左向右、自上而下顺序地进行,而继电器控制系统中的电流是不受方向限制的,导线连接到哪里,电流就可流到那里。

3)梯形图中的动合、动断触点不是现场物理开关的触点,它们对应于I/O映像寄存器中相应位的状态,而不是现场物理开关的触点状态。PLC把动合触点当成是取位状态操作、动断触点是位状态取反操作。因此在梯形图中同一元件的一对动合、动断触点的切换没有时间的延迟,动合、动断触点只是互为相反状态,而继电器控制系统中的大多数电器是属于先断后合型的电器。

4)梯形图中的输出线圈不是物理线圈,不能用它直接驱动现场执行机构。输出线圈的状态对应输出映像寄存器相应位的状态,而不是现场电磁开关的实际状态。

5)编制程序时,PLC内部继电器的触点原则上可无限次重复使用,因为存储单元中位状态可取用任意次。而继电器控制系统中的继电器点数是有限的,例如一个中间继电器仅有6~8个对接点。但要注意PLC内部的线圈通常只引用一次,应特别慎重对待重复使用同一地址编号的线圈。

6)梯形图中用户逻辑解算结果马上可以为后面用户程序的解算所利用。

2.语句表编程

语句表(Statement List, STL)是一种类似于计算机汇编语言的助记符编程表达式或一种文本编程语言,由多条语句组成一个程序段。不同厂家的PLC往往采用不同的语句表符号集。表1-1为西门子、三菱、通用电气和欧姆龙PLC的命令语句表程序举例。

表1-1 语句表程序举例

(续)

语句是用户程序的基础单元,每个控制功能由一条或多条语句组成的用户程序来完成,每条语句都规定CPU如何动作,它的作用和计算机的指令一样。PLC语句与计算机指令类似,即操作码+操作数。

操作码用来指定要执行的功能,告诉CPU该进行什么操作;操作数内包含为执行该操作所必需的信息,告诉CPU用什么地方的数据来执行此操作。

操作数应该给CPU指明为执行某一操作所需信息的所在地,分配原则如下:

1)为了让CPU区别不同的编程元素,每个独立的元素应指定一个互不重复的地址;

2)所指定的地址必须在该型机器允许的范围之内,超出机器允许的操作参数,PLC不予响应,并以出错处理。

语句表编程有键入方便、编程灵活的优点,在编程支路中元素的数量一般不受限制(没有显示屏幕的限制条件)。

3.顺序功能流程图语言

顺序功能图(Sequential Function Chart, SFC)是位于其他编程语言之上的真正的图形化编程语言,又称状态转移图,能满足如水力发电过程等顺序逻辑控制的编程。编写时,生产过程(或称工艺过程、生产流程、工艺流程)划分为若干个顺序出现的步和转换条件,每一步代表一个功能任务,用方框表示,每步中包括控制输出的动作,从一步到另一步的转换由转换条件来控制。这样程序结构清晰,易于阅读及维护,大大减少了编程工作量,利于系统规模较大、程序关系较复杂的场合,特别适于生产、制造过程的顺控程序,但不适用于非顺控的控制。三要素是驱动负载、转移条件、转移目标。转移条件、转移目标二者不可缺,驱动负载视具体情况而定。

SFC主要由状态、转移、动作和有向线段等元素组成,用流程的方式来描述控制系统工作过程、功能和特性。以功能为主线,按照功能流程的顺序分配,条理清楚,便于用户理解程序,同时大大缩短了用户程序扫描时间。

西门子STEP 7中的该编程语言是S7 Graph。基于GX Developer可进行FX系列PLC顺序功能图的开发。基于CX-Programmer的欧姆龙PLC中支持SFC编程模式的系列有CS1G、CS1H、CJ1M、CJ1G、CJ1H、CJ2H、CJ2M系列,早期产品C1000HF系列也有支持类似SFC语言的编程模式;CS1D、CP1系列则不支持SFC。

4.功能块图编程

功能块图(Function Block Diagram, FBD)是一种类似于数字逻辑电路结构的编程语言,一种使用布尔代数的图形逻辑符号来表示的控制逻辑,一些复杂的功能用指令框表示,适合有数字电路基础的编程人员使用。

功能块有基本功能模块和特殊功能模块两类。基本功能模块如AND、OR、XOR等,特殊功能模块如ON延时、脉冲输出、计数器等。FBD在大中型PLC和分散控制系统中应用广泛,如可以建立功能块的欧姆龙PLC有CJ1M、CJ、CS、CP1H/L等。

5.结构化文本(ST)

结构化文本(Structured Text, ST)是用结构化的文本来描述程序的一种专用的高级编程语言,编写的程序非常简洁和紧凑。采用计算机的方式来描述控制系统中各变量之间的各种运算关系,实现复杂的数学运算,完成所需的功能或操作。

使用GX Developer可对三菱MELSEC-Q/L系列进行ST编程,支持运算符、控制语句和函数。可以通过条件语句进行选择分支,通过循环语句进行重复等的控制语句;可以使用含有*、/、+、-、<、>、=等运算符的表达式;可以调用预定义的功能块(FB),实现程序开发高效化;可以调用各种公共指令对应的MELSEC函数及IEC 61131-3中定义的IEC函数;可以记述半角、全角字符的注释;可读取已写入MELSEC-Q/L系列PLC中的程序,恢复后以ST语言格式进行编辑;可以在RUN中对程序进行部分变更;支持ST外的其他适于处理的语言,可以对一个CPU写入多个程序文件。

欧姆龙CP1H、CP1L、CS、CJ系列PLC都带有结构化文本,支持块程序的编写。