欧美成人黄色网_欧美精品久久_国产在线一区二区三区_免费视频久久久_亚洲二区视频_欧美大片免费高清观看

產(chǎn)品分類

當(dāng)前位置: 首頁 > 傳感測(cè)量產(chǎn)品 > 數(shù)據(jù)采集產(chǎn)品 > 運(yùn)動(dòng)控制卡

類型分類:
科普知識(shí)
數(shù)據(jù)分類:
運(yùn)動(dòng)控制卡

EtherCAT運(yùn)動(dòng)控制卡小線段前瞻的連續(xù)插補(bǔ)運(yùn)動(dòng)

發(fā)布日期:2022-10-09 點(diǎn)擊率:115

  • 關(guān)鍵詞:正運(yùn)動(dòng)技術(shù),EtherCAT,運(yùn)動(dòng)控制卡


  • 摘要:今天,正運(yùn)動(dòng)技術(shù)給大家分享一下EtherCAT運(yùn)動(dòng)控制卡之ECI2828如何使用C#進(jìn)行設(shè)置前瞻功能并使用在連續(xù)插補(bǔ)運(yùn)動(dòng)中。


一運(yùn)動(dòng)控制卡硬件介紹


ECI2828系列運(yùn)動(dòng)控制卡支持多達(dá) 16 軸直線插補(bǔ)、任意圓弧插補(bǔ)、空間圓弧、螺旋插補(bǔ)、電子凸輪、電子齒輪、同步跟隨、虛擬軸、機(jī)械手指令等;采用優(yōu)化的網(wǎng)絡(luò)通訊協(xié)議可以實(shí)現(xiàn)實(shí)時(shí)的運(yùn)動(dòng)控制。


ECI2828系列運(yùn)動(dòng)運(yùn)動(dòng)控制卡支持以太網(wǎng),232 通訊接口和電腦相連,接收電腦的指令運(yùn)行,可以通過EtherCAT總線和CAN總線去連接各個(gè)擴(kuò)展模塊,從而擴(kuò)展輸入輸出點(diǎn)數(shù)或運(yùn)動(dòng)軸。


ECI2828系列運(yùn)動(dòng)控制卡的應(yīng)用程序可以使用 VC,VB,VS,C++,C#等軟件來開發(fā),程序運(yùn)行時(shí)需要?jiǎng)討B(tài)庫 zmotion.dll。調(diào)試時(shí)可以把ZDevelop軟件同時(shí)連接到控制器,從而方便調(diào)試、方便觀察。


image.png


二C#語言運(yùn)動(dòng)控制開發(fā)


(一)新建WinForm項(xiàng)目并添加函數(shù)庫


1.在VS2015菜單“文件”→“新建”→“項(xiàng)目”,啟動(dòng)創(chuàng)建項(xiàng)目向?qū)А?/p>


image.png


2.選擇開發(fā)語言為“Visual C#”和.NETframework 4以及Windows 窗體應(yīng)用程序。


image.png


3.找到廠家提供的光盤資料里面的C#函數(shù)庫,路徑如下(64位庫為例):


1)進(jìn)入廠商提供的光盤資料找到“8.PC函數(shù)”文件夾,并點(diǎn)擊進(jìn)入。


image.png


2)選擇“函數(shù)庫2.1”文件夾。


3)選擇“Windows平臺(tái)”文件夾。


4)根據(jù)需要選擇對(duì)應(yīng)的函數(shù)庫這里選擇64位庫。


5)解壓C#的壓縮包,里面有C#對(duì)應(yīng)的函數(shù)庫。


6)函數(shù)庫具體路徑如下。


image.png


4.將廠商提供的C#的庫文件以及相關(guān)文件復(fù)制到新建的項(xiàng)目中。


1)將zmcaux.cs文件復(fù)制到新建的項(xiàng)目里面中。


image.png


2)將zaux.dll和zmotion.dll文件放入bindebug文件夾中。


image.png


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


image.png


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


image.png


至此項(xiàng)目新建完成,可進(jìn)行C#項(xiàng)目開發(fā)。


(二)查看PC函數(shù)手冊(cè)

1.PC函數(shù)手冊(cè)也在光盤資料里面,具體路徑如下:“光盤資料8.PC函數(shù)函數(shù)庫2.1Motion函數(shù)庫編程手冊(cè) V2.1.pdf”。


image.png


2.PC編程,一般如果網(wǎng)口對(duì)控制器和工控機(jī)進(jìn)行鏈接。網(wǎng)口鏈接函數(shù)接口是ZAux_OpenEth();如果鏈接成功,該接口會(huì)返回一個(gè)鏈接句柄。通過操作這個(gè)鏈接句柄可以實(shí)現(xiàn)對(duì)控制器的控制。


ZAux_OpenEth()接口說明:


image.png


項(xiàng)目應(yīng)用截圖:


image.png


3.使用連續(xù)插補(bǔ)運(yùn)動(dòng)相關(guān)的指令操作鏈接句柄“g_handle”,對(duì)控制器進(jìn)行連續(xù)插補(bǔ)運(yùn)動(dòng)控制,連續(xù)插補(bǔ)運(yùn)動(dòng)相關(guān)的指令如下。


ZAux_Direct_MoveAbs絕對(duì)直線插補(bǔ)運(yùn)動(dòng)指令:


image.png


ZAux_Direct_Move相對(duì)直線插補(bǔ)運(yùn)動(dòng)指令:


image.png

 

ZAux_Direct_MoveCirc2Abs三點(diǎn)定圓絕對(duì)圓弧插補(bǔ)指令:


image.png


ZAux_Direct_MoveCirc2三點(diǎn)定圓相對(duì)對(duì)圓弧插補(bǔ)指令:


image.png


ZAux_Direct_MHelical2Abs三點(diǎn)定圓絕對(duì)螺旋插補(bǔ)指令:


image.png


ZAux_Direct_MHelical2Abs三點(diǎn)定圓絕對(duì)螺旋插補(bǔ)指令:


image.png


ZAux_Direct_MHelical三點(diǎn)定圓相對(duì)螺旋插補(bǔ)指令:


image.png


ZAux_Direct_SetCornerMode前瞻模式設(shè)置指令:


image.png


ZAux_Direct_SetDecelAngle拐角減速減速角度設(shè)置指令:


image.png


ZAux_Direct_SetStopAngle拐角減速停止角度設(shè)置指令:


image.png


ZAux_Direct_SetFullSpRadius小圓限速限速半徑設(shè)置指令:


image.png


ZAux_Direct_SetZsmooth自動(dòng)倒角倒角半徑設(shè)置指令:


image.png


緩沖區(qū)指令:


ZAux_Direct_GetRemain_LineBuffer獲取剩余緩沖區(qū)大小指令:


image.png


(三)C#進(jìn)行小線段前瞻連續(xù)插補(bǔ)運(yùn)動(dòng)開發(fā)


1.小線段前瞻連續(xù)插補(bǔ)運(yùn)動(dòng)控制人機(jī)交互界面如下。


image.png


2.CornerMode功能前瞻設(shè)置說明:


系統(tǒng)的速度前瞻功能,一方面可以對(duì)指令進(jìn)行整體規(guī)劃,即對(duì)各段速度進(jìn)行整體規(guī)劃,再配合指令段內(nèi)的加減速控制,可以使機(jī)床保持高速運(yùn)行提高效率,使負(fù)載運(yùn)動(dòng)更加流暢,告別停停走走,系統(tǒng)通過Merge 速度融合功能實(shí)現(xiàn);另一方面,再保證高速運(yùn)行基礎(chǔ)上為了限制機(jī)械沖擊和過切等,還需進(jìn)行減速識(shí)別,通過提前識(shí)別軌跡變化,從而按照安全的減速度提前減速,系統(tǒng)通過減速/停止融合功能、 抑制沖擊功能實(shí)現(xiàn)。整體來看,速度前瞻功能既可提升整機(jī)效率,也可減少?zèng)_擊增加柔性,降低零部件磨損,增加設(shè)備使用壽命。


1)拐角減速:


拐角減速功能解決的問題是:當(dāng)指令間夾角過大時(shí),如果仍以較大速度運(yùn)行,會(huì)在夾角處產(chǎn)生較大的機(jī)械沖擊,軌跡偏離。


控制器會(huì)對(duì)指令間軌跡變化的夾角進(jìn)行提前識(shí)別,比較其與減速/停止角的大小關(guān)系,提前決定是否進(jìn)行減速,保證在指令連接處平穩(wěn)過渡。


image.png


如圖,OA過渡AB段位置時(shí)角度小于減速角度則,S1-S2段不進(jìn)行減速,AB過渡BC段時(shí)角度大于減速角度則進(jìn)行減速處理過渡過程如S2-S3段,BC過渡CD段角度大于停止角度速度需要降到零如S3-S4段位置處理。


2)小圓限速:


小圓限速功能用于處理,在運(yùn)行軌跡中可能運(yùn)行圓弧軌跡擬合成的小圓,由于角度偏轉(zhuǎn)較大導(dǎo)致出現(xiàn)軌跡偏轉(zhuǎn),因此在這種位置需要進(jìn)行速度限制的處理。開啟小圓限速,小圓半徑超過限速半徑的時(shí)候不會(huì)對(duì)速度限制,小圓半徑小于限速半徑的時(shí)候則會(huì)開始對(duì)速度進(jìn)行限制。


如圖:


小圓半徑100,限速半徑50:


image.png


小圓半徑100,限速半徑150:


image.png


3)自動(dòng)倒角:


自動(dòng)倒角功能一般是用于拐角處按照一定的倒角半徑進(jìn)行軌跡的弧度化處理,使速度變化更平滑。如圖:


未倒角:


image.png


設(shè)置倒角后軌跡:


image.png


3.例程簡易流程圖。


image.png


4.在Form1的構(gòu)造函數(shù)中調(diào)用接口ZAux_OpenEth(),使在系統(tǒng)初始化的時(shí)候自動(dòng)鏈接控制器。


public Form1()

{

    InitializeComponent();

    //鏈接控制器 

    zmcaux.ZAux_OpenEth("192.168.0.11", out g_handle);

    if (g_handle != (IntPtr)0)

    {

          MessageBox.Show("控制器鏈接成功!", "提示");

          timer1.Enabled = true;

    }

    else

    {

          MessageBox.Show("控制器鏈接失敗,請(qǐng)檢測(cè)IP地址!", "警告");

    }

}

5.通過定時(shí)器更新控制器軸狀態(tài):當(dāng)前坐標(biāo)、外設(shè)信息等等。


//定時(shí)器刷新

private void timer1_Tick(object sender, EventArgs e)

{

      int[] runstate = new int[4];

      float[] curpos = new float[4];

      int RemainBuffer = 0;

      for (int i = 0; i < 4; i++)

      {

            zmcaux.ZAux_Direct_GetIfIdle(g_handle, i, ref runstate[i]);

            zmcaux.ZAux_Direct_GetDpos(g_handle, i, ref curpos[i]);

      }

      zmcaux.ZAux_Direct_GetRemain_LineBuffer(g_handle, 0, ref RemainBuffer);

      label_runstate.Text = "x:" + curpos[0] + "  y:" + curpos[1] + "  z:" + curpos[2] + " 剩余緩沖數(shù): " + RemainBuffer + Convert.ToString(runstate[0] == 0 ? "   運(yùn)行狀態(tài):運(yùn)行" : "    運(yùn)行狀態(tài):停止");

}

6.通過啟動(dòng)按鈕的事件處理函數(shù)來設(shè)置軸參數(shù)以及前瞻參數(shù)并開始運(yùn)動(dòng)。


//啟動(dòng)

private void Button_start_Click(object sender, EventArgs e)

{

    if (g_handle == (IntPtr)0)

    {

        MessageBox.Show("未鏈接到控制器!", "提示");

    }

    else

    {

        int RemainBuffer = 0;

        int CornerMode = 0;

        int[] axislist  = {0,1,2};

        float[] poslist = { Convert.ToSingle(endpos1.Text), Convert.ToSingle(endpos2.Text), Convert.ToSingle(endpos3.Text)};

        float[] midlist = { Convert.ToSingle(midpos1.Text), Convert.ToSingle(midpos2.Text), Convert.ToSingle(midpos3.Text) };


        float[] firstlist = { Convert.ToSingle(firstpos1.Text), Convert.ToSingle(firstpos2.Text), Convert.ToSingle(firstpos3.Text) };

        float[] seclist = { Convert.ToSingle(secpos1.Text), Convert.ToSingle(secpos2.Text), Convert.ToSingle(secpos3.Text) };

        float[] thirdlist = { Convert.ToSingle(thirdpos1.Text), Convert.ToSingle(thirdpos2.Text), Convert.ToSingle(thirdpos3.Text) };

        float[] fourlist = { Convert.ToSingle(fourpos1.Text), Convert.ToSingle(fourpos2.Text), Convert.ToSingle(fourpos3.Text) };

        float[] fivelist = { Convert.ToSingle(fivepos1.Text), Convert.ToSingle(fivepos2.Text), Convert.ToSingle(fivepos3.Text) };

        float[] sixlist = { Convert.ToSingle(sixpos1.Text), Convert.ToSingle(sixpos2.Text), Convert.ToSingle(sixpos3.Text) };

        zmcaux.ZAux_Direct_base(g_handle, 3, axislist); //選擇運(yùn)動(dòng)軸列表

        zmcaux.ZAux_Direct_SetMerge(g_handle, axislist[0], 1);

        //插補(bǔ)運(yùn)動(dòng)使用的是主軸參數(shù),及base的第一個(gè)軸

        zmcaux.ZAux_Direct_SetSpeed(g_handle, axislist[0],Convert.ToSingle(textBox_speed.Text));

        zmcaux.ZAux_Direct_SetAccel(g_handle, axislist[0], Convert.ToSingle(textBox_acc.Text));

        zmcaux.ZAux_Direct_SetDecel(g_handle, axislist[0], Convert.ToSingle(textBox_dec.Text));


        if (checkBox1.Checked == true)

            CornerMode += 2;

        if (checkBox2.Checked == true)

            CornerMode += 8;

        if (checkBox3.Checked == true)

            CornerMode += 32;

        //設(shè)置前瞻模式及對(duì)應(yīng)參數(shù)

        zmcaux.ZAux_Direct_SetCornerMode(g_handle, axislist[0], CornerMode);

        zmcaux.ZAux_Direct_SetDecelAngle(g_handle, axislist[0], Convert.ToSingle(textBox_DecelAngle.Text));

        zmcaux.ZAux_Direct_SetStopAngle(g_handle, axislist[0], Convert.ToSingle(textBox_StopAngle.Text));

        zmcaux.ZAux_Direct_SetFullSpRadius(g_handle, axislist[0], Convert.ToSingle(textBox_SpRadius.Text));

        zmcaux.ZAux_Direct_SetZsmooth(g_handle, axislist[0], Convert.ToSingle(textBox_ZSmooth.Text));

        zmcaux.ZAux_Direct_SetForceSpeed(g_handle, axislist[0], Convert.ToSingle(textBox_speed.Text));

        //觸發(fā)示波器

        zmcaux.ZAux_Trigger(g_handle);

        if (run_mode == 1)          //絕對(duì)

        {

    //判斷緩沖區(qū),如果緩沖不夠則等待完成再加載指令

            while (RemainBuffer < 50)

                zmcaux.ZAux_Direct_GetRemain_LineBuffer(g_handle, axislist[0], ref RemainBuffer);

            switch (move_mode)

            { 

                case 2:     //XY圓弧

                    zmcaux.ZAux_Direct_MoveCirc2Abs(g_handle,2,axislist, midlist[0], midlist[1],poslist[0], poslist[1]);

                    break;

                case 3:     //XYZ直線


                    zmcaux.ZAux_Direct_MoveAbs(g_handle, 3, axislist, firstlist);

                    zmcaux.ZAux_Direct_MoveAbs(g_handle, 3,axislist, seclist);

                    zmcaux.ZAux_Direct_MoveAbs(g_handle, 3, axislist, thirdlist);

                    zmcaux.ZAux_Direct_MoveAbs(g_handle, 3, axislist, fourlist);

                    zmcaux.ZAux_Direct_MoveAbs(g_handle, 3, axislist, fivelist);

                    zmcaux.ZAux_Direct_MoveAbs(g_handle, 3, axislist, sixlist);

                    break;

                case 4:      //螺旋插補(bǔ)   

                    zmcaux.ZAux_Direct_MHelical2Abs(g_handle, 3, axislist, midlist[0], midlist[1], poslist[0], poslist[1], poslist[2], 0);

                    break;

                default:

                    break;

            }

        }

        else

        {

            switch (move_mode)

            {

                case 2:

                    zmcaux.ZAux_Direct_MoveCirc2(g_handle, 2, axislist, midlist[0], midlist[1], poslist[0], poslist[1]);

                    break;

                case 3:

                    zmcaux.ZAux_Direct_Move(g_handle, 3, axislist, firstlist);

                    zmcaux.ZAux_Direct_Move(g_handle, 3, axislist, seclist);

                    zmcaux.ZAux_Direct_Move(g_handle, 3, axislist, thirdlist);

                    zmcaux.ZAux_Direct_Move(g_handle, 3, axislist, fourlist);

                    zmcaux.ZAux_Direct_Move(g_handle, 3, axislist, fivelist);

                    zmcaux.ZAux_Direct_Move(g_handle, 3, axislist, sixlist);

                    break;

                case 4:

                    zmcaux.ZAux_Direct_MHelical2(g_handle, 3, axislist, midlist[0], midlist[1], poslist[0], poslist[1], poslist[2], 0);

                    break;

                default:

                    break;

            }        

        }

    }

}

7.通過坐標(biāo)清零按鈕的事件處理函數(shù)來重置當(dāng)前運(yùn)動(dòng)坐標(biāo)位置。


(四)調(diào)試與監(jiān)控


編譯運(yùn)行例程,同時(shí)連接ZDevelop軟件進(jìn)行調(diào)試,對(duì)運(yùn)動(dòng)控制的軸參數(shù)和運(yùn)動(dòng)情況進(jìn)行監(jiān)控。


使用不同的前瞻模式以及參數(shù)會(huì)導(dǎo)致速度和運(yùn)行軌跡發(fā)生變化,如下面加工軌跡以及對(duì)應(yīng)的運(yùn)行軌跡以及速度曲線圖:


拐角減速開啟,運(yùn)動(dòng)達(dá)到減速條件:


image.png


拐角減速關(guān)閉:


image.png


倒角未開啟:


image.png


倒角開啟,拐角位置圖形變平滑:


image.png


小圓半徑大于限速半徑,速度正常達(dá)到頂點(diǎn):


image.png


小圓半徑小于限速半徑,速度受到限制:


image.png


本次,正運(yùn)動(dòng)技術(shù)EtherCAT運(yùn)動(dòng)控制卡小線段前瞻的連續(xù)插補(bǔ)運(yùn)動(dòng),就分享到這里。


更多精彩內(nèi)容請(qǐng)關(guān)注“正運(yùn)動(dòng)小助手”公眾號(hào),需要相關(guān)開發(fā)環(huán)境與例程代碼,請(qǐng)咨詢正運(yùn)動(dòng)技術(shù)銷售工程師:400-089-8936。


本文由正運(yùn)動(dòng)技術(shù)原創(chuàng),歡迎大家轉(zhuǎn)載,共同學(xué)習(xí),一起提高中國智能制造水平。文章版權(quán)歸正運(yùn)動(dòng)技術(shù)所有,如有轉(zhuǎn)載請(qǐng)注明文章來源。


關(guān)于正運(yùn)動(dòng)技術(shù)


正運(yùn)動(dòng)技術(shù)專注于運(yùn)動(dòng)控制技術(shù)研究和通用運(yùn)動(dòng)控制軟硬件產(chǎn)品的研發(fā),是國家級(jí)高新技術(shù)企業(yè),主要產(chǎn)品有運(yùn)動(dòng)控制器、運(yùn)動(dòng)控制卡、視覺運(yùn)動(dòng)控制一體機(jī)、人機(jī)界面以及擴(kuò)展模塊等。


正運(yùn)動(dòng)技術(shù)匯集了來自華為、中興等公司的優(yōu)秀人才,在堅(jiān)持自主創(chuàng)新的同時(shí),積極聯(lián)合各大高校協(xié)同運(yùn)動(dòng)控制基礎(chǔ)技術(shù)的研究,是國內(nèi)工控領(lǐng)域發(fā)展最快的企業(yè)之一,也是國內(nèi)少有、完整掌握運(yùn)動(dòng)控制核心技術(shù)和實(shí)時(shí)工控軟件平臺(tái)技術(shù)的企業(yè)。 



下一篇: PLC、DCS、FCS三大控

上一篇: 機(jī)器視覺運(yùn)動(dòng)控制一體

推薦產(chǎn)品

更多
主站蜘蛛池模板: 国产成人精品电影在线观看 | 国产日韩欧美不卡www | 久久国产精久久精产国 | 欧美日韩乱码毛片免费观看 | 国产特级黄色片 | 欧美性理论片在线观看片免费 | 黄色小视频在线看 | 亚洲国产无线乱码在线观看 | 亚洲淫视频| 国产成人亚洲综合色就色 | 成人午夜大片免费视频77777 | 四虎影视在线看免费 720p | 国产精品亚洲片在线 | 久久久久久久久888 久久久久久久久a免费 | 天天色天天 | 亚洲欧美日韩高清mmm777 | 亚洲国产成人精品一区91 | 在线看片免费人成视频播 | 99riav国产| 国产亚洲成av人片在线观看 | 我和亲妺妺乱的性视频 | 精品97国产免费人成视频 | 欧美日韩亚洲精品一区二区三区 | 激情国产av做激情国产爱 | 国产一级淫片a免费播放口 国产一级淫片a免费播放口之 | 国产99久久九九精品无码 | 亚洲a影院 | 免费的a级毛片 | 欧美高清精品videos | 亚洲av无码国产精品色午夜字幕 | 在线天堂中文www官网 | 夜夜揉揉日日人人 | 国产日韩久久 | 日本中文一区 | 久9精品视频 | 香蕉精品在线 | 久久se精品一区精品二区国产 | 深夜做爰性大片的视频 | 欧美激情日韩精品久久久 | 国产精品馆 | 亚洲成人手机在线 |