|
XPCIE1032H功能簡介
XPCIE1032H是一款基於PCI Express的EtherCAT總線運動控製卡,可選6-64軸運動控製,支持多路高速數字輸入輸出,可輕鬆實現多軸同步控製和高速數據傳輸。
XPCIE1032H運動控製卡集成了強大的運動控製功能,結合MotionRT7運動控製實時軟核,解決了高速高精應用中,PC Windows開發的非實時痛點,指令交互速度比傳統的PCI/PCIe快10倍。

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

?XPCIE1032H與MotionRT7實時內核的配合具有以下優勢:

1.支持多種上位機語言開發,所有係列產品均可調用同一套API函數庫;
2.借助核內交互,可以快速調用 運動指令,響應時間快至微秒級,比傳統PCI/PCIe快10倍;
3.解決傳統PCI/PCIe運動控製卡在Windows環境下控製係統的非實時性問題;
4.支持一維/二維/三維PSO(高速硬件位置比較輸出),適用於視覺飛拍、精密點膠和激光能量控製等應用;
5.提供高速輸入接口,便於實現位置鎖存;
6.支持EtherCAT總線和脈衝輸出混合聯動、混合插補。

?使用XPCIE1032H和MotionRT7進行項目開發時,通常需要進行以下步驟:
1.安裝驅動程序,識別XPCIE1032H;
2.打開並執行文件“MotionRT710.exe”,配置參數和運行運動控製實時內核;
3.使用ZDevelop軟件連接到控製器,進行參數監控。連接時請使用PCI/LOCAL方式,並確保ZDevelop軟件版本在3.10以上;
4.完成控製程序開發,通過LOCAL鏈接方式連接到運動控製卡,實現實時運動控製。

?與傳統PCI/PCIe卡和PLC的測試數據結果對比:

我們可以從測試對比結果看出,XPCIE1032H運動控製卡配合實時運動控製內核MotionRT7,在LOCAL鏈接(核內交互)的方式下,指令交互的效率是非常穩定,當測試數量從1w增加到10w時,單條指令交互時間與多條指令交互時間波動不大,非常適用於高速高精的應用。
XPCIE1032H控製卡安裝
XPCIE1032H驅動安裝與建立連接參考往期文章 EtherCAT超高速實時運動控製卡XPCIE1032H上位機C#開發(一):驅動安裝與建立連接。
一、C#語言進行運動控製項目開發

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

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

2.用vs打開新建的項目文件,在右邊的解決方案資源管理器中點擊顯示所有,然後鼠標右鍵點擊zmcaux.cs文件,點擊包括在項目中。

3.雙擊Form1.cs裏麵的Form1,出現代碼編輯界麵,在文件開頭寫入using cszmcaux,並聲明控製器句柄g_handle。

二、PC函數介紹
PC函數手冊也在光盤資料裏麵,具體路徑如下:“光盤資料\8.PC函數\函數庫2.1\ZMotion函數庫編程手冊 V2.1.pdf”。




三、C#進行自定義電子凸輪曲線的運動
自定義電子凸輪曲線的運動人機交互界麵如下 。

可根據需求,選擇導入對應凸輪表數據或使用自定義數據。
1.在Form1的構造函數中調用接口ZAux_FastOpen(),使在係統初始化的時候自動鏈接控製器。
private void button1_Click(object sender, EventArgs e)
{
zmcaux.ZAux_OpenEth(IP_List.Text, out g_handle);
if (g_handle != (IntPtr)0)
{
timer1.Enabled = true;
//設置鏈接狀態按鈕
status.BackColor = System.Drawing.Color.Green;
status.Text = "已鏈接";
}
else
{
MessageBox.Show("控製器鏈接失敗,請檢查MotionRT7是否開啟!", "警告");
//設置鏈接狀態按鈕
status.BackColor = System.Drawing.Color.Red;
status.Text = "已斷開";
}
}
2.通過定時器更新參數信息。
//定時器
private void timer1_Tick(object sender, EventArgs e)
{
if(g_handle != null)
{
float dpos = 0, speed = 0;
zmcaux.ZAux_Direct_GetDpos(g_handle, Convert.ToInt32(textBox_axis.Text),ref dpos);
label_dpos.Text = Convert.ToString(dpos);
zmcaux.ZAux_Direct_GetSpeed(g_handle, Convert.ToInt32(textBox_axis.Text), ref speed);
label_speed.Text = Convert.ToString(speed);
}
else
{
status.BackColor = System.Drawing.Color.Red;
status.Text = "已斷開";
}
}
3.利用提前加載好的凸輪表數據,利用cam指令進行凸輪運動。
//凸輪表運動啟動
private void button3_Click(object sender, EventArgs e)
{
if (g_handle == null)
return;
zmcaux.ZAux_Direct_SetUnits(g_handle, Convert.ToInt32(textBox_axis.Text),Convert.ToSingle(textBox_unit.Text));
zmcaux.ZAux_Direct_SetSpeed(g_handle, Convert.ToInt32(textBox_axis.Text), Convert.ToSingle(textBox_speed.Text));
zmcaux.ZAux_Direct_SetAccel(g_handle, Convert.ToInt32(textBox_axis.Text), Convert.ToSingle(textBox_accel.Text));
zmcaux.ZAux_Direct_SetDecel(g_handle, Convert.ToInt32(textBox_axis.Text), Convert.ToSingle(textBox_decel.Text));
zmcaux.ZAux_Direct_SetAtype(g_handle, Convert.ToInt32(textBox_axis.Text), 1);
//進行電子凸輪運動
//設置運動總時間為5s
zmcaux.ZAux_Direct_Cam(g_handle, Convert.ToInt32(textBox_axis.Text),0, CamNum, Convert.ToSingle(textBox_unit.Text), Convert.ToSingle(textBox_speed.Text)*5);
}
4.外部導入凸輪表數據加載。
private void button_data_Click(object sender, EventArgs e)
{
dataGridView_data.Columns.Clear();
DataGridViewTextBoxColumn ActPos = new DataGridViewTextBoxColumn();
ActPos.Name = "ActPos";
ActPos.DataPropertyName = "ActPos";
ActPos.HeaderText = "位置";
dataGridView_data.Columns.Add(ActPos);
OpenFileDialog ZaoLangFile = new OpenFileDialog();
ZaoLangFile.Filter = "文本文件(*.txt;)| *.txt;| 所有文件| *.*; ";
ZaoLangFile.ValidateNames = true;
ZaoLangFile.CheckPathExists = true;
ZaoLangFile.CheckFileExists = true;
if (ZaoLangFile.ShowDialog() == DialogResult.OK)
{
string strFileName = ZaoLangFile.FileName;
//其他代碼
//FileStream FileRead = new FileStream(strFileName, FileMode.OpenOrCreate, FileAccess.Read);
string DataTest = File.ReadAllText(strFileName);
string[] strArray = DataTest.Split(new string[] { "\r\n" }, StringSplitOptions.None);
for (int i = 0; i < strArray.Length - 1; i++)
{
int index = dataGridView_data.Rows.Add();
dataGridView_data.Rows[index].Cells[0].Value = strArray[i];
}
float[] Tablelist = new float[strArray.Length];
for (int i = 0; i < strArray.Length - 1; i++)
{
Tablelist[i] = Convert.ToSingle(strArray[i]);
}
zmcaux.ZAux_Direct_SetTable(g_handle,0,strArray.Length,Tablelist);
//記錄當前寫入凸輪表數據有多少
CamNum = strArray.Length - 2;
}
}
5.自定義凸輪表數據加載。
private void button6_Click(object sender, EventArgs e)
{
dataGridView_data.Columns.Clear();
DataGridViewTextBoxColumn ActPos = new DataGridViewTextBoxColumn();
ActPos.Name = "ActPos";
ActPos.DataPropertyName = "ActPos";
ActPos.HeaderText = "位置";
dataGridView_data.Columns.Add(ActPos);
float[] CustomTable = new float[100];
for (int i = 0; i < 100; i++)
{
CustomTable[i] = (float )((Math.Sin(Math.PI*2*i/100) / (Math.PI*2)) + i / 100) * 500;
int index = dataGridView_data.Rows.Add();
dataGridView_data.Rows[index].Cells[0].Value = CustomTable[i];
}
zmcaux.ZAux_Direct_SetTable(g_handle, 0, 100, CustomTable);
CamNum = 100;
}
四、調試與監控
01 電子凸輪
1.組成部分
電子凸輪是利用構造的凸輪曲線來模擬機械凸輪,以達到機械凸輪係統相同的凸輪軸與 主軸之間相對運動的軟件係統,通過控製器控製伺服電機來模擬機械凸輪的功能,不需要另 外安裝機械結構,電子凸輪又稱Electronic CAM。
2.工作原理
電子凸輪屬於多軸同步運動,這種運動是基於主軸外加一個或多個從軸係統,是在機械 凸輪的基礎上發展而來,電子凸輪多用於周期性的曲線運動場合。
如下圖,機械凸輪按照凸輪的輪廓可以得出一段轉動角度與加工位置運動軌跡,此軌跡 為弧線,將該段弧線分解成無數個直線軌跡,組合起來得到一串趨近於弧線運動軌跡,電子 凸輪直接將此段軌跡運動參數裝入運動指令,即可控製軸走出目標軌跡。

設置一段電子凸輪的運動程序裝入控製器,通過編碼器將位置信號反饋給控製器,控製 器將接收到的位置信號進行處理後輸出給伺服驅動器,伺服驅動器控製多個軸同步運動完成 預設軌跡。
3.優點
(1)電子凸輪的使用使機器的控製精度提高,控製距離加遠,故障率降低,可靠性提高;
(2)簡 化了機構,使機構更加靈活,使調試和維修變得簡便。
(3)電子凸輪用軟件來控製信號,改變程序的相關運動參數就能改變運動曲線,應用靈活性高,工作可靠,操作簡單,不需要額外安 裝機械構件,因而不存在磨損的情況。
02 同步跟蹤
同步追蹤是一種常見的凸輪應用,其動作與“追剪”類似,都是要求從軸(伺服)的位 置在工作時與主軸同步,差別是“追剪”主要用於連續料的定長切割,而“同步追蹤”則用於隨機料(也就是物品出現的時機不固定),因yin此ci啟qi動dong信xin號hao是shi根gen據ju感gan測ce器qi,觸chu發fa後hou隻zhi追zhui蹤zong一yi次ci,設she定ding的de距ju離li到dao達da便bian自zi動dong回hui到dao起qi始shi位wei置zhi,等deng下xia次ci觸chu發fa信xin號hao收shou到dao才cai會hui再zai次ci追zhui蹤zong,常chang應ying用yong於yu流liu水shui線xian,例li如ru同tong步bu噴pen漆qi,瓶ping罐guan注zhu料liao,物wu品pin夾jia取qu等deng應ying用yong。
03 自動凸輪
自動凸輪是凸輪運動的一種,主要針對兩個軸之間的主從跟隨運動,用戶可以通過簡單 設置幾個相關參數,便可以構建主軸與從軸之間的運動關係,位置關係不是存儲於TABLE 表中,靠指令參數設置每段跟隨距離和變速過程,運動過程中從軸的速度自動計算以匹配主軸,常見運動過程有跟隨加速、減速、同步。
自動凸輪指令有 MOVELINK、MOVESLINK、FLEXLINK等,常見應用場合有追剪、 飛剪、輪切。
本例程介紹為CAM凸輪表運動的使用。
ZAux_Direct_Cam(ZMC_HANDLE handle,int iaxis, int istartpoint, int iendpoint, float ftablemulti, float fDistance)
ZAux_Direct_Cam()指令根據存儲在TABLE中的數據來決定軸的運動,這些Table數據值對應運動軌跡的位置,是相對於運動起始點的絕對位置。
注:兩個或多個ZAux_Direct_Cam指令可以同時使用同一段TABLE數據區進行操作。
運動的總時間由設置速度和第四個參數決定,運動的實際速度根據 TABLE 軌跡與時間自動匹配。
TBALE 數據需要手動設置,第一個數據為引導點,建議設為0 。
TABLE 數據*ftablemulti 這個比例= 發出的脈衝數。
請確保指令傳遞的距離參數*units 是整數個脈衝,否則出現浮點數會導致運動有細微誤差。
如下圖,是運動為造浪設備運動的某段軌跡數據通過導入凸輪表數據加載到控製器的table凸輪表中,運動出來的實際軌跡,並在設置的指定時間內運動完成。


如下圖,運行數據為內部自定義sin波形的運動數據,波形可以從圖中看出,運動小線段數據指定時間內軌跡運行完成。


自定義電子凸輪曲線運動講解視頻。

本次,正運動技術自定義電子凸輪曲線的運動 :EtherCAT超高速實時運動控製卡XPCIE1032H上位機C#開發(十三),就分享到這裏。
更多精彩內容請關注“ 正運動小助手 ”公眾號,需要相關開發環境與例程代碼,請谘詢正運動技術銷售工程師:400-089-8936。
本(ben)文(wen)由(you)正(zheng)運(yun)動(dong)技(ji)術(shu)原(yuan)創(chuang),歡(huan)迎(ying)大(da)家(jia)轉(zhuan)載(zai),共(gong)同(tong)學(xue)習(xi),一(yi)起(qi)提(ti)高(gao)中(zhong)國(guo)智(zhi)能(neng)製(zhi)造(zao)水(shui)平(ping)。文(wen)章(zhang)版(ban)權(quan)歸(gui)正(zheng)運(yun)動(dong)技(ji)術(shu)所(suo)有(you),如(ru)有(you)轉(zhuan)載(zai)請(qing)注(zhu)明(ming)文(wen)章(zhang)來(lai)源(yuan)。
正運動技術專注於運動控製技術研究和通用運動控製軟硬件產品的研發,是國家級高新技術企業。正運動技術彙集了來自華為、中zhong興xing等deng公gong司si的de優you秀xiu人ren才cai,在zai堅jian持chi自zi主zhu創chuang新xin的de同tong時shi,積ji極ji聯lian合he各ge大da高gao校xiao協xie同tong運yun動dong控kong製zhi基ji礎chu技ji術shu的de研yan究jiu,是shi國guo內nei工gong控kong領ling域yu發fa展zhan最zui快kuai的de企qi業ye之zhi一yi,也ye是shi國guo內nei少shao有you、完整掌握運動控製核心技術和實時工控軟件平台技術的企業。主要業務有:運動控製卡_運動控製器_EtherCAT運動控製卡_EtherCAT控製器_運動控製係統_視覺控製器__運動控製PLC_運動控製_機器人控製器_視覺定位_XPCIe/XPCI係列運動控製卡等等。

|