基于PIC18單片機(jī)的CAN RS485轉(zhuǎn)換器的設(shè)計(jì)
基于PIC18單片機(jī)的CAN RS485轉(zhuǎn)換器的設(shè)計(jì)
RS-485總線以雙絞線為物理介質(zhì),工作在半雙工的通信狀態(tài)下,即同一時(shí)刻總線上只能有一個(gè)節(jié)點(diǎn)成為主節(jié)點(diǎn)而處于發(fā)送狀態(tài),其它所有節(jié)點(diǎn)必須處于接收狀態(tài)。如果同一時(shí)刻有兩個(gè)以上的節(jié)點(diǎn)處于發(fā)送狀態(tài),將導(dǎo)致所有發(fā)送方的數(shù)據(jù)發(fā)送失敗,即總線沖突。
為了避免這種總線沖突問(wèn)題,RS-485總線必須具備:
①以工作模式來(lái)說(shuō),一般的RS-485總線工作在主從模式下;
②從通信節(jié)點(diǎn)來(lái)講,RS-485總線上的節(jié)點(diǎn)必須具備可以將自己的驅(qū)動(dòng)器切換到高阻態(tài)的功能。
以上是為適應(yīng)RS-485總線的特殊之處而采用的措施,這樣同時(shí)也帶來(lái)了一些不足。首先,這種總線工作方式在很多對(duì)實(shí)時(shí)性、可靠性要求高的工業(yè)控制場(chǎng)合有較大的局限性;其次,對(duì)驅(qū)動(dòng)器實(shí)行的“發(fā)送態(tài)—高阻態(tài)”切換以及切換延遲等功能要求會(huì)使編程變得復(fù)雜。同時(shí)在上電瞬間、CPU損壞或者程序跑飛的情況下,還需要考慮復(fù)雜的故障保護(hù)等問(wèn)題,否則將容易引起總線故障。
控制器局域網(wǎng)CAN-bus (Controller Area Network)是國(guó)際上應(yīng)用最廣泛的現(xiàn)場(chǎng)總線之一。最初CAN-bus被設(shè)計(jì)作為汽車(chē)環(huán)境中的微控制器通訊,意在車(chē)載各電子控制裝置ECU之間交換信息,從而形成汽車(chē)電子控制網(wǎng)絡(luò)。如今,作為一種技術(shù)先進(jìn)、可靠性高、功能完善、成本合理的遠(yuǎn)程網(wǎng)絡(luò)通訊控制方式,CAN-bus已被廣泛應(yīng)用到各個(gè)自動(dòng)化控制系統(tǒng)中。而且它在通信能力、可靠性、實(shí)時(shí)性、靈活性、易用性、傳輸距離等方面較RS-485總線有著明顯的優(yōu)勢(shì),因而用CAN總線取代RS-485總線將是大勢(shì)所趨。
基于RS-485網(wǎng)絡(luò)在現(xiàn)場(chǎng)的廣泛應(yīng)用,目前完全放棄RS-485網(wǎng)絡(luò)系統(tǒng)是不現(xiàn)實(shí)的。但可以考慮一種折衷的辦法.就是在系統(tǒng)保留現(xiàn)有RS-485系統(tǒng)硬件結(jié)構(gòu)的基礎(chǔ)上添加一個(gè)CAN-bus接口,本設(shè)計(jì)的CAN485智能轉(zhuǎn)換器就具有這樣的現(xiàn)實(shí)意義。它可以實(shí)現(xiàn)RS-485網(wǎng)絡(luò)與CAN網(wǎng)絡(luò)的互聯(lián),其系統(tǒng)原理框圖如圖1所示。
1 CAN-485轉(zhuǎn)換器原理
圖2所示是一種CAN-485智能轉(zhuǎn)換器的原理框圖,本設(shè)計(jì)采用PIC18F258單片機(jī)為核心,該單片機(jī)自帶CAN收發(fā)接口,因此可簡(jiǎn)化硬件設(shè)計(jì),提高運(yùn)行效率。PIC18F258的主要特征如下:
◇通過(guò)ISO CAN標(biāo)準(zhǔn)測(cè)試;
◇執(zhí)行CAN協(xié)議:CAN1.2 CAN2.0ACAN2.0B;
◇標(biāo)準(zhǔn)和擴(kuò)展數(shù)據(jù)模式;
◇0-8位數(shù)據(jù)長(zhǎng)度;
◇可編程速率高達(dá)1 Mbps;
◇2個(gè)數(shù)據(jù)接收緩沖器;
◇6個(gè)完全接收濾波器,2個(gè)對(duì)應(yīng)高優(yōu)先權(quán)緩沖器,4個(gè)對(duì)應(yīng)低優(yōu)先權(quán)緩沖器;
◇2個(gè)完全接收掩碼器;
◇3個(gè)具有優(yōu)先權(quán)的發(fā)送緩沖器。
由于單片機(jī)的輸出電流比較弱,難以驅(qū)動(dòng)光電隔離器,為保險(xiǎn)起見(jiàn),信號(hào)輸入光耦前要經(jīng)過(guò)74HC573鎖存;同樣為了增加信號(hào)驅(qū)動(dòng)能力,經(jīng)過(guò)隔離的信號(hào)要再次經(jīng)過(guò)74HC573鎖存。
2 軟件設(shè)計(jì)
系統(tǒng)的軟件設(shè)計(jì)主要包括初始化程序、CAN接收中斷服務(wù)程序、USART接收中斷服務(wù)程序、主程序及應(yīng)用層通信協(xié)議轉(zhuǎn)換程序等。
初始化程序用于設(shè)置CAN模塊的通信波特率、工作方式、發(fā)送的優(yōu)先級(jí)、接收郵箱和發(fā)送郵箱及對(duì)應(yīng)的接收過(guò)濾器和接收屏蔽器等。其初始化程序流程圖如圖3所示。
CAN接收中斷服務(wù)程序主要用來(lái)接收CAN總線傳輸過(guò)來(lái)的數(shù)據(jù)幀,并對(duì)其進(jìn)行幀校驗(yàn),如果出錯(cuò)則要求重發(fā),若數(shù)據(jù)幀正確接收,則將完整的數(shù)據(jù)幀存人到提前開(kāi)辟的環(huán)形緩沖器中,為后面的數(shù)據(jù)處理和協(xié)議轉(zhuǎn)換做好準(zhǔn)備。其CAN接收中斷服務(wù)程序流程圖如圖4所示。
USART接收中斷服務(wù)程序主要用于接收來(lái)自RS-485總線的串行數(shù)據(jù),并將完整的數(shù)據(jù)幀傳送到另外一個(gè)環(huán)形緩沖器。其流程圖和設(shè)計(jì)思想與CAN接收中斷程序類似,不再例舉。
協(xié)議轉(zhuǎn)換程序需要參照現(xiàn)場(chǎng)RS-485系統(tǒng)原有的協(xié)議,然后由用戶通過(guò)配套軟件對(duì)通信幀的格式進(jìn)行相應(yīng)的設(shè)置。進(jìn)行配置時(shí),PC機(jī)必須通過(guò)RS-485接口來(lái)訪問(wèn)RS-485/CAN智能轉(zhuǎn)換器,通常PC機(jī)的RS-232接口使用RS-232/RS-485轉(zhuǎn)換器。成功設(shè)置后,就可以實(shí)現(xiàn)RS-485與CAN通信幀格式的相互轉(zhuǎn)換。
本系統(tǒng)的主程序部分的設(shè)計(jì)比較簡(jiǎn)單,主要為調(diào)用初始化程序,掃描發(fā)送緩沖器是否為空,不空則在空閑時(shí)根據(jù)其優(yōu)先級(jí)將CAN通信幀或RS-485串行通信幀發(fā)送出去,并不斷掃描,等待中斷的產(chǎn)生。
3結(jié)束語(yǔ)
利用CAN485智能轉(zhuǎn)換器可實(shí)現(xiàn)RS-485網(wǎng)絡(luò)與CAN網(wǎng)絡(luò)的互連,且智能轉(zhuǎn)換器的通信波特率可調(diào),工作模式也可控制,對(duì)于不同協(xié)議的RS-485網(wǎng)絡(luò),只需通過(guò)軟件對(duì)轉(zhuǎn)換器進(jìn)行相應(yīng)的初始化設(shè)置,而不必對(duì)硬件進(jìn)行改動(dòng),因此可以滿足絕大多數(shù)場(chǎng)合的使用要求。但是該方案不能充分體現(xiàn)CAN系統(tǒng)的優(yōu)越性,僅適合新系統(tǒng)與舊系統(tǒng)并存、整體性能要求不太高的場(chǎng)所。因此,用CAN總線取代RS-485總線將是大勢(shì)所趨。
評(píng)論