MATLAB 是 Mathworks 公司于 1982 年推出的一套功能强大的工程计算软件, 广泛应用于自动控制、 机械设计、 流体力学和数理统计等工程领域, 被誉为巨人肩上的工具。它集数值分析、 矩阵运算、 信号处理和图形显示于一体, 构成了一个方便的、 界面友好的用户环境。
所谓图形用户界面[3], 简称为GUI(Graphic User Interface) , 是指包含了各种图形控制对象, 如图形窗口、菜单、对话框以及文本等内容的用户界面。利用这些用户界面, 用户可以和计算机之间进行信息交流。用户可以通过某种方式来选择或者激活这些图形对象, 来运行一些特性的M 文件。最常见的激活方式是利用鼠标或者其它设备来点击这些对象。对于一个用户来说, 图形用户界面就是他所面对的应用程序, 对图形界面的操作直接影响应用程序的应用前途。对于以往专门用于科学计算的语言, 如FORTRAN 语言等, 编写图形界面的功能较弱, 因而用其开发的程序, 其界面往往不够友好, 用户使用起来很不方便。而目前流行的可视化语言, 对科学计算的功能又相对弱一些。MATLAB提供了非常强大的编写图形用户界面的功能。用户只和前台界面下的控件发生交互,而所有运算、绘图等内部操作都封装在内部,终端用户不需要区追究这些复杂过程的代码。图形用户界面大大提高用户使用MATLAB程序的易用性。因此,学习MATLAB图形用户界面编程,即GUI程序的创建,是MATLAB编程用户应该掌握的重要一环。
对于一个MATLAB 的图形用户界面, 它的设计过程可以分为两个部分: (1)用户界面的外观设计。在这里, 主要是通过不同的对话框、按钮、文本框等许多工具的使用, 设计出一个图形用户界面。同时也应搞清楚这个图形界面的功能是什么, 也即在图形界面上的操作会引发什么样的结果。
(2)图形界面的完成。在这里, 用户将根据在外观设计阶段所确定的图形界面的功能, 针对各个不同的图形对象来编写出能够实现该功能的函数代码, 确保这个图形界面能够完成所预定的功能。
工程人员通过使用 MATLAB提供的工具箱, 可以高效求解复杂的工程问题, 并可以对系统进行动态仿真, 用强大的图形功能对数值计算结果进行显示。笔者在MATLAB环境下开发了一个平面四杆机构运动分析系统 ,只要在系统图形界面的文本编辑框中交互地输入四杆机构各构件的参数和原动件的角速度 ,就能迅速地输出当原动件转动1周时从动件的位移、速度、加速度的变化规律曲线 ,具有融计算与绘图为一体 ,操作简便、界面友好 ,计算速度快 ,准确性高的特点。本文以曲柄摇杆机构为分析对象,借助MATLAB软件进行运动分析。曲柄摇杆机构是平面四连杆机构中最基本的结构,它可以用来实现转动和摆动之间运动形式的转换或传递动力。对曲柄摇杆机构进行运动分析的主要内容是:在机构尺寸参数已知的情况下,假定曲柄做匀速转动,从运动几何关系上分析连杆和
2
摇杆的角位移、角速度、角加速度等运动参数的变化情况。并根据机构闭环矢量方程计算从动件的位移偏差。
本课题的主要内容是平面四杆机构的连杆曲线及轨迹综合分析系统的开发,其意义在于:
一、深入研究计算机在设计和仿真连杆机构曲线方面的应用,从而指导实践; 二、总结出四杆机构轨迹综合的理论基础,从而指导多杆或复杂的低副平面机构的综合。
三、综合运用MATLAB软件强大的计算功能与图形界面开发系统,设计出可以方便快捷实现机构分析的应用系统
2 平面连杆机构的设计分析
2.1 平面四连杆机构的运动分析[4]
在平面四杆机构中,其具有曲柄的条件为:
a.各杆的长度应满足杆长条件,即:
最短杆长度+最长杆长度≤其余两杆长度之和。
b.组成该周转副的两杆中必有一杆为最短杆,且其最短杆为连架杆或机架
(当最短杆为连架杆时,四杆机构为曲柄摇杆机构;当最短杆为机架时,则为双曲柄机构)。
在如下图1所示的曲柄摇杆机构中,构件AB为曲柄,则B点应能通过曲柄与连杆两次共线的位臵。
2.2 机构的数学模型的建立[6] 2.2.1 建立机构的闭环矢量位臵方程
图1 四杆机构简图
[8]
3
在用矢量法建立机构的位臵方程时,需将构件用矢量来表示,并作出机构的封闭矢量多边形。如图1所示,先建立一直角坐标系。设各构件的长度分别为L1、
L2、L3、L4,其方位角为?1、?2、?3、?4。以各杆矢量组成一个封闭矢 量多边形,即ABCDA。其个矢量之和必等于零。即:
????????????L2?L3?L1?L4 式1
式1 为图1所示四杆机构的封闭矢量位臵方程式。对于一个特定的四杆机构,其各构件的长度和原动件2的运动规律,即?2为已知,而?1=0,故由此矢量方程可求得未知方位角?3、?4。
角位移方程的分量形式为:
?L2cos?2?L3cos?3?L1cos?1?L4cos?4???Lsin??Lsin??Lsin??Lsin?2331144? 式2 ?2闭环矢量方程分量形式对时间求解一阶导数,就能够得到角速度方程,如下
所示:
??L3?3sin?3?L4?4sin?4?L2?2sin?2???L?cos??L?cos???L?cos?3444222? 式3 ?33其矩阵形式为:
??L3sin?3L4sin?4???3???2L2sin?2????????Lcos??Lsin???Lcos??344??4??3?422? 式4
联立式3两公式可求得:
?3???2L2sin(?2??4)/[L3sin(?3??4)] 式5 ?4??2L2sin(?2??3)/[L4sin(?4??3)] 式6
闭环矢量方程分量形式对时间求解二阶导数,得到角加速度方程矩阵形式[11]
为:
??L3sin?3L4sin?4???3?????Lcos??Lsin?344???4??3??2L2sin?2??22L2cos?2??32L3cos?3??42L4cos?4??????Lsin???2Lsin???2Lsin???2Lsin???222233333444?? 式7
由式7可求得加速度:
4
??22L2cos(?2??4)??32L3cos(?3??4)??42L4?3?L4sin(?3??4) 式8
?22L2cos(?2??3)??42L4cos(?4??3)??32L3?4?L4sin(?4??3) 式9
注:式1--式9中,i(i=1,2,3,4)分别表示机架1、曲柄2、连杆3、摇杆4的长度;(i=1,2,3,4)是各杆与x轴的正向夹角,逆时针为正,顺时针为负,单位为rad;
L?i?i是各杆
d?id?id2?i?i??i???dt,单位为rad/s; i为各杆的角加速度,dtdt,单位为的角速度,
rad/s2。
2.2.2 求解方法
应用数学方法对以上各式进行求解,方法如下:
(1)求导中应用了下列公式:
?dsin?d???cos???cos??dt?dt??d??dcos????sin????sin???dtdt??'??uv??vu'?uv'????? 式10
(2)在角位移方程分量形式(式2)中,由于假定机架为参考系,矢量1与x轴重合,?1=0,则有非线性方程组:
?f1(?3,?4)?L2cos?2?L3cos?3?L1?L4cos?4?0???f(?,?)?Lsin??Lsin??Lsin??0223344?234? 式11
可以借助MATLAB自带的fsolve函数求出连杆3的角位移?3和摇杆4的角位移?4。
(3)求解具有n个未知量xi(i=1,2,…,n)的线性方程组:
?a11x1?a12x2???a1nxn?b1??ax?ax???ax?b??2111221nn2?????????an1x1?an2x2???annxn1?bn??? 式12
5
上式可以表示为系列矩阵A,是一个n*n阶方阵,可表示如下,并运用逆矩阵知识:
?a11?a1n???A???????a??amn??m1 式13
A的逆矩阵为A?1;
常数项b是一个n维矢量:
b?(b1,b2,?,bn)T 式14
因此,线性方程组解的矢量为:
x?(x1,x2,?,xn)T?ATb 式15 式11是求解连杆3和摇杆4角速度和角加速度的依据。 以上各式既为求解平面连杆机构运动规律的数学模型。
3 基于MATLAB程序设计[12]
程序设计是编程者实现算法,用编程语言表达数学模型的过程,或者说是现实问题求解的思维活动代码化的过程。也就是解决如何组织MATLAB的结构. 根据以上数学模型,选择优化算法,创建程序流程图,运用MATLAB语言,编写MATLAB程序,并在MATLAB6.5中调试运行,将这个实际问题转化为编程语言。 3.1 程序流程
按照现代程序设计的观点,算法(Algorithm)是一系列解决问题的清晰指令. 算法是一个程序的灵魂,一个准确无误的算法是程序设计成功的关键。任何算法功能都能够通过三种基本结构:顺序结构,选择结构,循环结构的组合来实现。为了更加方便清楚准确的编写程序,我们首先把算法用流程图的方式来表示出来。
程序流程图是人们对解决问题的方法、思路或算法的一种描述。采用简单规范的符号,画法简单, 结构清晰,逻辑性强, 便于描述,容易理解综合运用三种逻辑结构,并且仔细推算,以保证算法精确,节省空间和时间,以及达到高效率。
程序流程图如图2所示。
6