李永征,范三龍,張 林,包素麗
?
重復中斷方式485方向控制方法
李永征,范三龍,張 林,包素麗
本文涉及一種重復中斷方式RTS/485方向控制方法,可以達到精確控制485芯片通信發送方向的目的,而無需改變硬件設計,適用于中、高速485通信。
重復中斷;485;控制
隨著電力系統自動化技術的不斷發展及變配電所內智能設備的大量使用,智能設備及系統間的數據交換越來越重要,連接和管理各設備及系統間的數據通信接口成為了電力自動化系統不可或缺的重要部分。
RS-485串行接口是工業控制和電力系統自動化領域常用的低速長距離通信接口,其通信的可靠性至關重要[1,2]。
RS-485是在RS-232、RS-422基礎上發展而來,采用差分信號負邏輯,+2 V~+6 V表示“0”,-6 V~-2V表示“1”。RS-485有兩線制和四線制2種接線方式,四線制只能實現點對點通信,很少采用,多采用兩線制接線方式。該接線方式為總線式拓樸結構,在同一總線上最多可以掛接32個節點。在RS-485通信網絡中一般采用主從通信方式,即一個主機帶多個從機。
RS-485有2根信號線,發送和接收共用A和B線,采用差分電平方式傳輸且允許在一條通信總線上掛接多個節點。由于RS-485的收與發共用2根線,必然要求各節點能夠獨立控制總線驅動器的關斷和打開,確保不影響其他節點的正常通信,所以對于總線上的單個節點來說不能同時收和發,必須精確地控制總線芯片的收發使能信號,以切換收發方向。
對于總線型的485總線,485控制芯片的收發方向控制是一個需要解決的基本問題。目前,485控制芯片收發方向控制的主要方法有RTS信號延時控制、TX/DI信號反相后直接控制、專用硬件控制、485總線收發芯片自動方向控制等。其中,通過RTS信號延時控制是基于PC機的485接口設備的通行做法,傳統設計中采用系統定時器控制,在發送空中斷到來時,設定一個字節時間的定時器,在定時器時間到后,收回RTS信號。但類似Windows這種非實時操作系統,其內核時鐘的最高分辨率為1 ms,定時器的精度為1~2 ms,在9 600波特率時,1個字節時間約為1 ms,實測顯示定時器會導致MAX485的發送驅動器多打開1個字節以上的時間,在高速485終端間通信時將會產生問題。由于操作系統的時鐘分辨率限制,延時控制的精度較低,在中高速485通信時不能滿足要求。
為了解決既有設計中高速485通信時485控制芯片的收發方向精確控制問題,本文提出了一種新的控制方法。
(1)采用16C550兼容UART芯片。大量成熟的設計中采用16C550兼容UART芯片,如ST16C554。其具有以下特點:工業級,5 V或3.3 V供電,接收和發送16字節的FIFO,支持最高 1.5 Mbps速率;16C550兼容的寄存器集為4路獨立UART通道,支持MODEM控制。
(2)采用MAX485總線收發芯片。
(3)采用FIFO中斷方式發送。每次發送最多可向16C554寫入16個字節,接收時,根據設定在連續接收1、2、4或14個字節時產生中斷,或在接收的字節流停止約5個字節時產生中斷。
(4)采用RTS信號反相后使能485發送,實現485收發方向控制。每路UART具有獨立的RTS、DTR等MODEM控制管腳,其中RTS管腳反相后常用于485收發方向控制。
由于16C550兼容UART控制器未設置自動RTS控制,且在TSR(移位寄存器)空時不產生中斷,給程序控制RTS帶來很大困難。而使用重復中斷方式或類似的實時輪詢方式,通過主動檢查TSR的空標志收回RTS信號,可以達到精確控制的目的。
通用RS-485串行通信接口的電氣原理如圖1所示。

圖1 通用RS-485串行通信接口電氣原理
本方法的優選方案為,A芯片采用ST16C554D芯片,該芯片是一款16C550、Windows操作系統兼容的UART控制芯片,具有4路獨立的串口通道,每一路通道在線路側只使用TX、RX、RTS信號,這3個信號在經過光耦T1-T3隔離后,連接MAX485芯片的DI、DE和RD管腳,其中RTS和DE之間經過反相器U4,MAX485芯片的DE和RE信號并接, MAX485工作在半雙工模式;B中的總線收發芯片為MAX481或MAX483或MAX485或MAX487-MAX491,是常用的低功耗RS-485/RS-422總線收發器,具有獨立的收發回路,支持半雙工和全雙工模式。
重復中斷方式485方向控制方法具體方案如下:芯片采用16C550兼容UART芯片,采用總線收發芯片,并采用FIFO中斷方式發送;RTS信號反相后使能485發送,進行485收發方向控制,在每一幀串口數據發送前使能RTS,進而打開MAX485芯片的發送驅動器,接著開始發送過程;在發送結束后收回RTS信號,關閉MAX485芯片的發送驅動器,MAX485進入接收狀態;在發送中斷到來時,重復使能發送中斷,并檢測TSR的空標志,當TSR空標志產生后,收回RTS信號。
在初始狀態,RTS信號無效,MAX485處于接收狀態。當有數據需要發送時,首先使能RTS,將MAX485芯片置于發送狀態,然后發送一幀數據,發送完成后,需及時收回(復位)RTS信號,并將MAX485芯片置于接收狀態,以便接收對方的回應(如果未能及時收回RTS信號,當對方很快回應時,不能正確接收回應報文中的頭部字節)。
圖2為串口中斷的處理流程圖。

圖2 串口中斷處理流程
多串口卡共用一個中斷信號,當中斷信號發生時,CPU首先判斷發生中斷的串口,并獲得串口號。然后讀取相應串口的狀態寄存器,判斷是接收中斷還是發送中斷。如果是接收中斷,讀取接收數據,并保存到內存中的接收緩沖區;如果是發送中斷,檢查是否有數據發送,如果有則使能RTS信號,將MAX485芯片置于發送狀態,然后向ST16C554D寫入發送數據,等待下一次中斷,如果沒有數據發送,則檢查TSR的空標志,如果不為空,則再次使能發送中斷,等待下一次中斷,如果為空,則復位(收回)RTS信號,將MAX485芯片置于接收狀態,一幀發送過程結束。
(1)本方案利用ST16C554D兼容UART芯片的發送中斷使能特性,通過重復中斷的方式,輪詢TSR的空標志。由于中斷處理的實時性,本方法可以精確控制RTS信號、MAX485的發送和接收狀態切換時間。
(2)本方案適用于9 600波特率以上的中、高速485通信,可以在不改變現有硬件設計的基礎上提高控制精度。
(3)采用通行硬件設計方案,無需更改現有硬件,只需在驅動軟件上稍作修改,即可實現485控制芯片收發方向精確控制。本方法在牽引變電站自動化系統的通信裝置中進行了試用,效果良好,具有一定的適用性及應用前景。
綜上所述技術屬于工業控制和電力系統自動化技術領域,涉及一種重復中斷方式RTS/485方向控制方法,成功解決了既有設計中高速485通信時485控制芯片的收發方向精確控制問題。本方法已成功申請并獲得發明專利授權證書(專利授權號為:ZL 2012 1 0372192.X)。該方法已成功應用于鐵路及城市軌道交通領域的新產品開發中,如微機通信管理裝置、網絡通信服務器等,使裝置的通信傳輸能力及通信的可靠性得到有效提升。隨著高速鐵路及城市軌道交通的快速發展,本方案產品將擁有廣闊的應用前景。
[1] 高志國. 基于RS-485總線信號的可靠性研究[J]. 信息技術,2011,47(2):42-44.
[2] 田偉. RS-485總線分支線短路故障檢測技術[J]. 微電子學與計算機,2011,28(4):176-179.
The paper relates in a type of repeated interruption mode RTS/485 directional control method, which is able to realize the purpose of accurate control of 485 communication direction without requirements of changing the design of hardware; it is applicable to medium and high speed 485 communication.
Repeated interruption; 485; control
U224.9
B
1007-936X(2018)02-0091-03
2017-06-19
10.19587/j.cnki.1007-936x.2018.02.024
李永征.南京國電南自軌道交通工程有限公司,高級工程師,研究方向為軌道交通變電站自動化;范三龍,包素麗.南京國電南自軌道交通工程有限公司,高級工程師;張 林.南京國電南自軌道交通工程有限公司,工程師。