运动控制器PSO位置同步输出(一):硬件平台与PSO指令简介

本节内容主要包括以下几个部分,支持pso功能的硬件、pso技术的特点、在运动控制器上使用哪些命令实现 pso功能、pso使用的案例说明。 看完本节内容,相信大家就能了解pso的使用方法,下节我们将深入讲解。
硬件平台环境搭建视频演示:https://v.youku.com/v_show/id_xntg4nzyxodu1ng==.html
  一.硬件说明 硬件选型的首要要求是支持pso功能,再分析pso的应用场合和轴数等选择具体的型号。
本例以zmc406总线运动控 制器和zmc460n双总线运动控制器为例展开介绍,pso所用的指令名也被称为硬件比较输出,故下文也会用硬件比较输出代替pso。
(一)zmc406总线控制器
zmc406总线控制器是正运动技术推出的新一代网络6轴运动控制器(可通过扩展模块来扩展轴,支持多达32轴),自带六个脉冲轴接口包含差分脉冲输出和差分编码器输入),支持脉冲驱动器和ethercat总线驱动器混合使用。
脉冲输出频率最大可达10mhz,ethercat总线的通讯周期最快可达250微秒。
支持4路pso输出,输出口非独立,不能四路同时输出,每个系统周期比较输出一次,即每个系统周期只能输出一路比较信号。
(二)zmc460n双总线控制器
zmc460n双总线控制器相比zmc406所带的资源更多,是正运动技术推出的新一代网络60轴运动控制器(支持ethercat总线轴+rtex总线轴+脉冲轴混合使用),自带六个脉冲轴接口(包含差分脉冲输出和差分编码器输入),通用输出口支持配置为单端脉冲输出,通用输入口支持配置成单端编码器输入。
脉冲输出频率最大可达10mhz,ethercat总线的通讯周期最快可达250微秒。
支持12路pso输出,输出口独立,支持12路同时输出,每个系统周期可比较输出多次,应用场景更为丰富。
这两款控制器同属高系列,功能强大,能满足多种场合的需求,支持直线插补、连续插补、任意圆弧插补、空间圆弧、螺旋插补、电子凸轮、电子齿轮、位置锁存、同步跟随、虚拟轴设置、硬件比较输出、硬件定时器、运动中精准输出等功能;采用优化的网络通讯协议可以实现实时的运动控制。
应用程序可以使用正运动自主研发的zdevelop软件开发,或vc、vb、vs、c++builder、c#等上位机软件来开发。上位机开发调试时可以把zdevelop软件同时连接到控制器,程序运行时需要动态库“zmotion.dll”。
下文以zdevelop软件开发为例。
控制器的基本参数说明如下表:
⊙pso硬件比较输出功能使用的是高速io口,响应频率为1mhz,响应速度可以精确到微秒级别。
用户可以使用zdevelop软件连接控制器,在zdevelop软件的在线命令栏发送“?*max”打印查看更多控制器规格参数,“?*set”查看打印指令参数值,?*port打印通讯通道。
1.下图为zmc406总线控制器的参考架构:
zmc406总线控制器的常用接口说明如下表:
2.下图为zmc460n双总线控制器的参考架构:
zmc460n双总线控制器的常用接口说明如下表:
⊙均可通过can总线或ethercat总线扩展io资源和轴资源。
硬件平台与pso指令视频演示:https://live.csdn.net/v/225116
  二.pso的技术介绍 pso(position synchronized output)即位置同步输出,本质是通过采集实时的编码器反馈位置(无编码器可使用输出的脉冲位置)与比较模式设定的位置进行比较,控制op高速同步输出信号,pso示意图如下。
pso一般与激光器 (或点胶喷射阀等设备) 同步输出信号进行相位同步,在运动轨迹的所有阶段以恒定的空间(或者恒定时间)间隔触发输出开关,包括加速、减速和匀速段,从而实现脉冲能量均匀地作用在被加工物体上。
⊙pso功能的特点就是能高速且稳定的输出信号 , 因为输出精度足够高,所以能够在整个运动轨迹中以固定的距离触发输出信号而不用考虑总体速度。
即在直线部分以很快的速度运动,而在圆角部分减速的同时也能保证输出间距恒定,通常圆角加工部分在整个加工过程中占有比较小的部分,这样在保证加工效果的同时,就可以最大限度地提高产能。
    三.pso相关指令介绍 实现pso功能(即硬件比较输出)功能使用的命令主要有“hw_pswitch2”、“move_hwpswitch2”、“hw_timer”等,前两个指令主要用于设定触发比较输出的距离,最后的命令是硬件定时,可配合前者使用精准控制输出脉冲的宽度。
1 .hw_pswitch 2 -- 硬件位置比较输出
(1)指令说明
通过设置比较条件,控制op口连续高速输出信号,控制器必须使用支持硬件比较输出的输出口,例如zmc406可以使用out0/1/2/3口,zmc460的out0-11均可使用。
支持比较脉冲轴的位置、编码器的反馈位置和总线轴的位置。选用何种位置信息比较,与设置的atype轴类型有关,比较的主轴带编码器输入时,自动使用编码器位置来触发,不带编码器的场合便比较脉冲输出。
可以使用“moveop_delay”参数来调整输出准确时刻。
(2)注意事项
一般控制器每个系统周期内只能比较一次,系统周期通过“servo_period”查询,此时当系统周期过大时,而比较输出脉冲宽度小于系统周期时将会导致输出异常。部分控制器如zmc460n、zmc504scan等,每个系统周期支持比较多次,即支持多个比较输出口在同一周期输出比较信号。
⊙“hw_pswitch2”与“move_op”精准使用同样的硬件资源,不建议在同一个通道同时使用,可以在不同的通道同时使用。
调用table位置数据时,在所有比较点完成前不要修改table。
使用脉冲型电机时只有atype为4时才是比较反馈位置(mpos),默认出厂的atype为1或7比较的是命令位置(dpos)。
(3)指令语法
hw_pswitch2(mode, [...])
mode模式不同,后面需要填写的参数也不同,详情需参考basic手册的语法说明。
举两个简单且典型的模式展开描述。
a.mode=1:单轴比较
hw_pswitch2( mode,opnum,opstate,tablestart,tableend[,direction])
mode:1-启动比较器
opnum:对应的输出口
opstate:第一个比较点的输出状态
tablestart:第一个比较点绝对坐标所在table编号
tableend:最后一个比较点绝对坐标所在table编号
direction:第一个点判断方向,0坐标负向,1坐标正向,-1不使用方向
此模式较为简单,需要借助table寄存器,把需要比较输出的位置坐标先存储到table寄存器,然后pso控制op口每到达一个比较点的位置便反转一次,直到全部坐标点比较完成。示意图如下,p表示比较点,展示六个比较点的op输出情况。
b.mode=2:清除比较点
hw_pswitch2(2)
mode:2-停止并删除没完成的比较点
⊙使用前需要调用此模式,清除可能没有比较完成的数据。使用过程中也可以发送此命令,停止比较。
mode=6:矢量比较方式,周期模式,与hw_timer一起使用
hw_pswitch2( mode, opnum, opstate, vectstart, repes, cycledis)
mode:6-启动比较器
opnum:对应的输出口
opstate:第一个比较点的输出状态
vectstart:比较点vector_moved当前运动距离
repes:重复周期,一个周期只比较一次
cycledis:周期距离,每隔这个距离输出一次
此模式相对复杂一些,比较输出的数据不参考table,只需指定第一个触发点的“vector_moved”,比较周期的次数,每次输出触发的距离,“hw_timer”控制每到达一个周期触发位置输出的脉冲宽度和次数,参数设置可参考下方示意图,红色参数为hw_pswitch2指令的参数,橙色参数为hw_timer指令的参数。
此模式涉及的距离坐标均为矢量坐标,可用于单轴运动或插补运动模式下比较输出。
例一: mode=1,单轴模式,比较table的位置点。
base(0)atype=0units=10000/10speed=100accel=1000decel=1000sramp=100dpos=0mpos=0op(0,off)table(0,50,100,150,200) '比较点坐标设置hw_pswitch2(2) '停止并删除没有完成的比较点hw_pswitch2(1, 0, 1, 0, 3,1) '比较4个点,操作输出口0trigger '触发示波器move(300)end 示波器采样波形如下: 到达table的四个坐标点50,100,150,200,op反转。
例二: mode=6,周期模式,结合hw_timer使用。
rapidstop(2)wait idle(0)base(0)atype=1units=10000/10speed=100accel=1000decel=1000sramp=100dpos=0mpos=0op(0,off)triggervector_moved=0 '设置矢量起始位置为0,方便观察hw_pswitch2(2) '停止并删除没有完成的比较点hw_pswitch2(6,0,1,100,4,50) '位置100开始比较,比较4次周期距离50,输出有效时间由hw_timer指令确定hw_timer(2,100000,50000,2,off,0) '输出变为on后50ms变为offmove(400)end 示波器波形如下:
输出口为op(0),第一次比较输出的状态为on,第一个输出点的矢量坐标为100,比较4次,间隔50的距离触发一次。
每次触发之后输出op的时间由hw_timer指令设置,hw_timer参数确定每次输出脉冲的周期为100 ms,有效宽度为50ms,每个比较位置连续触发2次。
yt模式下波形:
其他条件不变,将单轴运动改为move(200,300)两轴插补,波形如下,根据两轴的合成矢量位置vector_moved进行比较。
程序如下:
rapidstop(2)wait idle(0)base(0)atype=1units=10000/10speed=100accel=1000decel=1000sramp=100dpos=0mpos=0op(0,off)triggervector_moved=0 '设置矢量起始位置为0,方便观察hw_pswitch2(2) '停止并删除没有完成的比较点hw_pswitch2(6,0,1,100,4,50) '位置100开始比较,比较4次周期距离50,输出有效时间由hw_timer指令确定hw_timer(2,100000,50000,2,off,0) '输出变为on后50ms变为offmove(200,300) '两轴直线插补end xyz模式下输出波形如下:
2.hw_timer -- 硬件定时
(1) 指令说明
硬件定时器,用于硬件比较输出后一段时间后还原电平。“ hw_timer”只有1个,每次调用会强制停止之前的调用。
op和move_op操作会关闭正在进行的hw_timer脉冲,这样可以使用hw_timer来实现类似pwm的功能,op输出打开脉冲输出,下一个op输出关闭脉冲输出,当使用move_op精准输出时,可以实现精准的pwm输出无限脉冲功能。
使用“?*hw_timer”可以看到还有多少脉冲剩余。
(2)注意事项
每个周期输出一次信号,指令的周期时间的设置一定要大于系统周期,否则输出异常。 输出口需要指定支持pso功能的op口。
(3)指令语法
hw_timer(mode, cyclonetime, optime, reptimes, opstate, opnum )
mode:0停止,2-启动
cyclonetime:周期时间,us单位
optime:有效时间,us单位
reptimes:重复次数,启动模式,reptimes =0时,软关闭hw_timer,原来的脉冲没有完成的,会继续输出完成
opstate:输出缺省状态,输出口变为非此状态后开始计时
opnum:输出口编号,必须能硬件比较输出的口
参数设置可参考下方示意图,此指令的效果是固定时间周期输出。
例子:
rapidstop(2)wait idle(0)base(0)atype=1units=100speed=100accel=100decel=100dpos=0triggerdelay(100)op(0, off)hw_timer(2, 10000, 5000, 30, off, 0) '输出口0变为on后,硬件定时器触发开始计时,周期为10ms,5ms 后切换为off,重复30次结束op(0, on) '触发定时 end
示波器采样op(0)波形如下: 采样周期设置为1ms,表示横轴时间的单位为1ms,延时100ms之后开始触发op高速输出,指令作用的总时间为“10000us*30”。 第三个参数调整输出脉冲的宽度。
3.move_ hwpswitch2 -- 缓冲硬件比较输出
此命令功能和用法同“hw_pswitch2”,区别是此命令会进运动缓冲区,在缓冲中执行比较。
pso指令说明视频链接:https://live.csdn.net/v/225117
  四.等间距输出脉冲的例子 采用“hw_pswitch2”指令的模式6,结合“hw_timer”控制单个轴高速等距输出。
rapidstop(3)wait idle(0)global const axis_x = 0 '物理轴轴号定义global const out_pso0 = 0 'pso硬件输出口编号base(axis_x) '轴参数初始化units=1000 '脉冲当量 1mm对应的脉冲个数atype=4 '轴类型 脉冲输出+编码器输入轴dpos=0mpos=0speed=100accel=2000decel=0merge=1op(out_pso0,off)global g_cmdg_cmd = 0while 1if g_cmd = 1 theng_cmd = 0triggerfunction_test1()endifwend'********************************************************************************************'等距离距离模式生成一个pwm脉冲,脉冲输出时间可调。'lv_widthtime 脉冲宽度时间us'lv_interval 2个脉冲间隔 mm'lv_strartpos 触发起始位置 mm'lv_endpos 结束位置'********************************************************************************************global sub function_test1() '在20-120范围内每间隔1mm输出一个持续2ms的脉冲local lv_widthtime,lv_interval,lv_strartpos,lv_endpos '定义局部变量lv_widthtime = 2000 '脉冲宽度2000uslv_interval = 1 '脉冲间隔 1mmlv_strartpos = 20 '触发起始位置 20mm位置lv_endpos = 120 '结束位置 120mmop(out_pso0,off) '关闭输出口base(axis_x) '选定x轴atype = 4 '轴类型,比较轴类型带编码轴特性时默认按编码器位置比较speed = 100 '速度100mm/sforce_speed=60 'sp速度60mm/smoveabs(0) '运动到0位wait idlevector_moved = 0 '插补矢量距离清0local itimeitime =abs(lv_endpos - lv_strartpos) \ lv_interval '计算比较次数trace lv_strartpos,itime,lv_interval,lv_widthtimehw_pswitch2(2) '清空hw比较缓冲区hw_pswitch2(6,out_pso0,on,lv_strartpos,itime,lv_interval) '从lv_strartpos触发比较间隔lv_interval比较itime次hw_timer(2,lv_widthtime+100,lv_widthtime,1,off,out_pso0) 'out_pso触发变成on后,打开lv_width us后关闭输出moveabs(50) '单轴运动,速度100moveabssp(100) 'sp单轴运动,速度60moveabs(150) '单轴运动,速度100wait idle '等待运动停止hw_pswitch2(2) '清空hw比较缓冲区end sub ‍
  五.zdevelop查看pso曲线 1.示波器采样上例波形如下。
三段单轴直线运动,比较范围为位置20-120,每隔一个单位距离比较一次,共比较100次,中间段由于是等距比较,运动速度较小,故op反转的速度变慢。op保持高电平的时间是2ms。
2.xy模式下op随运动距离变化的波形如下。
可看出等距比较模式下,比较输出不受运动速度的影响,输出始终是均匀的。
视频演示链接:https://live.csdn.net/v/225119
本次,正运动技术运动控制器pso位置同步输出(一):硬件平台与pso指令简介,就分享到这里。


详谈新基建下的网络安全挑战
小米官宣小米10s将于10日下午正式发布!
有何影响?美国商务部禁令,打击中国7家超级计算实体;小鹏汽车将在武汉设厂 年产能10万辆|一周科技热评
家用土壤检测仪什么品牌好?有什么特点?
云服务云技术大肆扩张,数据中心该如何发展
运动控制器PSO位置同步输出(一):硬件平台与PSO指令简介
机器学习技术如何改善网络安全?
华为新机曝光 比华为MATE 9更漂亮
华为在全国启动云通信核心伙伴招募
如何迅速查找电动车故障
实现LED照明应用的无闪烁调光
FS3144单极性霍尔效应锁存传感器概述及特点
车载扬声器的产品类型
笔记本外壳材料-镁合金和铝合金
电源工程师必须掌握的开关电源EMI五大抑制策略
造成红外热像仪故障的常见原因之一是什么?
FPGA流水灯的设计流程
浅谈餐饮油烟监测的使用方法及其应用特点
王一博与中国移动咪咕公司共同谱写中国滑板时代新篇章
Galaxy Watch表带有望实现测量体脂功能