根據(jù)防撞擺閘系統(tǒng)功能需求,設(shè)備控制模塊需要實現(xiàn)與多個外部設(shè)備的串口協(xié)議通訊,從而實現(xiàn)對設(shè)備的控制和數(shù)據(jù)反饋。模塊通過對自定義協(xié)議進行封裝,在模塊內(nèi)部實現(xiàn)數(shù)據(jù)收發(fā)的控制管理,然后提供函數(shù)接口供相關(guān)模塊調(diào)用,防撞擺閘系統(tǒng)設(shè)備控制模塊需具有通訊穩(wěn)定、可靠的特點。
防撞擺閘系統(tǒng)設(shè)備控制模塊設(shè)計:
1.數(shù)據(jù)幀定義
防撞擺閘的設(shè)備控制模塊與IO模塊、通行算法模塊間的通訊采用主從通訊模式,主動發(fā)起通訊的為命令幀、命令的接收方回復(fù)對應(yīng)的應(yīng)答幀,設(shè)備控制模塊與硬件之間互為主從。根據(jù)防撞擺閘需求需要實現(xiàn)串口通訊的穩(wěn)定性,因此需要定義可靠的通訊協(xié)議來實現(xiàn)兩者之間的通訊,分為命令幀和應(yīng)答幀,
2.收發(fā)控制流程
防撞擺閘控制系統(tǒng)與硬件部件之間通訊采用主從方式,雙方互為主從關(guān)系,現(xiàn)在以控制系統(tǒng)為主設(shè)備為例介紹詳細(xì)的收發(fā)流程,當(dāng)外部模塊調(diào)用設(shè)備控制函數(shù)接口后將參數(shù)傳遞給接口函數(shù),接口函數(shù)實現(xiàn)協(xié)議命令幀的組幀并將數(shù)據(jù)加入數(shù)據(jù)發(fā)送隊列。防撞擺閘的數(shù)據(jù)檢測定時器檢測到有數(shù)據(jù)時取出一幀數(shù)據(jù),同時啟動發(fā)送控制定時器進行數(shù)據(jù)發(fā)送控制,從擺閘收到數(shù)據(jù)后將回復(fù)數(shù)據(jù)發(fā)送到串口,收發(fā)接口將數(shù)據(jù)加入接收隊列,數(shù)據(jù)接收控制處理流程從接收隊列取出數(shù)據(jù)并終止發(fā)送控制定時器,同時接口函數(shù)返回。
3.異常處理
由于防撞擺閘的串口通訊容易受到外部干擾等影響出現(xiàn)通訊不穩(wěn)定的情況,對在數(shù)據(jù)發(fā)送過程中對出現(xiàn)的如:應(yīng)答響應(yīng)超時、幀序號錯誤、CRC校驗錯誤等情況進行數(shù)據(jù)重發(fā),由定時器觸發(fā)定時重發(fā)送數(shù)據(jù),當(dāng)超過防撞擺閘設(shè)定重發(fā)次數(shù)時退出。
|