高精度等间距二维三维PSO输出教程

上节课程我们讲述了多种pso模式原理和使用方法,本节课程我们主要讲解一下如何使用pso功能实现高精度等间距输出。
zmc460n双总线控制器
一、硬件说明 硬件选型的首要要求是支持pso功能,再分析pso的应用场合和轴数等选择具体的型号。本例以zmc460n双总线运动控制器为例展开介绍。
pso功能用于控制激光或点胶阀的高速开/关,直线插补和平面圆弧插补功能用于完成加工轨迹,连续插补功能用于让多段插补的速度连续,提高加工的效率。
zmc460n双总线控制器 zmc460n双总线控制器是正运动技术推出的新一代网络60轴运动控制器(支持ethercat总线轴+rtex总线轴+脉冲轴混合使用),自带六个脉冲轴接口(包含差分脉冲输出和差分编码器输入),通用输出口支持配置为单端脉冲输出,通用输入口支持配置成单端编码器输入。脉冲输出频率最大可达10mhz,ethercat总线的通讯周期最快可达250微秒。
支持12路pso输出,输出口独立,支持12路同时输出,每个系统周期可比较输出多次,应用场景更为丰富。
zmc460n双总线控制器架构图  
pso功能主要通过“hw_pswitch2”硬件位置比较输出指令和“hw_timer”硬件定时指令实现,下面来讲解一下这两个指令的详细用法。
二、指令说明 1.hw_pswitch2
案例将会用到hw_pswitch2以下几个模式,指令语法说明如下:
(1)mode=6:矢量比较方式,周期模式,与hw_timer一起使用
hw_pswitch2(6,opnum,opstate,vectstart,repes,cycledis)
mode:6-启动比较器
opnum:对应的输出口
opstate:第一个比较点的输出状态
vectstart:比较点vector_moved当前运动距离
repes:重复周期,一个周期只比较一次
cycledis:周期距离,每隔这个距离输出一次
⊙ 说明: 此模式无需table,坐标均参考矢量坐标,从vectstart的位置开始比较,每隔cycledis距离触发一次比较,重复比较的周期为repes,每次触发比较信号后,保持信号的脉冲宽度由hw_timer指令设置。
hw_timer可以控制到达一个触发点控制op反转多次,hw_timer周期走完等待下一周期的触发。
(2)mode=7:矢量比较方式,采用table,与hw_timer一起使用
hw_pswitch2(7,opnum,opstate,tablestart,tableend [,optimeus,optimes,cyctimeus])
mode:7-启动比较器,opstate不翻转,方便与hw_timer配合使用
opnum:对应的输出口
opstate:第一个比较点的输出状态
tablestart:第一个比较点vector_moved坐标所在table编号
tableend:最后一 个比较点vector_moved坐标所在table编号
[以下参数和hw_timer二选一,hw_timer单独写可以动态调整参数]
optimeus:动态调整hw_timer的有效时间
optimes:动态调整hw_timer的触发脉冲数,0-不输出
cyctimeus:动态调整hw_timer的脉冲周期时间
⊙ 说明: 比较点写在table中,坐标均参考矢量坐标,每到达一个table比较矢量位置触发op,此时op的脉冲宽度和每次触发的比较次数由hw_timer控制;到达下一个table位置,op再次触发。
2.hw_timer
硬件定时器,用于硬件比较输出后一段时间后还原电平。hw_timer只有1个,每次调用会强制停止之前的调用。
不使用或比较完成时使用hw_timer(0)关闭。
hw_timer(mode,cyclonetime,optime,reptimes,opstate,opnum )
mode:0停止,2-启动
cyclonetime:周期时间,us单位
optime:有效时间,us单位
reptimes:重复次数,启动模式,reptimes =0时,软关闭hw_timer,原来的脉冲没有完成的,会继续输出完成
opstate:输出缺省状态,输出口变为非此状态后开始计时
opnum:输出口编号,必须能硬件比较输出的口
⊙ 说明: 参数设置可参考下方示意图,此指令的效果是固定时间周期输出,设置每个周期的有效输出的时间和重复输出的次数。
⊙使用hw_timer硬件定时无法仿真,只能在控制器平台运行。
三、二维等间距pso输出 等距比较输出模式,不管运动速度和运动轨迹如何变化,始终固定距离输出脉冲,使得输出在空间上分布是均匀的,示意图如下。
上节描述的模式中,有几种模式都能实现xy平面的等距输出,例如现有一段上左图所示的轨迹,采用直线+圆弧+直线组成,每间隔10个距离比较输出一次,一共比较12次,等间距输出的方法参见下方例程的说明。
例程:采用mode=6,矢量比较模式,结合hw_timer硬件定时,采用两轴的合成矢量位置作为比较的参考坐标位置,实现上方示意图的效果,使用方便,无需计算位置坐标,精度高。
rapidstop(2)
wait  idle(0)
wait  idle(1)
'基础轴参数设置
base(0,1)          '选择xy轴
'atype=4,4         '1-脉冲轴类型,比较dpos;4-带编码器反馈轴类型,比较编码器的反馈位置mpos
units=100,100
speed=100,100
accel=1000,1000
decel=1000,1000
merge=on,on
sramp=50,50      's曲线速度平滑
op(0,off)
'将当前位置设置为0,0
dpos=0,0
mpos=0,0
dim widthtime,interval,startpos,endpos
widthtime = 20000    '脉冲宽度20000us
interval = 10        '脉冲间隔 
startpos = 10       '触发起始位置
endpos = 130         '结束位置
force_speed=60       'sp速度
moveabs(0)           '运动到0位
wait idle
vector_moved = 0     '插补矢量距离清0
dim itime
itime =abs(endpos - startpos) \ interval      '计算比较次数
trace startpos,itime,interval,widthtime
hw_pswitch2(2)    '清空hw比较缓冲区
hw_pswitch2(6,0,on,startpos,itime,interval)   '从strartpos触发比较间隔interval比较itime次
hw_timer(2,widthtime+100,widthtime,1,off,0)    '输出触发变成on后,打开widthtime us后关闭输出
delay(10)
trigger        '启动示波器
moveabs(50,0)  '开始运动
movecircabssp(75,25,50,25,0)
moveabs(75,75)
wait idle      '等待运动停止
hw_pswitch2(2) '清空hw比较缓冲区
end
示波器采样波形如下:采样5个通道的波形,依次为轴0的目标位置,轴1的目标位置,输出口0,轴0和轴1插补的矢量合成位置,轴0和轴1插补的运行速度。
每间隔10个单位距离比较一次,一共比较12次,由hw_timer可精准控制输出脉冲的宽度,输出频率更快,整体精度更高。
xyz模式下的比较输出波形:
综上所述,等距比较场合,使用模式6较为方便,只需要得出比较的距离和op输出的时间即可,模式6可用于单轴和多轴插补场合的比较。模式5和模式7也能实现上述功能。
四、三维等间距pso输出 1.三维等间距pso输出示例
例程: 采用模式7,模式6是按指令设置的触发距离周期输出,模式7的输出位置由table的数据点控制,输出位置更灵活,可实现上例等距输出,也可实现灵活间隔的输出。
rapidstop(2)
wait  idle(0)
wait  idle(1)
wait  idle(2)
'基础轴参数设置
base(0,1,2)         '选择xy轴
'atype=4,4,4        '1-脉冲轴类型,比较dpos;4-带编码器反馈轴类型,比较编码器的反馈位置mpos
units=100,100,100
speed=100,100,100
accel=1000,1000,1000
decel=1000,1000,1000
merge=on,on
sramp=50,50,50      's曲线速度平滑
op(0,off)
'将当前位置设置为0,0
dpos=0,0,0
mpos=0,0,0
force_speed=60  'sp速度
moveabs(0,0,0)  '运动到0位
wait idle
vector_moved = 0  '插补矢量距离清0
dim widthtime,t_startnum,pointnum
widthtime = 10000 '脉冲宽度10000us
t_startnum = 0    '比较点起始table编号
pointnum = 8      '比较点个数
table(t_startnum,10,30,50,70,90,110,130,150)  '比较点坐标设置,起始table位置t_startnum,8个点
hw_pswitch2(2)    '清空hw比较缓冲区
hw_pswitch2(7,0,on,t_startnum,t_startnum+pointnum-1)   '模式7
hw_timer(2,widthtime+100,widthtime,1,off,0)            '输出触发变成on后,打开widthtime us后关闭输出
delay(10)
trigger             '启动示波器
moveabs(100,80,90)  '三轴直线插补
wait idle           '等待运动停止
hw_pswitch2(2)      '清空hw比较缓冲区
end
波器采样波形如下:采样6个通道的波形,依次为轴0的目标位置,轴1的目标位置,轴2的目标位置,输出口0,轴0轴1轴2插补的矢量合成位置,轴0轴1轴2插补的运行速度。
table存储的比较点矢量位置为10,30,50,70,90,110,130,150,共8个点,每到一个点触发比较,由hw_timer可精准控制输出脉冲的宽度,输出频率更快,整体精度更高。


小白都看得懂的STM32的DMA知识
关于Boost与Charge Pump之间的联系和应用
2.4G环境显示标签
电流继电器工作原理
电动汽车和内燃机汽车相比有什么不同
高精度等间距二维三维PSO输出教程
python如何将多行合并成一行
触发电路中同步电压与同步信号有何区别
近20家车企2023年销量目标盘点:仅三家有完成希望
自动驾驶,一场将全面影响人类社会的交通革命
4G CAT.1/5G NB-IoT校园物联网智能门锁一卡通/一码通/一脸通解决方案
逆变器选择规则是什么,结合项目整体框架
手机频繁充电对电池到底有没有好处和坏处
科技改变未来,工业自动化对于企业发展的意义
惠普SPECTRE13评测 高颜值性感选手
是德科技摘得现场测试设备类桂冠
感应加热的特殊效应
苹果智能眼镜设计和关键硬件
苹果表示,目前已经有超过400款汽车支持CarPlay功能
常见的手机相机对焦技术