远程光电测控系统的设计与实现方法
发布时间:2009-08-11 来源:www.cechina.cn
0 引 言
外场光电测控是一种野外环境下进行的远距离非接触式的测量,随着被测目标的多样化对光电测控系统提出了更高的要求,导致单台光电测控设备不能满足试验的要求。
网络技术的日益成熟为测控系统提供了很好的解决途径,将现场的光电测控设备作为节点,通过以太网络将节点与数据处理中心连成有机的分布式测控系统,它综合利用了计算机网络技术、通信技术以及光电测控技术,实现了测量试验的远程控制。这使得测控系统的功能远大于系统中各独立设备功能的总和,图1所示为系统组成框图,由时统中心为各设备提供时钟及信号同步。各测控设备在功能上可以互为补充,采集的试验数据可以互为参考,大大提高了系统的利用率和数据的时效性。

图1 系统组成框图
1 系统体系结构
远程测控模式主要有C/S模式和B/S模式。由于C/S模式交互性强,具有强壮的数据操纵和事务处理能力,实时性和灵活性好,采用的协议标准只在内部统一,其相对专用性和封闭性使得整个基于C/S模式的系统相对安全。通过对远程光电测控系统的需求分析和功能定义,设计了采用TCP/IP协议,基于C/S操作模式的体系结构。这种方式隐含了客户端/服务器间硬件资源的不平等以及通信时的非对称性。在实际测控中,多台光电测控设备在不同站点同时进行测量,数据处理中心对多个测量站进行协调和监控,即为一客户端对多服务器的结构(客户端为数据处理中心,服务器为远端测量站)。
基于以太网的远程测控因网络传输不能达到十分严格的实时控制要求,因此,本方案采用保持型与完成型结合的远程监控方式,将客户端置于反馈回路之外.客户端监控程序发送控制命令和试验参数给服务器端设备控制程序,设备控制程序通过本地总线完成设备的运动控制和测量操作,并将执行结果返回给客户端用户。客户端控制各测量现场试验的进行并全程监控,一方面,利用UDP协议和双缓冲技术,对测量现场计算机的工作状况进行监控;另一方面,每台光电测控设备配有彩色监视摄像机,用户可以通过传回的图像了解测量现场概况。必要时可以通过修改试验参数对试验过程进行干涉,引导光电测控设备快速捕获目标,还可以通过网络采集设备状态信息,进行远程诊断,远程测控原理如图2所示。

图2 远程测控原理图
2 系统软件关键技术的设计与实现
该系统软件是在Windows平台下,Visual C++为设计开发环境,以Winsock和多线程技术实现数据远程传愉与测控过程远程控制,结合数据库管理技术,完成远程测控过程中测量数据、操作记录的保存和错误描述查询等功能。
2.1 通信协议
从客户端连接服务器然后开始远程实验,直到试验结束,整个过程中,客户端和服务器的数据交换是远程控制的重点间题。客户端要向服务器传递试验信息、控制参数、各种服务请求,服务器要向客户端传递试验结果、系统状态等。程序必须保证所有的数据有条不紊地传递而且可以被对方正确地接收和存取,而在Winsack基础上开发的服务器与客户机之间传送的只是字节流,要进行控制就必须将这些字节流转换为有意义的控制指令信息,因此必须约定双方数据通信的协议。
通信协议的复杂程度取决于控制系统的复杂程度。本系统中,通信协议分为服务器协议和客户机协议,客户机协议主要有控制命令、设置参数命令和取数据命令。服务器协议一般是对客户机相应命令的响应或执行的结果,以及光电测控设备获取的图像数据的传翰。表1列举了简单的客户端命令控制协议和服务器端命令响应协议。

2.2 异步通信
控制命令的数据量较小,且要求传输可靠性高,实时性好,在对单台和多台服务器控制过程中使用灵活,因此控制命令的传输使用TCP协议,荃于TCP协议的Winsock技术是C1S模型中的核心技术,有阻塞和非阻塞两种方式。阻塞方式使用简单。收发函数在被调用后一直要等到传输完毕或出错才能返回,阻塞期间,除等待网络操作的完成不能进行任何操作;非阻塞方式又称异步方式,数据收发函数调用后立即返回,当网络传输完成后,Winsock给应用程序发送一个消息,通知操作完成,可以根据发送的消息传出的参数判断操作是否正常,这种方式下,关键的问题是如何确定网络事件何时发生。
2.3 致据库技术
对于光电测控系统来说,最终目标是对被测对象的识别及其运动参数的获取,所以保存试验过程中的参数和结果数据就显得非常重要,这为数据再处理提供了依据,也为以后的试验提供了参考,为缩短试验周期提供了条件。另外,试验过程中,设备故障是以代码的形式传回客户端的,客户端需要对故障代码进行解释,将代码描述显示到用户界面上。
根据上面的分析,设计了历史数据记录表、操作记录表和故障描述查询表。数据记录表记录了现场设备返回的被侧目标信息数据,如方位、距离、姿态等;操作记录表要求记录控制命令、控制对象、操作时间、命令执行结果、错误描述、反馈时间等信息,对于设置参数命令,还要记录下参数设置值及返回值;故障信息根据具体操作命令和错误代码查找描述信息并显示。
下面一段代码示例了客户端利用Winsock技术以异步方式接收命令响应信息的操作,根据通信协议分析操作结果,如果控制操作失败,则从故障描述查询表中查找故障描述信息并提示用户。
WSAEVENT hNetEvent=WSACreateEvent();//创建事件对象
WSAEventSelect(s,hNetEvent,FD_ACCEPT︱
FD_READ);//关联事件对象和网络事件
//在事件对象上等待
DWORD EventCaused=WSAWaitForMuItipleEvents(2,hEvnets,FALSE,WSA_INFINITE,FALSE);
WSANETWORKEVENTS NetworkEvents;
WSAEnumNetworkEvents(s,hNetEvent,
&NetworkEvents);//查看发生的网络事件
//处理读事件、判断是否出错
if(NetworkEvents.INetworkEvents & FD_READ)
{if(NetworkEvents. iErroxCode[FD_READ_BIT]==0)
//接收命令响应数据
{::recv(s,(char *)&rsp,sizeof(rsp),0);
if(rsp.iReault==-1)
//创建SQL语句搜索数据库中错误信息描述
{sql=“select”from error_description where
CommandType=“+rsp. iCmdType+”and
CommandlD=“+rsp. iCmdID+”and
ResultlD=“+rsp. iResuItID+”;
try
{//按SQL语句打开数据库
……
if(m_pRecordset->adoEOF)
{……//数据库中没有该错误信息的描述,提示用户并返回}
else
{while(!m_pRecordset->adoEOF)
{//读出错误信息
temp=(LPCTSTR)(_ bstr_t)m_ pRecordset->GetCol lect(“Destription”);
m_pRecordset->MoveNext();}}
tttpRecordset->Close();//关闭数据库
……//提示用户哪台设备返回的故障描述信息f
catch(_com_error e)//捕捉数据库操作异常信息
……}
}
3 结束语
测控技术被认为是科学技术、国防现代化的重要条件和标志。测控水平要从整体上提高,不但要研发先进的测控技术;而且还要全面应用和推广成熟的技术。将成熟的网络通信技术与光电测控技术结合用于外场光电测控系统,组成了分布式远程光电测控系统,既发挥了各设备的特点,完成了试验任务,又克服了某些不适合人员操作的因素,该系统在实际应用中效果良好,也为外场测控系统更大规模的网络化奠定基础。