点击上方“正运动小助手”,随时关注新动态!
XPCIE1032H功能简介
XPCIE1032H是一款基于PCI Express的EtherCAT总线运动控制卡,可选6-64轴运动控制,支持多路高速数字输入输出,可轻松实现多轴同步控制和高速数据传输。XPCIE1032H集成了强大的运动控制功能,结合MotionRT7运动控制实时软核,解决了高速高精应用中,PC Windows开发的非实时痛点,指令交互速度比传统的PCI/PCIe快10倍。
XPCIE1032H支持PWM,PSO功能,板载16进16出通用IO口,其中输出口全部为高速输出口,可配置为4路PWM输出口或者16路高速PSO硬件比较输出口。输入口含有8路高速输入口,可配置为4路高速色标锁存或两路编码器输入。
XPCIE1032H搭配MotionRT7实时内核,使用本地LOCAL接口连接,通过高速的核内交互,可以做到更快速的指令交互,单条指令与多条指令一次性交互时间可以达到3-5us左右。
➜XPCIE1032H与MotionRT7实时内核的配合具有以下优势:
1.支持多种上位机语言开发,所有系列产品均可调用同一套API函数库;
2.借助核内交互,可以快速调用运动指令,响应时间快至微秒级,比传统PCI/PCIe快10倍;
3.解决传统PCI/PCIe运动控制卡在Windows环境下控制系统的非实时性问题;
4.支持一维/二维/三维PSO(高速硬件位置比较输出),适用于视觉飞拍、精密点胶和激光能量控制等应用;
5.提供高速输入接口,便于实现位置锁存;
6.支持EtherCAT总线和脉冲输出混合联动、混合插补。
➜使用XPCIE1032H和MotionRT7进行项目开发时,通常需要进行以下步骤:
1.安装驱动程序并签名认证,识别XPCIE1032H;
2.打开并执行文件“MotionRT710.exe”,配置参数和运行运动控制实时内核;
3.使用ZDevelop软件连接到控制器,进行参数监控。连接时请使用PCI/LOCAL方式,并确保ZDevelop软件版本在3.10以上;
4.完成控制程序开发,通过LOCAL链接方式连接到运动控制卡,实现实时运动控制。
➜与传统PCI/PCIe卡和PLC的测试数据结果对比:
平均值
|
C++ LOCAL
|
C# LOCAL
|
传统PCI/PCIe卡接口交互
|
PLC网口通讯交互
|
1w次单条读取交互周期
|
4.70us
|
5.3us
|
64us
|
500us-10ms
|
10w次单条读取交互周期
|
3.90us
|
5.7us
|
65us
|
500us-10ms
|
1w次多条读取交互周期
|
6.20us
|
8.85us
|
472us
|
500us-10ms
|
10w次多条读取交互周期
|
5.50us
|
8.37us
|
471us
|
500us-10ms
| 我们可以从测试对比结果看出,XPCIE1032H运动控制卡配合实时运动控制内核MotionRT7,在LOCAL链接(核内交互)的方式下,指令交互的效率是非常稳定,当测试数量从1w增加到10w时,单条指令交互时间与多条指令交互时间波动不大,非常适用于高速高精的应用。XPCIE1032H卡安装
关闭计算机电源。
打开计算机机箱,选择一条空闲的XPCIE卡槽,用螺丝刀卸下相应的挡板条。
将运动控制卡插入该槽,拧紧挡板条上的固定螺丝。
卸下临近插槽的一条挡板条,用螺丝将转接板固定在机箱该插槽上。
一、驱动安装首先需要到正运动技术官网下载《MotionRT7运动控制实时内核》安装包,并检测此时PCIE卡已安装到工控机的PCIE插槽上,无明显松动翘边。下载地址:http://www.zmotion.com.cn/download_list_4.html
方法一:使用驱动目录中自带的安装向导软件dpinst_amd64.exe自动安装,具体操作按软件指南。
方法二:手动安装。1.打开“设备管理器”菜单选择“其他设备”中的“PCI设备”。
2.若存在多个PCI设备时,鼠标右击“属性”查看详细信息,属性选择“硬件ID”,确认为PCI\VEN_EF34&DEV_1000&开头的PCI设备。
3.右击选择“更新驱动程序”。
4.选择“手动浏览”查找驱动程序。
5.点击浏览,选择驱动driver文件夹。
6.点击下一步。
7.等待安装完成,点击关闭。
8.在设备管理器中有ZMotionRT Controller就是安装成功。
9.XPCIE1032H驱动安装视频演示。
video: https://mp.weixin.qq.com/mp/readtemplate?t=pages/video_player_tmpl&action=mpvideo&auto=0&vid=wxv_3186142208459194372
二、建立连接1.运行控制台程序
(1)打开控制台程序所在位置,运行可执行文件“MotionRt710.exe”。
(2)点击“Start”。
(3)保存XPCIE卡Config配置。a.先点击【Stop】按钮关闭MontionRT7控制台,再点击UpdateCard更新卡信息。
b.点击“-->”将当前配置保存到历史配置中,方便下次打开可以直接使用。
c.保存完成后,点击确定。
2.新建C#项目(VS2022)
3.到正运动技术官网的下载中心选择需要的平台库文件库文件下载地址:http://www.zmotion.com.cn/download_list_21.html
4.解压下载的安装包找到“Zmcaux.cs”,“zauxdll.dll”,“zmotion.dll”放入到项目文件中
(1)“Zmcaux.cs”放在项目根目录文件中,与bin目录同级。
(2)“zauxdll.dll”,“zmotion.dll”放在bin → Debug。
5.用vs打开新建的项目文件,在右边的解决方案资源管理器中点击显示所有,然后鼠标右键点击zmcaux.cs文件,点击包括在项目中
6.双击Form1.cs里面的Form1,出现代码编辑界面,在文件开头写入using cszmcaux,并声明控制器句柄g_handle
7.相关PC函数介绍
指令1
| ZAux_FastOpen |
指令原型
|
int32 __stdcall ZAux_FastOpen(int type, char *pconnectstring, uint32 uims ,ZMC_HANDLE * phandle)
|
指令说明
|
与控制器建立连接, 可以指定连接的等待时间
|
输入参数
|
参数名
|
描述
|
type
|
连接类型
type: 1-COM,2-ETH,4-PCI,5-LOCAL
|
pconnectstring
|
连接字符串:
COM口号/IP地址
|
uims
|
连接超时时间 uims;单位ms
|
|
输出参数
| |
返回值
|
成功返回值为0,非0详见错误码说明。
|
指令示例
|
串口连接:
ZMC_HANDLE phandle;//控制器连接句柄
Char comID[32]= "0";//串口ID
ZAux_FastOpen(1, comID,1000s ,&phandle);
网口连接例子:
ZMC_HANDLE phandle;//控制器连接句柄
Char EthID[32]= "192.168.0.11";//网口ID
ZAux_FastOpen(2, EthID,1000s ,&phandle);
LOCAL接口连接例子:
ZMC_HANDLE phandle;//控制器连接句柄
ZAux_FastOpen(ZMC_CONNECTION_LOCAL, "LOCAL1",3000,&g_handle);
|
指令2
| ZAux_Direct_GetDpos |
指令原型
|
int32 __stdcall ZAux_Direct_GetDpos(ZMC_HANDLE handle, int iaxis, float *pfValue)
|
指令说明
|
读取轴当前位置或称控制器发送的需求位置,单位units。
|
输入参数
|
参数名
|
描述
|
handle
|
连接标识。
|
iaxis
|
轴号。
|
|
输出参数
| |
返回值
|
成功返回值为0,非0详见错误码说明。
|
指令示例
|
轴基本运动参数设置获取
|
详细说明
|
/
|
指令3
| ZAux_DirectCommand |
指令原型
|
int32 __stdcall ZAux_DirectCommand(ZMC_HANDLE handle, const char *pszCommand,char *psResponse, uint32 uiResponseLength)
|
指令说明
|
发送字符串命令到控制器,直接方式(不进缓冲区,有少数命令,暂时不支持)。
|
输入参数
|
参数名
|
描述
|
handle
|
连接句柄。
|
pszCommand
|
发送的命令字符串。
|
uiResponseLength
|
返回的字符长度。
|
|
输出参数
|
参数名
|
描述
|
uiResponseLength
|
返回的字符串。
|
|
返回值
|
成功返回值为0,非0详见错误码说明。
|
指令示例
|
在线命令函数的使用
|
详细说明
|
上位机调用上位机未封装的Basic指令功能
|
指令4
| ZAux_Close |
指令原型
|
int32 __stdcall ZAux_Close(ZMC_HANDLE handle)
|
指令说明
|
关闭控制器连接。
|
输入参数
| |
输出参数
|
/
|
返回值
|
成功返回值为0,非0详见错误码说明。
|
指令示例
|
串口连接控制器
|
详细说明
|
/
| 在form设计界面找到需要用到的控件拖拽到窗体中进行UI界面设计,效果如下。
8.相关程序
(1)通过LOCAL链接方式的链接按钮的消息响应函数来链接控制器。private void button4_Click(object sender, EventArgs e){ //LOCAL方式连接 int ret = zmcaux.ZAux_FastOpen(5, "LOCAL", 1000, out g_handle); if (ret == 0) { label2.Text = "已链接"; label2.BackColor = Color.Green; MessageBox.Show("控制器链接成功!", "提示"); } else { MessageBox.Show("链接失败,请选择正确的LOCAL!"); }}(2)通过单条指令交互周期的测试按钮的事件处理函数来计算单条指令的交互周期和总耗时。private void SingleRun(object sender, EventArgs e){ float dpos = 0; DateTime beforeDT = System.DateTime.Now; for (int i = 0; i <10000; i++) { zmcaux.ZAux_Direct_GetDpos(g_handle, 0, ref dpos); } DateTime afterDT = System.DateTime.Now; TimeSpan ts = afterDT - beforeDT; label14.Text = (ts.TotalMilliseconds).ToString(); label2.Text = ((ts.TotalMilliseconds * 1000) / 10000).ToString(); label16.Text = dpos.ToString();}(3)通过多条指令交互周期的测试按钮的事件处理函数来计算多条指令的交互周期和总耗时。private void MuchRun(object sender, EventArgs e){ int[] status = { 0, 0, 0, 0 }; float[] dpos = { 0, 0, 0, 0 }; uint[] num = { 0, 0, 0, 0 }; string cmd; int star = 0; StringBuilder cmdBuff = new StringBuilder(2048); string[] tmp = new string[12]; 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)"; DateTime beforeDT = System.DateTime.Now; for (int i = 0; i < 10000; i++) { zmcaux.ZAux_DirectCommand(g_handle, cmd, cmdBuff, 2048); } DateTime afterDT = System.DateTime.Now; TimeSpan ts = afterDT - beforeDT; label23.Text = (ts.TotalMilliseconds).ToString(); label16.Text = ((ts.TotalMilliseconds * 1000) / 10000).ToString(); string s = cmdBuff.ToString(); string[] arrS = new string[20]; for (int i = 0; i < s.Length; i++) { if (s != 9) { arrS[star] += s; } else { star++; continue; } } label24.Text = arrS[0]; label25.Text = arrS[1]; label26.Text = arrS[2]; label27.Text = arrS[3]; label28.Text = arrS[4]; label30.Text = arrS[5]; label32.Text = arrS[6]; label34.Text = arrS[7]; if (Convert.ToInt32(arrS[8]) == 0) { label29.BackColor = Color.Red; label29.Text = "信号未触"; } else { label29.BackColor = Color.Green; label29.Text = "信号已触"; } if (Convert.ToInt32(arrS[9]) == 0) { label31.BackColor = Color.Red; label31.Text = "信号未触"; } else { label31.BackColor = Color.Green; label31.Text = "信号已触"; } if (Convert.ToInt32(arrS[10]) == 0) { label33.BackColor = Color.Red; label33.Text = "信号未触"; } else { label33.BackColor = Color.Green; label33.Text = "信号已触"; } if (Convert.ToInt32(arrS[11]) == 0) { label35.BackColor = Color.Red; label35.Text = "信号未触"; } else { label35.BackColor = Color.Green; label35.Text = "信号已触"; }}(4)通过断开按钮的消息响应函数来断开控制器的链接。privatevoidbutton1_Click(object sender, EventArgs e){ zmcaux.ZAux_Close(g_handle); g_handle = (IntPtr)0; label2.Text = "未连接"; label2.BackColor = Color.Red;}9.运行效果
10.效果演示
video: https://mp.weixin.qq.com/mp/readtemplate?t=pages/video_player_tmpl&action=mpvideo&auto=0&vid=wxv_3186141521079877638
完整代码获取地址
▼
本次,正运动技术EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(一):驱动安装与建立连接,就分享到这里。
更多精彩内容请关注“正运动小助手”公众号,需要相关开发环境与例程代码,请咨询正运动技术销售工程师:400-089-8936。
本文由正运动技术原创,欢迎大家转载,共同学习,一起提高中国智能制造水平。文章版权归正运动技术所有,如有转载请注明文章来源。
回顾往期内容
开奖啦!参与《运动控制系统应用与实践》赠书活动的粉丝们看这里
送书福利!全自主IDE的《运动控制系统应用与实践》
全国产EtherCAT运动控制边缘控制器(六):RtBasic文件下载与连续轨迹加工的Python+Qt开发
全国产EtherCAT运动控制边缘控制器(五):IO配置与回零运动的Python+Qt开发
全国产EtherCAT运动控制边缘控制器(四):轴参数配置与单轴运动PC上位机C++控制
全国产EtherCAT运动控制边缘控制器(三):外设读写与RTSys开发诊断
全国产EtherCAT运动控制边缘控制器(二):统一的上位机API接口
全国产EtherCAT运动控制边缘控制器(一):ZMC432H硬件接口
高柔SS加减速曲线在锂电池焊接中的应用
EtherCAT和Ethernet的不同点有哪些, 通信周期又是什么意思?
工业以太网时代,该如何选择总线运动控制器?
EtherCAT运动控制器在数控加工手轮随动中的应用
EtherCAT运动控制器在数控加工手轮随动中的应用之C++
正运动技术运动控制器如何快速实现单轴/多轴同步跟随功能?
运动控制器PSO视觉飞拍与精准输出的C++开发(三):二维/三维/多轴PSO输出
运动控制器PSO视觉飞拍与精准输出的C++开发(二):多轴PSO等距/周期输出
运动控制器PSO视觉飞拍与精准输出的C++开发(一):单轴PSO
运动控制器八通道PSO的视觉飞拍与精准输出
Windows实时运动控制软核(七):LOCAL高速接口测试之Labview
Windows实时运动控制软核(六):LOCAL高速接口测试之Matlab
Windows实时运动控制软核(五):LOCAL高速接口测试之VC6.0
Windows实时运动控制软核(四):LOCAL高速接口测试之VB.NET
Windows实时运动控制软核(三):LOCAL高速接口测试之C++
Windows实时运动控制软核(二):LOCAL高速接口测试之Qt
Windows实时运动控制软核(一):LOCAL高速接口测试之C#
开放式激光振镜运动控制器:C++ 快速调用图形库应用
开放式激光振镜运动控制器:C++振镜矫正方法与实现
开放式激光振镜运动控制器:C++快速开发
开放式激光振镜运动控制器(五):ZMC408SCAN 光纤激光器的能量控制
开放式激光振镜运动控制器(四):ZMC408SCAN振镜控制光纤激光器加工
开放式激光振镜运动控制器(三):ZMC408SCAN轴控光纤激光器加工
开放式激光振镜运动控制器(二):ZMC408SCAN激光接口与控制
开放式激光振镜运动控制器(一):ZMC408SCAN接口与功能
运动控制器PSO位置同步输出(三):高精度等间距二维三维PSO输出
运动控制器PSO位置同步输出(二):PSO模式详解
运动控制器PSO位置同步输出(一):硬件平台与PSO指令简介
经济型EtherCAT运动控制器(十):EtherCAT总线快速入门
经济型EtherCAT运动控制器(九):示波器使用
经济型EtherCAT运动控制器(八):轴参数与运动指令
经济型EtherCAT运动控制器(七):运动缓冲
经济型EtherCAT运动控制器(六):数据储存
经济型EtherCAT运动控制器(五):多任务运行
经济型EtherCAT运动控制器(四):ModbusRTU或ModbusTcp与触摸屏通讯
经济型EtherCAT运动控制器(三):PLC实现多轴直线插补与电子凸轮
经济型EtherCAT运动控制器(二):ZBasic实现多轴直线插补运动
经济型EtherCAT运动控制器(一):功能简介与应用场景
运动控制+机器视觉Demo软件框架(三):视觉纠偏+连续插补的配方编辑
运动控制+机器视觉Demo软件框架(二):移动标定和形状匹配
运动控制+机器视觉Demo软件框架(一):机械参数和配方文件的管理
运动控制+机器视觉Demo软件框架系统概述
开放式激光振镜+运动控制器(六):双振镜运动
开放式激光振镜+运动控制器(五):ZMC408SCAN控制器硬件介绍
开放式激光振镜+运动控制器(四):PSO位置同步输出在激光振镜加工中的应用
开放式激光振镜+运动控制器(三):振镜矫正
开放式激光振镜+运动控制器(二):振镜填充
开放式激光振镜+运动控制器(一):硬件接口
EtherCAT轴扩展模块EIO16084在运动控制系统中的应用EtherCAT运动控制器中脉冲接口的快速调试与诊断EtherCAT运动控制器之ZMIO300模块的使用EtherCAT运动控制器的PLC编程(四) 电子凸轮
EtherCAT运动控制器的PLC编程(三) 电子齿轮
EtherCAT运动控制器的PLC编程(二) 圆弧插补
EtherCAT运动控制器的PLC编程(一) 直线插补
快速入门 | 篇二十一:运动控制器ZHMI组态编程简介一
快速入门 | 篇二十一:正运动技术运动控制器自定义通讯
快速入门 | 篇二十:正运动技术运动控制器MODBUS通讯
快速入门 | 篇十九:正运动技术运动控制器多轴同步与电子凸轮指令简介
快速入门 | 篇十八:正运动技术脉冲型运动控制器的使用
快速入门 | 篇十七:运动控制器多轴插补运动指令的使用
快速入门 | 篇十六:正运动控制器EtherCAT总线快速入门
快速入门 | 篇十五:运动控制器运动缓冲简介
快速入门 | 篇十四:运动控制器基础轴参数与基础运动控制指令
快速入门 | 篇十三:正运动技术运动控制器ZDevelop 编程软件的使用
快速入门 | 篇十二:正运动技术运动控制器U盘接口的使用
快速入门 | 篇十一:正运动技术运动控制器中断的应用
快速入门 | 篇十:运动控制器多任务运行特点
快速入门 | 篇九:如何进行运动控制器示波器的应用?
快速入门 | 篇八:如何进行运动控制器EtherCAT总线的基础使用?
快速入门 | 篇七:如何进行运动控制器ZCAN总线扩展模块的使用?
快速入门 | 篇六:如何进行运动控制器数据与存储的应用?
快速入门 | 篇五:如何进行运动控制器输入/输出IO的应用?
快速入门 | 篇四:如何进行运动控制器与触摸屏通讯?
快速入门 | 篇三:如何进行运动控制器ZPLC程序开发?
快速入门 | 篇二:如何进行运动控制器ZBasic程序开发?
快速入门 | 篇一:如何进行运动控制器固件升级?
EtherCAT与RTEX驱动器轴回零的配置与实现
G代码在运动控制器上的应用
运动控制器的自定义G代码编程应用
离线仿真调试,加快项目进度!
8轴EtherCAT轴扩展模块EIO24088的使用
运动控制器之追剪应用Demo
运动控制器激光振镜控制运动控制器轴回零的配置与实现
运动控制器位置锁存功能的应用
ZMC运动控制器SCARA机械手应用快速入门
运动控制器RTEX总线使用入门
正运动技术CAD导图软件配合控制器的使用方法
EtherCAT总线运动控制器应用进阶一
EtherCAT运动控制卡开发教程之Qt(下):SCARA机械手正反解的建立
EtherCAT运动控制卡开发教程之Qt(中):小线段连续轨迹加工、暂停与继续
EtherCAT运动控制卡开发教程之Qt(上):开发环境配置与简单运动控制应用
EtherCAT运动控制卡开发教程之python
EtherCAT运动控制卡的SCARA等机器人指令的应用
EtherCAT运动控制卡的PWM与模拟量输出和运动速度同步
EtherCAT运动控制卡硬件比较输出以及编码器锁存
EtherCAT运动控制卡IO动作与运动控制的同步
EtherCAT运动控制卡实时程序的运行和读写控制
EtherCAT运动控制卡的运动暂停、恢复与系统安全设置
EtherCAT运动控制卡小线段前瞻的连续插补运动
EtherCAT运动控制卡的多轴插补运动和手轮运动
EtherCAT运动控制卡的辅助调试工具与方法介绍
EtherCAT运动控制卡的总线轴参数设置和轴运动
EtherCAT运动控制卡的硬件接线与C#的硬件外设读写与回零运动
EtherCAT运动控制卡的硬件接线与C#的单轴运动控制
简单易用的运动控制卡(十六):螺距补偿和反向间隙补偿
简单易用的运动控制卡(十五):PC启停控制器的实时程序
简单易用的运动控制卡(十四):PWM、模拟量输出与运动控制的同步
简单易用的运动控制卡(十三):IO动作与运动控制的同步
简单易用的运动控制卡(十二):运动控制系统的安全设置
简单易用的运动控制卡(十一):运动的暂停恢复和速度倍率设置
简单易用的运动控制卡(十):连续插补和小线段前瞻
简单易用的运动控制卡(九):圆弧插补和螺旋插补
简单易用的运动控制卡(八):直线插补和手轮运动
简单易用的运动控制卡(七):一次性加载多条连续小线段数据
简单易用的运动控制卡(六):Basic文件下载和连续轨迹加工
简单易用的运动控制卡(五):IO配置与回零运动
简单易用的运动控制卡(四):函数库的封装
简单易用的运动控制卡(三):轴参数配置和单轴运动控制
简单易用的运动控制卡(二):外设读写与ZDevelop诊断
简单易用的运动控制卡(一):硬件接线和上位机开发
运动控制卡在ROS上的应用(下)
运动控制卡在ROS上的应用(上)
EtherCAT运动控制卡和LabVIEW构建智能装备(五)
EtherCAT运动控制卡和LabVIEW构建智能装备(四)
EtherCAT运动控制卡和LabVIEW构建智能装备(三)
EtherCAT运动控制卡和LabVIEW构建智能装备(二)
EtherCAT运动控制卡和LabVIEW构建智能装备(一)
EtherCAT运动控制卡在LabVIEW中的运动控制与数据采集
运动控制卡应用开发教程之MATLAB
运动控制卡应用开发教程之C++
运动控制卡应用开发教程之Python
运动控制卡应用开发教程之C#
运动控制卡应用开发教程之Linux
运动控制卡应用开发教程之VB.NET
运动控制卡应用开发教程之VB6.0
运动控制卡应用开发教程之VC6.0
运动控制卡应用开发教程之使用Qt
运动控制卡应用开发教程之LabVIEW
运动控制卡应用开发教程之激光振镜控制
运动控制卡应用开发教程之硬件比较输出
关于正运动技术
深圳市正运动技术有限公司成立于2013年,专注于纯国产运动控制技术研究和通用运动控制软硬件平台和产品的研发,是国家级高新技术和专精特新“小巨人”企业。
正运动技术汇集了来自华为、中兴等公司的优秀人才。力求创新,目前公司拥有专利、著作权等知识产权五十余项。在坚持自主创新的同时,积极联合各大高校和科研院所协同运动控制基础技术的研究,是国内工控领域发展最快的企业之一,也是国内少有、完整掌握运动控制核心技术和实时工控软件平台技术的企业。
正运动技术除本部研发中心外,设有中山、武汉、上海三个研发分部。为更好地服务客户,本部之外设有苏州、东莞两个区域性服务中心,设有佛山、厦门、青岛、西安、武汉、成都、天津、郑州等销售和技术服务机构。
经过众多合作伙伴多年的开发应用,正运动技术的产品广泛地应用于3C电子、半导体、新能源、机器人、包装印刷、纺织服装、激光加工、医疗制药、数控机床、传统加工等领域。
|