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