RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

EtherCAT運(yùn)動(dòng)控制器在ROS上的應(yīng)用開(kāi)發(fā)案例(下)

伺服與運(yùn)動(dòng)控制 ? 來(lái)源:正運(yùn)動(dòng)小助手 ? 2024-03-17 11:11 ? 次閱讀

本篇文章我們主要介紹正運(yùn)動(dòng)技術(shù)動(dòng)態(tài)鏈接庫(kù)環(huán)境配置以及EtherCAT運(yùn)動(dòng)控制器ROS下的單軸運(yùn)動(dòng)。

在正式學(xué)習(xí)之前,我們先了解一下正運(yùn)動(dòng)技術(shù)的EtherCAT運(yùn)動(dòng)控制器ZMC432和ZMC408CE。這兩款產(chǎn)品分別是32軸,8軸EtherCAT運(yùn)動(dòng)控制器。

ZMC432功能簡(jiǎn)介

ZMC432是正運(yùn)動(dòng)推出的一款多軸高性能EtherCAT總線運(yùn)動(dòng)控制器,具有EtherCAT、EtherNET、RS232CAN和U盤(pán)等通訊接口,ZMC系列運(yùn)動(dòng)控制器可應(yīng)用于各種需要脫機(jī)或聯(lián)機(jī)運(yùn)行的場(chǎng)合。

cd6d200a-e330-11ee-a297-92fbcf53809c.jpg

ZMC432最多可支持32軸運(yùn)動(dòng)控制,支持直線插補(bǔ)、任意圓弧插補(bǔ)、空間圓弧、螺旋插補(bǔ)、電子凸輪、電子齒輪、同步跟隨等功能。

ZMC432支持32軸脈沖輸入與編碼器反饋,通用IO包含24路輸入口和12個(gè)輸出口;2路AD,2路DA;其中特定輸出口支持高速PWM控制。

ZMC432通過(guò)EtherCAT和CAN總線進(jìn)行硬件資源擴(kuò)展,可擴(kuò)展至4096路輸入和4096路輸出。

cd729f1c-e330-11ee-a297-92fbcf53809c.png

ZMC408CE功能簡(jiǎn)介

ZMC408CE是正運(yùn)動(dòng)推出的一款多軸高性能EtherCAT總線運(yùn)動(dòng)控制器,具有EtherCAT、EtherNET、RS232、CAN和U盤(pán)等通訊接口,ZMC系列運(yùn)動(dòng)控制器可應(yīng)用于各種需要脫機(jī)或聯(lián)機(jī)運(yùn)行的場(chǎng)合。

cd852cf4-e330-11ee-a297-92fbcf53809c.jpg

ZMC408CE支持8軸運(yùn)動(dòng)控制,最多可擴(kuò)展至32軸,支持直線插補(bǔ)、任意圓弧插補(bǔ)、空間圓弧、螺旋插補(bǔ)、電子凸輪、電子齒輪、同步跟隨等功能。

ZMC408CE支持8軸運(yùn)動(dòng)控制,可采用脈沖軸(帶編碼器反饋)或EtherCAT總線軸,通用IO包含24路輸入口和16路輸出口,部分IO為高速I(mǎi)O,模擬量AD/DA各兩路,EtherCAT最快125us的刷新周期。

ZMC408CE支持8個(gè)通道的硬件比較輸出、硬件定時(shí)器、運(yùn)動(dòng)中精準(zhǔn)輸出,還支持8通道PWM輸出,對(duì)應(yīng)的輸出口為OUT0-7,支持8個(gè)通道同時(shí)觸發(fā)硬件比較輸出。

ZMC408CE可靈活進(jìn)行硬件資源擴(kuò)展,通過(guò)CAN或EtherCAT總線可擴(kuò)展至4096個(gè)輸入和4096個(gè)輸出。

cd88e7f4-e330-11ee-a297-92fbcf53809c.png

→ZMC432,ZMC408CE均使用同一套API函數(shù),均支持C、C++C#、LabVIEW、Python、Delphi等開(kāi)發(fā)語(yǔ)言,支持VC6.0、VB6.0、Qt、.Net等平臺(tái),支持Windows、Linux、WinCE、iMac操作系統(tǒng)。

上節(jié)課程中,我們介紹了ROS應(yīng)用背景和Ubuntu18.04安裝ROS Melodic詳細(xì)過(guò)程,并且通過(guò)ROS編程案例“消息發(fā)布和訂閱”來(lái)詳細(xì)說(shuō)明正運(yùn)動(dòng)技術(shù)EtherCAT運(yùn)動(dòng)控制器ROS的應(yīng)用開(kāi)發(fā)。

01 配置正運(yùn)動(dòng)技術(shù)動(dòng)態(tài)鏈接庫(kù)環(huán)境

1.添加動(dòng)態(tài)鏈接庫(kù)

在程序包目錄zmotion(catkin_ws/src/zmotion/)下新建文件夾lib,存放動(dòng)態(tài)鏈接庫(kù)libzmotion.so。

cda2d6be-e330-11ee-a297-92fbcf53809c.png

cdad1d2c-e330-11ee-a297-92fbcf53809c.png

在CMakeLists.txt中添加第三方庫(kù)路徑(build下):

link_directories(
  lib
  ${catkin_LIB_DIRS}
)
并在CMakeLists.txt文件中鏈接動(dòng)態(tài)鏈接庫(kù)(調(diào)用鏈接庫(kù)時(shí)文件名去掉lib和.so):

target_link_libraries(talker ${catkin_LIBRARIES} zmotion)
2.添加庫(kù)函數(shù)zmcaux.cpp、zmotion.h、zmcaux.h

添加zmcaux.cpp文件到catkin_ws/src/zmotion/src目錄下:

cdb12714-e330-11ee-a297-92fbcf53809c.png

添加頭文件zmotion.h、zmcaux.h到catkin_ws/src/zmotion/include/ zmotion目錄下:

cdbbbb48-e330-11ee-a297-92fbcf53809c.png

并在CMakeLists.txt中添加這三個(gè)庫(kù)文件:

add_executable(talker 
src/talker.cpp
src/zmcaux.cpp
include/zmotion/zmotion.h
include/zmotion/zmcaux.h
)

修改頭文件引用,如下圖所示(要填include文件的相對(duì)地址,zmotion為程序包名):

#include "zmotion/zmotion.h"
#include "zmotion/zmcaux.h"
cdbfd552-e330-11ee-a297-92fbcf53809c.png ? ?

02 正運(yùn)動(dòng)控制器在ROS下的單軸運(yùn)動(dòng)

talker節(jié)點(diǎn)實(shí)現(xiàn)軸0的運(yùn)動(dòng),并將其位置實(shí)時(shí)發(fā)送給listener節(jié)點(diǎn),修改talker.cpp如下:

1.添加句柄和頭文件

#include "zmotion/zmotion.h"
#include "zmotion/zmcaux.h"
ZMC_HANDLE g_handle=NULL;

2.通過(guò)EtherNET鏈接運(yùn)動(dòng)控制器

ZMC_LinuxLibInit();
//以太網(wǎng)(Ethernet)鏈接
char ipaddr[16] = {"192.168.0.11"};
int x =ZAux_OpenEth(ipaddr,&g_handle); //***ZMC
ROS_INFO("以太網(wǎng)鏈接控制器:%d",x);//返回0則連接成功

3.實(shí)現(xiàn)單軸運(yùn)動(dòng)

ZAux_Direct_SetSpeed(g_handle, 0, 200); //設(shè)置軸0運(yùn)動(dòng)速度為200units/s
ZAux_Direct_SetAccel(g_handle, 0, 2000); //設(shè)置軸0加速度為2000units/s/s
ZAux_Direct_SetDecel(g_handle, 0, 2000); //設(shè)置軸0減速度為2000units/s/s
ZAux_Direct_SetSramp(g_handle, 0, 100); //設(shè)置軸0 S曲線時(shí)間100ms
ZAux_Direct_Single_Move(g_handle, 0, 300); //軸0 相對(duì)與當(dāng)前位置運(yùn)動(dòng)100 units

4.將實(shí)時(shí)位置發(fā)送給listener節(jié)點(diǎn)

float piValue;
while (ros::ok())
{
  std_msgs::Float64 msg;
  ZAux_Direct_GetMpos(g_handle, 0, & piValue);//獲取時(shí)候
  msg.data = piValue;
    //輸出,用來(lái)替代prinf/cout
    ROS_INFO("Position is: %f", msg.data); 
  chatter_pub.publish(msg);
  ros::spinOnce();
    //休眠,來(lái)使發(fā)布頻率為10Hz
    loop_rate.sleep();
}
5.編譯
cd ~/catkin_ws/
catkin_make

6.運(yùn)行程序

//打開(kāi)一個(gè)新終端
roscore
//打開(kāi)另一個(gè)新終端
cd ~/catkin_ws/
rosrun zmotion talker
//打開(kāi)另一個(gè)新終端
cd ~/catkin_ws/
rosrun zmotion listener
運(yùn)行效果如下,實(shí)時(shí)輸出位置:

cdc530ce-e330-11ee-a297-92fbcf53809c.png

此外,我們?cè)?a target="_blank">上位機(jī)上的示波器上可以看見(jiàn),軸0做S曲線運(yùn)動(dòng):

cdde651c-e330-11ee-a297-92fbcf53809c.png

本次,正運(yùn)動(dòng)技術(shù)EtherCAT運(yùn)動(dòng)控制器在ROS上的應(yīng)用(下),就分享到這里。




審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 示波器
    +關(guān)注

    關(guān)注

    113

    文章

    6240

    瀏覽量

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

    關(guān)注

    2

    文章

    401

    瀏覽量

    24703
  • 上位機(jī)
    +關(guān)注

    關(guān)注

    27

    文章

    941

    瀏覽量

    54790
  • ethercat
    +關(guān)注

    關(guān)注

    18

    文章

    686

    瀏覽量

    38673
  • ROS
    ROS
    +關(guān)注

    關(guān)注

    1

    文章

    278

    瀏覽量

    17001

原文標(biāo)題:EtherCAT運(yùn)動(dòng)控制器在ROS上的應(yīng)用(下)

文章出處:【微信號(hào):伺服與運(yùn)動(dòng)控制,微信公眾號(hào):伺服與運(yùn)動(dòng)控制】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    EtherCAT運(yùn)動(dòng)控制器ROS的應(yīng)用(

    本文以正運(yùn)動(dòng)技術(shù)EtherCAT運(yùn)動(dòng)控制器ZMC432和ZMC408CE為例,介紹正運(yùn)動(dòng)技術(shù)運(yùn)動(dòng)
    的頭像 發(fā)表于 03-06 11:47 ?1197次閱讀
    <b class='flag-5'>EtherCAT</b><b class='flag-5'>運(yùn)動(dòng)</b><b class='flag-5'>控制器</b><b class='flag-5'>在</b><b class='flag-5'>ROS</b><b class='flag-5'>上</b>的應(yīng)用(<b class='flag-5'>上</b>)

    EtherCAT運(yùn)動(dòng)控制器ROS的應(yīng)用開(kāi)發(fā)案例(

    本文以正運(yùn)動(dòng)技術(shù)EtherCAT運(yùn)動(dòng)控制器ZMC432和ZMC408CE為例,介紹正運(yùn)動(dòng)技術(shù)運(yùn)動(dòng)
    的頭像 發(fā)表于 03-17 11:06 ?1305次閱讀
    <b class='flag-5'>EtherCAT</b><b class='flag-5'>運(yùn)動(dòng)</b><b class='flag-5'>控制器</b><b class='flag-5'>在</b><b class='flag-5'>ROS</b><b class='flag-5'>上</b>的應(yīng)用<b class='flag-5'>開(kāi)發(fā)案</b>例(<b class='flag-5'>上</b>)

    EtherCAT總線運(yùn)動(dòng)控制器硬件是如何進(jìn)行接線的?

    EtherCAT總線運(yùn)動(dòng)控制器硬件是如何進(jìn)行接線的?EtherCAT總線運(yùn)動(dòng)控制器有哪些參數(shù)設(shè)置
    發(fā)表于 07-15 13:02

    EtherCat控制器

    EtherCat控制器,我能找到的最大軸數(shù)能支持到128軸,部署時(shí),幾千軸的控制要分成若干組,每組128軸或者64軸。能達(dá)到64軸的有上面PCI卡式的,也有獨(dú)立可接網(wǎng)絡(luò)連接式的,正運(yùn)動(dòng)
    發(fā)表于 09-01 08:50

    運(yùn)動(dòng)技術(shù)運(yùn)動(dòng)控制器EtherCAT總線快速入門(mén)

    、EtherCAT 總線的使用、示波器的應(yīng)用、多任務(wù)運(yùn)行的特點(diǎn)、運(yùn)動(dòng)控制器中斷的應(yīng)用、U盤(pán)接口的使用、ZDevelop 編程軟件的使用、運(yùn)動(dòng)控制器
    發(fā)表于 09-07 06:59

    運(yùn)動(dòng)技術(shù)運(yùn)動(dòng)控制器EtherCAT總線的基礎(chǔ)使用

    EtherCAT總線擴(kuò)展模塊包含哪些?怎樣去使用正運(yùn)動(dòng)技術(shù)運(yùn)動(dòng)控制器EtherCAT總線?
    發(fā)表于 09-27 08:34

    小白求助,求大佬詳細(xì)介紹一EtherCAT運(yùn)動(dòng)控制器的PLC編程

    小白求助,求大佬詳細(xì)介紹一EtherCAT運(yùn)動(dòng)控制器的PLC編程
    發(fā)表于 10-29 07:24

    EtherCAT總線運(yùn)動(dòng)控制的優(yōu)勢(shì)主要體現(xiàn)在哪?

    自由切換;f、方便上位機(jī)遠(yuǎn)程診斷與遠(yuǎn)程維護(hù)電氣系統(tǒng),預(yù)測(cè)性維護(hù)也更方便。5、沒(méi)有實(shí)際的運(yùn)動(dòng)控制器也能仿真與調(diào)試運(yùn)動(dòng)控制系統(tǒng):虛擬仿真與調(diào)試日漸成為工業(yè)自動(dòng)化行業(yè)的剛需,一是可以
    發(fā)表于 02-20 10:20

    經(jīng)濟(jì)型EtherCAT運(yùn)動(dòng)控制器EtherCAT總線快速入門(mén)

    本文主要介紹XPLC006E多軸經(jīng)濟(jì)型EtherCAT總線運(yùn)動(dòng)控制器控制EtherCAT總線驅(qū)動(dòng)
    發(fā)表于 05-11 09:49

    EtherCAT運(yùn)動(dòng)控制器進(jìn)行自定義API封裝例程

    本節(jié)課程我們主要講解一運(yùn)動(dòng)API函數(shù)封裝原理以及自定義API封裝例程。 正運(yùn)動(dòng)技術(shù)運(yùn)動(dòng)控制器均使用統(tǒng)一的API接口 所有的
    發(fā)表于 10-26 15:11

    EtherCAT總線運(yùn)動(dòng)控制的優(yōu)勢(shì)主要體現(xiàn)在哪?

    )/CSV(周期速度)/CST(周期轉(zhuǎn)矩)可以自由切換; f、方便上位機(jī)遠(yuǎn)程診斷與遠(yuǎn)程維護(hù)電氣系統(tǒng),預(yù)測(cè)性維護(hù)也更方便。 5、沒(méi)有實(shí)際的運(yùn)動(dòng)控制器也能仿真與調(diào)試運(yùn)動(dòng)控制系統(tǒng): 虛擬仿真
    發(fā)表于 12-13 11:37

    EtherCAT運(yùn)動(dòng)控制器ROS的應(yīng)用(

    運(yùn)動(dòng)技術(shù)動(dòng)態(tài)鏈接庫(kù)環(huán)境配置以及EtherCAT運(yùn)動(dòng)控制器ROS
    的頭像 發(fā)表于 03-13 14:54 ?572次閱讀
    <b class='flag-5'>EtherCAT</b><b class='flag-5'>運(yùn)動(dòng)</b><b class='flag-5'>控制器</b><b class='flag-5'>在</b><b class='flag-5'>ROS</b><b class='flag-5'>上</b>的應(yīng)用(<b class='flag-5'>下</b>)

    ZMC900E控制器ROS2環(huán)境安裝指南

    ZMC900E是致遠(yuǎn)電子研發(fā)的最新一代高性能EtherCAT控制器,支持ROS2系統(tǒng),兼?zhèn)鋸?qiáng)大功能和實(shí)時(shí)性,為工業(yè)應(yīng)用帶來(lái)新的可能。本文將詳述ROS2特點(diǎn)和安裝,助力用戶
    的頭像 發(fā)表于 04-29 08:24 ?582次閱讀
    ZMC900E<b class='flag-5'>控制器</b>之<b class='flag-5'>ROS</b>2環(huán)境安裝指南

    EtherCAT運(yùn)動(dòng)控制器與PLC的區(qū)別

    工業(yè)自動(dòng)化領(lǐng)域,EtherCAT運(yùn)動(dòng)控制器和PLC(Programmable Logic Controller,可編程邏輯控制器)都是不可
    的頭像 發(fā)表于 06-12 15:47 ?904次閱讀

    SSI絕對(duì)值編碼EtherCAT運(yùn)動(dòng)控制器中的應(yīng)用

    SSI絕對(duì)值編碼EtherCAT運(yùn)動(dòng)控制器中的應(yīng)用
    的頭像 發(fā)表于 10-09 10:13 ?579次閱讀
    SSI絕對(duì)值編碼<b class='flag-5'>器</b><b class='flag-5'>在</b><b class='flag-5'>EtherCAT</b><b class='flag-5'>運(yùn)動(dòng)</b><b class='flag-5'>控制器</b>中的應(yīng)用
    RM新时代网站-首页