运动控制器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 --硬件位置比较输出
(1)指令说明
硬件位置比较输出功能必须使用支持硬件比较输出的输出口,例如zmc460n可以使用out0-11口。
支持比较脉冲轴的位置、编码器的反馈位置和总线轴的位置。比较主轴带编码器输入时,自动使用编码器位置来触发,不带编码器的场合便比较脉冲输出。可以使用moveop_delay参数来调整输出准确时刻。
(2)注意事项
zmc460n每个系统周期内可以比较一次,但每个周期内单个输出口只能比较一次,系统周期通过“servo_period”查询,当系统周期过大时,而比较输出脉冲宽度小于系统周期时将会导致输出异常。
“hw_pswitch2”与“move_op”精准使用同样的硬件资源,不建议在同一个通道同时使用,可以在不同的通道同时使用。
调用table位置数据时,在所有比较点完成前不要修改。
使用脉冲型电机时只有atype为4时才是比较反馈位置(mpos),默认出厂的atype为1或7比较的是命令位置(dpos)。
hw_pswitch2没有比较完所有点的话,一定要设置mode值为2,通过hw_pswitch2(2)指令停止并删除没有完成的比较点,否则后面此输出通道会工作不正常,使用前需要调用此模式,清除可能没有比较完成的数据。
(3)指令语法
hw_pswitch2(mode, [...])
a.mode模式一览表:
b.hw_pswitch2的模式可以总结为两大类:
a.采用table表存储的数据点来进行比较,脉冲宽度由数据的间隔和运动速度共同决定,所以比较前先要将数据写入“table”中,然后再调用。
相关模式:1,3,7,25,26,35,36。
 b.等距周期比较,无需借助“table”,“hw_pswitch2”设置好触发的比较的位置、比较周期数,“hw_timer'设置每次触发比较输出脉冲的宽度,这类模式参数设置相对多一些,多个指令的组合也可实现变化距离的输出。
相关模式:6。模式5既不需要table也不需要“hw_timer”便可实现等距周期比较。、
mode模式详解参加下文,mode模式不同,后面需要填写的参数也不同。
(4) mode=1:单轴比较
hw_pswitch2(1,opnum,opstate,tablestart,tableend[,direction])
mode:1-启动比较器
opnum:对应的输出口
opstate:第一个比较点的输出状态
tablestart:第一个比较点绝对坐标所在table编号
tableend:最后一个比较点绝对坐标所在table编号
direction:第一个点判断方向,0坐标负向,1坐标正向,-1不使用方向
⊙说明: 比较点写在table中,每到达一个比较位置op反转一次。
(5) mode=2:清除比较点
hw_pswitch2(2)
mode:2-停止并删除没完成的比较点
⊙说明: 使用前需要调用此模式,清除可能没有比较完成的数据。使用过程中也可以发送此命令,停止比较。
(6) mode=3: 矢量比较方式
hw_pswitch2(3, opnum, opstate, tablestart, tableend)
mode:3-启动比较器
opnum:对应的输出口
opstate:第一个比较点的输出状态
tablestart:第一个比较点vector_moved坐标所在table编号
tableend:最后一个比较点vector_moved坐标所在table编号
⊙ 说明:比较点写在table中,每到达一个比较矢量位置op反转一次。
使用矢量距离比较时,与“vector_moved”进行比较,建议连续运动前设置“vector_moved”初始值。
(7) mode=4: 矢量比较方式,单个比较点
hw_pswitch2(4, opnum, opstate, vectstart)
mode:4-启动比较器
opnum:对应的输出口
opstate:第一个比较点的输出状态
vectstart:比较点vector_moved当前运动距离
⊙ 说明: 到达指令设置的一个比较矢量位置op反转,比较结束。
(8) mode=5: 矢量比较方式, 周期脉冲模式
hw_pswitch2(5,opnum, opstate, vectstart, repes, cycledis, ondis)
mode:5-启动比较器
opnum:对应的输出口
opstate:第一个比较点的输出状态,认为是有效状态,反之认为无效状态
vectstart:比较点vector_moved当前运动距离
repes:重复周期,个周期内比较两次,先输出有效状态,再输出无效状态
cycledis:周期距离,每隔这个距离输出opstate, ondis后还原为无效状态
ondis:输出有效状态的距离,(cycledis- ondis)为无效状态距离
⊙说明:此模式无需table,坐标均参考矢量坐标,从vectstart的位置开始比较,每隔cycledis距离触发一次比较,重复比较的周期为repes,每次触发比较信号后,保持ondis距离后关闭信号,等待下一周期的触发。
(9) 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”周期完成等待下一周期的触发。
(10) mode=7: 矢量比较方式
⊙ 与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再次触发。
(11) mode= 25、26:2d比较
2d比较: 每2个连续table存储一个xy坐标点,实现多点比较,每个比较点输出状态翻转。
25和35模式类似;26和36模式类似,需与hw_timer配合使用。
a.hw_pswitch2(25, opnum, opstate, maxerr, num, tablepos)
mode:25,二维的比较模式
opnum:对应的输出口
opstate:第一个比较点的输出状态
maxerr:比较位置每个轴左右的脉冲偏差,进入偏差范围后开始比较,此参数不能写0
num:table里面存储的比较点坐标个数
tablepos:第一个比较点坐标所在table编号
⊙ 说明:比较点写在table中,两个连续的table数据组成一个2d坐标,每到达一个比较位置op反转一次。
示意中蓝色段表示op开启,各类常用插补运动均支持比较,比较点坐标一定的要准确,否则会影响后面点的比较。
b.hw_pswitch2(26, opnum, opstate, maxerr, num, tablepos, [ophwtimeus, ophwtimes, hwcyctimeus])
mode:26,二维的比较模式
opnum:对应的输出口
opstate:第一个比较点的输出状态
maxerr:比较位置每个轴左右的脉冲偏差,进入偏差范围后开始比较,此参数不能写0
num:table里面存储的比较点坐标个数
tablepos:第一个比较点坐标所在table编号
[以下参数和hw_timer二选一,hw_timer单独写可以动态调整参数]
ophwtimeus:脉冲时间
ophwtimes:脉冲个数
hwcyctimeus:脉冲周期
⊙ 说明:比较点写在table中,两个连续的table数据组成一个2d坐标,每到达一个比较位置触发op,每个比较点op反转的次数和反转周期由hw_timer设置;到达下一个table位置,op再次触发。类似模式7和模式36。
(12) mode= 35、36:3d比较
3d比较: 每3个连续table存储一个xyz坐标点,实现多点比较,每个比较点输出状态翻转。
25和35模式类似;26和36模式类似,需与hw_timer复用。
a.hw_pswitch2(35, opnum, opstate, maxerr, num, tablepos)
mode:35,三维的比较模式
opnum:对应的输出口
opstate:第一个比较点的输出状态
maxerr:比较位置每个轴左右的脉冲偏差,进入偏差范围后开始比较,此参数不能写0
num:table里面存储的比较点坐标个数
tablepos:第一个比较点坐标所在table编号
⊙ 说明:比较点写在table中,三个连续的table数据组成一个3d坐标,每到达一个比较位置op反转一次。 类似模式25。
b.hw_pswitch2(36, opnum, opstate, maxerr, num, tablepos, [ophwtimeus, ophwtimes, hwcyctimeus])
mode:35,36,三维的比较模式
opnum:对应的输出口
opstate:第一个比较点的输出状态
maxerr:比较位置每个轴左右的脉冲偏差,进入偏差范围后开始比较,此参数不能写0
num:table里面存储的比较点坐标个数
tablepos:第一个比较点坐标所在table编号
[以下参数和hw_timer二选一,hw_timer单独写可以动态调整参数]
ophwtimeus:脉冲时间
ophwtimes:脉冲个数
hwcyctimeus:脉冲周期
⊙ 说明:比较点写在table中,三个连续的table数据组成一个3d坐标,每到达一个比较位置触发op,每个比较点op反转的次数和反转周期由hw_timer设置;到达下一个table位置,op再次触发。类似模式26和模式7。
→maxerr脉冲偏差说明
2d模式下设置xy坐标需要准确,轴运动不到准确的table比较点时将无法触发,3d模式同理。故多维比较模式引入一个特殊参数maxerr位置范围偏差,左右范围均有效。
即实际位置坐标点与table的比较点的差值在maxerr范围内便有效,触发时刻为当前位置进入比较点的触发范围内便触发比较,比较范围示意图如下,注意:maxerr的单位为脉冲数的偏差,不是距离的偏差。
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”使用的模式,脉冲输出的宽度由“hw_timer”指令指定。
绝对坐标是指当前位置相对于原点的坐标,矢量坐标是指,轴回原点之后,运动到当前位置的总距离,矢量坐标只会不断累计,使用前最好手动清零。
例如轴0回零后先正向运动200,在反向运动100,此时的绝对坐标为100,但矢量坐标为300,若执行两轴插补运动,则矢量坐标为当前插补运动的合成轨迹的矢量,故矢量比较的模式,支持多轴的场合。
⊙带编码器反馈自动比较mpos,不带编码器比较dpos。
三、调试例程 以上模式的实现例程如下,可以自由触发不同的模式,并打开示波器,直观的观察pso的输出随运动的变化情况。
⊙注意: 调用“hw_pswitch2”触发比较输出前,先发送“hw_pswitch2(2)”停止并删除没有完成的比较点,防止本次的输出异常。并且使用了硬件定时器“hw_timer”之后,建议发送“hw_timer(0)”关闭定时器。
例程如下:
rapidstop(2) wait  idle(0) wait  idle(1) wait  idle(2) '基础轴参数设置 base(0,1,2)  '选择xy轴 atype=1,1,1  '1-脉冲轴类型,比较dpos;4-带编码器反馈轴类型,比较编码器的反馈位置mpos units=100,100,100 speed=100,100,100 accel=1000,1000,1000 decel=1000,1000,1000 merge=on,on,on sramp=50,50,50 's曲线速度平滑 op(0,off)  '初始化关闭pso使用的输出口 vector_moved = 0 '插补矢量距离清0 global g_cmd  '比较模式选择 g_cmd = 0 while 1  '测试所有比较模式 if g_cmd =  1 then g_cmd = 0 clean_pos()  '位置清零 test_mode1()  '调用比较  elseif g_cmd =  3 then g_cmd = 0 clean_pos() test_mode3() elseif g_cmd =  4 then  g_cmd = 0 clean_pos() test_mode4()  elseif g_cmd =  5 then  g_cmd = 0 clean_pos() test_mode5() elseif g_cmd =  6 then  g_cmd = 0 clean_pos() test_mode6() elseif g_cmd =  7 then  g_cmd = 0 clean_pos() test_mode7()  elseif g_cmd =  25 then  g_cmd = 0 clean_pos() test_mode25() elseif g_cmd =  26 then  g_cmd = 0 clean_pos() test_mode26() elseif g_cmd =  35 then  g_cmd = 0 clean_pos() test_mode35() elseif g_cmd =  36 then  g_cmd = 0 clean_pos() test_mode36() endif wend global sub clean_pos() rapidstop(2)  '轴停止 wait  idle(0) wait  idle(1) wait  idle(2)  dpos=0,0,0  '将当前位置设置为0 mpos=0,0,0 op(0,off)  '输出关闭 end sub global sub test_mode1() table(0,100,150,250,300,400,450)  base(0) 'hw_pswitch2有自己的缓冲区, 当前轴目前还剩多大的缓冲区可以通过?hw_pswitch2(n)查询 hw_pswitch2(2)  '停止并删除没有完成的比较点 hw_pswitch2(1, 0, 1, 0, 5,1)  '启动比较输出,模式1,输出口0,第一个比较点输出on,table地址0-5,正向运动比较 trigger  '触发示波器  move(500) end sub global sub test_mode3() table(0,100,150,250,300,400,450)  hw_timer(0) base(0) vector_moved(0) = 0  '设置当前的矢量位置 hw_pswitch2(2)  '停止并删除没有完成的比较点 '矢量的变化不用考虑单个电机方向的变化, 矢量永远是增大的 hw_pswitch2(3, 0, 1, 0, 5) '启动比较输出,模式3,输出口0,第一个比较点输出on,table地址0-5(矢量坐标) trigger  '触发示波器抓图 moveabs(300,200) moveabs(400,0) end sub global sub test_mode4()  hw_timer(0) base(0) vector_moved(0) = 0  '设置当前的矢量位置 hw_pswitch2(2)  '停止并删除没有完成的比较点 hw_pswitch2(4, 0, 1, 100)  '启动比较输出,模式4,输出口0,第一个比较点输出on,从矢量位置100开始比较,仅比较1次就结束  trigger  '触发示波器抓图 moveabs(100,120) end sub global sub test_mode5()  hw_timer(0) base(0) vector_moved(0) = 0  '设置当前的矢量位置, 只能在电机idle的情况下设置 hw_pswitch2(2)  '停止并删除没有完成的比较点 hw_pswitch2(5, 0, 1, 50, 8, 30, 5)  '启动比较输出,模式5,输出口0,第一个比较点输出on,从矢量位置50开始比较,比较8次,间隔距离30触发比较,比较触发后运动距离5关闭 trigger  '触发示波器抓图 moveabs(100,100) moveabs(0, 200) end sub global sub test_mode6() hw_timer(0) base(0) vector_moved(0) = 0  '设置当前的矢量位置, 只能在电机idle的情况下设置 hw_pswitch2(2)  '停止并删除没有完成的比较点  hw_pswitch2(6, 0, 1, 50, 15, 30) '启动比较输出,模式6,输出口0,第一个比较点输出on,从矢量位置50开始比较,比较15次,间隔距离30触发比较 hw_timer(2, 100000, 60000, 1, off, 0) '有效电平时间60000us,每次触发输出1次 trigger  '触发示波器抓图 moveabs(100,100) '走一个矩形 moveabs(0, 200) moveabs(-100,100) moveabs(0, 0) wait idle hw_timer(0)  '停止硬件定时器 end sub global sub test_mode7() table(0,100,150,250,300,400,450) base(0) vector_moved(0) = 0  '设置当前的矢量位置, 只能在电机idle的情况下设置 hw_pswitch2(2)  '停止并删除没有完成的比较点  hw_pswitch2(7, 0, 1, 0, 5) '启动比较输出,模式7,输出口0,第一个比较点输出on,table地址0-5(矢量坐标) hw_timer(2, 50000, 30000, 2, off, 0)  '有效电平时间30000us,每次触发输出2次  trigger  '触发示波器抓图 moveabs(200,200) moveabs(300,0) wait idle hw_timer(0)  '停止硬件定时器 end sub global sub test_mode25() table(0,  0,0,  50,50,  100,100,  50,150,  0,200,  -50,150,  -100,100,  -50,50)  hw_pswitch2(2)  '停止并删除没有完成的比较点  hw_pswitch2(25, 0, 0, 10, 8, 0) '启动比较输出,模式25,输出口0,第一个比较点输出on,脉冲偏差10,table地址0-15,8个坐标 trigger  '触发示波器抓图 moveabs(100,100)  '走一个矩形 moveabs(0, 200) moveabs(-100,100) moveabs(0, 0) end sub global sub test_mode26() table(0,  0,0,  50,50, 100,100,  50,150,  0,200,  -50,150,  -100,100,  -50,50) hw_timer(0) hw_pswitch2(2)  '停止并删除没有完成的比较点  hw_pswitch2(26, 0, 1, 10, 8, 0) '启动比较输出,模式26,输出口0,第一个比较点输出on,脉冲偏差10,table地址0-15,8个坐标 hw_timer(2, 100000, 50000, 2, off, 0) '有效电平时间50000us,每次触发输出2次  trigger  '触发示波器抓图 moveabs(100,100) '走一个矩形 moveabs(0, 200) moveabs(-100,100) moveabs(0, 0)  wait idle hw_timer(0)  '停止硬件定时器 end sub global sub test_mode35() table(0, 20,20,20, 40,40,40, 70,70,70, 100,100,100, 140,140,140, 180,180,180)  base(0,1,2) hw_pswitch2(2)  '停止并删除没有完成的比较点  hw_pswitch2(35, 0, 1, 10, 6, 0)  '启动比较输出,模式35,输出口0,第一个比较点输出on,脉冲偏差10,table地址0-18,6个坐标  trigger  '触发示波器抓图 moveabs(200,200,200)  '走直线 end sub global sub test_mode36() table(0, 20,20,20, 40,40,40, 70,70,70, 100,100,100, 140,140,140, 180,180,180) base(0,1,2) hw_pswitch2(2)  '停止并删除没有完成的比较点  hw_timer(2, 100000, 50000, 1, off, 0)  '有效电平时间50000us,每次触发输出1次 hw_pswitch2(36, 0, 1, 10, 6, 0)  '启动比较输出,模式36,输出口0,第一个比较点输出on,脉冲偏差10,table地址0-18,6个坐标  trigger  '触发示波器抓图 moveabs(200,200,200) '走直线 wait idle hw_timer(0)  '停止硬件定时器 end sub
四、不同模式波形 1.mode=1 (1)比较点坐标: 6个
table(0, 100,150,250,300,400,450)
(2)启动比较输出: 模式1,输出口0,第一个比较点输出on,table地址0-5,正向运动比较。
hw_pswitch2(1, 0, 1, 0, 5, 1)
(3)示波器采样波形: 轴0每到达一个比较的位置,op(0)触发反转一次,直到所有的table的比较完成,op保持最后一次反转的状态。
xy模式下能明显看出输出随轴0运动位置的变化。
2.mode=3 (1)比较点坐标: 6个矢量位置
table(0, 100,150,250,300,400,450)
(2)启动比较输出: 模式3,输出口0,第一个比较点输出on,table地址0-5(矢量坐标)。
hw_pswitch2(3, 0, 1, 0, 5)
(3)示波器采样波形: 轴0轴1插补的矢量合成位置vector_moved(0)每到达一个比较的位置,op(0)触发反转一次,,直到所有的table的比较完成,op保持最后一次反转的状态。
xyz模式下能明显看出输出随插补运动位置的变化。
3.mode=4 不使用table。
(1)启动比较输出: 模式4,输出口0,第一个比较点输出on,比较点矢量坐标100。
hw_pswitch2(4, 0, 1, 100)
(2)示波器采样波形: 轴0轴1插补的矢量合成位置vector_moved(0)到达100矢量比较位置,op(0)触发反转一次,比较完成。
xyz模式下能明显看出输出随插补运动位置的变化。
4.mode=5 不使用table。
(1)启动比较输出: 模式5,输出口0,第一个比较点输出on,从矢量位置50开始比较,比较8次,间隔距离30触发比较,比较触发后运动距离5关闭。
hw_pswitch2(5, 0, 1, 50, 8, 30, 5)
(2)示波器采样波形: 轴0轴1插补的矢量合成位置vector_moved(0)到达一个矢量比较位置50,op(0)触发反转一次,后续每间隔30比较一次打开op,再运动5个距离关闭op,重复比较8次后结束比较。
xyz模式下能明显看出输出随插补运动位置的变化。
5.mode=6 不使用table。
(1)启动比较输出: 模式6,输出口0,第一个比较点输出on,从矢量位置50开始比较,比较15次,间隔距离30触发比较
hw_pswitch2(6, 0, 1, 50, 15, 30)
(2)输出脉冲宽度: 硬件定时周期100000us,输出脉冲的宽度为60000us,每次比较输出1次脉冲。
hw_timer(2, 100000, 60000, 1, off, 0)
(3)示波器采样波形: 轴0轴1插补的矢量合成位置vector_moved(0)到达一个矢量比较位置50,op(0)触发反转一次,后续每间隔30比较一次打开op,60000us后关闭op,重复比较15次后结束比较。
xyz模式下能明显看出输出随插补运动位置的变化。
6.mode=7 (1)比较点坐标: 6个矢量位置
table(0 , 100,150,250,300,400,450)
(2)启动比较输出: 模式7,输出口0,第一个比较点输出on,table地址0-5(矢量坐标)
hw_pswitch2(7, 0, 1, 0, 5)
(3)输出脉冲宽度: 硬件定时周期50000us,输出脉冲的宽度为30000us,每次比较输出2次脉冲。
hw_timer(2, 50000, 30000, 2, off, 0)
(4)示波器采样波形: 轴0轴1插补的矢量合成位置vector_moved(0)每到达一个table位置op(0)触发一次,每次触发输出 2次周期50000us,有效输出30000us的脉冲波后关闭op,直到所有的table点都比较完成。
xyz模式下能明显看出输出随插补运动位置的变化。
7.mode=25 (1)比较点坐标: 8个,占用16个table
table(0, 0,0,50,50,100,100,50,150,0,200,-50,150,-100,100,-50,50)
(2)启动比较输出: 模式25,输出口0,第一个比较点输出on,脉冲偏差10,table地址0-15,8个坐标。
hw_pswitch2(25, 0, 1, 10, 8, 0)
(3)示波器采样波形: 轴0轴1每到达一个比较的xy位置,op(0)触发反转一次,直到所有的table点比较完成,op保持最后一次反转的状态。
xyz模式下能明显看出输出随插补运动位置的变化。
8.mode=26 (1)比较点坐标: 8个,占用16个table
table(0,  0, 0, 50, 50, 100,100, 50 , 150 , 0 , 200 , -50 , 150 , -100 , 100 , -50 , 50)
(2)启动比较输出: 模式26,输出口0,第一个比较点输出on,脉冲偏差10,table地址0-15,8个坐标。
hw_pswitch2(26, 0, 1, 10, 8, 0)
(3)输出脉冲宽度: 硬件定时周期100000us,输出脉冲的宽度为50000us,每次比较输出2次脉冲。
hw_timer(2, 100000, 50000, 2, off, 0)
(4)示波器采样波形: 轴0轴1每到达一个table的比较xy位置,op(0)触发,每次触发输出2次周期100000us,输出脉冲的宽度为50000us的脉冲波,直到所有的table点比较完成,op保持最后一次反转的状态。
xyz模式下能明显看出输出随插补运动位置的变化。
9.mode=35 (1)比较点坐标: 6个,占用18个table
table(0,20 ,20 ,20,40 ,40 ,40,70 ,70 ,70,100 ,100 ,100,140,140,140, 180,180,180)
(2)启动比较输出: 模式35,输出口0,第一个比较点输出on,脉冲偏差10,table地址0-18,6个坐标
hw_pswitch2(35, 0, 1, 10, 6, 0)
(3)输出脉冲宽度: 硬件定时周期100000us,输出脉冲的宽度为50000us,每次比较输出1次脉冲。
hw_timer(2, 100000, 50000, 1, off, 0) 
(4)示波器采样波形: 轴0轴1轴2每到达一个table的比较xyz位置,op(0)触发反转一次,直到所有的table点比较完成,op保持最后一次反转的状态。
10.mode=36 (1)比较点坐标: 6个,占用18个table
table(0 ,  20 , 20 , 20, 40 , 40 , 40 , 70 , 70 , 70, 100 , 100 , 100, 140 , 140 , 1 40, 180 , 180 , 180)
(2)启动比较输出: 模式36,输出口0,第一个比较点输出on,脉冲偏差10,table地址0-18,6个坐标。
hw_pswitch2(36, 0, 1, 10, 6, 0)
(3)输出脉冲宽度: 硬件定时周期100000us,输出脉冲的宽度为50000us,每次比较输出1次脉冲。
hw_timer(2, 100000, 50000, 1, off, 0)
(4)示波器采样波形: 轴0轴1轴2每到达一个table的比较xyz位置,op(0)触发,每次触发输出1次周期100000us,输出脉冲的宽度为50000us的脉冲波,直到所有的table点比较完成,op保持最后一次反转的状态。
本次,正运动技术运动控制器pso位置同步输出(二):pso模式详解, 就分享到这里。


NI扩展其PXI平台的功能
全球十大模拟IC厂商销售额排名:德州仪器的龙头地位稳如泰山
汽车天窗马达ECU通讯系统设计
污水流量计的功能说明及技术参数
疫情下的家电行业,技术革新是首要任务
运动控制器PSO位置同步输出(二):PSO模式详解
储能系统ESS的技术新趋势
三星GalaxyS10+成本曝光 仅零售价的42%
MP3支持的常见音频格式简介
基于Zynq SoC平台的产品以及实现盈利激增
薄膜在线检测系统——薄膜质量的“守门员”
董明珠:做芯片投入500亿,我没有理由做不成!
数据中心UPS配置的蓄电池维护要点
过零触发电路怎样检测过零的?常用的过零检测电路
区块链:2017年没抓住机会,现在迎头而上为时未晚
函数的可视化与Matlab作
从技术学习和实际运用的角度来看C/C++和Java的区别
第二代iPad被苹果全球范围内标记为过时产品,彻底淘汰
10.3.8 拓扑绝缘体(TI)∈《集成电路产业全书》
Ameya360:SiC模块的特征 Sic的电路构造