2.3 PLC开发环境和工作原理
2.3.1 PLC编程语言及编程软件
可编程控制器是通过程序来实现控制的,编写程序时所用的语言就是PLC的编程语言,PLC编程语言有多种,它是用PLC的编程语言或某种PLC指令的助记符编制而成的。各个元件的助记符随PLC型号的不同而略有不同。PLC编程语言根据生产厂商的不同而不同。因为目前没有统一的通用编程语言,所以在使用不同厂商的PLC时,同一种编程语言也有所不同。在PLC控制系统设计中,要求设计人员不但要了解PLC的硬件性能,还要了解PLC对编程语言支持的种类。
国际电工委员会(IEC)1994年5月公布的IEC6 1131-3标准(PLC的编程语言标准,也是至今唯一的工业控制系统的编程语言标准)中详细地说明了句法、语义和下述5种编程语言:语句表(Statement List,STL)、梯形图(Ladder Diagram,LAD)、功能块图(Function Block Diagram,FBD)、结构文本(Structured Text,ST)、顺序功能图(Sequential Function Chart,SFC)。其中梯形图和语句表编程语言在实际中用得最多,下面着重介绍这两种语言。
(1)梯形图(LAD)
梯形图(LAD)是最常用的PLC编程语言。梯形图与继电器的电路图很相似,它是从继电器控制系统原理图演变而来的,是一种类似于继电器控制线路图的一种语言。其画法是从左母线开始,经过触点和线圈,终止于右母线,具有直观、易学、易懂的优点,而且很容易被熟悉继电器控制的工厂电气技术人员所掌握。西门子PLC的梯形图具有以下几个特点:
①梯形图是一种图形语言,沿用继电器控制中的触点、线圈、串并联等专业术语和图形符号;
②梯形图中的触点有常开触点和常闭触点两种,触点可以是PLC输入点接的开关,也可以是内部继电器的触点或内部寄存器、计数器的状态;
③触点可以串联或并联,但线圈只能并联,不能串联;
④触点和线圈等组成的独立电路称为网络(Network)或程序段;
⑤在程序段号的右边可以加上程序段的标题,在程序段号的下边可以加上注释;
⑥内部继电器、计数器、寄存器都不能直接控制外部负载,只能作为中间结果供CPU内部使用。图2-4是启保停电路的梯形图表示。
图2-4 启保停电路梯形图
(2)语句表(STL)
语句表(STL)类似于计算机的汇编语言,但比汇编语言通俗易懂,是PLC的基本编程语言。它用助记符来表示各种指令的功能,指令语句是PLC程序的基本元素,多条语句组合起来就构成了语句表。在编程器的键盘上或利用编程软件的语句表格式都可以进行语句表编程。一般情况下语句表和梯形图是可以相互转换的,例如西门子S7-300 PLC的STEP 7编程软件在视图选项中就可以进行语句表和梯形图的相互转换。或者用快捷键“Ctrl+1/2”就可以实现语句表和梯形图的相互转换。要说明的是部分语句表是没有梯形图与之相对应的。启保停电路的梯形图所对应的语句表如图2-5所示。
图2-5 语句表
(3)编程软件
编程器是PLC重要的编程设备,它不仅可以用来编写程序,还可以用来输入数据,以及检查和监控PLC的运行。一般情况下,编程器只在PLC编程和检查时使用,在PLC正式运行后往往把编程器卸掉。
随着计算机技术的发展,PLC生产厂家越来越倾向于设计一些满足某些PLC的编程、监控和设计要求的编程软件,这类编程软件可以在专用的编程器上运行,也可以在普通的个人计算机上运行。这类编程软件利用了计算机的屏幕大、输入/输出信息量多的优势,使PLC的编程环境更加完美。在很多情况下,装有编程软件的计算机在PLC正式运行后还可以挂在系统上,作为PLC的监控设备使用。比如有下列编程软件。
①OMRON公司设计的CX-P编程软件可以为OMRON C系列PLC提供很好的编程环境。
②松下电工设计的FPWin_GR编程软件可以为FP系列PLC提供很好的编程环境和仿真。
③西门子公司设计的STEP 7 Micro/WIN 32编程软件可以为S7-200系列PLC提供编程环境。
④西门子公司设计的SIMATIC Manager编程软件可以为S7-300/400系列PLC提供编程环境。
编程软件在使用前一定要把其装入满足条件的计算机中,同时要用专用的通信电缆把计算机和PLC连接好,在确认通信无误的情况下才能运行编程软件。
在编程环境中,可以打开编程窗口、监控程序运行窗口、保存程序窗口和设定系统数据窗口,并进行相应的操作。
(4)仿真软件
随着计算机技术的发展,PLC的编程环境越来越完善。很多PLC生产厂家不仅设计了方便的编程软件,而且设计了相应的仿真软件。只要把仿真软件嵌入到编程软件当中,就可以在没有具体的PLC的情况下利用仿真软件直接运行和修改PLC程序,使PLC的学习、设计和调试更方便、快捷。西门子公司设计的S7-PLCSIM仿真软件就是专门为S7-300/400 PLC设计的仿真软件,S7-200SIM是专门为S7-200 PLC设计的仿真软件,利用这些仿真软件可以直接运行S7-200和S7-300/400的PLC程序。
2.3.2 PLC的工作原理
PLC是一种工业控制用的计算机,它的外形不像个人计算机,工作方式也与计算机差别很大。编程语言甚至工作原理都与个人计算机有所不同。
PLC上电后首先要对硬件和软件进行初始化,当其进入运行状态后,PLC则采用循环扫描的方式工作。在PLC执行用户程序时,CPU对程序采取自上而下、自左向右的顺序逐次进行扫描,即程序的执行是按语句排列的先后顺序进行的。每一次循环扫描所经历的时间称为一个扫描周期。每个扫描周期又主要包括输入刷新、用户程序执行、输出刷新三个阶段。当PLC初始化后,就会重复执行以上三个阶段。在进行用户程序执行阶段时,还包括系统自诊断、通信处理、中断处理、立即I/O处理等过程。图2-6所示为PLC的循环扫描工作过程图。
图2-6 PLC的循环扫描工作过程图
(1)输入刷新(采样)阶段
在输入刷新阶段,PLC以扫描的方式顺序读入所有输入端子的状态,并将此状态存入输入锁存器。如果输入端子上外接电器的触点闭合,锁存器中与端子编号相同的那一位就置“1”,否则为“0”。把输入各端子的状态全部扫描完毕后,PLC将输入锁存器的内容输入到输入映像寄存器中。输入映像寄存器中的内容则直接反映了各输入端子此刻的状态。这一过程就是输入刷新阶段。随着输入数据输入到输入映像寄存器,标志着输入刷新阶段的结束。所以输入映像寄存器中的内容只是本次输入刷新时各端子的状态。在输入刷新阶段结束后,PLC接着进入执行用户程序阶段。在用户程序执行和输出刷新期间,输入端子与输入锁存器之间的联系被中断,在下一个扫描周期的输入刷新阶段到来之前,无论输入端子的状态如何变化,输入锁存器的内容都始终保持不变。
(2)用户程序执行阶段
输入刷新阶段结束后,PLC进入用户程序执行阶段。在用户程序执行阶段,PLC总是按照自上而下、自左向右的顺序依次执行用户程序的每条指令。从输入映像寄存器中读取输入端子和内部元件寄存器的状态,按照控制程序的要求进行逻辑运算和算术运算,并将运算的结果写入输出映像寄存器中,如果此时程序运行过程中需要读入某输出状态或中间状态,则会从输出映像寄存器中读入,然后进行逻辑运算,运算后的结果再存入输出映像寄存器中。对于每个元件,反映各输出元件状态的输出映像寄存器中所存储的内容,会随着程序的执行而发生变化,当所有程序都执行完毕后,输出映像寄存器中的内容也就固定了下来。
(3)输出刷新阶段
当用户程序的所有指令都执行完后,PLC就进入输出刷新阶段。输出刷新阶段将输出映像寄存器中的内容存入输出锁存器后,再驱动外部设备工作。与输入刷新阶段一样,PLC对所有外部信号的输出是统一进行的。在用户程序执行阶段,如果输出映像寄存器的内容发生改变,将不会影响外部设备的工作,直到输出刷新阶段将输出映像寄存器的内容集中送出,外部设备的状态才会发生相应的改变。
由PLC的工作过程可以看出,在输入刷新期间,如果输入变量的状态发生变化,则在本次扫描过程中,改变的状态会被扫描到输入映像寄存器中,在PLC的输出端也会发生相应的变化。如果变量的状态变化不是发生在输入刷新阶段,则在本次扫描期间PLC的输出保持不变,等到下一次扫描后输出才会发生变化。也就是说只有在输入刷新阶段,输入信号才被采集到输入映像寄存器中,其他时刻输入信号的变化不会影响输入映像寄存器中的内容。
由于PLC采用循环扫描的工作方式,并且对输入、输出信号只在每个扫描周期的I/O刷新阶段集中输入和集中输出,因此必然会产生输出信号相对输入信号的滞后现象。扫描周期越长,滞后现象就越严重。但是一般扫描周期只有十几毫秒,因此在慢速控制系统中,可以认为输入信号一旦发生变化就能立即进入输入映像寄存器中,其对应的输出信号也可以认为是会及时发生变化的。当某些设备需要输出对输入做出快速响应时,可以采取快速响应模块、高速计数模块以及中断处理等措施来尽量减少滞后时间。