CANOpen總線與軟PLC在MPS中的應(yīng)用
1 引言
CANopen是CAN總線的一種有影響力的應(yīng)用層協(xié)議,近年來得到了廣泛的應(yīng)用,保證了各種廠商設(shè)備的互用性、互換性,同時(shí)提高了信息傳輸?shù)目煽啃?實(shí)時(shí)性。軟PLC是一種基于PC機(jī)的新興自動(dòng)控制技術(shù),不僅能夠?qū)崿F(xiàn)硬PLC的所有功能,而且遵循IEC61131-3編程標(biāo)準(zhǔn),為用戶提供了更多的開放性。MPS是德國FESTO公司結(jié)合現(xiàn)代工業(yè)企業(yè)特點(diǎn)開發(fā)研制的模擬自動(dòng)化生產(chǎn)加工單元。它采用模塊化結(jié)構(gòu),
將氣動(dòng)技術(shù)、電氣電子、傳感器技術(shù)、裝配技術(shù)、機(jī)械技術(shù)、現(xiàn)場(chǎng)總線技術(shù)綜合于一體。選取不同的單元可以組成自己的模擬生產(chǎn)加工系統(tǒng),最大可以構(gòu)成具有9個(gè)單元的MPS系統(tǒng)。包括:送料、檢測(cè)、加工、提取、暫存、組裝、沖孔、功能檢測(cè)和分揀單元。
基于CANopen協(xié)議的I/O從站可以作為MPS控制系統(tǒng)中的一部分,國內(nèi)還沒有現(xiàn)成的產(chǎn)品可供選用,國外的產(chǎn)品往往價(jià)格過高, 增加了系統(tǒng)開發(fā)的成本。由此應(yīng)用C8051F040單片機(jī)自行開發(fā)基于CANopen DS301、DSP401協(xié)議的I/O從站,并且通過上位機(jī)CAN卡構(gòu)建了基于德國3S公司的CoDeSys軟PLC的分布式I/O控制系統(tǒng)。最終,通過測(cè)試實(shí)驗(yàn)驗(yàn)證了系統(tǒng)信息傳遞的可靠性、準(zhǔn)確性和實(shí)時(shí)性。本文采用的控制系統(tǒng)結(jié)構(gòu)(如圖3所示)具有很好的開放性,靈活性和可擴(kuò)展性。
2 系統(tǒng)概述
圖1控制系統(tǒng)總體結(jié)構(gòu)
整個(gè)控制系統(tǒng)由監(jiān)控計(jì)算機(jī)、CAN總線主站適配卡、I/O從站節(jié)點(diǎn)、CAN總線網(wǎng)絡(luò)和現(xiàn)場(chǎng)設(shè)備構(gòu)成。其系統(tǒng)結(jié)構(gòu)如圖1所示。分布在現(xiàn)場(chǎng)的I/O從站節(jié)點(diǎn)連接MPS的傳感器信號(hào),并通過CAN通訊接口與總線相連,監(jiān)控計(jì)算機(jī)運(yùn)行軟PLC軟件并通過CAN總線主站適配卡和連接在CAN總線網(wǎng)絡(luò)上的各個(gè)從節(jié)點(diǎn)進(jìn)行實(shí)時(shí)通訊,從而實(shí)現(xiàn)MPS控制系統(tǒng)的分散控制和集中監(jiān)管。
監(jiān)控計(jì)算機(jī)可以選用普通計(jì)算機(jī),軟PLC選用德國3S公司的CoDeSys??偩€適配卡完成總線和監(jiān)控計(jì)算機(jī)之間的協(xié)議轉(zhuǎn)換。各個(gè)從站節(jié)點(diǎn)之間使用專用屏蔽電纜互聯(lián)構(gòu)成CAN總線網(wǎng)絡(luò),總線兩端使用終端電阻,用來提高系統(tǒng)穩(wěn)定性、增強(qiáng)系統(tǒng)的抗干擾能力。
3 基于CANopen協(xié)議I/O從站的開發(fā)
3.1 系統(tǒng)的硬件設(shè)計(jì)
如圖2所示,本文采用C8051F040單片機(jī)作為I/O從站的主芯片, 它具有與8051指令集完全兼容的CIP-51內(nèi)核,內(nèi)部集成的CAN控制器為Bosch CAN控制器[4]。此CAN控制器有以下幾部分構(gòu)成:CAN內(nèi)核、報(bào)文RAM(與C8051 RAM相互獨(dú)立)、報(bào)文處理狀態(tài)機(jī)制和CAN控制寄存器。CAN收發(fā)器我們采用SN65HVD232,它具有高速穩(wěn)定的差動(dòng)發(fā)送和接收能力;為了提高抗干擾能力,系統(tǒng)中采用雙路電源模塊供電,在控制器和傳輸介質(zhì)之間加接光電隔離器件ADuM1201高速數(shù)字隔離器替代傳統(tǒng)的光電耦合器(如6N137),簡(jiǎn)化了電路,極大的降低了功耗。此外,從站I/O端口電路還采用了光耦TLP521隔離器進(jìn)行光電隔離。為了使繼電器輸出得到足夠的電流供應(yīng),光耦輸出后加達(dá)林頓管以加大驅(qū)動(dòng)電流。最后接自恢復(fù)式保險(xiǎn)絲,然后輸出。在圖2中只給出一路輸入輸出,16路類同。在工業(yè)現(xiàn)場(chǎng),需要共陰極的繼電器輸出,設(shè)計(jì)的數(shù)字IO從站需要16路輸入,16路輸出。基于此,選擇兩片UDN2982達(dá)林頓管。單片機(jī)在復(fù)位時(shí),端口為高電平,為了避免復(fù)位期間繼電器動(dòng)作,所以
圖2 系統(tǒng)硬件簡(jiǎn)圖
設(shè)計(jì)低電平光耦連通,繼電器吸合。由此,輸出光耦使用下拉電阻。輸入輸出都有LED顯示。
3.2系統(tǒng)的軟件設(shè)計(jì)
本系統(tǒng)的軟件設(shè)計(jì)采用模塊化設(shè)計(jì),使用C51Windows編程語言進(jìn)行軟件編程。程序框圖如圖3所示,程序模塊分為主程序模塊、CANopen協(xié)議模塊、對(duì)象字典與節(jié)點(diǎn)配置模塊、系統(tǒng)I/O模塊、單片機(jī)與CAN控制器硬件驅(qū)動(dòng)模塊。
CANopen協(xié)議的軟件實(shí)現(xiàn)遵循CANopen協(xié)議預(yù)定義主/從連接集,從站節(jié)點(diǎn)支持4個(gè)接收PDO,4個(gè)發(fā)送PDO,1個(gè)SDO,1個(gè)緊急對(duì)象和1個(gè)節(jié)點(diǎn)錯(cuò)誤控制對(duì)象。結(jié)合通訊協(xié)議的特點(diǎn),軟件設(shè)計(jì)中采用結(jié)構(gòu)體的方式來定義諸如CAN報(bào)文、發(fā)送和接收PDO配置對(duì)象、CANopen協(xié)議配置對(duì)象等,通過定義結(jié)構(gòu)體型指針變量完成對(duì)對(duì)象中相關(guān)數(shù)據(jù)的讀寫,給程序的編制帶來了方便。此外,利用定義數(shù)組的方法實(shí)現(xiàn)了對(duì)象字典和過程數(shù)據(jù)映像的操作。在SDO報(bào)文處理子函數(shù)中,通過被訪問對(duì)象的主索引和子索引,以數(shù)組查詢的方式實(shí)現(xiàn)了對(duì)對(duì)象字典的讀寫訪問。CANopenI/O從站的狀態(tài)機(jī)轉(zhuǎn)換通過判斷接收NMT報(bào)文命令字,對(duì)心跳報(bào)文標(biāo)志字節(jié)代碼進(jìn)行讀寫,產(chǎn)生程序散轉(zhuǎn)的方式得以實(shí)現(xiàn)。對(duì)于PDO、SDO通訊對(duì)象的處理則根據(jù)心跳報(bào)文標(biāo)志字節(jié)代碼指明的當(dāng)前狀態(tài)分別進(jìn)行處理。
圖3 系統(tǒng)主程序軟件框架圖軟件設(shè)計(jì)的關(guān)鍵在于C8051F040的CAN信息的收發(fā)函數(shù)、如何濾波以及對(duì)象字典在程序中的實(shí)現(xiàn)。
評(píng)論