PCIe EtherCAT实时运动控制卡的DXF图形的CAD导图与多条运动指令的快速加工

科技   科技   2024-06-05 07:00   广东  

点击上方正运动小助手,随时关注新动态!



本文导读


今天,正运动小助手给大家分享一下C#语言如何进行CAD导图、RTBasic程序的多任务开发。在正式学习之前,我们先了解一下正运动技术的运动控制卡PCIE464。





硬件介绍

PCIE464运动控制卡是正运动推出的一款EtherCAT总线+脉冲型、PCIE接口式的运动控制卡,可选6-64轴运动控制,支持多路高速数字输入输出,可轻松实现多轴同步控制和高速数据传输。

PCIE464运动控制卡适合于多轴点位运动、插补运动、轨迹规划、手轮控制、编码器位置检测、IO控制、位置锁存等功能的应用。
PCIE464运动控制卡适用于3C电子加工、检测设备、半导体设备、SMT加工、激光加工、光通讯设备、锂电及光伏设备、以及非标自动化设备等高速高精应用场合。

PCIE4系列控制卡的应用程序可以使用VC,VB,VS,C++,C#等软件开发,程序运行时需要动态库zmotion.dll,调试时可以将RTSys软件同时连接控制器,从而方便调试、方便观察。

PCIE464产品介绍





接线参考

1、IN数字量输入接口
数字输入分布在J400(IN0-IN7)和X400(IN8-IN39)信号接口中。

2、OUT数字量输出接口
数字输出分布在 J400(OUT0-7)和 X400(OUT8-OUT39)信号接口中。




C#语言进行项目开发



1、在VS2010菜单“文件”→“新建”→“项目”,启动创建项目向导。

2、选择开发语言为“Visual C#”和.NET Framework 4以及Windows窗体应用程序。

3、找到厂家提供的运动库、CAD导图库(32位库为例)。

4将厂商提供的C#的库文件以及相关文件复制到新建的项目中,以及厂商提供的C#的相关库文件放入bin\debug文件夹中。

5、用vs打开新建的项目文件,在右边的解决方案资源管理器中点击显示所有文件,然后鼠标右击zmcaux.cs文件,点击包括在项目中,根据添加zmcaux.cs文件的步骤,将zmclaser.cs和zmotioncad.cs文件添加进工程中。

6、双击Form1.cs里面的Form1,出现代码编辑界面,在文件开头写入using cszmcaux,using ZmotionCadDll,并声明控制器句柄g_cardhandle和使用CAD中使用到的cad库函数的句柄g_cadhandle。

7、至此,项目新建完成,可进行C#项目开发。




C#语言进行CAD导图



在实际的运用场景中,如果一张图纸靠人为去计算图形运动轨迹的坐标,结果既费时又费力。所以,在此情景下,如果我们让计算机去计算图形的运动轨迹,则会事半功倍,接下来我们介绍如何使用C#进行CAD导图。

1、操作步骤

首先,新建WinForm项目并添加函数库,接着用ZMotionCadArray_ImportVectGraph指令去导入打开CAD图形文件,并进行小线段的拆分精度。
再用ZMotionCadArray_GetVectNum指令去获取数组长度,接着创建一个struct_zcad_array结构体类型(该结构体在ZMotionCad库中已经有声明,直接定义调用即可),用来保存运动数据、运动类型等信息。
创建好该结构体数组以后,再用ZMotionCadArray_GetVectArray指令将图形的运动数据保存到该数组里面。
最后,用ZMotionCadArray_MergeSeg指令去将各个点连接成线。操作思路,如图所示。

2、指令介绍

指令1

Int32 ZMotionCadArray_ImportVectGraph(string lpszFileFullPathname,double duUnit,int Option, double refDistance)

指令说明

导入图形文件(支持dxf、plt、ai、dst)

参数说明


lpszFileFullPathname

路径和文件名

duUnit

PLT的比例

Option

预留, 缺省都转换为seg

refDistance

转换时参考精度

返回值

成功返回值为0,非0详见错误码说明


指令2

Int32 ZMotionCadArray_GetVectNum(ref int nStructNum)

指令说明

提取当前图形数组的长度

参数说明

nStructNum,数组的数量

返回值

成功返回值为0,非0详见错误码说明


指令3

Int32 ZMotionCadArray_GetVectArray(ref Struct_ZCad_Array struct_Array, int nStructNum)

指令说明

提取当前图形的数据到数组里面

参数说明

struct_Array  提取的数组

nStructNum    数组的数量

返回值

成功返回值为0,非0详见错误码说明


指令4

Int32 ZMotionCadArray_MergeSeg(double dSize, bool bChoose)

指令说明

合并相连线,将坐标点连成线

参数说明


dSize

合并的最大距离

bChoose

是否仅处理选中图形

返回值

成功返回值为0,非0详见错误码说明

3、生成运动轨迹数据

将.dxf文件导入进去后,使用ZMotionCadArray_ImportVectGraph指令将CAD图纸导入,并对小线段进行拆分。

用ZMotionCadArray_GetVectNum获取数据长度,获取到数据长度后,创建一个Struct_ZCad_Array类型的数组。

这时,其CAD图纸的数据就保存在这结构体数组中,获取图形数据用ZMotionCadArray_GetVectArray指令。

创建一个StringBuilder类型的数组,用循环去访问Struct_ZCad_Array类型数组的运动类型,并把其运动坐标尾插到该数组里面。

最后,用文件IO的知识创建一个bas文件,并将StringBuilder类型数组的运动数据尾插到该bas文件中。

1、导入图形文件,通过线程去获取CAD图纸的点位信息,并用画笔将点位信息显示在画板上。

获取图纸点位信息的相关代码:

//打开配置文件if (openFileDialog1.ShowDialog() == DialogResult.OK) {   strFilePath = openFileDialog1.FileName;   label11.Text =  Path.GetFileName(strFilePath);   textBox3.Text= textBox3.Text+"\r\n"+"导入文件:"+ Path.GetFileName(strFilePath);   //导入CAD图形文件    m_refDistance圆弧转小线段拆分精度   int iret = ZmotionCad.ZMotionCadArray_ImportVectGraph(strFilePath, 1024, 1, m_refDistance);      //导入数据, 获取数组长度    iret = ZmotionCad.ZMotionCadArray_GetVectNum(ref ZCad_ArrayLen);      //创建一个结构体变量    ZCad_ArrayInfo = new ZmotionCad.Struct_ZCad_Array[ZCad_ArrayLen];      //获取图形数据 将cad文件的数据放在ZCad_ArrayInfo数组里   iret = ZmotionCad.ZMotionCadArray_GetVectArray(ref ZCad_ArrayInfo[0], ZCad_ArrayLen);    //是否只处理封闭轨迹   iret = ZmotionCad.ZMotionCadArray_IfCloseVect(false);               //合并相连线   iret = ZmotionCad.ZMotionCadArray_MergeSeg(0.5, If_Choose);   //为了判断是否只处理封闭轨迹,又重新获取数组的长度和获取图形数据   Get_Array();           //在细分0.05的情况下获取图纸的左、底、长、宽的数值   iret = ZmotionCad.ZMotionCadArray_GetRange(ref Image_Left, ref Image_bottom, ref Image_Width, ref Image_Height, 0.05);   if (Image_Width < 0.0001 && Image_Height < 0.0001)   {     Image_Left = (float)0.0;     Image_bottom = (float)0.0;     Image_Width = (float)100.0;     Image_Height = (float)100.0;   }     double ObjectPixHeight, ObjectPixWidth;     //实际在画板上显示图形的大小     if (Image_Width * PicHeight <= Image_Height * PicWidth)       {       ObjectPixHeight = PicHeight;               ObjectPixWidth = ObjectPixHeight * Image_Width / Image_Height;     }     else     {       ObjectPixWidth = PicWidth;       ObjectPixHeight = ObjectPixWidth * Image_Height / Image_Width;     }     //缩放比例     dScale = ObjectPixHeight / Image_Height;     m_dUnitsPerMm = dScale * 1;     //偏移     m_dTranX = (MyPicture.Width - ObjectPixWidth) / 2 - Image_Left * dScale;     m_dTranY = (MyPicture.Height - ObjectPixHeight) / 2 - Image_bottom * dScale;     //用画笔将点位信息显示在画板上     Show_Picture();

2、点击运行程序,通过线程生成运动指令下发到控制器,让控制器去跑CAD的点位坐标。

4、运行效果

上位机界面上的运动轨迹与RTSys抓到的运动轨迹作比较,与RTSys示波器上的轨迹基本上相符。




自定义封装指令函数


在实际开发过程中,为了提高效率,ZMotion PC函数库里如果没有现成的指令供开发者使用,那么开发者可以通过自定义封装指令函数的方式去实现开发者想要实现的功能来提高交互的效率。
下面正运动小助手将通过一次性下发多条的示例去说明如何自定义封装指令函数。

1、指令说明

指令

Int32 ZAux_DirectCommand(ZMC_HANDLE handle, const

char *pszCommand,char *psResponse, uint32 uiResponseLength)

指令说明

发送字符串命令到控制器,直接方式(不进缓冲区,有少数命令,暂时

不支持)。

参数说明

handle 连接句柄。

pszCommand 发送的命令字符串。

uiResponseLength 返回的字符长度。

uiResponseLength 返回的字符串。

返回值

成功返回值为0,非0详见错误码说明。

2、示例说明

下面的示例代码中,自定义封装可以一次性发送多条运动指令的函数指令,代码思路如下:

1、正运动小助手先定义4个形参,分别为句柄、轴的个数、轴列表(从哪个轴号开始到哪个轴号结束)、各个轴的运动距离(可以有多条点位信息,以“;”作为一个点位信息的结束标记)。

2、在自定义函数里面将形参中的axis_distance内容以“;”的方式进行剪切并保存在dir_move数组里面。

3、将dir_move数组里面的点位信息通过拼接字符串的方式,循环扫描拼接生成moveabs的运动指令保存在变量名为cmdbuff 的string类型里面。

4、通过ZMotion PC函数库的在线发送指令ZAux_DirectCommand去将变量名为cmdbuff里面的多条运动指令下发给控制卡或控制器。
Description:    // 自定义封装函数,一次性下发多条运动指令Input:          //handle 控制卡句柄/控制器句柄                 //axis_num   总轴数                //axis_list  轴号列表                //axis_distance  运动的点位坐标,以“;”作为结束标记代表一条运动坐标Return:         //错误码int __stdcall ZMotionCadArray_DelOne(int nDelVect);*************************************************************/public Int32 UseDefined_Moveabs(IntPtr handle,int axis_num, string axis_list,string axis_distance)   //用于拼接运动命令的字符串   string cmdbuff = "";                 string[] dir_move = axis_distance.ToString().Split(new char[] { ';' });   //接收在线命令的信息   StringBuilder psResponse =new StringBuilder(1024);             //判断轴的个数是否合理   if (axis_num < 0)   {       return -1;   }   //生成命令   cmdbuff= "base(" + axis_list + ")";   for (int i = 0; i < dir_move.Length; i++)   {     //拼接运动指令     cmdbuff =cmdbuff+ "moveabs("+ dir_move[i]+")";       }     //利用在线命令的方式去发送拼接好的运动指令     return zmcaux.ZAux_DirectCommand(handle,cmdbuff,psResponse,1024);   }
调用自定义封装的函数指令:
//获取轴0缓冲区的大小           ret = zmcaux.ZAux_Direct_GetRemain_Buffer(G_CardHandle, 0, ref buf0); err_inform("ZAux_Direct_GetRemain_Buffer0", ret);   if (buf0 > 10) {     //通过自定义封装的函数去发运动指令,一次发10条     ret = UseDefined_Moveabs(G_CardHandle, 2, axis, direct_str[i]);     err_inform("UseDefined_Moveabs", ret);     label15.Invoke(new MethodInvoker(() => direct_num(i.ToString())));

3、代码验证

(1)形参direct_str[0]里面的数据内容。

(2)cmdbuff里面拼接好的数据。

通过以上两个变量中的数据内容查看,验证了上诉的代码思路是符合逻辑的,实现了高效率的一条指令内多条数据加工的传输。




模拟量与速度的实时转换


一、操作步骤

首先,设置工程下的Basic文件自动运行任务号,可以在RTSys软件上的“控制器状态”中查看控制器最多支持多少个任务,然后在Basic文件上填写自动运行任务号(不能超过最大支持的任务数),最后下载到控制器上。

1、查看控制器的最大任务数。

2、填写自动运行任务号。

3、设置好自动运行任务号后,下载写好的程序到控制器运行即可。

4、在上位机上设置转换比例K值(0到1)。

二、指令介绍

basic指令1

AOUT(channel) = value

指令说明

模拟通道输出。

12位刻度值范围0~4095对应0~10V电压。

16位刻度值范围0~65536对应0~10V电压。

参数说明

channel:模拟输出通道0-63。

Value: 设置模拟量输出的值。


PC指令

int32 __stdcall ZAux_Direct_SetUserVar(ZMC_HANDLE handle,char*varname , float pfValue)

指令说明

设置 Basic 自定义全局变量。

参数说明

Handle  连接句柄

Varname  basic中变量名称字符串

pfValue  反馈值

返回值

成功返回值为0,非0详见错误码说明

注:在本示例代码中,PC指令中的ZAux_Direct_SetUserVar的Varname形参在使用时,写的是Basic文件的全局变量s_ratio。

三、举例说明
在下方的Basic程序中,可以根据轴的速度来实现控制器模拟量输出口的大小,也通过上位机去修改模拟量与速度的转换比例K。

使用示波器将速度与模拟量的输出波形抓取之后,可以看出,速度与模拟量输出的波形基本一致。

1、Basic相关代码。

GLOBAL s_ratio    '速度的比例WHILE 1'将速度与模拟量的关系成正比  AOUT(0)=4.095*VP_SPEED(0)*s_ratioWENDend
2、PC中的相关代码。
int ret = zmcaux.ZAux_Direct_SetUserVar(G_CardHandle, "s_ratio", Convert.ToSingle(textBox4.Text));  //设置模拟量与速度的转换比例err_inform("比例的ZAux_Direct_SetUserVar",ret);
四、视频讲解
完整代码获取地址

本次,正运动技术PCIe EtherCAT实时运动控制卡的DXF图形的CAD导图与多条运动指令的快速加工,就分享到这里。

更多精彩内容请关注“正运动小助手”公众号,需要相关开发环境与例程代码,请咨询正运动技术销售工程师:400-089-8936。

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

回顾往期内容

开奖啦!参与《运动控制系统应用与实践》赠书活动的粉丝们看这里

送书福利!全自主IDE的《运动控制系统应用与实践》

EtherCAT运动控制器在UVW对位平台中的应用

EtherCAT运动控制器Delta机械手应用

EtherCAT运动控制器的MATLAB开发


运动控制器/运动控制卡配套ZCAN总线ZIO模块的使用

运动控制卡/运动控制器的ZCAN总线ZMIO310扩展模块使用

EtherCAT运动控制器在ROS上的应用(下)

EtherCAT运动控制器在ROS上的应用(上)


皮带同步跟随:EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(十四)

自定义电子凸轮曲线的运动:EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(十三)

连续轨迹加工和速度前瞻:EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(十二)

PT/PVT运动模式介绍:EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(十一)

项目工程下载与XML配置文件下载:EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(十)

EtherCAT驱动器回零与控制器回零:EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(九)

二维/三维的多轴PSO视觉飞拍与精准输出:EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(八)

单轴PSO视觉飞拍与精准输出:EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(七)

硬件位置比较输出和编码器锁存:EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(六)

EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(五):通过RTSys进行调试与诊断

EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(四):板载IO与总线扩展IO的编码器与脉冲配置的应用

EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(三):EtherCAT总线CSP,CSV,CST模式切换

EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(二):EtherCAT总线初始化

EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(一):驱动安装与建立连接

全国产EtherCAT运动控制边缘控制器(六):RtBasic文件下载与连续轨迹加工的Python+Qt开发

全国产EtherCAT运动控制边缘控制器(五):IO配置与回零运动的Python+Qt开发

全国产EtherCAT运动控制边缘控制器(四):轴参数配置与单轴运动PC上位机C++控制

全国产EtherCAT运动控制边缘控制器(三):外设读写与RTSys开发诊断

全国产EtherCAT运动控制边缘控制器(二):统一的上位机API接口

全国产EtherCAT运动控制边缘控制器(一):ZMC432H硬件接口

高柔SS加减速曲线在锂电池焊接中的应用

EtherCAT和Ethernet的不同点有哪些, 通信周期又是什么意思?

工业以太网时代,该如何选择总线运动控制器?

正运动技术运动控制器如何快速实现单轴/多轴同步跟随功能?


EtherCAT运动控制器在数控加工手轮随动中的应用

EtherCAT运动控制器在数控加工手轮随动中的应用之C++

EtherCAT运动控制器在LabVIEW中的运动控制与实时数据采集

运动控制器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电子、半导体、新能源、机器人、包装印刷、纺织服装、激光加工、医疗制药、数控机床、传统加工等领域。

正运动小助手
正运动小助手是正运动技术旗下技术资料平台,可第一时间发布最新产品技术文档,为您奉上最全面的运动控制产品基础知识介绍、使用注意事项及操作步骤指引等资料。
 最新文章