Matlab GUI的上位机与智能车的两种实时通信

发布者:bianzitong521最新更新时间:2013-01-18 来源: 电子科技 关键字:智能车  MC68HCS12G128  实时通信 手机看文章 扫描二维码
随时随地手机看文章
引言
    在以速度决定优劣的飞恩卡尔智能车比赛中,任何因素都可能影响小车的运行。为了满足对小车在赛道中各种状态精确分析的需求,上位机的效据采集与处理要求通信波特率高、信号传输稳定、不丢包、数据处理量大、数据处理及时等。在基于Matlab环境下的串口通信中,查询方式下的非实时串行通信技术对实时性要求很高的智能车通信有很大的局限性。而在目前普遍采用的中断机制下的通信虽然可以满足实时性的需要,却需要修改Matlab自带的instrcallback回调函数。程序调试过程中惨改了回调函数后,需要重新启动Matlab才能使得新的回调函数文件生效。由此可以看出,其操作复杂易出错,且instrcallback函数接收到保存在工作空间的数据不能被GUI组件的函数实时调用。故此方式在需要对多组数据进行分别作图分析时,往往生成多个零散图形窗口。为了满足智能车的实时通信需求,同时使基于Matlab GUI的通信界面更加简洁,本文提出了一种将事件中断函数写入GUI组件函数中的方式。
    Matlab是由美国Mathworks公司开发的面向理论分析研究及工程设计处理和绘图的一套具有强大功能的软件系统。Matlab运行稳定、可靠,使用方便,是广大科研人员进行科学研究的得力助手。从Matlab6.0版本开始,Mathworks公司在软件中增加了设备控制箱(instrument control toolbox),提供了对RS-232/RS-485通信标准的串口通信的正式支持。Matlab GUI(Graphic User Interface)是内置于Matlab的进行图形界面开发的模块。本文主要介绍在Mariab GUI环境下,上位机与智能车进行实时通信盼办法。该方法较之使用VC/VB高级语言编程,
大大缩减了开发时间,提高了开发效率。另外,较之传统的RS-232接口,使用蓝牙接口能够更大范围地全方位进行数据传输和采集。实验结果表明,经过两次握手处理后数据传输实时稳定,具有很强的实用性。

1 系统总体设计方案
   
系统采用飞恩卡尔MCA8HCS12G128单片机作为智能车的控制器,PC机为上位机。利用Matlab GUI构建起二者的实时通信、数据处理和绘图等平台。整个系统的原理框图如图1所示,介绍了基于Matlab的GUI和串口通信机制下建立上位机与智能车实时通信和作图的平台方法。

a.JPG


    智能车与PC机通过蓝牙相连,系统工作时,由Matlab调用设备控制工具箱中的serial类函数来设置串口属性,创建串口对象,从而实现Matlab对串口的控制和读写操作。在对智能车的调试过程中,可以通过Matlab向蓝牙发送特殊指令,启动智能车。在智能车系统运行后便可以将所采集位置和速度等效据通过蓝牙回送给PC机。
    由Matlab通过中断方式实时接收数据,并对数据进行分析和处理,实时绘出相应的图形。

2 Matlab GUI设计介绍
   
①运行Matlab后,点击主界面左上角的GUI图标k.jpg即可运行Matlab GUI开发工具。
    ②点击Blank GUI(Default)选项并点击OK按钮,完成新建Blank GUI。
    ③在新建的Blank GUI界面的右方菜单中添加设计所需要的元素,完成串口通信及数据实时显示等功能的GUI界面设计。
    ④编写GUI组建相应的响应控制代码,运行后的通信仿真界面如图2所示。

b.JPG[page]

3 单片机与PC机串行通信
3.1 设计思想
   
MCA8HCS12G128单片机的软件设计需要实现对程序的初始化、接收与发送串口信号、速度和位置数据的采集等功能。为了保证上位机采集数据的可靠性和稳定性,防止出现丢包事件,在通信过程中约定了双方的握手方法。在程序初始化以后,等待fwrite命令发送的握手信号0xFF。当单片机第一次接收到的信号为0xFF时,则握手成功,并开始运行电机和激光头等子程序。在实验过程中发现存在发送的第一组数据第一个字节丢失的现象,为了增强数据的可靠性,首先判断数据包的前两个字节是否为0xFF,是则剔除相应字节,分离出有效的数据,再在回送的速度、激光传感器的数据中嵌入两个字节的握手信号0xFF,Matlab接收到串口的数据后进行相应的处理。智能车控制器通信的总程序流程如图3所示。

c.JPG


3.2 系统蓝牙串口通信主要代码
    d.JPG

4 基于Matlab GUI的PC机与智能车的通信
4.1 Matlab GUI基础上实现串口通信的软件设计
   
在Matlab环境下,读取串口数据有查询和中断两种方式。查询方式数据只能分批进行传送,实时性不高,且对系统资源的占用比较大。以中断方式实现的串口通信,通常的处理方式是对Matlab提供的instrcallback回调函数进行修改,采用事件驱动的方式,达到实时处理下位机传送数据的目的。但是采用Matlab的事件和回调函数机制编程要相对复杂一些,在对instreallback函数进行修改和备份等操作时容易出错且比较麻烦。另外,每次修改instreallbaek函数后都要重新启动Matlab,可能会导致数据丢失等一些不必要的麻烦。将事件驱动函数写入GUI组件的M文件中,可以减少绾程的复杂性,避免一些不必要的麻烦,实现串口之间的实时通信。
4.2 设备控制工具箱介绍
    Matlab设备控制工具箱主要是提供Matlab软件与各种智能仪器的直接通信功能。工具箱提供了以下功能:
    ①支持串行接口(RS-232/RS-422/RS-485)、GPIB接口(IEEE 488)等通信协议。
    ②支持IVI、VXI plug&play和Matlab设备驱动(instrument drivers),不需要学会写与设备相关的指令即能与仪器直接联通。
    ③传输的数据可以是文本或二进制的(数字的)。
    ④支持同步和异步(有阻塞或无阻塞)通信。
    ⑤支持基于事件的通信。
    ⑥新的TMTOOL图形用户接口不仅能够连接仪器、接收/发送数据,而且可以自动生成M代码文件,以加入编写的Matlab程序中。

5 基于Matlab GUI查询方式实现异步串行通信
   
基于Matlab查询方式的非实时串口通信虽然编程简单,对数据的调用处理也更为容易,但是只能接收一个过程的数据,这在对实时性要求较高的系统中往往不能满足设计者的需求。以下为部分通信程序代码。
    l.jpg
    m.jpg

6 基于Matlab中断方式实现实时串行通信
   
事件驱动方式的优点是程序响应及时,可靠性高。在Matlab环境下实现实时通信的中断方式,实际上就是采用事件驱动的方式实现的,类似于VB语言MSComm控件中OnComm事件的实现方法。当串口上监视到缓冲区有指定字节数目的数据可用(bytes-available event),串口接收到的数据长时间处于非激活状态(break-interrupt event),串行口引脚状态改变(pin-status event)或输出缓冲区为空(output empty eve nt)等事件发生时,Matlab会自动调用回调函数进行通信事件的处理。因此,事件驱动实质上是一种中断机制,而回调函数实质上相当于一个中断服务子程序。Matlab端实时串行通信的程序流程如图4所示。以下为两种不同的方式实现实时通信的中断机制程序。

e.JPG


6.1 将中断服务子程序写入GUI组件的部分M文件代码
   
主程序创建串口设备对象、设置串口设备属性及打开串口等初始化操作的代码与查询方式下的初始化代码相同:
   
    f.JPG

[page]

6.2 通过调用修改后的instroallback.m文件实现中断
   
主程序:
    h.JPG
    修改instreallback(obj,evenlt)回调函数,instrcallback.m文件包含了Matlab提供的回调函数程序模板,设计者可以根据需要自行添加相应的服务程序代码。Matlab安装目录下有两个instrcallback.m文件,只需要修改\MATLAB\toolbox\matlab\iofun\@instrument目录下的instrcallback.m文件即可。另外,在修改instrcallback.m文件之前,最好对其做一个备份。在修改了instrcallback(obj,event)回调函数后,需要对其进行保存,重新启动Matlab配置该文件,才使修改后的函数生效。

j.JPG


    图5为以下方式实现的智能车启动过程速度的实时显示,修改后的instrcallback.m文件主要程序代码如下:
    i.JPG
    实验证明,基于Matlab事件驱动实现的智能车与上位机的实时串口通信可以很好地满足智能车调试过程中的需要,且将中断服务子程序写入GUI组件和修改instrcallback.m文件两种方式的通信都稳定可靠。

结语
   
在Matlab环境下两种实现智能车与PC机实时通信的中断机制都能实时稳定地进行数据传输,不过将中断服务子程序写入GUI组件的方式编程简单,数据处理方便,实现更为容易,开发效率相对得到了较大的提高。实践证明,采用这种方法是可行的,它不但能够应用于本文的智能车系统,也可广泛应用在其他具有串口通信能力的仪器设备中。

关键字:智能车  MC68HCS12G128  实时通信 引用地址:Matlab GUI的上位机与智能车的两种实时通信

上一篇:基于AD9912镜像频率的应用
下一篇:COP8CDR9微控制器在多路数据采集中的应用

推荐阅读最新更新时间:2024-03-16 13:16

低成本光电寻迹智能车设计与实现
  智能车竞速比赛以及多种智能车的应用场合中,需要智能车沿着某条轨迹快速前进,使用普通红外传感器、激光传感器、摄像头识别均可有效提取路面轨道信息而解决这一问题,现在常见使用16位单片机作为控制核心。普通红外传感器因为易受干扰、前瞻距离短等缺点已经较少使用,摄像头有丰富的数据信息,但是低成本8位单片机不能很好的处理这些信息。激光传感器成本适中,处理的信号便于8位单片机处理,能够有效的节省硬件成本。针对寻迹智能车进行了软硬件设计,采用3位freescale单片机MC9S08AC16作为控制核心,使用激光传感器提取赛道信息,采用低成本的红外测速方案,算法使用以PID为基础的枚举查表法,做到了处理快速高效。整个设计既满足了竞速小车的响应迅
[电源管理]
低成本光电寻迹<font color='red'>智能车</font>设计与实现
基于LabVIEW和RS485通信的光伏发电实时监测系统设计
设计了一套基于LabVIEW数据采集和RS485通信的光伏发电监测系统,可实时监测光伏发电系统运行电参数和环境参数并统计发电量信息。该系统由单片机和传感器采集光伏发电系统的各类相关参数。并采用RS485协议与PC机通信。上位机通过LabVIEW提 供的标准I/O应用程序接口VISA实时获取单片机传递的数据信息,数据经上住机监测软件 处理后通过监测界面图形化显示。该监测系统结构简单、硬件成本低廉、数据传输稳定 、运行稳定可靠,具有可视化的监测界面。经测试系统可实时监测到各类参数的变化情况, 可有针对性地对光伏发电系统进行维护进而提高光伏运行效率。 随着能源危机的日益严峻。各种可再生能源得到了长足的发展。在诸多的可再生能源中,光伏发
[电源管理]
基于LabVIEW和RS485<font color='red'>通信</font>的光伏发电<font color='red'>实时</font>监测系统设计
摄像头智能循迹小车设计与实现
随着智能交通系统的广泛应用,智能车的系统控制也逐步成为一项新兴技术,该领域涵盖了控制、模式识别、传感技术、电子、电气、计算机、机械等多个学科。本方案采用摄像头作为信号采集的传感器,根据摄像头采集的图像进行精密计算,确定速度参考和舵机转向参考。摄像头组的智能车对于道路信息预测能力强,而且摄像头对道路的探测精细,视角范围大,因此受到众多智能车设计者的欢迎。但摄像头图像受周围光线的影响大;算法运算量大,算法复杂,需要占用较多的NCU资源,因此其中图像识别算法的设计成为系统设计的关键步骤。 1 系统设计 智能车系统由核心处理器KINETIS60、路径检测模块、起跑线检测模块、车速检测模块、电源模块,无线数据传输模块、电机驱动模块、舵机
[单片机]
摄像头智能循迹小车设计与实现
智能车OS照搬安卓没有出路,特别是在中国
新能源、智能车、国产自主品牌轰轰烈烈。 大厂巨头、创业公司、转型玩家络绎不绝,都在瞄准时代级机遇和红利,冲进浪潮中。 斑马的目光,放在了智能车行业的更底层,也是最重要的部分: 车载操作系统。 AliOS,专为智能车OS而来、all in其中,并在每年云栖大会上如约带来新突破。 今年,斑马智行用晒出“朋友圈”的方式,披露了智能车OS新进展。 不光是把地平线、芯驰等行业代表齐聚一堂,跨圈拉来世界顶尖引擎公司Unity、Unreal,还要搞个100亿的产投助力计划壮大“朋友圈”…… 并且明人不说暗话: 智能汽车操作系统,照搬手机OS没有出路。 斑马最新进展,智能汽车OS生态长啥样? 按照斑马智行的理
[汽车电子]
<font color='red'>智能车</font>OS照搬安卓没有出路,特别是在中国
基于自适应模糊PID智能车用直流电机控制器仿真研究
    智能车是一种集环境感知、规划决策、自动行驶等功能于一体的综合系统,具有时变且非线性特点。其中控制算法对智能车起着关键作用,传统的PID控制难以得到很好的效果。采用自适应模糊PID控制算法可以使系统具有很好的动态响应性能,并且可以对PID参数进行在线自调整,提高了系统的适应性和鲁棒性,改善了系统的稳态误差和效率,并使其抗干扰能力明显提高。 1 自适应模糊PID控制器     自适应模糊PID控制器结构如图1所示,自适应模糊PID是在PID算法的基础上,通过计算当前系统误差e和误差变化率ec,利用模糊规则进行模糊推理,查询模糊矩阵表进行在线参数调整。本系统通过增量式旋转编码器对速度进行检测,经过信号转换与单片机进行通信,将输入
[嵌入式]
基于电磁场检测的寻迹智能车系统设计
    1 设计原理     1.1 磁场理论     根据麦克斯韦电磁场理论,交变电流会在周围产生交变的电磁场。智能车竞赛使用路径导航的交流电流频率为20 kHz,产生的电磁波属于甚低频(VLF)电磁波。交变磁场分析复杂,并且赛道导航电线和小车尺寸远远小于电磁波的波长,电磁场辐射能量很小,能够感应到电磁波的能量也非常小。所以可将导线周围变化的磁场近似地看作缓变的磁场,按检测静态磁场的方法获取导线周围的磁场分布,进行位置检测。     由毕奥一萨伐尔定律可知,通有稳恒电流I、长度为L的直导线周围会产生磁场,距离导线距离为r处的磁感应强度为:         1.2 寻迹原理     基于不同物理效应的磁测量传感器很多,要根
[电源管理]
基于电磁场检测的寻迹<font color='red'>智能车</font>系统设计
基于WinCE的智能车载仪表设计
  引言   随着高性能电子显示技术的发展,汽车仪表电子化的程度越来越高。国内外已开发出了多功能全电子显示仪表、平视显示仪表、汽车导航系统、行车记录仪等高技术产品。未来,车用电子化嵌入式仪表具有以下优点:提供大量复杂的信息,使汽车的电子控制程度越来越高;满足小型、轻量化的要求,使有限的驾驶空间更人性化;高精度和高可靠性实现汽车仪表的电子化,降低了故障的发生率;设有在线故障诊断系统,一旦汽车发生故障,可以找到故障来源,方便维修;外形设计自由度高,汽车仪表盘造型美观。基于以上优点,汽车会越来越多地采用各种用途的电子化仪表。造型新颖、功能强大的嵌入式电子化仪表将是今后车用仪表的发展趋势和潮流。   1 智能车载仪表系统结构   本智
[单片机]
基于WinCE的<font color='red'>智能车</font>载仪表设计
嵌入式实时系统及其在通信系统中的应用
    摘要: 阐述了嵌入式实时系统的原理及特点,分析并论述嵌入式实时系统实现过程中的关键问题,讨论了嵌入式实时系统在通信领域中的应用。     关键词: 嵌入式实时系统 嵌入式实时操作系统 板级支持包(BSP) 电信管理网 近年来,以PC机为代表的通用计算机系统在硬件和软件方面都取得了飞速的发燕尾服,处理器的运算速度已经达到了每秒10亿次的数量级。作为计算机系统核心的操作系统也从字符界面的单任务、单用户的DOS,发展到拥有图形界面的多用户、多任务的Windows 98、Windows NT。计算机的应用已经扩展到通信、交通、家电及医疗诸多领域。 然而,在经过了很长一段时间的快速发展,尤其是作为
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved