王玉石 王志輝 廖常浩
珠海格力電器股份有限公司 廣東珠海 519070
家電產品內外機控制器或主板與顯示板之間的通訊數據一般都是采用UART串行通信進行傳送,數據包包含頭碼、數據長度、數據位、校驗碼、尾碼等。通訊時主機定時發送數據,從機正確接收完主機數據后進行應答,然后等待主機下一組數據,通過按位發送和接收字節,可以達到通訊的目的。
控制協議可以簡單地理解為一個由特定數據按照特定格式組織的、在特定網絡系統中傳輸的字符串。它由多個字段組成,每個字段表示特定含義??刂茢祿瑪祿r,兩端可以根據事先定義的協議字段含義及順序解析出數據進行相應處理字符串[1]。傳統的通訊協議解析方法,一般是把一種通訊協議解析直接寫進C語言程序,但家電產品種類繁多,同一產品包含多種型號,同一型號又包含不同版本的通訊協議,一旦通訊協議有所改動,又要重新修改程序。為了能夠在開發測試階段快速準確監控通訊數據,需要開發一種能夠快速解析通訊協議的監控系統。本文研究的正是一種通用的、能夠兼容所有版本的通訊協議的解析方法。
本方案包括兩部分的設計:上位機軟件和下位機軟硬件。監控系統架構如圖1所示,其中下位機主要實現整機控制器的底層通訊數據采集,把采集到的十六進制數據通過數據校驗后轉換為二進制數據;上位機主要實現通訊協議的解析和通訊數據的處理,通過制定一種通用的解析方法,來兼容所有版本的通訊協議,解析出Excel協議表,并將其轉換為二維數組,然后通過LabVIEW調用計算,并把最終的監控數據以顯示界面和曲線界面兩種形式呈現給用戶。通訊協議軟件實現了某種通訊協議在通訊各方之間正確、高效地轉換并傳輸數據[2]。

圖1 監控系統流程圖
LabVIEW是一種基于圖形化編程語言的虛擬儀器開發平臺,特別適用于測試、測量、儀器控制、過程監控和工業自動化等方面的工程應用軟件的開發。LabVIEW是工業標準的圖形化開發環境,結合了圖形化編程方式的高性能與靈活性,以及專為測試測量與自動化控制應用設計的高性能與配置功能,能為數據采集、儀器控制、測量分析與數據顯示等提供必要的開發工具[3]。它與常規編程語言有很大的不同,可以說是專門為工程師開發設計的語言,專業性很強,入門簡單,開發便捷,特別適合一些自動化測試系統的開發[4]。
如何把整機的通訊協議轉換成LabVIEW可調用的數組,是整個方案至關重要的一步。常用辦公工具Excel和LabVIEW中的二維數組十分相似,系統采用人性化的Excel編輯方式[5],通過制定一種通用的解析規則,可快速解析通訊協議。規定Excel表格的第一列是行序號索引No,第二列是每個參數的字節序號Sno,第三列是每個參數對應字節的位序號Sbit,第四列是每個位的長度Bitlen,第五列是每個位的狀態Used,包括使用狀態和預留狀態兩種,第六列是每個位的數據處理模式Mode,第七列是該位對應的參數單位Unit,第八列是參數名稱Name,后面的列依次是每個參數對應的數據值。例如,對于某款家電產品顯示板發送給主板的第一個數據位“運行狀態”,其索引值是0,字節序號是3,位序號是7,位長度是8,對應的處理模式是1,數據值分別是正常、自檢、維修等,根據采集數據處理后的值獲取其對應的運行狀態,具體如表1所示。

表1 Excel通訊協議
運用圖形化編程語言LabVIEW,將解析好的Excel文本數據轉換為可調用的二維數組,通過LabVIEW內置函數,可以很方便的將文本格式數據轉換為程序需要調用的數組格式,數組轉換vi如圖2所示。

圖2 數組轉換vi
下位機通過硬件采集板,從整機控制器獲取十六進制的底層通訊數據。硬件采集方案使用MCU和光耦進行隔離式采集,使用了MCU的串口采集和模擬串口采集功能,采集板如圖3所示。

圖3 采集板
為保證數據采集的準確性和實時性,下位機軟件采用串口UART協議,數據包間隔500 ms,速率9600 bps,并且發送TX與接收RX的數據包需要被分開獨立采集,使用我司已引進的成熟主芯片,該芯片有兩個UART口,穩定的波特率達到38400 bps,UART1用于與上位機通訊,UART0與定時器模擬的UART功能實現整機TX與RX的數據包采集,下位機軟件設計流程如圖4所示。

圖4 下位機軟件設計流程圖
接下來就是數據處理部分。為防止傳送的數據有誤,首先對上述采集的十六進制通訊數據進行校驗,校驗方式包括頭碼校驗、數據長度校驗、尾碼校驗,以及通訊協議本身校驗碼進行奇偶校驗或異或校驗,本方案采用頭碼、尾碼及協議碼共同校驗。將校驗后的十六進制數據轉換成二進制數據,因為每個參數占用的數據位數不同,因此需要轉換成最小的二進制數據進行處理。然后上位機再調用該二進制通訊數據及上述二維數組,通過每個參數名稱對應的處理模式,得出每個參數的實時數據。
處理模式主要有兩種,一種是通訊數據直接轉換成十進制數據,如表1中運行狀態對應的處理模式是1,即直接轉換成十進制數據;另一種是先轉換成十進制數據,再通過通訊協議規定的公式進行處理,如環境溫度對應的處理模式是2,為了避免溫度值超出一個數據位或出現負數,通訊協議中會通過內置的計算公式規避。
用戶界面分為顯示界面和曲線界面,具體如圖5、圖6所示。

圖5 監控數據顯示界面

圖6 監控數據曲線界面
顯示界面結合上述的實時數據,以及參數名稱和參數單位,得到每個參數的實時運行值,并以表格的形式呈現給用戶。
曲線界面采用LabVIEW內置函數“XY圖”,用戶勾選需要借用曲線觀測的參數,如溫度采集參數、壓縮機轉速參數等,以曲線的方式更加直觀的顯示。
該通訊監控系統開發完成后,應用在冰箱及電飯煲等家電產品的開發及測試階段。由于家電產品型號眾多,通訊協議各不相同,例如:冰箱通訊協議通常是主板和顯示板各發送一包數據,但由于冰箱型號多樣,各個型號對應的通訊協議差異很大,包括數據長度差異、參數名稱差異、校驗方式差異、計算方法差異等,運用本方案的通用解析方法,可快速配置Excel文本協議解析數據,調用對應版本的解析表,就可以達到監控通訊數據的目的,讓開發及測試人員能夠實時監控各負載的運行狀態,從而有效把控產品的研發質量,提高產品的測試效率。
本監控系統的設計與研究,提出了一種通用解析方法在家電產品控制器間進行通訊監控。通過對家電整機通訊協議的分析,解析出便于編輯的Excel文本格式的數據,并應用圖形化編程語言LabVIEW,使編程周期大大縮減。同時,監控系統后期維護簡單便捷,如果通訊協議改動或者用戶界面參數刪減,用戶只需配置Excel表即可,從而達到通用兼容的效果。另外,本監控系統還存在部分待完善功能,例如如何實現一個客戶端同時監控多個測試臺位的功能,以及如何結合硬件工裝開發自動化測試,是后續要開展的工作方向。