閥島,是指集成了較多電控閥門及其控制電路的控制單元,猶如一個島嶼存在于氣動控制管線的海洋中。閥島的使用可以減少氣源裝置的數量,且便于集中控制。閥島的發展先后經歷了帶多針控制接口的閥島、帶總線通訊功能的閥島以及模塊化的閥島等階段。帶總線通訊功能的閥島布線簡單,方便調試維修,便于集成,成為閥島發展的主流趨勢。而Profibus總線作為工業現場廣泛使用的總線,具有通訊速率高,配套設施完善等特點,是閥島適用總線的首選。模塊化功能要求一個閥島設備可以由若干模塊組成,這些模塊經過簡單的設置就可以方便的添加和移除。在閥島設備模塊化發展的趨勢下,怎樣將解決各模塊間的互聯也是一個必須面對的問題。
系統結構和功能
可擴展的閥島裝置由一個主設備和若干從設備組成,其中主設備由主控制器、從控制器和閥門組組成,而從設備則只集成了從控制器和閥門組。主設備和從設備之間通過CAN總線進行通信,各設備既可以安裝到一起,也可以分散安裝。主控制器負責閥島主設備和Profibus主站的通訊、主設備和從設備之間的CAN總線通訊以及閥島的工作狀態的顯示。從控制器則主要負責閥門的控制、閥門狀態的檢測、通過CAN總線接收主控制器的指令并返回各閥門的狀態。限于篇幅,本文主要介紹主控制器的設計。閥島裝置的結構如圖l所示。
在系統初始化和組態完成后,主控制器的工作主要分為兩個過程。第一個過程是接收Profibus主站的指令,并將指令按照預先制定的通訊協議拆分成若干CAN~_訊幀發送給各從控制器。第二個過程是接收各個從控制器反饋的CAN消息,并將其按照通訊協議組合成Profibus的通訊幀發送給Profibus主站。此外,主控制器還支持通過指示燈顯示CAN總線和Profibus總線的通信故障,通過撥碼轉盤設置從站地址等功能。
硬件設計
閥島主控制器的硬件電路主要包括電源電路、單片機及外圍電路、通訊接口電路共三個部分。其中通訊接口電路又包括Profibus接口電路和CAN接口電路。
電源電路設計
閥島主控制器的電源主要有兩路如圖2,一路將閥島主控器的24、輸入電壓通過智能電源管理芯片TLE6365變換為+5V電源供給單片機外設和外圍電路,而+5V電壓又經過穩壓芯片LMl 117-2.5轉換為2.5V電壓供給單片機內核。電源的第二路是使用隔離變壓器B2405LS將通信芯片的電源和板上其它電源隔離開來,以減少板上其它電源對Profibus和CAN通信電源的干擾,保證通信安全。
單片機及外圍電路設計
閥島主控制器的控制核心選用英飛凌公司出品的16位單片機XCl64CS,該型號單片機具有兩個CAN節點,含32個報文對象,CAN幀的發送和接收遵循CAN2.0B規范,可以很好的支持基于CAN總線的模塊擴展。XCl64CS還具有靈活的外部總線控制功能以支持對VPC3的讀寫,其尋址空間達16MB,除部分尋址空間被內部存儲器占用或保留外,外部存儲器大約可以分配到12MB的空間地址。XCl64CS具有四個外部存儲器片選信號,還可以通過外擴總線控制單元(EBC)將總線配置為16位或8位數據寬度,數據總線和地址總線復用或獨立使用,并可以調整讀寫周期的長短。為了節省單片機引腳,本設計中將外部總線配置為8位復用總線,使用片選信號cso選擇VPC3,并通過鎖存器74HC573分離地址信號和數據信號。主控制器采用基于SPI總線的存儲芯片AT25 128存儲控制參數,使用撥碼轉盤開關設置設備的地址。單片機及其外圍電路如圖3所示。



Profibus與CAN接口電路設計
本設計中使用的Profibus通信協議芯片為VPC3+C。VPC3通過并行的數據和地址總線和單片機進行數據交換。在硬件設計中,需要為VPC3配置獨立的48M有源晶振,還需要連接VPC3的中斷輸出引腳到單片機的外部中斷輸入,連接復位和片選控制引腳,連接VPC3的串行輸出信號到RS485總線驅動器ADM2486。相對于Profibus接口電路,CAN總線的接口電路要簡單許多,只需要使用CAN收發器IL41050即可。Profibus的通信接口電路如圖4所示。
軟件設計
對VPC3芯片的使用是軟件設計中的重點和難點,因此在介紹軟件設計之前首先介紹VPC3芯片的工作原理。本設計中使用的VPC3+c集成了全部的Profibus DP協議,并將其獨立處理,這就極大的減輕了MCU的壓力,降低了軟件編寫的難度。VPC3+c內部集成了4K字節的雙口RAM,用戶可以通過地址總線直接訪問VPC3內部的RAM或參數鎖存器,將處理Profibus復雜的通信過程簡化成對vPC3內部存儲器的操作。
VPc3的存儲器共分為三個部分:內部參數鎖存器,組織參數存儲器和數據緩沖區。其中內部參數鎖存器從00H單元開始,包括中斷控制寄存器、狀態寄存器等,通過這些寄存器可以設置芯片的工作模式、中斷輸出極性,讀取芯片工作狀態及波特率等。組織參數存儲器從16H單元開始,共42字節,存儲從站工作中常用的參數,如從站地址、標識號、數據輸出和輸入緩沖區長度和段基址等。而數據緩沖區從40H單元開始,從站工作中需要處理的大量數據如輸入輸出數據、診斷數據、配置數據等都存儲在這個區域。
主程序設計
在程序設計中,首先在XCl64CS的初始化文件里完成單片機外部總線的配置,將外部總線配置為8位數據總線寬度,總線復用模式,并根據VPC3的要求配置總線時序,最后將VPC3的存儲器定義在000000H地址開始的外部存儲區。接下來進行VPC3芯片的初始化,在初始化函數中依次完成以下設置:首先利用控制引腳對VPC3進行硬件復位,第二步設置中斷控制寄存器和模式寄存器等內部參數鎖存器,第三步寫組織參數存儲器以設定從站地址、標識號以及各緩沖區長度和基地址等參數,最后使能VPC3。在VPC3的初始化完成之后,程序進入主循環,查詢Event變量以判斷是否有Profibus接收到數據、Profibus接收到復位請求、定時器中斷發生等事件并調用相應的函數進行處理,而Event變量則是在中斷服務程序里賦值。主程序流程圖如圖5所示。
中斷服務程序設計
在本軟件的設計中共使用了3種中斷:定時器中斷,CAN接收中斷以及VPC3觸發的外部中斷。在定時器中斷中發送CAN的信息幀,并將Profibus要發送的信息寫入數據緩沖區,時間長短可以通過定時器調節,但必須小于設定的VPc3看門狗溢出時間。CAN信息的接收采用中斷模式,一旦進入CAN中斷便改變事件標志變量Event中相應的位,而主程序則通過查詢Event變量確定CAN總線是否收到了數據并做出相應的處理。
VPC3支持了Profibus DP規定的數據交換、設置參數、組態配置等各項服務,當這些服務中的一項或幾項發生時,VPC3便置位中斷請求寄存器中相應的位并觸發單片機的外部中斷。在單片機的外部中斷函數設計中,通過查詢VPC3的中斷請求寄存器確定需要處理何種服務,對于經常發生的服務(如數據交換),只在中斷服務程序里改變事件標志變量Event,具體操作在主函數中進行,而對于不經常發生且處理時間較短的服務(如檢查組態配置),則直接在中斷服務程序中進行。VPC3觸發的外部中斷服務函數流程在圖5中予以表不。
測試結果
為了測試閥島主控器的Profibus通訊情況,使用帶CP5611卡的PC機作為主站,并基于WinCC設計測試程序。在WINCC的測試程序中,設計了8個子設備的測試接口,每個子設備合24個閥門,每個閥門都可以通過界面中的按鈕單獨控制。測試程序的界面如圖6所示。而在CAN總線一端則使用Kvaser公司生產的CAN總線監視器進行測試。在測試中,閥島主控制器工作穩定,CAN通訊幀和Profibus通訊幀均能正常發送,狀態顯示、地址和參數設置等功能也已實現。
結語
基于Profibus DP的閥島主控制器不僅實現了閥島設備和Profibus總線的通信,還為閥島從設備的擴展提供了低成本的解決方案,為實現閥島設備的總線化和模塊化提供了完善的支持。此外,本控制器也可以獨立出來,作為一個兼容Profibus和CAN總線的網關使用,具有廣闊的應用前景。