現(xiàn)場總線CANbus與RS-485之間透明轉(zhuǎn)換的實現(xiàn)
掃描二維碼
隨時隨地手機看文章
現(xiàn)場總線技術(shù)以其獨有的技術(shù)優(yōu)勢和特點,在現(xiàn)代分布式測量與控制技術(shù)領(lǐng)域中的應(yīng)用已愈來愈廣泛。各種現(xiàn)場總線的主控制器一般都內(nèi)嵌有相當完善的、開放式的互聯(lián)通信協(xié)議,它具有通信速度快、誤碼率低、開發(fā)設(shè)計簡單及網(wǎng)絡(luò)使用維護方便等諸多特點,是實現(xiàn)網(wǎng)絡(luò)化現(xiàn)場測量與控制技術(shù)的一個發(fā)展方向。但目前,在許多現(xiàn)場已投入使用的測量與控制系統(tǒng)中,各儀器設(shè)備或裝置之間通信所使用的仍是傳統(tǒng)的RS-485或RS-422總線。在不斷投入新型現(xiàn)場總線系統(tǒng)的同時,要在短期內(nèi)改造或淘汰那些舊系統(tǒng)是不現(xiàn)實的。況且,在許多應(yīng)用場合,新老系統(tǒng)中主機的控制算法及功能是相似或兼容的,所以在一定時欷新老總線系統(tǒng)同時并存是客觀的現(xiàn)實需要。對此,若能將新老儀器設(shè)備或裝置通過一種透明轉(zhuǎn)換裝置而有機地柔合在一起,去掉老系統(tǒng)中重復的部分,是一種很好的選擇。
1 CANbus簡述
CAN現(xiàn)場總線技術(shù)是德國BOSCH公司于80年代初為解決現(xiàn)代汽車業(yè)眾多的控制與測試儀器之間的數(shù)據(jù)交換而開發(fā),目前已逐步應(yīng)用到其它領(lǐng)域的一種符合國際標準的串行數(shù)據(jù)通信協(xié)議。CAN的主要技術(shù)特點有:
(2)采用非破壞性總線仲裁技術(shù),網(wǎng)絡(luò)中的節(jié)點可以分成不同的優(yōu)先級,當多個節(jié)點同時向網(wǎng)絡(luò)上傳送信息時,優(yōu)先級低的節(jié)點主動暫停數(shù)據(jù)發(fā)送,而優(yōu)先級高的節(jié)瞇可不受影響地繼續(xù)傳送數(shù)據(jù)。之后,按優(yōu)先級高低,其它節(jié)點在總線空閑時依次進行被暫停的數(shù)據(jù)傳送,有效地避免了總線沖突。
(3)每一幀的有效字節(jié)數(shù)最多為8個,幀傳送時間短,受干擾概率小,重發(fā)時間短。每一幀信息都有CRC校驗及其它檢錯措施,通信誤碼率低。
(4)網(wǎng)絡(luò)節(jié)點的錯誤嚴重的情況下,具有自動關(guān)閉總線接口的功能,避免影響總線上的其它節(jié)點的正常操作。
(5)通信距離最遠達10km(5kB/s),通信速率最高可達到1MB/s(40M),節(jié)點數(shù)目實際可達110個。通信介質(zhì)采用雙絞線,也可用光纖。
2 實現(xiàn)方法
CAN 現(xiàn)場總線與RS-485總線的主要區(qū)別是:CAN總線是以幀為單位進行數(shù)據(jù)通信的,且每幀均攜帶對應(yīng)的ID標示符,而RS-485是以字節(jié)為單位進行數(shù)據(jù)通信,不帶任何其它附屬信息。如果不考慮幀中的ID標示符,那么這二種總線傳輸?shù)男畔⒕涂梢哉J為完全相同??紤]到絕大多數(shù)應(yīng)用CAN總線的場合都不可能分配完系統(tǒng)中的ID標示符資源,因而在系統(tǒng)中可以另分配一至多個ID標示符給RS-485總線數(shù)據(jù),即給總線透明轉(zhuǎn)換電路所用,收、發(fā)數(shù)據(jù)的ID標識符可以不相同。CAN總線系統(tǒng)中的公用主控設(shè)備一般被設(shè)置成直通狀態(tài),它可通過發(fā)送、接收具有不同ID標示符的不同數(shù)據(jù)幀,方便地對網(wǎng)絡(luò)中的各種設(shè)備進行管理和控制。對那些純粹靠幀數(shù)據(jù)本身而忽略ID標志符的系統(tǒng)來說,這種不同總線之間的轉(zhuǎn)換更加簡單。
實現(xiàn)二種總線之間的透明轉(zhuǎn)換的基本過程是這樣的:電路加電進入正常狀態(tài)后,首先以電路中保存的參數(shù)(如未初始化則以缺省參數(shù))對二個總線通信端口分別進行初始化,并將所有通訊端口設(shè)置成中斷接收工作方式,在啟動內(nèi)部看門狗(SWatchdog)后,電路等待外來數(shù)據(jù)的中斷。一旦某一總線端口有有效數(shù)據(jù)進入,電路首先將這些數(shù)據(jù)讀入內(nèi)部數(shù)據(jù)緩沖區(qū),置相關(guān)內(nèi)部標志,關(guān)閉其它端口的中斷,以使接收端數(shù)據(jù)能及時被接收到。在下一數(shù)據(jù)到來之前,電路將及時通過另一端口將緩沖區(qū)中的數(shù)據(jù)轉(zhuǎn)發(fā)出卻,直到緩沖區(qū)空。在這種轉(zhuǎn)換過程中,如果數(shù)據(jù)是自CANBUS一端流入,則電路只將幀內(nèi)數(shù)據(jù)讀入到緩沖區(qū)。相反,則電路在轉(zhuǎn)發(fā)數(shù)據(jù)之前自動按設(shè)置將設(shè)定ID標示符加到發(fā)送信息中,一旦轉(zhuǎn)換過程結(jié)束,所有端口又被允許中斷接收。電路中緩沖區(qū)一般可配置8k~32K字節(jié)的靜態(tài) RAM。
3 實際電路
圖2 是一種可選的線路原理示意圖。電路中使用的單片機是ATMEL傳頌的AT89S8252,它是一種內(nèi)帶8K Flash RAM、2K EEPROM、同時內(nèi)嵌獨立的硬件Watchdog電路,最高工作主頻為24MHz的新型單片機。所配數(shù)據(jù)緩沖器62256為32K字節(jié)的靜態(tài)RAM。配置較大緩沖區(qū)的明顯好處是提高了對二種不同速率總線的適應(yīng)能力。圖中RS232口是專用來設(shè)置二總線端口的工作參數(shù),所設(shè)參數(shù)均保存在CPU的2K EEPROM中。另外,為提供線路的可靠性,對CANBUS端采和了電隔離措施,RS-485端所使用的MAX1480也是一種內(nèi)部電隔離的芯片。圖中 VCC與VCC1為相互隔離的二組5V電源。
對于那些對總線響應(yīng)速率要求比較荷刻的場合,可采用雙CPU控制電路,即每個CPU分別負責一端總線的通信事務(wù)。數(shù)據(jù)緩沖區(qū)仍采用公用的單口或雙口RAM。相應(yīng)的控制算法必須增加一些有關(guān)對公共數(shù)據(jù)區(qū)的管理操作,在此不做詳述。
以上電路多適用于二種總線并存于同一系統(tǒng)的場合,以實現(xiàn)二種總線之間的有機結(jié)合,使新老設(shè)備能很好地同時運行,節(jié)省系統(tǒng)開支。這種透明轉(zhuǎn)換電路在已研制的分布式數(shù)據(jù)采集系統(tǒng)中應(yīng)用以后,效果良好。
對以上電路稍做修改,即將MAX1480換成MAX232芯片就可設(shè)計出一種能在CAN現(xiàn)場總線與RS-232之間實現(xiàn)透明轉(zhuǎn)換的電路。這種電路可用于那些需要用便攜機與現(xiàn)場設(shè)備之間實現(xiàn)通信(如現(xiàn)場調(diào)試等)的場合,因為目前便攜機一般只配RS-232接口。另外,如將電路的二個總線端口設(shè)計成相同的接口,那么它還可以用在使用同一種總線,但不同的區(qū)域卻有不同通信速率的應(yīng)用場合。
對于那些首次接觸CANBUS技術(shù)的開發(fā)人員來說,以上電路還是一種很好的端點開發(fā)輔助設(shè)備,即開發(fā)人員只要對該電路設(shè)置合適的端口參數(shù),并將用戶電路與之連接好后,開發(fā)人員即可在一相對熟悉的環(huán)境下專心開發(fā)自己的應(yīng)用電路。
作者:南京國家電力總公司電力自動化研究院大壩的(210003) 鄧檢華