版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于VC的连续挤压机主轴转速的动态曲线的实现
摘要本文主要阐述利用VC++及其MSComm控件编程,实现对连续挤压机的主轴转速的实时监控,并将其以动态曲线的形式输出。关键字VC++;MSComm控件;连续挤压机;动态曲线
1引言随着连续挤压技术的不断发展,连续挤压机的自动化控制技术也在不断的进步,从过去的按钮操作逐渐发展为工业计算机与触摸屏技术相结合的可视化操作。对于连续挤压机,其主轴的转速的快慢会直接影响产品的质量和生产效率,所以,如何能够准确的监测主轴的转速变得十分重要。过去,我们通常凭借经验来调节主轴转速,由于在生产过程中,主轴的转速受到许多因素的影响,其实际转速并非我们想要得到理想转速。因此,本文主要利用VC++及其MSComm控件编程,来实现对连续挤压机主轴转速的实时监控,并利用动态曲线图实时输出。
2程序的实现在实现对主轴转速实时监控中,我们采用的是Microsoft公司提供的ActiveX控件MicrosoftCommunicationsControl来实现串口编程,完成对挤压机的监控。MSComm控件必须有一个可以寄身的对话框,然后从对话框工具栏中把控件图拖入对话框中。在本程序中,动态数据曲线是在窗口的View类中实现的,所以我们要建立一个基于单文档的MFC应用程序来实现动态数据曲线的显示。而对话框工具栏上的图标是不能拖到视图中,因此我们可以把MSComm控件拖入到单文档的ABOUT对话框中,进而实现其功能。具体步骤
建立单文档程序工程并插入MSComm控件利用MFC向导建立基于单文档应用程序VCurve(选择其基类为CScrollView),然后单击菜单AddToProject-CommponentsandControls...-RegisteredActiveControls-MicrosoftCommunicationsControl,,在单击INSERT即可插入MSComm控件。
在ABOUT对话框中拖入MSComm控件在ResourceView中选择IDD_ABOUTBOX对话框,见MSComm控件图标拖入对话框中,控件ID号保持缺省的IDC_MSCOMM1。
添加串口事件消息处理函数OnComm()我们知道,在基于对话框的应用程序中,消息处理函数的添加都是由MFC的ClassWizard自动实现,但在这里我们必须手动添加。
串口的初始化利用ClassWizard为CVCurve类添加消息处理函数WM_CREATE,利用该函数来实现串口的初始化。IntCVCurveView::OnCreate(LPCREATESTRUCTlpCreateStruct){m_(NULL,0,CRect(0,0,0,0),this,IDC_MSCOMM1);m_(DK);//选择端口m_("9600,e,7,1");m_(1);//以二进制方式读写数据m_(1024);m_(1024);m_(0);m_(1);SetTimer(1,1000,NULL);//定时器1}上述程序中,端口号DK可有操作员自己选择,这样就可以避免因端口号固定给工作带来不便。根据实际情况,选择合适的输入、输出缓冲区大小,这里均用1024。设置一个定时器,来实现对主轴转速的实时监控。
从串口中接受数据并显示在窗口内MSComm控件提供了两种通信问题的方法:事件驱动和查询法。这里我们选用的是事件驱动方法,它主要是对程序的响应及时,可靠性高。对于MSComm控件的事件,通常在串口事件消息处理函数OnComm()中进行处理。intCVCurveView::OnComm(){VARIANTinp;COleSafeArraysafearray_inp;if(m_()==2)//事件值为2表示接收缓冲区内有字符{inp=m_();safearray_inp=inp;len=safearray_();for(k=0;klen;k++)safearray_(&k,rxdata+k);//转换为BYTE型数组for(k=0;klen;k++){BYTEbt=*(int*)(rxdata+k);("%c",bt);m_str+=strtemp;}n1=m_(0x02);n2=m_(0x03);for(n1=n1+1;n1n2;n1++)m_readstr+=m_(n1);//提取有效的数据m_readstr=m_(2)+m_(2);}readdata=Str2Dec(m_readstr);//把16进制字符串转化为十进制数itoa(readdata,strs,10);CClientDC*pDC=newCClientDC(this);pDC-TextOut(300,0,m_s);returnreaddata;}在此函数中,主要是用来从串口中接受数据,然后取出有效的数据显示在View窗口内。上位机从下位机中接收到的是16进制的字符串,在VC++中没有直接将16进制字符串转化为10进制的函数,所以要调用Str2Dec()函数来完成数据的转化。
在OnDraw()函数中实现坐标轴的绘制及速度动态曲线图的保存voidCVCurveView::OnDraw(CDC*pDC){//绘制Y轴pDC-MoveTo((int)x0,0);pDC-LineTo((int)x0,);//绘制X轴pDC-MoveTo((int)x0,(int)y0);pDC-LineTo(,(int)y0);//绘制Y轴方向的平行线intindex=0;for(inti=0;i160;i++)//绘制垂直实、虚等距线{index=!index;if(index){m_oldpen=pDC-SelectObject(&m_pen);}else{p_pen=pDC-SelectObject(&pen);}
pDC-MoveTo((int)x0+(i+1)*dx,0);pDC-LineTo((int)x0+(i+1)*dx,);if(i0&&i20){pDC-MoveTo((int)x0,(int)y0-i*dx);pDC-LineTo((int),(int)y0-i*dx);pDC-MoveTo((int)x0,(int)y0+i*dx);pDC-LineTo((int),(int)y0+i*dx);}}for(intj=0;jm_();j++)//速度曲线的保存{pDC-MoveTo(((CDraw*)m_(j))-m_ptorig);pDC-LineTo(((CDraw*)m_(j))-m_ptend);}}上述函数主要实现了坐标轴的绘制,并且为了便于操作人员观察速度与随时间的关系,在坐标区域内绘制了实虚相间的平行于坐标轴的等距线。窗口的每次变化都会引起窗口的重绘,导致以前所绘图形的丢失,所以在此定义了一个通用的CDraw类和一个CPtrArray类型的变量m_ptarray用来保存绘制的曲线。
实现速度的实时监控和坐标轴的移动连续挤压机在工作中,由于受到外界各种条件例如电动机的电流、所挤压的材料的打滑等因素,都会引起主轴转速的改变,所以为了更好的监视主轴的转速,要不间断的对它进行数据采集。在程序中,通常是定义一个定时器来完成此操作。voidCVCurveView::OnTimer(UINTnIDEvent){switch(nIDEvent){case1:str1=ch1+"0"+"008402"+ch2+"61";//读取x40-x47的状态(X40)m_(COleVariant(str1));Sleep(50);break;case2:ncount++;SetScrollPos(SB_HORZ,ncount*dx);//实现y坐标轴移动InvalidateRect(CRect(0,0,cx,cy));pt=GetScrollPosition();CClientDC*pDC=newCClientDC(this);x1+=dx;x_orig=x1+x0-dx;y=;if(i==0)//绘制速度曲线图{y_orig=y;pDC-MoveTo((int),(int)y_orig);}m_=(int)x_orig;m_=(int)y_orig;if(i!=0)pDC-MoveTo((int)x_,(int)y_orig);y=;x_end=x1+x0;y_end=y;pDC-LineTo((int)x_,(int)y_end);x_orig=x_end;y_orig=y_end;i=i++;m_=(int)x_end;m_=(int)y_end;CDraw*p_draw=newCDraw(m_ptorig,m_ptend);m_(p_draw);break;}运行上述程序,可以得到如下的结果:图中速度曲线随时间的变化不断向右延伸,而坐标轴刚好与其相反,相反方向移动。还可以在窗口中直接读取此时的主轴转速,如图中的“62”。
3结论此程序是利用VC++语言编写,其可靠性已在连续挤压机中得到验证。通过该曲线,我们可以精确的调节主轴转速,还可以用来分析因主轴转速问题而带来的产品缺陷。在实际应用中,此组程序尚需一些改动,比如该曲线图只能实时观看,在以后的工作中需要进一步改进。
参考文献[1]龚建伟等.Vis
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 池河镇七年级历史下册 第二单元 辽宋夏金元时期:民族关系发展和社会变化 第7课 辽、西夏与北宋的建立教案1 新人教版
- 八年级地理上册 3.1自然资源的基本特征教案 (新版)新人教版
- 2024-2025学年高中物理 第二章 交变电流 第07节 远距离输电教案 粤教版选修3-2
- 2024-2025学年高中物理 第七章 机械能守恒定律 4 重力势能(1)教案 新人教版必修2
- 江苏省海安县实验中学高中体育 耐久跑教案2 苏教版
- 八年级英语上册 Unit 3 Families Celebrate Together Lesson 15 A Present for Li Ming教案 (新版)冀教版
- 2024-2025学年高中生物下学期《基因指导蛋白质的合成》教学设计
- 运输车贷款购销合同(2篇)
- 病毒预防+课件
- 第13课《唐诗五首·野望》八年级语文上册精讲同步课堂(统编版)
- 机械设备定期检查维修保养使用台账
- 丽声北极星分级绘本第四级上 Stop!Everyone Stop!教学设计
- 小学科学教育科学三年级上册天气《认识气温计》教学设计
- 希尔顿酒店市场营销环境的swot分析 2
- 消化道穿孔课件
- 液化气站气质分析报告管理制度
- 可编辑修改中国地图模板
- 水务集团有限公司档案管理制度资料
- 人教版小学数学一年级上册20以内加减法口算题汇编
- 为先祖立碑祭文五篇
- DBJ50T-232-2016 建设工程监理工作规程
评论
0/150
提交评论