当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]基于MATLAB GUI的钻井工具姿态采集

0引 言

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

1 系统介绍

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

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

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

4.1串行通信的实现

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

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

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

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

 

 

 

 

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

4.2 GUI界面中activx控件的使用

在MATLAB的GUIDE中所提供的基本控件非常少,难以满足本系统的需要。因此本系统调用系统中的Activex控件FlexArray、FlexGrid实现了数据在表格中的显示,调用axes控件实现了数据图形绘制。

本程序中用到的控件(包括Activex控件),在其创建及属性设置过程中,使用了全程序法、GUIDE属性法和两者相结合的方法。全程序法是只借助MATLAB提供的句柄功能创建及设置控件。而GUIDE属性法类似VB的设计风格,容易上手,但是这种方法使得m文件过于依赖fig文件。两者结合的方法使得设计更加灵活。下面以GUIDE属性法和全程序法相结合的方法创建、调用FlexArray控件为例,讲解本系统中的数据显示部分。基本控件的操作比较简单,在此不进行详述。

FlexArray控件的全称是,该控件的文件即C:WINDOWSSystem32VSFLEX3.OCX,如果本机上没有的话,可以到网上下载,或到其他机子上复制,然后使用regsvr32.exe注册即可。做好这些准备工作之后,点击GUI左侧的工具箱中的Activex按钮后,在设计区拖拉,弹出"Select an Activex Control"对话框,对话框中的"Activex Control List"列表框列出了在当前计算机上注册的所有Activex控件,在该列表框中选中 控件,单击"Create"按钮,该控件便在GUI的空白编辑区被创建。

创建成功后,GUI自动为该控件生成的句柄做为图形窗口句柄handles的成员被存储,对于第N个被创建的Activex控件,其句柄为handles.activexN,以后借用该句柄就可以通过函数来调用对应的Activex控件。控件的属性设置可以通过双击控件或者右键菜单打开属性设置窗口来进行,也可以通过在m文件中通过set命令设定。通过get可以获取Activex控件的属性。

要读取或设定FlexArray控件表格中某单元格的内容时,首先通过handles.activexl.row=i;handles.activexl.col=j;语句指向目标单元格,然后通过fa=get(handles.activexl,′text′);fa=str2num(fa);语句将目标单元格中的内容转换为数值赋给变量fa.通过set命令设置目标单元格中的内容,也可以设置固定栏标题,只是注意对于行固定栏的行号是0,列固定栏的列号是0。

4.3滤波处理及图形绘制

如果使用采集到的传感器输出数据直接计算井眼姿态,将会造成较大的误差。主要原因是:(1)在钻进中,由于钻进环境恶劣,振动和旋转都会对传感器输出造成较大影响;(2)电路本身的电气噪声,对采集数据存在一定的影响。

在消除旋转对实验数据的影响后,再借助MATLAB语言实现滤波功能,具体实现流程如下:根据实验数据,在MATLAB的FDAtool工具箱中设计滤波器,滤波效果与实际情况吻合后,将该滤波器的传递函数使用MATLAB语言实现,添加到"数据处理"功能按钮对应的程序中,完成数据处理的全部功能。

将滤波前后的数据借助axeS控件绘图显示,可以看到数据处理前后对真实井眼姿态描述的差异。

5应用实例

本系统已经应用于智能旋转导向系统的室内实验,图3是在室内直井钻井平台上进行模拟钻井实验的钻进过程中,利用本软件进行操作的截图。该图较好地展示了该软件的功能:数据、命令的双向传输及显示、数据的后续处理功能。图中曲线显示区域黑线代表的是采集到的y轴重量加速度的数值GY,红线代表的是经过数据处理后的GY,不难发现,后者的波动范围明显缩小,曲线更为光滑。然后利用处理过的三轴加速度数值,对钻井工具的空间姿态角进行计算,能够得到与实际情况较为吻合的空间姿态,为矿井的钻进中空间姿态的准确测量,提供了一个可供借鉴和参考的方法,能够使钻井过程中减少停钻次数,为提高钻井效率和钻井安全增加了保证。

 

 

6结论

具有数据处理、串口操作控制功能和Activex控件合理调用功能的上位机软件,再加上高性能片上系统C8051F060作为主芯片的井下电路,两者组成了模拟钻井姿态采集处理系统,在115200的串口波特率下,实现了对多路井下信号的采集、处理,从实验结果来看,井斜角、工具面角等空间角度的计算结果与实际情况较为符合,完全适用于钻井工具的空间姿态测量应用。强大的数据处理功能,再加上人机操作界面,这使得MATLAB在工业现场监控方面将获得更广阔的应用。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

【2024年3月7日,德国慕尼黑讯】在竞争激烈的全球半导体市场,制造商一直在努力缩短产品上市时间。同时,他们对流畅、高分辨率图形显示器的需求也在日益增长。为了满足这些市场需求,英飞凌科技股份公司(FSE代码:IFX /...

关键字: MCU GUI 图形显示器

一直以来,EDA都是大家的关注焦点之一。因此针对大家的兴趣点所在,小编将为大家带来EDA软件的相关介绍,详细内容请看下文。

关键字: EDA SPICE MATLAB

本文利用Matlab GUI设计通过串口进行数据发送和接收的界面,并利用内置于Matlab的串口通信API实现串口数据发送与接收功能。

关键字: matlab GUI 串口通信

评估板(EVB)及其配套软件具有即插即用功能,可轻松评估ADI产品的性能。其图形用户界面(GUI)提供了直观的方式,可进行手动配置并与该设备通信。但是,在更复杂的产品中,如果不能自动处理这些重复性任务,那么在评估所有可用...

关键字: ADI Python MATLAB

一星期中最糟糕的一天,这居然也成功拿下了吉尼斯记录。10月17日,吉尼斯世界纪录官微发文称,正式认证星期一为一个周里最糟糕的一天,周五是最伟大的一天。看起来有点官微小编搞怪的意思,毕竟尚未见到正式的证书。当然,一些打工人...

关键字: MIDDOT MDASH GUI WORLD

摘要:随着社会不断发展,传统化石能源已经无法满足日益增长的能源需求,基于这一情况,光伏电源的使用逐渐变多。而高渗透率的光伏电源出力大于负荷的消耗时,配电网的电压波动影响会变大,网络发生故障而造成部分负荷失电停止运行后也会...

关键字: 光伏电源 电压分布 MATLAB

摘要:首先研究了地铁车辆牵引变频器的电路结构、控制策略、分段同步控制等技术,随后分析了SPEM分段同步控制的优点,并在MATLAB中建立模型,验证了分段同步控制的优越性。最后利用软件的仿真功能建立牵引变频器的计算机仿真模...

关键字: 牵引变频器 分段同步控制 MATLAB

MATLAB是“Matrix Laboratory”的缩写,正如其命名所示,最初使命仅仅是一个交互式的矩阵计算器。1981年Dr. Cleve Moler基于兴趣爱好和教学需求将其设计出来,最初包含的71个文字和函数可供...

关键字: AI 电气化 MATLAB Mathworks

(全球TMT2022年5月26日讯)disguise  -- 视觉叙事平台和扩展现实(xR)解决方案市场领导者 -- 宣布推出元宇宙解决方案部门,帮助元宇宙实现下一代非凡的现场、虚拟制作和基于位置的视听体验。...

关键字: GUI SE AN BSP

伦敦2022年5月26日  /美通社/ -- disguise  -- 视觉叙事平台和扩展现实(xR)解决方案市场领导者 -- 宣布推出元宇宙解决方案部门,帮助元宇宙实现下一代非凡的现场、虚拟制作和基...

关键字: GUI SE RS NI
关闭
关闭