关 闭

新闻中心

EEPW首页 > 工控自动化 > 设计应用 > 基于MATLAB GUI的钻井工具姿态采集处理系统

基于MATLAB GUI的钻井工具姿态采集处理系统

作者:丁旭东,周静,李炳建时间:2008-07-18来源:电子测试收藏

  0引 言

本文引用地址:http://www.eepw.com.cn/article/85907.htm

  在石油钻井中,准确井眼姿态是进行井眼轨迹控制的前提。为此,本文充分结合单片机和的优点,基于事件驱动的通信机制,提出了一种环境下基于的PC与片上系统C8051F060实时串行通信的可视化数据处理方法,并实现了对井眼姿态的监测。该方法极大地简化了开发流程,提高了系统开发效率。更重要的是的运算能力,为数据处理提供了保障。

  1 系统介绍

  在本系统中,上位机是PC,下位机采用silabs公司推出的高速片上系统(SoC)C8051F060,使用三轴加速度计来敏感井眼姿态的变化。三轴加速度计两两正交,输出正方向满足右手螺旋法则,将三轴加速度的输出值通过坐标间的相互转换,利用三角关系式即可得到当前井眼空间姿态。由于PC串口与SoC的UART使用的是不同的电压标准,所以两者间通过电压转换芯片sp3223相连。三轴加速度敏感到的姿态信号经过调理电路和多路开关后,被SoC内部的A/D采样,采集得到的数据存储到片外存储器。数据的存储设备采用三星公司生产的超大容量存储器K9K8G08U0M,满足了系统长时间采集存储的需要。

  借助开发的上位机软件通过串口实现与下位机间的命令及数据传输,并对下位机采集的数据进行处理。

  2硬件系统

  C8051060是完全集成的混合信号片上系统型MCU,其内部CIP-51内核采用流水线结构,指令执行速度可达25 MIPS。使用如此高性能的单片机使得系统硬件电路设计大为简化,单片机的UART、串口通过电压转换模块SP3223与PC进行通信,而C8051060的双串口为多系统的级联提供了方便。数据采集功能由其内部的ADC完成,采集的数据通过口线存储到片外的大容量存储器K9K8G08U0M。

  系统硬件框图如图1所示,其中实线为数据流,虚线为控制流。系统工作时,由上位机通过命令来控制下位机进行相应的操作。进行数据采集时,单片机控制电源给传感器供电。各路信号经过各自的调理电路后被送入多路开关。单片机通过控制多路开关来选择所要采样的信号,并将其送入SoC内置的ADC进行采样。采样值被存储后等待与上位机的通信。

 

  3下位机软件

  下位机SoC接收到PC的下发消息后,通过串口中断程序转入相应的子程序,执行相应操作,最后返回一个握手信号做为状态标志,确认命令是否被正确执行。

  C8051060使用UART0与PC进行串行通信。将该串口的工作方式设置为方式3,具有硬件地址识别和多处理器通讯的功能,并且用定时器1作为波特率发生器,设定波特率为115 200 b/s,每帧数据占11位--1个起始位,8个数据位,1个可编程的第九位,1个结束位。

  该软件的子程序包括:清参数区、清数据区、发送参数、接收参数、开始采集、接收数据、复位等,各子程序的具体实现在此不进行详细描述。软件框图如图2所示。

 

  4上位机软件

  本系统使用MATLAB提供的图像用户界面开发环境(DE)完成界面设计及上位机软件编制。GUI"所见即所得"的编程方式简单明快,非常容易上手。本软件借助MATLAB自带的工具箱和系统中的Activex控件,编制了菜单栏和工具栏及各功能模块,实现了命令、参数以及数据的双向传输及显示、数据的滤波处理及绘图。

  4.1串行通信的实现

  MATLAB本身是一个跨平台的软件,并不具备直接访问硬件的能力,但是可以通过对serial类的操作,实现MATLAB对串口的支持。

  要想在MATLAB中使用串行口,首先要借助serial类建立串口对象,并在使用前将该串口对象打开。数据传输完毕后,需关闭该串口对象,避免影响其他程序无法对该串口对象的使用。在系统不再使用该串口或者退出系统时,需要将该串口对象清除并从MATLAB工作空间清除,避免占用内存和影响其他系统使用。

  在使用串口进行数据传输时,需要对串口进行读写操作。读写串口的方式分为二进制、文本两种,类似于一般的文件操作。为了提高传输的速度,结合实际情况,本系统采用串口二进制异步读写方式。MATLAB程序通过串行口将命令发送到下位机,并通过串行口接收下位机上传的握手信号及数据。

  串行通信的部分源码如下:

 

 


  使用串口进行读写操作时,还需注意的一点就是对串口数据校验方式属性(Parity)的设置,如果该设置与下位机软件不匹配,将造成读写错误而又难以查找原因。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭