白 曦,王 俊
(中國(guó)航空工業(yè)集團(tuán)公司西安航空計(jì)算技術(shù)研究所,西安 710068)
供電數(shù)據(jù)采集器與智能接觸器采用半雙工UART接口[1],通過(guò)異步串行通信接收和發(fā)送信息。供電數(shù)據(jù)采集器與智能接觸器間有2路RS485總線,每路總線采集4個(gè)只能接觸器狀態(tài)。RS485總線組網(wǎng)方式如圖1所示。
圖1 RS-485總線組網(wǎng)方式
穩(wěn)定可靠的通信不僅依賴硬件環(huán)境,也依賴于通信協(xié)議。主節(jié)點(diǎn)供電數(shù)據(jù)采集器與從節(jié)點(diǎn)智能接觸器之間的通信協(xié)議如圖2所示。
圖2 數(shù)據(jù)楨結(jié)構(gòu)
(1)數(shù)據(jù)幀頭:用于標(biāo)識(shí)數(shù)據(jù)幀的開(kāi)始,數(shù)據(jù)幀頭字由2個(gè)字節(jié)組成,主節(jié)點(diǎn)發(fā)送數(shù)據(jù)幀頭1的值為0xAA,數(shù)據(jù)幀頭2的值為0x55,主節(jié)點(diǎn)接收數(shù)據(jù)幀頭1的值為0xEB,數(shù)據(jù)幀頭2的值為0x90。
(2)數(shù)據(jù)幀ID號(hào):RS485總線上的通信為廣播方式,所以每個(gè)智能接觸器應(yīng)該有獨(dú)立地址,判斷該數(shù)據(jù)幀是否應(yīng)該接收。
(3)命令/數(shù)據(jù):數(shù)據(jù)幀中實(shí)際數(shù)據(jù),為了保證數(shù)據(jù)通信可靠性,所有數(shù)據(jù)以0~9的ASCII碼發(fā)送,智能接觸器收到后再處理。
(4)校驗(yàn)和:用于數(shù)據(jù)幀的校驗(yàn),它是除本身外的塊中所有字節(jié)之和以256為模的二進(jìn)制補(bǔ)碼。
2.2.1 主從通信時(shí)序控制
供電數(shù)據(jù)采集器與智能接觸器的接口采用半雙工UART接口,通過(guò)異步串行通信接收和發(fā)送信息。RS485總線為半雙工通信方式,同一時(shí)刻只能有一個(gè)節(jié)點(diǎn)處于發(fā)送狀態(tài),否則會(huì)引起總線沖突[2]。供電數(shù)據(jù)采集器與智能接觸器之間的通信采用定時(shí)啟動(dòng)方式,供電數(shù)據(jù)采集器為主設(shè)備,智能接觸器為從設(shè)備,通信啟動(dòng)方式采用定時(shí)啟動(dòng)方式,主控站按約定周期向從控站發(fā)送數(shù)據(jù)命令,以啟動(dòng)一次數(shù)據(jù)傳送的通信,直到該次通信所應(yīng)傳送的數(shù)據(jù)傳送完畢,然后主控站才結(jié)束這次傳送過(guò)程,下一個(gè)通信周期又重復(fù)這個(gè)傳送過(guò)程。供電數(shù)據(jù)采集器每50ms輪詢一個(gè)智能接觸器,4個(gè)智能接觸器共需要200ms完成一次通信。一次通信包括從主設(shè)備發(fā)送數(shù)據(jù)到主設(shè)備接收數(shù)據(jù)完成,通信周期采用定時(shí)器實(shí)現(xiàn),定時(shí)器周期t為10ms,通信周期T為50ms,一次通信傳輸過(guò)程包括以下4個(gè)階段:一是在通信周期T到來(lái)時(shí),調(diào)度供電數(shù)據(jù)采集器發(fā)送任務(wù)組織發(fā)送數(shù)據(jù);二是在每個(gè)定時(shí)器周期t到來(lái)時(shí),主設(shè)備檢測(cè)發(fā)送數(shù)據(jù)并啟動(dòng)物理傳輸;三是智能接觸器在每個(gè)定時(shí)器周期t到來(lái)時(shí)進(jìn)行數(shù)據(jù)查詢接收,解析,并組織回復(fù)數(shù)據(jù);四是供電數(shù)據(jù)采集器在接收任務(wù)周期T到來(lái)時(shí)進(jìn)行數(shù)據(jù)接收、解析。
2.2.2 通信狀態(tài)機(jī)
為了解決線上主從設(shè)備收發(fā)沖突問(wèn)題,設(shè)計(jì)了通信狀態(tài)機(jī),保證一次通信周期內(nèi)的發(fā)送接收在同一狀態(tài)下進(jìn)行,直到本次通信結(jié)束或另一狀態(tài)觸發(fā)條件滿足,通信進(jìn)入另一狀態(tài)。針對(duì)本項(xiàng)目通信特點(diǎn),設(shè)計(jì)了握手狀態(tài)、空閑狀態(tài)、數(shù)據(jù)傳輸狀態(tài)、錯(cuò)誤恢復(fù)狀態(tài)、錯(cuò)誤處理狀態(tài)5個(gè)狀態(tài)。各狀態(tài)間的轉(zhuǎn)換見(jiàn)圖3所示。
圖3 通信狀態(tài)機(jī)
上電后,供電數(shù)據(jù)采集器進(jìn)入握手狀態(tài),向智能接觸器發(fā)送握手命令并等待智能接觸器的回復(fù)確認(rèn),若握手失敗,則一直處于握手狀態(tài),直到握手成功。
握手成功后,如果有數(shù)據(jù)則轉(zhuǎn)入數(shù)據(jù)傳輸狀態(tài),在此狀態(tài)下,供電數(shù)據(jù)采集器和智能接觸器之間可傳輸檢測(cè)命令和檢測(cè)結(jié)果;若無(wú)數(shù)據(jù)傳輸,則進(jìn)入空閑狀態(tài),直到有數(shù)據(jù)發(fā)送后才轉(zhuǎn)入數(shù)據(jù)傳輸狀態(tài)。
數(shù)據(jù)傳輸狀態(tài)下若發(fā)生傳輸錯(cuò)誤,通信進(jìn)入錯(cuò)誤恢復(fù)狀態(tài),如果在規(guī)定的恢復(fù)次數(shù)內(nèi)數(shù)據(jù)傳輸正確,則通信轉(zhuǎn)回?cái)?shù)據(jù)傳輸狀態(tài),如果恢復(fù)失敗,則通信轉(zhuǎn)入錯(cuò)誤處理狀態(tài),進(jìn)行通信狀態(tài)錯(cuò)誤處理。
2.2.3 通信異常處理通信異常處理分為2種情況:
(1)握手失?。汗╇姅?shù)據(jù)采集器向智能接觸器發(fā)送握手命令后,若接收不到智能接觸器回復(fù),則供電數(shù)據(jù)采集器一直發(fā)送握手命令,直到握手成功。
(2)通信異常:在外部通信鏈路受到干擾時(shí),出現(xiàn)數(shù)據(jù)丟失、數(shù)據(jù)不對(duì)等問(wèn)題,供電數(shù)據(jù)采集器對(duì)接收數(shù)據(jù)進(jìn)行有效性判斷后,若接收錯(cuò)誤,則采用重發(fā)機(jī)制,并設(shè)置從發(fā)次數(shù)上限N,在重發(fā)計(jì)數(shù)小于N時(shí),若接收正確,則通信鏈路恢復(fù)正常,若連續(xù)N次都接收錯(cuò)誤,則記錄通信鏈路故障。
本文設(shè)計(jì)的RS485總線通信方法,采用主-從通信方式,確定供電數(shù)據(jù)采集器為主設(shè)備,智能接觸器為從設(shè)備,并通過(guò)在主設(shè)備上設(shè)置通信狀態(tài)機(jī),確定了主設(shè)備實(shí)時(shí)通信狀態(tài),對(duì)數(shù)據(jù)狀態(tài)進(jìn)行校驗(yàn),只處理當(dāng)前狀態(tài)下的數(shù)據(jù),使發(fā)送和接收均在同一狀態(tài)下進(jìn)行,從而有效避免數(shù)據(jù)交互過(guò)程中的收發(fā)錯(cuò)誤和收發(fā)沖突問(wèn)題,提高了供電數(shù)據(jù)采集器與智能接觸器間通信的可靠性。經(jīng)試驗(yàn)室聯(lián)試驗(yàn)證,該方法有效可行,能大幅度提高設(shè)備間的通信效率。