论文部分内容阅读
近年来,随着计算机、通讯与控制技术的发展,由可编程控制器(Programmable Logic Controller, PLC)组成的分布式控制系统(Distributed Control Systems, DCS)得到了广泛应用。目前,组态软件仅对单个PLC进行编程,控制逻辑分散在各个PLC中,给DCS的程序设计、分析造成不便。因此,脱离具体设备,面向控制网络进行统一编程具有重要的开发价值与应用前景。针对功能块(Function Block Diagram, FBD)编程语言,以变量间依赖关系为基础,提出了一种基于事件图的控制程序编译方法。将面向控制网络统一编写的程序映射为离散事件系统(Discrete Event Systems, DES),将变量跃迁、指令执行等行为映射为事件及调度活动,根据功能块引脚变量和连线关系,建立了基于事件图的控制程序模型,描述了输入变量、内部变量及输出变量之间的相互作用。提出了基于深度优先搜索(Depth First Search, DFS)的事件图遍历算法,对控制程序的依赖关系进行分析,提取出相互间不存在耦合关系的功能块指令序列。以系统通讯时间最短、设备负载均衡为原则,在保证控制逻辑正确的前提下,依据I/O变量类型为功能块序列划分设备,实现控制程序的分散下载。分析控制系统的拓扑结构,获得设备间的通讯路径,通过为路径上各个设备动态插入网络通讯指令,完成设备间的自动通讯,实现I/O变量在不同设备中的远程刷新。开发了基于Visual Studio2005的组态软件DConfig,提供面向控制网络的统一编程功能。在DConfig中,以楼宇综合监控系统为例对编译方法进行验证。通过使用该编译方法对控制程序进行编译,指令被正确下载给对应设备,设备能够远程刷新I/O变量,运行逻辑正确。实验结果证明,本文提出的编译算法有效解决了统一编程与分散下载之间的矛盾,可以应用于分布式控制系统的面向网络编程。