12.PMAC上位機-中斷通訊(下位機通知上位機)

來源:互聯網
上載者:User

標籤:pmacgetreponse   pmac   通訊   硬體   編程   

之前說過,上位機控制硬體都是通過發送指令進行的,這是單向的。那麼反過來,下位機硬體給上位機發送指令怎麼才能實現呢?對於PMAC來說,最常見的情況就是,當PMAC一次運動完成時通知當前PC程式運動已完成。


1.下位機通知上位機原理


如所示,


PC給PMAC發送指令控制它做什麼,當運動程式完成後中斷通知上位機,在中斷的同時發送一個標識P100表明完成的程式號,這個標明到底是1號軸運動完,還是是2號軸運動完。在PC端有一個中斷回呼函數,下位機發送中斷後,會自動跳轉到該函數中,中斷函數接受中斷,根據標識P100來決定不同的情況不同的處理。

通俗來說,就是如下流程:

PC->PMAC:發送指令,告訴它做什麼(&1b40r)PMAC:做完了,等待PC處理完前一個通知(While (M613 = 1)  wait)PMAC->PC:某某事做完了,PC你就看著處理吧(P100=1 M613=1)PC:針對PMAC通知的事判斷屬於什麼類型並處理(根據P100判斷)PC->PMAC:處理完了,下位機可以發下一個通知訊息了(P100=0 M613=0)

如所示,M613這個是用硬體跳線配置的,指定當前中斷響應通道,具體的設定在這裡。P100是我們指定的上下位機通訊變數,這個是自己定義的,也可以是P1/P2/P3等。


2.下位機代碼

&1CLOSE ;確認所有緩衝區被關閉OPEN PROG 40CLEARTA(200)TS(20)F(30)INCLinearX(10) Y(40)dwell 0;中斷髮送程式段While (M613 = 1)  wait  ;等待上一次中斷響應處理完成P100=1;標明當前完成的程式,可為0、1、2等自訂的值M613=1;向上位機發送中斷CLOSE

3.上位機處理代碼

註冊中斷處理函數:

BOOL CInterruptDlg::ConnectPmac(){//連結Pcomm32.dll函數庫,注意引入myRuntimeLink標頭檔if (NULL == PmacRuntimeLink(PMAC_NUM)){AfxMessageBox(TEXT("連結Pcomm32.dll函數庫和開啟PMAC卡串連失敗!"));return m_bIsConnect = FALSE;}//中斷函數綁定if(  FALSE == PmacINTRFuncCallInit(PMAC_NUM, InterruptFunc2, 0, 0xFF1F)){AfxMessageBox(TEXT("PMAC函數中斷初始化失敗"));return m_bIsConnect = FALSE;}return m_bIsConnect = TRUE;}

對應的中斷函數處理如下:

//中斷處理void WINAPI InterruptFunc2(DWORD msg, PINTRBUFFER pBuffer){extern CInterruptApp theApp;TCHAR szRes[MAX_PATH];TCHAR szCmd[MAX_PATH];if (pBuffer->dwInterruptType == ISR_IR6){if (1 == PmacGetVariable(PMAC_NUM, 'P', 100, 0)){AfxMessageBox(TEXT("處理完成!"));//重設中斷lstrcpy(szCmd, "M613=0 P100=0");PmacGetResponse(0,szRes,MAX_PATH,szCmd);}}}


示範程式原始碼,在該程式中點擊電機開始回零後,回零按鈕灰階化。直到下位機完成回零發送中斷給上位機程式,上位機程式判斷後處理使能按鈕。這個程式是最簡單的中斷處理常式,主要是為了闡明原理,再複雜的程式都和這個原理一樣的,基於這個原理我們可以開發更複雜的上下位機互動程式。

注意這裡不能用預設安裝完成後的runtime.h,原本的我試過有問題,必須用我放在程式源檔案夾裡的重寫myRuntime.h。

更多PMAC代碼參見我的網站,基本上都是這個系列涉及到的知識點。


到此為止,PMAC的使用系列基本上寫完了,看完這一個系列,基本的PMAC編程和調試應該沒有問題了,剩下的就是Read The Fuck Manual了。


原創,轉載請註明來自http://blog.csdn.net/wenzhou1219



12.PMAC上位機-中斷通訊(下位機通知上位機)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.