0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

强实时运动控制内核MotionRT750(五):EtherCAT总线冗余让生产制造更可靠

正运动技术 ? 来源:正运动技术 正运动技术 ? 作者:正运动技术 ? 2025-08-21 11:14 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

强实时运动控制内核MotionRT750

MotionRT750是正运动技术首家自主自研的x86架构Windows系统或Linux系统下独占确定CPU的强实时运动控制内核。

wKgZO2imjvKAbTefAAMxG6MrdvA035.png

该方案采用独占确定CPU内核技术实现超强性能的强实时运动控制。它将核心的运动控制、机器人算法数控(CNC)及机器视觉等强实时的任务,集中运行在1-2个专用CPU核上。与此同时,其余CPU核则专注于处理Windows/Linux相关的非实时任务。

此外集成MotionRT750 Runtime实时层与操作系统非实时层,并利用高速共享内存进行数据交互,显著提升了运动控制与上层应用间的通信效率及函数执行速度,最终实现更稳定、更高效的智能装备控制,确保了运动控制任务的绝对实时性与系统稳定性,特别适用于半导体、电子装备等高速高精的应用场合。

wKgZPGimjvOADE-_AAO_j1LLytQ869.png

MotionRT750应用优势:

1.跨平台兼容性:支持Windows/Linux系统,适配不同等级CPU。

2.开发灵活性:提供多语言编程接口,便于二次开发与功能定制。

3.实时性提升:通过CPU内核独占机制与高效LOCAL接口,实现2-3μs指令交互周期,较传统PCI/PCIe方案提速近20倍。

4.扩展能力强化:多卡多EtherCAT通道架构支持254轴运动控制及500μsEtherCAT周期。

5.系统稳定性:32轴125μsEtherCAT冗余架构消除单点故障风险,保障连续生产。

6.安全可靠性:不惧Windows系统崩溃影响,蓝屏时仍可维持急停与安全停机功能有效,确保产线安全运行。

7.功能扩展性:实时内核支持C语言程序开发,方便功能拓展与实时代码提升效率。

MotionRT750视频介绍可点击→“正运动强实时运动控制内核MotionRT750”查看。

更多关于MotionRT750的详情介绍与使用点击→强实时运动控制内核MotionRT750(一):驱动安装、内核配置与使用。



超实时EtherCAT运动控制卡XPCIE6032H

XPCIE6032H运动控制卡集成6路独立EtherCAT主站接口。整卡最高可支持254轴运动控制;125usEtherCAT通讯周期时,两个端口配置冗余最高可支持32轴运动控制。6个EtherCAT主站各通道独立工作,多EtherCAT主站互不影响。

wKgZO2imjvOABuxxAAVq3C2HUzg418.png

此外,对于EtherCAT接口数量需求不高的客户,我们也有衍生型号XPCIE2032H可选。同系列产品XPCIE2032H集成2路独立EtherCAT接口。整卡最高可支持至254轴运动控制;125usEtherCAT通讯周期时,单接口最高可支持32轴运动控制。2个EtherCAT主站各通道独立工作,多EtherCAT主站互不影响。

wKgZPGimjvSAceHKAAQhpXjCSeY910.png

XPCIE2032H视频介绍可点击→“高速高精运动控制!PCIe超实时2通道EtherCAT运动控制卡上市!_哔哩哔哩_bilibili”查看。

XPCIE6032H运动控制卡面向半导体设备、精密3C电子、生物医疗仪器、新能源装备、人形机器人及激光加工等高速高精场景,为固晶机、贴片机、分选机、锂电切叠一体机、高速异形插件设备等自动化装备提供核心运动控制支持。

XPCIE6032H硬件特性:

1.EtherCAT通讯周期可到125us(需要主机性能与实时性足够)。

2.板卡集成6路独立的EtherCAT主站接口,最多可支持254轴运动控制。

3.搭载运动控制实时内核MotionRT750。

4.相较于传统的PCI/PCIe、网口等通讯方式,速度可提升了10-100倍以上。

5.板载16路高速输入,16路高速输出。

6.板载4路高速锁存、4路硬件位置比较输出、4路通用PWM输出。


XPCIE6032H视频介绍可点击→“全球首创!PCIe 6路高性能EtherCAT运动控制卡XPCIE6032H_哔哩哔哩_bilibili”查看。

更多关于XPCIE6032H的详情介绍与使用点击→全球首创!PCIe超实时6通道EtherCAT运动控制卡上市!。



PCIe EtherCAT实时运动控制卡XPCIE1032H

XPCIE1032H是一款基于PCI Express的EtherCAT总线运动控制卡,可选6-64轴运动控制,支持多路高速数字输入输出,可轻松实现多轴同步控制和高速数据传输。

wKgZO2imjvSANlWzAAjdXINFs_8591.png

XPCIE1032H运动控制卡集成了强大的运动控制功能,结合MotionRT7运动控制实时软核,解决了高速高精应用中,PC Windows开发的非实时痛点,指令交互速度比传统的PCI/PCIe快10倍。

wKgZPGimjvWAObatAAGli2TGi_w996.png

XPCIE1032H硬件特性:

1.6-64轴EtherCAT总线+脉冲可选,其中4路单端500KHz脉冲输出。

2.16轴EtherCAT同步周期500us,支持多卡联动。

3.板载16点通用输入,16点通用输出,其中8路高速输入和16路高速输出。

4.通过EtherCAT总线,可扩展到512个隔离输入或输出口。

5.支持PWM输出、精准输出、PSO硬件位置比较输出、视觉飞拍等。

6.支持直线插补、圆弧插补、连续轨迹加工(速度前瞻)。

7.支持电子凸轮、电子齿轮、位置锁存、同步跟随、虚拟轴、螺距补偿等功能。

8.支持30+机械手模型正逆解模型算法,比如SCARA、Delta、UVW、4轴/5轴 RTCP...

XPCIe1032H视频介绍可点击→“高性能PCIe EtherCAT运动控制卡 | XPCIE1032H_哔哩哔哩_bilibili”

更多关于XPCIE1032H详情点击“不止10倍提速!PCIe EtherCAT实时运动控制卡XPCIE1032H 等您评测!”查看。




冗余的概念

什么是总线冗余功能?我们都知道,EtherCAT现场总线具有灵活的拓扑结构,设备间支持线型、星型、树型的连接方式,其中线型结构简单、传输效率高,大多数的现场应用中也是使用这种连接方式,如下图所示。

wKgZO2imjvWACaR4AAE5lOeijDM622.png

线型的连接方式确实简单,走线灵活,便于现场设备布局与维护。在自动化的工业生产中,设备通常在不同的环境中长时间运行,线缆的老化、安装连接不够严谨等因素导致线缆断连。

假如有一天第一个伺服和第二个伺服之间的线缆断了,那么第1个伺服后面的设备是不是将无法正常运行呢?

wKgZPGimjvaAQAkBAAE-a2SmhFM737.png

不管是哪种接线方式,线缆断线将会影响设备的正常运转,哪怕是传统的CANRS485等通信的设备控制也都无法正常运转。

问题还得要解决,那有没有标准的、又不需要添加太多额外的设计成本,就能解决上述的问题呢?一起来看EtherCAT总线给出的解决方案,以及EtherCAT冗余技术的实现原理。我们先看它的连接方式,如下图所示。

wKgZO2imjvaAZWXkAAE9frNHQSk371.png

从EtherCAT的线缆冗余接线图中可以看出,复用了最后一个从站设备的OUT端接回主站,是不是有点巧妙呢?减少了硬件成本,还能解决问题,确实受大家喜欢。再来细看它的数据流向,假设还是第一个伺服和第二个伺服之间断开了,它的工作原理如下图所示。

wKgZPGimjveAfD8aAAFBlOvi1AM992.png

伺服1和伺服2的线缆断开后仍与从站设备连接着,但通信线路变成两条支线,设备仍然可以正常通信,设备依然还能够继续控制运行。上述就是EtherCAT冗余的解决方案,将线型结构变成了环形结构,实现了链路冗余功能。


冗余功能的优势

01 冗余功能标准化

双网口的EtherCAT主站与线缆冗余,使用了最后一个从站设备的OUT端口,使得EtherCAT冗余功能标准化。

02 增强系统可靠性和稳定性

工业自动化行业中通常要求总线上的设备不间断运转,不允许停止生产,冗余技术可以实现应用系统的可靠性和稳定性。

03 故障诊断与处理

当出现线缆断线时,变成两条之链路控制继续工作,同时EtherCAT可以自动检测到总线系统中的故障点,可大大简化系统的维护工作,提高了设备的维护性。


总线冗余的软硬件配置

(1)安装MotionRT750强实时运动控制内核的工控机一台。

(2)XPCIE6032H运动控制卡,该卡自带槽位0到槽位5总共6个EtherCAT总线主站接口。也可以采用XPCIE2032H运动控制卡,该卡自带槽位0到槽位1总共2个EtherCAT总线主站接口。

wKgZO2imjviADLpNAAP8dzQLbD0948.png

wKgZPGimjviAOZmwAAMjfZ-hdKk018.png

(3)8个总线伺服驱动器和1个ZMIO310的EtherCAT总线扩展模块。

wKgZO2imjvmAHWVTAATp7yGpE1w705.png

Qt开发MotionRT750强实时运动控制内核

Qt项目的创建

1.打开Qt Creator参考如下步骤创建新的Qt项目。

wKgZPGimjvqAde2CAAD5aR8CwJI390.png

wKgZO2imjvqAFFDuAAC1v4WR5UI561.png

wKgZPGimjvqAJeKcAAC3raqz5Gs253.png

wKgZO2imjvuASc_oAAD-MSoLDZI095.png

wKgZPGimjvuATSVdAADMkKpwHK8929.png

2.把厂商提供的zmotion.dll、zmotion.lib、zmotion.h、zmcaux.cpp、zmcaux.h库文件拷贝到新建的QT项目下(Linux系统的使用libzmotion.so的动态库)。

wKgZO2imjvyAJNtHAAEs2zKYOsY674.png

3.如果想实现纯上位机的总线初始化,可以找厂商提供一下以下2个文件,进行总线初始化。

wKgZPGimjvyADVRBAAGIaCuZioA359.png

4.添加外部库【选择项目后右键】→【添加库】→【外部库】。

wKgZO2imjv2AXZuqAAF1yyzu7sc911.png

5.引入头文件并定义控制器的句柄。

wKgZPGimjv6AJv3cAAHJM762xOE351.png

6.至此Qt项目新建完成,可以进行MotionRT750的项目开发了。


相关PC函数介绍

1.上位机连接MotionRT750的接口。

wKgZO2imjv-AL7gBAAA2GLnqPFc749.png

2.总线冗余相关的指令上位机暂时还没封装成现成的指令,我们可以通过在线命令直接封装实现。

总线冗余功能相关Basic指令介绍:

wKgZPGimjv-ANMXqAAAz5qRBsNI404.png

wKgZO2imjwCAEM3GAABCLz-tNRg211.png


万能上位机接口在线命令介绍:

wKgZPGimjwCANG84AABK6fyIJ6w836.png

wKgZO2imjwCAE7L5AAA_CbSnbJg757.png


通过在线命令封装Basic的轴速度设置指令得到上位机的轴速度设置指令例程如下:

wKgZPGimjwCAHMKxAAEMh9TjLNA824.png

/************************************************************* Description: //设置轴速度,单位为units/s,当多轴运动时,作为插补运动的速度 Input: //卡链接handle iaxis 轴号 fValue 设置的速度值 Output: // Return: //错误码 *************************************************************/ int32 __stdcall ZAux_Direct_SetSpeed(ZMC_HANDLE handle, int iaxis, float fValue) { char cmdbuff[2048]; char cmdbuffAck[2048]; if( iaxis > MAX_AXIS_AUX) { return ERR_AUX_PARAERR; } //生成Basic命令 sprintf(cmdbuff, "SPEED(%d)=%f", iaxis, fValue); //调用命令执行函数 return ZAux_DirectCommand(handle, cmdbuff, cmdbuffAck, 2048); }



相关测试代码介绍

1.上位机如何链接上MotionRT750。

//通过LOCAL接口连接RT750, LOCAL接口的指令交互速度快至3us以内 intrint =ZAux_FastOpen(5,"LOCAL",1000,&g_handle); if(0== rint) { //控制器连接成功,初始化程序变量 ConnectNum=0; ContrStatus=1; //控制器连接成功,启动定时器 startTimer(200); //控制器连接成功,开始正常初始化 MainWindow::ZmcEcatInit(SlotId,BeiYongSlotId); //初始化线程和 Worker thread =newQThread(this); worker =newWorker();// 注意:不指定父对象 //将 Worker 移至子线程 worker->moveToThread(thread); //连接信号与槽 connect(thread, &QThread::started, worker, &Worker::doWork); connect(worker, &Worker::workFinished, thread, &QThread::quit); connect(worker, &Worker::workFinished, worker, &QObject::deleteLater); connect(thread, &QThread::finished, thread, &QObject::deleteLater); //可选:根据子线程的总线扫描情况,弹出对应弹窗 connect(worker, &Worker::EcatInitStatus, this,&MainWindow::EcatScanInfo); connect(worker, &Worker::UpdateLog, this,&MainWindow::UpdateLog); //启动状态监控线程 thread->start(); }

2.如何实现纯上位机的总线初始化。

//Qt的总线初始化子函数 intMainWindow::ZmcEcatInit(intScanSlotId ,intBackSlotId) { //定义总线初始化的信息结构体 structEcatInitInfoSetMyEcatInitInfo; //是否自定义初始化参数,设置1的话使用默认的总线初始化参数,设置成0则需要自定义总线初始化相关参数; MyEcatInitInfo.InitStructFlag =0; if(MyEcatInitInfo.InitStructFlag !=1) { //【1. 本地轴参数,用于指定本地轴的起始 ID 和使用的轴数量】 MyEcatInitInfo.LocalAxisId =0; MyEcatInitInfo.LocalAxisNum =0; //【2. 驱动轴相关参数,用于指定驱动轴的起始 ID 和数量】 MyEcatInitInfo.DriveAxisStart =0; MyEcatInitInfo.DriveAxisNum =-1; // 驱动轴数量,-1 表示总线初始化的时候不判断驱动的轴数量是否对上 MyEcatInitInfo.EcatNodeNum =-1; // 总线节点数目,-1 表示总线初始化的时候不判断节点个数是否对上 for(inti =0; i


3.指定哪个总线接口为主槽位号,哪个总线接口为从槽位号。

//停止总线 sprintf(cmdbuff,"SLOT_STOP(%d)", SlotId); ZAux_Execute(handle, cmdbuff, ReceBuff,256); //设置总线冗余的从总线槽位号,总线扫描前设置 if((BusRedSwitch==1)&&( SlotId!=RedSpareSlot)) { //等待200ms MyDelayMs(200, pOutTime); //设置总线槽位号SlotId为主总线槽,设置RedSpareSlot为从总线槽 sprintf(cmdbuff," SLOT_SLAVE(%d)=%d", SlotId,RedSpareSlot); ZAux_Execute(handle, cmdbuff, ReceBuff,256); } //等待200ms MyDelayMs(200, pOutTime); //扫描总线 sprintf(cmdbuff,"SLOT_SCAN(%d) ?return", SlotId); Iresult += ZAux_Execute(handle, cmdbuff, ReceBuff,256);


通过RTSys软件的在线命令功能,输入?*slot指令查询XPCIE6032H的槽位号分布情况如下:

wKgZO2imjwGAfCnAAAAenAy0yG0423.png

通过RTSys软件的在线命令功能,输入?*slot指令查询XPCIE2032H的槽位号分布情况如下:

wKgZPGimjwGAftaQAAAZzx-PMKY737.png

4.通过Qt的定时器实时获取总线In口和Out口的通讯状态。

//3、更新ECAT In口与Out口状态 sprintf(Cmdbuff,"?NODE_INFO(%d,%d,6)",SlotId,CurNodeId); Err =ZAux_Execute(g_handle, Cmdbuff, AckBuff,256); if(0== Err) { Tempint =std::atoi(AckBuff); //如果bit0为1,则总线IN口通讯正常,设置为绿色 if((Tempint==1)||(Tempint==3)) { EcatInList[i]->setStyleSheet( "QPushButton {"//背景色 " background-color: rgb(50, 205, 50);" "}" "QPushButton:hover {" //鼠标悬停时的背景色 " background-color: rgb(50, 205, 50);" "}" "QPushButton:pressed {"//鼠标按下时的背景色 " background-color: rgb(50, 205, 50);" "}"); } //否则总线IN口通讯异常,设置为红色 else { EcatInList[i]->setStyleSheet( "QPushButton {"//背景色 " background-color: rgb(205, 50, 50);" "}" "QPushButton:hover {" //鼠标悬停时的背景色 " background-color: rgb(205, 50, 50);" "}" "QPushButton:pressed {"//鼠标按下时的背景色 " background-color: rgb(205, 50, 50);" "}"); } //如果bit1为1,则总线Out口通讯正常,设置为绿色 if((Tempint==2)||(Tempint==3)) { EcatOpList[i]->setStyleSheet( "QPushButton {"//背景色 " background-color: rgb(50, 205, 50);" "}" "QPushButton:hover {" //鼠标悬停时的背景色 " background-color: rgb(50, 205, 50);" "}" "QPushButton:pressed {"//鼠标按下时的背景色 " background-color: rgb(50, 205, 50);" "}"); } //否则总线Out口通讯异常,设置为红色 else { EcatOpList[i]->setStyleSheet( "QPushButton {"//背景色 " background-color: rgb(205, 50, 50);" "}" "QPushButton:hover {" //鼠标悬停时的背景色 " background-color: rgb(205, 50, 50);" "}" "QPushButton:pressed {"//鼠标按下时的背景色 " background-color: rgb(205, 50, 50);" "}"); } }


5.总线冗余演示视频可点击→“正运动强实时运动控制内核MotionRT750”

本次,正运动技术强实时运动控制内核MotionRT750(五):EtherCAT总线冗余让生产制造更可靠,就分享到这里。

本文由正运动技术原创,欢迎大家转载,共同学习,一起提高中国智能制造水平。文章版权归正运动技术所有,如有转载请注明文章来源。


审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 运动控制器
    +关注

    关注

    2

    文章

    456

    浏览量

    25518
  • 总线
    +关注

    关注

    10

    文章

    2974

    浏览量

    90160
  • 运动控制
    +关注

    关注

    4

    文章

    746

    浏览量

    33683
  • EtherCAT总线
    +关注

    关注

    5

    文章

    86

    浏览量

    5763
  • 正运动技术
    +关注

    关注

    0

    文章

    123

    浏览量

    689
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    实时运动控制内核MotionRT750(四):高速贴装应用中的拱形运动

    C#编程实现高速贴装应用中的拱形运动
    的头像 发表于 08-15 11:32 ?414次阅读
    <b class='flag-5'>强</b><b class='flag-5'>实时运动</b><b class='flag-5'>控制</b><b class='flag-5'>内核</b><b class='flag-5'>MotionRT750</b>(四):高速贴装应用中的拱形<b class='flag-5'>运动</b>

    储能BMS通信“卡壳”?CAN转EtherCAT电池数据“跑起来”

    ”,就像给数据贴上“加急快递标签”,确保关键参数优先传输。 2. 容错设计不能少 在网关中启用双端口冗余,即使某路EtherCAT链路中断,自动切换至备用通道,配合CAN总线的CRC校验,实现“断网不断数
    发表于 07-18 15:32

    实时运动控制内核MotionRT750(二):精密点胶的PSO应用

    PSO在精密点胶中的应用
    的头像 发表于 07-16 11:35 ?219次阅读
    <b class='flag-5'>强</b><b class='flag-5'>实时运动</b><b class='flag-5'>控制</b><b class='flag-5'>内核</b><b class='flag-5'>MotionRT750</b>(二):精密点胶的PSO应用

    实时运动控制内核MotionRT750(二):精密点胶的PSO应用#正运动技术 #运动控制 #

    运动控制
    正运动技术
    发布于 :2025年07月16日 10:05:49

    CAN转EtherCAT:化工行业高效通信的“破局者”

    在化工生产中,设备间的高效通信如同血液流动,直接影响系统稳定性与生产效率。然而,面对传统CAN总线EtherCAT网络的协议差异,工程师们常陷入“兼容性陷阱”——如何
    发表于 07-15 15:40

    当CAN握手EtherCAT:视觉检测系统的“双芯合璧”时代来了

    在汽车制造的高速生产线上,设备间的“语言不通”曾是工程师们的头疼事:CAN总线像踏实的老司机,稳扎稳打传输传感器数据;而EtherCAT网关则是追求极致速度的“闪电侠”,主导着
    发表于 07-15 15:37

    实时运动控制内核MotionRT750(一):驱动安装、内核配置与使用

    实时运动控制内核MotionRT750的驱动安装与内核配置
    的头像 发表于 07-03 15:48 ?1500次阅读
    <b class='flag-5'>强</b><b class='flag-5'>实时运动</b><b class='flag-5'>控制</b><b class='flag-5'>内核</b><b class='flag-5'>MotionRT750</b>(一):驱动安装、<b class='flag-5'>内核</b>配置与使用

    实时运动控制内核MotionRT750(一):驱动安装 #正运动技术 #正运动 #运动控制 #

    运动控制
    正运动技术
    发布于 :2025年07月03日 14:16:07

    实时运动控制内核MotionRT750(一):CPU配置 #正运动技术 #运动控制 #正运动 #

    运动控制
    正运动技术
    发布于 :2025年07月03日 14:15:14

    基于国产化鸿道Intewell操作系统的高性能实时运动控制解决方案

    目前国产化高实时运动控制达到了什么样的控制水平呢?软件+操作系统实时控制如何实现呢?下面,让我们一起看看基于国产化鸿道Intewell操作系
    的头像 发表于 12-05 16:03 ?547次阅读

    PCIe实时运动控制卡的双盘视觉筛选机上位机开发应用

    PCIe实时运动控制卡的双盘视觉筛选机上位机开发应用
    的头像 发表于 10-10 10:15 ?880次阅读
    PCIe<b class='flag-5'>实时运动</b><b class='flag-5'>控制</b>卡的双盘视觉筛选机上位机开发应用