文獻標識碼: A
文章編號: 0258-7998(2011)08-131-04
為了適應不同自動化系統的應用需求,出現了擁有不同技術特點的現場總線[1]。每種現場總線都以一個或幾個大型跨國公司為背景拓展其應用領域,多種總線在一個應用領域中協調共存,不同的總線設備為用戶提供了產品選擇多樣性的同時,也給用戶帶來了設備兼容性問題,傳統的單一現場總線儀表已經不能靈活地適用于自動化系統。因此,針對多種總線共存的客觀事實,探討如何使智能儀表適應不同現場總線系統有著重要的現實意義。
1 系統結構及功能
本文系統以STC12C5612AD作為智能儀表的主CPU(內部燒寫有MODBUS通信協議),設置一個由主CPU所在板引出的引腳為GND、VDD、TXD、RXD、INT1、AGND、VCC的公共通信接口,可以連接485、PROFIBUS、CAN三種通信板中的一種通信電路實現通信。其中CAN、PROFIBUS通信電路分別有獨立的CPU(AT89C51CC03[2]和P89V51RD2,分別燒寫了DEVICENET和PROFIBUS-DP協議),與主CPU構成雙CPU結構。系統結構如圖1所示。
2 系統硬件設計
系統硬件主要包括:RS-485、CAN和PROFIBUS通信接口電路。其中,RS-485通信電路包括光耦和485驅動電路;CAN接口電路由如圖2所示的CAN控制電路和如圖3所示的CAN驅動電路組成。PROFIBUS-DP接口電路由CPU(P89V51RD2)、通信協議控制芯片SPC3[3]、高速光耦HCPL0601和RS-485總線驅動電路組成,如圖4所示。CAN接口電路與PROFIBUS接口電路相似,由于篇幅所限,本文以PROFIBUS接口電路為例進行說明。
由圖4可知,PROFIBUS-DP接口電路的CPU(P89V51RD2)負責控制SPC3實現PROFIBUS-DP總線數據的轉換與共享。SPC3已集成了PROFIBUS-DP物理層的數據收發功能,可獨立處理PROFIBUS-DP協議;DP通信服務存取點由SPC3自動建立,各種報文信息呈現在用戶面前是不同BUF的內部數據,用戶可以通過總線接口單元來訪問這些內部數據。SPC3選擇工作在Intel模式下(XINT/MOT接低電平,MODE接高電平, J2引入2路+5 V隔離電源J3用作編程口。P89V51RD2通過P0、P2口與SPC3的總線單元連接來讀寫SPC3的1.5 KB RAM[4],P0口作為數據總線和低8位地址總線復用口,P2口作為高8位地址總線。由于SPC3內部集成了鎖存器,所以P89V51RD2的P0口AD0~AD7與SPC3的DB0~DB7直接相連。P89V51RD2的讀寫控制信號WR、RD和ALE信號分別與SPC3的XWR、XRD和ALE相連,CPU通過P1.0對SPC3進行復位,并且通過外部中斷引腳P3.2接入SPC3的中斷信號X/INT。撥碼開關電路用于設置DP從站波特率。外接TL7705實現看門狗功能。由于SPC3僅集成了物理層的數據傳輸功能,不具備RS-485的驅動接口,因此擴充了RS-485驅動電路。另外為避免總線引入干擾,在SPC3與RS-485總線驅動電路之間采用10 Mb/s高速光耦HCPL0601進行光電隔離。
3 系統軟件設計
3.1 RS-485通信軟件的設計
RS-485通信由主CPU控制,不需外接單獨的CPU,采用中斷方式通信。PC機作為上位機,與儀表采用問答方式通信,總線上的設備在時序上需嚴格配合,必須遵從以下原則:(1)復位時,從機都應該處于接收狀態;(2)控制端、DE的信號有效脈寬應該大于發送或接收一幀信號的寬度,接收/發送數據也要考慮延時;(3)總線上所連接設備的發送控制信號在時序上要完全隔開。RS-485串行通信程序流程如圖5所示。RS-485串行通信采用MODBUS消息幀RTU模式,整個消息幀必須作為一連續的流傳輸。如果在幀完成之前有超過1.5個字符時間的停頓時間,則接收設備將刷新不完整的消息并假定下一字節是一個新消息的地址域。同樣地,如果一個新消息在小于3.5個字符時間內接著前個消息開始,則接收設備將認為它是前一消息的延續。
3.2 CAN總線軟件設計
CAN總線軟件的任務是實現CAN總線[5]與RS-485總線間的通信,完成兩者的協議轉換。主要包括節點初始化程序、報文發送程序、報文接收程序以及CAN總線出錯處理程序等。在初始化CAN內部寄存器時,要注意保證各節點的位速率一致,而且接發雙方必須同步。為提高通信的實時性,報文的接收和發送采用定時中斷接收方式。編寫初始化程序應注意:先清除所有通道和其對應的狀態寄存器;根據外部時鐘和需要的CAN比特率初始化位定時器;根據收發要求定義通道的ID和過濾器寄存器;初始化對應通道的收發標志和數據的字節;在CAN中斷接收程序中還要注意接收到數據后重新初始化,并設置使能接收通道,以便接收下次中斷數據。同樣,在定時中斷發送例程中,把數據放入發送緩沖區后要置發送標志,并重新初始化定時器。CAN通信流程如圖6所示。
3.3 PROFIBUS-DP從站軟件設計
采用PROFIBUS-DP通信的智能儀表通常作為PROFIBUS-DP總線的從站設備,其軟件程序包括通信主程序、SPC3初始化和中斷處理, 其主程序流程圖如圖7所示。PROFIBUS-DP通信控制器SPC3集成了PROFIBUS-DP協議。P89V51RD2微處理器需要對SPC3進行合理的配置、初始化及報文處理。微處理器除了要完成串口端的定時/計數器工作方式、波特率、中斷方式設置等自身初始化任務外,還要對SPC3進行開中斷、從站識別地址、片內方式寄存器、診斷緩沖區、參數緩沖區、配置緩沖區、地址緩沖區、初始長度等初始化設置。中斷處理程序用來處理SPC3發生的各種事件(如新的參數報文事件、全局控制命令報文事件、新的地址設置報文事件、新的組態報文事件等)。
本文設計的三種通信程序都是在Keil-Uvision3仿真軟件環境下進行C51編寫、編譯和調試;GSD文件是在西門子GSD文件編輯器(GSD Editor)[6] 環境下進行編寫和編譯。
4 測試結果
4.1 MODBUS通信測試
使用STC-ISP.exe燒寫程序軟件將MODBUS通信程序以冷啟動方式寫入主芯片STC12C5612AD。單臺儀表可以通過“ComMonitor”串口調試軟件按照標準RTU信息幀格式測試。
4.2 CAN通信測試
使用Atmel-Flip2.4.6燒寫程序軟件,將CAN通信程序以冷啟動方式寫入主芯片T89C51CC03。使用周立功公司的PCI-9810主站卡插在PC機PCI插槽上作為主節點,通信調試軟件使用ZLGCANTest-PCI9810。
4.3 PROFIBUS通信測試
將智能儀表作為從站并設置地址為3,實現與主站PC(地址1)的通信。由于PROFIBUS-DP在底層物理層上采用RS-485協議,因此可以通過串口調試助手軟件SComAssistant V2.1模擬DP系統工作過程,對總線數據進行偵聽。
4.4 通信測試結果
智能儀表分別配置的MODBUS、PROFIBUS和CANBUS三種通信試驗板均能夠接收上位機主節點發送的命令,同時發送響應信息至上位機,實現主從站數據交換,且收發數據正確,測試結果表明本設計方案可行。
本文介紹的帶有多現場總線接口的智能儀表,使智能儀表具備了MODBUS、PROFIBUS和CANBUS三種獨立的現場總線通信功能。通信板采用統一標準接口的集成化模塊結構設計,使得智能儀表更換通信板更加便捷、高效,避免了智能儀表的二次開發。為解決控制系統多種總線并存環境下的信息交換提供了一種解決方案,具有一定的應用價值。
參考文獻
[1] 陽憲惠. 現場總線技術及其應用[M]. 北京: 清華大學出版社, 2008.
[2] ATMELL. Enhanced 8-bit MCU with CAN controller and flash memory AT89C51CC03 datasheet[S]. 2007.
[3] Germany, Siemens AG. Siemens AG,SIMATIC NET SPC3 PROFIBUS controller user description[S]. 2000.
[4] 孫鶴旭, 梁濤, 云利軍. Profibus 現場總線控制系統的設計與開發[M]. 北京:國防工業出版社,2007.
[5] BOSCH Inc. CAN 2.0 specification part A&B. 1991.
[6] 羅紅福,胡斌,鐘存福,等. PROFIBUS-DP 現場總線工程應用實例解析[M]. 北京: 中國電力出版社, 2008.