基于VC的連續(xù)擠壓機主軸轉(zhuǎn)速的動態(tài)曲線的實現(xiàn)_第1頁
基于VC的連續(xù)擠壓機主軸轉(zhuǎn)速的動態(tài)曲線的實現(xiàn)_第2頁
基于VC的連續(xù)擠壓機主軸轉(zhuǎn)速的動態(tài)曲線的實現(xiàn)_第3頁
基于VC的連續(xù)擠壓機主軸轉(zhuǎn)速的動態(tài)曲線的實現(xiàn)_第4頁
基于VC的連續(xù)擠壓機主軸轉(zhuǎn)速的動態(tài)曲線的實現(xiàn)_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

基于VC的連續(xù)擠壓機主軸轉(zhuǎn)速的動態(tài)曲線的實現(xiàn)

摘要本文主要闡述利用VC++及其MSComm控件編程,實現(xiàn)對連續(xù)擠壓機的主軸轉(zhuǎn)速的實時監(jiān)控,并將其以動態(tài)曲線的形式輸出。關鍵字VC++;MSComm控件;連續(xù)擠壓機;動態(tài)曲線

1引言隨著連續(xù)擠壓技術的不斷發(fā)展,連續(xù)擠壓機的自動化控制技術也在不斷的進步,從過去的按鈕操作逐漸發(fā)展為工業(yè)計算機與觸摸屏技術相結(jié)合的可視化操作。對于連續(xù)擠壓機,其主軸的轉(zhuǎn)速的快慢會直接影響產(chǎn)品的質(zhì)量和生產(chǎn)效率,所以,如何能夠準確的監(jiān)測主軸的轉(zhuǎn)速變得十分重要。過去,我們通常憑借經(jīng)驗來調(diào)節(jié)主軸轉(zhuǎn)速,由于在生產(chǎn)過程中,主軸的轉(zhuǎn)速受到許多因素的影響,其實際轉(zhuǎn)速并非我們想要得到理想轉(zhuǎn)速。因此,本文主要利用VC++及其MSComm控件編程,來實現(xiàn)對連續(xù)擠壓機主軸轉(zhuǎn)速的實時監(jiān)控,并利用動態(tài)曲線圖實時輸出。

2程序的實現(xiàn)在實現(xiàn)對主軸轉(zhuǎn)速實時監(jiān)控中,我們采用的是Microsoft公司提供的ActiveX控件MicrosoftCommunicationsControl來實現(xiàn)串口編程,完成對擠壓機的監(jiān)控。MSComm控件必須有一個可以寄身的對話框,然后從對話框工具欄中把控件圖拖入對話框中。在本程序中,動態(tài)數(shù)據(jù)曲線是在窗口的View類中實現(xiàn)的,所以我們要建立一個基于單文檔的MFC應用程序來實現(xiàn)動態(tài)數(shù)據(jù)曲線的顯示。而對話框工具欄上的圖標是不能拖到視圖中,因此我們可以把MSComm控件拖入到單文檔的ABOUT對話框中,進而實現(xiàn)其功能。具體步驟

建立單文檔程序工程并插入MSComm控件利用MFC向?qū)Ы⒒趩挝臋n應用程序VCurve(選擇其基類為CScrollView),然后單擊菜單AddToProject-CommponentsandControls...-RegisteredActiveControls-MicrosoftCommunicationsControl,,在單擊INSERT即可插入MSComm控件。

在ABOUT對話框中拖入MSComm控件在ResourceView中選擇IDD_ABOUTBOX對話框,見MSComm控件圖標拖入對話框中,控件ID號保持缺省的IDC_MSCOMM1。

添加串口事件消息處理函數(shù)OnComm()我們知道,在基于對話框的應用程序中,消息處理函數(shù)的添加都是由MFC的ClassWizard自動實現(xiàn),但在這里我們必須手動添加。

串口的初始化利用ClassWizard為CVCurve類添加消息處理函數(shù)WM_CREATE,利用該函數(shù)來實現(xiàn)串口的初始化。IntCVCurveView::OnCreate(LPCREATESTRUCTlpCreateStruct){m_(NULL,0,CRect(0,0,0,0),this,IDC_MSCOMM1);m_(DK);//選擇端口m_("9600,e,7,1");m_(1);//以二進制方式讀寫數(shù)據(jù)m_(1024);m_(1024);m_(0);m_(1);SetTimer(1,1000,NULL);//定時器1}上述程序中,端口號DK可有操作員自己選擇,這樣就可以避免因端口號固定給工作帶來不便。根據(jù)實際情況,選擇合適的輸入、輸出緩沖區(qū)大小,這里均用1024。設置一個定時器,來實現(xiàn)對主軸轉(zhuǎn)速的實時監(jiān)控。

從串口中接受數(shù)據(jù)并顯示在窗口內(nèi)MSComm控件提供了兩種通信問題的方法:事件驅(qū)動和查詢法。這里我們選用的是事件驅(qū)動方法,它主要是對程序的響應及時,可靠性高。對于MSComm控件的事件,通常在串口事件消息處理函數(shù)OnComm()中進行處理。intCVCurveView::OnComm(){VARIANTinp;COleSafeArraysafearray_inp;if(m_()==2)//事件值為2表示接收緩沖區(qū)內(nèi)有字符{inp=m_();safearray_inp=inp;len=safearray_();for(k=0;klen;k++)safearray_(&k,rxdata+k);//轉(zhuǎn)換為BYTE型數(shù)組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);//提取有效的數(shù)據(jù)m_readstr=m_(2)+m_(2);}readdata=Str2Dec(m_readstr);//把16進制字符串轉(zhuǎn)化為十進制數(shù)itoa(readdata,strs,10);CClientDC*pDC=newCClientDC(this);pDC-TextOut(300,0,m_s);returnreaddata;}在此函數(shù)中,主要是用來從串口中接受數(shù)據(jù),然后取出有效的數(shù)據(jù)顯示在View窗口內(nèi)。上位機從下位機中接收到的是16進制的字符串,在VC++中沒有直接將16進制字符串轉(zhuǎn)化為10進制的函數(shù),所以要調(diào)用Str2Dec()函數(shù)來完成數(shù)據(jù)的轉(zhuǎn)化。

在OnDraw()函數(shù)中實現(xiàn)坐標軸的繪制及速度動態(tài)曲線圖的保存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);}}上述函數(shù)主要實現(xiàn)了坐標軸的繪制,并且為了便于操作人員觀察速度與隨時間的關系,在坐標區(qū)域內(nèi)繪制了實虛相間的平行于坐標軸的等距線。窗口的每次變化都會引起窗口的重繪,導致以前所繪圖形的丟失,所以在此定義了一個通用的CDraw類和一個CPtrArray類型的變量m_ptarray用來保存繪制的曲線。

實現(xiàn)速度的實時監(jiān)控和坐標軸的移動連續(xù)擠壓機在工作中,由于受到外界各種條件例如電動機的電流、所擠壓的材料的打滑等因素,都會引起主軸轉(zhuǎn)速的改變,所以為了更好的監(jiān)視主軸的轉(zhuǎn)速,要不間斷的對它進行數(shù)據(jù)采集。在程序中,通常是定義一個定時器來完成此操作。voidCVCurveView::OnTimer(UINTnIDEvent){switch(nIDEvent){case1:str1=ch1+"0"+"008402"+ch2+"61";//讀取x40-x47的狀態(tài)(X40)m_(COleVariant(str1));Sleep(50);break;case2:ncount++;SetScrollPos(SB_HORZ,ncount*dx);//實現(xiàn)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;}運行上述程序,可以得到如下的結(jié)果:圖中速度曲線隨時間的變化不斷向右延伸,而坐標軸剛好與其相反,相反方向移動。還可以在窗口中直接讀取此時的主軸轉(zhuǎn)速,如圖中的“62”。

3結(jié)論此程序是利用VC++語言編寫,其可靠性已在連續(xù)擠壓機中得到驗證。通過該曲線,我們可以精確的調(diào)節(jié)主軸轉(zhuǎn)速,還可以用來分析因主軸轉(zhuǎn)速問題而帶來的產(chǎn)品缺陷。在實際應用中,此組程序尚需一些改動,比如該曲線圖只能實時觀看,在以后的工作中需要進一步改進。

參考文獻[1]龔建偉等.Vis

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論