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

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

3天内不再提示

强实时运动控制内核MotionRT750(六):us级高速交互之C++,为智能装备提速

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

扫码添加小助手

加入工程师交流群

强实时运动控制内核MotionRT750

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

wKgZPGi5NrOAQWvRAAMxG6MrdvA670.png

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

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

wKgZO2i5NrOAPgx6AAPC9JyZk3E427.png


MotionRT750应用优势:

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

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

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

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

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

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

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

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

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



超实时EtherCAT运动控制卡XPCIE6032H

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

wKgZPGi5NrSAV4jqAAVq3C2HUzg389.png

wKgZO2i5NrSADo56AAQxzBwWQ24847.png


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

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运动控制卡上市!”查看。



超实时EtherCAT运动控制卡XPCIE2032H

XPCIE2032H集成2路独立EtherCAT接口。整卡最高可支持至254轴运动控制;125usEtherCAT通讯周期时,单接口最高可支持32轴运动控制。2个EtherCAT主站各通道独立工作,多EtherCAT主站互不影响。

wKgZO2i5NrWAalJYAAatGCNsEDI178.png


双EtherCAT主站端口可任意设置为以下通道,且两个端口也设置为不同类型通道:

● 高速通道 - EtherCAT通讯周期125us

● 常规通道 - EtherCAT通讯周期250us-8ms

wKgZPGi5NrWAV7MDAATBxNPBPAA813.png

wKgZPGi5NrWAYZdDAAMv513p3I4681.png

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


XPCIE2032H硬件特性:

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

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

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

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

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

6.板载4路高速锁存,4路通用PWM输出。

更多关于XPCIE2032H的详情介绍与使用请点击→“高速高精运动控制!PCIe超实时2通道EtherCAT运动控制卡上市!”查看。


超实时EtherCAT运动控制卡XPCIE1032H

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

wKgZO2i5NraAQQA7AAjdXINFs_8390.png

chaijie_default.png

XPCIE1032H视频介绍可点击→“高性能PCIe EtherCAT运动控制卡 | XPCIE1032H”查看。

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

wKgZO2i5NreAHBQMAAGli2TGi_w623.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详情点击→“不止10倍提速!PCIe EtherCAT实时运动控制卡XPCIE1032H 等您评测!”查看。


01 C++进行MotionRT750项目的创建与开发

1.打开Visual Studio 2022软件选择创建新项目。

wKgZO2i5NreAHKn9AACQvrf3TBk174.png

2.选择开发语言为“C++”和“MFC应用”。

wKgZPGi5NreARKONAAEMHf6oQBU716.png

3.选择项目名称、文件目录位置及框架。

wKgZO2i5NriAZlFkAABZf37YIWI961.png

4.选择类型为“基于对话框”,下一步或者完成。

wKgZPGi5NriAWUDoAAEpjbCZ7Yw713.png

5.将厂商提供的C++的库文件和相关头文件复制到新建的项目里面。

wKgZO2i5NriAA3-mAAJWaP3EQgE957.png

6.在项目中添加静态库和相关头文件。

静态库:zauxdll.lib, zmotion.lib

相关头文件:zauxdll2.h, zmotion.h

1)先右击头文件,接着依次选择:“添加”→“现有项”。

wKgZPGi5NrmADNYkAAI2F1uAk_c449.png

2)在弹出的窗口中依次添加静态库和相关头文件。

wKgZO2i5NrmAA8SvAAF3ELPhccs407.png

3)声明用到的头文件和定义控制器连接句柄。

wKgZPGi5NrmAMm3tAAD4QaREiXI824.png


02 相关PC函数介绍

1.PC函数手册可在光盘资料查看,具体路径如下。

wKgZO2i5NrmACv9eAADPw3Fwguk699.png

2.PC函数介绍。

wKgZPGi5NrqAHe3gAAGEdeQ6fyE965.png

wKgZO2i5NrqAaC2iAADtq4P-pCU055.png

wKgZPGi5NrqAQCrrAAIF7l_xhVQ378.png

wKgZO2i5NruAN1jrAAFyx6NcCug956.png

wKgZPGi5NruAFj19AAG4ZwM3PEg013.png

wKgZO2i5NruAH9WzAADgdzmm4y4128.png

wKgZPGi5NruANlyvAAShLsdfldA907.png

wKgZO2i5NryAWsYVAAFggsmHgnA625.png

wKgZPGi5NryACjAcAAEqhH-3VwU164.png

wKgZO2i5NryAPm67AAHxcXgQ2L8046.png


03 相关测试代码介绍

1.MotionRT750通过LOCAL连接按钮的事件处理函数,调用函数ZAux_FastOpen(),选择连接类型5去连接控制卡(LOCAL连接方式)。

wKgZPGi5Nr2AXi2SAAKJG0Oepqk005.png

voidCcRunSpdDlg::OnBnClickedButton3()
{
// 连接类型,
  CString s;
  cb1.GetWindowText(s);
 if(!ZAux_FastOpen((ZMC_CONNECTION_TYPE)5, &s.GetBuffer()[0],1000, &handle))
  {
   MessageBox("MotionRT750链接成功!");
  }
 else
  {
   MessageBox("MotionRT750链接失败!");
  }
}

2.MotionRT750和ZMC432-V2型号控制器通过网口连接按钮的事件处理函数,调用函数ZAux_OpenEth()去连接控制器(网口连接方式)。

wKgZPGi5BkaAapIEAAG_AtHG2TM297.pngwKgZO2i5Nr2AC048AAQ1sy05jtU645.png

voidCcRunSpdDlg::OnBnClickedButton1()
{
  CString s;
  ed1.GetWindowText(s);
  std::string ip = s.GetBuffer();
 if(!ZAux_OpenEth(&ip[0],&handle))
  {
   MessageBox("链接成功!");
  }
 else
  {
   MessageBox("链接失败!");
  }
}

3.PCIE464型号控制卡通过PCI连接按钮的事件处理函数,调用函数ZAux_FastOpen(),选择连接类型4去连接控制卡(PCI连接方式)。

wKgZPGi5Nr2AJgYCAANBmd9DYZ0372.png

voidCcRunSpdDlg::OnBnClickedpciconct()
{
 //TODO:在此添加控件通知处理程序代码
  CString t;
  cb3.GetWindowText(t);
 if(!ZAux_FastOpen((ZMC_CONNECTION_TYPE)4, &t.GetBuffer()[0],1000, &handle))
  {
   MessageBox("链接成功!");
  }
 else
  {
   MessageBox("链接失败!");
  }
}

4.通过单条指令交互周期的测试按钮的事件处理函数来计算单条指令的交互平均耗时和总耗时。

voidCcRunSpdDlg::OnBnClickedButton5()
{
   CString s;
  std::string S;
 floatdpos =0;
  cb2.GetWindowText(s);
  S = s.GetBuffer();
 inti;
  LARGE_INTEGER fre, StartCount, StopCount;
 QueryPerformanceFrequency(&fre);
 //开始计数
  QueryPerformanceCounter(&StartCount);
  for(i=1; i <= std::stoi(S); i++)
     {
         ZAux_Direct_GetDpos(handle, 0, &dpos);
     }
     //停止计数
     QueryPerformanceCounter(&StopCount);
     double  elapsed = (double)(StopCount.QuadPart - StartCount.QuadPart);
     double  exeTime, exeTime1;
     exeTime = elapsed * 1000 / fre.QuadPart;                           //ms 总耗时
     exeTime1 = elapsed * 1000 / fre.QuadPart/ (std::stoi(S)) * 1000;   //us 单条指令耗时
     //时间显示
     ed2.SetWindowText(std::to_string(exeTime1).data());			  //us
     ed3.SetWindowText(std::to_string((double)exeTime).data());        //ms
     ed6.SetWindowText(std::to_string(dpos).data());
}

5.通过多条指令交互周期的测试按钮的事件处理函数来计算多条指令的交互平均耗时和总耗时。

voidCcRunSpdDlg::OnBnClickedButton6()
{
  CString s;
  std::string S;
 floatdata[12] = {0};
 charget[255];
  cb2.GetWindowText(s);
  S = s.GetBuffer();
  std::string cmd ="?dpos(0),dpos(1),dpos(2),dpos(3),axisstatus(0),axisstatus(1),axisstatus(2),axisstatus(3),in(0),in(1),in(2),in(3)";
  LARGE_INTEGER fre, StartCount, StopCount;
 QueryPerformanceFrequency(&fre);
 //开始计数
  QueryPerformanceCounter(&StartCount);
 for(inti =1; i <= std::stoi(S); i++)
     {
         ZAux_DirectCommand(handle, &cmd[0], get, 255);
     }
     //停止计数
     QueryPerformanceCounter(&StopCount);
     double  elapsed = (double)(StopCount.QuadPart - StartCount.QuadPart);
     double  exeTime, exeTime1;
     exeTime = elapsed * 1000 / fre.QuadPart;                           //ms 总耗时
     exeTime1 = elapsed * 1000 / fre.QuadPart / (std::stoi(S)) * 1000;  //us 单条指令耗时      //时间显示
     ed4.SetWindowText(std::to_string(exeTime1).data());               //单条指令耗时
     ed5.SetWindowText(std::to_string((double)exeTime).data());		  //总耗时
     ZAux_TransStringtoFloat(&get[0], 12, data);
     ed7.SetWindowText(std::to_string(data[0]).data());
     ed8.SetWindowText(std::to_string(data[1]).data());
     ed9.SetWindowText(std::to_string(data[2]).data());
     ed10.SetWindowText(std::to_string(data[3]).data());
     ed11.SetWindowText(std::to_string((int)data[4]).data());
     ed12.SetWindowText(std::to_string((int)data[5]).data());
     ed13.SetWindowText(std::to_string((int)data[6]).data());
     ed14.SetWindowText(std::to_string((int)data[7]).data());
     ed15.SetWindowText(std::to_string((int)data[8]).data());
     ed16.SetWindowText(std::to_string((int)data[9]).data());
     ed17.SetWindowText(std::to_string((int)data[10]).data());
     ed18.SetWindowText(std::to_string((int)data[11]).data());
}

6.网口连接周期上报的方式获取输入口状态的总耗时测试函数如下。

voidCcRunSpdDlg::OnBnClickedButton9()
{
 //TODO:在此添加控件通知处理程序代码 0
  int32 singleValue =0;
  int32 InState[1000];
 //打开使能周期上报
 ZAux_CycleUpEnable(handle,0,1000,"IN(0,1000)");
  //强制上报一次,0 为通道号
 ZAux_CycleUpForceOnce(handle,0);
  LARGE_INTEGER fre, start, stopCount;
  QueryPerformanceFrequency(&fre);
  //开始计数
  QueryPerformanceCounter(&start);
 for(inti =0; i <  1000; i++)
     {
         int ret = ZAux_CycleUpReadBuffInt(handle, 0, "IN", i, InState);
         if (ret != 0)		 //判断是否报错,有报错弹出错误码
  	 {
             CString str;
             str.Format(_T("错误码:%d"), ret);
	     MessageBox(str);
             break;
             }
     }
     QueryPerformanceCounter(&stopCount);
     double  elapsed = (double) (stopCount.QuadPart - start.QuadPart);
     double  exeTime;
     exeTime = elapsed * 1000 / fre.QuadPart;				       //ms
     //显示
     ed19.SetWindowText(std::to_string(exeTime).data());          //ms
     //关闭周期上报的功能
     ZAux_CycleUpDisable(handle, 0);
}

7.单条指令读取1个输入口状态的总耗时测试函数如下。

voidCcRunSpdDlg::OnBnClickedButton10()
{
 //TODO:在此添加控件通知处理程序代码
  uint32 singleValue =0;
  uint32 InState[1000];
  LARGE_INTEGER fre, StartCount, StopCount;
 QueryPerformanceFrequency(&fre);
 //开始计数
  QueryPerformanceCounter(&StartCount);
 for(inti =0; i <  1000; i++)
     {
         ZAux_Direct_GetIn(handle, i, &singleValue);                    //单条指令读取单个输入口状态
         InState[i] = singleValue;
     }
     //停止计数
     QueryPerformanceCounter(&StopCount);
     double  elapsed = (double)(StopCount.QuadPart - StartCount.QuadPart);
     double  exeTime;
     exeTime = elapsed * 1000 / fre.QuadPart;                           //ms 总耗时
      //显示
      ed20.SetWindowText(std::to_string(exeTime).data());     //ms
}

8.单条指令读取多个输入口状态的总耗时测试函数如下。

voidCcRunSpdDlg::OnBnClickedButton11()
{
 //TODO:在此添加控件通知处理程序代码
  int32 singleValue[1000];
  LARGE_INTEGER fre, StartCount, StopCount;
 QueryPerformanceFrequency(&fre);
 //开始计数
  QueryPerformanceCounter(&StartCount);
 ZAux_Direct_GetInMulti(handle,0,999, singleValue);
     //停止计数
  QueryPerformanceCounter(&StopCount);
 double elapsed = (double)(StopCount.QuadPart - StartCount.QuadPart);
 double exeTime;
  exeTime = elapsed *1000/ fre.QuadPart;             //ms 总耗时
  //显示
  ed21.SetWindowText(std::to_string(exeTime).data());	 //ms
}



04 运行效果

1.MotionRT750通过LOCAL连接方式的单条指令和多条指令交互时间测试结果如下图所示。

wKgZO2i5Nr6Ac0BqAAKJG0Oepqk295.png

MotionRT750 LOCAL连接方式示意图

wKgZPGi5Nr6AMd93AAEiNy3cCw0498.pngMotionRT750 LOCAL连接方式测试(1k次)

wKgZO2i5Nr6AczLoAAEho6i8Rhk211.pngMotionRT750 LOCAL连接方式测试(1w次)

wKgZPGi5Nr-ARYEGAAEkZ_pFVq0135.pngMotionRT750 LOCAL连接方式测试(10w次)

2.MotionRT750通过网口连接方式的单条指令和多条指令交互时间测试结果如下图所示。

wKgZO2i5Nr-AETtLAAKYtpidfv0471.pngMotionRT750 网口连接方式示意图


wKgZPGi5Nr-ARnChAAENLFX2lSM048.pngMotionRT750 网口连接方式测试(1k次)

wKgZO2i5NsCAbWVdAAEM7ghxBMo713.pngMotionRT750 网口连接方式测试(1w次)

wKgZPGi5NsCAP3ZwAAFeyzteVQI309.pngMotionRT750 网口连接方式测试(10w次)

3.ZMC432-V2控制器通过网口连接方式的单条指令和多条指令交互时间测试结果如下图所示。

wKgZO2i5Nr2AC048AAQ1sy05jtU645.pngZMC432-V2 网口连接方式示意图

wKgZO2i5NsCAdgTBAAEmPqgC8Zk472.pngZMC432-V2 网口连接方式测试(1k次)

wKgZPGi5NsGAHMRMAAEnjlXo7fA492.pngZMC432-V2 网口连接方式测试(1w次)

wKgZO2i5NsGAXt7uAAEpg8gqi1w433.pngZMC432-V2 网口连接方式测试(10w次)

4.PCIE464控制卡通过PCI连接方式的单条指令和多条指令交互时间测试结果如下图所示。

wKgZPGi5NsKATG9uAANAH5nKGTE746.pngPCIE464 PCI连接方式示意图

wKgZO2i5NsKAL_L3AAE9sQVig4o581.pngPCIE464 PCI连接方式测试(1k次)

wKgZO2i5NseATJswAAFHcwUA7Bs664.pngPCIE464 PCI连接方式测试(1w次)

wKgZPGi5NseAQg3tAAFGUvfTi1s313.pngPCIE464 PCI连接方式测试(10w次)

接下来是对IO状态获取的耗时测试,通过不同的IO状态获取模式(周期上报,单指令获取1个或多个输入口状态),对比各连接方式下的总耗时,旨在为实际应用场景提供性能参考,提升数据获取效率,确保系统能更高效稳定运行。

(1)MotionRT750通过LOCAL连接方式时使用单条指令获取1个输入口状态和单条指令获取多个输入口状态,两种方式获取1000个输入口状态的总耗时如下。

wKgZPGi5Nr2AXi2SAAKJG0Oepqk005.png

wKgZO2i5NsiAF4_4AAFw5Q6DxVs841.png

(2)MotionRT750通过网口连接方式使用周期上报功能获取输入口状态、使用单条指令获取1个输入口状态和使用单条指令获取多个输入口状态,三种方式获取1000个输入口状态的总耗时如下。

wKgZO2i5Nr-AETtLAAKYtpidfv0471.png

wKgZPGi5NsiAHgi7AAF8bI4sSi4858.png

(3)ZMC432-V2控制器通过网口连接方式使用周期上报功能获取输入口状态、使用单条指令获取1个输入口状态和使用单条指令获取多个输入口状态,三种方式获取1000个输入口状态的总耗时如下。

wKgZO2i5NsmAMwjwAAQ1sy05jtU344.png

wKgZPGi5NsmATJ6BAAGeRbqgH58165.png

(4)PCIE464控制卡通过PCI连接方式使用单条指令获取1个输入口状态和单条指令获取多个输入口状态,两种方式获取1000个输入口状态的总耗时如下。

wKgZO2i5B9qAM6vGAAKM1fYGEHc338.pngwKgZO2i5NsqABoPIAAFrGr-LlJs759.png


05 分析与结论

1.对于MotionRT750的LOCAL方式连接、网口方式连接以及PCI方式和控制器网口方式连接时的单条或多条指令交互时间测试,从上面的运行效果图的数据显示来看,可以看出:

当进行1k、1w次和10w次的单指令交互或多条指令交互的时候,MotionRT750的LOCAL连接方式进行单条指令交互所需要的时间(平均2.1us左右)和一次性读取12个状态的多条指令交互所需要的时间(平均3.8us左右),都是要比PCI连接和控制器网口连接的方式更快(PCI单条平均42us左右、多条平均105us左右;网口单条平均127us、多条平均177us左右)。

wKgZPGi5NsqAPvVfAAEkYCef1W8462.png

2.对于读取输入口状态指令测试,从运行效果图的显示结果来看:

无论是MotionRT750还是控制器,在网口连接下周期上报功能效率最高,避免轮询引发的多包数据传输耗时问题,提升带宽利用率,总耗时大约仅需0.44ms;

而单指令批量读取多个输入口状态因减少通信次数,耗时时间对比读取单个输入口降低约96%;

LOCAL和PCI连接时,虽不支持周期上报功能,但单指令对比下,批量读取多个输入口状态的效率显著高于读取单个输入口。

综合来看,在实际应用中,选择哪种数据获取策略取决于具体的应用场景、数据特性和性能要求。

例如,如果程序需要快速响应单个事件,单条获取可能更为合适。如果目标是最大化数据处理速度,多条获取可能更有益。而对于需要定期维护数据新鲜度的应用,周期性获取是必要的。

3.C++例程讲解可点击→“强实时运动控制内核MotionRT750(六):us级高速交互之C++,为智能装备提速”查看。


完整代码获取地址

wKgZO2i5NsqAZsvYAAA9vKPXRmQ572.jpg

本次,正运动技术强实时运动控制内核MotionRT750(六):us级高速交互之C++,为智能装备提速,就分享到这里。

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


审核编辑 黄宇

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

    关注

    5

    文章

    793

    浏览量

    34288
  • 智能装备
    +关注

    关注

    3

    文章

    263

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    实时运动控制内核MotionRT750(十):运动控制中的微调轨迹动态补偿

    运动控制
    正运动技术
    发布于 :2025年11月06日 09:27:11

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

    EtherCAT总线冗余赋能生产更可靠保障!
    的头像 发表于 08-21 11:14 572次阅读
    <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>(五):EtherCAT总线冗余让生产制造更可靠

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

    C#编程实现高速贴装应用中的拱形运动
    的头像 发表于 08-15 11:32 2535次阅读
    <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>贴装应用中的拱形<b class='flag-5'>运动</b>

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

    PSO在精密点胶中的应用
    的头像 发表于 07-16 11:35 508次阅读
    <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

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

    实时运动控制内核MotionRT750的驱动安装与内核配置
    的头像 发表于 07-03 15:48 3460次阅读
    <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