VC++铰链四杆机构运动仿真编程示例

上传人:新** 文档编号:456128740 上传时间:2023-09-08 格式:DOCX 页数:11 大小:290.74KB
返回 下载 相关 举报
VC++铰链四杆机构运动仿真编程示例_第1页
第1页 / 共11页
VC++铰链四杆机构运动仿真编程示例_第2页
第2页 / 共11页
VC++铰链四杆机构运动仿真编程示例_第3页
第3页 / 共11页
VC++铰链四杆机构运动仿真编程示例_第4页
第4页 / 共11页
VC++铰链四杆机构运动仿真编程示例_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《VC++铰链四杆机构运动仿真编程示例》由会员分享,可在线阅读,更多相关《VC++铰链四杆机构运动仿真编程示例(11页珍藏版)》请在金锄头文库上搜索。

1、VC+较链四杆机构运动仿真编程示例(基于对话框风格的程序实现)- 較链四杆机构的运动分析原理如图1所示较链四杆机构。已知各杆长1/人,原动件的位置角孙,其角速度少为 常数,且以逆时针方向为正。求解程序:首先建立机构的位置方程式,求出给定01时的构件2、3的位置角0,03。 将位置方程分别对时间/求导一次、二次,得速度方程式和加速度方程式,并求得各构件的 角速度他,令和角加速度乞,。1.位移分析为建立机构的位置方程式,首先画出各构件的 矢量指向(如图1所示)。以X轴正向沿逆时针方 向画出各杆的转角他及2,由矢量封闭 回路ABCD写出矢量方程人+ 4 =匚+3将上述矢量方程写成坐标方程/ COS(

2、P + 人 COS (pr = l4 COS &4 + /3 COS 03“(3-1)sin 0 + 人 sin 0 = l4 sin 04 + /3 sin (p、上述方程的待求量为仍、冷。由于该方程为0,伤的非线性方程,为方便起见,在图1 中加辅助矢量巫,即/,卩。在封闭矢量回路ABD中厶+/ = /4(3-2)(3-3)厶 COS 01 + / COS(P= lq COS &4人 sin 0 + / sin(p= l4 sin 04解得:I = J/f + /: _ 2*4 COS(列 _ &4) / =l2 sin -卩3)/j cot sin( 0)少3 =3 smQ 一血)(3-6

3、)3.加速度分析将式(3-5)对时间求导,并注意到竽=。等y普2,得一厶血 COS -/2 CO 2 COS 02 _厶6 sin 02 = 一&少亍 COS 03 一3 sin3 一厶co sin (p、-12 CO2 sin(p2 +12 s2 cos(p2 = _& j sin (p、+ /3 z cos (p、同样采用坐标旋转法,可求得勺、一 h C0 COS(0 03) /三 Q1 COS(径一卩3)+ 厶 ;l2 sing _3)厶: COS(0 -) + /2 6?2 一 厶; COS(03 4)(3-8)厶 sin(03 一卩2)二. 编程步骤1.在项目类型中选择MFC App

4、Wizaid(exe),项目名取为“FouiEarn在location中指定一个 工作路径用于放置程序文件。2.在程序向导的第1步选择建立一个基于对话框的应用程序,点击Finish结束向导。3. 在对话框窗II布局控件。首先选中己有的静态文本TODO:在这里设置对话框控件”, delete将其删除。从右侧控件工具栏中点击Picture”图片控件,在对话框空白区域拖出一 个矩形窗II,右键点击控件边框,弹出属性对话框,设定其Type属性为Rectangle, color 为white,其余不变。再点击Group Box (成组框)控件,在对话框空白区域拖出一个矩形 窗II,将其caption改为

5、“输入四杆机构参数”,并在其中布置四个静态文本控件和四个编辑 框控件,分别对应输入四杆机构的四个杆长尺寸。为各个编辑框控件指定控件的ID号:AB 杆:IDC_AB;EC 杆:IDC_BC:CD 杆:IDC_CD;AD 杆:IDC.ADoGeneral| Styles | Extended Styles |ID: |DC_DISPLAY9 VisibleDisabledI GroupF Tabstog厂 Help IDType:Iniayc:Color:4. 在成组框的卜方添加2个按钮,其caption分别为“开始运动”和“停止运动S其ID分 别为LDC_START和LDC_STOP。将已有的确

6、定”按钮拖至下方,caption改为退出”, 并删除原有的“取消”按钮。这样对话框界面就设计好了。后续可以根据需要添加其他功能 按钮等。5. 为对话框中的控件添加相应的成员变量:点击菜单“Vuv -ClassWizardv,点击Member Variables标签项,为对话框中的控件添加对应的成员变量如下图所示。Message Maps Member Variables Automation ActiveX Events j Class InfoOK |Cancel I6. 四杆机构参数包括:各杆长尺寸ab, be, cd, ad,曲柄位置角、连杆位置角化、摇杆 位置角卩3、机架倾角弘。在CF

7、ouiBarDlg类中添加成员变量angle 1, angle2, angle3, sita4, 分别对应为AB、EC、CD、AD四杆的位置角,类型均设置为double。7. 初始化四杆机构的参数:在CFourBaiDlg类的OiiInitDialogO函数中添加初始化代码:/ TODO: Add extra mitialization herem_ab=100;m_bc=250;m_cd=200;m_ad=200;sita4=0;angle 1=45;aiigle2=0;aiigle3=0;UpdateData(FALSE); 将初始设定的杆长尺寸填入编辑框中显示8. 在CFouiBaiDl

8、g类中添加成员函数DrawFombar(),类型为void。将来在这个函数中实现 四杆机构的参数计算及绘图。Add Besber FunctionPFI39. 在FourBaiDlg.cpp前面加上科学计算的头文件,这样就可以支持三角函数的计算。存include stdafx.hH存include FourBaihn存include HFourBaiDlg.hninclude math.h10. 在CFouiBarDlg类的函数DiawFourbar()中添加语句,用来计算并画四杆机构图形。 void CFourBaiDlg:DrawFourbai()UpdateData(TRUE);获取对话

9、框的图片控件的位置大小,并准备在其中绘图CRect m_rect;GetDlgItem(IDC_DISPLAY)-GetWindowRect(&m_rect);ScreenToClient(&DLect);获得绘图设备对彖,并设置绘图区域人小,范I制及原点CClientDC dc(this);dc.SetMapMode(MMJSOTROPIC);dc.SetWiiidowExt(CSize(500,500);dc.SetViewpoitExt(m_rect.right,-m_iect. bottom); dc.SetViewpoilOig(ni_iect.right/24n_,rect.bot

10、tonV2+50);当参数改变时重绘窗口RediawWindow (&m_iect);计算运动参数,此部分内容与机械原理教材计算方法完全一致。double pi=3.1415926; / 定义圆周率兀double bx,bv,cx,cy; 较链 E、C 点的坐标double L. fai, aa, bb; 定义中间变量aiiglel=anglel*pi/180;/W角度值转化为弧度值sita4=sita4*pi/180;计算辅助矢量BD的模与位置角L = sqrt(m_ab * m_ab + m_ad * m_ad - 2 * m_ab * m_ad * cos(anglel - sita4*

11、pi/180);foi = atan(m_ad * sin(sita4) - m_ab * sin(aiiglel) / (m_ad * cos(sita4) - m_ab * cos(anglel);aa = (m_bc * m_bc - L * L - m_cd * m_cd) / (2 * L * m_cd);angle3 = acos(aa) + fai;bb = (L * sin(fhi) + m_cd * sin(angle3) / (L * cos(fai) + m_cd * cos(angle3); angle2 = atan(bb);if(bb0)iaiigle2 = aii

12、gle2 + pi;计算B点和C点的坐标bx = m_ab * cos(anglel);by = m_ab * siii(anglel);ex = bx + m_bc * cos(angle2);cy = by + m_bc * siii(angle2);计算完成,卜面设定画图需要的参数CPen NewPenl; 声明画笔对彖CPen* pOldPen; 保存原先画笔的指针初始化实线、5像素宽的红色画笔NewPen 1 .CieatePen(PS_SOLID, 5 .RGB (255,0.0);/将画笔选入设备对彖pOldPen=dc.SelectObject(&NewPenl);画四杆机构,

13、分成四个杆和对应的较链进行绘制画AB杆dc.MoveTo(O.O);dc.LineTo(bx.by);画BC杆dc.MoveTo(bx,by);dc.LineTo(cx.cy);de.Ellipse(bx-10,by-10,bx+10,by+10); /画转动副 B画CD杆dc.MoveTo(cx,cy);de .LineTo(m_ad ,0);dc.Ellipse(cx-lO.cy-10,cx+10,cy+10); 画转动副 C画AD杆dc.MoveTo(O.O);de .LineTo(m_ad ,0);dc.Elhpse(-10r1040J0);画转动副 Adc.Ellipse(m_ad-l0rl0jn_ad+10,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号