以往采用邮寄或本地维修为主的通信设备测试、维修方式,因为在业务力量、时间、经费、效率等方面存在诸多弊端,已逐渐不能满足实际要求。随着通信测试及网络技术的迅猛发展,通过互联网络,将本地故障设备的测试结果传送到远端,由远端的专家进行诊断,充分发挥二者的优势,能极大地提高维修效率、缩短维修周期、节约维修成本,是对常规维修模式的一种挑战。该方案原理比较清晰、易懂,实现起来较容易。本文所讨论的远程控制就是为解决这个问题而提出的。
1 总体方案
本应用是在测试终仪中增加网络接口模块,以互联网为传输平台,在远端接入诊断PC而实现远程控制及诊断功能的,其框图如图1所示。
诊断专家人员可在诊断PC上通过Internet向异地测试仪发送指令,测试仪接收并按照指令要求完成对故障设备的自动测试,将测试数据通过网络传回诊断PC,建立数据实时交互的传输平台[1]。
2 基本原理
2.1 互联网的基本结构和特征
设备的远程监测诊断是计算机科学、通讯技术与故障诊断技术相结合的一种新的设备故障诊断模式。TCP/IP是发展至今最成功的通信协议。该协议分为4层,由上到下依次为应用层、传输层、网络层和链路层。
本应用使用的是EM2000网络模块,底下3层的较复杂的协议已经固化在他的ASIC中,能够实现透明的数据通信。这样,研究工作主要集中在应用层的设计和功能实现上。这包括建立在传输层上的数据帧定义、交换数据的定义、应用功能的设计和人机交互界面的设计等。
本应用中使用的是EM2000网关,他是用来在嵌入式系统与互联网建立数据连接和协议转换的设备。一方面PC端的网络应用程序将应用层数据打包成为IP包在网络上传送,EM2000将辨识和解析这些数据包,把应用层的原始数据转发至RS 232接口。另一方面EM2000也将RS 232接口的数据封装成为IP包,传送至PC端的网络应用程序。支持透明传输和简单协议两种工作方式;EM2002网关在网络接口部分具有WWW接口,用户可以通过浏览器在网络上实现对EM2002及串行设备的配置和管理。在网络中的具体位置如图2所示。
2.2 传输帧的定义
下面主要考虑第4层应用层的具体使用,即数据传输的帧格式、具体的定义等。根据本测试设备的状态和显示的功能,其格式可设计成2大类,即测试数据帧和命令控制帧。格式的设计应能实现系统对端间信息的无障碍交流、易于识别和判断,同时,还应保证传输的可靠性,兼顾信息利用率。对该系统,经过实际信息交互统计,确定使用一个字节的长度,即256种状态。
(1)帧类型定义
传输帧格式的定义如表1所示。第7位为类型定义位,“1”表示为数据帧;“0”为命令控制帧。
(2)数据帧
数据帧格式的定义如表2所示,主要用来传送检测的数据结果。根据需检测信道数量和检测项目来设置数据帧的字节。本系统设置8个数据信道,8个测试项目和“正常”/“故障”2个参数。
对于数据帧,考虑到本设备测试信道的数量和测试项目的多少,兼顾处理速度的快慢和复杂程度,最后确定信道号范围为0~7,占用数据帧的第6位至第4位,以二进制表示,高位在前,低位在后;测试项目范围为0~7,占用数据帧的第3位到第1位,表示方式同上(根据需要,以后扩容时,适当增加字节即可)。数据帧的最后一位定义为测试结果,“0”表示正确无误,“1”表示故障。这里没有采用通常的校验位,主要是因为该通信速率较低,目前网络传输的可靠性非常高,这方面可以忽略,以提高处理效率,简化程序编写难度。
(3)命令控制帧
命令控制帧的格式定义如表3所示。字节的最高位固定为“0”,主要用来传输测试终端和远端诊断终端的控制命令和设备状态信息。
命令控制帧按传送方向不同,可分为命令控制字和状态表示字2种。对于命令控制字,第6位到第4位为“101”,是命令识别位;后4位为命令代码,表示不同种类的测试进程。测试平台将自动返回相应的信息,其帧格式为第6至4位为“001”,这是信息数据的识别位,其余位为不同类型的定义。对于硬件复位命令,测试端返回1EH;链路检测为1FH。
3 具体实现
3.1 网络接口设计
嵌入式系统和微型计算机系统一样,必须通过TCP/IP协议转换才能接入Internet。在这里数据通信的设计主要体现在串口的设计[2],将MCU的数据按照预先定义的格式通过与转换芯片连接的串行接口发送或接收即可。设计中只要MCU的串口和EM2000网关的交换速率匹配即可,按照字节方式逐字发送和接收。另外,EM2000网关的接口电平与TTL兼容,这就省略了电平变换电路,使得设计实现起来更简便。
3.2 MCU的软件设计
嵌入式MCU系统软件主要由MCS-51汇编程序编写。为了实现本地键盘控制与异地远端控制同步工作,需要对部分软件进行重新编写。主要包括初始化程序、扫描程序、执行程序、串口中断调用程序、协议翻译程序等。
(1)存储单元初始化的特殊要求
众所周知,测试主程序首先对系统所用变量进行初始化,包含堆栈栈底的指针设定、寄存器、状态字的初始值设定、串口模式/状态字的初始设置等,但在这里由于远程通信的特殊情况,具有特殊要求。虽然部分存储单元在从加电到复位完成时,单元值已经被置位,但是仍需再置位。这主要考虑当在平台运行期间,各个寄存器和存储单元都会有不断变化的新值存入,这样,当进行远端复位操作时,有些存储单元的值不会自动复位,如果按原程序执行就会发生不确定的问题。为保证存储单元内容的一致性和可控性,对寄存器空间进行初始化是必不可少的。
(2)子程序间的通信机制
在处理键盘控制和远端控制同步运行时,嵌入式实时操作系统常采用邮箱查询方式。首先扫描及防抖程序[3]负责对键盘的操作进行扫描,经消除抖动和干扰影响后,将键盘值放入35H,并向邮箱发送“键盘动作事件”的信件;同时,串口通信程序不间断扫描端口数据,如果判断有命令数据注入,则将命令值放入36H内,同时向邮箱发送。串口命令发生事件”的信件。这样通过对主程序信箱的查询,如果发现有信件存在,则对信件进行相应翻译,变成机器可以执行的代码,对设备进行动作调度和相关信息处理。
3.3 TCP/IP端口配置
TCP/IP端口相当于挂在Internet网上的一块标准网络设备,具有惟一的全球识别MAC地址,可以接入任意的网段而不受限制。在配置网络参数时,只要知道通信双方的网络IP和路由,即可以轻松实现网络连接。该模块设置了1 B的缓冲区,通信速率为2 400 b/s,提高了IP包传输效率。
3.4 远端诊断终端的设计
远程诊断终端主要为软件程序设计,该部分采用Visual Basic,HTML等语言进行编写,主要分为2个部分。
(1)通信模块配置网页的设计及上传
在远程测试之前,需要对通信模块相关参数进行网络配置,使远程软件能够对测试终端进行访问和控制操作。本设计采用HTML语言编写了Web网页风格的界面,上载至模块FLASH存储器,用户可通过浏览器对硬件访问和网络配置。为加强保密安全,还增添了Password入口参数的设置。
(2)远端终端主程序的设计
主程序采用Microsoft Visual Basic语言编写,主要功能包括控制和测试2部分。测试前,先输入分配到的IP地址与要侦听的端口号,然后根据网络状况,利用VB语言中WinSock插件的Connect方法在本地计算机与测试平台之间建立一个Socket,以便完成控制等数据的传送和接收。各项操作的运行状态和操作结果都将由当前状态框实时显示。当本地计算机与远程测试平台连接正常之后,便可以开始测试。
4 应用验证
首先测试通信模块,在单台计算机上建立2个超级终端,一个与串口建立连接,另一个与Socket建立连接。在超级终端的一窗口内输入数据,另一窗口即时响应,说明网络接口模块功能正常。其次测试MCU串行通信性能,通过电平转换电路建立与计算机的串口连接,用超级终端进行数据传输验证。完成后,对全系统进行联调,先进行直连试验,即将测试终端