对于各组织块中的程序,可以根据其复杂程度分别选用线性、分部或结构化等三种形式中的一种程序结构。由于组织块OB1(主程序循环)中的程序是应用程序中主要的也是复杂的部分,对OB1中的程序设计合理的结构是十分重要的。下面分别说明三种典型结构的特点及选用原则。
1. 线性程序结构
用“线性”结构设计的程序连续放置在一个块内(通常为OB1),块中的程序按顺序执行。这一结构是初的PLC模拟的继电器梯形逻辑的模型。线性程序具有简单、直接的特点。编程时,不必考虑功能块如何编程及如何调用,也不必考虑如何定义局部变量及如何使用背景数据块。由于所有的指令在一个块内,它适用于只需一个人编写的、相对简单的控制程序。
这是一种部分模块化的程序结构,也称为部分结构化。程序被分成各部分放在若干功能块中,每个功能块含有用于一种设备的一系列控制逻辑。放置在组织块OB1中的指令决定控制程序的各功能块的执行。比如说,一个分部程序可能包含以下内容:
(1) 用于控制设备每一部分的FC;
(2) 用于控制设备每一工作状态的FC;
(3) 用于控制操作员接口的FC;
(4) 用于进行PLC自诊断的FC。
在分部程序中,既无数据交换也没有重复利用的程序代码。各功能块收集并使用自己的数据,功能块不传递也不接收参数,功能块的编程与调用比较简单。由于每个功能区分为不同的块,使得多个程序员能够编程而不发生冲突。分部程序结构的编程效率比线性程序有所tigao,程序测试也较方便,对程序员的要求也不太高。对不太复杂的控制程序可考虑采用这种程序结构。
3. 结构化程序结构
*结构化(模块化)的程序结构是PLC程序设计和编程较有效的结构形式,它可用于复杂程度高、程序规模大的控制应用程序设计。结构化程序可以重复使用某些功能块,只需要在使用功能块时为其提供不同的环境变量(实参),就能完成对不同设备的控制。例如,在工业搅拌控制过程中有三台泵,对它们的控制功能相似,可以编写一个用于对泵进行控制的功能块,编程时先定义泵控制所需的变量(形参),并使用这些变量构成一个称为“泵控制”的一般功能块。在调用该功能块时,通过改变传入功能块中的参数(实参),可以分别对成分A、成分B和搅拌桶中的三台泵进行控制。
结构化程序有高的编程和程序调试效率,应用程序代码量也小。结构化程序也支持多个程序员协同编程。这种程序结构建立在对PLC系统功能的合理分析、分解及综合的基础之上,程序具体结构形式的确定与程序设计人员的水平及经验关系很大,对程序员的要求也较前两种高。
1. 将过程分割为任务和区域
一个自动化过程包括许多单个的任务,通过识别一个过程内的相关任务组,将这些组再分解为更小的任务,复杂的过程也能够被定义。下面将这个工业搅拌过程构造为四个功能区域:配料A区域、配料B区域、混合罐区域和排料区域。
2. 说明各个功能区域
1) 配料A和配料B区域
(1) 每种配料的管道都配备有一个入口和一个进料阀以及进料泵。
(2) 进料管还有liuliang传感器。
(3) 当罐的液面传感器指示罐满时,进料泵的接通必须被锁定。
(4) 当排料阀打开时,进料泵的启动必须被锁定。
(5) 在启动进料泵后1 s内必须打开入口阀和进料阀。
(6) 在进料泵停止后(来自liuliang传感器的信号)阀门必须立即被关闭以防止配料从泵中泄露。
(7) 进料泵的启动与一个时间监控功能相结合,在泵启动后的7 s之内,liuliang传感器会报告溢出。
(8) 当进料泵运行时,如果liuliang传感器没有liuliang信号,进料泵必须尽可能快地断开。
(9) 必须对进料泵启动的次数进行计数(维护间隔)。
2) 混合罐区域
(1) 当罐的液面传感器指示“液面低于低限”或排料阀打开时,搅拌电机的启动必须被锁定。
(2) 搅拌电机在达到额定速度时要发出一个响应信号。如果在电机启动后10 s内还未接收到该信号,则电机必须被断开。
(3) 必须对搅拌电机的启动次数进行计数(维护间隔)。
(4) 在混合罐中必须安装三个传感器。① 罐装满:一个常闭触点。当达到罐的高液面时,该触点断开。②罐中液面高于低限:一个常开触点。如果达到低限,该触点关闭。③ 罐非空:一个常开触点,如果罐不空,该触点闭合。