基于CAN總線的環境測控系統設計
此系統采用單片機構成一個控制系統。接收來自主機的控制信號,通過繼電器來對機械執行機構進行控制,以調節諸如包括溫度、濕度、氣體壓力和氣體百分比容量等參數。此系統框圖如圖3所示。
圖3 機械執行機構框圖4 系統主要軟件設計
4.1 CAN總線接口的初始化設計
CAN控制器卡的軟件設計主要分為三部分:CAN初始化、數據發送及數據接收。系統軟件設計的指導思想是:系統上電后,首先對SJA1000進行初始化,配置SJA1000的控制段寄存器內容以設定通信參數(如:模式、位速率、驗收碼、屏蔽碼、字段長、總線定時、波特率、輸出特性等)。初始化完成后,SJA1000按設定值控制CAN總線上的通信。系統是否能正常地工作,初始化程序的設計是個關鍵。CAN初始化主要是設置CAN的通信參數,即通過對CAN控制器段中的寄存器進行設置,從而確定CAN控制器的工作方式等。初始化程序的流程圖如圖4所示。
圖4 SJA1000初始化流程圖總線定時寄存器的設置極大地影響了CAN性能的發揮。一般來說,若硬件連接無誤,通信失敗的主要原因在于總線定時寄存器設置不當。它確定了3個時間—時鐘周期、系統周期和位周期之間的關系。對BTR0操作,可決定波特率預分頻器BRP和同步跳轉寬度SJW的數值;對BTR1進行寫操作,可決定位周期的寬度、采樣點的位置及在每個采樣點進行采樣的次數。這兩個寄存器的內容,可唯一確定波特率及同步跳轉寬度。只有當系統中的所有節點的BTR0和BTR1的內容都相同時,才能正常通信。關于CAN總線波特率的設置參見表1。
表1 CAN總線波特率設置4.2 驅動程序開發
PCI總線接口設備的一大特點是即插即用。因此,在軟件上必須編寫能夠實現即插即用功能的設備驅動程序。從廣義上來說,驅動程序就是控制硬件的一組函數。PCI設備驅動程序的開發,就是取得PCI板卡所占用的各種資源(內存、端口、中斷和DMA等),并提供給用戶一條可以訪問這些資源的途徑。在本設計中,由于PCI9052的中斷、I/O端口、映射內存等資源都是動態分配的,必須編寫驅動程序來管理硬件,才能供用戶編程使用。
WinDriver是專業的設備驅動程序開發工具。利用它的驅動程序向導(Driver Wizard),可以快速測試新硬件,并生成設備驅動程序框架。在寫設備驅動程序之前,重要的一點是確保硬件準確無誤。用WinDriver的驅動程序向導DriverWizard 提供的診斷程序Diagnostic Program來診斷CAN控制器卡。此診斷程序支持多種類型的芯片,本設計采用PCI9052作為PCI接口芯片,由于WinDriver PLX 9050的庫完全與PLX 9052兼容,可以選擇PLX 9050診斷程序9050Diag.exe,它通過WinDriver的程序訪問硬件。
5 結語
由于工控機及先進的數據采集處理技術的應用,大大提高了對環境參數的測控,并提高了測控精度。CAN總線的使用使整個復雜的系統更加簡潔、緊湊,提高了測控系統的抗干擾能力,同時也增強了系統的安全性。接入局域網,可使操作人員遠距離對測控系統進行控制,實現測控數據的遠距離傳輸。
評論