摘要:以精密
离心机为背景,对基于DCOM的分布式实时诊断与监控系统设计中涉及的主要问题和关键技术进行研究。结合具体的实际系统,采用分布式组件的方法,实现了精密
离心机控制局域网络,使得整个系统在系统维护、实时处理能力上有了很大的提高。长期运行的结果表明,该系统能够完成测试任务,并达到要求的性能指标。
关键词:精密离心机;实时故障诊断与监控;分布式组件对象模型;DCOM
中图分类号:U666.1文献标识码:A
0 引言
精密离心机作为一种重要的惯导测试设备,属于复杂的大型旋转机械系统。它的高精度特性使得控制、测量及机械设计趋于复杂,包括位置控制、速率控制、温度控制、气压控制、湿度控制、超速保护等子系统。每个子系统都是独立的计算机控制系统,同时精密离心机工作在高速旋转状态。为了人员和设备的安全,整个离心机被放置在密闭的钢结构的保护罩中,这就要求控制系统具有网络通讯、远程控制能力,同时对系统的实时性、可靠性、开放性提出了更高的要求。
IBM和Microsoft公司认为,未来的软件应用体系结构必然为分布式网络体系结构。面对这样的发
1DCOM分布式组件技术在工业控制中的应用展趋势,分布式组件技术及基于组件技术的分布式软件平台也将是控制局域网络软件的重要发展方向。
Microsoft的DCOM即分布式组件对象模型,支持在局域网、广域网上不同计算机对象之间的通讯。利用DCOM技术能够使控制程序实现物理空间上的分布性,而且在DCOM组成的分布式控制局域网络中,DCOM已经处理了底层的网络协议细节问题,从而使控制系统开发人员能够集中精力解决控制对象的实际问题。
整体结构
当客户进程和组件位于不同的机器时,DCOM仅仅只是用网络协议来代替本地进程之间的通讯。图1显示了DCOM的整体结构:COM运行库向客户和组件提供了面向对象的服务,并且使用RPC和安全机制产生符合DCOM线路协议标准的标准网络包。
DCOM组件具有位置透明性,无论它是位于客户的同一进程中,还是在其它地方(甚至在地球的另一端),客户连接组件和调用组件的方法都是一样的。DCOM不仅无需改变源码,而且无需重新编译程序。一个简单的再配置动作就改变了组件与组件之间相互连接的方式。
DCOM由于具有语言独立性,使得控制系统开发人员可以选择他们最熟悉的语言和工具来进行开发,特别适合团队协作开发。DCOM将网络循环时间最小化,避免了网络中潜在的拥塞。DCOM选择了无连接UDP协议作为的传输协议。协议的无连接特性使得DCOM能够将许多低级别的确认包和实际的数据以及地址合法性检查(pinging)信息混合起来,从而改善了性能。即使是运行在面向连接的协议上,DCOM也优于传统的面向特殊应用的协议。DCOM使用了WindowsNT提供的扩展的安全框架。WindowsNT提供了一套稳固的内建式安全模块,DCOM无需在客户端和组件上进行任何专门为安全性而做的编码和设计工作,就可以为分布式控制局域应用系统提供安全性保障。
总之,DCOM技术为控制局域网络软件开发的带来全新的革命。
2 基于DCOM的分布式实时诊断与监控系统的结构
精密离心机系统分别由动态半径及失准角测量系统、温度控制系统、主轴控制系统、动平衡系统、鸟笼控制系统、中心监控系统、故障诊断系统组成。
图 2
如图2所示,每个系统都是独立的计算机控制系统,DCOM客户端和组件根据设计配置在各子系统中,通过100M交换机组成了局域控制网络。
主轴控制系统控制整个离心机大臂的旋转,其精度和稳定性对整个系统的影响至关重要。主轴控制系统控制离心机的旋转速度、旋转方式和显示运行状况,同时负责把一些运行状态传送到远程的中心管理机,并能接收到中心管理机的控制命令并通过WDM驱动程序控制主轴的运行。
鸟笼控制系统对精密离心机系统的精密测试端进行控制,它的精度和稳定性同样对于被测惯性器件的测试精度至关重要。
动平衡系统用于避免由于旋转机械不平衡而产生振动、噪声及部件破坏等现象,采用自动平衡技术在某些平面上加上或减去校正质量,因而改善了运动部分的质量分布,使校正质量产生的振动与不平衡产生的振动相互抵消,消除不平衡力,实现旋转机械转子的自动平衡。
温度控制系统对惯性器件的测试环境温度进行控制,从而为测试设备提供一个恒定温度的测试环境,以满足对加速度计测试的精度要求。
精密离心机工作在高速旋转状态。为了人员和设备的安全,整个离心机被放置在密闭的钢结构保护罩中;中心监控系统和故障诊断系统位于远程操作控制平台,操作人员通过中心监控系统实现对上述各子系统的远程控制,发送控制指令。
同时各子系统的运行状态也实时显示在屏幕上,中心监控系统还利用视频监控系统直接对工作仓内
精密离心机的工作状况进行实时监控。
此外对于精密离心机系统这样一个大型的高速旋转机械系统,其安全性显得至关重要,稍有不慎,后果不堪设想。因此,故障诊断与安保系统必不可少。当离心机大臂高速运转时,由于外界干扰或者系统本身的不稳定因素,有可能出现旋转速度超过设定状态或飞车等各种难以预料的现象。对于这些情况,我们设置了超速报警,当出现飞车事故时,能及时自动急停保护,以防止出现人员伤亡或设备损失等危险情况。对于精密离心机系统这种高速旋转的大型的机械惯性系统来说,提前预报比实时报警更加重要,因此故障诊断系统除了具有实时诊断报警功能外,还利用数据挖掘技术实现历史数据的故障分析。
3 DCOM关键技术在精密离心机中具体实现
下面以运行在主轴控制系统上的测角采集组件为例,说明精密离心机各子系统如何利用DCOM构成了局域控制网络。
图 3
如图3所示,精密离心机运行时,中心管理机向主轴控制系统发送控制指令,同时主轴的运行参数,包括角度、速度数据也要实时传送到中心控制机,并在监控屏幕上显示,而同时动平衡系统在测试主轴旋转转子的不平衡性时,也需要主轴的角度数据。按照传统的SOCKET网络编程技术,就要在主轴控制系统软件中为二者分别开设网络端口和相应的网络链接传输代码,而利用DCOM的组件复用特性,只需要在主轴控制系统设置一个测角数据采集组件,中心监控系统和动平衡系统都可以通过DCOM客户请求的形式,访问主轴控制系统服务器,实现对测角数据采集。
客户端程序运行在中心监控系统和动平衡系统之中,为了激活DCOM服务器,必须在客户端做如下工作:将服务器计算机名字载入到 COSERVERINFO结构体,然后调用CoCreateInstanceEx(),包括相应的参数和一个称为MULTI_QI的结构体。在任何的 DCOM编程中,首先要做的第一件事情是调用CoInitialize()。我们将使用默认的线程模式,也就是独立线程。
//初始化DCOMhr=CoInitialize(0);
进行远程DCOM连接时,你必须指定服务器计算机的名字。计算机的名字可以是一个标准的UNC计算机名字或者是一个TCP/IP地址。该服务器的名字将会被载入到一个COSERVERINFO结构体中。这个结构体需要一个指向宽字符
(wide-character)的指针以得到服务器的名字。
设置好COSERVERINFO结构体。我们将把它传送到CoCreateInstanceEx以指定服务器。 CoCreateInstanceEx可一次返回超过一个接口。它通过传送MULTI_QI结构体的一个数组来做到这一点。数组的每个元素指定了一个单一的接口。CoCreateInstanceEx将会填入到数据请求中。
//为CoCreateInstanceEx定义MULTI_QI结构体
MULTI_QIqi[2];
memset(qi,0,sizeof(qi));
qi[0].pIID=&IID_IGetInfo;
qi[1].pIID=&IID_ISomeOtherInterface;
hr=CoCreateInstanceEx(CLSID_GetInfo,NULL,CLSCTX_SERVER,&cs,2,qi);
一切准备好后,就可以调用CoCreateInstanceEx。一旦已经确定接口被返回了,就表示客户端连接到DCOM服务器,你就可以使用这个接口指针调用相应的方法实现控制与数据采集功能。
4 结论
目前,精密离心机各子系统运行平台为Windows2000平台,利用DCOM技术构成的控制局域网络,已经实现远程控制和数据采集、故障诊断等功能,系统安全可靠。
最后还要指出,一种新的软件开发技术是否真正适合应用到工业控制领域,需要我们审慎分析和实践的检验。由于DCOM在远程连接、传输速度与透过防火墙访问的能力还存在一定问题,所以作者更建议把DCOM技术应用到控制局域网络而不是广域网中。