基于嵌入式處理器STM32的抽油機井實時監控系統設計
3.1 傳感器信號采集板程序設計
傳感器信號采集板上STM32內部的程序分為初始化、信號的采集、ZigBee模塊的數據接收、Modbus數據幀的接收與發送等步驟。程序流程圖如圖8所示。

在系統上電后,首先執行系統的初始化,包括系統時鐘的配置;中斷向量配置;ADC、USART、TlMER、GPIO等外設的工作模式選擇,工作參數配置;外設的使能。
主程序是一個循環體,在循環體中,首先通過判斷串口4接收標志位是否置位,如果置位了說明接收到ZigBee模塊發送來的數據;然后將這些數據存儲在特定的寄存器中;之后判斷定時器中斷標志位是否到達,一旦到達,則啟動ADC,進行數據采集,數據處理,數據存儲等操作;最后判斷串口5的接收標志位是否置位,如果置位說明接收到了Modbus的協議幀,需要解包數據幀,響應操作,進行數據讀取,參數更改,啟停控制等操作。
3.2 電量參數采集板程序設計
類似的,電量參數采集板程序的系統初始化包括系統時鐘的配置;中斷向量配置;TIMER、SPI、USART、GPIO等外設的工作模式選擇;以及外設的使能。
首先通過SPI接口分別向3個CS5463發送初始化以及配置的命令字;其次啟動定時器、SPI、USART等外設;之后不斷查詢定時器標志位是否置位,如果定時到達,則通過SPI接口從CS5463中讀取電壓、電流、功率、功率因數等數據;最后判斷串口接收標志位是否置位,如果置位說明接收到了Modbus的協議幀,需要將數據打包成Modbus數據幀,將數據幀發送給上位機。
3.3 ZigBee通信模塊程序設計
ZigBee通信模塊的程序在TI的Z—Stack協議棧的程序框架下開發。Z—Stack協議棧是在OSAL操作系統下的一組函數包,通過Z—Stack可以很方便的進行ZigBee通信有關的程序編寫。
1)發送數據
在ZigBee協議棧中進行數據發送可以調用AF_DataRequest函數實現,該函數會調用協議棧里面的底層函數來打開發射機,調整發射機的發送功率等函數。最終將數據通過天線發送出去。
2)接收數據
當ZigBee模塊接收到ZigBee的數據幀后,OSAL將該數據幀中的數據封裝,然后放入操作系統的消息隊列中,每個消息都有自己的編號,即消息ID號,有新數據被接收到的消息ID號為AF_INCOMING_MSG_CMD(0x1A)。
首先使用osal_msg_receivre()函數從消息隊列中接收一個消息,然后通過switch—case語句進行選擇(判斷消息ID),如果消息ID是AF_INCOMING_MSG_CMD,則進行相應的數據處理。
3)串口發送函數
CC2430的串口收發需要用到以下3個函數,這3個函數也是Z—Stack所提供的。
uint8 HalUARTOpen(uint8 port,halUARTCfg_t*config);//串口打開初始化
uint16 HalUARTRead(uint8 port,uint8*buf, uint16 len); //讀串口
uint16 HalUARTWrite(uint8 port,uint8*buf,uint16 len);//寫串口
使用HalUARTOpen()函數對串口進行初始化,該函數使用halUARTCfg_t結構體指針作為參數,在使用CC2430的串口時,需要定義一個halUARTCfg_t結構體來初始化CC2430的串口。
uartConfig.Configured = TRUE;
uartConfig.baudRate = HAL_UART_BR_115200;
uartConfig.callBackFunc = Mgr_ProcessZAppData;
在CC2430接收到數據之后,調用HalUARTWrite()函數發送數據,通過串口發送給STM32。
3.4 上位機軟件程序設計
在VC++2010環境下,使用微軟的功能庫MFC編寫上位機軟件。由于PC機沒有RS485的接口,需要通過一個RS485到RS232的轉接模塊將RS4 85的信號轉換成RS232的信號。利用MFC中的MSComm控件進行RS232串口的通信。
在主窗口類CWorkDlg定義CString成員對象,用于顯示實時的壓力、溫度、三相電流電壓;定義繼承于CWnd類的子類,display類,用于顯示示功圖。在其OnPaint函數中添加坐標以及曲線的繪制代碼。

圖9為上位機界面。點擊菜單欄上的參數設置菜單,會彈出參數設置對話框。用戶可以在參數設置對話框上更改監控參數。監控的參數包括報警上限、報警下限以及采集間隔。當抽油機井的任意一項參數超出正常范圍后,都可以彈出報警提示,提示操作員對此進行處理。同時操作員可以點擊停止按鈕,讓抽油機井急停。
4 結論
本文設計的監控系統采用低功耗、高性能、低成本的嵌入式處理器STM32作為主控芯片。可以實時準確地反映抽油機井的生產狀況,在出現故障時能夠及時進行抽油機井的啟停控制。與傳統的人工巡視監控相比,采用基于微控制器的油井實時監控系統,可降低工人勞動強度,減少用工總量,提高總體勞動效率;且可靠性高,可保證油氣生產安全、提高油田科學化管理水平和整體開發效益。
評論