基于CAN總線的電工實驗指導系統設計
引 言
在生產現場控制系統中,智能設備與常規電氣設備的安裝、調試與維護需要相當數量的電氣技術人員,如何高效、批量、規范地培養高級電氣操作人員是教儀廠商急需解決的問題。它要求設備具備通信功能,讓教師能掌握訓練過程的動態指標,從而了解學員的實際實驗情況,可對實驗過程進行控制,實現分類指導。
本文通過對CAN(控制器局域網)協議及其應用的研究,利用CAN通信控制器、CAN收發器以及增強型微控制器等元器件,研制并開發一種基于CAN總線的應用系統--電工實驗指導系統,在電工實驗室開出網絡化實驗教學課程,從而改變常規教學方法的不足,讓學生更加自主、靈活地完成其實驗任務,并可根據自己的情況進行擴展實驗,為建立開放性實驗實訓設施基地打下良好的基礎,還能使學員體會到網絡實驗的實際價值,了解CAN總線控制技術的基本知識。
1 CAN總線網絡通信層的模型與協議
針對不同的應用領域可選擇不同的應用規范,對于一般的應用領域,采用"命令-響應"模式的通信協議,就可以實現可靠而有效的"主-從"式通信網絡。如果需要進行大量數據交換或通信方式靈活的CAN網絡,則可采用一些標準的多主通信協議,如HilonB協議,或者采用CAN2.0協議中遠程幀定義。在汽車電子產品領域,通常參考或直接采用J1939等標準規范。在電力通信設計領域,則常采用DeviceNETV2.0規范,該規范己被我國采納國家標準。在智能樓宇通信領域,一般使用Modbus協議或延用RS-485模式的"主-從"協議。
本系統在建立實際CAN總線通信網絡時,使用CAN底層硬件來實現對物理層、數據鏈路層的控制。應用CAN2.0A/B協議規定的通信檢錯等機制保證CAN總線通信網絡的可靠性,建立了用戶協議層的通信協議,并對網絡上的通信數據流進行解釋與管理。其用戶協議層(應用層)通信協議由數據幀和遠程幀格式定義來實現,屬于"主-從"式結構。
2 硬件系統的組成與模塊硬件的設計
基于現場總線的電工實驗指導系統的硬件主要由主機、接口卡、智能節點(從機)組成。主機中有應用程序和數據庫等文件;接口卡是CAN實現通信的橋梁,同時,在網絡中它也作為一個節點;智能節點由基于現場總線、單片機技術的數據采集與傳輸模塊以及實際操作接線裝置等組成。節點能夠在計算機的控制下對學生的電工實驗進行智能指導。
2.1 數據采集與傳輸模塊的設計
數據采集與傳輸模塊可分為5個主要部分,即:由單片機AT89S52組成的主機部分;由SJA1000、PCA82C250、光電隔離電路等組成的CAN總線控制及接口部分;由+5V基準電壓源、驅動三極管、LED指示燈、數碼管組成的電源與顯示部分;采用4片8255作為I/O口的擴展,并與操作工位后端接口等電路組成的數據轉換與采集部分;實際操作工位。
AT89S52單片機作為主機,負責對SJA1000進行初始化,通過控制SJA1000實現數據的接收和發送等通信,實施對實驗數據的采集,采用P1口控制動態掃描顯示與指導實驗相關的數據等。選用74L,S373作為地址鎖存器,用74LS138對8255、SJA1000進行片選。
2.1.1 CAN總線控制及接口部分
在從機的運行過程中,由于主控CPU需完成多項工作任務,在要求具有一定的靈活性的同時,還需使系統具有一定的可擴展性,因此,從機中的CAN控制器選用Philips公司的SJA1000。選用PCA82C250作為CAN總線的收發器,它也是CAN協議控制器與物理層之問的接口,具有抗瞬變、抗射頻和抗電磁干擾的性能,內部的限流電路具有電路短路時對傳送輸出級進行保護的功能。在節點(工位機)與介質之間加入光耦電路,即SJA1000的TX0和RX0并不是直接與82C250的TXD和RXD相連,而是通過高速光耦6N137后與82C250相連。6N137為高速光隔器件,作為外線路與系統之問的隔離,并采用兩個完全隔離電源VCC和VDD分別對光耦兩部分電路供電,從而達到信號之間的完全隔離,這樣可有效地提高系統的抗干擾能力和內部系統的安全性。SJA1000的ADO~AD7連接到AT89S52的P0口,CS連接到74LS138的Y4端口,Y4為0時CPU片外存儲器地址可選中SJA1000,CPU通過這些地址可對SJA1000執行相應的讀寫操作,SJA1000的RD、WR、ALE分別與AT89S52的對應引腳相連,可將INT接AT89S52的INT0或INT1。AT89S52可通過中斷或查詢方式訪問SJA1000,也可將INT接AT89S52的其他端口,采用查詢方式訪問SJA1000。接口電路如圖1所示。

2.1.2 數據轉換與采集部分
1)數據轉換電路的設計
根據電氣控制原理的分析與研究,從中優化出一種比較通用的接線方法,讓對應的點按操作順序依次向CPU的I/O口提供一定規則的+5 V電平,即可完成采樣和數字量的轉換。學生操作工位的正面為與實際接線端子插孔,其背面為與之相連的信號線,信號線的另一端與8255的某一固定的端口相接。
2)采樣電路的設計
工位面機采用4片8255作為I/O口的擴展,并通過20 kΩ下拉電阻與操作工位后端對應的接線端子相接。在8255初始化時,讓其工作于普通讀方式,此時,如果某端子為高電平,則在對應的8255 I/O口可采集到高電平。如果所有接線端子均為高電平,則總電流會接近7805的最大輸出電流。因此,需采用分相、分電路的方法進行實驗指導操作,完成實驗的指導任務。 2.1.3 單片機對硬件電路各部分訪問的地址
硬件電路原理圖設計好后,其訪問地址即可根據具體的情況予以確定。本文采用P2.5~2.7口控制74LS138,分別對4片8255和SJA1000進行片選和訪問。其訪問地址如表1所示。

3 CAN總線電工實驗系統節點軟件
3.1 數據采集與顯示在節點中的實現
本文采用AT89S52單片機作為工位(節點)系統的控制、數據采集和顯示的核心,使用Keil uVision2集成開發環境進行軟件的開發與調試。
由于從機需要完成顯示、數據采集與傳輸等功能,因此至少需采用2個中斷源進行程序控制,即INT0和T0。其中:INT0用于指示CAN總線數據的接收與發送等進程的外部中斷;T0控制顯示掃描時鐘等。數據采樣過程分為兩種情況:一是初始化時的自動初始采樣;二是在程序的運行過程中,當接收到數據幀時,自動執行一次采樣。
1)顯示部分的功能與過程分析
顯示電路的功能有3種:顯示初始化成功、有關出錯和對學生實驗步驟進行指示等信息。這些信息可由用戶根據硬件結構和軟件的需要自行定義。本文采用74LS47譯碼驅動集成電路進行驅動與顯示控制。通過軟件的運行,使P1口分別控制6個數碼管共陽端的通斷,同時,由P0口向74LS47譯碼驅動電路提供數據,實現了顯示的動態掃描控制。初始化正常時自定義顯示為004321,正常運行時顯示課題號、相號、接線步驟標號或出錯時顯示錯誤標志號。
2)數據采集的原理與過程分析
數據采集的原理是:CPU通過其P2口的相應引腳控制向與其對應的分相首端子提供+5 V電平,其余接點按一定規則用信號線相連,從而使每個端子上出現0電平或高電平,這樣對應端子的狀態可通過8255讀取。即按一定順序接線時,可在對應的8255口讀到不同的采樣數據。8255的每一個端口均可讀到一個8位二進制數(1字節),將這些數據與實驗操作步驟關聯,從而使每次操作得到不同的數據。本系統需4片8255,一次采樣可得到12個8位二進制數。
在單片機的RAM空間設置一個20字節的數組作為采集數據的存儲空間。在上電復位時,使8255均初始化為普通讀方式,并向數組中寫入初始化數據。正常運行后,每接收到一個數據幀就進行一次數據的采集。所采集的數據直接按CAN總線通信的幀格式對數組中的內容進行更新,以備讀取與上傳。數據采集的存儲地址與內容如表2所示。

3.2 通信軟件的設計
本文中主站采用PC15121接口卡作為接口設備,在通信方式與協議確定后,主站與從站的通信可調用該產品的接口函數來實現。從站(工位)CAN節點的控制軟件采用模塊化設計方法。主要有5個模塊:SJA1000初始化模塊、SJA1000接收數據模塊、SJA1000發送數據模塊、SJA1000錯誤處理模塊;系統的其他任務模塊。
3.3 智能節點程序的運行
從機的主要功能為硬件的初始化、進入正常的顯示、等待中斷事件的發生、接收數據幀、數據處理并送顯、等待接收遠程幀并返回所需的數據幀和數據的采集等。其主程序流程如圖2所示。外部中斷服務程序流程如圖3所示。

在主機程序設計中,接口程序與數據處理的算法設計是關鍵。其中,主機接口卡可作為一個智能節點,網絡中的數據通信主要是對該卡的操作。
4 結束語
本文對CAN總線網絡的軟硬件系統進行了分析與研究,采用了一種基于CAN總線的組網協議與數據傳輸方式,并將其應用于電工實驗指導系統中,以"主一從"通信模式實現網絡通信,達到了預期目標。設備能滿足實驗環境的需要。
評論