XPLC006E是正运动运动控制器推出的一款多轴经济型EtherCAT总线运动控制器,XPLC系列运动控制器可应用于各种需要脱机或联机运行的场合。
XPLC006E自带6个电机轴,最多12轴运动控制(含虚拟轴数),支持12轴直线插补、电子凸轮、电子齿轮、同步跟随、虚拟轴设置等功能。
XPLC006E支持多任务同时运行,同时可以在PC上直接仿真运行,编程方式多种可选,支持ZDevelop软件的Basic/PLC梯形图/HMI组态和常用上位机软件编程。
XPLC006E只支持EtherCAT总线轴,不支持脉冲轴和编码器轴。采用EtherCAT总线与驱动器通讯,1ms的刷新周期。
XPLC006E支持PLC、Basic、HMI组态三种编程方式。PC上位机API编程支持C#、C++、LabVIEW、VB、matlab、Qt、Linux、.Net、iMAC、Python、 ROS等接口。
→此款产品有XPLC004E、XPLC006E、XPLC008E三个不同轴数的型号可选。
XPLC864E在XPLC006E的功能基础上做了升级(即上节介绍的XPLC006E的功能都支持),部分资源空间优于XPLC006E,使用方法基本一致,不同之处在于XPLC864E,硬件支持32点输入、32点输出、2个ADC、2个DAC,支持脉冲轴和总线轴混合使用,总实轴轴数为8,除了带EtherCAT接口之外,输出口硬件上可配置为8个轴的脉冲方向信号输出,另带两路编码器输入,可由输入口配置
XPLC864E支持PLC、Basic、HMI组态三种编程方式。PC上位机API编程支持C#、C++、LabVIEW、VB、matlab、Qt、Linux、.Net、iMAC、Python、 ROS等接口。
XPLC系列经济型EtherCAT总线运动控制器支持多种编程方式,支持使用正运动技术自主研发的ZDevelop开发环境的Basic语言和PLC梯形图,上一节讲解了控制器的运动缓冲,本节内容主要讲解控制器的轴参数与运动指令说明。
控制轴的运动除了要发送运动指令之外(运动指令),显然我们还需要指定轴的运动的速度,确定轴运动的快慢,速度参数我们也可以把他叫做轴参数,轴参数是轴运动所必须的参数,常用的轴参数有速度、加速度、减速度、脉冲当量、轴类型等,以上轴参数作用各不相同,参见下文的说明。
BASE指令用于选择相应的轴号进行参数设置和运行控制,每一个过程有其自己的BASE基本轴组,每个程序都能单独赋值。
在设置轴参数或者运行轴的时候,都要在最开始的地方,用BASE指令选择相应的轴号,默认BASE选择的第一个轴为主轴。
运动不指定轴号时,默认发送给最新扫描的BASE指令选择的第一个轴。
语法:BASE(轴0,轴1,轴2,…)
例子:
BASE(0,1,2) '将XYZ平台的三个轴分别绑定为轴号012
MOVE(100,200,240)
BASE(0) '选择轴0
MOVE(136)
BASE(3,0,1,2)) '选择四个轴,轴次序没有严格要求,但一般顺序选择不易混淆
MOVE(10,50,50,0)
多轴的场合,在发送运动指令之前,最好先BASE指定当前运动指令发送给哪个轴,例如,在上例中,我们想让Y轴单独运动100个单位,若发送MOVE(100),则发给了X轴,导致运动错误了,正确做法如下,这样做能保证运动不出错。
BASE(1) '选择Y轴
MOVE(100) '给Y轴单独发脉冲
ATYPE是对轴功能的定义,通常在程序初始化时定义好轴的功能,可定义为无编码反馈类型、有编码器反馈类型、编码器+Z信号反馈类型、EtherCAT总线类型等。若ATYPE设置异常,会导致轴运行异常或者程序无法正常运行。
语法:ATYPE=类型值或ATYPE (轴号)=类型值
下表是对轴类型ATYPE定义的详细说明。
ATYPE=1/7是脉冲输出类型;
ATYPE=4/5是脉冲输出+编码器输入类型;
ATYPE=3/6是编码器输入类型;
ATYPE=65/66/67是EtherCAT总线轴的类型;
ATYPE=50/51/52是RTEX总线轴的类型。
在运动控制装置中,当机械结构确定以后,电机和机械装置的传动关系也就固定了,电机每转一圈产生的机械位移量也就固定了。脉冲当量UNITS是每单位对应的脉冲数,可以是单位距离、单位角度等,支持5位小数精度。
控制器以UNITS作为基本单位,运动的目标位置、速度、加减速度等都是以UNITS作为基础单位来进行运算执行,UNITS修改后,目标位置、速度、加减速度等会随UNITS改变成比例变化。
语法:UNITS=变量或UNITS (轴号)=变量
例子:UNITS=10000
常见的几种机械传动的UNITS参考计算方式见下表。
如设置脉冲当量为1000,速度SPEED以设置的脉冲当量为单位,则每秒按照当前设置速度值*1000进行发送脉冲给执行机构。
此时若直线运动指令的距离参数写2,则发送2*1000个脉冲,2000个脉冲能让电机转多少角度,需要参考电机的一圈脉冲数(电机转动一圈需要的脉冲数量)的设置,若电机的一圈脉冲数为10000,则2000个脉冲能让电机转72°,这样运动指令的实际运动距离就能被换算出来了。
以上为脉冲当量UNITS的设置方法,总而言之,设置前先要查出电机的一圈脉冲数,再结合机械结构的特点进行设置。
一般而言,步进电机的一圈脉冲数较小,伺服电机的一圈脉冲数较大,需要十万或百万级的脉冲数才能驱动电机转一圈,故伺服的精度较高,相对于的成本也高一些。
轴运行时的速度,单位为UNITS/s。
当单轴运动时,运动速度的加速度为单轴的速度,当多轴运动时,作为插补运动的合成矢量速度。
SPEED修改后,立刻生效,可以实现动态变速,平滑变速也可以使用SPEED_RATIO指令来调节倍率。
语法:SPEED=变量 或 SPEED(轴号)=变量
例子:SPEED=100 '每秒下发脉冲个数为100*UNITS
轴的运行由起始速度到目标速度的过程中,每秒达到的速度数值,单位为UNITS/s^2,加速度越大,达到目标速度的时间越短。
当单轴运动时,运动速度的加速度为单轴的加速度,当多轴运动时,插补运动的加速度为多轴矢量合成的加速度。
语法:ACCEL=变量 或 ACCEL(轴号)=变量
例子:ACCEL =1000 '加速度为1000 UNITS/s^2
轴的运行由运行速度到停止的过程中,每秒达到的速度数值,单位为UNITS/s^2,减速度越大,达到停止速度的时间越短。
当单轴运动时,运动速度的减速度为单轴的减速度,当多轴运动时,插补运动的减速度为多轴矢量合成的减速度。
语法:DECEL=变量 或 DECEL(轴号)=变量
轴的目标位置或需求位置,以UNITS作为单位,作为当前轴的位置参考,正向运动时值增大,反向运动时轴减小,DPOS参数回零完成后会自动清零,DPOS为0表示在原点位置,若手动改DPOS的值,会自动转换为OFFPOS偏移,不会移动电机。
正负软限位限制的便是DPOS的范围,超过设置的DPOS自动报警,停止轴运动。
轴的反馈位置,接了反馈此参数才有效,一般有编码器测量反馈,无反馈的情况MPOS的值自动复制DPOS的值,不具备参考价值。若手动改DPOS的值,会自动转换为OFFPOS偏移。
一般MPOS与DPOS之间是有一定的误差的,伺服性能越好,这个误差便越小,理论上不可以完全消除,但可以十分接近。
相对应的,SPEED为目标速度,MSPEED为编码器测得的真实运动速度。
注意,部分回零模式回零之后,DPOS会自动清零,但MPOS不会,需要手动清零MPOS,否则可能导致后续运动出错。
熟悉了上面的内容,我们知道SPPED(1)=1000的含义是指定轴1的运动速度为1000,SPEED=1000因为未指定轴号,默认设置BASE的第一个轴。
但MOVE(100)这类的命令括号是运动参数,不能填入轴号了,这种参数我们可以写做MOVE(100) AXIS(0),通过添加AXIS指令去指定当前参数设置到哪个轴上。
BASE(1) '选择Y轴
MOVE(100) '给Y轴单独发脉冲
MOVE(100) AXIS(0) '给X轴单独发脉冲
RAPIDSTOP(2)
WAIT IDLE(0)
WAIT IDLE(1)
BASE(0,1) '选择轴号
ATYPE=1,1 '轴类型设置
UNITS=10000,10000 '脉冲当量设置
SPEED=100,200 '速度设置
ACCEL=1000,2000 '加速度设置
DECEL=1000,2000 '减速度设置
DPOS=0,0 '当前位置清0
MPOS=0,0 '反馈位置清0
TRIGGER '触发示波器采样
MOVE(200) AXIS(0) '轴0运动
MOVE(100) AXIS(1) '轴1运动
END
在这些参数作用下的软件示波器采样不同参数随时间变化的波形如下图所示。通过速度曲线能反映加减速度的情况。
DPOS(0)和MSPEED(0)分别为轴0的位移轨迹和速度轨迹;
DPOS(1)和MSPEED(1)分别为轴1的位移轨迹和速度轨迹。
单轴运动的特点是每个轴的运动是独立的,,由各轴自己的运动参数控制,与其他轴没有联系,单轴运动也分几类,单轴寸动、单轴点动、单轴持续运动、回零也属于单轴运动。
寸动由MOVE指令给单个轴发有限个脉冲,例如MOVE(100),100个单位走完之后,轴减速停止。
MOVE指令控制多个轴运动的时候,属于插补运动,多轴是联动的。(寸动例程参见上文)
JOG点动是个简单的单轴运动,由外部输入信号控制以指定的速度正向运动或负向运动。
JOG点动需接入外部输入信号,使用FWD_JOG指令映射正向JOG输入,REV_JOG指令映射负向JOG输入,检测到有输入信号时以JOGSPEED指令速度运动,无输入立即停止。
注意映射JOG开关后,对于OFF信号有效的控制器,一定要INVERT_IN反转电平,例如ZMC系列控制器是OFF信号有效,若不反转,则导致信号接入时为OFF,控制器判断有输入,立即控制轴运动;对于ON有效的型号则不需要反转。
A.点动例程
RAPIDSTOP(2)
WAIT IDLE(0)
BASE(0) '选择轴0
ATYPE=1 '脉冲轴类型
DPOS=0 '坐标清0
UNITS=100 '脉冲当量
SPEED =100 '主轴速度
ACCEL=1000 '加速度
DECEL=1000 '减速度
SRAMP=100 'S曲线
TRIGGER '自动触发示波器
JOGSPEED=50 'JOG速度50
FWD_JOG=0 'IN0作为正向JOG开关
REV_JOG=1 'IN1作为负向JOG开关
INVERT_IN(0,ON) '输入0信号反转
INVERT_IN(1,ON) '输入1信号反转
END
B.运行效果如下图
输入0口有信号输入时,轴0正向运行,速度为50。
输入1口有信号输入时,轴0负向运行,速度为50。
输入0、1同时有信号输入时,轴0正向运行。
控制器有专用的持续运动指令,控制器持续发脉冲,控制轴以指定的速度和方向持续运动,持续运动常用的指令为VMOVE,以运动速度SPPED持续运动,此时停止轴运动使用CANCEL或RAPIDSTOP指令。
VMOVE的指令参数可选择正向或负向运动,VMOVE(1)正向,VMOVE(-1)负向,下一条VMOVE会自动替换前面的VMOVE指令。
持续运动例程:
RAPIDSTOP(2)
WAIT IDLE(0)
BASE(0) '选择轴号
ATYPE=1 '轴类型设置
UNITS=100 '脉冲当量设置
SPEED=100 '速度设置
ACCEL=1000 '加速度设置
DECEL=1000 '减速度设置
SRAMP=100 'S曲线
DPOS=0 '当前位置清0
TRIGGER
WHILE 1 '循环运动
IF MODBUS_BIT(0) = ON THEN 'MODBUS_BIT(0)有效往左运动
VMOVE(-1)
ELSEIF MODBUS_BIT(1) = ON THEN 'MODBUS_BIT(1)有效往右运动
VMOVE(1)
ELSEIF MODBUS_BIT(0) = OFF OR MODBUS_BIT(1) = OFF THEN
CANCEL(2) 'MODBUS_BIT无效时停止运动
ENDIF
WEND
END
插补是一个实时进行的数据密化的过程,控制器根据给定的运动信息进行数据计算,不断计算出参与插补运动的各坐标轴的进给指令,然后分别驱动各自相应的执行部件产生协调运动,以使被控机械部件按理想的路线与速度移动。
插补最常见的两种方式是MOVE直线插补和MOVECIRC圆弧插补。插补运动至少需要两个轴参与,进行插补运动时,将规划轴映射到相应的机台坐标系中,运动控制器根据坐标映射关系,控制各轴运动,实现要求的运动轨迹。
插补运动的特点是参与插补运动的所有轴,在进行一段插补运动时,同时启动同时停止,插补运动参数采用主轴的运动参数(速度、加速度等),主轴为BASE指令选择的第一个轴。
插补运动指令会存入主轴的运动缓冲区,不进入从轴的运动缓冲区,再依次从主轴的运动缓冲区中取出指令执行,直到插补运动全部执行完。
单轴直线运动或多轴直线插补运动,相对运动距离。绝对运动使用MOVEABS指令,SP运动使用MOVESP指令。
插补运动参数采用主轴参数,插补运动缓冲在主轴的运动缓冲区。
语法:MOVE(distance1 [,distance2 [,distance3 [,distance4…]]])
例子:二轴直线插补
RAPIDSTOP(2)
WAIT IDLE(0)
WAIT IDLE(1)
BASE(0,1) '选择轴0,轴1
ATYPE=1,1
UNITS=100,100
SPEED=100,100 '运动速度
ACCEL=1000,1000
DECEL=1000,1000
SRAMP=100,100 'S曲线
MERGE=ON '开启连续插补
TRIGGER '自动触发示波器
DPOS=100,0 '坐标偏移
MOVE(-50,100) '第一段相对运动
MOVE(-100,0) '第二段相对运动
MOVE(-50,-100) '第三段相对运动
MOVE(50,-100) '第四段相对运动
MOVE(100,0) '第五段相对运动
MOVE(50,100) '第六段相对运动
END
直线插补合成轨迹如下图:起点和终点均为(100,0),逆时针加工。
两轴圆弧插补,起点、终点、圆心三点画弧,起点使用轴当前坐标,相对运动。绝对圆弧插补使用MOVECIRCABS指令。SP圆弧插补使用MOVECIRCSP指令。
MOVECIRC2指令使用当前点、中间点、终点画弧。
圆弧插补指令适用于二轴运动。
语法:MOVECIRC(end1, end2, centre1, centre2, direction)
(end1, end2):终点坐标
(centre1, centre2):圆心坐标
direction:方向,0-逆时针,1-顺时针。
当起点坐标与终点坐标相同时,画出整圆。圆弧相关的指令要保证给出的圆心和终点坐标与当前点一起可以正确的描述一段圆弧,否则会报错,无法画弧,错误码1006。
例子:
RAPIDSTOP(2)
WAIT IDLE(0)
WAIT IDLE(1)
BASE(0,1)
ATYPE=1,1
UNITS=100,100
SPEED=100,100 '运动速度
ACCEL=1000,1000
DECEL=1000,1000
DPOS=0,0
SRAMP=100,100 'S曲线
MERGE=ON
TRIGGER '自动触发示波器
MOVECIRC(100,0,50,0,1) '半径50顺时针画半圆,终点坐标(100,0),圆心坐标(50,0)
MOVECIRC(-200,0,-100,0,1) '半径100顺时针画半圆,终点坐标(-100,0),圆心坐标(0,0)
END
圆弧插补合成轨迹如下图:
空间圆弧插补运动,相对运动,空间圆弧起点为当前点,第二、第三个点由指令指定。绝对运动使用MSPHERICALABS指令,自定义速度的连续插补运动可以使用SP后缀的指令。
语法:
MSPHERICAL(end1,end2,end3,centre1,centre2,centre3,mode[,distance4][,distance5])
(end1, end2, end3):第二个点坐标
(centre1, centre2, centre3):第三个点坐标
mode:指定前面两个坐标点的意义,如下表
distane4:第四轴螺旋的功能,指定第4轴的相对距离,此轴不参与速度计算
distane5:第五轴螺旋的功能,指定第5轴的相对距离,此轴不参与速度计算表
例子:
RAPIDSTOP(2)
WAIT IDLE(0)
WAIT IDLE(1)
WAIT IDLE(2)
BASE(0,1,2)
ATYPE=1,1,1 '设为脉冲轴类型
UNITS=100,100,100
DPOS=0,0,0
SPEED=100,100,100 '主轴速度
ACCEL=1000 ,1000,1000 '主轴加速度
DECEL=1000 ,1000,1000
TRIGGER
MSPHERICAL(120,160,400,240,320,300,0) '终点(120,160,400),中间点(240,320,300)
END
mode 0:当前点,中间点,终点三点定圆弧,如下图。
mode 3:当前点,圆心,终点定整圆,如下图。
MSPHERICAL(120,160,400,120,160,150,3) '终点(120,160,400),圆心(120,160,150),先走最短的圆弧(红色部分),再走完整圆。
同步运动描述的是不同轴之间的运动是联动的,比如电子齿轮,电子凸轮,自动凸轮等。
电子齿轮功能用于两个轴的连接,将主轴与从轴按照一个常数齿轮比建立连接,不需要物理齿轮,使用指令直接设置电子齿轮的比值,由于是使用软件实现的,故电子齿轮比可以随时更改。
电子齿轮功能通过指令CONNECT、CONNPATH实现,将一个轴按照一定比例连接到另一个轴上做跟随运动,一条运动指令就能驱动两个电机的运行,通过对这两个电机轴移动量的检测,将位移偏差反馈到控制器并获得同步补偿,这样能使两个轴之间的位移偏差量控制在精度允许范围内。
电子齿轮连接的是脉冲个数,例如主从轴连接比例为1:5,给主轴发送1个脉冲,此时对应给从轴发送5个脉冲。
CONNPATH与CONNECT的相同点:二者的使用语法相同,连接的都是脉冲个数,CONNPATH连接到单个轴的运动的效果与CONNECT相同。
CONNPATH与CONNECT的区别:CONNECT连接的是单个轴的目标位置。CONNPATH是连接的是插补轴的矢量长度,此时需要连接在插补运动的主轴上,连接到插补从轴上无法跟随插补运动。CONNPATH会跟踪XY轴插补的的矢量长度变化,而不是跟踪单独的X轴或者Y轴。
语法:CONNECT/CONNPATH(比率,被连接轴) AXIS(连接轴)
电子齿轮的连接比率:比率可正可负,可为小数,连接的是脉冲个数,要考虑不同轴UNITS的比例。比率可以通过重复调用CONNECT/CONNPATH指令动态变化(连接成功后保持连接状态),取消连接时用CANCEL或RAPIDSTOP指令。
→假设连接轴0的UNITS为10,被连接轴1的UNITS为100,使用CONNECT连接,比率ratio为1,CONNECT(1,1) AXIS(0)
当轴1运动S1=100时,轴0运动S0=S1UNITS(1)ratio/UNITS(0)=1001001/10,此时运动1000。
例子:
RAPIDSTOP(2)
WAIT IDLE(0)
WAIT IDLE(1)
BASE(0,1)
ATYPE=1,1
UNITS=10,100
DPOS=0,0
SPEED=100,100
ACCEL=1000,1000
DECEL=1000,1000
SRAMP=100,100
TRIGGER '自动触发示波器
MOVE(100) AXIS(1) '轴1运动100,此时轴0不动
WAIT IDLE(1) '上一段运动不连接
DELAY(10) '延时10ms
CONNECT(0.5,1) AXIS(0) '轴0连接到轴1,比例为0.5
MOVE(100) AXIS(1) '轴1运动100,轴0运动500
END
轴0目标位置:
DPOS(0)=DPOS(1)UNITS(1)ratio/UNITS(0)=1001000.5/10=500。
运动波形如图所示:
凸轮的作用是将旋转运动转换为线性运动,包括直线运动、摆动、匀速运动和非匀速运动。电子凸轮属于多轴同步运动,这种运动是基于主轴外加一个或多个从轴系统,是在机械凸轮的基础上发展而来,电子凸轮多用于周期性的曲线运动场合。
电子凸轮是利用构造的凸轮曲线来模拟机械凸轮,以达到与机械凸轮系统相同的凸轮轴与主轴之间相对运动的软件系统,通过控制器控制伺服电机来模拟机械凸轮的功能,不需要另外安装如下左图所示的凸轮机械结构。
如下右图所示,机械凸轮按照凸轮的轮廓可以得出一段转动角度与加工位置运动轨迹,此轨迹为弧线,将该段弧线分解成无数个直线或圆弧轨迹,组合起来得到一串趋近于该弧线的运动轨迹,电子凸轮直接将此段轨迹运动参数装入运动指令,即可控制轴走出目标轨迹。
电子凸轮用软件来控制信号,改变程序的相关运动参数就能改变运动曲线,应用灵活性高,工作可靠,操作简单,不需要额外安装机械构件,因而不存在磨损的情况。
凸轮指令有CAM凸轮表运动,CAMBOX跟随凸轮表运动,MOVELINK和MOVESLINK自动凸轮运动。
以CAM凸轮表运动指令为例,所谓凸轮表运动就是将凸轮运动的轨迹点,以数据的形式存储在TABLE寄存器区域,CAM指令再调用TABLE表的数据运动,形成运动轨迹,凸轮轴需要与其他轴配合使用,才能做柔顺曲线加工。
两个或多个CAM指令可以同时使用同一段TABLE数据区进行操作。TBALE数据需要手动设置,第一个数据为引导点,建议设为0。
凸轮表指令运动完调用的TABLE数据点后,凸轮运动结束,需要周期执行的场合,将凸轮表指令写在WHILE循环中。
CAM指令含义:根据存储在TABLE中的数据来决定轴的运动,这些TABLE数据值对应运动轨迹的位置,是相对于运动起始点的绝对位置。
指令语法:CAM(start point, end point, table multiplier, distance)
电子凸轮例程:
RAPIDSTOP(2)
WAIT IDLE(0)
BASE(0) '选择第0轴
ATYPE=1 '脉冲方式步进或伺服
DPOS = 0
UNITS = 100 '脉冲当量
SPEED = 200
ACCEL = 2000
DECEL = 2000
'计算TABLE的数据
DIM deg, rad, x, stepdeg
stepdeg = 2 '可以通过这个来修改段数,段数越多速度越平稳
FOR deg=0 TO 360 STEP stepdeg
rad = deg * 2 * PI/360 '转换为弧度
X = deg * 25 + 10000 * (1-COS(rad)) '计算每小段位移
TABLE(deg/stepdeg,X) '存储TABLE
TRACE deg/stepdeg,X
NEXT deg
TRIGGER '触发示波器采样
WHILE 1 '循环运动
CAM(0, 360/stepdeg, 0.1, 300) '虚拟跟踪总长度300
WAIT UNTIL IDLE '等待运动停止
WEND
END
运动轨迹如下图:每个凸轮指令运动总时间=distance/speed=300/200=1.5s
在实际生产过程中遇到紧急情况和一些意外情况我们需要让轴运动及时的停下来,这时候我们就需要发送运动取消指令给控制器取消轴的运动,防止意外事故的发生。
运动取消分针对单轴的指令CANCEL和针对所有轴的指令RAPIDSTOP,两个指令功能相同,唯一不同的是一个针对单个轴,一个是针对所有轴的,故单轴取消在使用的时候养成添加轴号的习惯,否则可能作用到其他轴上。
语法:CANCEL(模式)或RAPIDSTOP(模式)
模式2急停的减速度按FASTDEC快减速和DECEL减速度中最大的值,使用指令之后要调用绝对位置运动,必须先WAIT IDLE 等待停止完成。
RAPIDSTOP(2)
WAIT IDLE(0)
BASE(0)
DPOS=0
ATYPE=1
UNITS=10000
SPEED=500
ACCEL=1000
DECEL=1000 '减速度
FASTDEC=10000 '快减速
TRIGGER
MOVE(1000) '当前运动
MOVE(-1000) '缓冲运动
DELAY(1000) '延时1s后CANCEL生效
CANCEL(0)
END
CANCEL(0)效果如下:MOVE(1000)执行1s之后被取消,缓冲运动继续运行。
CANCEL(1)效果如下:MOVE(1000)执行完,缓冲运动被取消。
CANCEL(2)效果如下:MOVE(1000)执行1s之后急停,急停减速度FASTDEC。
CANCEL(3)效果如下:MOVE(1000)执行1s之后急停。
本次,正运动技术经济型EtherCAT运动控制器(八):轴参数与运动指令,就分享到这里。
本文由正运动技术原创,欢迎大家转载,共同学习,一起提高中国智能制造水平。文章版权归正运动技术所有,如有转载请注明文章来源。