基于Matlab_GUI的双泵喷水推进船舶仿真平台设计

2018-12-10 05:55刘铁良杜冬梅章郁泱秦飞龙袁景淇
实验室研究与探索 2018年11期
关键词:控件串口界面

刘铁良, 杜冬梅, 章郁泱, 秦飞龙, 袁景淇

(1. 上海交通大学 自动化系, 上海 200240;2. 中国船舶及海洋工程设计研究院 喷水推进技术重点实验室, 上海 200011)

0 引 言

Matlab_GUI是用户与计算机之间的交流工具,能使操作更人性化,减轻用户的认知负担,使其更适合用户的操作需求[1]。Matlab将所有GUI支持的用户控件都集成在这个环境中并提供界面外观、属性和行为响应方式的设置方法,而且具有强大的绘图功能,可以轻松获得高质量的曲线图。同时Matlab具有串口操作的功能,可以利用计算机与实际硬件连接进行半物理仿真实验。GUI可以内嵌Matlab支持的所有图形处理函数,包括二维绘图和三维绘图函数。通过Matlab_GUI开发工具的使用,将仿真结果以生动明了的形式展现给用户,提高用户对算法或数据处理效果的认识。除此之外,Matlab_GUI与Simulink仿真模型在连接时直接使用较为方便简单的M文件进行编写,没有接口连接的问题,大大降低了工作难度,更有利于系统软件平台的开发[2]。设计程序前,首先考虑设计对象的结构和开发流程,不同的要求设计出来的也不同。GUI界面制作包括界面设计和程序实现,具体步骤如下[3]:① 明确设计任务,绘出界面草图;② 按草图制作(静态)界面;③ 编写界面动态功能的程序;④ 调试界面与程序之间的变量传递。

本文的主要工作为:① 基于Matlab搭建喷水推进船舶矢量控制模型;② 基于Matlab_GUI搭建实验平台,能实时仿真并传递相关计算数据;③ 通过实物仿真需要将计算机与船舶模型连接,并通过串口通信完成数据交互。

1 实验平台设计

1.1 主控界面设计

为使界面使用方便,设计了主控制界面,将仿真所需的功能集成到一个界面中的菜单,主控制界面中用到的组件为Static Text、Axes控件。图1为主控制界面[4]。图2为双泵喷水推进船舶仿真平台总体设计框架图。

图1 主控界面设计示意图

图2 双泵喷水推进船舶仿真平台总体设计框架图

1.2 船舶模型验证界面

船舶模型验证界面中用到的组件为Push Button、Static Text、Edit Text、Radio Button、Axes控件。通过输入的船体参数建立船舶运动控制模型与矢量推力模型,并进行Z型试验和回转试验仿真,将计算结果动态显示到仿真平台上[5]。

回转试验主要包括纵距、回转初径、回转直径、回转时间参数的计算,以及船舶横向速度、纵向速度的实时显示[6],如图3~5所示。

图3 船舶模型验证及操纵性试验动态仿真界面示意图

图4 回转试验详细参数计算界面示意图

图5 Z型试验详细参数计算界面示意图

根据野本方程[7]:

可求取Z型试验操纵性指数K、T。其中:ψ为船舶艏向角;δ为船舶舵角输入;K为船舶Z型试验回转性指数;T为船舶Z型试验应舵指数[8]。将计算结果实时显示在仿真界面中。

1.3 船舶控制器仿真界面

船舶控制器仿真主要包括三类控制器选择:模糊PID控制器、滑模控制器、预测控制器,其中模糊PID控制器用来实现船舶横移任务[9];滑模控制器[10]、预测控制器[11]用来实现船舶保持航向任务。

对于横移试验,需建立模糊PID控制器。在Matlab命令窗口运行Fuzzy函数进入模糊编辑器,并建立FIS文件,选择模糊模型为mamdani模型,即模糊系统的标准模型,根据分析分别增加出2个输入e,ec,3个输出kp、ki、kd,采用模糊逻辑对PID控制增益kp、ki、kd进行在线整定,具体做法是根据系统误差e与误差变化率ec动态调整控制器参数,以提高系统动态响应性能和抗干扰性能[12]。

横移试验是通过调节喷水角度提供可变方向的矢量推力达到船舶横移控制效果。当船舶装配有两台及以上数量的喷水推进器时,可通过各台喷水推进装置的异步操作为船体提供任意方向合力,实现更多形式的运动[13]。本文考虑船舶固定船艏方向的横向和斜向水平移动以及固定船首指向的横向移动,两台推进器的安装位置关于船体中纵剖面对称,通过调节主机转速与喷水角度可实现船舶横移运动控制。通过GUI嵌入Simulink控制器和模型,并结合Push Button、Static Text、Edit Text、Radio Button、Axes等控件实现仿真界面搭建,具体仿真界面见图6。滑模控制器、预测控制器的仿真界面搭建方法与上述方法类似。

图6 船舶固定艏向横移轨迹及姿态动态图

1.4 实物仿真界面

实物仿真需要将计算机与船舶模型连接,它们之间的连接是通过串口通信完成的。因此需要在Matlab下进行串口编程。

在Matlab中用serial函数来创建串口对象,并设置串口波特率、奇偶校验类型、数据位等属性。用fprintf或fwrite函数写数据到设备中,用fgets、fread或readasync函数读取数据到串口。实物仿真界面中用到的组件为:Push Button、Static Text、Edit Text、Radio Button、Axes控件,主要实现航速测试、航向测试、联动测试3个功能,并通过串口返回以模拟动画显示。具体界面如图7所示。

2 实验平台文件封装

喷水推进船舶航行在海域执行任务中,为保证实验平台能够便捷、正常地运行,需要将已经编写的平台代码封装成脱离Matlab环境的exe文件。

运用Matlab自带的LCC编译器,将实验平台源代码及相关函数封装成exe文件;MCR是Matlab的运行环境,对于用不同Matlab版本生成的exe文件,MCR版本也会有不同,因此在程序打包时,将相应版本的MCR一起打包,确保喷水推进船舶航行在海域执行任务中,实验平台能便捷、正常地运行。

图7 实物仿真界面示意图

3 结 语

利用Matlab_GUI技术建立双泵喷水推进船舶仿真平台,实现通过人机界面控制仿真模型,并能进行后处理等功能,形成了一套完整的泵喷水推进船舶仿真软件。通过实验平台的长期运行,可知本文所设计的双泵喷水推进船舶实验平台具有设计简单、可开发性强、操作人性化等优点。

猜你喜欢
控件串口界面
浅谈AB PLC串口跟RFID传感器的通讯应用
国企党委前置研究的“四个界面”
关于.net控件数组的探讨
基于FANUC PICTURE的虚拟轴坐标显示界面开发方法研究
人机交互界面发展趋势研究
数字电源内部数据传输的串口通信方法实现
USB接口的多串口数据并行接收方法探索
基于蓝牙串口适配器的GPS接收机与AutoCAD的实时无线通信
手机界面中图形符号的发展趋向
ASP.NET服务器端验证控件的使用