孟群升,郭書軍
(北方工業(yè)大學 信息學院,北京 100144)
隨著人們生活水平的不斷提高,越來越多的智能儀器開始出現在公眾的視野中。智能儀器是將人工智能的理論、方法和技術應用在普通儀器上[1],而為了實現這種特性或者是功能,智能儀器中一般都具有嵌入式微處理器,實現硬件軟件相結合。并且隨著社會的發(fā)展,往往還需要同時間測量不同地點、不同測量量是否工作在正常的范圍內,進行數據收集。所以分布式測量監(jiān)測系統應用而生,每個設備與主機進行通信,實現數據的收集與設備運行狀態(tài)的監(jiān)測。但是,目前測量監(jiān)測系統缺乏集成性,大多采用傳統一對一、點到點的傳輸方式,不能夠同時間監(jiān)測到不同點的數值,無法滿足要求。
圖1 系統拓撲圖Fig.1 System topology
針對測量監(jiān)測系統存在的以上問題,綜合運用有線通信技術以及嵌入式軟硬件技術,設計一套硬件電路,支持CAN 總線傳輸數據,量程自動切換、數據保存,報警等功能,實現可廣泛應用在工廠電壓監(jiān)測、設備數據監(jiān)測的系統。
為了增強系統可維護性,系統采用了模塊化設計思想,減少系統之間的耦合性[2]。各模塊與主控芯片相結合,實現數據的測量、存儲和實時傳輸等功能。
設計中對系統提出以下要求:
1)處理器具有高速運算處理能力,能夠滿足對數據處理與后續(xù)開發(fā)的要求。
2)具有實時數據傳輸,對多個點的設備可進行同時監(jiān)測與數據通信。
3)具有記憶存儲功能,可通過設備進行查看,也可通過上位機訪問數據庫進行歷史數據查看。
4)具有擴展機制,預留接口,方便加入擴展設備。
5)具備報警機制,上位機可查看出現問題的設備,進行預警操作。
本文所研究的基于CAN 總線的儀器運行監(jiān)測系統,以混合MCU-STM32F303 為核心,結合各獨立模塊組成終端設備,實現數據的采集與處理。數據傳輸采用CAN 總線的方式,具有高可靠性、高實時性和配置靈活等特點,在工業(yè)控制領域應用非常廣泛。本系統拓撲結構如圖1 所示。
從圖1 可以看出,基于CAN 總線的儀器運行監(jiān)測系統分下位機和上位機兩部分組成。下位機通過功能切換與量程自動識別實現對各個電參量數據地采集,并通過CAN 總線的方式對數據進行實時傳輸。上位機可同時獲取不同地點的設備的信息,并且上位機可下發(fā)指令,實現對下位機的控制與數據監(jiān)測。
圖2 系統硬件結構框圖Fig.2 System hardware block diagram
本系統采用STM32F303 主控芯片,對設備進行控制與數據采集,使用了CAN 總線的方式對數據進行傳輸。其中,系統還具有存儲模塊、測量模塊(模擬前端)、按鍵模塊、LCD 顯示模塊、功能選擇模塊、報警模塊和通信模塊。其中,測量模塊中包括直流電壓模塊,交流電壓模塊、直流電流模塊、交流電流模塊、量程自動切換模塊和保護模塊。各模塊之間互不影響,并將各種電參量轉換為STM32 可識別的電壓信號,供STM32 的ADC 進行采集。系統硬件結構框圖如圖2 所示。
測量模塊中包括直流電壓模塊、交流電壓模塊、直流電流模塊、交流電流模塊、量程自動切換模塊和保護模塊等6 部分組成。
其中直流電壓模塊、交流電壓模塊用一套分壓電阻,模擬開關選用MAX4638 芯片,實現量程自動切換,其內阻小,對測量的準確性影響較小。交直流電壓轉換采用TL082 實現線性半波整流,采用RC 濾波電路,得到處理后的直流電壓值供STM32 的ADC 采集,由于STM32 自帶ADC 輸入內阻小,而電壓分壓器的輸入電阻為1MΩ,造成無法采集到實際數據,所以在ADC 采集前加一級電壓跟隨器,保持輸出電壓的同時,減小輸入電阻,以免造成數據采集不準確。
電流模塊將電流信號通過小電阻轉換為直流電壓信號供ADC 進行采集,量程轉換采用電磁繼電器進行切換,由于模擬開關的輸入電流不宜過大,所以采用電磁繼電器進行量程地切換。
圖3 直流電壓模塊電路圖Fig.3 Circuit diagram of DC voltage module
保護模塊,在ADC 采集管腳與模擬開關輸入引腳前加入鉗位二極管,保證輸入電壓不大于3.3V,以免燒壞芯片。測量模塊中,直流電壓模塊為基礎模塊,任何電信號都要轉換為STM32 可識別的電壓信號進行AD 采集,其中直流電壓模塊電路圖如圖3 所示。
STM32F3 系列有CAN 2.0B 通信接口,結合SJA1040芯片實現數據傳輸。通過CAN 總線連接各個網絡節(jié)點,形成分布式控制系統。傳輸介質采用雙絞線、同軸電纜或光纖。CAN 總線有兩個ISO 國際標準,本文采用ISO11898的高速CAN 通信協議,屬于閉環(huán)總線,傳輸速率可達1Mbps??偩€拓撲圖如圖4 所示。
節(jié)點兩端要加入120Ω 電阻,注意阻抗匹配,否則無法實現傳輸。同時CAN 總線具有硬件過濾機制,配置過濾器可以在硬件上實現是否接收數據,減少主CPU 對軟件處理的負擔。
電池正極分為兩路,第一路接入到LM1117-3.3 的輸入端,LM1117-3.3 是三端集成穩(wěn)壓芯片,其輸出端輸出恒定的3.3V 作為單片機的系統電源與基準電壓。另一路接入到LM1117-5.0,其輸出穩(wěn)定的+5V 電壓。-5V 電壓由LM2663 產生,供給模擬放大器芯片和模擬器件等工作。
系統的軟件設計主要包括終端軟件編程和上位機C#設計。
圖4 總線拓撲圖Fig.4 Bus topology
圖5 系統軟件流程圖Fig.5 System software flow chart
終端軟件設計:對終端設備進行系統初始化,處理包括識別控制信號和數據采集等工作。主要實現對模擬前端轉換后產生的電壓信號進行ADC 采集與數據處理,得到的數據采用中值濾波算法,減少小部分ADC 采集不準確造成的偏差。數據傳輸由CAN 總線實現,接收以及解析上位機發(fā)送的指令,然后按照雙方規(guī)定好的協議進行相應的操作。軟件流程圖如圖5 所示。
系統初始化主要包括:按鍵、蜂鳴器、LCD 屏、ADC、EEPROM、USART、CAN、RTC、DSP 等。
圖6 圖形化展示界面Fig.6 Graphical display interface
處理包括監(jiān)測供電電壓是否過低,過低LCD 提示電量不足。通過功能選擇模塊選擇測量功能,產生控制信號由STM32 識別,進行采集控制。量程模塊選擇合適的輸入電壓,進行AD 采集,如果采集值超出報警閾值,進行報警處理,如果未到報警閾值,檢測是否符合量程設定值,如果采集的值較小,切換到下一量程進行ADC 采集,直到符合采集范圍。采集一定的數據進行軟件濾波處理,得到的結果進行LCD 顯示。同時終端可以通過人為按鍵的方式主動數據上傳,也可接收上位機命令進行數據存儲和數據上傳等工作。
上位機軟件設計:采用主從查詢方式通信。上位機向下位機發(fā)查詢命令、下位機針對上位機發(fā)來的命令作出相應的動作。如果是查詢數據命令,將響應數據發(fā)送給上位機;如果是查詢測量功能命令,則完成查詢功能任務。數據上傳后顯示數據,并將數據保存到數據庫,完成數據記錄和時間記錄;上位機還可查詢歷史數據,添加歷史數據、刪除歷史數據,實時監(jiān)測數據等功能,通過折線圖的形式直觀顯示,實現監(jiān)測、報警等操作。圖形化展示界面如圖6 所示。
本文所設計的基于CAN 總線的儀器工作監(jiān)測系統,可廣泛應用在工廠設備監(jiān)測,電器設備監(jiān)測等領域。通過CAN 總線傳輸信息,實時性強、可靠性強。本系統還采用了STM32F3 系列,主要應用于模擬測量,電表設計等應用。數據采集處理精度較高、使用方便、成本低等優(yōu)點,具有廣泛的應用前景。