新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于嵌入式處理器STM32的抽油機井實時監控系統設計

        基于嵌入式處理器STM32的抽油機井實時監控系統設計

        作者: 時間:2016-09-12 來源:網絡 收藏

        3.1 傳感器信號采集板程序設計

        傳感器信號采集板上內部的程序分為初始化、信號的采集、ZigBee模塊的數據接收、Modbus數據幀的接收與發送等步驟。程序流程圖如圖8所示。

        基于嵌入式處理器STM32的抽油機井實時監控系統設計

        在系統上電后,首先執行系統的初始化,包括系統時鐘的配置;中斷向量配置;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 模塊程序設計

        模塊的程序在TI的Z—Stack協議棧的程序框架下開發。Z—Stack協議棧是在OSAL操作系統下的一組函數包,通過Z—Stack可以很方便的進行有關的程序編寫。

        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()函數發送數據,通過串口發送給

        3.4 上位機軟件程序設計

        在VC++2010環境下,使用微軟的功能庫MFC編寫上位機軟件。由于PC機沒有RS485的接口,需要通過一個RS485到RS232的轉接模塊將RS4 85的信號轉換成RS232的信號。利用MFC中的MSComm控件進行RS232串口的通信。

        在主窗口類CWorkDlg定義CString成員對象,用于顯示實時的壓力、溫度、三相電流電壓;定義繼承于CWnd類的子類,display類,用于顯示示功圖。在其OnPaint函數中添加坐標以及曲線的繪制代碼。

        基于嵌入式處理器STM32的抽油機井實時監控系統設計

        圖9為上位機界面。點擊菜單欄上的參數設置菜單,會彈出參數設置對話框。用戶可以在參數設置對話框上更改監控參數。監控的參數包括報警上限、報警下限以及采集間隔。當抽油機井的任意一項參數超出正常范圍后,都可以彈出報警提示,提示操作員對此進行處理。同時操作員可以點擊停止按鈕,讓抽油機井急停。

        4 結論

        本文設計的監控系統采用低功耗、高性能、低成本的嵌入式處理器作為主控芯片。可以實時準確地反映抽油機井的生產狀況,在出現故障時能夠及時進行抽油機井的啟停控制。與傳統的人工巡視監控相比,采用基于微控制器的系統,可降低工人勞動強度,減少用工總量,提高總體勞動效率;且可靠性高,可保證油氣生產安全、提高油田科學化管理水平和整體開發效益。


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 大冶市| 武安市| 洛宁县| 皋兰县| 乐安县| 得荣县| 乳源| 平远县| 华亭县| 松原市| 五河县| 蓬安县| 丹凤县| 霍城县| 清徐县| 三河市| 桦南县| 徐州市| 邹城市| 岱山县| 靖安县| 辽宁省| 呼和浩特市| 南开区| 博白县| 黎川县| 恭城| 双峰县| 鄂托克前旗| 浪卡子县| 海丰县| 哈密市| 余江县| 苗栗县| 铁力市| 嘉祥县| 越西县| 江孜县| 西青区| 台南县| 龙井市|