王玉石 王志輝 廖常浩
珠海格力電器股份有限公司 廣東珠海 519070
家電產(chǎn)品內(nèi)外機控制器或主板與顯示板之間的通訊數(shù)據(jù)一般都是采用UART串行通信進行傳送,數(shù)據(jù)包包含頭碼、數(shù)據(jù)長度、數(shù)據(jù)位、校驗碼、尾碼等。通訊時主機定時發(fā)送數(shù)據(jù),從機正確接收完主機數(shù)據(jù)后進行應答,然后等待主機下一組數(shù)據(jù),通過按位發(fā)送和接收字節(jié),可以達到通訊的目的。
控制協(xié)議可以簡單地理解為一個由特定數(shù)據(jù)按照特定格式組織的、在特定網(wǎng)絡系統(tǒng)中傳輸?shù)淖址K啥鄠€字段組成,每個字段表示特定含義??刂茢?shù)據(jù)幀數(shù)據(jù)時,兩端可以根據(jù)事先定義的協(xié)議字段含義及順序解析出數(shù)據(jù)進行相應處理字符串[1]。傳統(tǒng)的通訊協(xié)議解析方法,一般是把一種通訊協(xié)議解析直接寫進C語言程序,但家電產(chǎn)品種類繁多,同一產(chǎn)品包含多種型號,同一型號又包含不同版本的通訊協(xié)議,一旦通訊協(xié)議有所改動,又要重新修改程序。為了能夠在開發(fā)測試階段快速準確監(jiān)控通訊數(shù)據(jù),需要開發(fā)一種能夠快速解析通訊協(xié)議的監(jiān)控系統(tǒng)。本文研究的正是一種通用的、能夠兼容所有版本的通訊協(xié)議的解析方法。
本方案包括兩部分的設計:上位機軟件和下位機軟硬件。監(jiān)控系統(tǒng)架構如圖1所示,其中下位機主要實現(xiàn)整機控制器的底層通訊數(shù)據(jù)采集,把采集到的十六進制數(shù)據(jù)通過數(shù)據(jù)校驗后轉換為二進制數(shù)據(jù);上位機主要實現(xiàn)通訊協(xié)議的解析和通訊數(shù)據(jù)的處理,通過制定一種通用的解析方法,來兼容所有版本的通訊協(xié)議,解析出Excel協(xié)議表,并將其轉換為二維數(shù)組,然后通過LabVIEW調(diào)用計算,并把最終的監(jiān)控數(shù)據(jù)以顯示界面和曲線界面兩種形式呈現(xiàn)給用戶。通訊協(xié)議軟件實現(xiàn)了某種通訊協(xié)議在通訊各方之間正確、高效地轉換并傳輸數(shù)據(jù)[2]。
圖1 監(jiān)控系統(tǒng)流程圖
LabVIEW是一種基于圖形化編程語言的虛擬儀器開發(fā)平臺,特別適用于測試、測量、儀器控制、過程監(jiān)控和工業(yè)自動化等方面的工程應用軟件的開發(fā)。LabVIEW是工業(yè)標準的圖形化開發(fā)環(huán)境,結合了圖形化編程方式的高性能與靈活性,以及專為測試測量與自動化控制應用設計的高性能與配置功能,能為數(shù)據(jù)采集、儀器控制、測量分析與數(shù)據(jù)顯示等提供必要的開發(fā)工具[3]。它與常規(guī)編程語言有很大的不同,可以說是專門為工程師開發(fā)設計的語言,專業(yè)性很強,入門簡單,開發(fā)便捷,特別適合一些自動化測試系統(tǒng)的開發(fā)[4]。
如何把整機的通訊協(xié)議轉換成LabVIEW可調(diào)用的數(shù)組,是整個方案至關重要的一步。常用辦公工具Excel和LabVIEW中的二維數(shù)組十分相似,系統(tǒng)采用人性化的Excel編輯方式[5],通過制定一種通用的解析規(guī)則,可快速解析通訊協(xié)議。規(guī)定Excel表格的第一列是行序號索引No,第二列是每個參數(shù)的字節(jié)序號Sno,第三列是每個參數(shù)對應字節(jié)的位序號Sbit,第四列是每個位的長度Bitlen,第五列是每個位的狀態(tài)Used,包括使用狀態(tài)和預留狀態(tài)兩種,第六列是每個位的數(shù)據(jù)處理模式Mode,第七列是該位對應的參數(shù)單位Unit,第八列是參數(shù)名稱Name,后面的列依次是每個參數(shù)對應的數(shù)據(jù)值。例如,對于某款家電產(chǎn)品顯示板發(fā)送給主板的第一個數(shù)據(jù)位“運行狀態(tài)”,其索引值是0,字節(jié)序號是3,位序號是7,位長度是8,對應的處理模式是1,數(shù)據(jù)值分別是正常、自檢、維修等,根據(jù)采集數(shù)據(jù)處理后的值獲取其對應的運行狀態(tài),具體如表1所示。
表1 Excel通訊協(xié)議
運用圖形化編程語言LabVIEW,將解析好的Excel文本數(shù)據(jù)轉換為可調(diào)用的二維數(shù)組,通過LabVIEW內(nèi)置函數(shù),可以很方便的將文本格式數(shù)據(jù)轉換為程序需要調(diào)用的數(shù)組格式,數(shù)組轉換vi如圖2所示。
圖2 數(shù)組轉換vi
下位機通過硬件采集板,從整機控制器獲取十六進制的底層通訊數(shù)據(jù)。硬件采集方案使用MCU和光耦進行隔離式采集,使用了MCU的串口采集和模擬串口采集功能,采集板如圖3所示。
圖3 采集板
為保證數(shù)據(jù)采集的準確性和實時性,下位機軟件采用串口UART協(xié)議,數(shù)據(jù)包間隔500 ms,速率9600 bps,并且發(fā)送TX與接收RX的數(shù)據(jù)包需要被分開獨立采集,使用我司已引進的成熟主芯片,該芯片有兩個UART口,穩(wěn)定的波特率達到38400 bps,UART1用于與上位機通訊,UART0與定時器模擬的UART功能實現(xiàn)整機TX與RX的數(shù)據(jù)包采集,下位機軟件設計流程如圖4所示。
圖4 下位機軟件設計流程圖
接下來就是數(shù)據(jù)處理部分。為防止傳送的數(shù)據(jù)有誤,首先對上述采集的十六進制通訊數(shù)據(jù)進行校驗,校驗方式包括頭碼校驗、數(shù)據(jù)長度校驗、尾碼校驗,以及通訊協(xié)議本身校驗碼進行奇偶校驗或異或校驗,本方案采用頭碼、尾碼及協(xié)議碼共同校驗。將校驗后的十六進制數(shù)據(jù)轉換成二進制數(shù)據(jù),因為每個參數(shù)占用的數(shù)據(jù)位數(shù)不同,因此需要轉換成最小的二進制數(shù)據(jù)進行處理。然后上位機再調(diào)用該二進制通訊數(shù)據(jù)及上述二維數(shù)組,通過每個參數(shù)名稱對應的處理模式,得出每個參數(shù)的實時數(shù)據(jù)。
處理模式主要有兩種,一種是通訊數(shù)據(jù)直接轉換成十進制數(shù)據(jù),如表1中運行狀態(tài)對應的處理模式是1,即直接轉換成十進制數(shù)據(jù);另一種是先轉換成十進制數(shù)據(jù),再通過通訊協(xié)議規(guī)定的公式進行處理,如環(huán)境溫度對應的處理模式是2,為了避免溫度值超出一個數(shù)據(jù)位或出現(xiàn)負數(shù),通訊協(xié)議中會通過內(nèi)置的計算公式規(guī)避。
用戶界面分為顯示界面和曲線界面,具體如圖5、圖6所示。
圖5 監(jiān)控數(shù)據(jù)顯示界面
圖6 監(jiān)控數(shù)據(jù)曲線界面
顯示界面結合上述的實時數(shù)據(jù),以及參數(shù)名稱和參數(shù)單位,得到每個參數(shù)的實時運行值,并以表格的形式呈現(xiàn)給用戶。
曲線界面采用LabVIEW內(nèi)置函數(shù)“XY圖”,用戶勾選需要借用曲線觀測的參數(shù),如溫度采集參數(shù)、壓縮機轉速參數(shù)等,以曲線的方式更加直觀的顯示。
該通訊監(jiān)控系統(tǒng)開發(fā)完成后,應用在冰箱及電飯煲等家電產(chǎn)品的開發(fā)及測試階段。由于家電產(chǎn)品型號眾多,通訊協(xié)議各不相同,例如:冰箱通訊協(xié)議通常是主板和顯示板各發(fā)送一包數(shù)據(jù),但由于冰箱型號多樣,各個型號對應的通訊協(xié)議差異很大,包括數(shù)據(jù)長度差異、參數(shù)名稱差異、校驗方式差異、計算方法差異等,運用本方案的通用解析方法,可快速配置Excel文本協(xié)議解析數(shù)據(jù),調(diào)用對應版本的解析表,就可以達到監(jiān)控通訊數(shù)據(jù)的目的,讓開發(fā)及測試人員能夠實時監(jiān)控各負載的運行狀態(tài),從而有效把控產(chǎn)品的研發(fā)質量,提高產(chǎn)品的測試效率。
本監(jiān)控系統(tǒng)的設計與研究,提出了一種通用解析方法在家電產(chǎn)品控制器間進行通訊監(jiān)控。通過對家電整機通訊協(xié)議的分析,解析出便于編輯的Excel文本格式的數(shù)據(jù),并應用圖形化編程語言LabVIEW,使編程周期大大縮減。同時,監(jiān)控系統(tǒng)后期維護簡單便捷,如果通訊協(xié)議改動或者用戶界面參數(shù)刪減,用戶只需配置Excel表即可,從而達到通用兼容的效果。另外,本監(jiān)控系統(tǒng)還存在部分待完善功能,例如如何實現(xiàn)一個客戶端同時監(jiān)控多個測試臺位的功能,以及如何結合硬件工裝開發(fā)自動化測試,是后續(xù)要開展的工作方向。