XPCIE1032H功能簡介
XPCIE1032H是一款基于PCI Express的EtherCAT總線運(yùn)動控制卡,可選6-64軸運(yùn)動控制,支持多路高速數(shù)字輸入輸出,可輕松實(shí)現(xiàn)多軸同步控制和高速數(shù)據(jù)傳輸。
XPCIE1032H運(yùn)動控制卡集成了強(qiáng)大的運(yùn)動控制功能,結(jié)合MotionRT7運(yùn)動控制實(shí)時(shí)軟核,解決了高速高精應(yīng)用中,PC Windows開發(fā)的非實(shí)時(shí)痛點(diǎn),指令交互速度比傳統(tǒng)的PCI/PCIe快10倍。

XPCIE1032H 運(yùn)動控制卡支持PWM,PSO功能,板載16進(jìn)16出通用IO口,其中輸出口全部為高速輸出口,可配置為4路PWM輸出口或者16路高速PSO硬件比較輸出口。輸入口含有8路高速輸入口,可配置為4路高速色標(biāo)鎖存或兩路編碼器輸入。
XPCIE1032H運(yùn)動控制卡搭配MotionRT7實(shí)時(shí)內(nèi)核,使用本地LOCAL接口連接,通過高速的核內(nèi)交互 ,可以做到更快速的指令交互,單條指令與多條指令一次性交互時(shí)間可以達(dá)到3-5us左右。

?XPCIE1032H運(yùn)動控制卡與MotionRT7運(yùn)動控制實(shí)時(shí)內(nèi)核的配合具有以下優(yōu)勢:

1.支持多種上位機(jī)語言開發(fā),所有系列產(chǎn)品均可調(diào)用同一套API函數(shù)庫;
2.借助核內(nèi)交互,可以快速調(diào)用 運(yùn)動指令,響應(yīng)時(shí)間快至微秒級,比傳統(tǒng)PCI/PCIe快10倍;
3.解決傳統(tǒng)PCI/PCIe運(yùn)動控制卡在Windows環(huán)境下控制系統(tǒng)的非實(shí)時(shí)性問題;
4.支持一維/二維/三維PSO(高速硬件位置比較輸出),適用于視覺飛拍、精密點(diǎn)膠和激光能量控制等應(yīng)用;
5.提供高速輸入接口,便于實(shí)現(xiàn)位置鎖存;
6.支持EtherCAT總線和脈沖輸出混合聯(lián)動、混合插補(bǔ)。

?使用XPCIE1032H運(yùn)動控制卡和MotionRT7運(yùn)動控制實(shí)時(shí)內(nèi)核進(jìn)行項(xiàng)目開發(fā)時(shí),通常需要進(jìn)行以下步驟:
1.安裝驅(qū)動程序,識別控制卡XPCIE1032H;
2.打開并執(zhí)行文件“MotionRT710.exe”,配置參數(shù)和運(yùn)行運(yùn)動控制實(shí)時(shí)內(nèi)核;
3.使用ZDevelop軟件連接到控制器,進(jìn)行參數(shù)監(jiān)控。連接時(shí)請使用PCI/LOCAL方式,并確保ZDevelop軟件版本在3.10以上;
4.完成控制程序開發(fā),通過LOCAL鏈接方式連接到運(yùn)動控制卡,實(shí)現(xiàn)實(shí)時(shí)運(yùn)動控制。

?與傳統(tǒng)PCI/PCIe卡和PLC的測試數(shù)據(jù)結(jié)果對比:

我們可以從測試對比結(jié)果看出,XPCIE1032H運(yùn)動控制卡配合實(shí)時(shí)運(yùn)動控制內(nèi)核MotionRT7,在LOCAL鏈接(核內(nèi)交互)的方式下,指令交互的效率是非常穩(wěn)定,當(dāng)測試數(shù)量從1w增加到10w時(shí),單條指令交互時(shí)間與多條指令交互時(shí)間波動不大,非常適用于高速高精的應(yīng)用。
XPCIE1032H控制卡安裝
一、C#語言進(jìn)行運(yùn)動控制項(xiàng)目開發(fā)

1.到正運(yùn)動技術(shù)官網(wǎng)的下載中心選擇需要的平臺庫文件。
庫文件下載地址: http://www.zmotion.com.cn/download_list_21.html

2.解壓下載的安裝包找到“ Zmcaux.cs ”,“ zauxdll.dll ”,“ zmotion.dll ”放入到項(xiàng)目文件中。
(1)“Zmcaux.cs”放在項(xiàng)目根目錄文件中,與bin目錄同級。

(2)“zauxdll.dll”,“zmotion.dll”放在bin → Debug。

3.用vs打開新建的項(xiàng)目文件,在右邊的解決方案資源管理器中點(diǎn)擊顯示所有,然后鼠標(biāo)右鍵點(diǎn)擊zmcaux.cs文件,點(diǎn)擊包括在項(xiàng)目中。


4.雙擊Form1.cs里面的Form1,出現(xiàn)代碼編輯界面,在文件開頭寫入using cszmcaux,并聲明控制器句柄g_handle。

二、PC函數(shù)介紹
相關(guān)PC函數(shù)介紹詳情可參考“ZMotion PC函數(shù)庫編程手冊 V2.1.1”。


三、XML文件生成ZML文件添加步驟
大家都知道,正運(yùn)動總線控制器事先就把一些總線從站的 XML文件 添加到控制器的固件里面了,所以配合市面上大部分的EtherCAT從站,客戶只需要下載總線初始化腳本就可以和對應(yīng)從站通訊,具體可以參考往期推文 EtherCAT超高速實(shí)時(shí)運(yùn)動控制卡XPCIE1032H上位機(jī)C#開發(fā)(二):EtherCAT總線初始化 。
針對市面上剛出的總線從站,我們沒有及時(shí)把XML文件添加到控制器固件里面或總線掃描的時(shí)候遇見不支持的從站,這個(gè)時(shí)候需要我們自己添加XML文件。

正運(yùn)動控制器添加XML文件的步驟如下:
(1)通過XMLParsingTools工具軟件將XML轉(zhuǎn)換成ZML文件;
(2)把生成的ZML文件添加到Zpj項(xiàng)目里面,連同總線初始化腳本的Bas文件一起下載到控制器里面即可。
1、通過XMLParsingTools工具將XML文件轉(zhuǎn)換成ZML文件。
(1)點(diǎn)擊左上角文件夾打開XML文件,選擇對應(yīng)的從站型號和從站類型( 這里以友商的一拖四總線驅(qū)動器為例)。

(2)點(diǎn)擊左上角文件夾位置導(dǎo)出ZML文件即可。

2、RTSys軟件同時(shí)下載ZML文件與總線初始化的Bas文件(下載ZPJ項(xiàng)目)。
(1)把剛剛生成的ZML文件拷貝到總線初始化的ZPJ項(xiàng)目文件夾下,通過RTSys軟件打開【EtherCAT參數(shù).zpj】這個(gè)項(xiàng)目文件。

(2)右鍵文件視圖區(qū)域,點(diǎn)擊【增加到項(xiàng)目】將剛剛生成的ZML文件添加到項(xiàng)目里面。

(3)點(diǎn)擊連接按鈕,通過Local接口鏈接上控制器。

(4)點(diǎn)擊【下載到ROM】,將整個(gè)項(xiàng)目下載到控制器里面掉電保存即可。

3.將例程下載到ZML文件與總線初始化的Bas文件。
連接控制器,新建ZPJ項(xiàng)目文件,將總線初始化的Bas文件和剛剛生成的zml文件復(fù)制到新建項(xiàng)目的目錄下并一一添加進(jìn)來,最后下載到控制器的ROM里面即可掉電保存。

三、應(yīng)用例程及實(shí)現(xiàn)效果
1、點(diǎn)擊連接按鈕鏈接到MotionRT7運(yùn)動控制軟核。
//連接控制器
private void Btn_cn_Click(object sender, EventArgs e)
{
int ret;
//鏈接控制器
ret= zmcaux.ZAux_FastOpen(5,textBox1.Text,1000,out g_handle);
if (g_handle != (IntPtr)0)
{
MessageBox.Show("RT7鏈接成功!", "提示");
timer1.Enabled = true;
}
else
{
MessageBox.Show("RT7鏈接失敗"+"錯(cuò)誤代碼"+ ret);
}
}
2、新建Zpj項(xiàng)目文件。
//新建zpj文件
private void NewZpjFile_Click(object sender, EventArgs e)
{
try
{
//創(chuàng)建保存文件對話框
SaveFileDialog saveFile = new SaveFileDialog();
saveFile.Filter = "ZMC Project Files(*.zpj)|*.zpj";
//是否覆蓋當(dāng)前文件
saveFile.OverwritePrompt = true;
//如果設(shè)為true就會使用系統(tǒng)默認(rèn)目錄
saveFile.RestoreDirectory = true; //還原目錄
//如果保存對話框操作成功
if (saveFile.ShowDialog() == DialogResult.OK)
{
FileStream fs1 =new FileStream(saveFile.FileName, FileMode.Create, FileAccess.ReadWrite);
fs1.Close();
//ZPJ文件名
m_ZpjFileName = saveFile.FileName;
//ZPJ文件路徑
m_ZpjFilePath = System.IO.Path.GetDirectoryName(m_ZpjFileName);
System.IO.File.Create(m_ZpjFileName).Close();
Thread.Sleep(100);
if (!System.IO.File.Exists(m_ZpjFileName))
{
MessageBox.Show("文件不存在");
}
//初始化ZPJ文件信息
Czpj();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
//初始化ZPJ文件信息_通過Ini文件記錄
public void Czpj()
{
string LpAppname, Lpkeynum, Lpdata;
LpAppname = "Controller";
Lpkeynum = "TypeName ";
//寫控制器信息,初始化ZPJ文件信息
Thread.Sleep(200);
var MyIni = new IniFile(@m_ZpjFileName);
MyIni.Write(Lpkeynum, "", LpAppname);
MyIni.Write("IfUpload", "0", LpAppname);
MyIni.Write("UserVersion", "1.0", LpAppname);
Lpdata = num.ToString(); //
MyIni.Write("Files",Lpdata, LpAppname);
MyIni.Write("Breaks", "0", LpAppname);
MyIni.Write("Watches", "0", LpAppname);
MyIni.Write("PicPack", "0", LpAppname);
MyIni.Write("BREAKMODE", "1", LpAppname);
m_ZpjOPenFlag = true;
}
3、添加Bas文件到Zpj項(xiàng)目里面。
//添加bas文件
private void AddBas_Click(object sender, EventArgs e)
{
if (!m_ZpjOPenFlag)
{
MessageBox.Show("先新建/打開ZPJ項(xiàng)目!");
return;
}
//創(chuàng)建打開文件對話框
OpenFileDialog ofd2 = new OpenFileDialog();
ofd2.Filter = "ZMC Basic Files (*.bas)|*.bas";
ofd2.RestoreDirectory = true;
//如果文件選擇成功
if (ofd2.ShowDialog() == DialogResult.OK)
{
string fullname = ofd2.FileName;
m_ZpjFilePath = System.IO.Path.GetDirectoryName(fullname); //路徑
m_SubFileName = System.IO.Path.GetFileName(fullname); //名稱
m_ZpjFile_Info[num].pFileName = m_SubFileName;
m_ZpjFile_Info[num].nAutoTask = -1;
m_ZpjFile_Info[num].nFileType= 1; //bas的文件類型是1
num++;
//通過Ini文件來記錄Zpj項(xiàng)目文件信息
SaveZpj();
//在控件上顯示出來項(xiàng)目文件信息
ShowFileList();
}
}
//保存ZPJ文件
public void SaveZpj()
{
//打開ZPJ的ini文件
string IniFileName = m_ZpjFilePath + "\\" + m_ZpjFileName;
var MyIni = new IniFile(IniFileName);
string LpAppname, Lpkeynum, Lpdata;
LpAppname = "Controller";
Lpkeynum = "TypeName ";
String iFileName = "";
MyIni.Write("Files", num.ToString(), LpAppname);
//寫FileList信息
LpAppname = "FileList";
//遍歷ZPJ里面的文件情況
int i=0;
for (i = 0; i < num; i++)
{
if (m_ZpjFile_Info[i].pFileName == "")
{
Lpdata = "空文件!" + m_ZpjFile_Info[i].nAutoTask.ToString();
}
//子文件名帶路徑
iFileName = m_ZpjFilePath + "\\" + m_ZpjFile_Info[i].pFileName;
if (!System.IO.File.Exists(iFileName))
{
Lpdata = "文件不存在!" + m_ZpjFile_Info[i].pFileName;
MessageBox.Show(Lpdata);
}
//更新子文件ID
Lpkeynum = "File" + (i + 1);
Lpdata = m_ZpjFile_Info[i].pFileName;
MyIni.Write(Lpkeynum, Lpdata, LpAppname);
//更新子文件類型
Lpkeynum = "FileType" + (i + 1);
Lpdata = m_ZpjFile_Info[i].nFileType.ToString();
MyIni.Write(Lpkeynum, Lpdata, LpAppname);
//更新子文件自動運(yùn)行號
Lpkeynum = "AutoRun" + (i + 1);
Lpdata = m_ZpjFile_Info[i].nAutoTask.ToString();
MyIni.Write(Lpkeynum, Lpdata, LpAppname);
}
//刪除多余的鍵
Lpkeynum = "File" + (num+1);
MyIni.DeleteKey(Lpkeynum, LpAppname);
Lpkeynum = "FileType" + (num + 1);
MyIni.DeleteKey(Lpkeynum, LpAppname);
Lpkeynum = "AutoRun" + (num + 1);
MyIni.DeleteKey(Lpkeynum, LpAppname);
//寫OpenList信息
LpAppname = "OpenList";
m_ZpjOPenFlag = true;
}
4、添加Zml文件到Zpj項(xiàng)目里面。
//添加zml文件
private void AddZml_Click(object sender, EventArgs e)
{
if (!m_ZpjOPenFlag)
{
MessageBox.Show("先新建/打開ZPJ項(xiàng)目!");
return;
}
OpenFileDialog ofd2 = new OpenFileDialog();
ofd2.Filter = "ZMC ZML Files (*.zml)|*.zml";
ofd2.RestoreDirectory = true;
if (ofd2.ShowDialog() == DialogResult.OK)
{
string fullname = ofd2.FileName;
m_ZpjFilePath = System.IO.Path.GetDirectoryName(fullname); //路徑
m_SubFileName = System.IO.Path.GetFileName(fullname); //名稱
m_ZpjFile_Info[num].pFileName = m_SubFileName;
m_ZpjFile_Info[num].nAutoTask = -1;
m_ZpjFile_Info[num].nFileType = 19;//ZML文件的文件類型是19
num++;
//通過Ini文件來記錄Zpj項(xiàng)目文件信息
SaveZpj();
//在控件上顯示出來項(xiàng)目文件信息
ShowFileList();
}
}
5、將ZPJ文件下載到控制器的ROM里面進(jìn)行掉電保存。
//下載到rom
private void button9_Click(object sender, EventArgs e)
{
if (!m_ZpjOPenFlag)
{
MessageBox.Show("先新建/打開ZPJ項(xiàng)目!");
return;
}
if (g_handle != (IntPtr)0)
{
ShowFileListSave();
SaveZpj();
String ZpjFileName = m_ZpjFilePath + "\\" + m_ZpjFileName;
String m_ZarFileName = m_ZpjFilePath + "\\" + "ZmcZpj.Zar";
//將ZPJ項(xiàng)目下載到控制器的ROM里面
zmcaux.ZAux_ZpjDown(g_handle, ZpjFileName, m_ZarFileName, null, 0, 1);
}
else
{
MessageBox.Show("控制器未連接");
}
}
6、通過RTSys軟件監(jiān)控Zpj文件下載后的執(zhí)行情況。

XML轉(zhuǎn)換工具使用教學(xué):

本次,正運(yùn)動技術(shù) 項(xiàng)目工程下載與XML配置文件下載 :EtherCAT超高速實(shí)時(shí)運(yùn)動控制卡XPCIE1032H上位機(jī)C#開發(fā)(十),就分享到這里。
更多精彩內(nèi)容請關(guān)注“ 正運(yùn)動小助手 ”公眾號,需要相關(guān)開發(fā)環(huán)境與例程代碼,請咨詢正運(yùn)動技術(shù)銷售工程師。
本文由正運(yùn)動技術(shù)原創(chuàng),歡迎大家轉(zhuǎn)載,共同學(xué)習(xí),一起提高中國智能制造水平。文章版權(quán)歸正運(yùn)動技術(shù)所有,如有轉(zhuǎn)載請注明文章來源。
正運(yùn)動技術(shù)專注于運(yùn)動控制技術(shù)研究和通用運(yùn)動控制軟硬件產(chǎn)品的研發(fā),是國家級高新技術(shù)企業(yè)。正運(yùn)動技術(shù)匯集了來自華為、中興等公司的優(yōu)秀人才,在堅(jiān)持自主創(chuàng)新的同時(shí),積極聯(lián)合各大高校協(xié)同運(yùn)動控制基礎(chǔ)技術(shù)的研究,是國內(nèi)工控領(lǐng)域發(fā)展最快的企業(yè)之一,也是國內(nèi)少有、完整掌握運(yùn)動控制核心技術(shù)和實(shí)時(shí)工控軟件平臺技術(shù)的企業(yè)。主要業(yè)務(wù)有:運(yùn)動控制卡_運(yùn)動控制器_EtherCAT運(yùn)動控制卡_EtherCAT控制器_運(yùn)動控制系統(tǒng)_視覺控制器__運(yùn)動控制PLC_運(yùn)動控制_機(jī)器人控制器_視覺定位_XPCIe/XPCI系列運(yùn)動控制卡等等。

|