电气控制与西门子S7-300PLC编程技术
上QQ阅读APP看书,第一时间看更新

2.3 PLC编程环境和工作原理

2.3.1 PLC编程环境

PLC的编程环境是由PLC生产厂家设计的,它包含用户环境和能把用户环境与PLC系统联结起来的编程软件。只有熟悉了编程环境,了解了编程环境,才能适应编程环境,才能在编程环境中编写出PLC的用户程序。

用户环境包括用户数据结构、用户元件区、用户程序存储区、用户参数和文件存储区等。

(1)用户数据结构

用户数据结构分为位数据、字节数据、字数据和混合型数据4类。

第一类为位数据,这是一类逻辑量(1位二进制数),其值为0或1,它表示触点的通或断。触点接通状态为ON,触点断开状态为OFF。例如,I0.0的值表示在输入映像区中的一位二进制数的状态,Q0.0的值则表示在输出映像区中的一位二进制数的状态。

第二类为字节数据,其位长为8位,其数制形式有多种形式。一个字节可以表示8位二进制数、两位十六进制数。例如,IB0的值表示在输入映像区中的连续8位二进制数的状态,QB0的值则表示在输出映像区中的连续8位二进制数的状态。

第三类为字数据,其数制、位长和形式都有很多。一个字可以表示16位二进制数、4位十六进制数、4位十进制数。十进制数据通常都用BCD码表示,书写时有时在前面加上K字符,例如K789;十六进制数据,书写时会在前面加上H字符,例如H78F。二进制数,书写时会在前面加上B字符,例如B0111_1000_1111。实际处理时还可选用八进制和ASCII码的形式。再如IW0表示在输入映像区中的连续16位二进制数的状态,QW0则表示在输出映像区中的连续16位二进制数的状态。由于对控制精度的要求越来越高,不少PLC开始采用了浮点数,这样极大地提高了数据运算的精度。

第四类为混合型数据,即同一个元件既有位数据又有字数据,例如T(定时器)和C(计数器),它们的触点只有ON和OFF两种状态,是位数据,而它们的设定值和当前值寄存器又为字数据。

(2)用户数据存储区

用户使用的每个输入/输出端,以及内部的每一个存储单元都称为元件。各种元件都有其固定的存储区(例如输入/输出映像区),即存储地址。给PLC中的输入/输出元件赋予地址的过程叫作编址。不同的PLC输入/输出的编址方法不完全相同,如CQM1的输入端地址可以为000,001,……通道,输出端地址为100,101,……通道。

PLC的内部资源,如内部继电器、定时器、计数器和数据区等,各个不同的PLC之间也有一些差异。这些内部资源都按一定的数据结构存储在用户数据存储区,正确使用用户数据存储区的资源才能编好用户程序。

(3)用户程序结构

用户程序是PLC的使用者编制的针对具体工程的应用程序。用户程序是线性地存储在PLC的存储区间内,它的最大容量也是由具体的PLC限制的。

用户程序结构大致可以分为3种,一是线性程序,这种结构是把一个工程分成多个小的程序块,这些程序块被依次排放在一个主程序中;二是分块程序,这种结构是把一个工程中的各个程序块独立于主程序之外,工作时要由主程序一个个有序地去调用;三是结构化程序,这种结构是把一个工程中的具有相同功能的程序写成通用功能程序块,工程中的各个程序块都可以随时调用这些通用功能程序块。

2.3.2 PLC编程语言及编程软件

可编程控制器是通过程序来实现控制的,编写程序时所用的语言就是PLC的编程语言,PLC编程语言有多种,它是用PLC的编程语言或某种PLC指令的助记符编制而成的。各个元件的助记符随PLC型号的不同而略有不同。国际电工委员会(IEC)1994年5月公布IEC1131-3标准(PLC的编程语言标准,也是至今唯一的工业控制系统的编程语言标准)中详细地说明了句法、语义和下述5种编程语言:语句表(Statement List,STL)、梯形图(Ladder Diagram,LAD)、功能块图(Function Block Diagram,FBD)、结构文本(Structured Text,ST)、顺序功能图(Sequential FunctionChart,SFC)。其中梯形图和语句表编程语言在实际中用的最多,下面着重介绍这两种语言。

(1)梯形图(LAD)

梯形图(LAD)是最常用的PLC编程语言。梯形图与继电器的电路图很相似,它是从继电器控制系统原理图演变而来的,是一种类似于继电器控制线路图的一种语言。其画法是从左母线开始,经过触点和线圈,终止于右母线,具有直观、易学、易懂的优点,而且很容易被熟悉继电器控制的工厂电气技术人员所掌握。西门子PLC的梯形图具有以下几个特点。

①梯形图是一种图形语言,沿用继电器控制中的触点、线圈、串并联等专业术语和图形符号。

②梯形图中的触点有常开触点和常闭触点两种,触点可以是PLC输入点接的开关,也可以是内部继电器的触点或内部寄存器、计数器的状态。

③触点可以串联或并联,但线圈只能并联,不能串联。

④触点和线圈等组成的独立电路称为网络(Network)或程序段。

⑤在程序段号的右边可以加上程序段的标题,在程序段号的下边可以加上注释。

⑥内部继电器、计数器、寄存器都不能直接控制外部负载,只能作为中间结果供CPU内部使用。图2-4是启保停电路的梯形图。

图2-4 启保停电路梯形图

(2)语句表(STL)

语句表(STL)类似于计算机的汇编语言,但比汇编语言通俗易懂,是PLC的基本编程语言。它用助记符来表示各种指令的功能,指令语句是PLC程序的基本元素,多条语句组合起来就构成了语句表。在编程器的键盘上或利用编程软件的语句表格式都可以进行语句表编程。一般情况下语句表和梯形图是可以相互转换的,例如西门子S7-300PLC的STEP7编程软件在视图选项中就可以进行语句表和梯形图的相互转换。或者用【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提供很好的编程环境和仿真。

③西门子公司设计的STEP7Micro/WIN32编程软件可以为S7-200系列PLC提供编程环境。

④西门子公司设计的SIMATIC Manager编程软件可以为S7-300/400系列PLC提供编程环境。

编程软件在使用前一定要把其装入满足条件的计算机中,同时要用专用的通信电缆把计算机和PLC连接好,在确认通信无误的情况下才能运行编程软件。

在编程环境中,可以打开编程窗口、监控程序运行窗口、保存程序窗口和设定系统数据窗口,并进行相应的操作。

(4)仿真软件

随着计算机技术的发展,PLC的编程环境越来越完善。很多PLC生产厂家不仅设计了方便的编程软件,而且设计了相应的仿真软件。只要把仿真软件嵌入到编程软件当中,就可以在没有具体的PLC的情况下利用仿真软件直接运行和修改PLC程序,使PLC的学习、设计和调试更方便、快捷。如西门子公司设计的S7_PLCSIM仿真软件就是专门为S7-300/400PLC设计的仿真软件,S7_200SIM是专门为S7-200PLC设计的仿真软件,利用这些仿真软件可以直接运行S7-200和S7-300/400的PLC程序。

2.3.3 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刷新阶段集中输入和集中输出,所以必然会产生输出信号相对输入信号的滞后现象。扫描周期越长,滞后现象就越严重。但是一般扫描周期只有十几毫秒,因此在慢速控制系统中,可以认为输入信号一旦发生变化就能立即进入输入映像寄存器中,其对应的输出信号也可以认为是会及时发生变化的。当某些设备需要输出对输入做出快速响应时,可以采取快速响应模块、高速计数模块以及中断处理等措施来尽量减少滞后时间。