微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > Matlab GUI的上位机与智能车的两种实时通信

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

时间:01-07 来源:互联网 点击:

摘要:基于Matlab的串口通信机制,简要介绍了查询方式下的非实时通信,提出一种将事件中断写入GUI组件函数的方式,相对于改写instrcallback函数实现串口中断机制的实时通信方式,大大简化了中断方式实现实时通信的过程,并详述了三者的差异和实现过程。利用Matlab的GUI工具和内置的串口通信API,设计了一个可视化的串口通信界面,通过蓝牙串行接口,实现智能车系统采集数据的实时接收,并利用Matlab强大的科学计算功能,对数据进行实时处理,图形化量示数据处理结果。实验结果表明,该方法可行,具有一定的应用价值。
关键词:Matlab GUI;智能车;MC68HCS12G128单片机;回调函数instrcallback;实时通信

引言
在以速度决定优劣的飞恩卡尔智能车比赛中,任何因素都可能影响小车的运行。为了满足对小车在赛道中各种状态精确分析的需求,上位机的效据采集与处理要求通信波特率高、信号传输稳定、不丢包、数据处理量大、数据处理及时等。在基于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和串口通信机制下建立上位机与智能车实时通信和作图的平台方法。

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

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



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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top