0 卖盘信息
BOM询价
您现在的位置: 首页 > 技术方案 >工业控制 > 基于STM32F103C8T6+以太网控制芯片ENC28J60+CC2530和ZigBee的油井压力监控系统设计方案

基于STM32F103C8T6+以太网控制芯片ENC28J60+CC2530和ZigBee的油井压力监控系统设计方案

来源: 21ic
2021-11-24
类别:工业控制
eye 8
文章创建人 拍明

原标题:基于STM32F103C8T6和ZigBee的油井压力监控系统设计方案

  引言

  目前我国大多数油田地处偏远地区、分布范围广、油井分散,若对油井出现的异常情况不能及时发现,及时采取措施,可能直接导致原油产量降低,设备使用寿命减短,能耗增加,有时甚至会造成严重的经济损失,降低了经济效益力和温度是油井抽油机正常工作的重要指标,所以本文设计的重点在压力和温度数据的采集和监控。

  传统的徒手抄计和便携式存储已不再适合油井开采现场数据采集中,在线远传阶段已经到来,信息化、自动化的远程集中监控是一个必然发展趋势。目前少数的远程监控系统通常采用8位或16位主芯片,通过485总线等方式进行远程通信,系统存在反应速度慢、数据传输速率低、布线复杂易受干扰等缺点叫

  本文设计的油井压力数据监控系统现场数据采集和传输设计应用ZigBee传感器网络进行功能实现,嵌入式服务器部分采用32位Cortex-M3内核的STM32F103C8T6微处理芯片和高性能以太网控制芯片ENC28J60实现嵌入式以太网通信接口设计。

  1系统总体构成方案

  整个系统分为数据采集发送端和数据接收监测端两部分,系统总体结构如图1所示。

  数据采集发送端负责油井现场每间隔一段时间采集一次压力数据,并通过ZigBee节点设备发送至嵌入式服务器中的协调器。

  数据接收监测端由ZigBee协调器、STM32控制器和上位机监控软件组成,协调器负责接收由ZigBee节点发送过来的无线数据,并传送至STM32控制器通过以太网把数据发送给远程监控PC进行查看和控制。

  

image.png

  2系统硬件设计

  2.1数据采集发送端

  数据采集发送端的硬件设计主要为传感器节点硬件设计,ZigBee节点选用TI公司生产的CC2530片上系统芯片来设计,CC2530芯片采用6X6QFN封装,有电源引脚、控制引脚和GPIO引脚(P0、P1为8位的I/O引脚,P2只有5位的可用1/O),总共40个引脚。该芯片除了具有符合IEEE802.15.4规范的2.4GHz标准的RF收发器外,它还在片内集成了一个8位的8051增强型微处理器、8KB的SRAM和大容量FLASH用来保存ZigBee协议栈)等。

  力传感器采用BMP085压力传感器,它的测量范围为300〜1100hPa,反应时间为7.5ms,该传感器应用于抽油机原油压力数据的测量中,合适的测量范围决定了灵敏度符合设计要求。同时它具有温度补偿功能,采用无铅陶瓷载体封装,适用在海拔500m~9000m环境,保证工作状态长期稳定。

  CC2530通过I/O口与BMP085相连,CC2530内部处理器与BMP085之间采用IIC总线进行通信。传感器采集到压力和温度数据,经AD转换传送给片内8051微处理器,微处理器控制传感器节点与其它传感器节点或汇聚节点进行通信。RF无线收发器,通过SPI与处理器模块相连。其传感器节点的硬件框图如图2所示。

  

image.png

  2.2数据监测接收端

  数据监测接收端的硬件设计主要分为两部分:ZigBee协调器、STM32嵌入式以太网控制服务器设计。

  ZigBee协调器同样选用CC2530芯片进行设计,但为了与主处理器连接方便,本文把协调器做成一个模块,其引脚定义如图3所示。

  image.png


  图3中,CC2530的I/O引脚(P0.2和P0.3)通过设定SFR寄存器作为USART的RX和TX引脚使用,与STM32的USART串口引脚相连进行通讯。

  STM32嵌入式以太网控制服务器的硬件设计采用基于Cortex-M3内核的处理器STM32F103CBT6作为服务器主处理器,高性能完全满足设计要求,以太网芯片采用美国Microchip公司的独立以太网控制器ENC28J60,它采用速度高达10Mb/s的SPI三线接口作为通信通道,同时内部集成了符合IEEE802.3规则的MAC层和物理层控制器。

  按照STM32指导手册,一个完整的STM32最小系统还外接所需的晶振和去耦电路。其中STM32的PA2、PA3引脚是复用功能引脚作为USART2串口与CC2530的串口引脚相连,另外本系统主处理器内部移植了uIP协议,通过USART2和CC2530连接,设置了一个缓冲队列保存串口接收带的无线模块的数据,然后应用uIP的底层驱动控制ENC28J60,利用以太网发送到上位机。

  根据ENC28J60用户手册和本设计的要求,本设计选用了符合10BASE-T标准并自带RJ45插座的以太网隔离变压器HR91102A,提高系统的抗干扰性。变压器需在ENC28J60的TPIN和TPOUT两引脚相连四个50Ω电阻和两个0.01uF的电容ENC28J60连接一个25MHz的晶振,跨接一个2.75kΩ的偏置电阻均按手册连接。图4所示是STM32嵌入式以太网服务器原理图。图中STM32程序下载设计使用的是标准的JTAG仿真调试接口。

  image.png


  3系统软件设计

  3.1系统总体设计图

  系统总体实现的功能是将油井现场的抽油机压力数据在ZigBee物联传感网络中从节点设备发送至嵌入式服务器中的协调器。为了服务器处理和连接方便,本文将ZigBee协调器和STM32做成了一个模块。协调器经过初始化,选择频道和建立网络后,进入无线监听状态,当有新的传感器节点申请加入时,给新节点分配网络地址并接受节点数据通过串口发送给STM32处理器,通过以太网上传至上位监控PC,系统总体流程如图5所示。

  image.png


  3.2ZigBee节点和协调器软件设计

  本系统利用SensorDemo模板并进行部分改写来实现ZigBee节点和协调器的软件设计。在Zigbee无线网络中存在三种逻辑设备类型:协调器(ZC)、路由器(ZR)、终端设备(ZD)。ZigBee的开发软件选用IAREW8051-8.10.1,Z-Stack协议栈选用ZStack-CC2530-2.5.0,本系统为了操作方便,将SensorDemo改动去掉按键操作,上电即自动联网并发送传感器数据。重点对voidzb_HandleKeys(uint8shift,uint8keys)的改动是删除程序中的SW1等的按键触发事件;核心对voidzb_HandleOsalEvent(uint16event)的改写如下:

  voidzb_HandleOsalEvent(uint16event)

  {

  uint8logicalType;

  if(event&ZB_ENTRY_EVENT)

  {

  initUart(uartRxCB);

  HalLedBlink(HAL_LED_1,0,50,500);

  HalLedSeKHAL_LED_2,HAL_LED_MODE_OFF);zb_ReadConfiguration(ZCD_NV_LOGICAL_TYPE,sizeof(uint8),&logicalType);

  if(logicalType!=ZG_DEVICETYPE_COORDINATOR

  )

  {

  logicalType=ZG_DEVICETYPE_

  COORDINATOR;

  zb_WriteConfiguration(ZCD_NV_LOGICAL_

  TYPE,sizeof(uint8),&logicalType);zb_SystemReset();

  }

  }

  }

  程序运行至此,终端节点就会自动加入网络并建立绑定;到了这一步的时候,网络就已经形成了,网络形成后就可以传输采集到的压力和温度数据了;程序中需要注意的是CC2530将协调器称为gateway(网关)而不是collector。

  3.3嵌入式以太网STM32软件设计

  嵌入式以太网服务器要实现的功能是通过USART2接收CC2530传送的数据,并通过SPI1连接ENC28J60从以太网上传数据到监控PC。以太网服务器经过对STM32和ENC28J60进行初始化,设置系统时钟和弓脚输出方式,配置SPI总线符合ENC28J60

  的时序要求,对ENC28J60的初始化是通过SPI总线对它的寄存器进行配置实现的,主要设置收发缓冲区的大小和起始地址、设置以太网过滤器、配置MAC层、物理层和LED指示灯等[4]。STM32F103可通过SPI接口发送命令,访问ENC28J60的相关寄存器来完成相应的操作。下面给出ENC28J60接收/发送数据包的程序框架:

  ENC28J60发送数据包程序框架如下:

  voidenc28j60PacketSend(unsignedintlen,unsignedchar*packet)

  {

  enc28j60Write(EWRPT,(TXSTART_INIT)&0xFF);

  enc28j60Write(ETXND,(TXSTART_INIT+len)&0xFF);

  enc28j60WriteOp(ENC28J60_WRITE_BUF_MEM,0,0x00);

  enc28j60WriteBuffer(len,packet);enc28j60WriteOp(ENC28J60_BIT_FIELD_SET,

  ECON1,EC

  ENC28J60接收数据包主要框架程序如下:

  unsignedintenc28j60PacketReceive(unsignedintmaxlen,unsignedchar*packet)

  {

  enc28j60Write(ERDPT,(NextPacketPtr));

  NextPacketPtr=enc28j60ReadOp(ENC28J60_READ_BUF_MEM,0);

  NextPacketPtr|=enc28j60ReadOp(ENC28J60_READ_BUF_MEM,0)<<8;

  len=enc28j60ReadOp(ENC28J60_READ_BUF_MEM,

  0);

  len|=enc28j60ReadOp(ENC28J60_READ_BUF_MEM,0)<<8;

  rxstat=enc28j60ReadOp(ENC28J60_READ_BUF_MEM,0);

  rxstat|=enc28j60ReadOp(ENC28J60_READ_BUF_MEM,0)<<8;

  enc28j60ReadBuffer(len,packet);

  return(len);

  }

  3.4高层协议uIP移植和应用层主程序的设计

  完成了MAC层及物理层协议的驱动程序,要想实现嵌入式以太网服务器与其它设备之间的通信,还要在嵌入式系统中实现更高层的TCP/IP协议。本文选用uIPl.0协议栈并对其适当精简来实现功能。uIP协议栈由瑞典计算机科学研究所的AdamDunkels开发的免费、开发源代码的协议栈[7]。在本系统中程序首先用中断的方式接收ZigBee协调器发送给主处理器串口的数据,并设置接收队列暂存这些数据。在主程序中的主要任务是不断监测串口的标志位,当有数据时,把数据添高位封装后,通过ENC28J60的以太网接口发送到上位机监测软件中。其工作流程图见图6所示。

  image.png


  4结语

  本文设计的基于STM32F103C8T6和ENC28J60的嵌入式服务器,利用ZigBee传感网络发送BMP085采集的压力和温度数据到服务器,服务器再通过以太网发送至监控端,设计稳定可靠,为油田业信息化监控提供了一个有效方案。


责任编辑:David

【免责声明】

1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。

2、本文的引用仅供读者交流学习使用,不涉及商业目的。

3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。

4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。

拍明芯城拥有对此声明的最终解释权。

相关资讯

方案推荐
基于MC33771主控芯片的新能源锂电池管理系统解决方案

基于MC33771主控芯片的新能源锂电池管理系统解决方案

AMIC110 32位Sitara ARM MCU开发方案

AMIC110 32位Sitara ARM MCU开发方案

基于AMIC110多协议可编程工业通信处理器的32位Sitara ARM MCU开发方案

基于AMIC110多协议可编程工业通信处理器的32位Sitara ARM MCU开发方案

基于展讯SC9820超低成本LTE芯片平台的儿童智能手表解决方案

基于展讯SC9820超低成本LTE芯片平台的儿童智能手表解决方案

基于TI公司的AM437x双照相机参考设计

基于TI公司的AM437x双照相机参考设计

基于MTK6580芯片的W2智能手表解决方案

基于MTK6580芯片的W2智能手表解决方案