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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、基于VC的繼續(xù)擠壓機(jī)主軸轉(zhuǎn)速的動(dòng)態(tài)曲線的實(shí)現(xiàn)        摘  要 本文首要論述 利用    VC+及其MSComm控件編程,實(shí)現(xiàn)對繼續(xù)擠壓機(jī)的主軸轉(zhuǎn)速的實(shí)時(shí)監(jiān)控,并將其以動(dòng)態(tài)曲線的情勢 輸出。     要害 字 VC+;MSComm控件;繼續(xù)擠壓機(jī);動(dòng)態(tài)曲線 1 引言    隨著繼續(xù)擠壓技巧 的不斷發(fā)展,繼續(xù)擠壓機(jī)的主動(dòng) 化把持 技巧 也在不斷的進(jìn)步   

2、0;,從過去的按鈕操作逐漸發(fā)展為工業(yè)盤算 機(jī)與觸摸屏技巧 相聯(lián)合 的可視化操作。對于繼續(xù)擠壓機(jī),其主軸的轉(zhuǎn)速的快慢會(huì)直接影響產(chǎn)品的質(zhì)量和生產(chǎn)效率    ,所以,如何能夠正確 的監(jiān)測主軸的轉(zhuǎn)速變得十分首要 。過去,我們通常憑借經(jīng)驗(yàn)來調(diào)節(jié)主軸轉(zhuǎn)速,由于在生產(chǎn)歷程 中,主軸的轉(zhuǎn)速受到許多因素的影響,其實(shí)際轉(zhuǎn)速并非我們想要得到理想    轉(zhuǎn)速。因此,本文首要利用    VC+及其MSComm控件編程,來實(shí)現(xiàn)對繼續(xù)擠壓機(jī)主軸轉(zhuǎn)速的實(shí)時(shí)監(jiān)控,并利用   &#

3、160;動(dòng)態(tài)曲線圖實(shí)時(shí)輸出。2  程序的實(shí)現(xiàn)    在實(shí)現(xiàn)對主軸轉(zhuǎn)速實(shí)時(shí)監(jiān)控中,我們采納 的是Microsoft公司供給 的ActiveX控件MicrosoftCommunicationsControl來實(shí)現(xiàn)串口編程,完成對擠壓機(jī)的監(jiān)控。MSComm控件必須    有一個(gè)可以寄身的對話框,然后從對話框工具欄中把控件圖拖入對話框中。在本程序中,動(dòng)態(tài)數(shù)據(jù)曲線是在窗口的View類中實(shí)現(xiàn)的,所以我們要建立    一個(gè)基于單文檔的MFC利用 程序來實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù)曲線的顯示。而對話框工具欄

4、上的圖標(biāo)是不能拖到視圖(View)中,因此我們可以把MSComm控件拖入到單文檔(SDI)的ABOUT對話框中,進(jìn)而實(shí)現(xiàn)其功效 。具體步驟如下:2.1  建立    單文檔程序工程并插入MSComm控件    利用    MFC向?qū)Ы?#160;   基于單文檔利用 程序VCurve(選擇其基類為CScrollView),然后單擊菜單Add To Project->Commponents and Controls.->Registe

5、red Active Controls->Microsoft Communications Control,V6.0,在單擊INSERT即可插入MSComm控件。2.2  在ABOUT對話框中拖入MSComm控件    在ResourceView中選擇IDD_ABOUTBOX 對話框,見MSComm控件圖標(biāo)拖入對話框中,控件ID號(hào)維持 缺省的IDC_MSCOMM1。2.3  添加串口事件消息    處理    函數(shù)OnComm()  

6、60; 我們知道,在基于對話框的利用 程序中,消息    處理    函數(shù)的添加都是由MFC的ClassWizard主動(dòng) 實(shí)現(xiàn),但在這里我們必須    手動(dòng)添加。2.4  串口的初始化    利用    ClassWizard為CVCurve類添加消息    處理    函數(shù)WM_CREATE,利用 

7、0;  該函數(shù)來實(shí)現(xiàn)串口的初始化。Int CVCurveView:OnCreate(LPCREATESTRUCT lpCreateStruct)          m_mscomm.Create(NULL,0,CRect(0,0,0,0),this,IDC_MSCOMM1);         m_mscomm.SetCommPort(DK);/選擇端口     

8、60;   m_mscomm.SetSettings("9600,e,7,1");         m_mscomm.SetInputMode(1); /以二進(jìn)制法子    讀寫數(shù)據(jù)         m_mscomm.SetInBufferSize(1024);        

9、m_mscomm.SetOutBufferSize(1024);              m_mscomm.SetInputLen(0);       m_mscomm.SetRThreshold(1);         SetTimer(1,1000,NULL);/定時(shí)器1       

10、;       上述程序中,端口號(hào)DK可有操作員自己選擇,這樣就可以避免因端口號(hào)固定給工作帶來不便。根據(jù)    實(shí)際情況    ,選擇適宜 的輸入、輸出緩沖區(qū)大小,這里均用1024。設(shè)置一個(gè)定時(shí)器,來實(shí)現(xiàn)對主軸轉(zhuǎn)速的實(shí)時(shí)監(jiān)控。2.5  從串口中接管數(shù)據(jù)并顯示在窗口內(nèi)    MSComm控件供給 了兩種通信    問題的法子    :事件驅(qū)動(dòng)和查詢法

11、。這里我們選用的是事件驅(qū)動(dòng)法子    ,它首要是對程序的響應(yīng)及時(shí),可靠性高。對于MSComm控件的事件,通常在串口事件消息    處理    函數(shù)OnComm()中進(jìn)行處理    。int CVCurveView:OnComm()VARIANT inp;COleSafeArray safearray_inp;         if(m_mscomm.GetC

12、ommEvent()=2)  /事件值為2表現(xiàn) 接管 緩沖區(qū)內(nèi)有字符inp=m_mscomm.GetInput();  safearray_inp=inp;        len=safearray_inp.GetOneDimSize();for(k=0;k<len;k+)           safearray_inp.GetElement(&k,rxdata+k);/轉(zhuǎn)換為BYTE型數(shù)組f

13、or(k=0;k<len;k+)                         BYTE bt=*(int*)(rxdata+k);                  strtemp.Format("%

14、c",bt);           m_str+=strtemp;                      n1=m_str.Find(0x02);n2=m_str.Find(0x03);for(n1=n1+1;n1<n2;n1+)m_readstr+=m_str.GetAt(n1

15、);/提取有效的數(shù)據(jù)m_readstr=m_readstr.Right(2)+m_readstr.Left(2);        readdata=Str2Dec(m_readstr);/把16進(jìn)制字符串轉(zhuǎn)化為十進(jìn)制數(shù)      itoa(readdata,strs,10);           CClientDC *pDC=new CClientDC(this);  pDC->TextOut(300

16、,0,m_s);         return readdata;            在此函數(shù)中,首要是用來從串口中接管數(shù)據(jù),然后取出有效的數(shù)據(jù)顯示在View 窗口內(nèi)。上位機(jī)從下位機(jī)中接管 到的是16進(jìn)制的字符串,在VC+ 中沒有直接將16進(jìn)制字符串轉(zhuǎn)化為10進(jìn)制的函數(shù),所以要調(diào)用Str2Dec()函數(shù)來完成數(shù)據(jù)的轉(zhuǎn)化。2.6  在OnDraw()函數(shù)中實(shí)現(xiàn)坐標(biāo)軸的繪制及速度動(dòng)態(tài)曲線圖的保存  

17、;  void CVCurveView:OnDraw(CDC* pDC)         /繪制Y軸 pDC->MoveTo(int)x0,0);pDC->LineTo(int)x0,rect.bottom);/繪制X軸pDC->MoveTo(int)x0,(int)y0);pDC->LineTo(sz.cx,(int)y0);         /繪制Y軸方向的平行線int index=0;for(in

18、t i=0;i<160;i+)/繪制垂直實(shí)、虛等距線           index=!index;           if(index)                      

19、         m_oldpen=pDC->SelectObject(&m_pen);                                    else

20、0;                              p_pen=pDC->SelectObject(&pen);                

21、              pDC->MoveTo(int)x0+(i+1)*dx,0);            pDC->LineTo(int)x0+(i+1)*dx,rect.bottom);           if(i>0&&i

22、<20)                          pDC->MoveTo(int)x0,rect.bottom-(int)y0-i*dx);               pDC->LineTo(int)sz.cx

23、,rect.bottom-(int)y0- i*dx);                     pDC->MoveTo(int)x0,(int)y0+i*dx);                    pDC-&

24、gt;LineTo(int)sz.cx,(int)y0+i*dx);                               for(int j=0;j<m_ptarray.GetSize();j+)/速度曲線的保存    pDC->MoveTo(CDr

25、aw*)m_ptarray.GetAt(j)->m_ptorig);pDC->LineTo(CDraw*)m_ptarray.GetAt(j)->m_ptend);    上述函數(shù)首要實(shí)現(xiàn)了坐標(biāo)軸的繪制,并且為了便于操作人員觀察速度與隨光陰 的關(guān)系,在坐標(biāo)區(qū)域內(nèi)繪制了實(shí)虛相間的平行于坐標(biāo)軸的等距線。窗口的每次變更 都會(huì)引起窗口的重繪,導(dǎo)致以前所繪圖形的喪失 ,所以在此定義了一個(gè)通用的CDraw類和一個(gè)CPtrArray類型的變量m_ptarray用來保存    繪制的曲線。2.7  實(shí)現(xiàn)速度的實(shí)時(shí)

26、監(jiān)控和坐標(biāo)軸的移動(dòng)    繼續(xù)擠壓機(jī)在工作中,由于受到外界各種條件例如電動(dòng)機(jī)的電流、所擠壓的材料    的打滑等因素,都會(huì)引起主軸轉(zhuǎn)速的轉(zhuǎn)變 ,所覺得了更好的監(jiān)督 主軸的轉(zhuǎn)速,要不間斷的對它進(jìn)行數(shù)據(jù)采集。在程序中,通常是定義一個(gè)定時(shí)器來完成此操作。void CVCurveView:OnTimer(UINT nIDEvent) switch(nIDEvent)case 1:str1=ch1+"0"+"008402"+ch2+"61"   

27、   /讀取x40-x47的狀態(tài)    (X40)  m_mscomm.SetOutput(COleVariant(str1);   Sleep(50);        break;case 2:     ncount+;SetScrollPos(SB_HORZ,ncount*dx);/實(shí)現(xiàn)y坐標(biāo)軸移動(dòng)InvalidateRect(CRect(0,0,cx,cy);pt=GetScrollPosition();

28、60;        CClientDC *pDC=new CClientDC(this);x1+=dx;x_orig=x1+x0-dx;y=rect.bottom-y0-readdata;if(i=0)/繪制速度曲線圖           y_orig=y;           pDC->MoveTo(int)x0-pt.x,(int)y_orig);m_ptorig.x=(int)x_orig;m_ptorig.y=(int)y_orig;if(i!=0)           pDC->MoveTo(int)x_orig-pt.x,(int)y_or

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論