蔣成清 王曉宇
【摘要】工業(yè)現(xiàn)場上經(jīng)常需要監(jiān)控現(xiàn)場的工作環(huán)境和設(shè)備的運行狀態(tài),所以需要對現(xiàn)場的溫度、濕度和設(shè)備的電壓、電流等參數(shù)進行采集,并傳送給上位機監(jiān)測。本文提出了一種數(shù)據(jù)采集系統(tǒng)的設(shè)計和實施方案,采用STM32作為微處理器,標(biāo)準(zhǔn)DeviceNet協(xié)議作為通信規(guī)約,實現(xiàn)數(shù)據(jù)采集的網(wǎng)絡(luò)化和智能化。
【關(guān)鍵詞】數(shù)據(jù)采集;STM32;DeviceNet協(xié)議;DN1022
1.引言
隨著我國工業(yè)化水平不斷提高,工業(yè)現(xiàn)場需要監(jiān)控現(xiàn)場的工作環(huán)境和設(shè)備的運行狀況,包括測量現(xiàn)場的溫度、濕度和設(shè)備的電壓、電流等參數(shù)。傳統(tǒng)的數(shù)據(jù)采集多采用變送器,但是,變送器采集的數(shù)據(jù)采用模擬量傳輸,抗干擾能力較差,并且采集數(shù)據(jù)單一,不能完成多參數(shù)采集,不易實現(xiàn)網(wǎng)絡(luò)化。如何提高采集數(shù)據(jù)抗干擾能力,并且完成多參數(shù)采集等問題有待完善。本設(shè)計采用stm32作為CPU,DeviceNet作為通信協(xié)議,接收并處理DeviceNet主站下達的查詢命令,組織相應(yīng)數(shù)據(jù)上報給DeviceNet主站,有多路的輸入和多路的輸出。
2.總體設(shè)計方案
從功能上講,本設(shè)計可以分為兩大部分:即工業(yè)現(xiàn)場信號采集電路和工業(yè)現(xiàn)場控制電路。其中工業(yè)現(xiàn)場信號采集電路完成對數(shù)字信號的采集,再由stm32對數(shù)據(jù)進行處理,通過標(biāo)準(zhǔn)的DeviceNet協(xié)議與DeviceNet主站通信。工業(yè)現(xiàn)場控制電路接收并處理DeviceNet主站下達的控制命令,組織相應(yīng)數(shù)據(jù)實現(xiàn)對工業(yè)現(xiàn)場的控制。系統(tǒng)框圖如圖1所示。
圖1 系統(tǒng)的方框圖
2.1 數(shù)據(jù)采集電路
數(shù)據(jù)采集電路實現(xiàn)了開關(guān)量的實時采集功能。微處理器STM32f103R8的I/O口可以配置為開關(guān)量輸入端口,開關(guān)量輸入信號由I端輸入,通過光電耦合器PC817與微處理器I/O口相連。微處理器對輸入端進行狀態(tài)查詢,讀取狀態(tài)信息。光電耦合器PC817在作用是實現(xiàn)現(xiàn)場開關(guān)量與微處理器間的電氣隔離,提高電絕緣和抗干擾能力。
2.2 協(xié)議芯片接口電路
DN1022芯片具有內(nèi)置的CAN口和DeviceNet處理引擎,內(nèi)置DeviceNet Group 2 Only Slave從站協(xié)議棧,具有高速串行口和配置口。微處理器可通過串口和DN1022通信。其集成度高、封裝簡單,滿足一般的DeviceNet從節(jié)點功能要求。
(1)工作狀態(tài)配置。DN1022芯片初始化時會檢測配置口線CFG1的狀態(tài),根據(jù)狀態(tài)的不同,決定芯片的工作狀態(tài)。如果CFG1=0,芯片處于配置狀態(tài);CFG1=1,芯片處于工作狀態(tài)。
(2)I/O數(shù)據(jù)交換狀態(tài)。DN1022內(nèi)部有一個I/O數(shù)據(jù)緩沖區(qū),DeviceNet主站與DN1022之間的數(shù)據(jù)交互是異步進行的。
在工作狀態(tài),stm32可以與DN1022進行I/O數(shù)據(jù)交換及參數(shù)讀寫。如圖3,DN1022芯片的RXD、TXD為串行口信號接收和發(fā)送引腳,分別接用戶的處理器的TXD及RXD。高速串口最高波特率可達115.2Kbps,可以滿足與DeviceNet相匹配的速度。
圖2 DN1022接口電路
2.3 輸出控制電路
當(dāng)接收到DeviceNet主站發(fā)送的命令時,微處理器stm32對數(shù)據(jù)進行處理,根據(jù)主站要求指示相應(yīng)的繼電器閉合,三極管飽和導(dǎo)通,相應(yīng)指示燈亮,實現(xiàn)了對開關(guān)量的控制。光電耦合器PC817實現(xiàn)電氣隔離作用。
圖3 輸出控制電路
2.4 撥碼開關(guān)電路
撥碼開關(guān)電路分為從站地址的選擇和波特率的選擇兩種,并且要求在配置狀態(tài)下才能設(shè)置。從站地址的選擇通過撥碼開關(guān)中的前六位A1—A6設(shè)置從站地址,采用8421BCD編碼規(guī)則配置從站地址,設(shè)置范圍0-63。波特率的選擇有125Kbps、250Kbps、500 Kbps和自動波特率設(shè)置4種可選。通過撥碼開關(guān)中的后兩位A7和A8選擇波特率,采用8421BCD編碼規(guī)則配置波特率。
3.系統(tǒng)軟件設(shè)計
本設(shè)計由C語言編程實現(xiàn),完成對工業(yè)現(xiàn)場信號進行采集,組織相應(yīng)數(shù)據(jù)通過DeviceNet協(xié)議傳給主站;并且接收處理DeviceNet主站發(fā)出的命令,控制對輸出繼電器做出閉合或釋放動作,以實現(xiàn)開關(guān)量信號的輸出。本設(shè)計中采用Keil uVision4為開發(fā)平臺,編寫了主程序,數(shù)據(jù)采集及處理程序,串口通信程序。上電后,CPU首先對DN1022進行配置,需要配置的參數(shù)有地址、波特率、Network Input連接長度等。然后進行I/O數(shù)據(jù)交換。DeviceNet主站與DN1022之間的數(shù)據(jù)交互是異步進行的。
表1 DN1022命令表
命令號 命令功能
0x1 設(shè)定身份識別信息(配置狀態(tài))
0x2 設(shè)定連接信息(配置狀態(tài))
0x5 I/O數(shù)據(jù)傳輸(運行狀態(tài))
0x6 I/O數(shù)據(jù)傳輸,并讀取Device Net網(wǎng)絡(luò)狀態(tài)(運行狀態(tài))
0xE 讀取參數(shù)(運行狀態(tài))
0x10 設(shè)置參數(shù)(運行狀態(tài))
0x20 設(shè)定參數(shù)信息參數(shù)(配置狀態(tài))
表1為協(xié)議芯片DN1022的命令表,本設(shè)計使用了1號、2號以及5號命令。1號命令是配置命令,包含設(shè)備號,設(shè)備許可號,版本號,產(chǎn)品名稱等。當(dāng)發(fā)送完一幀命令后,DN1022返回一個響應(yīng)幀,0x81是正確響應(yīng)幀,0xE0和0x2是錯誤響應(yīng)幀。2號命令是配置命令,包括地址、波特率、輸入及輸出長度。地址和波特率是通過撥碼開關(guān)讀取的,由于輸入和輸出為4組,所以設(shè)置為各1個字節(jié)。正確響應(yīng)幀為0x82,0x01和0xff是錯誤響應(yīng)幀。5號命令為運行命令,完成DN1022與stm32之間的數(shù)據(jù)通信,正確響應(yīng)幀為0x85。圖6為整個系統(tǒng)設(shè)計的軟件流程圖。
圖4 軟件流程圖
4.結(jié)論
本設(shè)計采用stm32作為CPU,對工業(yè)現(xiàn)場信號進行多路采集,采集的信息同時性好,通過devicenet協(xié)議與PLC實時通信,傳輸數(shù)據(jù)的實時性與可靠性顯著提高,完全能滿足整個系統(tǒng)的運行,通用性好,具有較好的應(yīng)用價值和市場前景。
參考文獻
[1]張旭,亓學(xué)廣.基于STM32電力數(shù)據(jù)采集系統(tǒng)的設(shè)計[J].電子測量技術(shù),2010,11:90-92.
[2]DN1022使用手冊[S].上海泗博自動化技術(shù)有限公司,2013.
[3]張戟,程旻,謝劍英.基于現(xiàn)場總線DeviceNet的智能設(shè)備開發(fā)指南,2004.
[4]韓芝俠,淡濤.熱釋電紅外傳感器的應(yīng)用[J].陜西工學(xué)院學(xué)報,2003(3):148-150.
[5]程曉輝,董愛華,舒國汀,方建安.I/O模塊的DeviceNet接口設(shè)計[J].東華大學(xué)學(xué)報(自然科學(xué)版),2005(02).
作者簡介:蔣成清(1993—),安徽宿州人,大學(xué)本科,現(xiàn)就讀于遼寧科技大學(xué)。
通訊作者:王曉宇(1978—),遼寧鞍山人,碩士,講師,主要研究方向:信號與系統(tǒng)。