Windows实时运动控制软核(三):LOCAL高速接口测试之C++

news2025/9/13 23:55:58

今天,正运动小助手给大家分享一下MotionRT7的安装和使用,以及使用C++对MotionRT7开发的前期准备。

01 MotionRT7简介

MotionRT7是深圳市正运动技术推出的跨平台运动控制实时内核,也是国内首家完全自主自研,自主可控的Windows运动控制实时软核。
在这里插入图片描述

1.MotionRT7具备以下特点

(1)独立软件安装,适合各种Windows电脑;绿色免安装,快速体验;采用硬件绑定的运行许可证授权(未授权也可试用);可以方便配置、启动、连接、模拟运行等。

(2)与MotionRT其它版本功能兼容,一次开发,可快速切换到嵌入式,Linux各种平台。

(3)统一函数库接口,快速的本地LOCAL接口,运动函数调用快至us级别,比普通PCI卡快数十倍。

(4)集成机器视觉,快速搭建各类运动控制+机器视觉的实时应用。

(5)强大多卡功能,最多240轴联动,支持跨卡联动,脉冲与总线联动,振镜与平台联动,轻松实现位置锁存/PSO等高级功能。

2.持续迭代的运动控制实时内核MotionRT

MotionRT是正运动技术持续建设与发展的运动控制实时内核,已不断迭代7代,从MotionRT1到MotionRT7。

在这里插入图片描述

3.MotionRT7采用模块化软件架构
在这里插入图片描述

运动控制程序、视觉算法、MotionRT7运动控制引擎,通过高共享内存进行数据交互,大大提升运动控制与机器视觉的交互效率。

用户自定义功能,融合Gmc、Gear/Cam、Frame、Robotics、CNC等算法,打造用户的专用控制系统。

4.统一开放的API函数

统一完善的SDK库,所有的第三方开发环境同一套API接口,跨平台的产品架构,提高效率,保持兼容性。

在这里插入图片描述

5.简单易用的运动控制功能特性

a.点位运动、直线插补、圆弧插补、螺旋插补、连续轨迹加工;

b.电子凸轮、电子齿轮、同步跟随、位置锁存、虚拟轴叠加;

c.S曲线加减速,SS曲线加减速,轨迹运动更柔和;

d.1D/2D/3D高速位置同步输出PS0,充分满足视觉飞拍、高速点胶、激光加工;

e.客户可自定义运动控制算法或者机器人正反解算法;

f.方便与第三方视觉配合。

6.开放的EtherCAT与配置调试工具

ZDevelop具备开放易用的配置,开发,调试,诊断等工具。ZDevelop不仅是个绿色免费的软件,而且具备轴调试,轴状态,示波器等工具。
在这里插入图片描述

MotionRT7广泛支持EtherCAT总线,支持市面上广泛易用的EtherCAT伺服,EtherCAT步进,EtherCAT IO,EtherCAT阀岛和EtherCAT传感器。

我司后续将持续完善EtherCAT的配置工具,持续努力做最好用的运动控制。

02 MotionRT7的安装和使用

第一步:安装驱动程序

1.打开“设备管理器”,选择“操作”中的“添加过时硬件”,选择“手动选择”。
在这里插入图片描述
在这里插入图片描述

2.点击“下一步”。
在这里插入图片描述

3.点击“从磁盘安装”。
在这里插入图片描述

4.点击“浏览按钮”选择驱动所在的路径,打开文件夹“driver_signed”,选择“ZMotionRt64.inf”。
在这里插入图片描述
在这里插入图片描述

5.一直点击下一步,直到安装完成。
在这里插入图片描述

注意:驱动更新时,要从设备管理器删除设备,一定要选择把驱动文件也删除。

6.MotionRT7驱动安装视频演示。

正运动技术MotionRT7--驱动安装教程演示

第二步:运行控制台程序

1.打开控制台程序所在位置,运行可执行文件“MotionRt710.exe”。
在这里插入图片描述

2.点击“Start”。
在这里插入图片描述

第三步:使用ZDevelop软件链接到控制器,进行参数监控

ZDevelop链接控制器,软件版本3.10以上,使用PCI/LOCAL方式进行连接。
在这里插入图片描述
在这里插入图片描述

第四步:网口扩展EtherCAT主站协议

1.查看网络连接。
在这里插入图片描述

2.选择用作EtherCAT的网卡,右键属性,安装协议。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.点击从磁盘安装,选择驱动器所在的路径,打开文件夹”driver_signed”,选择“MotionRtPacket.inf”。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4.安装成功后,确认ZMotionRT64 Packet Protocol Driver前面有选上。

在RT控制台程序选择增加AddEcat,这时能看到对应网卡,选择后,启动RT。

在这里插入图片描述

5.MotionRT7 EtherCAT协议安装视频演示。

正运动技术MotionRT7--EtherCAT协议安装教程

自带PC的网卡EtherCAT具有一定的实时性,如EtherCAT要提升性能,则需要把网口其它的协议都去掉以提升实时性。

如需进一步提升实时性,请使用正运动专门的EtherCAT运动控制卡XPCIE1032。

更多关于MotionRT7的参数设置以及相关问题,请参照“MotionRT7说明书”。

相关资料请前往正运动技术官网www.zmotion.com.cn或联系正运动相关人员。

03 C++进行MotionRT7项目的开发

1.新建MFC应用。
在这里插入图片描述

2.将zauxdll.lib、zauxdll2.h、zauxdll.dll和zmotion.dll这4个文件放到刚刚创建的MFC项目文件夹下。以上资料可联系正运动相关人员获取。

在这里插入图片描述

3.添加头文件声明并声明句柄。

在这里插入图片描述

(1)相关PC函数介绍
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在C++的MFC设计界面,找到需要用到的控件拖拽到窗体中进行UI界面设计,效果如下。
在这里插入图片描述

注:使用IP模式连接MotionRT7的时候,要将MotionRT710中的Config配置项Eth num的值设置为一个大于0的数(1-12),输入的IP为本机IP,可以在ZDevelop中直接查看。

(2)C++例程讲解视频演示

正运动技术自主研发MotionRT7-C++例程讲解

(3)相关代码

① 通过IP链接方式的链接按钮的消息响应函数来链接控制器。

//IP链接方式链接控制器
void CcRunSpdDlg::OnBnClickedButton1()
{
    CString s;
    ed1.GetWindowText(s);
    std::string ip = s.GetBuffer();
    if (!ZAux_OpenEth(&ip[0],&handle))
    {
        MessageBox("MotionRT7链接成功!");
    }
    else
    {
        MessageBox("MotionRT7链接失败!");
    }
}

②通过LOCAL链接方式的链接按钮的消息响应函数来链接控制器。

//Local链接方式链接控制器
void CcRunSpdDlg::OnBnClickedButton3()
{
    // 连接类型, 
    CString s;
    cb1.GetWindowText(s);
    if (!ZAux_FastOpen((ZMC_CONNECTION_TYPE)5, &s.GetBuffer()[0], 1000, &handle))
    {
        MessageBox("MotionRT7链接成功!");
    }
    else
    {
        MessageBox("MotionRT7链接失败!");
    }
}

③通过断开按钮的消息响应函数来断开控制器的链接。

//断开上位机与控制器的链接
void CcRunSpdDlg::OnBnClickedButton2()
{
    ZAux_Close(handle);
    MessageBox("MotionRT7已断开!");
}

④通过单条指令交互周期的测试按钮对单条指令交互的周期进行测试。

void CcRunSpdDlg::OnBnClickedButton5()
{
    CString s;
    std::string S;
    float dpos;
    double tme;
    char g[30];
    cb2.GetWindowText(s);
    S = s.GetBuffer();
    int i;
    DWORD startTime = GetTickCount64();//计时开始
    for (i= 1; i <= std::stoi(S); i++)
    {
        ZAux_Direct_GetDpos(handle, 0, &dpos);
    }
    ed2.SetWindowText(g);
    DWORD endTime = GetTickCount64();//计时结束
    tme = (double)(endTime - startTime) / (std::stoi(S)) * 1000;
    ed2.SetWindowText(std::to_string(tme).data());
    ed3.SetWindowText(std::to_string((double)(endTime - startTime)).data());
    ed6.SetWindowText(std::to_string(dpos).data());
}

⑤通过多条指令交互周期的测试按钮对多条指令交互的周期进行测试。

void CcRunSpdDlg::OnBnClickedButton6()
{
    CString s;
    std::string S;
    float data[12] = { 0 };
    char get[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)";
    DWORD startTime = GetTickCount64();//计时开始
    for (int i = 1; i <= std::stoi(S); i++)
    {
        ZMC_DirectCommand(handle, &cmd[0], get, 255);
    }
    DWORD endTime = GetTickCount64();//计时结束
    double tme = (double)(endTime - startTime) / (std::stoi(S)) * 1000;
    ed4.SetWindowText(std::to_string(tme).data());
    ed5.SetWindowText(std::to_string((double)(endTime - startTime)).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());
}

(4)运行效果

在这里插入图片描述IP链接方式的测试(1w次)

在这里插入图片描述LOCAL链接方式的测试(1w次)

在这里插入图片描述IP链接方式的测试(10w次)

在这里插入图片描述LOCAL链接方式的测试(10w次)

04 分析与结论

以上分别是对IP方式链接MotionRT7与LOCAL方式链接MotionRT7的指令交互测试,从上面运行效果图的数据显示来看,当进行1w次和进行10w次的单指令交互或多指令交互的时候,LOCAL链接的方式进行指令交互所需要的单条指令交互时间(平均4.7us左右和3.9us左右),一次性读取12个状态的多条指令交互时间(平均6.2us左右和5.5us左右)都比IP链接的方式更快(平均28us左右与29us左右)。
在这里插入图片描述

其次,我们可以从运行结果看出MotionRT7在LOCAL链接的方式下,指令交互的效率也是非常地稳定,当测试数量从1w增加到10w时,单条指令交互时间与多条指令交互时间波动不大,这将为工艺作业中稳定性提供了极大的保证。
MotionRT7的出现,绝对是一次重大的惊喜与升级,它为我们在进行大批量指令交互的过程中,提供了更好的效率与稳定性,给生产创造更高的效率与更多的价值!

相关的函数请参照“ZMotion PC函数库编程手册”。
在这里插入图片描述

本次,正运动技术Windows实时运动控制软核(三):LOCAL高速接口测试之C++,就分享到这里。

更多精彩内容请关注“正运动小助手”公众号,需要相关开发环境与例程代码,请咨询正运动技术销售工程师。
本文由正运动技术原创,欢迎大家转载,共同学习,一起提高中国智能制造水平。文章版权归正运动技术所有,如有转载请注明文章来源。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/104961.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux搭建测试环境详细步骤

本文讲解如何在Linux CentOS下部署Java Web项目的步骤 环境准备 &#xff08;1&#xff09;Linux系统&#xff08;2&#xff09;JDK&#xff08;3&#xff09;Tomcat &#xff08;4&#xff09;MySQL工具下载 一、Linux系统 本文主要是Linux CentOS7为例 自己在家练习小项…

[拆轮子] PaddleDetection 中的 COCODataSet 是怎么写的

今日&#xff0c;辗转反侧&#xff0c;该&#x1f4a9;的代码就是跑不成功&#xff0c;来看看 COCODataSet 到底是怎么写的&#xff0c;本文只参考当前版本的代码&#xff0c;当前版本 PaddleDetection2.5 COCODataSet 源码见附录 COCODataSet 类内部就三个函数&#xff1a; …

词义和词义消歧

Synsets(“synonym sets”, effectively senses) are the basic unit of organization in WordNet.同义词集 对于许多应用程序&#xff0c;我们希望消除歧义 • 我们可能只对一种含义感兴趣 • 在网络上搜索chemical plant 化工厂&#xff0c;我们不想搜到香蕉中的化学物质 所以…

【SpringBoot扩展点】 容器刷新前回调ApplicationContextInitializer

本文将作为Spring系列教程中源码版块的第一篇&#xff0c;整个源码系列将分为两部分进行介绍&#xff1b;单纯的源码解析&#xff0c;大概率是个吃力没人看的事情&#xff0c;因此我们将结合源码解析&#xff0c;一个是学习下别人的优秀设计&#xff0c;一个是站在源码的角度看…

【MySQL】索引和事务重点知识汇总

目录1.索引:1.1 索引的使用:1.2 索引背后的核心数据结构:1.2.1 先认识 B 树(N叉搜索树):1.2.2 再认识 B 树(N叉搜索树):2.事务:2.1 隔离性:2.1.1 脏读问题:2.1.2 不可重复读问题:2.1.3 幻读问题:2.1.4 总结:2.1.5 隔离级别:1.索引: 索引存在的意义就是为了提高查询到效率.索引…

【AI理论学习】Python机器学习中的特征选择

Python机器学习中的特征选择特征选择方法特征选择的Python库使用Scikit-learn实现特征选择方差卡方检验ANOVALasso正则化递归特征消除使用Feature-engine进行特征选择单变量特征选择相关性Python 中的更多特性选择方法参考资料任何数据科学项目的一个重要步骤是选择最具预测性的…

vue实现文件下载

引言 最近在自己做项目的需求的过程中&#xff0c;需要vuespringboot实现文件的下载功能&#xff08;导出博客文件&#xff09;。 问题重现 在我后端文件下载接口开发完成后&#xff0c;使用vue前端去进行对接时出现了问题。 我是直接使用的axios去进行请求接口&#xff0c…

Python 炫技操作:条件语句的七种写法

原代码 这是一段非常简单的通过年龄判断一个人是否成年的代码&#xff0c;由于代码行数过多&#xff0c;有些人就不太愿意这样写&#xff0c;因为这体现不出自己多年的 Python 功力。 if age > 18:return "已成年" else:return "未成年"下面我列举了六…

SwiftUI 中创建谷歌字体浏览器

Google Fonts是设计用户界面时使用的免费字体的转到站点。本教程将展示如何编写一个简单的工具来预览这些字体,而无需在系统中注册每种字体。 该应用程序包含一个拆分视图,该视图在左侧面板中包含字体列表。右侧面板将显示字体样式选项的预览。 项目设置 创建一个名为 Googl…

Vue2之webpack篇(一)

目录 前言 1、什么是webpack&#xff1f; 2、传统开发模式 一、传统开发模式 1、场景 2、问题 3、原因 4、解决方案 二、ES6模块化 1、ES6的解决方案 3、拓展 4、取别名 5、*搭配取别名 6、导出default{} 三、CommonJS规范 1、推荐文档 2、使用CommonJS规范解决方…

十二、DockerFile构建过程解析

1、概述 Dockerfile是用来构建Docker镜像的文本文件&#xff0c;是由一条条构建镜像所需的指令和参数构成的脚本。 在Docker 常用命令篇中&#xff0c;我们已经知道了2中构建镜像的方式 export\import 和 commit方式。这两种方式都需要先运行并创建容器&#xff0c;然后在容器…

python自学之《21天学通Python》(5)

第8章 复杂程序组织 当一个应用程序简单时&#xff0c;将程序代码写入一个文件即可。但随着应用程序或项目复杂度增加时&#xff0c;如果将所有代码都写入同一个文件中时&#xff0c;会出现文件过长或过大&#xff0c;即不方便代码浏览&#xff0c;也不方便代码的管理、使用与维…

人工智能人才缺口暴增,想转行的你赶紧把Python学起来...

当前AI人才极度紧缺&#xff0c;据《中国ICT人才生态白皮书》研究分析&#xff0c;到2018年底&#xff0c;我国人工智能人才缺口将突破100万&#xff0c;到2020年&#xff0c;这一数字将攀升到226万。 在过去的几年中&#xff0c;Python已经成为现代软件开发&#xff0c;基础设…

Web测试的各个测试点,居然这么全!(文末送web测试方法大全一份)

1 什么是Web测试&#xff1f; Web测试测试Web或Web应用程序的潜在错误。它是在上线前对基于网络的应用程序进行完整的测试。 UI测试功能测试数据库测试性能测试兼容性测试安全测试自动化测试 2 WEB测试主要测试场景 1.UI测试 界面是否美观&#xff0c;风格、字体、样式是否…

初识: 对象的属性特征

1. 前言 2. 什么是对象的属性特征 3. 灵活控制对象的属性特征 4. configurable: false 是单向设置的 1. 前言 众所周知&#xff0c;默认情况下我们可以任意对自己定义的对象进行增删改的。但是&#xff0c;在某些情况下&#xff0c;我们不能让别人去随便修改我们定义的对象的…

《数据结构》二叉数

学习目录树型结构概念树的重要概念树的表示形式二叉数概念特殊的二叉树二叉树的性质练习题树型结构 概念 树是一种非线性的数据结构&#xff0c;由 n 个有限节点组成一个有层次关系的集合 它具有以下的特点&#xff1a; 有一个特殊的结点&#xff0c;称为根结点&#xff0c;…

【 Threejs 】- Shader 着色器实例渲染教程

着色器在threejs中是一个难点&#xff0c;话不多说&#xff0c;先来看看着色器是什么&#xff1f; 如果您已经有使用计算机绘图的经验&#xff0c;您就会知道在这个过程中您先画一个圆&#xff0c;然后画一个矩形、一条线、一些三角形&#xff0c;直到您组成您想要的图像。这个…

面试真题 | 什么是 Redis ? Redis缓存应用场景有哪些?

面试官问题 redis击穿、穿透有什么区别&#xff1f;如何设计用例及测试 Redis 的基本概念 在没有添加 Redis 的时候&#xff0c;后端的查询流程是&#xff1a; 用户访问页面。请求后端服务。经过逻辑处理后&#xff0c;去数据库查询信息。 在添加 Redis 的之后&#xff0c;…

MySQL 服务端口大全

介绍 MySQL默认服务端口3306/TCP都不会陌生&#xff0c;但MySQL提供服务只有单纯的这个端口吗。在8.0版本默认启动的时候会发现&#xff0c;出现新的端口。 可以说MySQL使用的端口数量取决于所启用的特性、所使用的组件、应用程序连接的方式以及环境的其他方面。 按照官方说…

转速传感器信号隔离变送器正弦波输入方波信号输出

特点 转速传感器信号直接输入&#xff0c;方波信号输出正弦波、锯齿波信号输入&#xff0c;方波信号输出200mV峰值微弱信号的放大与整形不改变原波形频率&#xff0c;响应速度快电源、信号&#xff1a;输入/输出 3000VDC三隔离辅助电源&#xff1a;5V、12V、15V或24V直流单电源…