摘要:十字滑臺作為運(yùn)動的常用部件在物流、機(jī)械等行業(yè)中使用廣泛,其運(yùn)動的控制核心可以是單片機(jī)、PLC、工控板卡等。
本文采用PCI總線結(jié)構(gòu)的運(yùn)動控制板卡作為控制核心,實(shí)現(xiàn)對十字滑臺的運(yùn)動控制。本文詳細(xì)介紹十字滑臺系統(tǒng)的硬件結(jié)構(gòu)和軟件編程,系統(tǒng)硬件包括工控機(jī)運(yùn)動控制板卡的選擇、驅(qū)動器的連接、外部信號的控制等。以及采用C#軟件編寫的windows窗口界面應(yīng)用程序。整個(gè)系統(tǒng)操作方便、功能完備、控制性能好。
關(guān)鍵詞:工控機(jī);十字滑臺;C#語言;實(shí)時(shí)控制
中圖分類號:TG43
引言:
在工業(yè)自動化領(lǐng)域,有三種主要的控制方式,即:PLC控制、數(shù)控系統(tǒng)控制、PC-Based控制。近幾年隨著中國制造業(yè)結(jié)構(gòu)性調(diào)整,PLC控制和數(shù)控系統(tǒng)控制呈現(xiàn)萎縮低迷態(tài)勢,然而PC-Based運(yùn)動控制卻充滿活力,發(fā)展速度令人矚目。
目前市場上大多數(shù)的PC-based運(yùn)動控制產(chǎn)品較PLC而言可以實(shí)現(xiàn)更為復(fù)雜的運(yùn)動控制;同時(shí),應(yīng)用者可以利用PC-based廠商提供的底層函數(shù)庫進(jìn)行靈活的二次開發(fā)和編程。在編程語言上,除傳統(tǒng)的PLC語言外,PC-based運(yùn)動控制產(chǎn)品還為開發(fā)者提供C#、C++、Basic等豐富的電腦語言進(jìn)行編程。
十字運(yùn)動平臺是自動化設(shè)備常用的一種運(yùn)動裝置,廣泛應(yīng)用到各個(gè)領(lǐng)域,如機(jī)械手臂、切割機(jī)、光刻機(jī)、傳送帶等,以工控機(jī)為核心的十字運(yùn)動平臺,因其良好的可操作性和強(qiáng)大功能,被廣泛采用。
研華PCI-1245L 是4 軸的SoftMotion PCI 總線控制器卡,能夠?qū)崿F(xiàn)運(yùn)動軌跡和時(shí)間控制, 程序員無需大規(guī)模修改應(yīng)用碼即可集成任何研華SoftMotion 運(yùn)動控制器。該架構(gòu)能夠幫助用戶輕松維護(hù)和升級應(yīng)用。
本文介紹采用研華工控機(jī)及相應(yīng)運(yùn)動控制卡,匹配安川驅(qū)動器,實(shí)現(xiàn)對十字平臺的運(yùn)動控制,軟件采用C#語言編制,應(yīng)用程序具有方便的使用界面,能實(shí)現(xiàn)單軸、雙軸等直線、曲線運(yùn)動。
1十字滑臺的硬件組成
該測試系統(tǒng)分為硬件系統(tǒng)和軟件系統(tǒng)。硬件系統(tǒng)以研華工控主機(jī)為控制核心,采用研華PCI-1245運(yùn)動控制板卡、安川驅(qū)動器和電機(jī)實(shí)現(xiàn)對滑臺的運(yùn)動控制。軟件采用C#編程,操作美觀、方便、并具有開放性。系統(tǒng)硬件框圖如圖1。
1.1 工控機(jī)板卡的選擇
系統(tǒng)的核心采用研華運(yùn)動控制卡PCI-1245L。PCI-1245L 是4 軸的SofMotion PCI 總線控制器卡,板卡配有高性能FPGA,其中包括SoftMotion 算法,能夠?qū)崿F(xiàn)運(yùn)動軌跡和時(shí)間控制,以滿足精確運(yùn)動中的同步應(yīng)用需求。
1.2伺服驅(qū)動器的連接
選用PCI-1245L板卡中的X軸和Y軸,X和Y兩軸和驅(qū)動器的連接方式是相同的,如圖2,圖3。板卡的輸出脈沖采用差分方式連接,脈沖輸出方式采用cw/ccw模式,行程限位開關(guān)和原點(diǎn)都采用光耦隔離的方式接入板卡,行程限位開關(guān)用于保護(hù)系統(tǒng)。 該輸入信號通過光耦合器和RC 過濾器連接。 采用限位開關(guān)時(shí),外部電源VEX DC 24 V 將成為光耦合器的電壓源。 因此,將啟用線程功能。電路圖如圖4。編碼器反饋信號到達(dá)時(shí),將ECA+/ECA-連接至編碼器輸出的相位A。這是一個(gè)差分對。同樣,也適用于ECB+/- 和ECZ+/-。PCI-1245L 的默認(rèn)設(shè)置為正交輸入(4xAB 相位)。在上述電路圖中,PCI-1245L 采用高速光耦合器用于隔離。源的編碼器輸出可為差分模式或開集模式??山邮艿淖畲?xAB 相位反饋頻率約為4 MHz。
2 軟件設(shè)計(jì)
研華運(yùn)動設(shè)備采用“通用運(yùn)動架構(gòu)”為軟件架構(gòu)。該架構(gòu)包括三層:設(shè)備驅(qū)動層、整合層和應(yīng)用層。在應(yīng)用層選用的二次開發(fā)編程語言有C++、C、C#、VB、Labview等多種方式。用戶需了解通用運(yùn)動驅(qū)動、根據(jù)編程語言調(diào)用對應(yīng)的API接口程序,實(shí)現(xiàn)應(yīng)用程序的編寫。研華通用運(yùn)動(ACM)架構(gòu)定義了三種類型的操作對象:設(shè)備、軸和群組。每個(gè)類型都有自己的方法、屬性和狀態(tài)。
工控機(jī)的軟件要求簡潔,方便,能直接控制硬件。C#語言簡潔,保留了C++的強(qiáng)大功能,具有快速開發(fā)的自由特性,并且.NET框架為C#提供了一個(gè)強(qiáng)大的、易用的、邏輯結(jié)構(gòu)一致的程序設(shè)計(jì)環(huán)境。因此系統(tǒng)采用C#語言來編寫測試程序。
該系統(tǒng)軟件是采用VS2010作為開發(fā)工具,在Windows7操作系統(tǒng)下的窗體應(yīng)用程序。測試程序模塊化編程,包括回原點(diǎn)、點(diǎn)對點(diǎn)、線性位移、調(diào)速、位移等8個(gè)模塊,每個(gè)模塊即可以獨(dú)立運(yùn)行又可以綜合運(yùn)行。其中點(diǎn)對點(diǎn)程序流程圖如下:
using System;
。。。。。。
using Advantech.Motion;//Common Motion API
using System.Runtime.InteropServices; //For Marshal
namespace PCL1245L_DOMO
{
public partial class Frm_ptp : Form
{
public Frm_ptp()
{
InitializeComponent();
}
。。。。。。
private void BtnOpenBoard_Click_1(object sender, EventArgs e)
{
uint Result;
uint i = 0;
uint[] slaveDevs = new uint[16];
uint AxesPerDev = new uint();
uint AxisNumber;
uint buffLen = 0;
Result = Motion.mAcm_DevOpen(DeviceNum, ref m_DeviceHandle);
if (Result != (uint)ErrorCode.SUCCESS)
{
MessageBox.Show("Can Not Open Device", "PTP", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
buffLen = 4;
Result = Motion.mAcm_GetProperty(m_DeviceHandle, (uint)PropertyID.FT_DevAxesCount, ref AxesPerDev, ref buffLen);
if (Result != (uint)ErrorCode.SUCCESS)
{
MessageBox.Show("Get Property Error", "PTP", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
AxisNumber = AxesPerDev;
buffLen = 64;
Result = Motion.mAcm_GetProperty(m_DeviceHandle, (uint)PropertyID.CFG_DevSlaveDevs, slaveDevs, ref buffLen);
if (Result == (uint)ErrorCode.SUCCESS)
{
i = 0;
while (slaveDevs[i] != 0)
{
AxisNumber += AxesPerDev;
i++;
}
}
。。。。。。
}
private void BtnMove_Click_1(object sender, EventArgs e)
{
UInt32 Result;
if (m_bInit)
{
if (radioButtonRel.Checked)
{
Result=Motion.mAcm_AxMoveRel(m_Axishand[CmbAxes.SelectedIndex], Convert.ToDouble(textBoxPos.Text));
}
else
{
Result = Motion.mAcm_AxMoveAbs(m_Axishand[CmbAxes.SelectedIndex], Convert.ToDouble(textBoxPos.Text));
}
if (Result != (uint)ErrorCode.SUCCESS)
{
MessageBox.Show("PTP Move Failed With Error Code[0x" + Convert.ToString(Result, 16) + "]", "PTP", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
}
return;
}
}
}
4結(jié)論
該系統(tǒng)屬于工控機(jī)測控系統(tǒng),具有實(shí)時(shí)運(yùn)動功能。硬件上采用工控機(jī)結(jié)合運(yùn)動控制板卡,實(shí)現(xiàn)十字滑臺的運(yùn)動控制,系統(tǒng)集成度高。由C#語言編輯的應(yīng)用程序功能齊全,操作方便。整個(gè)設(shè)備可以應(yīng)用在數(shù)控床、物流傳動、現(xiàn)代生產(chǎn)線等。
參考文獻(xiàn):
[1]李江全.計(jì)算機(jī)測控系統(tǒng)設(shè)計(jì)與編程實(shí)現(xiàn).[M]電子工業(yè)出版社,2008
[2]PCI1245用戶手冊[Z].研華公司.2011
[4]Common Motion用戶手冊 [Z].研華公司.2011
[5]Anders Hejlsberg等.譯者:陳寶國.C#程序設(shè)計(jì)語言[M]北京:機(jī)械工業(yè)出版社,2011 References
[1] Li Jiang-quan. Computer measurement and control system design and programming.[M] Electronic industry press,2008
[2] PCI-1245L_User manual_(CH) Advantech Inc. 2011
[3] Common Motion _User manual_(CH) Advantech Inc. 2011
[4] Anders Hejlsberg C# Programming Language .[M]Beijing:Mechanical industry press,2011
作者簡介:欒偉峰 女 出生于1973年11月 副教授/高級工程師
1994年~2003年 在蘇州半導(dǎo)體總廠有限公司工作 從事自動控制設(shè)備的改造和設(shè)計(jì)。
2003~今 在蘇州工業(yè)園區(qū)職業(yè)技術(shù)學(xué)院 電氣自動化技術(shù)專業(yè)主任 研究方向?yàn)樽詣踊刂萍夹g(shù)