摘 要:文章以美國Delta Tau Data System 公司推出的基于PCI總線的PMAC PCI Lite型運(yùn)動(dòng)控制卡為核心。將VS2008作為開發(fā)平臺(tái),應(yīng)用C#語言開發(fā)具有操作簡(jiǎn)潔人機(jī)界面的直角坐標(biāo)機(jī)器人控制系統(tǒng)。該系統(tǒng)可控制機(jī)器人完成在笛卡爾坐標(biāo)系中的直線和曲線插補(bǔ)運(yùn)動(dòng)并向數(shù)據(jù)庫中存入機(jī)器人的相關(guān)位姿信息。
關(guān)鍵詞:PCI總線運(yùn)動(dòng)控制卡;C#語言;VS2008;直角坐標(biāo)機(jī)器人
前言
在如今這個(gè)飛速發(fā)展的工業(yè)自動(dòng)化時(shí)代中,人力資源漸漸的已經(jīng)不能滿足工廠的生產(chǎn)加工需要,加之人工成本的不斷上升,某些特定環(huán)境下人工無法完成的工作,需要自動(dòng)化程度更高的機(jī)械設(shè)備去完成,直角坐標(biāo)機(jī)器人由此誕生。同時(shí),基于“PC+運(yùn)動(dòng)控制器”的控制系統(tǒng)組合憑借其軟件開發(fā)成本低、兼容性好、可靠性高等優(yōu)點(diǎn)已然成為目前機(jī)器人行業(yè)的主流發(fā)展趨勢(shì)。
1 系統(tǒng)硬件選擇
PMAC是美國Delta Tau Data System 公司推出的基于PC 機(jī)平臺(tái)上的運(yùn)動(dòng)控制器,兼容C#程序設(shè)計(jì)語言。它采用了Motorala公司的高性能信號(hào)數(shù)字處理器DSP5600作為主處理器CPU,具有點(diǎn)位,直線,圓弧,樣條和PVT插補(bǔ)功能。速度、分辨率、帶寬等指標(biāo)遠(yuǎn)優(yōu)于一般的控制器。由于在機(jī)器人的動(dòng)作過程中要考慮實(shí)時(shí)性因素和快速響應(yīng)的要求,這就需要使用速度控制方法控制交流伺服電機(jī)。綜合以上情況,我們選用PCI總線形式的4軸控制卡PMAC PCI Lite。
系統(tǒng)硬件電路原理圖如圖1。
圖1中用戶通過操作PC中的人機(jī)界面,設(shè)置機(jī)器人的位移參數(shù),這些數(shù)據(jù)通過PCI總線傳入PMAC PCI Lite運(yùn)動(dòng)控制卡。運(yùn)動(dòng)控制卡經(jīng)過數(shù)據(jù)解析后發(fā)出連續(xù)的、高頻率的脈沖串,通過改變發(fā)出脈沖的頻率來控制電機(jī)的速度,改變發(fā)出脈沖的數(shù)量來控制電機(jī)的位置,它的脈沖輸出模式包括脈沖/方向、脈沖/脈沖方式。脈沖計(jì)數(shù)可用于編碼器的位置反饋,提供機(jī)器準(zhǔn)確的位置,糾正傳動(dòng)過程中產(chǎn)生的誤差。伺服電機(jī)驅(qū)動(dòng)機(jī)器人運(yùn)動(dòng)到理想位置在這期間將運(yùn)動(dòng)信息存入Oracle數(shù)據(jù)庫中,在PC端,用戶可用PL/SQL Developer查看機(jī)器人運(yùn)動(dòng)數(shù)據(jù)表單做一個(gè)簡(jiǎn)單監(jiān)視。數(shù)字輸入/輸出點(diǎn)可用于限位開關(guān)。
2 系統(tǒng)軟件選擇
由于本控制系統(tǒng)運(yùn)行于PC上,考慮到最佳兼容性的問題,我們選用Windows XP操作系統(tǒng)。
Visual Studio 2008是微軟公司發(fā)布的高級(jí)開發(fā)工具,面向.NET Framework3.5版本。它提供了調(diào)試功能、數(shù)據(jù)庫功能和創(chuàng)新功能,幫助在各種平臺(tái)上快速創(chuàng)建當(dāng)前最先進(jìn)的應(yīng)用程序。支持C#程序設(shè)計(jì)語言。C#語言是一種面向?qū)ο蟮?、運(yùn)行于.NET Framework之上的高級(jí)程序設(shè)計(jì)語言。它在繼承C和C++強(qiáng)大功能的同時(shí)去掉了一些它們的復(fù)雜特性(例如沒有宏以及不允許多重繼承),它綜合了VB簡(jiǎn)單的可視化操作和C++的高運(yùn)行效率,這就提高了編程效率,降低了代碼出錯(cuò)的概率,節(jié)省時(shí)間。除此之外,我們選用Oracle 11G和PL/SQL Developer用于信息的采集和檢索。
3 程序設(shè)計(jì)
首先在PL/SQL Developer中建立機(jī)器人位姿信息表以便數(shù)據(jù)傳入,程序如下。
create table Robotinfo
(
X axis displacement nvarchar2(20),
Y axis displacement nvarchar2(20),
Z axis displacement nvarchar2(20),
Speed nvarchar2(20),
Acceleration nvarchar2(20),
Starting point X nvarchar2(20),
Starting point Y nvarchar2(20),
Starting point Z nvarchar2(20),
Ending point X nvarchar2(20),
Ending point Y nvarchar2(20),
Ending point Z nvarchar2(20),
X-axis limit nvarchar2(20),
X axis origin nvarchar2(20),
X-axis nlimit nvarchar2(20),
Y-axis limit nvarchar2(20),
Y axis origin nvarchar2(20),
Y-axis nlimit nvarchar2(20),
Z-axis limit nvarchar2(20),
Z axis origin nvarchar2(20),
Z-axis nlimit nvarchar2(20)
);
而后本著程序的開放性和可移植性,在VS2008平臺(tái)下建立類庫為以后的程序改進(jìn)提供便利。
創(chuàng)建一個(gè)抽象IndustrialRobot類(不能實(shí)例化),該類中囊括了所有工業(yè)機(jī)器人的方法、字段以及屬性,該類下的其中一個(gè)派生類為直角坐標(biāo)機(jī)器人CartesianCoordinate Robot類。該類封裝了機(jī)器人一系列動(dòng)作方法以及所有的屬性及字段。之前的Robotinfo表得到的數(shù)據(jù)就在該類的方法中產(chǎn)生。本次使用的PMAC PCILite型運(yùn)動(dòng)控制卡派生于運(yùn)動(dòng)控制卡類Motion Control Card。如若以后更換控制卡只需在Motion Control Card類中新建一個(gè)類庫即可省去了復(fù)雜的程序改寫步驟。
運(yùn)行應(yīng)用程序時(shí),PC首先需要加載Delta Tau Data System 公司提供的pcomm32.dll動(dòng)態(tài)鏈接庫文件。C#進(jìn)行平臺(tái)互調(diào)用時(shí)函數(shù)需要提前聲明,調(diào)用PMAC運(yùn)動(dòng)控制卡中的pcomm32.dll時(shí)用到的常用函數(shù)聲明的數(shù)據(jù)類型轉(zhuǎn)換后的形式如下:
其中PMAC類中的Public static extern bool Open PMAC Device(uint dwDevice)方法用來打開PMAC卡驅(qū)動(dòng)程序通道,Public static extern bool Close PMAC Device(uint dwDevice)方法用來關(guān)閉PMAC驅(qū)動(dòng)程序通道,public static extern int PMAC Select(uint hWnd)用來提供一種方法選擇和配置當(dāng)前設(shè)備的安裝,public static extern void PMAC Send CommandA(uintdw Device,string command)方法用來發(fā)送一個(gè)字符串緩沖區(qū)到PMAC卡和中斷PMAC卡的任何響應(yīng)。
之后程序通過調(diào)用pcomm32.dll動(dòng)態(tài)鏈接庫中的方法控制交流伺服電機(jī)和編碼器采集信號(hào)發(fā)送至數(shù)據(jù)庫,同時(shí)機(jī)器人完成規(guī)定動(dòng)作,程序結(jié)束時(shí)通過析構(gòu)函數(shù)釋放類庫占用的內(nèi)存。
4 結(jié)束語
文章針對(duì)當(dāng)代工業(yè)機(jī)器人編程的開放性和可移植性的要求,運(yùn)用C#程序設(shè)計(jì)語言設(shè)計(jì)了直角坐標(biāo)機(jī)器人的控制系統(tǒng)。整個(gè)系統(tǒng)基于PC平臺(tái)以PMAC運(yùn)動(dòng)控制卡為核心,處處考慮系統(tǒng)的可擴(kuò)展性和編程的快捷性,保證整個(gè)控制系統(tǒng)的開放性。為了驗(yàn)證程序規(guī)劃軌跡準(zhǔn)確與否,在機(jī)器人的執(zhí)行機(jī)構(gòu)上加裝了一個(gè)雕刻機(jī)主軸,通過實(shí)際操作發(fā)現(xiàn)機(jī)器人較好的完成了程序所規(guī)劃的軌跡運(yùn)動(dòng)。因此基于C#設(shè)計(jì)的直角坐標(biāo)機(jī)器人控制系統(tǒng)在工業(yè)上具有良好的前景。
參考文獻(xiàn)
[1]胡鵬.基于PMAC的開放式機(jī)器人控制系統(tǒng)[J].機(jī)器人技術(shù),2006(4):150-180.
[2]文懷興,柳建華,白路,等.基于Trio 運(yùn)動(dòng)控制器的直角坐標(biāo)機(jī)器人控制系統(tǒng)[J].輕工機(jī)械,2009,27(3):40-70.
[3]馬瓊雄,吳向磊,李琳.基于IPC的開放式工業(yè)機(jī)器人控制系統(tǒng)研究[J].機(jī)電產(chǎn)品開發(fā)與創(chuàng)新,2007,21(1):13-31.
[4]John Craig.Robot and Automation Simulation:Past,present.and future[J].Robotics World,1999(6).
[5]Karli Waston,Christian Nagel.C#入門經(jīng)典[M].清華大學(xué)出版社,2010,12.
[6]劉秋香,張永勝.C#下利用ADO.NET訪問SQL Server技術(shù)[J].計(jì)算機(jī)應(yīng)用,2004,11.