APP下载

基于分布式控制系统的通信软件开发实现

2011-08-26管其勇

制造业自动化 2011年21期
关键词:驱动程序缓冲区线程

管其勇

GUAN Qi-yong

(江苏淮安信息职业技术学院 电气工程系,淮安 223003)

1 DCS控制系统

DCS是工业领域常用的分布式集散控制系统。典型的 DCS 系统规模受限于网络逻辑节点数、网络负荷、服务器负荷、单一数据库容量等等各项资源的限制,多域结构设计(分布式数据库),使得 DCS 系统规模的扩大有了“无限” 的可能。

一个域对应现实中的一台机组、一个主装置,域中的设备等同于一套传统意义上的 DCS。不同的机组、装置可由分属不同域的 DCS 控制,减少不必要的数据交换,降低系统网络、服务器和数据库的工作负荷。同时,域间也可实现数据交换,共享数据和信息。

DCS系统中主要的嵌入式系统软件是控制器和它包括硬件和软件两部分,其中软件部分又包括操作系统(要求实时和多任务处理,一般称作嵌入式实时操作系统)和应用程序两大部分。

Modbus是应用于电子仪控设备上的一种标准的通讯协议。仪控设备之间、仪控设备与其他设备之间可以通过RS485总线的连接按照此协议进行通讯,使得不同厂商生产的仪控设备可以连成工业网络,进行集中监控。该协议主要包括TCP和RTU 两种模式。

IEC是International Electro Technical Commission,国际电工委员会。文档中的IEC任务指的是以IEC61131-3可编译逻辑语言实现的计算任务。IEC工作组制定的IEC-870-5-104规约适用于电网数据采集和监视控制系统以及调度所之间以网络方式传送实时远动信息的系统,该规约规定了OSI七层协议中的应用层,传输层以下采用TCP/IP协议。

2 RTS系统

RTS系统主要任务如下:

在编程系统中可以给IEC任务指定的优先级为0~31。有两种方式可以激活IEC任务。

时间控制: 如果编程系统中指定任务的循环周期(e.g. 10 ms), 则由控制任务按周期来激活IEC任务。

事件控制: 如果任务被指定了一个IEC事件(boolean variable),则按照事件控制运行。当该BOOL型变量从FALSE变成TRUE之后,该任务被激活。

对于两种方式,任务激活后的处理过程是相同的。可以分成下列三个部分。

1)将该IEC任务所用到的输入数据从过程映象刷新到输入过程映象。

2)调用编程系统指定给该任务的POU程序。

3)将所有的输出数据输出到过程映象,然后输出给外围设备。

对IO过程映象数据的输入/输出是由专门的 I/O 驱动来实现的。

TCP/IP或serial的server任务是可选的。两个任务都被设计成可接收来自不同CLIENT端(CoDeSys,OPC,...)的具体数据,并将这些数据传递给内部server。内部server 解释这些数据,执行请求的命令,并通过通讯任务给CLIENT端发回应答。

两种SERVER建立连接的方式不同。

1)TCP/IP Server

与CLIENT端建立连接之后,SERVER会建立一个独立的任务来处理这个CLIENT端的所有数据包。此后,SERVER继续等待接收CLIENT端发来的新的建立连接的请求。这个机制很重要。因为它允许网络上有不同IP地址的不同计算机都可以连接到RTS上。

2)Serial Server

一个串口SERVER任务维护一个串口,并等待输入数据。这意味着串口与RTS通讯只能是单个的。

总共包含RTS程序和通讯驱动两部分。通讯驱动完成通讯站跟第三方系统通讯时的状态诊断(链路状态、数据质量)、数据的采集和输出的功能。同时,它通过共享内存的方式与RTS程序进行数据交换,从而共同完成整个通讯站的功能。

3 配置文件设计

通讯站做为主站或服务端,驱动主进程初始化创建共享内存时,根据编译下装到通讯站的安装。

配置文件装载自己的通讯参数和数据点信息。每个通讯站只生成与本站通讯相关的配置信息。

1)LinkDef.csv文件主要是提供通讯链路参数信息,该配置文件中应该包括以下配置信息:

(1)进程信息:版本号、通讯链路名、站号、链路号、链路类型、子链路类型。

(2)链路参数设置(串口号、波特率、奇偶校验、数据位、停止位、IP地址、端口号)

(3)主站读写链路的周期(主从站通讯的周期)

(4)读链路的超时时间

(5)链路等待时间(等待从站响应的时间)

配置文件格式如下:

1,,,,,

PN,SN,LN,LT,SLT,LP

;通讯链路名,站号,链路号,链路类型,子链路类型,链路参数区

GME,65,0,1,GME,1’9600’8’1’0’2000’100’100

LinkDef.csv文件说明了主站进程的链路1负责与GME系统通讯,与该系统通讯的通讯站号是65、链路号是0、链路类型1代表该链路的通讯协议是Modbus-RTU、子链路类型是GME、串口号1、波特率为9600、数据位8位、停止位1位、奇偶校验位0位。主从站的通讯周期为2秒。读串口超时时间为0.1秒、读串口等待时间(延迟时间)为0.1秒。

规定链路参数区:

如果链路是MODBUS-RTU类型,输入信息依次为:串口号、波特率、数据位、停止位、校验位、通讯周期、读串口超时时间和读串口等待延迟时间。不同字段用“’”(小撇号)分割;如输入多个设备信息,则用“|”(竖线)分割。

如果链路是MODBUS-TCP类型,输入信息依次为:IP地址、端口号、超时时间和等待时间。不同字段用“’”(小撇号)分割;如输入多个设备信息,则用“|”(竖线)分割。

如果链路是IEC-104类型,输入信息依次为:端口号、第三方系统IP地址1、第三方系统IP地址2、……不同字段用“’”(小撇号)分割;如输入多个设备信息,则用“|”(竖线)分割。

2)ComPoints.csv文件主要是提供通讯数据点信息,该配置文件中应该包括以下配置信息:

(1)进程信息:版本号、站号、链路号、设备号

(2)数据点信息:通讯点项名、通道号、数据类型、数据长度、用户自定义数据(如Modbus下的寄存器地址、IEC870.5-104下的类型标识等)、输入输出类型、点类型(模拟量、开关量、SOE、字符串)

1,,,,,,,,,

PIN,SN,LN,DN,CN,DT,DL,UP,IOT,PT

;通讯点项名,站号,链路号,设备号,通道号,数据类型,数据长度,用户自定义数据,输入输出类型,点类型

AVI001.AV,65,0,1,0,9,4,40001,0,0

AVI001.QC,65,0,1,0,9,4,40001,0,0

DVI001.DV,65,0,2,1,4,1,30001,0,1

DVO001.QC,65,0,2,1,4,1,30001,1,1

ComPoints.csv文件中数据区的第一行信息说明,与GME系统通讯的65号通讯站的0号链路下,1号设备的第0个数据的点项名是AVI001.AV,代表当前值,存放在40001寄存器地址中,是模拟量输入点。

规定用户自定义参数区:

如果链路是MODBUS-RTU类型,输入信息依次为:通讯点项数据对应的寄存器地址。

如果链路是MODBUS-TCP或IEC-104类型,输入信息待定。

4 驱动程序的结构

驱动程序负责将第三方系统中采集的数据传送到共享内存的输入区中,并将共享内存输出区中的数据传送到相应的第三方系统中,在整个通讯站软件中处于数据传递的桥梁的作用。

根据Level2产生的配置文件LinkDef.csv提供了对应的链路数及其通讯协议类型,驱动程序启动对应的链路数据处理线程(以下简称子线程或链路线程)与第三方系统通讯。采用线程方式是为了减少系统资源的开销,同时提高程序的并发性和可扩展性。通讯站中,驱动程序最多支持4条链路,即最多启动四个线程进行数据处理。这些链路是三种链路类型中的一条或多条。内存和共享内存的数据更新。

主进程完成整个通讯驱动的初始化和控制功能,在各子线程中完成与第三方系统的通讯。各子线程之间相互独立,不存在相互的数据依赖关系。

5 驱动程序的数据流

为了保证将共享内存数据进行一次性更新,避免各子线程直接操作共享内存,在驱动程序内部开辟了数据缓冲区供主进程和各子线程进行数据交换使用。

主进程根据共享内存输入区和输出区为所有子线程创建两个全局缓冲区(这两个缓冲区是共享内存IO区数据在驱动内存中的映像):

输出缓冲区(命名为OutputBuf)指从共享内存输入区读取的用于发送给第三方的数据缓冲区。

输入缓冲区(命名为InputBuf)指各链路采集用来写入共享内存输入区的缓冲区。

数据在缓冲区依次按通道号、设备号、链路号进行排列存放(宏观来看,缓冲区的数据按链路类型存放在各自连续的单元中)。

6 驱动程序模块设计

结合驱动程序的功能和结构,对通讯驱动软件进行模块设计和划分。程序各模块的主要源文件定义如表1所示。

图1 在通讯站软件中驱动程序结构图

当主进程启动各链路子线程后,各链路子线程独立的进行数据发送和采集,主进程每隔一定时间间隔(暂定50ms,第三方系统数据发送周期是秒级,如周期太小交互频繁而影响性能可以在联调阶段适当调整数据交换的周期)进行驱动内存(数据缓冲区)和共享内存的数据交换。驱动程序启动后,在定时器的控制下,定时进行驱动

7 结论

通过分布式控制系统中通信软件的设计,使得RTS可以和modbusRtu、modbusTcp、iec104进行共享驱动,是通信数据的发送采集处理得到统一处理。高效快速,性能优越,利于在整个工业开发中的推广应用。

图2 驱动程序的数据流图

表1 主要源文件定义

[1]王常力,罗安.分布式控制系统(DCS)设计与应用实例[M].北京:电子工业出版社,2004.

[2]吕当侠.CAN总线的特点及应用[J].航空与航天,2005;(3):16~20.

[3]Microsoft.Microsoft speech SDK 5.1 documentation.http://download.microsoft.com/download/SpeechSDK/SDK/5.1/WXP/EN-US/sapi.chm.

[4]Verissimo P.Distributed computer-controlled systems:The DEAR-COTS approach[J].IFAC,2000.

猜你喜欢

驱动程序缓冲区线程
基于C#线程实验探究
基于国产化环境的线程池模型研究与实现
线程池调度对服务器性能影响的研究*
阻止Windows Update更新驱动程序
计算机硬件设备驱动程序分析
基于ARC的闪存数据库缓冲区算法①
一类装配支线缓冲区配置的两阶段求解方法研究
初涉缓冲区
多目标缓冲区生成算法
妙用鼠标驱动