技術(shù)文章
VB環(huán)境下PMAC卡的初始化
閱讀:136 發(fā)布時間:2020-8-11設計開發(fā)上位機軟件的目的是方便用戶管理、操作和觀察界面,實現(xiàn)對數(shù)控加工中心 機床的管理與安全操作[3()]。上位機系統(tǒng)軟件基于Windows操作系統(tǒng)平臺,采用Microsoft Visual Basic 6.0開發(fā)15。機床動作命令必須通過調(diào)用動態(tài)鏈接庫中的庫函數(shù)來實現(xiàn)對PMAC 卡的控制,此功能主要由PCOMM32.DLL完成,它是標準的Windows動態(tài)鏈接庫[29]。 PCOMM32PRO在VB6.0中的加載步驟如下:
1.創(chuàng)建一個通用模塊。
2.聲明導入函數(shù):
Declare Function OpenPmacDevice Lib “Pcomm32.dll”(ByVal pmac As Long) As Long。
函數(shù)原型:
BOOL OpenPmacDevice(DWORD dwDevice) 〇
調(diào)用方式:
Dim Tmp_Val As Long
Tmp_Val=OpenPmacDevice (0)
通過如下代碼可以實現(xiàn)運動鏈接庫的定義:
Type PmacMsg
newline As Boolean Msg As String End Type
’PMAC.DLL Functions
Declare Function PmacSelect Lib nPcomm32.dlln (ByVal hwnd As Long) As Long
Declare Function OpenPmacDevice Lib nPcomm32.dir (ByVal pmac As Long) As Long
Declare Function PmacConfisure Lib nPcomm32.dlln (BvVal hwnd As Lons. BvVal pmac As Long) As Long
Declare Function PmacGetResponseA Lib nPcomm32.dlln (ByVal pmac As Long, ByVal responses, ByVal dummy As Integer, ByVal com_string$) As Long
Declare Function PmacFlush Lib "Pcomm32.dHn (ByVal pmac As Long) As Integer
Declare Function PmacGetPmacType Lib nPcomm32.dlln (ByVal pmac As Long) As Integer
Declare Function ClosePmacDevice Lib nPcomm32.dir (ByVal pmac As Long) As Long
Declare Function PmacDownloadA Lib nPcomm32.dlln (ByVal pmac As Long, ByVal dummy As Long, ByVal dummy As Long, ByVal dummy As Long, ByVal fname$, ByVal macro%, ByVal map%, ByVal log%, ByVal do_pmacDownloada%) As Integer
DeviceNumber = Pmac Select (hWnd)
OpenPmacDevice (DeviceNumber) ClosePmacDevice (DeviceNumber)
PmacGetResponseA (DeviceNumber, response, 255, n%100n)
為了使PMAC卡可以響應上位機軟件的命令,還需要對PMAC卡進行初始化,以確 定硬件地址、線程的開啟和將站號、通訊方式等信息在通訊測試成功后寫入window的注 冊表,完成PMAC在上位機上注冊的功能,以便我們換了通訊方式類型的話,下次開啟 PEWIN32PRO時自動的與卡進行通訊[29]。初始化通常有以下兩種類型:
1.通過PEWIN32PRO軟件來注冊。
2•使用PCOMM32PRO中的函數(shù)。
函數(shù)原型:Long Pmac Select (HWND hwnd)
在調(diào)用完成時會彈出一個初始化對話框如圖3-2所示。
初始化函數(shù)調(diào)用過程代碼如下:
OpenRuntimeLink() ;// 調(diào)用 OpenPmacDevice〇
dwDevice = PmacSelect(NULL);// 調(diào)用 PmacSelect〇
if (dwDevice >= 0 && dwDevice <= 7)
{if (OpenPmacDevice(dwDevice))
{ m_bDriverOpen = 1;
return true; // return TRUE unless you set the focus to a control
} }
Close〇; //關(guān)閉
PmacGetResponse(dwDevice,buf,255,n#lpn);
AfxMessageBox(buf);
由于PComm32PRO的設計理念是基于線程安全的,所以對數(shù)控加工中心機床的命令 在與PMAC卡通訊時要求進行線程保護操作,例如一個應用程序讀取I變量的操作進行時, 就不可以同時允許另外一個應用程序也讀取相同的變量。PComm32PRO是通過LockPmac ()和ReleasePmac()兩個函數(shù)來實現(xiàn)線程的保護工作的。當進行某一操作時開啟LockPmac ()以保護線程不被其它程序打擾,當操作結(jié)束時調(diào)用RdeasePmac ()關(guān)閉保護。
本文采摘自“基于PMAC的加工中心開放式數(shù)控系統(tǒng)研究”,因為編輯困難導致有些函數(shù)、表格、圖片、內(nèi)容無法顯示,有需要者可以在網(wǎng)絡中查找相關(guān)文章!
本文由伯特利數(shù)控整理發(fā)表文章均來自網(wǎng)絡僅供學習參考,轉(zhuǎn)載請注明!