论文部分内容阅读
自律分散系统(ADS)技术解决了传统分布式控制系统面临的在线扩展、在线维护等突出问题。2003年自律分散协议(ADP)成为国际电工委员会的标准(IS015745-4)。协议的标准化将使自律分散系统的构建和实现更加容易。本文研究了在Linux系统构建自律分散子系统(节点)的一种方案。本方案以自律分散协议ADP为基础,在Linux的TCP/IP协议栈的应用层实现了自律分散系统的核心功能模块——自律控制处理器;设计了基于自律控制处理器的应用编程接口(ACP-API),并给出了通用的开发流程。为了验证方案的可行性,在运行自律控制处理器的Linux系统平台上,给出了开发自律分散子系统应用程序的实例。ADP是在TCP/IP协议之上实现的一种应用层协议,ADP协议的内容完全可以使用Linux的网络编程接术来实现。ADP的多播组号(MGN)通过与UDP通信网络端口号的一一映射来标识,加入和退出一个多播组通过对其相应网络端口的绑定和脱离操作来实现。ADP多播通信通过UDP广播来实现,使用Linux的socket接口函数来接收和发送多播消息。使用消息序列号和版本号来实现ADP多播通信的可靠性控制。ADP多播消息的优先级通过Linux消息队列的类型(Type)属性来实现,把ADP消息的7个优先级映射到消息队列的不同类型就可以实现消息的节点内部优先级控制。ADS节点软件由自律控制处理器(ACP)、节点数据域(ADF)和应用程序(AP)三大部分组成。自律控制处理器模块采用多进程设计,由消息发送进程和消息接受进程构成。接收进程主要功能是接收消息和处理消息。其中接收消息采用Linux的select系统调用复用多个套接口来接收多个多播组的消息;处理消息部分使用线程池来提高处理效率。发送生存信号的功能设计在发送进程内。节点数据域的设计采用Linux的进程间通信(IPC)技术。并把节点数据域分为输入和输出两个部分,输入部分使用Linux的消息队列,输出部分使用Linux的共享内存。ACP-API使用Linux的共享对象技术,把接口函数设计成可动态链接的共享对象库。在编写应用程序时,只要包含此共享对象库的头文件,就可以直接调用ACP-API函数。其中的接口函数ap_reginfo()通过Linux管道的服务器和客户端模式实现节点功能模块的在线扩展。本文根据此方案在Linux系统环境下实现了一个简单的自律分散系统实例——分散式温度控制系统。系统的运行结果表明了本设计方案的可行性,系统能够完成ADP协议的基础通信功能,能够支持ADS节点功能模块的在线扩展等特性。