微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于嵌入式处理器STM32的抽油机井实时监控系统设计

基于嵌入式处理器STM32的抽油机井实时监控系统设计

时间:09-12 来源:互联网 点击:

机连接杆上。内部包含一个加速度传感器和一个负荷传感器,将加速度信号进行二次积分得到位移,负荷传感器的信号即为载荷,定时将测得的数据通过ZigBee方式发送出去。

3 系统软件设计

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作为主控芯片。可以实时准确地反映抽油机井的生产状况,在出现故障时能够及时进行抽油机井的启停控制。与传统的人工巡视监控相比,采用基于微控制器的油井实时监控系统,可降低工人劳动强度,减少用工总量

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top