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