无码中文字幕色专区_91av俱乐部_无码人妻h动漫_26uuu成人_91九色丨porny丨国产jk_青青视频在线播放_国内自拍第二页_国产又粗又长又爽又黄的视频_色哟哟免费网站_久久出品必属精品_a级黄色一级片_99日在线视频

中國自動化學(xué)會專家咨詢工作委員會指定宣傳媒體
文摘詳情
gkongbbs

PC強(qiáng)實時運動控制(一):C#的EtherCAT總線初始化(下)

http://www.moduwu.com 2026-02-05 09:08 深圳市正運動技術(shù)有限公司

今天,正運動小助手給大家分享一下強(qiáng)實時運動控制內(nèi)核MotionRT750下PC上位機(jī)的EtherCAT總線初始化。

PC上位機(jī)EtherCAT總線的初始化方式主要分為兩種:純上位機(jī)初始化和下載BASIC腳本初始化。上節(jié)課程給大家講解了如何通過純上位機(jī)的方法來實現(xiàn)PC上位機(jī)EtherCAT總線初始化【詳情點擊→PC強(qiáng)實時運動控制(一):C#的EtherCAT總線初始化(上)】。

本文將詳細(xì)講解如何通過使用ZMotionTools工具配置得到的ZAR文件來進(jìn)行EtherCAT總線初始化。

這里所說的EtherCAT總線初始化,是指正運動的控制器作為主站和EtherCAT的驅(qū)動器等從站建立正常通訊,并把各個驅(qū)動器映射到控制器的對應(yīng)軸上的過程。(默認(rèn)第一個驅(qū)動器是0軸,第二個驅(qū)動器是1軸,以此類推)

1.脈沖步進(jìn)驅(qū)動器
脈沖步進(jìn)驅(qū)動器一般上電即可使能,把控制器對應(yīng)軸的軸類型設(shè)置成1或者7,然后就可以發(fā)送運動指令去控制了。

2.脈沖伺服驅(qū)動器
脈沖伺服驅(qū)動器的使能操作,通常是將控制器的輸出口連接至驅(qū)動器對應(yīng)的使能口,再由控制器通過控制對應(yīng)輸出口的開關(guān)狀態(tài)來實現(xiàn)脈沖伺服驅(qū)動器的使能;使能后把控制器對應(yīng)軸的軸類型設(shè)置成4,然后就可以發(fā)送運動指令去控制了。

3.總線驅(qū)動器
總線驅(qū)動器相對復(fù)雜一點,需先由控制器執(zhí)行總線初始化程序后控制器和驅(qū)動器通訊上,總線驅(qū)動器的使能可以通過ZAux_Direct_SetAxisEnable接口去控制,總線驅(qū)動器跑位置模式時,軸類型設(shè)置成65,就可以發(fā)送運動指令去控制了。

一.全國產(chǎn)強(qiáng)實時運動控制內(nèi)核MotionRT750

MotionRT750是正運動技術(shù)首家自主自研的x86架構(gòu)Windows系統(tǒng)或Linux系統(tǒng)下獨占確定CPU的強(qiáng)實時運動控制內(nèi)核。

正運動實時控制內(nèi)核MotionRT750.webp

該方案采用獨占確定CPU內(nèi)核技術(shù)實現(xiàn)超強(qiáng)性能的強(qiáng)實時運動控制。它將核心的運動控制、機(jī)器人算法、數(shù)控(CNC)及機(jī)器視覺等強(qiáng)實時的任務(wù),集中運行在1-2個專用CPU核上。與此同時,其余CPU核則專注于處理Windows/Linux相關(guān)的非實時任務(wù)。

此外集成MotionRT750 Runtime實時層與操作系統(tǒng)非實時層,并利用高速共享內(nèi)存進(jìn)行數(shù)據(jù)交互,顯著提升了運動控制與上層應(yīng)用間的通信效率及函數(shù)執(zhí)行速度,最終實現(xiàn)更穩(wěn)定、更高效的智能裝備控制,確保了運動控制任務(wù)的絕對實時性與系統(tǒng)穩(wěn)定性,特別適用于半導(dǎo)體、電子裝備等高速高精的應(yīng)用場合。

強(qiáng)實時運動控制內(nèi)核MotionRT750應(yīng)用.png

MotionRT750應(yīng)用優(yōu)勢:

1.跨平臺兼容性:支持Windows/Linux系統(tǒng),適配不同等級CPU。

2.開發(fā)靈活性:提供多語言編程接口,便于二次開發(fā)與功能定制。

3.實時性提升:通過CPU內(nèi)核獨占機(jī)制與高效LOCAL接口,實現(xiàn)2-3us指令交互周期,較傳統(tǒng)PCI/PCIe方案提速近20倍。

4.擴(kuò)展能力強(qiáng)化:多卡多EtherCAT通道架構(gòu)支持254軸運動控制及500us EtherCAT周期。

5.系統(tǒng)穩(wěn)定性:32軸125us EtherCAT冗余架構(gòu)消除單點故障風(fēng)險,保障連續(xù)生產(chǎn)。

6.安全可靠性:不懼Windows系統(tǒng)崩潰影響,藍(lán)屏?xí)r仍可維持急停與安全停機(jī)功能有效,確保產(chǎn)線安全運行。

7.功能擴(kuò)展性:實時內(nèi)核支持C語言程序開發(fā),方便功能拓展與實時代碼提升效率。

MotionRT750視頻介紹可點擊→正運動強(qiáng)實時運動控制內(nèi)核MotionRT750

更多關(guān)于MotionRT750的詳情介紹與使用點擊→強(qiáng)實時運動控制內(nèi)核MotionRT750(一):驅(qū)動安裝、內(nèi)核配置與使用。

二.C#語言進(jìn)行項目開發(fā)

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

2.1.webp

2.選擇開發(fā)語言為“C#”和Windows窗體應(yīng)用程序,點擊下一步。

2.2~1.webp

3.配置好項目名稱和位置,以及相應(yīng)框架,點擊創(chuàng)建。

2.3.webp

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

進(jìn)入廠商提供的光盤資料,找到zauxdll.dll,zmotion.dll和Zmcaux.cs這三個庫文件。庫文件路徑:【00光盤資料】→【04PC函數(shù)】→【01PC函數(shù)庫V2.1】→【W(wǎng)indows平臺】→【C#】→【64位】→【庫文件】。

2.4.webp

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

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

2.5.1.webp

(2)將zauxdll.dll和zmotion.dll文件放入bin\debug文件夾中。

2.5.2~1.webp

(3)將Zmcaux.cs文件添加進(jìn)項目中。右鍵項目名稱,選擇添加,再選擇現(xiàn)有項,選擇Zmcaux.cs文件。

2.5.3.webp

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

2.6~1.webp

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

三.PC函數(shù)介紹

PC函數(shù)手冊可在光盤資料獲取,具體路徑如下:“00光盤資料\03編程手冊\03ZMotion PC函數(shù)庫編程手冊”。

3.webp

指令269.webp

指令270~1.webp

指令274.webp

指令275.webp

指令246.webp

四.使用ZMotionTools工具配置并生成ZAR文件

在ZMotionToolsQT文件中找到使用手冊,參考《ZMotionTools使用手冊.pdf》進(jìn)行調(diào)試工作,當(dāng)總線初始化正常且無差錯,手動調(diào)試和回零動作均正常后,便可導(dǎo)出ZAR文件給上位機(jī)軟件工程師使用。

4.webp

五.總線初始化的ZAR文件導(dǎo)出步驟

點擊【4_配置導(dǎo)入與保存】進(jìn)入保存界面,再點擊【配置更新到控制器】后,先瀏覽導(dǎo)出文件路徑(存儲文件路徑不要有中文),再點擊【導(dǎo)出】,等待提示文件導(dǎo)出成功。

5.1~1.webp

在導(dǎo)出的文件夾內(nèi),還存在一個名為【ZmcEcatConfig】的子文件夾,其中的【ZmcEcatConfig.zar】文件即為我們工具導(dǎo)出的配置文件,上位機(jī)軟件工程師直接拷貝該ZAR文件使用即可。

5.2.webp

六.C#項目如何使用配置工具導(dǎo)出ZAR文件進(jìn)行EtherCAT總線初始化

1.將ZmotionTools工具導(dǎo)出的ZAR文件放置在C#項目的ZAR文件目錄下,實際開發(fā)項目時可根據(jù)需求自定義路徑。

6.1.webp

2.上位機(jī)如何下載ZAR腳本進(jìn)行總線初始化,并等待總線初始化完成。

6.2.webp

打包好的ZAR文件里面中有定義一個全局變量【EcatInitStatus】,這個變量對總線初始化的完成情況有如下如下定義:

? -1 — 未進(jìn)行

? 0 初始化失敗

? 1 初始化完成,初始化OK

? 2 從站個數(shù)對不上(配置軟件設(shè)置【總線節(jié)點數(shù)】大于0后才生效)

? 3 總線軸個數(shù)對不上(配置軟件設(shè)置【總線驅(qū)動器軸數(shù)】大于0后才生效)

6.2.2.webp

所以上位機(jī)可以通過【ZAux_Direct_GetVariableInt】去獲取ZAR文件里面定義的全局變量的數(shù)值來判斷總線初始化是否成功,當(dāng)然總線初始化是需要時間的。

我們一般把ZAR程序下載后,上位機(jī)通過While循環(huán)(可以設(shè)置一個超時時間比如30秒)在超時時間內(nèi)每隔50ms就去獲取一次變量【EcatInitStatus】的值。

如果返回值不等于-1就說明總線初始化腳本執(zhí)行結(jié)束了,然后根據(jù)返回值去判斷是否成功。如果返回值等于-1就需要一直獲取變量【EcatInitStatus】的值直到超過自己設(shè)置的超時時間就報警。

上位機(jī)具體代碼如下:

//選擇RAM模式下載ZAR文件到控制器進(jìn)行總線初始化
int ret = zmcaux.ZAux_ZarDown(g_handle, filePaths[0], 0);
//如果ZAR文件下載成功
if (0 == ret)
{
    //等待2秒后再去獲取總線初始化情況
    Thread.Sleep(2000);
    //設(shè)置while循環(huán)的超時時間是30s
    int Time0ut = 30000;
    while (Time0ut > 0)
    {
        //獲取總線初始化狀態(tài)的標(biāo)志位
        ret = zmcaux.ZAux_Direct_GetVariableInt(g_handle, "EcatInitStatus", ref EcatInitStatus);
        if ((ret == 0) && (-1 != EcatInitStatus))
        {
            if (0 == EcatInitStatus)
            {
                MessageBox.Show("總線初始化失敗");
            }
            else if (1 == EcatInitStatus)
            {
                MessageBox.Show("總線初始化成功");
            }
            else if (2 == EcatInitStatus)
            {
                MessageBox.Show("總線掃描,發(fā)現(xiàn)節(jié)點個數(shù)和設(shè)置的不對應(yīng)");
            }
            else if (3 == EcatInitStatus)
            {
                MessageBox.Show("總線掃描,發(fā)現(xiàn)總線軸個數(shù)和設(shè)置的不對應(yīng)");
            }
            break;
        }
        //超時時間減100ms
        Thread.Sleep(100);
        Time0ut = Time0ut - 100;
    }
}

3.上位機(jī)如何實現(xiàn)總線通訊的軟復(fù)位。

6.2.3.webp

在ZAR腳本中存在一個死循環(huán),當(dāng)檢測到總線初始化的狀態(tài)標(biāo)志位不為1時,會重新執(zhí)行總線初始化程序。因此,若驅(qū)動器中途斷電導(dǎo)致總線通訊中斷,需重新進(jìn)行總線初始化時,上位機(jī)通過【ZAux_Direct_SetUserVar】指令將總線初始化腳本變量【EcatInitStatus】設(shè)置為-1即可。

上位機(jī)具體代碼如下:

//重新進(jìn)行總線初始化
int Err = zmcaux.ZAux_Direct_SetUserVar(g_handle, "EcatInitStatus", -1);
//如果重新總線初始化的指令下發(fā)成功
if (0 == Err)
{
    Thread.Sleep(2000);
    //等待2秒后再去獲取總線初始化情況
    int TimeOut = 30000;
    //設(shè)置while循環(huán)的超時時間是30s
    int EcatInitStatus = -1;
    //總線初始化狀態(tài)
    while (TimeOut > 0)
    {
        //獲取總線初始化狀態(tài)的標(biāo)志位
        Err = zmcaux.ZAux_Direct_GetVariableInt(g_handle, "EcatInitStatus", ref EcatInitStatus);
        if ((Err == 0) && (-1 != EcatInitStatus))
        {
            if (0 == EcatInitStatus)
            {
                MessageBox.Show("總線初始化失敗");
            }
            else if (1 == EcatInitStatus)
            {
                MessageBox.Show("總線初始化成功");
            }
            else if (2 == EcatInitStatus)
            {
                MessageBox.Show("總線掃描,發(fā)現(xiàn)節(jié)點個數(shù)和設(shè)置的不對應(yīng)");
            }
            else if (3 == EcatInitStatus)
            {
                MessageBox.Show("總線掃描,發(fā)現(xiàn)總線軸個數(shù)和設(shè)置的不對應(yīng)");
            }
            break;
        }
        //超時時間減100ms
        Thread.Sleep(100);
        TimeOut = TimeOut - 100;
    }
}

4.上位機(jī)驅(qū)動器報警如何清除報警。

如果總線軸的軸狀態(tài)AxisStatus的bit3為1并且bit2為0的話,就是總線驅(qū)動器有報警并且總線通訊是沒有斷開的,比如AxisStatus是8h這個情況。這個時候我們上位機(jī)可以發(fā)送驅(qū)動器報警清除進(jìn)行報警清除。

上位機(jī)具體代碼如下:

//報警的軸號
uint AlmAxisId = 0;
//清除軸AlmAxisId驅(qū)動器的當(dāng)前報警
int Err = zmcaux.ZAux_BusCmd_DriveClear(g_handle, AlmAxisId, 0);
//等待比較清除完成
Thread.Sleep(500);
Err = zmcaux.ZAux_Direct_Single_Datum(g_handle, (int)AlmAxisId, 0);//清除控制器報警
Err = zmcaux.ZAux_Direct_SetAxisEnable(g_handle, (int)AlmAxisId, 1);//對報警的軸重新上使能

5.例程使用。

選擇LOCAL連接方式并點擊【連接】。待彈出連接成功提示框后,點擊【總線掃描】;若初始化成功,相關(guān)節(jié)點信息將顯示在表格中,命令與輸出窗口也會同步呈現(xiàn)相應(yīng)提示。

6.5.webp

教學(xué)視頻請點擊→PC強(qiáng)實時運動控制(二):C#的EtherCAT總線初始化(下)

完整代碼獲取地址

二維碼.png

本次,正運動技術(shù)PC強(qiáng)實時運動控制(二):C#的EtherCAT總線初始化(下),就分享到這里。

版權(quán)所有 工控網(wǎng) Copyright?2026 Gkong.com, All Rights Reserved
无码中文字幕色专区_91av俱乐部_无码人妻h动漫_26uuu成人_91九色丨porny丨国产jk_青青视频在线播放_国内自拍第二页_国产又粗又长又爽又黄的视频_色哟哟免费网站_久久出品必属精品_a级黄色一级片_99日在线视频
久久精品国产福利| 99pao成人国产永久免费视频| 野花国产精品入口| 五月国产精品| 色天使综合视频| 国产精品中文字幕制服诱惑| 国产伊人久久| 99久久亚洲精品蜜臀| 国产精品美女久久久浪潮软件| 日韩一区二区三区在线看| 西西人体一区二区| 久久男人天堂| 欧美福利在线| 精品免费视频| 日韩视频网站在线观看| 99精品网站| 日韩精品视频在线看| 日韩深夜视频| 欧美日韩国产一区二区在线观看| 天堂俺去俺来也www久久婷婷| 天堂中文av在线资源库| 不卡视频在线| 精品久久久亚洲| 国产伊人精品| 青青草精品视频| 日韩欧美2区| 国产精品亚洲综合色区韩国| 日韩国产欧美在线播放| 久久精品99国产国产精| 免费观看久久av| 亚洲精品欧洲| 日韩视频不卡| 91精品观看| 日本免费久久| 国产亚洲永久域名| 国产精品毛片久久久| 欧美日韩在线二区| 国产中文在线播放| 一区二区精品伦理...| 日韩欧美中文| 免费亚洲婷婷| 欧美日韩一区二区三区四区在线观看 | 欧美特黄视频| 亚洲视频二区| 国产99在线| 色在线视频观看| 日韩欧美中文字幕在线视频| 天海翼精品一区二区三区| 婷婷亚洲综合| 国产精品久久久亚洲一区| 国产黄色一区| 激情偷拍久久| 麻豆91在线播放| 国产毛片精品| 视频一区二区中文字幕| 精品久久97| 日韩视频在线一区二区三区 | 国产精品久久久久久久久久10秀 | 日韩三级视频| 国产麻豆久久| 亚洲福利一区| 美女国产精品久久久| 欧美日韩18| 欧美日韩 国产精品| 国产精品亚洲成在人线| 日本成人中文字幕| 国产精品3区| 日韩视频在线一区二区三区 | 日韩精品视频中文字幕| 日本一区免费网站| 婷婷亚洲成人| 亚洲精品成人| 亚洲男女自偷自拍| 精品一区在线| 在线精品观看| 日本亚洲不卡| 日韩一区精品字幕| 综合亚洲色图| 中文在线一区| 91精品婷婷色在线观看| 精品视频在线你懂得| 国产精品宾馆| 日韩在线网址| 男人天堂欧美日韩| 欧美精品一二| 久久一区二区三区电影| 影视先锋久久| 国产精品一区免费在线| 日韩中文在线播放| 欧美日韩免费观看一区=区三区| 99亚洲视频| 亚洲欧美视频一区二区三区| 亚洲欧美日韩高清在线| 天堂av一区| 91久久久久| 99精品美女| 综合激情五月婷婷| 亚洲免费福利一区| 亚洲丝袜美腿一区| 国产日韩精品视频一区二区三区| 一区视频在线| 日韩专区精品| 色偷偷偷在线视频播放| 精品国产欧美日韩| 国产精品久久久久77777丨| 国产精品日本一区二区不卡视频| 日韩中文欧美在线| 欧美一区二区三区久久精品| 亚洲网站视频| 欧美一级鲁丝片| 美女视频黄免费的久久| 欧美日韩精品免费观看视频完整| 精品久久免费| 日韩精品第一区| 欧美激情视频一区二区三区免费 | 日韩精品一二三四| 久久电影一区| 国产午夜精品一区在线观看| 久久久久久一区二区| 欧美日韩国产高清| 国产高清精品二区| 国产另类在线| 日韩精品一二三四 | 日韩毛片在线| 日韩精品dvd| 91精品精品| 日韩视频在线一区二区三区| 福利一区二区免费视频 | 亚洲图片久久| 好看的av在线不卡观看| 国产精品欧美日韩一区| 欧美中文字幕| 91精品一区| 国产一区丝袜| 日韩久久精品| 亚洲久草在线| 国产一区二区三区日韩精品| 精品亚洲a∨一区二区三区18| 性色av一区二区怡红| 国产精品v日韩精品v欧美精品网站 | 日韩精品影视| 亚洲一级黄色| 日韩a一区二区| 久久网站免费观看| 日韩国产在线观看| zzzwww在线看片免费| 综合日韩av| 99精品在线| 国产精品外国| 亚洲性色av| 日本亚州欧洲精品不卡| 欧美丰满日韩| 日韩高清一区| 国产精品久久乐| 国产一区二区久久久久| 日韩精品欧美| 亚洲色图综合| 亚洲激情欧美| 激情偷拍久久| 成人台湾亚洲精品一区二区| 亚洲制服少妇| 欧美日韩国产在线观看网站| 国产成人免费av一区二区午夜| 一区在线免费观看| 麻豆精品久久久| 日韩精品五月天| **爰片久久毛片| 日本午夜精品久久久久| 日本免费在线视频不卡一不卡二| 黄色日韩精品| 久久久久免费| 国产欧美综合一区二区三区| 亚洲毛片网站| 欧美日本久久| 国产资源在线观看入口av| 正在播放日韩精品| 久久久噜噜噜| 日韩欧美美女在线观看| 97精品国产99久久久久久免费| 久久超碰99| 欧美精品影院| 精品国产第一福利网站| 不卡在线一区二区| 日韩制服丝袜av| 国产精品乱战久久久| 激情欧美亚洲| 免费精品视频在线| 国产午夜一区| 日韩午夜电影| 国产资源在线观看入口av| 日韩综合小视频| 欧美日韩在线网站| 国产精品亚洲一区二区在线观看| 国精品产品一区| 日本中文字幕不卡| 日韩精品久久理论片| 婷婷亚洲五月色综合| 亚洲高清激情| 久久精品国产免费| 亚洲免费高清|