一種基于CAN總線的監(jiān)控系統(tǒng)設(shè)計(jì)及位定時(shí)分析
can應(yīng)用層協(xié)議
在can 2.0規(guī)范中,只對物理層和數(shù)據(jù)鏈路層作了規(guī)定,用戶需要根據(jù)自己的需求制定應(yīng)用層協(xié)議。本設(shè)計(jì)以各個(gè)節(jié)點(diǎn)為控制對象,設(shè)計(jì)其應(yīng)用層通信協(xié)議。can總線上傳輸?shù)男畔⒁话憧煞譃?類:
命令信息:包括上位機(jī)要數(shù)命令、上位機(jī)控制命令。每周期上位機(jī)經(jīng)can—rs232轉(zhuǎn)換模塊下發(fā)至各個(gè)節(jié)點(diǎn)要數(shù)命令。上位機(jī)接到狀態(tài)信息后,根據(jù)情況下發(fā)控制命令,經(jīng)由轉(zhuǎn)換模塊下發(fā)至各個(gè)節(jié)點(diǎn)模塊。
狀態(tài)信息。節(jié)點(diǎn)接到命令信息后,由各個(gè)節(jié)點(diǎn)采集現(xiàn)場數(shù)據(jù)信息,發(fā)送到can—rs232轉(zhuǎn)換模塊,再由其上傳給上位機(jī)。信息包括:設(shè)備開關(guān)狀態(tài),電壓電流量等。
根據(jù)系統(tǒng)實(shí)際情況,本系統(tǒng)can2.0標(biāo)準(zhǔn)幀格式的基礎(chǔ)上(見表2),制定了一個(gè)多幀傳輸?shù)膽?yīng)用層協(xié)議。協(xié)議中,實(shí)用軟件濾波,即屏蔽了驗(yàn)收濾波器,將除了幀信息外,包括11位標(biāo)識符的第二、三字節(jié)都進(jìn)行了分配,如表3所示。
其中,幀信息可以根據(jù)實(shí)際情況而定。
標(biāo)識符id10~id3代表模塊地址,所以協(xié)議理論上可滿足256個(gè)控制節(jié)點(diǎn),標(biāo)識符id2、id0以及該字節(jié)后六位定義為幀類型:命令幀或狀態(tài)幀,數(shù)據(jù)信息這樣劃分簡單明了。上位機(jī)根據(jù)模塊地址收集判斷節(jié)點(diǎn)信息,并下發(fā)相應(yīng)命令。協(xié)議還規(guī)定,按優(yōu)先權(quán)由高到低,從低向高為模塊分配地址,以保證總線競爭中優(yōu)先權(quán)高的節(jié)點(diǎn)能更先占有總線。
系統(tǒng)軟件設(shè)計(jì)
基于總體設(shè)計(jì)要求和硬件組成,結(jié)合can總線協(xié)議的模型結(jié)構(gòu),整個(gè)系統(tǒng)的軟件設(shè)計(jì)可以分為兩部分:節(jié)點(diǎn)部分、上位機(jī)部分。
節(jié)點(diǎn)部分包括:初始化模塊,can通信模塊,串行通信模塊,數(shù)據(jù)處理模塊。正確的can初始化,可以充分利用can總線的優(yōu)勢,保證can通信正確可靠工作。對can節(jié)點(diǎn)初始化只有在復(fù)位模式下才可以進(jìn)行,初始化主要包括工作方式的設(shè)置、接收濾波方式的設(shè)置、接收屏蔽寄存器(amr)的設(shè)置、接收代碼寄存器(acr)的設(shè)置、波特率參數(shù)設(shè)置和中斷允許寄存器(ier)的設(shè)置等。在完成can控制器的初始化設(shè)置以后,can控制器就可以回到工作狀態(tài),執(zhí)行正常的通信任務(wù)。其他模塊,不再詳述。
上位機(jī)部分:上位機(jī)軟件由vc++6.0軟件編寫,應(yīng)用mfc類庫編寫并生成了具有windows風(fēng)格的人機(jī)交互界面。軟件應(yīng)用mscomm控件通過串行端口傳輸和接收數(shù)據(jù),為應(yīng)用程序提供了串行通訊功能。microsoft communications control(mscomm)是microsoft公司提供的簡化windows下串行通信編程的activex控件,為應(yīng)用程序提供了通過串行接口收發(fā)數(shù)據(jù)的簡便方法。具體來說,它提供了兩種處理通信問題的方法:一是事件驅(qū)動(event-driven)方法,一是查詢法。我們采用事件驅(qū)動方式。使用者可以通過良好的人機(jī)界面對整個(gè)系統(tǒng)進(jìn)行實(shí)時(shí)監(jiān)控。
評論