?

基于STC12單片機的工業物聯網數據采集終端設計

2024-04-18 12:06羅家毅趙瑞雪潘小波夏興國寧平華
關鍵詞:數據采集單片機

羅家毅 趙瑞雪 潘小波 夏興國 寧平華

【摘? ?要】? ?針對多過程量的遠程監控系統中使用PLC模擬量模塊進行數據采集時成本較高、信號易干擾易衰減、系統難擴展等問題,提出一種基于單片機設計的工業物聯網數據采集終端。終端包含8路輸入通道,可以將小電流模擬量信號轉換為合適范圍內的電壓信號,經過單片機的A/D采集及數據處理后,終端作為從機,由RS485標準通信接口與工業物聯網通用的Modbus RTU協議與上位端主機之間實現長線傳輸。通過與PC端串口調試助手軟件工具的通信測試,該數據采集終端的經濟性、可靠性、實時性和準確性均得到了驗證。

【關鍵詞】? ?單片機;工業物聯網;數據采集;Modbus

Design of Data Acquisition Terminal for Industrial

Internet of Things Based on STC12 MCU

Luo Jiayi1,Zhao Ruixue2,Pan Xiaobo1,Xia Xingguo1,Ning Pinghua1

(1.Ma′anshan Technical College, Ma′anshan 243031, China;

2. Hefei Technical College, Hefei 230012, China)

【Abstract】? ? Aiming at such problems as high cost, easy signal interference, easy signal attenuation, and difficult system expansion when PLC analog module is used to collect data in multi-process remote monitoring system, an industrial internet of things data acquisition terminal is proposed based on MCU. The terminal contains 8 input channels for converting low-current analogue into voltage signals within the appropriate range. After the A/D acquisition and data processing of the microcontroller, the terminal acts as a slave and transmits through long line via RS485 standard communication interface with the upper computer as a master, by using Modbus RTU protocol, which is generic in industrial internet of things. Through the communication test with the software tool of serial port debugging assistant for PCs, the economy, reliability, real-time and accuracy of this data acquisition terminal have been verified.

【Key words】? ? ?microcontroller; industrial internet of things; data acquisition; Modbus

〔中圖分類號〕? TP23? ? ? ? ? ? ? ? ?〔文獻標識碼〕? A ? ? ? ? ? ? ?〔文章編號〕 1674 - 3229(2024)01- 0064 - 07

0? ? ?引言

工業自動化控制系統離不開溫度、液位、壓力等過程信號的監控,此類模擬量信號多采用電壓或電流的形式進行傳輸,現場一般通過PLC控制系統對其進行采集、處理和通訊。如高平等[1]在油庫油量監測系統中,使用PLC模擬量輸入模塊來實現5個油罐的液位監測;陳芳等[2]通過在PLC系統中擴展多個模擬量采集模塊,以采集注塑機的多段溫度和位移、壓力等過程量;王斐[3]提出了一種使用分布式PLC組成工業以太環網的形式,每臺PLC配置6路AI通道以采集分布式礦用空壓機的溫度、壓力、振動等模擬量參數;趙慧娟[4]在溫室大棚的智能監測中采用PLC實時讀取溫室內溫濕度、光照度、CO2濃度等環境參數。

多過程量的測控系統在模擬量數目較多、傳感器分布式排列、信號傳輸距離較遠等場合,傳統的PLC控制需要添加較多的模擬量輸入模塊,成本增加的同時還會出現信號易干擾、易衰減等問題,且系統后續不便擴展,故提出一種基于單片機設計的工業物聯網數據采集終端。該終端可以實時采集現場多路分布式儀表的模擬量信號,經過數據轉換和處理后由RS485通信接口以工業物聯網通用的Modbus RTU協議進行長線傳輸,便于系統組網及上位擴展,具有經濟性、開放性好等優點。

1? ? ?系統總體設計

基于單片機的工業物聯網數據采集終端包括信號采集、信號處理和信號傳輸三個部分。信號采集通過8路I/V轉換電路將傳感器及變送器輸出的4~20 mA電流信號實時轉換為單片機片內ADC可以采集的0~5 V電壓信號。信號處理部分使用單片機對多通道電壓信號進行A/D轉換,并對轉換后的數字信號進行量程變換、浮點數計算、CRC校驗等處理,生成符合通用Modbus RTU協議格式的數據報文。最后數據信號通過單片機串行口由RS485通信電路進行傳輸。RS485通信接口支持擴展級聯,后級可選擇與組態軟件、觸摸屏等上位端,或PLC、Modbus網關、串口服務器等不同廠商設備以RS485標準進行Modbus通信。系統結構如圖1所示。

2? ? ?系統硬件設計

數據采集終端的硬件電路主要包括輸入信號采集電路、單片機最小系統電路和RS485通信接口電路。

2.1? ?信號采集電路設計

為了信號能夠遠傳,用于溫度、液位、壓力等過程量檢測的傳感器及變送器多以4~20 mA電流小信號輸出,需要經I/V線性轉換成符合單片機ADC采樣的電壓信號。單通道采集電路具體設計如圖2所示。

電路首先使用低溫漂(±25 PPM/℃)、高精度(0.1%)的250 Ω電阻對4~20 mA輸入電流進行采樣,獲取的1~5 V范圍內采樣電壓經線性光耦送至ADC通道。電路采用成本較低的高線性度模擬光電耦合器HCNR200,它的內部包含一個高性能穩定輸出的LED和兩個能夠同時接收光信號的光敏二極管PD1和PD2,線性光耦的光電隔離作用可以有效地抑制共模干擾。根據產品數據手冊,可以匹配各電阻的大小。

首先,根據光耦內部LED的導通管壓降[Uf]和工作電流[If]的參數值可以得出[R3]的大小。

[R3=Vin-UfIf]? ? ? ? ? ? (1)

式(1)中,[Vin]為輸入采樣電壓1~5 V。

再根據光耦內部發光管LED與光敏管PD1的線性值[ K1=0.5%],可以計算出R2的值。

[IPD1=If?K1R2=VinIPD1]? ? ? ? (2)

最后,由于線性光耦內兩個光敏二極管電流比值[K3]是常數1,結合集成運放A2的I/V轉換電路功能,聯立可以得出ADC采集的輸出電壓與輸入取樣電壓之間的關系。

[K3=IPD2IPD1Vout=IPD2?R4Vin=IPD1?R2]? ? ? ?(3)

[? ?VoutVin=K3?R4R2]? ? ? ? ? ?(4)

由于發光二極管獨立穩定的輸出特性,電路中輸出電壓與輸入采樣電壓的比值不變,可以通過[R4]與[R2]電阻的比值大小來調節該線性度。

2.2? ?STC12C5A60S2控制器

數據采集終端采用STC12C5A60S2單片機作為主控制器。STC12C5A60S2是我國宏晶公司生產的基于8051內核的增強型MCU,具有速度快、功耗低、抗干擾能力強、價格低廉等優點。片內存儲器包含1280 B RAM及60 KB Flash ROM,集成了雙UART串口、2通道PWM和8通道ADC等片內資源。電源電路采用微功耗、低壓差的線性電源芯片TPS7350實現9 V變5 V的穩壓,電路簡單、外圍元件少,并具有過流、過壓、電壓反接等保護。

2.3? ?通信接口電路設計

基于STC12C5A60S2單片機現有的片內串行通信資源,為了實現遠距離傳輸和多機聯網通信,采集終端的設計包括一個RS485通信接口,支持數據以Modbus RTU協議由半雙工異步串行通信方式與后級設備進行長線通訊。

通信電路采用MAX485芯片實現單片機TTL電平與RS485標準電平的轉換。MAX485是常用的低功耗RS485/RS422半雙工通信收發器,內部集成了具有啟用使能控制的驅動器和接收器各一個,數據傳輸速率可高達2.5 Mbps,最多支持32個節點的總線拓撲。

通信接口電路如圖3所示。當單片機進行數據發送時,若MCU_TX置低電平,三極管Q1截止,方向控制引腳RE和DE被上拉為高電平,此時MAX485執行發送模式,發送DI為數據0;若MCU_TX置高電平,Q1導通,MAX485執行接收模式,此時高阻態輸出的A、B引腳因外部有上下拉電阻而呈現差分數據1。當單片機不發送數據時,MCU_TX默認為高電平,MAX485通過RO引腳執行接收模式,從而實現自動收發控制的雙向通信。

3? ? ?軟件設計

數據采集終端作為通信從機,通過RS485標準接口以Modbus RTU協議進行數據傳輸,支持上位通信參與者作為主機發送數據讀取的請求命令。采集終端以命令/應答的半雙工通信方式,及時應答主機請求并發送采集到的實時數據。具體軟件設計主要包括主程序、模擬信號采集與處理、Modbus RTU協議下的命令接收與數據應答等中斷服務程序或功能子程序。

3.1? ?主程序

主程序首先對A/D采集、串行通信、定時器等片內外設資源進行初始化,并允許相應中斷。其中,A/D采集中斷完成8通道模擬量的分時轉換;串行中斷實現命令幀字節的接收和數據幀字節的發送;T0定時中斷用于判斷主機命令幀是否接收完結。通道采集數據經A/D轉換后,需根據傳感器的量程進行線性量化和浮點數的轉換,并在接收到主機命令幀后實時發送符合讀取請求的數據幀,上述工作均在主程序中循環調用。主程序流程如圖4所示。

3.2? ?信號采集與處理

采集終端的8路輸入通道將I/V轉換后的采樣信號送至單片機內置的高速ADC進行多路分時采集與轉換,A/D采集中斷流程如圖5所示。

中斷返回后,主程序對A/D轉換結果進行線性量化和浮點數轉換。線性量化指根據傳感器的量程范圍,通過算術運算將A/D轉換結果線性化為浮點數類型的工程值,例如液位傳感器的線性量化公式為:

[H=Hmax-Hmin1024-204*(VAD-204)]+[Hmin]? ? (5)

式(5)中,[H]為實際采集的液位值,[ Hmax]和[ Hmin]分別為傳感器的量程上下限,1024和204分別是上下限量程對應的A/D轉換值。

線性量化后的實時工程值是一個單精度浮點數,而Modbus RTU協議的報文格式均是以兩位十六進制的字節傳輸,所以需要依據IEEE 754標準將該浮點數轉換為多字節形式。由于IEEE 754標準中的浮點數算術轉換方法比較復雜,轉換子函數在具體設計時使用的方法是取RAM中該浮點數存儲的當前地址,并順序賦值給一個四字節長度的字符型數組。這里需要注意的是,Keil C51編譯器中單精度浮點數轉換為多字節的存儲為大端模式,即數據的低位保存在內存的高地址中,所以后續數據發送時還需要對32位浮點數的四字節進行高低位交換。

3.3? ?命令接收與數據應答

采集終端以Modbus RTU協議遵從主/從通信模式,當接收到如PLC、IPC、HMI等上位主機發來的命令幀請求后,終端作為從機及時應答,并發送包含工程值的數據幀。根據Modbus RTU協議的通用幀格式,對采集終端支持的寄存器和功能碼進行自定義,具體如表1所示。

Modbus RTU協議報文的幀格式中每個數據均為單個字節,無論是命令幀的接收還是數據幀的發送都采用單片機片內UART異步串行通信中斷來完成單字節收發,具體程序流程如圖6所示。

為了判斷主機請求命令幀是否接收完結,采用1 ms的定時中斷來周期性監聽當前時刻是否處于命令幀結束后的空閑時間,并在命令幀接收完結后置位完成標志,便于其他子程序的判斷,定時中斷流程如圖7所示。

根據命令幀的數據讀取要求,程序需要及時組織形成應答數據幀。根據自定義支持的Modbus功能碼及寄存器地址,采集終端需要按Modbus RTU協議通用的應答報文格式來組織應答數據幀。

圖8是應答數據幀的組織子函數流程,程序采用多分支函數結構,支持后續其他功能碼的擴展支持,圖中字符型數組RX_BUF[]用于存放接收到的命令幀,TX_BUF[]數組組織存放待發送到的數據幀,n為命令幀請求讀取的寄存器數量。

應答數據幀組織完成后,程序利用發送子函數對TX_BUF[]數組中的幀消息數據逐字節安排發送,數據幀的字節長度為4n+5,具體流程如圖9所示。

4? ? ?實驗測試

根據上述硬件及軟件設計的工業物聯網采集終端作為Modbus通信從機,主機選用PC端串口調試助手軟件工具,采集終端的RS485接口通過一個485-USB雙向轉換器與PC端相連。

實驗測試時,使用8個4~20 mA電流信號發生器來模擬0~5 m量程的液位傳感器,分別與數據采集終端的8路輸入通道相連接。根據從機軟件中設定的通訊參數,主機端串口調試助手軟件工具中配置串行通信的幀格式為:1位起始位、8位數據位、無校驗位、1位停止位、波特率9600 bps。

根據圖10所示Modbus RTU協議通用的應答報文格式要求,結合自定義的功能碼及寄存器,PC端可以使用串口助手工具發送主機命令以讀取任意單個或連續多個通道實時采集的工程值大小。

測試時,首先調節電流發生器,設置8路通道的輸入電流分別為4 mA、6 mA、8 mA、10 mA、12 mA、14 mA、16 mA、20 mA,用于模擬液位傳感器輸出信號。為了讀取數據采集終端CH0-CH8路通道采集的工程值,PC端串口調試助手發送十六進制命令請求幀為01 04 00 00 00 10 F1 C6。該串報文是指通過04功能碼讀取設備地址為01的從機中以0000H開始的16個字類型輸入寄存器值,但該采集終端的設計是將采集工程值以單精度浮點數形式存儲,故該命令幀報文也可以是指請求讀取從機中0000H(30001)、0002H(30003)、……、000EH(30015)8個寄存器中的32bit浮點數值。從機接受命令后,實時發送返回符合協議標準的應答數據幀到串口調試助手的接收緩沖區,串口調試助手收發數據具體如圖11所示。

根據圖10所示Modbus RTU應答報文的通用格式,圖11所示的從機應答數據幀不難解析出8路通道的實時采樣工程值大?。ūA羧恍担?,具體見表2所示。

本文設計的數據采集終端還支持主機端根據通訊協議規定的報文格式讀取任意單個或連續多個通道的工程值大小,如圖12所示。

5? ? ?結論

本文提出的基于STC12C5A60S2單片機設計的工業物聯網數據采集終端,在多過程量遠程監控系統中,該數據采集終端能夠替代傳統PLC模擬量輸入模塊的數據采集功能,方便系統組網及上位擴展,經濟性、開放性好。該數據采集終端通過I/V轉換電路將輸入模擬量的小電流信號轉換為能夠被單片機A/D采集的電壓信號,經過數據運算及處理后,作為從機由RS485標準通信接口以通用的Modbus RTU協議與上位端主機之間實現長線傳輸。通過與PC端串口調試助手軟件工具通信測試,設計的數據采集終端的可靠性、實時性和準確性均得到了驗證。

[參考文獻]

[1] 高平,張宏樂,陸海東.S7-200PLC在油庫油量監測系統中的應用[J].工業儀表與自動化裝置,2016(5):103-106.

[2] 陳芳,劉佳,傲起,等.基于PLC的注塑機多段溫度控制系統設計[J].合成樹脂及塑料,2020,37(1):85-87.

[3]? 王斐.基于PLC的分布式礦用空壓機智能監控[J].能源與節能,2023(1):79-81+212.

[4]? 趙慧娟.基于PLC的農業溫室大棚智能監測設備應用[J].農機化研究,2021,43(6):214-218.

[5]? 王鵬.基于Modbus協議的數據采集系統的研究[D].合肥:合肥工業大學,2020.

[6]? 鄧元生.基于單片機的MODBUS總線協議實現技術研究[D].長沙:中南大學,2009.

[7] 謝昊飛,劉代雄,吳禹霜.面向工業互聯網的Modbus浸入式教學實驗項目設計[J].實驗技術與管理,2022,39(5):171-175.

[8] 宋雪松.手把手教你學51單片機[M].北京:清華大學出版社,2020:341-352.

[9] 李能菲,常輝,黃瓊,等.基于LabVIEW漏水檢測監控系統的設計[J].廊坊師范學院學報(自然科學版),2023,23(1):34-38.

猜你喜歡
數據采集單片機
基于單片機的SPWM控制逆變器的設計與實現
基于單片機的層次漸變暖燈的研究
基于單片機的便捷式LCF測量儀
小議PLC與單片機之間的串行通信及應用
基于單片機的平衡控制系統設計
CS5463在植栽用電子鎮流器老化監控系統中的應用
大數據時代高校數據管理的思考
基于廣播模式的數據實時采集與處理系統
通用Web表單數據采集系統的設計與實現
基于開源系統的綜合業務數據采集系統的開發研究
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合