![]() |
|
||||||||||||||
| | 网站首页 | 文章中心 | 下载中心 | ARM技术交流社区 | 供求信息 | 在线咨询 | 数据手册 | | ||
|
||
|
|||||
| 一个分布式监控系统的软件设计 | |||||
作者:佚名 文章来源:不详 点击数: 更新时间:2006-11-3 ![]() |
|||||
摘 要 讨论了一个分布式监控系统的软件设计。给出了系统结构、冗余设计及软件设计要点。 关键词: 分布式系统 网络通信ActiveX自动化 1 系统结构 系统结构见图1, 2 冗余设计 对于可靠性要求较高的系统,常常采用冗余设计以提高可靠性。本系统的现场计算机为双机热备,监控级计算机也可根据需要进行双机热备。
双机热备必须解决故障识别和状态镜象两个问题,但为实现快速切换,应尽量简化算法,同时尽量减少交换信息,因此如果状态信息不是很重要,则不必随主备信息一起传送。基于上述思想,定义的主备机报文格式见图2, (1)信息标识:标识报文类型,共定义了三种报文: a)普通报文:由主备机正常进行交互用的报文,称主机发往备机的报文为请求报文,备机发往主机的报文为应答报文。 b)切换报文:当主机想转为备机时,发送此报文。该报文是非常必要的,一种情况是当现场计算机与现场设备失去联系时,就需要主动进行切换。 c)退出报文:当某一台机器退出时,应发送此报文,否则对方将认为该机故障。 (2)主备标志:指示本站是否为主机,“1”表示主机,“0”表示备机。 具体实现方法为:主机定时向备机发送请求报文,备机收到后就发一个应答报文;同时另设一定时器,当收到对方的一个报文就把该定时器清0,与此同时定时器定时加1。若定时器溢出,则表示对方故障,否则表示对方正常。程序包括定时发送、故障检测及接收处理三部分,它们是并行工作的,流程图见图3。通过对发送定时器及检测定时器定时间隔及检测次数的设定,可以决定切换时间。 3 软件设计
系统软件分为现场级与监控级两部分,其中监控级包括人机接口及监控级自动化服务器两部分,见图4。 3.1 数据传输方式及通信可靠性 本系统的网络操作系统为Windows NT,网络通信协议为TCP/IP,采用Windows Socket进行通信程序的设计。Windows Socket有流式与数据报两种。前者为面向连接服务,后者为无连接服务。考虑到监控系统的数据量较小,而对实时性要求较高,因此采用数据报方式。 采用数据报方式的另一点考虑是,它可以广播。在本系统中,现场工控机采用定时广播的方式传输数据,这种方式有如下优点: 1) 解决了主备机之间的数据镜像问题。 2) 不需设置IP地址。这有两层含义,一方面发送方不需知道接收方的地址,因为IP广播地址是个固定地址;另一方面,各监控计算机也不必知道各现场计算机的IP地址,因为当它收到广播后,就可以获得发送方的IP地址,然后把它存在一张地址表中,以后向该现场计算机发送指令时就可以直接从地址表中取出其IP地址。这种处理方法有点类似于TCP/IP协议地址解析中的动态联编1。但数据报方式的可靠性不如流式高。对于现场计算机,因为数据定时广播,这种可靠性的差别并无大碍。但对监控计算机而言,它发出一个请求,必须知道该请求是否被响应。因此采用了异步确认机制(见图5), 3.2 系统信息的处理 监控系统中主要包括如下三种数据: (1) 现场数据:包括现场信号测量值、设备运行状态、报警信息及其它由现场计算机产生的数据。 (2) 控制指令:如控制数字量输出、模拟量输出及现场设备等的控制字。 (3) 系统信息:主要是一些系统管理信息,如控制权限,监控计算机登录状态等。 这些信息要么由现场计算机采集或产生,要么由监控计算机写入现场计算机,但最终还是要存入现场计算机并向外定时广播。前两种信息由于直接产生于或作用于现场,因此存于各自的现场计算机。但系统信息是全局信息,是所有站共享的信息,这样存在着如下问题:当监控计算机写入系统信息(如登录)时,应把它发向哪个现场计算机呢?如果向所有站广播,就存在着一致性问题。正确的做法是:把一台现场计算机作为系统服务器,系统信息都写入该服务器中,然后由它向其它站广播。那么应选择哪个现场计算机,并且使所有站(包括现场级与监控级)都选择同一个现场计算机?本系统采取一种动态算法实现了这种选择,并且当该现场计算机故障时自动转移到另外的现场计算机。 具体方法参见图6: 3.3 监控级自动化服务器的设计 监控级软件主要是为操作人员提供人机界面,但它同时还要与现场计算机进行通信,为把界面设计分离开来,我们采用了Microsoft ActivX自动化技术实现了这一设计思想。这样,界面设计人员可以采用目前流行的各种可视化开发工具集中精力进行界面设计,而且可以根据需要设计不同的界面,在我们的系统中就有两种界面。 自动化技术是Microsoft ActivX组件技术中的一种,它包括自动化服务器和自动化控制器两种,其中自动化控制器是指使用和操纵自动化服务器的应用程序(如VBA),自动化技术通常是指自动化服务器。另一种最为常用的组件技术是ActiveX控件,但一个ActiveX控件只能提供一个lDispatch接口,而一个自动化服务器可以提供多个lDispatch接口。通过lDispatch接口,客户程序可以访问该接口的属性和方法。对于VBA客户程序来说,访问lDispatch接口的语法与访问VBA 对象的语法是一样的,因此,对于VBA客户程序而言,一个lDispatch接口就相当于一个对象。 自动化服务器通常采用层次结构来组织对象,Microsoft的许多自动化服务器都是这样组织的,如数据访问对象DAO。本系统的自动化服务器也采用了这样一种结构,见图7, 客户程序创建服务器的过程为:首先利用ProgID创建顶层对象(Application),然后利用该顶层对象提供的方法创建各集合并向其中添加元素,对集合的操作类似于VBA中的Collection对象,主要有Count(),ltem(),Add()等几种。应当指出,上面所讨论的对象层次结构及集合的概念只是一种设计思想,并非有现成的设计工具,我们采用VC++6.0设计了自己的集合类及自动化服务器,客户端采用VB6.0 本系统是按照分布式的思想进行设计的。分布式的特点就在于各节点是平等的,在数据传输方式、冗余设计及系统服务器的选择等处理上都体现了这一思想。本文给出的冗余设计,是基于网络的一种方法,其实现不依赖于操作系统、编程语言,是一种比较通用的方法。组件技术是软件发展的方向,本系统利用自动化技术将界面设计与底层设计分离开来,各自进行独立设计,充分体现了组件技术的优越性。 参考文献 1 周明天,汪文勇. TCP/IP网络原理与技术. 北京:清华大学出版社 2 (美)Jerry Anderson. visual C++5 ActiveX编程指南.北京:清华大学出版社 3 (美)Peter Norton, Rob McGregor.MFC开发windows95/NT4应用程序. 北京:清华大学出版社 (收稿日期:1999-06-16)
欢迎进入超前MCU技术论坛对
一个分布式监控系统的软件设计进行讨论!
|
|||||
| 文章录入:armopen 责任编辑:armopen | |||||
| 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | |||||
| 最新热点 | 最新推荐 | 相关文章 | ||
| 没有相关文章 |
| 网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |
| | 设为首页 | 加入收藏 | 联系我们 | 友情链接 | 版权申明 | 网站公告 | |||
|