一种用于家用电器通讯数据监控系统的通用解析方法研究
2022-04-14王玉石王志辉廖常浩
王玉石 王志辉 廖常浩
珠海格力电器股份有限公司 广东珠海 519070
0 引言
家电产品内外机控制器或主板与显示板之间的通讯数据一般都是采用UART串行通信进行传送,数据包包含头码、数据长度、数据位、校验码、尾码等。通讯时主机定时发送数据,从机正确接收完主机数据后进行应答,然后等待主机下一组数据,通过按位发送和接收字节,可以达到通讯的目的。
控制协议可以简单地理解为一个由特定数据按照特定格式组织的、在特定网络系统中传输的字符串。它由多个字段组成,每个字段表示特定含义。控制数据帧数据时,两端可以根据事先定义的协议字段含义及顺序解析出数据进行相应处理字符串[1]。传统的通讯协议解析方法,一般是把一种通讯协议解析直接写进C语言程序,但家电产品种类繁多,同一产品包含多种型号,同一型号又包含不同版本的通讯协议,一旦通讯协议有所改动,又要重新修改程序。为了能够在开发测试阶段快速准确监控通讯数据,需要开发一种能够快速解析通讯协议的监控系统。本文研究的正是一种通用的、能够兼容所有版本的通讯协议的解析方法。
1 通讯监控方案设计
本方案包括两部分的设计:上位机软件和下位机软硬件。监控系统架构如图1所示,其中下位机主要实现整机控制器的底层通讯数据采集,把采集到的十六进制数据通过数据校验后转换为二进制数据;上位机主要实现通讯协议的解析和通讯数据的处理,通过制定一种通用的解析方法,来兼容所有版本的通讯协议,解析出Excel协议表,并将其转换为二维数组,然后通过LabVIEW调用计算,并把最终的监控数据以显示界面和曲线界面两种形式呈现给用户。通讯协议软件实现了某种通讯协议在通讯各方之间正确、高效地转换并传输数据[2]。
图1 监控系统流程图
LabVIEW是一种基于图形化编程语言的虚拟仪器开发平台,特别适用于测试、测量、仪器控制、过程监控和工业自动化等方面的工程应用软件的开发。LabVIEW是工业标准的图形化开发环境,结合了图形化编程方式的高性能与灵活性,以及专为测试测量与自动化控制应用设计的高性能与配置功能,能为数据采集、仪器控制、测量分析与数据显示等提供必要的开发工具[3]。它与常规编程语言有很大的不同,可以说是专门为工程师开发设计的语言,专业性很强,入门简单,开发便捷,特别适合一些自动化测试系统的开发[4]。
2 通讯监控方案实施
2.1 通讯协议解析
如何把整机的通讯协议转换成LabVIEW可调用的数组,是整个方案至关重要的一步。常用办公工具Excel和LabVIEW中的二维数组十分相似,系统采用人性化的Excel编辑方式[5],通过制定一种通用的解析规则,可快速解析通讯协议。规定Excel表格的第一列是行序号索引No,第二列是每个参数的字节序号Sno,第三列是每个参数对应字节的位序号Sbit,第四列是每个位的长度Bitlen,第五列是每个位的状态Used,包括使用状态和预留状态两种,第六列是每个位的数据处理模式Mode,第七列是该位对应的参数单位Unit,第八列是参数名称Name,后面的列依次是每个参数对应的数据值。例如,对于某款家电产品显示板发送给主板的第一个数据位“运行状态”,其索引值是0,字节序号是3,位序号是7,位长度是8,对应的处理模式是1,数据值分别是正常、自检、维修等,根据采集数据处理后的值获取其对应的运行状态,具体如表1所示。
表1 Excel通讯协议
2.2 数组转换
运用图形化编程语言LabVIEW,将解析好的Excel文本数据转换为可调用的二维数组,通过LabVIEW内置函数,可以很方便的将文本格式数据转换为程序需要调用的数组格式,数组转换vi如图2所示。
图2 数组转换vi
2.3 数据采集
下位机通过硬件采集板,从整机控制器获取十六进制的底层通讯数据。硬件采集方案使用MCU和光耦进行隔离式采集,使用了MCU的串口采集和模拟串口采集功能,采集板如图3所示。
图3 采集板
为保证数据采集的准确性和实时性,下位机软件采用串口UART协议,数据包间隔500 ms,速率9600 bps,并且发送TX与接收RX的数据包需要被分开独立采集,使用我司已引进的成熟主芯片,该芯片有两个UART口,稳定的波特率达到38400 bps,UART1用于与上位机通讯,UART0与定时器模拟的UART功能实现整机TX与RX的数据包采集,下位机软件设计流程如图4所示。
图4 下位机软件设计流程图
2.4 数据处理
接下来就是数据处理部分。为防止传送的数据有误,首先对上述采集的十六进制通讯数据进行校验,校验方式包括头码校验、数据长度校验、尾码校验,以及通讯协议本身校验码进行奇偶校验或异或校验,本方案采用头码、尾码及协议码共同校验。将校验后的十六进制数据转换成二进制数据,因为每个参数占用的数据位数不同,因此需要转换成最小的二进制数据进行处理。然后上位机再调用该二进制通讯数据及上述二维数组,通过每个参数名称对应的处理模式,得出每个参数的实时数据。
处理模式主要有两种,一种是通讯数据直接转换成十进制数据,如表1中运行状态对应的处理模式是1,即直接转换成十进制数据;另一种是先转换成十进制数据,再通过通讯协议规定的公式进行处理,如环境温度对应的处理模式是2,为了避免温度值超出一个数据位或出现负数,通讯协议中会通过内置的计算公式规避。
2.5 界面呈现
用户界面分为显示界面和曲线界面,具体如图5、图6所示。
图5 监控数据显示界面
图6 监控数据曲线界面
显示界面结合上述的实时数据,以及参数名称和参数单位,得到每个参数的实时运行值,并以表格的形式呈现给用户。
曲线界面采用LabVIEW内置函数“XY图”,用户勾选需要借用曲线观测的参数,如温度采集参数、压缩机转速参数等,以曲线的方式更加直观的显示。
3 方案效果
该通讯监控系统开发完成后,应用在冰箱及电饭煲等家电产品的开发及测试阶段。由于家电产品型号众多,通讯协议各不相同,例如:冰箱通讯协议通常是主板和显示板各发送一包数据,但由于冰箱型号多样,各个型号对应的通讯协议差异很大,包括数据长度差异、参数名称差异、校验方式差异、计算方法差异等,运用本方案的通用解析方法,可快速配置Excel文本协议解析数据,调用对应版本的解析表,就可以达到监控通讯数据的目的,让开发及测试人员能够实时监控各负载的运行状态,从而有效把控产品的研发质量,提高产品的测试效率。
4 结论
本监控系统的设计与研究,提出了一种通用解析方法在家电产品控制器间进行通讯监控。通过对家电整机通讯协议的分析,解析出便于编辑的Excel文本格式的数据,并应用图形化编程语言LabVIEW,使编程周期大大缩减。同时,监控系统后期维护简单便捷,如果通讯协议改动或者用户界面参数删减,用户只需配置Excel表即可,从而达到通用兼容的效果。另外,本监控系统还存在部分待完善功能,例如如何实现一个客户端同时监控多个测试台位的功能,以及如何结合硬件工装开发自动化测试,是后续要开展的工作方向。