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