PLC程序开发中的结构化编写方法

2011-06-04 10:16迟君平得利满水处理系统北京有限公司北京100020
自动化博览 2011年4期
关键词:程序开发控制程序功能模块

迟君平(得利满水处理系统(北京)有限公司,北京 100020)

1 概述

可编程逻辑控制器(PLC)目前广泛应用于工业控制系统当中,是自动化工程的主要控制设备。在PLC程序的开发过程中,各种编程方式和开发思想都得到了应用,没有形成一种统一有效的编程标准。在实际的工业控制项目中,自动化系统中的控制程序编写比较随意,往往可读性较差,控制程序通常有较强的的个人风格;当项目较大,开发成员较多的时候,很难进行团队协作;控制程序的后期维护很不方便、更遑论功能的扩展。目前的这种状态已经阻碍了自控系统质量的进一步提高,不适应工业控制项目对编程技术的要求。随着软件工程技术的发展,高级语言的编程技术不断成熟,PLC编程也应该吸收软件工程技术的成果,提高这方面的技术水平。

PLC编程方法较多,比较常用的有组合逻辑函数法、功能转移图法、Petri 网分析法,甚至还有面向对象的PLC程序设计思想,如图1所示。组合逻辑函数法是一种最基本的设计方法,但不适用于大规模PLC程序开发。功能转移图法适合于处理顺序、随机等类型的控制。Petri 网理论虽然不断发展,但是不能从根本上解决状态空间随模型增长而指数性增长的问题,因而不适合复杂和大规模系统模型的分析求解。面向对象的PLC程序设计思想目前应用于PLC编程有一定的困难。还有其它一些编程方法,不再赘述。

图1 面向对象的PLC编程方法

软件工程中的结构化思想发展的比较成熟,广泛应用于高级语言编程中,可以大大提高编程的效率,改善可读性。同样,这种思想也可以应用于PLC编程中,通过采用这种方法,可以降低PLC编程的难度,提高开发效率,改善程序的可移植性。目前的PLC开发平台一般都支持结构化的编程。

2 方法介绍

结构化程序设计(Structured Programming)是以模块化设计为中心的软件设计思想,其概念最早由迪克斯特拉(E.W.Dijikstra)在1969年提出。按照结构化程序设计方法进行程序设计时,先考虑总体设计,后考虑细节设计。复杂的问题一般由若干个简单的问题构成,可以对其进行分解,设计一些子目标作过渡,逐步细化。复杂的程序通常应该由若干简单的程序模块所组成。按照这种方式编写出的程序清晰易读,易于理解,程序员能够进行逐步求精,程序易于证明和测试,程序的正确性得到了保证。

根据结构化编程的思路,一个完整的工艺控制程序,通常可以划分为三个层次:控制层、设备层、功能层,结构如图2所示。每个设备模块对应一台设备,其内部由几个不同的功能模块组成,控制模块根据工艺流程控制设备模块依次动作,完成工艺要求。由于模块相互独立,因此在设计其中一个模块时,不会受到其它模块的牵连,因而可将原来较为复杂的问题化简为一系列简单模块的设计。采用最佳的可能方法设计系统的各个组成部分,然后通过控制模块将各个设备模块联系起来,实现特定的工艺功能。

图2 工艺控制程序结构图

针对一个电机设备的控制要求,把PLC编程需要完成的控制任务进行进一步分解,划分为几个较小的控制功能,然后针对每个功能分别进行代码编写,使之成为不同的功能模块,每个控制功能采用一个功能模块完成,该功能模块只完成一个单一的控制功能,并且与其他模块的联系最少且接口简单,这样就易于编写,具有清晰的结构,可降低编程难度,同时获得较高的程序质量。若干个功能模块组成设备模块,不同的设备模块在控制模块的控制下按照指定的顺序完成工艺功能。一个典型的的电机设备,比如一台风机或者水泵,设备模块的组成如图3所示。

图3 典型电机设备模块组成图

图3 涉及到的功能模块在表1中列出,这些基本的功能模块都采用独立封装的形式完成,比如定义为UnityPro中的DFB,Setp7中的FB,或者RSlogix5000中的Add-On-Instructions功能。不同的功能模块程序可以构成一个功能模块库,作为PLC程序库的一部分,每当进行程序开发时,可以把繁琐的代码编写工作变为搭积木式的开发过程。

表1 模块功能列表

设备模块通过调用功能模块的实例,也定义为DFB、FB或者Add-On-Instructions,表现为独立封装的形式,设备模块的实例则对应到一个实际的设备。通过实例的多重定义和调用,可以如图4所示的常用程序结构。

图4 常用程序结构图

具有这种层次结构的程序代码,可以方便的进行软件测试和现场调试,大大减轻自动化工程师的工作负担和现场压力,同时程序的后期维护和扩展变得非常容易。程序也往往具有良好的可移植性,并且功能模块可重复使用,具有较高的可重用性。

目前,编程平台支持扩展标记语言(XML)是一个发展方向,通过使用XML语言实现编程自动化是未来发展的趋势,程序中合理的层次结构以及模块化的编程组件为今后编程自动化打下了良好的基础。

3 应用说明

一台典型电机设备的设备模块如图5所示,是一个DFB模块,定义了相应的输入输出管脚,表现为独立封装的形式。设备模块的内部如图6所示,由若干个功能模块组成,功能模块则是由最基本的梯形图、指令表或者文本代码编写实现。

图5 设备模块图

4 结语

作为PLC编程人员,要具备这种结构化编程的意识,用于指导自己的编程工作,按照本文介绍的方法来分析问题,解决问题,组织程序。当遇到新问题时,可快速写出符合需要的PLC程序。作为一名自动化工程师,一方面要掌握各种编程技术技巧,另一方面也要具备成熟的编程思想,来指导自己的编程工作。

通过掌握结构化编程思想,可以加快开发进度,提高项目的开发效率,节省开发时间,同时可以保证程序质量,使编程人员从繁琐的底层代码编写中解脱出来,思想更加自由,去思考一些更为重要的内容。

图6 设备模块内部图

[1] 迟君平, 王斌, 李业友. 模块化编程方法在PLC程序开发中的应用[J]. 微计算机信息. 2005. 6.

[2] 宋伯生编著. PLC编程理论、算法及技巧[M]. 机械工业出版社. 2005. 2.

猜你喜欢
程序开发控制程序功能模块
浅析大学生在兼职小程序开发中遇到的问题
基于PLC的变电站备用电源自动投入装置控制程序的研究
APP应用程序开发模式探究
基于嵌入式系统Windows CE的应用程序开发
基于App inventor 2手机程序开发过程的学习与实——以“喵喵定时器”APP开发为例
基于ASP.NET标准的采购管理系统研究
输电线路附着物测算系统测算功能模块的研究
重型车辆协同式自适应巡航控制系统的车际通信控制程序和信息交互
功能模块的设计与应用研究
纸机传动控制程序的复用性研究