向 玲,劉 軍
(杭州快電新能源科技有限公司,杭州 310052)
采用單片機PCA捕捉比較模塊進行載波偵聽的多主RS485通訊系統的設計
向 玲,劉 軍
(杭州快電新能源科技有限公司,杭州 310052)
在工業控制和現場儀表的熟知通訊系統中,RS485總線由于其造價低廉,使用簡單,而且采用差分信號傳輸,抗干擾性好,傳輸可靠,其應用的領域頗多。由于RS485是一種半雙工通訊方式,這種通訊方式一般適應于一對多的主從模式系統。如果要實現多主模式通訊,使得每個節點都能主動發起通訊,那么,就需要從硬件和軟件上,對原有的RS485總線方式進行改進,這里軟件上,我們引入以太網的載波監聽多點接入/碰撞檢測CSMA/CD的協議算法,這種協議能實現邊發送邊偵聽的多主通訊;在硬件方案的改進上,我們采用最省成本和方便的辦法,使用單片機內部的可編程計數器陣列(PCA)捕捉比較模塊的功能,對RS485收發器的RX線上的電平進行捕捉,從而偵聽到當前總線上的狀態。
本文采用的單片機C8051F340中,可編程計數器陣列PCA0有5個16位的捕捉/比較模塊,每個捕捉/比較模塊都有其自己的I/O線(CEXn)。本文使用的是捕捉/比較模塊的邊沿觸發捕捉工作方式,可以選擇正邊沿、負邊沿、雙邊沿觸發,選擇雙邊沿觸發,原因是需要測量RX的高電平時長來判斷總線是否空閑。
硬件設計簡單,不改變傳統的RS485網絡拓撲結構,只是將收發器的RX線接入到CEXn中的一個PCA捕捉通道既可以。

圖1
3.1 CSMA/CD協議的工作原理介紹
由于RS485是半雙工方式,在某時刻只能有一方發送數據,但是如果上下位機都要求能主動發起命令,那么解決485總線控制權的歸屬以及總線上的沖突處理是個關鍵的問題,因此,在本通訊系統中借鑒了CSMA/CD(載波監聽多路訪問/沖突檢測)協議進行設計,CSMA/CD介質訪問控制過程包括4個處理內容:偵聽、發送、檢測、沖突處理。具體過程可以參考響應標準,本設計中基本過程如同標準所述,但是出現碰撞后不會發送阻塞信息。強化沖突需要占據一定時間,降低效率,因此省略這個過程。
3.2 “X堅持”算法的介紹
發送前偵聽到總線忙,或者發送過程中發生數據碰撞后,我們采用非堅持算法,即偵聽到信道忙(即發現有其他站在發送數據),就不再堅持聽下去,而是根據協議的退避算法延遲一個隨機的時間后重新再監聽。若進行載波監聽時發現信道空閑,則將準備好的幀發送出去。優點是減少了沖突;其缺點信道利用率降低,不能充分利用信道剛剛轉入空閑期的這段時間。因為RS485總線能支持的設備數量是有限的,盡量減少沖突,提高系統的穩定性。二進制指數退避算法也在一定程度上彌補了非堅持算法信道利用率不高的缺點。
3.3 PCA捕捉模塊的載波偵聽
由于在空閑時,總線會保持高電平,RX也將保持高電平,可以通過檢測總線保持高電平的時間長短來確定總線是否空閑。
最小檢測時間t0的確定:各站點在發送一包數據幀時,字節間間隔可以忽略不計。每個字節的起始位都是低電平,如果線上有來自其它站點的連續字節在發送,那么線路上保持高電平的時間不會超過一個字節的時間(如圖2所示,19200b/s,發送0xff時,線上保持高電平的時間最長),換言說,如果線上保持高電平時間超過一個字節的時間,那說明沒有連續字節在發送,即說明總線是沒有被占用或者剛被釋放。因此檢測總線空閑與否,至少要檢測1個字節的發送時間。假設:對于19200b/s波特率傳輸速度,傳輸1字節需要521μs,取t0=600μs。

圖2
利用MCU的PCA雙邊沿捕捉/比較模塊和專用定時器T測量RO線上高電平的脈寬。RO轉為低電平時,觸發PCA中斷,將T清零且停止計時,清零溢出標志。RO轉為高電平時,T重新開始計時,T的值等于t0時,將溢出標志置位。這樣T的當前值記錄了總線為最后一次低電平后保持高電平的脈寬時間。
在準備發送前,先檢查溢出標志的值即可。如果溢出標志置位則認為總線是空閑的,可以開始發送數據。反之,認為總線是被其
它站點占用,此時要進行沖突處理。
3.4 退避延時算法
在各站點嘗試爭用總線而連續遇到沖突時,站點會隨機選擇一個延時時間,在這個時間內釋放總線。這是非堅持算法的要求。
二進制數指數退避算法是按“后進先出”(LIFO)的次序控制的,即未發生沖突或很少發生沖突的數據幀,具有優先發送的概率;而發生過多次沖突的數據幀,發送成功的概率小。這種方法在低負荷時,如總線空閑時,站點要發送數據幀的能立即發送;在重負荷時,仍能保證整個系統的穩定性。
這個優先級概率的控制就是由二進制數指數來控制隨時時間M選擇的范圍來實現的:延時時間M=[(0~2k-1的一個隨機數)×(一個確定時基Tbase:0.6ms)(k=5,如果沖突times小于5;k=times,如果沖突times在5~10次之間;K=10,如果沖突times大于10次)。
實現RS485多主通訊,引入CSMA/CD協議,并且采用單片機的PCA捕捉模塊進行載波偵聽,只需要增加一根PCA線,硬件成本極低,但是軟件設計相對來說就稍微復雜,在通訊繁忙的多站點系統中,由于PCA的中斷頻率太高(每次RX有電平跳變都要產生一次中斷),因此要特別對其進行時效分析,關注MCU的處理速度,是否能滿足PCA中斷任務處理和其它任務的及時處理。
[1] IEEE Std 802.3 Carrier Sense Multiple Access with Collision Detection (CSMA/CD) access method and Physical Layer specifications[S],2008
[2] 吳軍輝,林開顏,徐立鴻.RS485總線通信避障及其多主發送的研究[J].測控技術,2002, 21 (8) :41-43
[3] 孫漢卿,吳海波.現場總線技術[M].北京:國防工業出版社,2014
Using PCA’s Capture Comparator Module of MCU to Realize Multi-Master in RS485 Communication System
Xiang Ling, Liu Jun
(Hangzhou Fast Charge New Energy Technology Co., Ltd., Hangzhou, 310052)
10.3969/J.ISSN.1672-7274.2017.06.006
TP336,TN91文獻標示碼:A
1672-7274(2017)06-0020-02