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

2015-01-25 10:51梁华庆曹旭东艾毅然孙云龙
电子设计工程 2015年4期
关键词:抽油机串口电路

杨 京,梁华庆,曹旭东,艾毅然,孙云龙

(中国石油大学(北京)地球物理与信息工程学院,北京102249)

抽油机井大多都分布在地理位置偏远、环境恶劣的地区,给工作人员对抽油机井的管理与维护工作造成困难。随着信息技术在石油工业领域的大量应用,抽油机井的实时监控系统大大改善了这一现状。采用低成本、高性能、低功耗的微控制器以及无线传感技术来研制抽油机井实时监控系统,可以使系统具有更佳的性能。该系统能够让原油的开采更加便捷安全和稳定高效。本系统能够实时地反应抽油机井的工作状况,及时发现并解决抽油机井在工作中出现的故障。采用该系统,可以有效提高设备的可靠性、减轻工作人员的工作量、降低采油成本,极大地提高了生产效率。

1 总体方案设计

系统总体结构如图1所示,由6部分组成:现场传感器(压力传感器、温度传感器等)、传感器信号采集板、互感器模块、电量参数采集板、示功图采集模块、ZigBee通信模块和上位机。

图1 系统总体结构图Fig.1 The overall block diagram of the system

油压、油温、示功图以及电机的电力参数是抽油机井工作的重要参数,是抽油机井工况判断的依据。现场传感器将油温、油压等物理量转换成4~20 mA的电流信号后,输出给传感器信号采集板。示功图采集模块内部有加速度传感器和负荷传感器,采集的数据通过ZigBee无线方式,发送到传感器信号采集板。信号采集板通过继电器来控制抽油机启停。三相电压电流经过电压互感器模块后,由电量采集模块来采集。上位机使用Modbus通信协议,采用RS485总线与电量采集板和传感器信号采集板进行通信,以获取采集的数据和发送控制命令。Modbus是工业控制系统通信中最普遍的协议,它具有兼容性好,可靠性高等优势[1]。上位机软件能够显示电量参数、各个传感器的数据以及示功图;更改采集参数和控制抽油机的启停。

2 系统硬件设计

2.1 主控芯片选型

主控芯片选择嵌入式处理器STM32F103RC,这是一款Cortex M3内核的 32位单片机,有 48KB SRAM、256KB FLASH,片上集成 6个定时器、3个 12位 ADC、3个 SPI、2个IIC、5个串口等丰富的外设,主频最快可以达到72 MHz。相比于其他的单片机,STM32系列具有更强大的运算处理能力,更快的速度,使用起来更加灵活方便[2]。

2.2 传感器信号采集板

图2为传感器信号采集板框图,由电源电路、信号调理电路、STM32及其外围电路、继电器及其驱动电路、RS485以及RS232通信接口电路组成。

图2 传感器信号采集板框图Fig.2 Block diagram of the sensor signal acquisition board

由于现场的环境恶劣,在传感器调理电路前端增加了起限流保护作用的保险丝,以及起静电保护作用的TVS管。采样电阻将传感器输出的4~20 mA的标准电流信号转换成STM32内部AD可以采集的电压信号。

开关信号的调理电路与电流信号调理电路相似,采用光耦隔离进行电压隔离保护,同时将外部开关信号的电压转换为芯片内部可以测量的电压。

图3为STM32电路原理图,包括:复位电路、供电电路、启动模式选择电路、滤波电容等。 PA4(20)、PA5(21)为引脚为内部 ADC 的输入通道。 PC10(51)、PC11(52)引脚为内部USART4的输入输出通道,用来实现RS485通信。PC12(53)、PD2(54)引脚为内部USART5的输入输出通道,用来实现与ZigBee通信模块之间的RS232通信。PC14(3)、PC15(4)引脚用来输出开关信号。

图3 STM32F103RC电路原理图Fig.3 STM32F103RCcircuit schematics

采用继电器来控制抽油机启停,其驱动电路如图4所示。STM32的IO引脚与PNP型三极管的集电极相连。以增加STM32的电流驱动能力。

2.3 三相电压电流转换板

电压电流转换板由电压互感器与电流采样电路组成。电流采样电路通过一个采样电阻将电流信号转换为电压信号。互感器能够起到降压以及隔离保护的作用。电机的交流电信号通过它的初级输入,进行电压变换后,由次级输出芯片能够测量的电压。电流则通过采样电阻转换成电压信号。

2.4 电量参数采集板

电量采集板同样采用STM32作为主控芯片,使用CS5463专用电量测量芯片分别测量三相的电量参数,使用RS485通信接口与上位机通信。其结构框图如图5所示。

CS5463是美国CirrusLogic公司新近推出的单相双向功率/电能计量集成电路芯片。可以测量瞬时的电压、电流、有功功率、无功功率、视在功率和功率因数等[3]。其电路原理图如图6所示。

图4 继电器及其驱动电路原理图Fig.4 Relay and its drive circuit schematics

图5 电量采集板方框图Fig.5 Block diagram of power parameter acquisition board

图6 CS5463及其外围电路原理图Fig.6 CS5463 and its peripheral circuit schematics

电量参数采集板上配备了三块CS5463,分别来采集三相电压电流。通过SPI方式与STM32通信,一个CS5463内部包含有两个ADC,分别采集电压与电流。

2.5 ZigBee通信模块

ZigBee通信模块由CC2430及其外围电路、RS232通信接口电路、收发天线组成。该模块由两节5 V电池供电。具有小巧灵活等特点。CC2430是一款TI公司生产的SOC芯片,CC2430芯片内部包含了一个DSSS无线射频前端,用于发送和接收无线射频信号[4]。为了更加方便的实现Z-Stack协议栈[5],在片内集成了一个8位的8051内核。

图7 ZigBee通信模块Fig.7 Block diagram of ZigBee communication module

2.6 示功图采集模块

示功图采集模块采用电池供电,安装在抽油机连接杆上。内部包含一个加速度传感器和一个负荷传感器,将加速度信号进行二次积分得到位移,负荷传感器的信号即为载荷,定时将测得的数据通过ZigBee方式发送出去。

3 系统软件设计

3.1 传感器信号采集板程序设计

传感器信号采集板上STM32内部的程序分为初始化、信号的采集、ZigBee模块的数据接收、Modbus数据帧的接收与发送等步骤。程序流程图如图8所示。

图8 主程序流程图Fig.8 The main program flow chart

在系统上电后,首先执行系统的初始化,包括系统时钟的配置;中断向量配置;ADC、USART、TIMER、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_receive()函数从消息队列中接收一个消息,然后通过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的转接模块将RS485的信号转换成RS232的信号。利用MFC中的MSComm控件进行RS232串口的通信[6]。

在主窗口类CWorkDlg定义CString成员对象,用于显示实时的压力、温度、三相电流电压;定义继承于CWnd类的子类,display类,用于显示示功图。在其OnPaint函数中添加坐标以及曲线的绘制代码。

图9 上位机界面Fig.9 Data display of PC

图9为上位机界面。点击菜单栏上的参数设置菜单,会弹出参数设置对话框。用户可以在参数设置对话框上更改监控参数。监控的参数包括报警上限、报警下限以及采集间隔。当抽油机井的任意一项参数超出正常范围后,都可以弹出报警提示,提示操作员对此进行处理。同时,操作员可以点击停止按钮,让抽油机井急停。

4 结论

本文设计的监控系统采用低功耗、高性能、低成本的嵌入式处理器STM32作为主控芯片。可以实时准确地反映抽油机井的生产状况,在出现故障时能够及时进行抽油机井的启停控制。与传统的人工巡视监控相比,采用基于微控制器的油井实时监控系统,可降低工人劳动强度,减少用工总量,提高总体劳动效率;且可靠性高,可保证油气生产安全、提高油田科学化管理水平和整体开发效益。

[1]朱小襄.Modbus通信协议及编程[J].电子工程师,2005(7):42-45.ZHU Xiao-xiang.Modbus communication protocol and programming[J].Electronics Engineer,2005(7):42-45.

[2]孙书鹰,陈志佳,寇超,等.新一代嵌入式微处理器STM32F103开发与应用[J].微计算机应用,2010(12):59.SUN Shu-ying,CHEN Zhi-jia,KOU Chao,et al.New generation of embedded microprocessor STM32F103 development and application[J].Microcomputer Applications,2010(12):59.

[3]周怡頲,凌志浩,吴勤勤.新型单相双向功率/电能集成电路CS5463的原理与应用[J].仪器仪表用户,2006(3):66-68.ZHOUYi-ting,LINZhi-hao,WUQin-qin.Principle and application of new single-phase two-way power/energy of the integrated circuit CS5463[J].Instrument Users,2006(3):66-68.

[4]尹应鹏,李平舟,郭志华.基于CC2430的ZigBee无线数传模块的设计和研究[J].电子元器件应用,2008,10(4):18-21.YIN Ying-peng,LI Ping-Zhou,GUO Zhi-hua.Design and research of CC2430 ZigBee wireless data transmission module[J].Electronic Component Applications,2008,10(4):18-21.

[5]韩旭东,张春业,李鹏.传感器无线互联标准及实现[J].电子技术应用,2004(4):44-46.HAN Xu-dong,ZHANG Chun-ye,LI Peng.Sensors wireless internet standards and achieve[J].Application of Electronic Technique,2004(4):44-46.

[6]侯俊杰.深入浅出MFC[M].武汉:华中科技大学出版社,2001.

猜你喜欢
抽油机串口电路
抽油机井泵效影响因素的确定方法*
油田抽油机组节能技术分析研究
电路的保护
浅谈AB PLC串口跟RFID传感器的通讯应用
解读电路
巧用立创EDA软件和Altium Designer软件设计电路
基于MATLAB模拟混沌电路
21油田丛式抽油机井群集中控制系统的设计
数字电源内部数据传输的串口通信方法实现
USB接口的多串口数据并行接收方法探索