基于Ethernet的低压电力线载波阻抗动化测试系统
2.2 终端以太网通信方式的命令收发测试
测前需先确定DZ3载波阻抗测试终端的硬件无故障,程序修改完编译无错误后即可载入芯片中开始具体的测试。测试方法是先使用网络调试助手发指令给终端,若终端能辨识出接收的指令正确与否,同时正确回复所有接收正确的指令,则表示终端软、硬件均无误,可与主站连接正常工作。终端回复的数据包中数据格式多样,有些为十六进制数据,有些则为BCD码,还有些为WORD型数据。
主要测试的几条常用指令如下:
(1) ID号的上传
主站开机,若选择以太网通信方式,主站向终端发送“04 04 FF 00”命令,要求终端上传ID号,终端中断接收函数(void IntUart0Rx(void) interrupt 4,串口0接收中断函数)接到04命令后,进入GPRS_RecString_Comp函数,对接收到的串比较,判断接收到的串中与04命令匹配后,对相应的标志置位设置为1,表示终端连接上网络了。又返回中断接收函数。后进入USB_Poll()函数,若Comcode=0x04,用串口发送ID给主站。具体测试如下:
主站发:04 04 FF 00
终端回复:相应终端设备的ID号,如84 00 00 0C 0C 05 00 01 03 03 80 00。
终端回复的数据串表示接收数据的长度为12位(终端回复主站的命令的第3位与第4位表示报文长度,00 0C是十六进制数据,转为十进制数值为12),该测试终端的ID号的流水号为: 000133。
若终端无回复,则需先检查网络调试助手与终端是否已建立连接,确定连接后,逐步调试程序,查看程序的串口接收函数中有无指令接收到,如此逐步查询直至找到具体故障点。若终端回复的位数不对或是回复的数据有误,则需先查看接收到的指令是否正确,若正确则进入相应指令的数据处理函数,辨别是终端数据处理不当还是数据包发送时发生了掉包故障,亦或是主站接收程序的故障。
(2)状态读回
主站发要求读回当前测试状态的08命令给终端,终端接收到命令,进入USB_Poll() 函数,先解析命令,得知是08命令后(即Comcode=0x08),进入08命令的处理程序,数据处理后需上传给主站的数据包使用串口发送给主站。测试如下:
主站发:08 04 F3 00
终端回复:终端设备的当前具体状态,如88 00 00 12 05 02 A0 8C 20 11 07 07 17 16 34 19 55 00。
从接收数据串的第3位和第4位可知主站接收到的这串数据长度为18位(00 12十进制为18),05表示测试的组间时间间隔为5 min,02表示频点时间间隔为2 min,当前测试频点为110 kHz(A08C十进制为41 100,
41 100-40 000=1100,1 100/10=110),20 11 07 07 17 16 34 19则表示当前的时间状态:2011年、周六、7月、17日、16时、34分、19秒。
其他所有指令的发送与接收都是在确定ID号上传正确后才可进行,此时可确定串口的收发程序无误,直接调测命令解析与数据处理部分的程序。
(3) 阻抗实时测量
主站发03命令给终端,终端接收到命令,进入USB_Poll()函数,解析得知是03命令后(即Comcode=0x03),进入03命令的处理程序,在实时测量结束后,把测量所得的数据通过串口发送当前状态给主站。阻抗实时测量的测试过程如下:
主站发:03 04 F8 00
终端回复:终端当前测量的频率点、阻抗模值及相位等数据。如83 00 00 21 11 07 15 2B 5C 16 09 00 31 FF F8 52 6C 16 09 00 66 FF FD 79 7C 16 09 00 CC FF FD 91 00。
终端答复主站的这串数据的长度为33位(00 21十进制为33),11 07 15表示11年7月15日,2B 5C表示测试频率点为110(2B 5C十进制为11 100, 11 100-10 000=1 100,1 100/10=110) ,16 09表示16时9分,阻抗模值为20.4(00 CC十进制为204,204/10=20.4),FF FD分别为相位高低位的计算参数,91为校验位,00表示最后的结束符。终端实时测量的具体回复数据会依据当前主站设置测量的参数值而变化。
若终端回复的数据与主站设置的参数不一致,需要查看03命令的解析程序解析结果是否正确,若命令解析无误则应逐步调试阻抗测量部分的程序,观察几条关键程序执行后得到的结果与理论值是否相近。
(4) 读终端上报数据
当测试人员想查看前一天的测试数据时,测试人员可登入主站管理软件,用主站发02命令给终端,02命令可使终端把所有的测试数据上传给主站。终端接收到命令,进入USB_Poll() 函数,解析得知是02命令后(即Comcode=0x02),进入02命令处理的那段程序,除中间的7次循环发送0这一点上存在区别(以太网通信方式不发而USB发)外,其他数据都由串口发送给主站。02命令的回复数据包含了前一天或是前几天的测试数据(DZ3阻抗测试终端最多可记忆8天的测量数据),因此其回复的数据包长度是所有报文指令中最长的。具体测试结果如下:
主站发:02 04 F9 00
终端回复:终端内存储的所有阻抗测量数据。如82 00 00 27 12 04 05 31 9C 00 01 09 00 00 CB FF FC 58 AC 00 01 09 00 02 0A FF FB 7F BC 00 01 09 00 05 ED FF FC F4 00,具体回复的数据依据终端测量所得的数据而定。
终端回复的82报文内容可分为三部分:数据头、数据段及结束段。数据头含命令类型、回复命令的状态、数据包的长度及时间四点。如上面回复报文中的前几位82 00 00 27 12 04 05表示终端回复的是82命令,00表示命令状态正常,00 27说明数据包长度为39位,发送时间为12年4月5日。数据段由多个阻抗测试数据块组成,解析数据块可得知测试的频率点、此频率点下测试所得的数据长度、测试该点的时间、测得的阻抗模值及相位。例子中的第一个数据块31 9C 00 01 09 00 00 CB FF FC即表示测试频点为270 kHz(31 9C十进制为12 700,(12 700-10 000)/10=270),00 01是WORD型数据表示该数据块的长度,09 00 说明测试时间在9点整,00 CB用于计算阻抗模值,FF FC则用于相位的计算。终端回复的数据包的最后两位数据F4 00是结束段,F4为校验位,00是结束符。
一台终端用于测试的时间越长,内部存储的数据会随之增多(每台终端最多可存储8天的测量数据)。终端传给主站的上报数据越多,主站接收数据包的过程中就有可能发生数据掉包或数据错误等故障,这时可用网络调试助手发送02命令给终端,若网络调试助手接收到终端回复的数据包完整,则表示故障点在主站的接收或解析数据包程序中,否则表示终端有故障。
(5) 错误命令
由于传输过程中的各种干扰,终端接收到的命令有可能发生错误,终端在接收到错误的命令后会回复主站并要求其重发。测试过程如下:
主站发:16 04 ED 00(该命令不存在)
终端回复:CC 00 00 07 16 22 00
CC表示终端接收到的命令是不在协议规定的范围内的异常命令码,00 07说明该回复数据有7位(00 07为十进制7),16是指接收到的错误命令码(以16H开头的命令),22是校验位,00为结束符。
(6) 其他命令
主站发命令给终端,终端接收到命令,进入USB_Poll() 函数,解析得到Comcode后,依据Comcode的具体数值判断得知主站发给终端的是哪一条命令,随后进入这条命令相应的命令处理程序,最后把需要发送的数据通过串口传到终端的串口转以太网工作模块,通过以太网把数据包传给主站。
- 面向信号自动测试系统信号组件的设计(04-17)
- 飞机执行器寿命测试(06-14)
- 基于发动机性能虚拟仪器测试系统设计(05-12)
- 选择硬件在环(HIL)测试系统I/O接口(06-12)
- 基于虚拟仪器的机载陀螺仪测试系统研究(08-03)
- 选择测试和测量系统时应考虑的因素(08-15)