時間:2024-02-26 17:07:31來源:深圳市正運動技術有限公司
XPCIE1032H功能簡介
XPCIE1032H是一款基于PCI Express的EtherCAT總線運動控制卡,可選6-64軸運動控制,支持多路高速數(shù)字輸入輸出,可輕松實現(xiàn)多軸同步控制和高速數(shù)據(jù)傳輸。XPCIE1032H集成了強大的運動控制功能,結合MotionRT7運動控制實時軟核,解決了高速高精應用中,PC Windows開發(fā)的非實時痛點,指令交互速度比傳統(tǒng)的PCI/PCIe快10倍。
XPCIE1032H支持PWM,PSO功能,板載16進16出通用IO口,其中輸出口全部為高速輸出口,可配置為4路PWM輸出口或者16路高速PSO硬件比較輸出口。輸入口含有8路高速輸入口,可配置為4路高速色標鎖存或兩路編碼器輸入。
XPCIE1032H搭配MotionRT7實時內(nèi)核,使用本地LOCAL接口連接,通過高速的核內(nèi)交互,可以做到更快速的指令交互,單條指令與多條指令一次性交互時間可以達到3-5us左右。
?XPCIE1032H與MotionRT7實時內(nèi)核的配合具有以下優(yōu)勢:
1.支持多種上位機語言開發(fā),所有系列產(chǎn)品均可調(diào)用同一套API函數(shù)庫;
2.借助核內(nèi)交互,可以快速調(diào)用運動指令,響應時間快至微秒級,比傳統(tǒng)PCI/PCIe快10倍;
3.解決傳統(tǒng)PCI/PCIe運動控制卡在Windows環(huán)境下控制系統(tǒng)的非實時性問題;
4.支持一維/二維/三維PSO(高速硬件位置比較輸出),適用于視覺飛拍、精密點膠和激光能量控制等應用;
5.提供高速輸入接口,便于實現(xiàn)位置鎖存;
6.支持EtherCAT總線和脈沖輸出混合聯(lián)動、混合插補。
?使用XPCIE1032H和MotionRT7進行項目開發(fā)時,通常需要進行以下步驟:
1.安裝驅(qū)動程序,識別XPCIE1032H;
2.打開并執(zhí)行文件“MotionRT710.exe”,配置參數(shù)和運行運動控制實時內(nèi)核;
3.使用ZDevelop軟件連接到控制器,進行參數(shù)監(jiān)控。連接時請使用PCI/LOCAL方式,并確保ZDevelop軟件版本在3.10以上;
4.完成控制程序開發(fā),通過LOCAL鏈接方式連接到運動控制卡,實現(xiàn)實時運動控制。
?與傳統(tǒng)PCI/PCIe卡和PLC的測試數(shù)據(jù)結果對比:
我們可以從測試對比結果看出,XPCIE1032H運動控制卡配合實時運動控制內(nèi)核MotionRT7,在LOCAL鏈接(核內(nèi)交互)的方式下,指令交互的效率是非常穩(wěn)定,當測試數(shù)量從1w增加到10w時,單條指令交互時間與多條指令交互時間波動不大,非常適用于高速高精的應用。XPCIE1032H控制卡安裝
§關閉計算機電源。
§打開計算機機箱,選擇一條空閑的XPCIE卡槽,用螺絲刀卸下相應的擋板條。
§ 將運動控制卡插入該槽,擰緊擋板條上的固定螺絲。
XPCIE1032H驅(qū)動安裝與建立連接參考往期文章EtherCAT超高速實時運動控制卡XPCIE1032H上位機C#開發(fā)(一):驅(qū)動安裝與建立連接。
一、C#語言進行運動控制項目開發(fā)
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,出現(xiàn)代碼編輯界面,在文件開頭寫入using cszmcaux,并聲明控制器句柄g_handle。
二、PC函數(shù)介紹PC函數(shù)手冊也在光盤資料里面,具體路徑如下:“光盤資料\8.PC函數(shù)\函數(shù)庫2.1\ZMotion函數(shù)庫編程手冊 V2.1.pdf”。
三、C#進行自定義電子凸輪曲線的運動
自定義電子凸輪曲線的運動人機交互界面如下。
可根據(jù)需求,選擇導入對應凸輪表數(shù)據(jù)或使用自定義數(shù)據(jù)。1.在Form1的構造函數(shù)中調(diào)用接口ZAux_FastOpen(),使在系統(tǒng)初始化的時候自動鏈接控制器。
·
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; //設置鏈接狀態(tài)按鈕 status.BackColor = System.Drawing.Color.Green; status.Text = "已鏈接"; } else { MessageBox.Show("控制器鏈接失敗,請檢查MotionRT7是否開啟!", "警告"); //設置鏈接狀態(tài)按鈕 status.BackColor = System.Drawing.Color.Red; status.Text = "已斷開"; }}
2.通過定時器更新參數(shù)信息。
·
//定時器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.利用提前加載好的凸輪表數(shù)據(jù),利用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.外部導入凸輪表數(shù)據(jù)加載。
·
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); //記錄當前寫入凸輪表數(shù)據(jù)有多少 CamNum = strArray.Length - 2; }}
5.自定義凸輪表數(shù)據(jù)加載。
·
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;}
四、調(diào)試與監(jiān)控01電子凸輪
1.組成部分電子凸輪是利用構造的凸輪曲線來模擬機械凸輪,以達到機械凸輪系統(tǒng)相同的凸輪軸與主軸之間相對運動的軟件系統(tǒng),通過控制器控制伺服電機來模擬機械凸輪的功能,不需要另外安裝機械結構,電子凸輪又稱Electronic CAM。
2.工作原理
電子凸輪屬于多軸同步運動,這種運動是基于主軸外加一個或多個從軸系統(tǒng),是在機械凸輪的基礎上發(fā)展而來,電子凸輪多用于周期性的曲線運動場合。如下圖,機械凸輪按照凸輪的輪廓可以得出一段轉動角度與加工位置運動軌跡,此軌跡為弧線,將該段弧線分解成無數(shù)個直線軌跡,組合起來得到一串趨近于弧線運動軌跡,電子凸輪直接將此段軌跡運動參數(shù)裝入運動指令,即可控制軸走出目標軌跡。
設置一段電子凸輪的運動程序裝入控制器,通過編碼器將位置信號反饋給控制器,控制器將接收到的位置信號進行處理后輸出給伺服驅(qū)動器,伺服驅(qū)動器控制多個軸同步運動完成預設軌跡。
3.優(yōu)點
(1)電子凸輪的使用使機器的控制精度提高,控制距離加遠,故障率降低,可靠性提高;(2)簡化了機構,使機構更加靈活,使調(diào)試和維修變得簡便。
(3)電子凸輪用軟件來控制信號,改變程序的相關運動參數(shù)就能改變運動曲線,應用靈活性高,工作可靠,操作簡單,不需要額外安裝機械構件,因而不存在磨損的情況。
02同步跟蹤
同步追蹤是一種常見的凸輪應用,其動作與“追剪”類似,都是要求從軸(伺服)的位置在工作時與主軸同步,差別是“追剪”主要用于連續(xù)料的定長切割,而“同步追蹤”則用于隨機料(也就是物品出現(xiàn)的時機不固定),因此啟動信號是根據(jù)感測器,觸發(fā)后只追蹤一次,設定的距離到達便自動回到起始位置,等下次觸發(fā)信號收到才會再次追蹤,常應用于流水線,例如同步噴漆,瓶罐注料,物品夾取等應用。
03自動凸輪
自動凸輪是凸輪運動的一種,主要針對兩個軸之間的主從跟隨運動,用戶可以通過簡單設置幾個相關參數(shù),便可以構建主軸與從軸之間的運動關系,位置關系不是存儲于TABLE表中,靠指令參數(shù)設置每段跟隨距離和變速過程,運動過程中從軸的速度自動計算以匹配主軸,常見運動過程有跟隨加速、減速、同步。
自動凸輪指令有MOVELINK、MOVESLINK、FLEXLINK等,常見應用場合有追剪、飛剪、輪切。
本例程介紹為CAM凸輪表運動的使用。ZAux_Direct_Cam(ZMC_HANDLE handle,int iaxis, int istartpoint, int iendpoint,float ftablemulti, float fDistance)ZAux_Direct_Cam()指令根據(jù)存儲在TABLE中的數(shù)據(jù)來決定軸的運動,這些Table數(shù)據(jù)值對應運動軌跡的位置,是相對于運動起始點的絕對位置。注:兩個或多個ZAux_Direct_Cam指令可以同時使用同一段TABLE數(shù)據(jù)區(qū)進行操作。運動的總時間由設置速度和第四個參數(shù)決定,運動的實際速度根據(jù)TABLE軌跡與時間自動匹配。TBALE數(shù)據(jù)需要手動設置,第一個數(shù)據(jù)為引導點,建議設為0。TABLE數(shù)據(jù)*ftablemulti這個比例=發(fā)出的脈沖數(shù)。請確保指令傳遞的距離參數(shù)*units是整數(shù)個脈沖,否則出現(xiàn)浮點數(shù)會導致運動有細微誤差。如下圖,是運動為造浪設備運動的某段軌跡數(shù)據(jù)通過導入凸輪表數(shù)據(jù)加載到控制器的table凸輪表中,運動出來的實際軌跡,并在設置的指定時間內(nèi)運動完成。
如下圖,運行數(shù)據(jù)為內(nèi)部自定義sin波形的運動數(shù)據(jù),波形可以從圖中看出,運動小線段數(shù)據(jù)指定時間內(nèi)軌跡運行完成。
上一篇:嵌入式開發(fā)的基本步驟
下一篇:有刷電機的核心電刷考量
中國傳動網(wǎng)版權與免責聲明:凡本網(wǎng)注明[來源:中國傳動網(wǎng)]的所有文字、圖片、音視和視頻文件,版權均為中國傳動網(wǎng)(m.u63ivq3.com)獨家所有。如需轉載請與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個人轉載使用時須注明來源“中國傳動網(wǎng)”,違反者本網(wǎng)將追究其法律責任。
本網(wǎng)轉載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權屬于原版權人。轉載請保留稿件來源及作者,禁止擅自篡改,違者自負版權法律責任。