那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

C++調用API函數庫接口實現手輪配置

伺服與運動控制 ? 來源:伺服與運動控制 ? 2023-05-29 15:01 ? 次閱讀

本文以正運動技術具備專用手輪接口的運動控制器ZMC408CE為例,介紹手輪、手輪的作用及原理、控制器手輪接口接線以及手輪程序配置。

上節講解了使用正運動basic語言進行手輪應用配置,本節主要講解C++調用API函數庫接口實現手輪配置。

01 手輪作用及原理 手輪也稱手搖脈沖發生器,主要用于數控機床、立體加工中心、臥式加工中心、龍門加工中心等數控設備。當手輪旋轉時,編碼器產生與手輪運動相對應的信號,通過數控系統選定座標并對座標進行定位。 手動脈沖發生器它中心有軸的光電碼盤,其上有環形通、暗的刻線,搖動手輪后,由光電發射和接收器件讀取,獲得2組正弦波信號HA、HB,每個正弦波相差90度相位差。由于HA、HB兩信號相差90度,可通過A相在前還是B相在前,給出正轉脈沖或反轉脈沖去控制伺服電機正轉或反轉。 46e5385e-fc8d-11ed-90ce-dac502259ad0.png ? ? ? 02 手輪介紹

1.通過手輪上的“軸選擇旋鈕”選擇需要移動的坐標軸;

2.通過“倍率選擇旋鈕”選擇合適的移動倍(×1/×10/×100);

3.旋轉“手輪搖柄”移動坐標軸。順時針旋轉為正向移動,逆時針旋轉為負向移動,旋轉速度快慢可以控制坐標軸的運動速度;

4.按鈕“急停”,緊急停止手輪運動;

5.控制器手輪接口為雙排標準DB15母頭,需要手輪接頭為雙排標準DB15公頭。

46f252f0-fc8d-11ed-90ce-dac502259ad0.png

03 控制器手輪接口接線

1.硬件介紹

案例采用ZMC408CE運動控制器,具備專用的手輪接口。

471bad94-fc8d-11ed-90ce-dac502259ad0.png

ZMC408CE是正運動技術推出的一款高性能EtherCAT總線運動控制器,核心技術采用了先進的FPGA技術,實現硬件位置比較輸出、精準輸出功能,保證連續軌跡加工的出色性能和穩定性,以及動態數據捕獲的實時性,從而實現更加精準控制和提高生產效率和品質。

ZMC408CE支持EtherCAT總線軸 + 脈沖軸混合插補,可脫機或聯機運行,可控電機軸數8軸,特殊型號提供16或32軸可選,支持ZDevelop + 多種高級上位機混合編程,可以實現點位運動、電子凸輪、直線插補、圓弧插補、連續軌跡加工和30+種機器人模型的控制。 ZMC408CE產品亮點 1.高性能處理器,提升運算速度、響應時間和掃描周期等;

2.一維/二維/三維、多通道視覺飛拍,高速高精;

3.位置同步輸出PSO,連續軌跡加工中對精密點膠膠量控制和激光能量控制等;

4.多軸同步控制,多坐標系獨立控制等;

5.EtherCAT同步周期可快至125us;

6.EtherCAT總線和脈沖軸混合插補;

7.直線插補、任意空間圓弧插補、螺旋插補、樣條插補等;

8.應用靈活,可PC上位機開發,也可脫機獨立運行;

ZMC408CE視頻介紹

2.控制器手輪接口MPG定義

接口 引腳號 信號 說明
473198ca-fc8d-11ed-90ce-dac502259ad0.png 1 H-5V 5V電源輸出正極,專為手輪供電
2 HA- 編碼器A相信號(IN40)
3 HB- 編碼器B相信號(IN41)
4 HEMGN 緊急停止信號(IN51)
5 NC 懸空
6 HX1 選擇X1倍率(IN42)
7 HX10 選擇X10倍率(IN43)
8 HX100 選擇X100倍率(IN44)
9 HSU 軸選3(IN48)
10 HSV 軸選4(IN49)
11 EGND 5V電源輸出負極,信號公共端
12 HSW 軸選5(IN50)
13 HSZ 軸選2(IN47)
14 HSY 軸選1(IN46)
15 HSX 軸選0(IN45)
注意:
1.5V電源輸出僅為手輪供電,切勿為其他設備供電。
2.該接口中的所有信號均為數字輸入信號,編號為IN(40-51)。

3.手輪接線參考

473f092e-fc8d-11ed-90ce-dac502259ad0.png

4.注意事項

手輪編碼器軸接口接線原理如上圖所示,手輪廠家的設計多種多樣,請先查看手輪內部的設計圖后與運動控制器確認正確后謹慎接線;請使用雙絞屏蔽線,尤其是環境惡劣的場合,務必使屏蔽層充分接地。

04 函數接口指令說明 使用ZAux_Direct_Connect命令,將手輪連接到運動軸,指令說明如下表。

指令119 ZAux_Direct_Connect
指令原型 int32 __stdcall ZAux_Direct_Connect(ZMC_HANDLE handle,floatratio,int link_axis,int move axis)
指令說明 同步運動。電子齒輪,將當前軸的目標位置與idring_axis軸的插補矢量長度通過電子齒輪連接。
輸入參數
參數名 描述
handle 連接句柄
ratio 比率,可正可負,注意是脈沖個數的比例
link_axis 連接軸的軸號(主軸)
move_axis 運動軸的軸號
輸出參數 /
返回值 成功返回值為0,非0詳見錯誤碼說明
指令示例 同步運動
詳細說明 1.連接的是脈沖個數,要考慮不同軸 UNITS 的比例。取消連接時用CANCEL。
2.假設連接軸0的 UNIST 為100,被連接軸1的 UNITS 為10。
3.使用 ZAux_Direct_Connect連接,比例 ratio 為1,當軸0運動s1=100時,軸1運動=s1*UNITS(0)*ratio/UNITS(1),此時運動1000。
4.比率可以通過重復調用指令動態變化。
5.常用于手輪使用。

05 C++程序配置

1.配置步驟

(1)參考以上手輪接線示意圖正確連接手輪和控制器; (2)掃描文章末尾二維碼,下載例程,使用Visual Studio 2022,打開C++手輪運動例程,運行之后根據型號選擇EtherNET、串口、PCI、LOCAL任意一種接口連接控制器。 (3)配置軸號;不同控制器型號,手輪軸號,倍率和軸選擇IN編號不一樣,詳情請參考控制器用戶手冊,本例程使用控制器型號為ZMC408CE,手輪接口軸號為8,該控制器手輪接口無可用默認AXIS軸號,必須進行映射才可以使用,映射避開脈沖軸號,此例程是將手輪映射到軸10。 (4)配置IO;根據需要賦予軸選(HSX,HSY,HSZ,HSU)和倍率(HX1,HX10,HX100)以及緊急停止 (HEMGN)功能;這些信號本質為數字輸入信號,有固定的編號,但無固定的功能,需要ZDevelop開發;其名稱為推薦配置的功能,軸選即為connect同步運動的被連接軸,倍率即connect比率。

(5)完成以上配置即可開始使用手輪。

2.程序運行界面

程序運行成功后會顯示以下界面,未連接控制器之前,軸坐標和手輪軸坐標默認為0,手輪狀態為“未連接”,手輪軸號為10,鏈接倍率為1,手輪軸脈沖方式為“脈沖+方向”,鏈接軸為“未選擇”。

474f753e-fc8d-11ed-90ce-dac502259ad0.jpg

3.控制器鏈接 選擇IP、串口,鏈接到控制器ZMC408CE,鏈接成功,手輪測試則會變成“已連接”,若失敗則會有彈窗“鏈接失敗”點擊確定關閉彈窗,檢查IP地址或串口地址重新鏈接。

475e946a-fc8d-11ed-90ce-dac502259ad0.png

(鏈接成功)

476b068c-fc8d-11ed-90ce-dac502259ad0.png (鏈接失敗)

4.手輪軸操作

程序鏈接上控制器成功之后,會獲取軸坐標和手輪軸位置。通過手輪的“軸選擇”旋轉按鈕選擇鏈接軸,如果鏈接成功,手輪鏈接狀態會變成“已鏈接”,鏈接軸也會顯示出所鏈接的軸號和鏈接倍率。 如果想要切換連接軸和鏈接倍率,只需要旋轉手輪“軸選擇”按鈕和“倍率選擇”按鈕即可。點擊停止按鈕之后,會自動斷開鏈接,此時手輪的“軸選擇”和“倍率選擇”按鈕處于無效狀態,只有點擊繼續后才會重新鏈接,建議在鏈接軸之前先選好鏈接倍率,否則可能會出撞機的危險,點擊坐標清零則會將X、Y、Z、手輪的坐標全部清零。

47784dce-fc8d-11ed-90ce-dac502259ad0.png5.手輪軸軸號修改

此例程的手輪軸軸號綁定到軸10,如果要進行修改,可以在手輪設置中的手輪軸號,直接進行更改,手輪脈沖方式也是在此處進行修改。

6.手輪軸號映射

不同控制器的默認手輪軸接口不同,具體需要參考控制器手冊,相同點是不管使用哪個型號的控制器都需要重新進行軸映射將手輪軸映射到其他軸號去。

在控制器手冊中找到默認手輪接口軸號,使用ZAux_Direct_SetAtype(handle,重映射的軸號,0)將重映射的軸類型設置為0,還原軸設置, ZAux_Direct_SetAtype(handle,要修改的本地脈沖軸號,0)將要修改的本地脈沖軸號軸類型也設置為0,低版本不設置會報錯。

使用本地軸映射指令ZAux_Direct_SetAxisAddress{ handle,重映射的軸號,(-1<<16) +要修改的本地脈沖軸號 }。

4782079c-fc8d-11ed-90ce-dac502259ad0.png

7.手輪軸參數配置 軸號映射參數修改完后,接著使用ZAux_Direct_SetAtype(handle,手輪軸軸號,3/6)進行修改手輪軸的類型,ATYPE=3正交編碼器,ATYPE=6脈沖方向方式的編碼器,設置好之后可在運行主界面進行切換。

使用ZAux_Direct_SetUnits(g_handle,手輪軸號,脈沖當量)根據實際需求修改手輪軸的脈沖當量。

479ab422-fc8d-11ed-90ce-dac502259ad0.png

8.建立手輪鏈接

查詢控制器手冊,找到手輪對應軸輸入信號、倍率信號、急停信號,使用ZAux_Direct_GetIn(g_handle,輸入口編號,&獲取輸入口的狀態值)進行IO信號讀取,這里運動軸是X、Y、Z對應控制器的0、1、2軸。

47ae999c-fc8d-11ed-90ce-dac502259ad0.png

通過IO信號的判斷使用同步運動指令ZAux_Direct_Connect(g_handle,鏈接比率,手輪軸,運動軸),進行軸的鏈接、綁定,使用單軸運動停止指令ZAux_Direct_Single_Cancel(g_handle,運動軸,停止模式),斷開軸鏈接。

47bcfdde-fc8d-11ed-90ce-dac502259ad0.png

9.手輪軸位置獲取、清零

建立鏈接之后,需要使用ZAux_Direct_GetMpos(g_handle,手輪軸號,&showpos[手輪軸號])來獲取,手輪軸的當前位置,并顯示在界面上。

47d21dae-fc8d-11ed-90ce-dac502259ad0.png

使用ZAux_Direct_SetMpos(g_handle,手輪軸號,0)進行手輪坐標清零。

47e1f670-fc8d-11ed-90ce-dac502259ad0.png

本次,正運動技術EtherCAT運動控制器在數控加工手輪隨動中的應用之C++,就分享到這里。

審核編輯:彭靜
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 接口
    +關注

    關注

    33

    文章

    8691

    瀏覽量

    151915
  • API
    API
    +關注

    關注

    2

    文章

    1510

    瀏覽量

    62394
  • 函數
    +關注

    關注

    3

    文章

    4346

    瀏覽量

    62970
  • C++
    C++
    +關注

    關注

    22

    文章

    2114

    瀏覽量

    73856

原文標題:EtherCAT運動控制器在數控加工手輪隨動中的應用之C++

文章出處:【微信號:伺服與運動控制,微信公眾號:伺服與運動控制】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    PS 2接口C 語言通信函數庫設計

    深入分析PS/2 接口通信協議,實現C 語言通信函數庫,可以方便地應用于PS/2 設備的使用和開發。程序在AVR 單片機上實現并通過檢驗,
    發表于 05-14 14:37 ?43次下載

    ZLGCAN接口函數庫

    ZLGCAN接口函數庫 數據結構VCI 函數庫中定義了一些數據結構用于數據交換,在使用VCI 函數前應該先創建這些數據結構。在LabVIEW 中創建這些結構時應該使用
    發表于 03-29 14:01 ?56次下載

    C++教程之函數的遞歸調用

    C++教程之函數的遞歸調用 在執行函數 f 的過程中,又要調用 f 函數本身,稱為
    發表于 05-15 18:00 ?35次下載

    C語言入門教程-函數庫

    函數庫 C語言本身具備最基本功能,所以C函數庫就顯得十分重要了。C語言本身甚至不提供從鍵盤讀入和向屏幕輸出的I/O
    發表于 07-29 10:40 ?1130次閱讀

    系統調用函數庫分析及實例

    作為用戶我們極少接觸系統調用,但是我們熟悉C 語言,對庫函數調用并不陌生。C語言支持一系列庫函數
    發表于 06-23 16:46 ?46次下載
    系統<b class='flag-5'>調用</b><b class='flag-5'>函數庫</b>分析及實例

    PIC單片機的C語言應用下的函數庫

    PICC編譯器下的函數庫調用函數庫開發,更快更方便,更少的bug
    發表于 12-09 15:29 ?10次下載

    linux_C函數庫中文手冊

    linux_C函數庫中文手冊linux_C函數庫中文手冊
    發表于 03-20 10:42 ?14次下載

    基于GE運動控制器型號及在函數庫中應用

    GE 系列運動控制器提供DOS 下的C 語言函數庫和Windows 下的動態鏈接,若為GUC 運動控制器且內嵌系統為WinCE 系統,運動控制器還會提供對應WinCE 下的動態鏈接
    發表于 10-11 17:44 ?33次下載

    標準C函數庫的用法

    C標準函數庫是所有符合標準的頭文件的集合,以及常用的函數庫實現程序,例如I/O 輸入輸出和字符串控制。不像 COBOL、Fortran 和 PL/I等編程語言,在
    的頭像 發表于 03-02 11:27 ?5279次閱讀
    標準<b class='flag-5'>C</b><b class='flag-5'>函數庫</b>的用法

    如何在中斷C函數調用C++

    之前,我們在單片機程序開發時都會面對中斷函數。眾所周知的,這個中斷函數肯定是要用C函數來定義的。我在用C++進行程序開發的時候就發現了一個需
    發表于 05-09 18:17 ?0次下載
    如何在中斷<b class='flag-5'>C</b><b class='flag-5'>函數</b>中<b class='flag-5'>調用</b><b class='flag-5'>C++</b>

    C語言編程函數庫分類匯總資源下載

    C語言編程函數庫分類匯總資源下載
    發表于 04-15 16:40 ?16次下載
    <b class='flag-5'>C</b>語言編程<b class='flag-5'>函數庫</b>分類匯總資源下載

    EE-128:C++中的DSP:從C++調用匯編類成員函數

    EE-128:C++中的DSP:從C++調用匯編類成員函數
    發表于 04-16 17:04 ?2次下載
    EE-128:<b class='flag-5'>C++</b>中的DSP:從<b class='flag-5'>C++</b><b class='flag-5'>調用</b>匯編類成員<b class='flag-5'>函數</b>

    LiquidCrystal_I2C函數庫

    LiquidCrystal_I2C函數庫(實用電源技術講義)-【資源描述】: LiquidCrystal_I2C函數庫?
    發表于 09-16 16:05 ?99次下載
    LiquidCrystal_I2<b class='flag-5'>C</b><b class='flag-5'>函數庫</b>

    ZNetAdv配置函數庫使用手冊

    電子發燒友網站提供《ZNetAdv配置函數庫使用手冊.pdf》資料免費下載
    發表于 10-17 11:02 ?0次下載
    ZNetAdv<b class='flag-5'>配置</b><b class='flag-5'>函數庫</b>使用手冊

    Java調用C/C++動態dll操作串口實

    大家好,今天分享的是使用C/C++編寫一個讀取串口數據的代碼,然后將其編譯成Windows下的動態鏈接(.dll文件),然后寫一個簡單的java demo來調用
    的頭像 發表于 05-23 15:41 ?984次閱讀
    Java<b class='flag-5'>調用</b><b class='flag-5'>C</b>/<b class='flag-5'>C++</b>動態<b class='flag-5'>庫</b>dll操作串<b class='flag-5'>口實</b>例
    娱乐场百家乐大都| 右玉县| 澄江县| 优博注册| 百家乐筹码币套装| 真人游戏豆瓣| 澳博足球| 澳门百家乐官网网址多少| 百家乐官网必胜软件下载| 恒丰百家乐官网的玩法技巧和规则 | 什么百家乐官网平注法| 百家乐官网怎么稳赢| 百家乐官网网络赌场| 网上百家乐哪里好| 真人百家乐官网是骗局| 宁阳县| 百家乐官网推锅| 财神百家乐娱乐城| 太阳城| 百家乐官网平台信誉排名| 金杯百家乐官网的玩法技巧和规则| 百家乐赌博是否违法| 大发888熊之舞怎么玩| 现金百家乐官网网上娱乐| 百家乐官网偷吗| 金博士百家乐娱乐城 | 体育博彩概论| 百家乐官网娱乐网站| 百家乐算牌e世博| 澳门线上赌场| 澳门百家乐官网出千吗| 二爷百家乐的玩法技巧和规则 | 杨公风水24山| 加州百家乐的玩法技巧和规则 | 大发百家乐官网现金网| 澳门百家乐娱乐注册| 赌场大轮盘| 诚信百家乐在线平台| 黄浦区| 百家乐云顶| 大丰市|