技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國(guó)傳動(dòng)網(wǎng) > 技術(shù)頻道 > 技術(shù)百科 > 自定義電子凸輪曲線的運(yùn)動(dòng):EtherCAT超高速實(shí)時(shí)運(yùn)動(dòng)控制卡XPCIE1032H上位機(jī)C#開(kāi)發(fā)(十三)

自定義電子凸輪曲線的運(yùn)動(dòng):EtherCAT超高速實(shí)時(shí)運(yùn)動(dòng)控制卡XPCIE1032H上位機(jī)C#開(kāi)發(fā)(十三)

時(shí)間:2024-02-26 17:07:31來(lái)源:深圳市正運(yùn)動(dòng)技術(shù)有限公司

導(dǎo)語(yǔ):?XPCIE1032H是一款基于PCI Express的EtherCAT總線運(yùn)動(dòng)控制卡,可選6-64軸運(yùn)動(dòng)控制,支持多路高速數(shù)字輸入輸出,可輕松實(shí)現(xiàn)多軸同步控制和高速數(shù)據(jù)傳輸。

  XPCIE1032H功能簡(jiǎn)介

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

運(yùn)動(dòng)控制

  XPCIE1032H支持PWM,PSO功能,板載16進(jìn)16出通用IO口,其中輸出口全部為高速輸出口,可配置為4路PWM輸出口或者16路高速PSO硬件比較輸出口。輸入口含有8路高速輸入口,可配置為4路高速色標(biāo)鎖存或兩路編碼器輸入。

  XPCIE1032H搭配MotionRT7實(shí)時(shí)內(nèi)核,使用本地LOCAL接口連接,通過(guò)高速的核內(nèi)交互,可以做到更快速的指令交互,單條指令與多條指令一次性交互時(shí)間可以達(dá)到3-5us左右。

運(yùn)動(dòng)控制

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

運(yùn)動(dòng)控制

  1.支持多種上位機(jī)語(yǔ)言開(kāi)發(fā),所有系列產(chǎn)品均可調(diào)用同一套API函數(shù)庫(kù);

  2.借助核內(nèi)交互,可以快速調(diào)用運(yùn)動(dòng)指令,響應(yīng)時(shí)間快至微秒級(jí),比傳統(tǒng)PCI/PCIe快10倍;

  3.解決傳統(tǒng)PCI/PCIe運(yùn)動(dòng)控制卡在Windows環(huán)境下控制系統(tǒng)的非實(shí)時(shí)性問(wèn)題;

  4.支持一維/二維/三維PSO(高速硬件位置比較輸出),適用于視覺(jué)飛拍、精密點(diǎn)膠和激光能量控制等應(yīng)用;

  5.提供高速輸入接口,便于實(shí)現(xiàn)位置鎖存;

  6.支持EtherCAT總線和脈沖輸出混合聯(lián)動(dòng)、混合插補(bǔ)。

運(yùn)動(dòng)控制

  ?使用XPCIE1032H和MotionRT7進(jìn)行項(xiàng)目開(kāi)發(fā)時(shí),通常需要進(jìn)行以下步驟:

  1.安裝驅(qū)動(dòng)程序,識(shí)別XPCIE1032H;

  2.打開(kāi)并執(zhí)行文件“MotionRT710.exe”,配置參數(shù)和運(yùn)行運(yùn)動(dòng)控制實(shí)時(shí)內(nèi)核;

  3.使用ZDevelop軟件連接到控制器,進(jìn)行參數(shù)監(jiān)控。連接時(shí)請(qǐng)使用PCI/LOCAL方式,并確保ZDevelop軟件版本在3.10以上;

  4.完成控制程序開(kāi)發(fā),通過(guò)LOCAL鏈接方式連接到運(yùn)動(dòng)控制卡,實(shí)現(xiàn)實(shí)時(shí)運(yùn)動(dòng)控制。

運(yùn)動(dòng)控制

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

運(yùn)動(dòng)控制

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

  §關(guān)閉計(jì)算機(jī)電源

  §打開(kāi)計(jì)算機(jī)機(jī)箱,選擇一條空閑的XPCIE卡槽,用螺絲刀卸下相應(yīng)的擋板條。

  § 將運(yùn)動(dòng)控制卡插入該槽,擰緊擋板條上的固定螺絲。

  XPCIE1032H驅(qū)動(dòng)安裝與建立連接參考往期文章EtherCAT超高速實(shí)時(shí)運(yùn)動(dòng)控制卡XPCIE1032H上位機(jī)C#開(kāi)發(fā)(一):驅(qū)動(dòng)安裝與建立連接。

  一、C#語(yǔ)言進(jìn)行運(yùn)動(dòng)控制項(xiàng)目開(kāi)發(fā)

運(yùn)動(dòng)控制

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

       (1)“Zmcaux.cs”放在項(xiàng)目根目錄文件中,與bin目錄同級(jí)。

運(yùn)動(dòng)控制

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

運(yùn)動(dòng)控制

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

運(yùn)動(dòng)控制

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

運(yùn)動(dòng)控制

  二、PC函數(shù)介紹PC函數(shù)手冊(cè)也在光盤(pán)資料里面,具體路徑如下:“光盤(pán)資料\8.PC函數(shù)\函數(shù)庫(kù)2.1\ZMotion函數(shù)庫(kù)編程手冊(cè) V2.1.pdf”。

運(yùn)動(dòng)控制

運(yùn)動(dòng)控制

運(yùn)動(dòng)控制

運(yùn)動(dòng)控制

  三、C#進(jìn)行自定義電子凸輪曲線的運(yùn)動(dòng)

       自定義電子凸輪曲線的運(yùn)動(dòng)人機(jī)交互界面如下。

運(yùn)動(dòng)控制

  可根據(jù)需求,選擇導(dǎo)入對(duì)應(yīng)凸輪表數(shù)據(jù)或使用自定義數(shù)據(jù)。1.在Form1的構(gòu)造函數(shù)中調(diào)用接口ZAux_FastOpen(),使在系統(tǒng)初始化的時(shí)候自動(dò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; //設(shè)置鏈接狀態(tài)按鈕 status.BackColor = System.Drawing.Color.Green; status.Text = "已鏈接"; } else { MessageBox.Show("控制器鏈接失敗,請(qǐng)檢查MotionRT7是否開(kāi)啟!", "警告"); //設(shè)置鏈接狀態(tài)按鈕 status.BackColor = System.Drawing.Color.Red; status.Text = "已斷開(kāi)"; }}

  2.通過(guò)定時(shí)器更新參數(shù)信息。

  ·

  //定時(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 = "已斷開(kāi)"; }}

  3.利用提前加載好的凸輪表數(shù)據(jù),利用cam指令進(jìn)行凸輪運(yùn)動(dòng)。

  ·

  //凸輪表運(yùn)動(dòng)啟動(dòng)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); //進(jìn)行電子凸輪運(yùn)動(dòng) //設(shè)置運(yùn)動(dòng)總時(shí)間為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.外部導(dǎo)入凸輪表數(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); //記錄當(dāng)前寫(xiě)入凸輪表數(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.組成部分電子凸輪是利用構(gòu)造的凸輪曲線來(lái)模擬機(jī)械凸輪,以達(dá)到機(jī)械凸輪系統(tǒng)相同的凸輪軸與主軸之間相對(duì)運(yùn)動(dòng)的軟件系統(tǒng),通過(guò)控制器控制伺服電機(jī)來(lái)模擬機(jī)械凸輪的功能,不需要另外安裝機(jī)械結(jié)構(gòu),電子凸輪又稱Electronic CAM。

  2.工作原理

  電子凸輪屬于多軸同步運(yùn)動(dòng),這種運(yùn)動(dòng)是基于主軸外加一個(gè)或多個(gè)從軸系統(tǒng),是在機(jī)械凸輪的基礎(chǔ)上發(fā)展而來(lái),電子凸輪多用于周期性的曲線運(yùn)動(dòng)場(chǎng)合。如下圖,機(jī)械凸輪按照凸輪的輪廓可以得出一段轉(zhuǎn)動(dòng)角度與加工位置運(yùn)動(dòng)軌跡,此軌跡為弧線,將該段弧線分解成無(wú)數(shù)個(gè)直線軌跡,組合起來(lái)得到一串趨近于弧線運(yùn)動(dòng)軌跡,電子凸輪直接將此段軌跡運(yùn)動(dòng)參數(shù)裝入運(yùn)動(dòng)指令,即可控制軸走出目標(biāo)軌跡。

運(yùn)動(dòng)控制

  設(shè)置一段電子凸輪的運(yùn)動(dòng)程序裝入控制器,通過(guò)編碼器將位置信號(hào)反饋給控制器,控制器將接收到的位置信號(hào)進(jìn)行處理后輸出給伺服驅(qū)動(dòng)器,伺服驅(qū)動(dòng)器控制多個(gè)軸同步運(yùn)動(dòng)完成預(yù)設(shè)軌跡。

  3.優(yōu)點(diǎn)

  (1)電子凸輪的使用使機(jī)器的控制精度提高,控制距離加遠(yuǎn),故障率降低,可靠性提高;(2)簡(jiǎn)化了機(jī)構(gòu),使機(jī)構(gòu)更加靈活,使調(diào)試和維修變得簡(jiǎn)便。

  (3)電子凸輪用軟件來(lái)控制信號(hào),改變程序的相關(guān)運(yùn)動(dòng)參數(shù)就能改變運(yùn)動(dòng)曲線,應(yīng)用靈活性高,工作可靠,操作簡(jiǎn)單,不需要額外安裝機(jī)械構(gòu)件,因而不存在磨損的情況。

  02同步跟蹤

  同步追蹤是一種常見(jiàn)的凸輪應(yīng)用,其動(dòng)作與“追剪”類(lèi)似,都是要求從軸(伺服)的位置在工作時(shí)與主軸同步,差別是“追剪”主要用于連續(xù)料的定長(zhǎng)切割,而“同步追蹤”則用于隨機(jī)料(也就是物品出現(xiàn)的時(shí)機(jī)不固定),因此啟動(dòng)信號(hào)是根據(jù)感測(cè)器,觸發(fā)后只追蹤一次,設(shè)定的距離到達(dá)便自動(dòng)回到起始位置,等下次觸發(fā)信號(hào)收到才會(huì)再次追蹤,常應(yīng)用于流水線,例如同步噴漆,瓶罐注料,物品夾取等應(yīng)用。

  03自動(dòng)凸輪

  自動(dòng)凸輪是凸輪運(yùn)動(dòng)的一種,主要針對(duì)兩個(gè)軸之間的主從跟隨運(yùn)動(dòng),用戶可以通過(guò)簡(jiǎn)單設(shè)置幾個(gè)相關(guān)參數(shù),便可以構(gòu)建主軸與從軸之間的運(yùn)動(dòng)關(guān)系,位置關(guān)系不是存儲(chǔ)于TABLE表中,靠指令參數(shù)設(shè)置每段跟隨距離和變速過(guò)程,運(yùn)動(dòng)過(guò)程中從軸的速度自動(dòng)計(jì)算以匹配主軸,常見(jiàn)運(yùn)動(dòng)過(guò)程有跟隨加速、減速、同步。

  自動(dòng)凸輪指令有MOVELINK、MOVESLINK、FLEXLINK等,常見(jiàn)應(yīng)用場(chǎng)合有追剪、飛剪、輪切。

  本例程介紹為CAM凸輪表運(yùn)動(dòng)的使用。ZAux_Direct_Cam(ZMC_HANDLE handle,int iaxis, int istartpoint, int iendpoint,float ftablemulti, float fDistance)ZAux_Direct_Cam()指令根據(jù)存儲(chǔ)在TABLE中的數(shù)據(jù)來(lái)決定軸的運(yùn)動(dòng),這些Table數(shù)據(jù)值對(duì)應(yīng)運(yùn)動(dòng)軌跡的位置,是相對(duì)于運(yùn)動(dòng)起始點(diǎn)的絕對(duì)位置。注:兩個(gè)或多個(gè)ZAux_Direct_Cam指令可以同時(shí)使用同一段TABLE數(shù)據(jù)區(qū)進(jìn)行操作。運(yùn)動(dòng)的總時(shí)間由設(shè)置速度和第四個(gè)參數(shù)決定,運(yùn)動(dòng)的實(shí)際速度根據(jù)TABLE軌跡與時(shí)間自動(dòng)匹配。TBALE數(shù)據(jù)需要手動(dòng)設(shè)置,第一個(gè)數(shù)據(jù)為引導(dǎo)點(diǎn),建議設(shè)為0。TABLE數(shù)據(jù)*ftablemulti這個(gè)比例=發(fā)出的脈沖數(shù)。請(qǐng)確保指令傳遞的距離參數(shù)*units是整數(shù)個(gè)脈沖,否則出現(xiàn)浮點(diǎn)數(shù)會(huì)導(dǎo)致運(yùn)動(dòng)有細(xì)微誤差。如下圖,是運(yùn)動(dòng)為造浪設(shè)備運(yùn)動(dòng)的某段軌跡數(shù)據(jù)通過(guò)導(dǎo)入凸輪表數(shù)據(jù)加載到控制器的table凸輪表中,運(yùn)動(dòng)出來(lái)的實(shí)際軌跡,并在設(shè)置的指定時(shí)間內(nèi)運(yùn)動(dòng)完成。

運(yùn)動(dòng)控制

運(yùn)動(dòng)控制

  如下圖,運(yùn)行數(shù)據(jù)為內(nèi)部自定義sin波形的運(yùn)動(dòng)數(shù)據(jù),波形可以從圖中看出,運(yùn)動(dòng)小線段數(shù)據(jù)指定時(shí)間內(nèi)軌跡運(yùn)行完成。

運(yùn)動(dòng)控制

運(yùn)動(dòng)控制

標(biāo)簽: 運(yùn)動(dòng)控制

點(diǎn)贊

分享到:

上一篇:嵌入式開(kāi)發(fā)的基本步驟

下一篇:有刷電機(jī)的核心電刷考量

中國(guó)傳動(dòng)網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來(lái)源:中國(guó)傳動(dòng)網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國(guó)傳動(dòng)網(wǎng)(www.treenowplaneincome.com)獨(dú)家所有。如需轉(zhuǎn)載請(qǐng)與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載使用時(shí)須注明來(lái)源“中國(guó)傳動(dòng)網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明其他來(lái)源的稿件,均來(lái)自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請(qǐng)保留稿件來(lái)源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。

網(wǎng)站簡(jiǎn)介|會(huì)員服務(wù)|聯(lián)系方式|幫助信息|版權(quán)信息|網(wǎng)站地圖|友情鏈接|法律支持|意見(jiàn)反饋|sitemap

中國(guó)傳動(dòng)網(wǎng)-工業(yè)自動(dòng)化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務(wù)平臺(tái)

網(wǎng)站客服服務(wù)咨詢采購(gòu)咨詢媒體合作

Chuandong.com Copyright ?2005 - 2024 ,All Rights Reserved 版權(quán)所有 粵ICP備 14004826號(hào) | 營(yíng)業(yè)執(zhí)照證書(shū) | 不良信息舉報(bào)中心 | 粵公網(wǎng)安備 44030402000946號(hào)