摘 要:在工業(yè)監(jiān)控系統(tǒng)中,建立高速、可靠的數(shù)據(jù)通信通道是其中的關(guān)鍵技術(shù)。針對(duì)實(shí)際監(jiān)控系統(tǒng)超過500個(gè)現(xiàn)場節(jié)點(diǎn)的要求,應(yīng)用可靠快捷的CAN總線組網(wǎng)技術(shù),并對(duì)各種CAN總線擴(kuò)展組網(wǎng)方案進(jìn)行研究,分析各組網(wǎng)方案的原理,比較其優(yōu)缺點(diǎn),在實(shí)際系統(tǒng)中采用通過多串口卡擴(kuò)展CAN通道組網(wǎng)方案,充分利用計(jì)算機(jī)高速分時(shí)采集數(shù)據(jù)、處理數(shù)據(jù)的特點(diǎn),提高系統(tǒng)的可靠性。并給出系統(tǒng)中部分電路原理圖和軟件程序流程圖。
關(guān)鍵詞:CAN總線;多串口卡;轉(zhuǎn)換卡;流程圖
中圖分類號(hào):TP273 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1004-373X(2008)06-095-04
Research on Multi-channel CAN Bus Networking
SONG Yuqin 2,GONG Chao3,ZHANG Wanjiang4
(1.College of Automation,Northwestern Polytechnical University ,Xi′an,710072,China;
2.College of Electronics and Information,Xi′an Polytechnical University,Xi′an,710048,China;
3.Sale Department,Xi′an Coal Mining Machinery Plant,Xi′an,710032,China;4.Xi′an Electric Power Institute,Xi′an,710032,China)
Abstract:Building high-speed and reliable communication channel is crucial technology in industry monitor system.Aiming at requirements over 500 field nodes in practical monitor system,the reliable and fast CAN bus technology is used.Various extended CAN bus networking schemes are studied.The theories of schemes are analyzed.Advantages and disadvantages are compared.The extended networking project through multi-serial port card is adopted in the practical system.It makes good use of the computer characteristics of high speed and time-sharing dada collection and processing.The reliability of system is improved.Parts of circuit theory chart and program flow chart are illustrated.
Keywords:CAN bus;multi-serial port card;conversion card;flow chart
1 引 言
在工業(yè)過程的數(shù)據(jù)采集、監(jiān)控管理及分布式控制中,要求車間監(jiān)控室通過高速數(shù)據(jù)通道對(duì)生產(chǎn)現(xiàn)場的運(yùn)行數(shù)據(jù)進(jìn)行實(shí)時(shí)、準(zhǔn)確監(jiān)控,從而改善控制性能,提高控制精度,有效進(jìn)行設(shè)備故障檢測和診斷,及時(shí)反映企業(yè)生產(chǎn)狀況,提高企業(yè)的生產(chǎn)效率。因此在監(jiān)控系統(tǒng)中采用何種技術(shù)組建網(wǎng)絡(luò)數(shù)據(jù)通道就成為一個(gè)關(guān)鍵問題,由于采用CAN現(xiàn)場總線技術(shù)構(gòu)建網(wǎng)絡(luò)通道具有良好的故障隔離能力和可靠性,因此在工業(yè)控制系統(tǒng)中得到了廣泛的應(yīng)用。本文根據(jù)實(shí)際監(jiān)控系統(tǒng)超過500個(gè)現(xiàn)場節(jié)點(diǎn)的要求,對(duì)各種CAN總線擴(kuò)展組網(wǎng)方案進(jìn)行了比較研究,最終采用擴(kuò)展多通道串口CAN總線組網(wǎng)方案,提高系統(tǒng)通信速度和可靠性,完全滿足系統(tǒng)要求。
2 多通道CAN總線組網(wǎng)方案
監(jiān)控系統(tǒng)采用CAN總線作為數(shù)據(jù)通道,具有數(shù)據(jù)傳輸速率快、可靠性高的優(yōu)點(diǎn)。但CAN總線組網(wǎng)節(jié)點(diǎn)有限,網(wǎng)絡(luò)中最多只能有110個(gè)節(jié)點(diǎn),在系統(tǒng)節(jié)點(diǎn)眾多時(shí),采用單一CAN總線網(wǎng)絡(luò)就無法滿足系統(tǒng)要求,必須對(duì)CAN總線網(wǎng)絡(luò)進(jìn)行擴(kuò)展。
(1) 組網(wǎng)方案1:采用多個(gè)CAN卡進(jìn)行直接組網(wǎng)。
購買市場上成熟的CAN卡產(chǎn)品,把多個(gè)CAN卡直接插入到監(jiān)控室PC機(jī)的擴(kuò)展插槽中,利用CAN卡組成多個(gè)CAN網(wǎng)絡(luò),實(shí)現(xiàn)對(duì)現(xiàn)場節(jié)點(diǎn)的監(jiān)控。例如對(duì)于具有150個(gè)節(jié)點(diǎn)的系統(tǒng),可以采用2塊CAN卡,每塊CAN卡實(shí)現(xiàn)對(duì)75個(gè)節(jié)點(diǎn)數(shù)據(jù)的監(jiān)控。這種方案,系統(tǒng)結(jié)構(gòu)簡單,組網(wǎng)方便,但對(duì)于節(jié)點(diǎn)眾多的監(jiān)控系統(tǒng),卻難以實(shí)現(xiàn)。如本系統(tǒng)要求對(duì)500多個(gè)現(xiàn)場節(jié)點(diǎn)進(jìn)行監(jiān)控,至少需要5塊CAN卡,而PC機(jī)的擴(kuò)展插槽有限,因此本系統(tǒng)只適用于網(wǎng)絡(luò)節(jié)點(diǎn)數(shù)較少的系統(tǒng)。
(2) 組網(wǎng)方案2:采用分級(jí)監(jiān)控的方案。
采用單路輸出的CAN卡和CAN中間轉(zhuǎn)換系統(tǒng)組成一級(jí)CAN總線網(wǎng)絡(luò),再通過CAN中間轉(zhuǎn)換系統(tǒng)和現(xiàn)場節(jié)點(diǎn)組成二級(jí)CAN網(wǎng)絡(luò),從而擴(kuò)展了現(xiàn)場監(jiān)測系統(tǒng)的節(jié)點(diǎn)數(shù),級(jí)數(shù)越多,可監(jiān)控的現(xiàn)場節(jié)點(diǎn)數(shù)也就越多。分級(jí)擴(kuò)展的方案可擴(kuò)充的節(jié)點(diǎn)多,但由于需要中間轉(zhuǎn)換系統(tǒng),使系統(tǒng)的級(jí)數(shù)增加,現(xiàn)場信息必需經(jīng)過中級(jí)才能傳送到主計(jì)算機(jī)處理,信息傳送速率較慢,且在中間級(jí)出現(xiàn)故障時(shí)會(huì)使系統(tǒng)局部癱換,此種方案適用與監(jiān)測節(jié)點(diǎn)在千點(diǎn)以上的系統(tǒng)。
(3) 組網(wǎng)方案3:通過擴(kuò)展串行端口,結(jié)合多路RS 232轉(zhuǎn)CAN總線的轉(zhuǎn)換卡,實(shí)現(xiàn)對(duì)CAN網(wǎng)絡(luò)的擴(kuò)展。
即購買多路輸出的串口卡,比如MOXA公司生產(chǎn)的4路或8路輸出的多串口卡C104P/C168P,再配以多路RS 232輸入多路CAN總線輸出的轉(zhuǎn)換卡,分時(shí)對(duì)各路掛接的節(jié)點(diǎn)掃描監(jiān)測,從而擴(kuò)展所監(jiān)測的節(jié)點(diǎn)數(shù)。采用多串口卡的方案,可充分利用計(jì)算機(jī)高速分時(shí)采集數(shù)據(jù)、處理數(shù)據(jù)的特點(diǎn),多路“同時(shí)”發(fā)送及接收數(shù)據(jù),采集現(xiàn)場數(shù)據(jù)快捷及時(shí),即采集數(shù)據(jù)的速率高。并且由于每路的CAN總線直接與現(xiàn)場監(jiān)測系統(tǒng)相連,可以很好地實(shí)現(xiàn)現(xiàn)場數(shù)據(jù)的分散采集,主計(jì)算機(jī)對(duì)數(shù)據(jù)的集中處理,系統(tǒng)的危險(xiǎn)分散,可靠性高。但此種方案需要購買多串口卡,并對(duì)每個(gè)串口輸出配置RS 232轉(zhuǎn)CAN的轉(zhuǎn)換卡。此種方案最適用于一千個(gè)節(jié)點(diǎn)以下的系統(tǒng)。系統(tǒng)組網(wǎng)結(jié)構(gòu)圖如圖1所示。

(4) 組網(wǎng)方案4:通過單一串口,配置RS 232轉(zhuǎn)CAN的專用轉(zhuǎn)換卡,實(shí)現(xiàn)多通道CAN總線組網(wǎng)。
為此,在系統(tǒng)中采用模擬開關(guān),如4路雙向模擬開關(guān)CD4066,低電壓雙路模擬開關(guān)MAX4684等。當(dāng)模擬開關(guān)導(dǎo)通時(shí),導(dǎo)通電阻低,相當(dāng)于接通電路;模擬開關(guān)截止時(shí),呈現(xiàn)很高的阻抗,可以看成為開路。計(jì)算機(jī)通過命令來選擇所要監(jiān)控?cái)?shù)據(jù)的通道,由RS 232轉(zhuǎn)CAN轉(zhuǎn)換卡上的微處理器控制模擬開關(guān)的通斷,從而選中所要采集數(shù)據(jù)的通道,實(shí)現(xiàn)對(duì)通道切換。這種設(shè)計(jì)將使系統(tǒng)簡單,占用系統(tǒng)資源少,系統(tǒng)組成就具有很大的靈活性。但模擬開關(guān)接通時(shí)有一定的電阻,相當(dāng)于在CAN回路中串聯(lián)了電阻,如果該接通電阻很大,信號(hào)在模擬開關(guān)處的損耗變大,造成信號(hào)衰減,影響CAN信號(hào)的通信距離和效果,為此,在實(shí)際組網(wǎng)過程中要選用低接通阻值的模擬開關(guān)。同時(shí)由于增加了對(duì)模擬電子開關(guān)的控制,所以系統(tǒng)軟件編程較復(fù)雜。系統(tǒng)組網(wǎng)原理框圖如圖2所示。
3 RS 232轉(zhuǎn)CAN總線轉(zhuǎn)換卡
根據(jù)對(duì)以上方案的綜合比較,由于本監(jiān)控系統(tǒng)需要對(duì)現(xiàn)場500多個(gè)節(jié)點(diǎn)實(shí)現(xiàn)實(shí)時(shí)監(jiān)控,因此組網(wǎng)方案3與組網(wǎng)方案4都可以考慮,方案4雖然簡化了系統(tǒng)結(jié)構(gòu),但當(dāng)模擬電子開關(guān)出現(xiàn)故障時(shí),整個(gè)網(wǎng)絡(luò)都會(huì)陷入癱瘓狀態(tài),而且軟件編程較復(fù)雜,因此本系統(tǒng)采用方案3實(shí)現(xiàn)多通道CAN總線組網(wǎng)。

在此,使用MOXA公司提供的C168P八端口串行通信卡,擴(kuò)展8路串行通信端口。C168P多端口串行通信卡,用于PC/AT總線,采用ASIC芯片代替了傳統(tǒng)的ICS芯片。其傳輸速度范圍可達(dá)到50~115.2 b/s。支持RS 232標(biāo)準(zhǔn)電平信號(hào),8個(gè)端口可以分配不同中斷向量或同一中斷向量。并且,MOXA公司提供了基于Microsoft Win32 API函數(shù)下開發(fā)的PComm軟件庫,可用于上層多進(jìn)程或多線程串行通信的軟件開發(fā),適用于VB,VC,Delphi等高級(jí)語言軟件開發(fā)環(huán)境。由于其性能優(yōu)良,使用方便,所以被廣泛應(yīng)用于多端口串行通信中。該卡具體設(shè)置如表1所示:

由于擴(kuò)展的8路串行通信端口都為RS 232標(biāo)準(zhǔn)接口。所以他與CAN現(xiàn)場總線不能直接相連,每一路串行端口都需通過轉(zhuǎn)換卡進(jìn)行轉(zhuǎn)換。此外,CAN現(xiàn)場總線是以報(bào)文幀為單位進(jìn)行數(shù)據(jù)通信的,且每個(gè)報(bào)文幀均攜帶對(duì)應(yīng)的ID標(biāo)識(shí)符,而RS 232是以字節(jié)為單位的。所以,需要將RS 232的字節(jié)轉(zhuǎn)換成CAN的報(bào)文幀形式,或者將CAN的報(bào)文幀分解,以字節(jié)的形式發(fā)送給計(jì)算機(jī)。這就需要設(shè)計(jì)一塊由RS 232轉(zhuǎn)為CAN總線的轉(zhuǎn)換卡。此轉(zhuǎn)換卡應(yīng)能將計(jì)算機(jī)要發(fā)送的數(shù)據(jù)轉(zhuǎn)換成CAN的格式,通過總線發(fā)送出去。而且也能將其他節(jié)點(diǎn)的數(shù)據(jù)轉(zhuǎn)換成RS 232信號(hào)傳送給計(jì)算機(jī)。為了將計(jì)算機(jī)轉(zhuǎn)換成為CAN格式,在轉(zhuǎn)換卡中使用AT89C51作為處理器。其中1路轉(zhuǎn)換卡的具體電路圖見圖3所示,其他7路與此相同。

圖3中將串口RS 232電平經(jīng)過MAX202轉(zhuǎn)化為TTL電平,然后經(jīng)過光耦6N137進(jìn)行光電隔離后和AT89C51的串口相連。此轉(zhuǎn)換卡的核心器件為CAN控制器SJA1000。CAN控制器用來執(zhí)行完整的CAN協(xié)議,完成CAN通信功能。圖3中AT89C51和CAN控制器SJA1000相連。SJA1000有2種模式,分別是Intel模式和Motorola模式。SJA1000的MODE腳決定選用何種模式;當(dāng)該腳接高電平時(shí),SJA1000是Intel模式,當(dāng)該腳接低電平時(shí),SJA1000是Motorola模式。本系統(tǒng)中,SJA1000 的MODE腳接高電平,選用的是SJA1000的Intel模式。圖3中使用PCA82C250CAN驅(qū)動(dòng)器作為CAN總線收發(fā)器。PCA82C250是CAN控制器與物理總線之間的接口,該器件可以提供對(duì)總線的差動(dòng)發(fā)送和接收功能;他能夠抗瞬間干擾,具有保護(hù)總線能力和斜率控制降低射頻干擾功能;具備熱保護(hù)功能;實(shí)現(xiàn)總線與電源及地之間的短路保護(hù);掉電能夠自動(dòng)關(guān)閉輸出;并可與多達(dá)110個(gè)節(jié)點(diǎn)相連接。CAN接收發(fā)送器實(shí)現(xiàn)將CAN控制器送出的邏輯電平轉(zhuǎn)化為總線上的物理電平。
此轉(zhuǎn)換卡的工作原理為:當(dāng)PC機(jī)向其他節(jié)點(diǎn)發(fā)送數(shù)據(jù)時(shí),PC機(jī)發(fā)出的數(shù)據(jù)經(jīng)過MAX202先變成TTL電平送入89C51。89C51接收到PC機(jī)發(fā)來的全部數(shù)據(jù)后,按照SJA1000要求格式把這些數(shù)據(jù)重新組裝,通過SJA1000發(fā)送給82C250。最后82C250把這些數(shù)據(jù)發(fā)送到CAN總線上。PC機(jī)接收數(shù)據(jù)的過程則與此相反。
4 系統(tǒng)通信軟件設(shè)計(jì)
4.1 PC機(jī)通信程序
PC機(jī)上安裝的監(jiān)控程序要求能夠?qū)崿F(xiàn)對(duì)各現(xiàn)場節(jié)點(diǎn)數(shù)據(jù)的實(shí)時(shí)監(jiān)控與采集,通信過程是通過擴(kuò)展串行口進(jìn)行的。在Windows操作系統(tǒng)提供的串行通信驅(qū)動(dòng)程序的基礎(chǔ)上,利用Windows API函數(shù)就可實(shí)現(xiàn)串行口的編程。但在本系統(tǒng)中,使用VC++為編程環(huán)境, 基于MOXA公司提供的Pcomm軟件庫實(shí)現(xiàn)串口數(shù)據(jù)采集。他把Win32 API封裝在自己的軟件包內(nèi),簡化編程步驟,縮短了編程時(shí)間。PComm對(duì)串口進(jìn)行編程通信涉及下面的4步處理過程:打開一個(gè)要通信的串行端口; 配置串口;通過串口收發(fā)數(shù)據(jù);釋放串口。函數(shù)形式如下所示:
(1) sio_open (port);
(2) sio_ioctl (port,B38400,P_NONE | BIT_8 | STOP_1 );
(3) sio_write (port,\"ABCDE\",5); sio_read (port,ibuf,length);
(4) sio_close (port);
掌握了對(duì)串口通信的關(guān)鍵步驟后,在PC機(jī)與現(xiàn)場節(jié)點(diǎn)之間還需要建立通信協(xié)議,以保證數(shù)據(jù)收發(fā)的正確性。本系統(tǒng)定義的通信數(shù)據(jù)幀共24個(gè)字節(jié),包含地址區(qū)、命令區(qū)、數(shù)據(jù)區(qū)和校驗(yàn)區(qū)4個(gè)部分,其中校驗(yàn)采用校驗(yàn)和的方法。在軟件監(jiān)控程序中自定義通信函數(shù),程序其他部位需要通信時(shí),只要給此函數(shù)傳遞適合的參數(shù),正確調(diào)用函數(shù),就可實(shí)現(xiàn)通過串口收發(fā)數(shù)據(jù)。PC機(jī)通信函數(shù)流程圖如圖4所示。

4.2 轉(zhuǎn)換卡通信程序
RS 232轉(zhuǎn)CAN總線轉(zhuǎn)換卡一方面要將PC機(jī)發(fā)送的數(shù)據(jù)幀通過SJA1000發(fā)送到本轉(zhuǎn)換卡組成的CAN網(wǎng)絡(luò)上;同時(shí)對(duì)于現(xiàn)場節(jié)點(diǎn)送回的數(shù)據(jù),轉(zhuǎn)換卡也需要接收后轉(zhuǎn)發(fā)給PC機(jī);因此轉(zhuǎn)換卡通信程序是整個(gè)系統(tǒng)中非常重要的部分。轉(zhuǎn)換卡中,接收PC機(jī)擴(kuò)展串行口發(fā)來的數(shù)據(jù)和回送給PC機(jī)的數(shù)據(jù)都是通過單片機(jī)89C51的串口通信完成,采用單片機(jī)串口中斷的方式進(jìn)行。而轉(zhuǎn)換卡和現(xiàn)場節(jié)點(diǎn)之間的數(shù)據(jù)發(fā)送和接收采用CAN總線通信完成,因?yàn)閿?shù)據(jù)幀共有24個(gè)字節(jié),但CAN控制器SJA1000每次最多只能發(fā)送和接收8個(gè)字節(jié),要完成每個(gè)數(shù)據(jù)幀24個(gè)字節(jié)的通信,SJA1000需要發(fā)送或接收3次才能實(shí)現(xiàn)。轉(zhuǎn)換卡中SJA1000發(fā)送和接收都采用中斷方式,中斷信號(hào)連接到轉(zhuǎn)換卡單片機(jī)的外部中斷1上,單片機(jī)在外部中斷程序中完成數(shù)據(jù)的發(fā)送和接收。因此轉(zhuǎn)換卡上通信程序主要包括:單片機(jī)串口發(fā)送/接收中斷服務(wù)程序、SJA1000的發(fā)送/接收中斷服務(wù)程序。單片機(jī)串口通信程序較為常用,在此不進(jìn)行詳述。圖5給出了SJA1000發(fā)送中斷服務(wù)程序流程圖,SJA1000接收中斷服務(wù)程序流程圖原理與此相似。
5 結(jié) 語
當(dāng)監(jiān)控系統(tǒng)中CAN網(wǎng)絡(luò)節(jié)點(diǎn)數(shù)超過110個(gè)時(shí),必須采用多通道組網(wǎng)方式。本文針對(duì)各種多通道CAN總線組網(wǎng)方式進(jìn)行了研究,在系統(tǒng)實(shí)際組網(wǎng)中選擇通過多串口卡擴(kuò)展CAN通道組網(wǎng)方案,很好地實(shí)現(xiàn)了CAN總線工業(yè)監(jiān)控網(wǎng)絡(luò)的數(shù)據(jù)通信和現(xiàn)場監(jiān)控管理功能。

參考文獻(xiàn)
[1]夏繼強(qiáng),邢春香.現(xiàn)場總線工業(yè)控制網(wǎng)絡(luò)技術(shù)[M].北京:北京航空航天大學(xué)出版社,2005.
[2]陽憲惠.工業(yè)數(shù)據(jù)通信與控制網(wǎng)絡(luò)[M].北京:清華大學(xué)出版社,2003.
[3]饒運(yùn)濤,鄒繼軍,鄭勇蕓.現(xiàn)場總線CAN原理與應(yīng)用技術(shù)[M].北京:北京航空航天大學(xué)出版社,2003.
作者簡介 宋玉琴 女,1972年出生,安徽合肥人,西安工程大學(xué)講師,西北工業(yè)大學(xué)在讀博士研究生。研究方向?yàn)楣收显\斷與容錯(cuò)控制、智能控制、嵌入式系統(tǒng)等。