1.3 PLC软件基础
可编程序控制器的软件分为两大部分,系统监控程序和用户程序。
系统监控程序是由可编程序控制器的制造者编制的,用于控制可编程序控制器本身的运行。用户程序是由可编程序控制器的使用者编制的,用于控制被控装置的运行。
1.系统监控程序
系统监控程序由以下几部分组成。
(1)系统管理程序
系统管理程序是系统监控程序中最重要的部分,整个可编程序控制器的运行都由它主管。
① 系统运行管理,即控制可编程序控制器何时输入、何时输出、何时运算、何时自检、何时通信等,进行时间上的分配管理。
② 存储空间管理,即生成用户环境,由它规定各种参数、程序的存放地址。将用户使用的数据参数、存储地址转化为实际的数据格式和物理存放地址。它将有限的资源变为用户可直接使用的诸多元件。通过这部分程序,用户看到的不是实际存储地址,而是按照用户数据结构排列的元件空间和程序存储空间。
③ 系统自检程序,包括各种系统出错检验、用户程序语法检验、警戒时钟运行等。在系统管理程序的控制下,整个可编程控制器就能正确有序地工作。
(2)用户指令解释程序、编辑程序
任何计算机最终都是根据机器语言来执行的,而机器语言的编制又是非常麻烦的。例如,在可编程序控制器中可以采用梯形图编程。将人们易懂的梯形图程序变为机器能识别的机器语言程序,这就是解释程序的任务。
(3)标准程序模块和系统调用
这部分是由许多独立的程序块组成的,各自能完成不同的功能,有些完成输入、输出,有些完成特殊运算等。可编程序控制器的各种具体工作都是由这部分程序来完成的。
整个系统监控程序是一个整体,它的质量好坏很大程度上影响可编程序控制器的性能。因为通过改进系统监控程序就可在不增加任何硬设备的条件下改善可编程序控制器的性能。
2.用户程序
用户程序是可编程序控制器的使用者编制的针对具体工程的应用程序。编程语言可以是语句表、梯形图、功能块图、系统流程图等。
用户程序是线性地存储在系统监控程序指定的存储区内的,它的最大容量也是由系统监控程序限制了的。
可编程序控制器的编程和微机的编程一样,用户程序需要适当的编程环境、程序结构和编程方法。
(1)用户环境
用户环境也是由系统监控程序生成的。它包括用户数据结构、用户元件区、用户程序存储区、用户参数、文件存储区等。
① 用户数据结构
位数据:这是一类逻辑量(1位二进制数),其值为“0”或“1”,它表示触点的通、断。触点接通状态为ON,触点断开状态为OFF。
字节数据:其位长为8位,其数制形式有多种。一个字节可以表示8位二进制数、2位十六进制数、2位十进制数。
字数据:其数制、位长、形式都有很多种。
一个字可以表示16位二进制数、4位十六进制数、4位十进制数(BCD码)。
② 用户数据存储区
用户使用的每个输入/输出端,以及内部的每一个存储单元都称为元件。各种元件都有其固定的存储区(例如输入输出映像区),即存储地址。如输入/输出继电器、内部继电器、定时器、计数器和数据区。
(2)用户程序语言
用户程序语言主要有梯形图、语句表、功能块图等。各种语言之间可以相互转换。图1-64是典型启停电路的三种语言表示方法。其等效的数学表达式为。
图1-64 典型启停电路对应的PLC程序
(3)编程方法
编程时通常有经验法、图形法、顺序功能图法等。经验法就是根据自己的或别人的经验编写PLC程序;图形法适应于顺序控制的程序编制,可以先画出顺序控制时序图,再根据时序图写出对应的数学表达式,最后画出对应的梯形图;顺序功能图法是根据控制要求画出顺序功能图,然后利用专门的指令写出对应的PLC程序。
西门子PLC还提供线性化编程、模块化编程和结构化编程三种编程方法可供选用,详见第6章。
线性化编程是指将整个用户程序写在一个指令连续的块中,处理器线性或顺序地扫描程序的每条指令。这种结构是PLC最初所模拟的硬连线继电器梯形逻辑图模式。线性化编程方法适用于比较简单的控制任务。
由于所有的指令都在一个块中,即使程序中的某些部分在大多数情况下并不需要执行,每个扫描周期也都要执行所有的指令,因此没有有效地利用CPU。此外如果要求多次执行相同或类似的操作,需要重复编写程序。
模块化编程将用户程序分成相对独立的指令块,每个块包含给定的部件组或作业组的控制逻辑。各备份块的执行顺序由组织块OB1(即主程序)中的指令决定。功能和功能块(即子程序)用来完成不同的过程任务。被调用的块执行完后,返回到OB1中程序块的调用点,继续执行OB1。
模块化编程的程序被划分为若干个块,易于几个人同时对一个项目编程。由于只是在需要时才调用有关的程序块,因此提高了CPU的利用效率。
结构化编程要求用户程序提供一些通用的指令块,以便控制一类相似或相同的部件,将复杂的自动化任务分解为能够反映过程的工艺、功能或可以反复使用的小任务,这些任务由相应的程序块(或称逻辑块)来表示,程序运行时所需的大量数据和变量存储在数据块中。给通用指令块提供的参数进一步说明各部件的控制差异。这样结构化的程序能反复调用这些通用指令块。
结构化编程方法比前面两种编程方法先进,适合复杂的控制任务,并支持多人协同编写大型用户程序。结构化编程的其他优点是:程序结构层次清晰,部分程序通用化、标准化,易于修改,简化了程序的调试。