基于PMAC的數(shù)控機(jī)床數(shù)據(jù)實(shí)時(shí)采集的研究
出處:微計(jì)算機(jī)信息 發(fā)布于:2009-07-20 11:50:44
摘 要:分析了采用多媒體定時(shí)器進(jìn)行數(shù)據(jù)采集的特點(diǎn)和采集過(guò)程中出現(xiàn)的問(wèn)題,采用了PMAC 的雙端口RAM 技術(shù)與多媒體定時(shí)器技術(shù)相結(jié)合的數(shù)據(jù)實(shí)時(shí)采集方式,在數(shù)控凸輪軸磨床上進(jìn)行了實(shí)驗(yàn),取得了滿意的效果。該方法與采用多線程技術(shù)進(jìn)行數(shù)據(jù)采集方法相比,方法簡(jiǎn)單、安全性好。
多媒體定時(shí)器由于定時(shí)高,因而在數(shù)據(jù)采集方面應(yīng)用廣泛。采用多媒體定時(shí)器對(duì)基于PMAC 的數(shù)控機(jī)床進(jìn)行運(yùn)動(dòng)參數(shù)采集,如果采集量較多而時(shí)間間隔較短,將會(huì)發(fā)生內(nèi)存讀取錯(cuò)誤乃至死機(jī),使加工程序中斷,如不及時(shí)清除緩沖區(qū)內(nèi)未執(zhí)行的加工數(shù)據(jù),下次啟動(dòng)時(shí),將會(huì)造成開環(huán)“飛車”,這是十分危險(xiǎn)的。但采用PMAC 的雙端口RAM 進(jìn)行數(shù)據(jù)讀取,不但有效避免了這一問(wèn)題,而且還大大簡(jiǎn)化了數(shù)據(jù)采集過(guò)程,在數(shù)控凸輪軸磨床上進(jìn)行的采集應(yīng)用過(guò)程中,取得了滿意的效果。該方法與采用多線程技術(shù)進(jìn)行數(shù)據(jù)采集相比,優(yōu)勢(shì)明顯。
1 PMAC 卡簡(jiǎn)介
PMAC(Programmable Multi-Axis Controller,可編程多軸控制器)是美國(guó)Delta Tau公司九十年代推出的基于PC 平臺(tái)的開放式多軸運(yùn)動(dòng)控制器。它采用了Motorola 公司的DSP56 系列高性能數(shù)字信號(hào)處理器作為CPU,是目前世界上功能強(qiáng)大的運(yùn)動(dòng)控制器之一,一個(gè)PMAC 可以同時(shí)控制1~8 根軸,多個(gè)PMAC 級(jí)聯(lián)多可以控制128 根軸,能夠定位,在包裝、裝配、醫(yī)藥工業(yè)、機(jī)床等行業(yè)應(yīng)用廣泛。
2 多媒體定時(shí)器技術(shù)
2.1 多媒體定時(shí)器與普通定時(shí)器的比較
普通的定時(shí)器用函數(shù)SetTimer 來(lái)設(shè)定,以毫秒為單位,但由于受到消息隊(duì)列的處理速度和系統(tǒng)時(shí)鐘頻率的影響,采樣周期少為54.925ms,也就是說(shuō)SetTimer(1,1,NULL)、SetTimer(1,50,NULL),采樣的周期都大概為55ms。但使用Windows 的多媒體定時(shí)器來(lái)代替常規(guī)的定時(shí)器,通過(guò)編程可以獲得采集間隔為1ms 或更短、分辨率為1μ m 的定時(shí),定時(shí)非常高,并且穩(wěn)定性特別好[1] 。
2.3 多媒體定時(shí)器的使用方法
在使用多媒體定時(shí)器前,需要確定操作系統(tǒng)多媒體定時(shí)器的分辨率范圍??梢酝ㄟ^(guò)函數(shù)timeGetDevCaps 來(lái)獲得本計(jì)算機(jī)的多媒體定時(shí)器分辨率范圍。使用多媒體定時(shí)器,主要分為以下幾步:
1)設(shè)置多媒體定時(shí)器,采用timeSetEvent 函數(shù),該函數(shù)可以初始化多媒體定時(shí)器,確定采集時(shí)間間隔,并設(shè)置一個(gè)定時(shí)回調(diào)事件。
2)利用函數(shù)TimeProc 定義回調(diào)函數(shù),可以在該函數(shù)中添加代碼,實(shí)現(xiàn)各種操作。
3) 調(diào)用函數(shù)timeKillEvent 結(jié)束多媒體定時(shí)器。
3 基于雙端口 RAM 技術(shù)的數(shù)據(jù)實(shí)時(shí)采集方式
3.1 PMAC 數(shù)據(jù)讀取的方式
現(xiàn)在通常采取兩種PMAC 數(shù)據(jù)讀取的方式:一種方法是通過(guò)設(shè)置I 變量來(lái)確定采集源和采集周期,從緩沖區(qū)中獲得采集數(shù)據(jù),這種方法可以采集任何PMAC 有效地址中的數(shù)據(jù),但比較復(fù)雜;另一種方法從I/O 及運(yùn)動(dòng)寄存器中直接采集數(shù)據(jù),通過(guò)設(shè)置M 變量與運(yùn)動(dòng)參數(shù)在寄存器中的地址相對(duì)應(yīng),讀取M 變量的值采集數(shù)據(jù),這種方法相對(duì)簡(jiǎn)單一些。
本文采取了另外一種 PMAC 數(shù)據(jù)讀取方式:?jiǎn)?dòng)雙端口RAM,利用雙端口RAM 所帶的函數(shù)進(jìn)行數(shù)據(jù)采集。這種方法更加方便,雙端口RAM 的函數(shù)封裝了PMAC 數(shù)據(jù)讀取數(shù)據(jù)的過(guò)程,用戶只須調(diào)用相關(guān)的函數(shù)即可從雙端口RAM 中直接讀取運(yùn)動(dòng)參數(shù),不需要設(shè)定采集源和數(shù)據(jù)地址。雙端口RAM 提供了許多運(yùn)動(dòng)參數(shù)采集函數(shù),可以通過(guò)這些函數(shù)采集各個(gè)電機(jī)的狀態(tài)、位置、速度、跟隨誤差等。例如:Double PmacDPRPosition(DWORD dwDevice,intmotor,double units),該函數(shù)返回指定電機(jī)的實(shí)際位置。 參數(shù)dwDevice 為PMAC 卡的卡號(hào),motor 指電機(jī)號(hào),units 表示單位。通過(guò)適當(dāng)?shù)膯挝粨Q算可以將電機(jī)的運(yùn)動(dòng)參數(shù)轉(zhuǎn)換成相應(yīng)軸的運(yùn)動(dòng)參數(shù)。如果PMAC 的雙端口RAM 提供的函數(shù)仍不能滿足需要,也可采用寄存器采集數(shù)據(jù),雙端口RAM 也支持寄存器讀取方式。
3.2 雙端口RAM 技術(shù)
PMAC 的Option2 提供了一個(gè)8K×16 位的RAM,允許PMAC 和PC 機(jī)之間共享一塊快速內(nèi)存,實(shí)現(xiàn)數(shù)據(jù)的快速傳遞。在機(jī)床的加工過(guò)程中需要在實(shí)時(shí)狀態(tài)下進(jìn)行快速的、大量的數(shù)據(jù)信息,同時(shí)又需要重復(fù)、快速的從PMAC 中讀取各電機(jī)的狀態(tài)信息。電機(jī)的狀態(tài)信息數(shù)據(jù)可以不停的更新并被PLC 程序或被PMAC 自動(dòng)地寫入雙端口RAM 中,如果不使用雙端口RAM,這些數(shù)據(jù)必須使用PAMC 的在線命令通過(guò)PC 總線來(lái)存取。由于使用雙端口RAM 存取不需要經(jīng)過(guò)通訊口發(fā)送命令和等待響應(yīng)時(shí)間,所以要快的多[2]。下面是幾個(gè)主要的雙端口RAM 后臺(tái)定點(diǎn)數(shù)據(jù)功能函數(shù)[3]:
函數(shù) PmacDPRRealTime 用于開啟或關(guān)閉PMAC 卡雙端口RAM,并規(guī)定伺服更新周期 。
函數(shù) PmacDPRSetMotors 用于設(shè)置PMAC 卡,將電機(jī)的相關(guān)數(shù)據(jù)復(fù)制到雙端口RAM 中。
函數(shù) PmacDPRSetHostBusyBit 用于通知PMAC 卡,客戶端將要 “讀”雙端口RAM 中的數(shù)據(jù)。
函數(shù) PmacDPRGetHostBusyBit 用于檢查是否在進(jìn)行雙端口RAM 的“寫”操作。
以上四個(gè)函數(shù)聯(lián)合使用就可以完成雙端口 RAM 的初始化和數(shù)據(jù)采集準(zhǔn)備工作。
4 應(yīng)用實(shí)例
4.1 數(shù)控凸輪軸磨床實(shí)驗(yàn)系統(tǒng)簡(jiǎn)介
該數(shù)控凸輪軸磨床實(shí)驗(yàn)裝置生成凸輪輪廓的運(yùn)動(dòng)方式為:X 軸砂輪架水平往復(fù)移動(dòng)和C軸工件主軸轉(zhuǎn)動(dòng)兩軸聯(lián)動(dòng),其主要硬件設(shè)備有工控機(jī)、PMAC 卡、松下伺服電機(jī)、雷尼紹光柵、CBN 砂輪、電主軸等。安裝在X 軸上的直線光柵分辨率為1μm,安裝在C 軸上的圓光柵分辨率為20μm。數(shù)控系統(tǒng)采用直線光柵采集X 軸位移作為反饋,圓光柵采集C 軸轉(zhuǎn)角作為反饋,形成全閉環(huán)控制,如圖1 所示。

PMAC 支持C++、VB、VC、Delphi 等多種語(yǔ),并提供了可供二次開發(fā)的動(dòng)態(tài)鏈接庫(kù)函數(shù)。該實(shí)驗(yàn)裝置以Visual C++6.0 為工具,開發(fā)了軟件數(shù)控系統(tǒng)。在原有的數(shù)控系統(tǒng)的基礎(chǔ)上,編寫了數(shù)據(jù)采集和顯示模塊。
4.2 確定定時(shí)和采集時(shí)間間隔
經(jīng)過(guò)測(cè)試發(fā)現(xiàn),軟件數(shù)控系統(tǒng)所在操作系統(tǒng)的多媒體定時(shí)器定時(shí)范圍是1ms—1000000ms。由于采樣周期>=1.28ms,才可分析各種位置和速度曲線[5]。因此將定時(shí)定為1ms,采集時(shí)間間隔定為2ms。
4.3 編程思想
首先要進(jìn)行初始化:開啟雙端口RAM,將伺服更新周期定為2ms,將所要采集的電機(jī)的數(shù)據(jù)復(fù)制到雙端口RAM中,打開文件準(zhǔn)備寫入數(shù)據(jù)。開始采集時(shí),先同知PMAC,將要“讀”雙端口RAM中的數(shù)據(jù),然后檢測(cè)雙端口RAM是否在進(jìn)行“寫”操作,如果沒有進(jìn)行“寫”操作,則啟動(dòng)多媒體定時(shí)器,調(diào)用回調(diào)函數(shù)完成數(shù)據(jù)采集和顯示。采集完畢后,刪除多媒體定時(shí)器、關(guān)閉雙端口RAM,關(guān)閉數(shù)據(jù)保存文件。程序流程圖,如圖2所示。

回調(diào)函數(shù)部分源代碼為:
XAPosition=PmacDPRPosition(0,0,1000); //采集X軸實(shí)際位置
sprintf(buf1,"%10.3lf",XAPosition); //將采集結(jié)果由double型轉(zhuǎn)換成字符型
::SetDlgItemText(hWnd,IDC_EDIT1, buf1); //顯示數(shù)據(jù)
fprintf(fGather,"%s\n",buf1); //將采集到的數(shù)據(jù)寫入文件保存
……
本文只給出了X軸位置的采集代碼,若要采集其他數(shù)據(jù),調(diào)用雙端口RAM中相應(yīng)的函數(shù)即可。需要說(shuō)明的是,PmacDPRPosition中的motor參數(shù),應(yīng)為當(dāng)前軸號(hào)減1;PmacDPRPosition函數(shù)中的單位與文獻(xiàn)[2]中介紹的寄存器讀取方式的確定方式不同,如果希望以mm為單位,此處單位的意義應(yīng)該是編碼器發(fā)多少個(gè)脈沖X軸移動(dòng)1mm。與由于編碼器發(fā)一個(gè)脈沖X軸移動(dòng)1μm,則編碼器發(fā)1000個(gè)脈沖X軸移動(dòng)1mm,因此,該處單位為1000。
4.4 采集結(jié)果
采集界面如圖3 所示。

下面是加工過(guò)程中采集到的部分?jǐn)?shù)據(jù):

4.5 應(yīng)用結(jié)果分析
經(jīng)過(guò)測(cè)試發(fā)現(xiàn),如果使用多媒體定時(shí)器和寄存器讀取方式進(jìn)行數(shù)據(jù)采集,當(dāng)采集間隔為10ms、定時(shí)為2ms 時(shí),采集四個(gè)運(yùn)動(dòng)參數(shù)就會(huì)死機(jī)。而采用雙端口RAM 讀取方式后,采集間隔為2ms、定時(shí)為1ms,采集四個(gè)運(yùn)動(dòng)參數(shù)系統(tǒng)仍然正常工作,解決了內(nèi)存不足的問(wèn)題,不但提高了采集,還提高了安全性,充分發(fā)揮了多媒體定時(shí)器和雙端口RAM的技術(shù)優(yōu)勢(shì)。
5 與多線程采集方法的比較
多線程技術(shù)也是數(shù)據(jù)實(shí)時(shí)采集中常用的一種方法。Windows 操作系統(tǒng)支多任務(wù)調(diào)度與處理,每一個(gè)進(jìn)程可以同時(shí)執(zhí)行多個(gè)線程,這意味著一個(gè)程序可以同時(shí)完成多個(gè)任務(wù)。多線程技術(shù)也可與PMAC 的雙端口RAM 技術(shù)結(jié)合,將每個(gè)運(yùn)動(dòng)參數(shù)或者每個(gè)軸的運(yùn)動(dòng)參數(shù)作為一個(gè)線程,分別進(jìn)行讀寫,完成快速時(shí)采集與顯示。
但應(yīng)該指出的是,多線程技術(shù)是一種比較難的技術(shù),因?yàn)椴l(fā)運(yùn)行線程的并行性增加了代碼的額外復(fù)雜度,所以多線程應(yīng)用程序的編寫和調(diào)試比較困難。在采集過(guò)程中,數(shù)據(jù)要在每個(gè)線程內(nèi)分別寫入文件進(jìn)行保存,而各個(gè)線程又是相對(duì)獨(dú)立的,因此要獲得“同一時(shí)刻”的數(shù)據(jù),十分困難。而且當(dāng)涉及線程較多,頻繁調(diào)用函數(shù),很容易出現(xiàn)致命錯(cuò)誤,十分危險(xiǎn)。而多媒體定時(shí)器數(shù)據(jù)采集、數(shù)據(jù)處理、數(shù)據(jù)保存,都在回調(diào)函數(shù)中進(jìn)行,能夠在“同一時(shí)刻”采集各種運(yùn)動(dòng)參數(shù),方便了參數(shù)的對(duì)比,而且安全性好。
6 結(jié)束語(yǔ)
應(yīng)用多媒體定時(shí)器與PMAC 的雙端口 RAM 技術(shù),對(duì)在基于PMAC 的系統(tǒng)進(jìn)行數(shù)據(jù)采集,定時(shí)高、采集時(shí)間間隔短,能夠在“同一時(shí)刻”采集各種運(yùn)動(dòng)參數(shù),方便了參數(shù)的對(duì)比,簡(jiǎn)化了數(shù)據(jù)采集過(guò)程,而且安全性好,是一種基于PMAC 系統(tǒng)的數(shù)據(jù)采集的有效方法。
參考文獻(xiàn):
[1]. PC datasheet http://m.58mhw.cn/datasheet/PC+_2043275.html.
[2]. PLC datasheet http://m.58mhw.cn/datasheet/PLC+_1248813.html.
版權(quán)與免責(zé)聲明
凡本網(wǎng)注明“出處:維庫(kù)電子市場(chǎng)網(wǎng)”的所有作品,版權(quán)均屬于維庫(kù)電子市場(chǎng)網(wǎng),轉(zhuǎn)載請(qǐng)必須注明維庫(kù)電子市場(chǎng)網(wǎng),http://m.58mhw.cn,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。
如涉及作品內(nèi)容、版權(quán)等問(wèn)題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- 什么是氫氧燃料電池,氫氧燃料電池的知識(shí)介紹2025/8/29 16:58:56
- SQL核心知識(shí)點(diǎn)總結(jié)2025/8/11 16:51:36
- 等電位端子箱是什么_等電位端子箱的作用2025/8/1 11:36:41
- 基于PID控制和重復(fù)控制的復(fù)合控制策略2025/7/29 16:58:24
- 什么是樹莓派?一文快速了解樹莓派基礎(chǔ)知識(shí)2025/6/18 16:30:52
- PCB測(cè)試點(diǎn)設(shè)計(jì)核心規(guī)范
- 高速連接器串?dāng)_問(wèn)題及解決方案
- 電源電路啟動(dòng)異常原因分析
- 降低DC-DC噪聲的PCB設(shè)計(jì)方法
- MOSFET在電池保護(hù)電路中的作用
- PCBDFM可制造性設(shè)計(jì)核心指南
- 二極管的種類及主要應(yīng)用場(chǎng)景
- 信號(hào)處理經(jīng)典問(wèn)題:如何設(shè)計(jì)和實(shí)現(xiàn)自適應(yīng)濾波器?
- 連接器安裝與維護(hù)注意事項(xiàng)
- 電源IC調(diào)試過(guò)程中常見問(wèn)題









