0引言
在現(xiàn)代工業(yè)控制領(lǐng)域中,RS232、RS485、CAN 等總線接口在工業(yè)領(lǐng)域中應(yīng)用較為廣泛[1-3]。在許多場合,由于設(shè)備處理數(shù)據(jù)的形式不同,通信接口各有差異,因此各式各樣數(shù)據(jù)采集的轉(zhuǎn)換器出現(xiàn)了,但是市面上出現(xiàn)的很多轉(zhuǎn)換器一般都只是兩種總線數(shù)據(jù)格式之間的轉(zhuǎn)換,難以適應(yīng)端口總線繁雜的場合[4-6],為此本文設(shè)計了一種多源數(shù)據(jù)采集板卡,其以 STM32F429 為核心,實現(xiàn)對多路 RS232、RS485、CAN 總線數(shù)據(jù)收發(fā)以及 GPIO 接口配置功能,另外板載 GPS/BD 模塊,滿足了用戶對采集多種不同通信接口設(shè)備數(shù)據(jù)以及時間地理信息顯示的需求。
1 系統(tǒng)總體架構(gòu)
多源數(shù)據(jù)采集板卡主要由 STM32 核心電路、2 路 CAN 總線接口、2 路 RS485 接口、4 路 RS232 接口、8 輸入 /8 輸出 GPIO 端口、板載 GPS/BD 模塊以及電源電路組成。多源數(shù)據(jù)采集板卡硬件結(jié)構(gòu)如圖 1 所示。
STM32 作為多源數(shù)據(jù)采集板卡的控制核心,控制協(xié)調(diào)各路通信總線接口的數(shù)據(jù)收發(fā),以及與上位機(jī)進(jìn)行交互,實現(xiàn)上位機(jī)對設(shè)備終端數(shù)據(jù)的采集、顯示與控制等功能;2 路 CAN 總線分別獨立,并在板卡兩側(cè)各有 1 路接口,通信速率范圍為 500 kb/s~1 Mb/s;2 路獨立 RS485 總線,波特率 9 600 b/s 到 115 200 b/s 可配置,可掛載多個 RS485 總線通信的傳感器模塊,均分布在板卡左側(cè);4 路 RS232 接口,波特率 9 600 b/s 到 230 400 b/s 可調(diào),左右兩側(cè)各 2 路獨立接口;16 路 GPIO 端口,左側(cè) 8 路輸出,右側(cè)為 8 路輸入;GPS/BD 模塊主要完成時間地理位置信息的采集,通信速率 9 600~115 200 b/s 可配置,數(shù)據(jù)更新頻率 1~20 Hz 可配置;電源電路包括 12 V 轉(zhuǎn) 5 V、12 V 轉(zhuǎn) 3.3 V 以及 12 V 轉(zhuǎn) 24 V 三部分。
2 系統(tǒng)硬件設(shè)計
2.1 STM32 核心電路設(shè)計
該部分選用了 STM32F429ZIT6 為微控制器,其使用高性能的 ARM Coetex-M4 32 位的嵌入式 RISC 內(nèi)核,工作頻率高達(dá) 180 MHz,內(nèi)置 2 MB 的 Flash 和 256 KB 的 SRAM 存儲器,豐富的增強(qiáng) I/O 端口和聯(lián)接到兩條 APB 總線的外設(shè);包含 2 個 12 位的 ADC,3 個通用 16 位定時器,以及 3 個 I2C 和 SPI,4USARTs/4 UARTs 和 2 個 CAN 通信接口[5]。其中板卡通信要求至少 7 個串口與 2 個 CAN 總線。此外,該芯片采用 1.7~3.6 V 低電壓供電,支持睡眠、停機(jī)和待機(jī) 3 種省電模式,具有功耗低、實時性強(qiáng)等優(yōu)點。核心電路結(jié)構(gòu)如圖 2 所示。
核心電路主要包括 STM32F429 及其復(fù)位電路、晶振電路、BOOT 啟動電路以及調(diào)試下載接口電路。其中復(fù)位電路采用 10 kΩ電阻上拉方式,當(dāng)按鍵按下時,RESET 與地導(dǎo)通,產(chǎn)生低電平實現(xiàn)復(fù)位;為了讓 STM32 得到更高的處理速度,晶振電路采用了 25 MHz 無源晶振;BOOT 電路決定了 STM32 以何種方式被啟動,此處提供了用戶閃存存儲器啟動與從內(nèi)嵌 SRAM 啟動,默認(rèn)為前者方式啟動,可利用跳帽選擇;調(diào)試下載接口則選用了 SWD 方式,其為 2 線串行通信,只需排針引出,節(jié)省空間。
2.2 CAN 總線接口設(shè)計
CAN 總線由于其高性能、高可靠性及獨立的設(shè)計,而被廣泛用于工業(yè)現(xiàn)場控制系統(tǒng)中[7-9]。由于 STM32 內(nèi)部集成了 CAN 總線控制器,因此外部電路僅需 CAN 總線收發(fā)器即可實現(xiàn)通信。這里選用了 TD321SCAN 系列的 SMD 單路通用型 CAN 隔離收發(fā)模塊,它是一款采用 IC 集成化技術(shù),實現(xiàn)了電源隔離、信號隔離、CAN 收發(fā)和總線保護(hù)于一體的 CAN 總線收發(fā)模塊,可實現(xiàn) 3 000 V DC 電氣隔離,傳輸波特率范圍為 5 kb/s~1 Mb/s;極大滿足了工業(yè)級的指標(biāo)要求。該模塊+3.3 V 供電,與 STM32 之間接口無縫連接,具有功耗低的優(yōu)點。此外,為了提高總線通信的可靠性,在該模塊外添加了端口浪涌防護(hù)電路,當(dāng)模塊應(yīng)用于較為惡劣的現(xiàn)場環(huán)境時,如高磁場干擾、大能量雷擊等場合,可保護(hù)模塊不被損壞。CAN 總線接口電路如圖 3 所示。
2.3 RS485 總線設(shè)計
在該電路中,使用了 TD321S485H-A 系列的 SMD 單路高速 RS485 隔離收發(fā)模塊(自動切換),其主要功能是將邏輯電平轉(zhuǎn)換為 RS485 協(xié)議的差分電平,實現(xiàn)信號隔離。該模塊+3.3 V 供電,傳輸波特率可達(dá) 500 kb/s,滿足要求。同樣,在模塊外添加了端口保護(hù)電路,SP00S12 是一款信號浪涌抑制器,可用于各種信號傳輸系統(tǒng),抑制雷擊、浪涌、過壓等有害信號,對設(shè)備信號端口進(jìn)行保護(hù),尤為適合 CAN、RS-485 等通信領(lǐng)域的浪涌防護(hù)。因此,選擇 SP00S12 可有效保證 RS485 總線通信的可靠性。RS485 總線電路如圖 4 所示。
2.4 RS232 通信接口設(shè)計
該接口電路采用了型號為 RSM232D 的雙路隔離 RS-232 收發(fā)器,它支持 3.15 V~5.25 V 超寬壓輸入電源供電,波特率可達(dá) 235 kb/s。與普通的 RS232 芯片相比,它電磁抗干擾 EMS 極高,隔離耐壓 2 500 V DC。由于該模塊內(nèi)部 TOUT/RIN 線沒有 EDS 保護(hù)器件,當(dāng)應(yīng)用于環(huán)境比較惡劣的場合時,可能造成通信不穩(wěn)定的情況。因此,在模塊 TOUT/RIN 線端外加了 TVS 管、防雷管、屏蔽雙絞線以及同一網(wǎng)絡(luò)單點接大地等保護(hù)措施,有效保護(hù)了 RS232 總線端口。具體電路如圖 5 所示。
2.5 GPIO 端口設(shè)計
GPIO 端口分為 8 路輸入、8 路輸出端口,5~24 V 為邏輯高電壓,0~5 V 為邏輯低電壓。顯然電平與 MCU 電平不匹配,需要電壓轉(zhuǎn)換芯片進(jìn)行電平轉(zhuǎn)換。考慮到端口的穩(wěn)定性,端口采用了小體積的 TLP127 光耦芯片,完成電壓轉(zhuǎn)換的同時,也實現(xiàn)了電氣隔離。此外,TLP127 內(nèi)部集成了耐高壓達(dá)林頓管,輸出端口可耐壓值可達(dá) 300 V DC,同時,它最高可輸出 150 mA 的電流 Ic 使它具有了較強(qiáng)的驅(qū)動和隔離能力。GPIO 輸入輸出端口隔離電路如圖 6 所示。
2.6 GPS/BD 模塊設(shè)計
該模塊主要實現(xiàn)對 GPS 定位信息進(jìn)行獲取,并傳輸?shù)?STM32 中進(jìn)行處理。市場主要有幾款主流的 GPS/BD 模塊[10],如 ATK-NEO-6M、ATK-1218-BD 等。經(jīng)對比,ATK-1218-BD 模塊在數(shù)據(jù)更新率、傳輸波特率、定位精度等性能上均要優(yōu)于其他模塊,因此選擇該模塊來提取地理位置信息。ATK-1218-BD 是一款高性能 GPS/ 北斗雙模定位模塊,其兼容+3.3 V/5 V 單片機(jī)系統(tǒng),定位精度 2.5 mCEP,數(shù)據(jù)更新速率 1~20 Hz、串口通信波特率 4 800~230 400 bps 可配置。另外,模塊自帶可充電后備電池,可以掉電保持星歷數(shù)據(jù)[11-12]。
ATK-1218-BD 模塊同外部設(shè)備通信接口采用 UART(串口)方式,輸出的 GPS/ 北斗定位數(shù)據(jù)采用 NMKA0183 協(xié)議[13],控制協(xié)議為 SkyTraq。因此使用前,需采用 SKyTraq 提供的 GNSS_Viewer 軟件對該模塊的更新速率、串口波特率等參數(shù)進(jìn)行配置。該模塊與單片機(jī)連接方式如圖 7 所示。
2.7 電源電路設(shè)計
根據(jù)各端口模塊以及 MCU 的供電要求,需要將 12 V 工作電源轉(zhuǎn)化為+3.3 V、+5 V、+24 V 隔離電源。為了提高電源的轉(zhuǎn)換效率,降低熱損耗,采用了一款內(nèi)置集成電路高端高壓功率 MOSFET 的降壓型開關(guān)電源芯片 MP1584,輸入超寬電壓 4.5 V~48 V DC,最大電流輸出可達(dá) 3 A,輸出電壓值可根據(jù)匹配電阻調(diào)整得到+3.3 V、+5 V 的電壓,相應(yīng)地輸入輸出濾波電容均采用 MLCC 電容可減少紋波干擾。+24 V 隔離電源主要應(yīng)用于 GPIO 輸出端,作為輸出的參考電平,考慮到體積小、功耗等要求,選用 B1224_XT-2WR2 隔離芯片,該芯片可將 12 V 電壓隔離升壓至 24 V,且輸入輸出隔離電壓達(dá) 1 500 V DC,效率達(dá) 84%,外圍電路簡單,僅需兩個濾波電容即可。電源電路結(jié)構(gòu)如圖 8 所示。
3 系統(tǒng)軟件設(shè)計
3.1 程序設(shè)計分析
該設(shè)計以 KEIL MDK5 為軟件開發(fā)環(huán)境,操作系統(tǒng)為 Windows 7。核心處理器采用了 32 位 ARM Cortex-M4 內(nèi)核的 STM32F429ZIT6 芯片,主頻可達(dá) 180 MHz,只要程序結(jié)構(gòu)良好,板卡全端口工作負(fù)荷下,依然能處于穩(wěn)定的運行狀態(tài)。
3.2 測試程序流程
MCU 程序采用模塊化結(jié)構(gòu)設(shè)計,主要模塊包括初始化模塊、啟動看門狗模塊、各通信協(xié)議中斷模塊、定時器中斷處理模塊和主程序模塊。由于篇幅所限,下面主要對主程序部分程序進(jìn)行分析,主程序流程圖如圖 9 所示。
系統(tǒng)程序啟動時先進(jìn)行系統(tǒng)化,配置好各總線端口的波特率以及中斷優(yōu)先級,初始化 GPIO 端口及 GPS/BD 模塊并設(shè)置看門狗。接著初始化各類標(biāo)志位,啟動看門狗中斷程序。由于在總線數(shù)據(jù)傳輸方面采用硬件握手方式,雙向的數(shù)據(jù)傳輸依靠中斷方式來判斷數(shù)據(jù)的到來或響應(yīng)信號的到來,保證了不同總線上的數(shù)據(jù)正常、透明、可靠傳輸。因此,此時各通信總線端口已進(jìn)入中斷讀取數(shù)據(jù)狀態(tài)。
當(dāng)程序進(jìn)入主循環(huán)后,首先獲取 GPS/BD 模塊的經(jīng)緯度信息,采集 8 路 GPIO_In 口的電平狀態(tài),接著 RS485_1 與上位機(jī)進(jìn)行三次應(yīng)答,將每次應(yīng)答獲取的數(shù)據(jù)進(jìn)行截取保存,并對數(shù)據(jù)判斷,滿足則 GPIO_Out0 輸出固定頻率脈沖。然后解析上位機(jī)傳來的 CAN 指令,執(zhí)行相應(yīng)的程序,初次為健康查詢即檢查各端口通信是否正常,若正常則將 8 路 GPIO_In 端口狀態(tài)、RS485_1 讀取的數(shù)據(jù)、RS485_2 三次應(yīng)答截取的數(shù)據(jù)、RS232 的數(shù)據(jù)以及 GPS/BD 模塊獲取的經(jīng)緯度信息按約定要求解析放入 RS232_TXBUFF,并由電源同側(cè)的兩路 RS232 發(fā)送給上位機(jī)進(jìn)行數(shù)據(jù)的處理與顯示。運行期間,利用定時器中斷不斷執(zhí)行喂狗任務(wù),上位機(jī)可發(fā)送 CAN 指令停止喂狗進(jìn)行復(fù)位。此外,若板卡由于不可控因素導(dǎo)致程序跑飛,此時無法喂狗,程序自動復(fù)位,有效地防止了板卡因程序崩潰而無法工作的現(xiàn)象。
4 系統(tǒng)測試
4.1 指標(biāo)測試
本多源數(shù)據(jù)采集板卡的技術(shù)指標(biāo)主要為工作電壓、最大功耗、各總線通信波特率等。實測表明,板卡在測試技術(shù)要求范圍內(nèi)的配置下均能正常工作。指標(biāo)測試結(jié)果如表 1 所示。
4.2 整體性能驗證
為了驗證數(shù)據(jù)采集板卡的整體性能,將板卡各端口與工控機(jī)匹配端口相連接,模擬板卡通過多個端口采集多源傳感器數(shù)據(jù)信息,進(jìn)行匯總并輸出,并通過 CAN 總線與上位機(jī)指令進(jìn)行交互。通過上位機(jī)分析板卡的輸出數(shù)據(jù)并界面顯示,確定板卡各端口接收到的信息無誤,板載 GPS/BD 數(shù)據(jù)正確,多端口收發(fā)無阻塞,無競爭,可持續(xù)運行并按約定邏輯響應(yīng)上位機(jī)通過 CAN 總線端口發(fā)送的指令。此外,經(jīng) 72 h 長時間持續(xù)工作測試,板卡一直處于正常穩(wěn)定的工作狀態(tài)。
5 結(jié)論
本文設(shè)計了一種基于 STM32 的多源數(shù)據(jù)采集板卡,實現(xiàn)了 CAN、RS485、RS232 等多種接口的通信,且均電氣隔離,使板卡減小干擾,通信更為可靠。板卡采用 STM32F429 芯片為控制核心,較強(qiáng)的數(shù)據(jù)處理能力,使板卡具有較好的性能;采用多種總線端口,可連接各種不同總線接口的傳感器設(shè)備,具有良好的可擴(kuò)展性;板載 GPS/BD 模塊,記錄時間地理信息,方便用戶確定設(shè)備位置坐標(biāo);采用 DC-DC 隔離電源,電源轉(zhuǎn)換效率高,熱損耗小,具有功耗低的優(yōu)點。此外,板卡采用鋁框外殼固定,安裝方便且抗振牢固。
責(zé)任編輯;zl
評論