0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

运动控制器PSO位置同步输出(二):PSO模式详解

正运动技术 来源:正运动技术 作者:正运动技术 2022-07-21 16:26 次阅读

本节我们主要去讲解一下多种PSO模式原理和使用的讲解,用户可根据实际需求灵活选择触发模式。

poYBAGLZBeGAZuxyAAFAKp19gj4685.pngZMC460N双总线控制器


一、硬件说明

硬件选型的首要要求是支持PSO功能,再分析PSO的应用场合和轴数等选择具体的型号。本例以ZMC460N双总线运动控制器为例展开介绍。

PSO功能用于控制激光或点胶阀的高速开/关,直线插补和平面圆弧插补功能用于完成加工轨迹,连续插补功能用于让多段插补的速度连续,提供加工的效率。

ZMC460N双总线控制器

ZMC460N双总线控制器是正运动技术推出的新一代网络60轴运动控制器(支持EtherCAT总线轴+RTEX总线轴+脉冲轴混合使用),自带六个脉冲轴接口(包含差分脉冲输出和差分编码器输入),通用输出口支持配置为单端脉冲输出,通用输入口支持配置成单端编码器输入。脉冲输出频率最大可达10MHZ,EtherCAT总线的通讯周期最快可达250微秒。

支持12路PSO输出,输出口独立,支持12路同时输出,每个系统周期可比较输出多次,应用场景更为丰富。

poYBAGLZBxCAXJ-uAAkOWXIrkEU599.pngZMC460N双总线控制器架构图

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模式一览表:

poYBAGLZB4eAIMQ_AAClkGJc5lg658.png

B.HW_PSWITCH2的模式可以总结为两大类:

a.采用TABLE表存储的数据点来进行比较,脉冲宽度由数据的间隔和运动速度共同决定,所以比较前先要将数据写入“TABLE”中,然后再调用。

相关模式:1,3,7,25,26,35,36。

poYBAGLZB5yAdUl_AAA84pOopBs408.png

b.等距周期比较,无需借助“TABLE”,“HW_PSWITCH2”设置好触发的比较的位置、比较周期数,“HW_TIMER'设置每次触发比较输出脉冲的宽度,这类模式参数设置相对多一些,多个指令的组合也可实现变化距离的输出。

相关模式:6。模式5既不需要TABLE也不需要“HW_TIMER”便可实现等距周期比较。、

pYYBAGLZB7CAST06AACLFvzL76E449.png

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反转一次。

pYYBAGLZB8GAVPr6AACl08qmpJE358.png

(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”初始值。

poYBAGLZB9OAaBENAACqzfc8ciM491.png

(7) Mode=4: 矢量比较方式,单个比较点

HW_PSWITCH2(4, opnum, opstate, vectstart)

mode:4-启动比较器

opnum:对应的输出口

opstate:第一个比较点的输出状态

vectstart:比较点VECTOR_MOVED当前运动距离

⊙ 说明: 到达指令设置的一个比较矢量位置OP反转,比较结束。

pYYBAGLZCBCAFkdmAABQoRjYiWY917.png

(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距离后关闭信号,等待下一周期的触发。

poYBAGLZCGSAYMF3AABzVkrqJ0w055.png

(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”周期完成等待下一周期的触发。

poYBAGLZCHuACUJGAACWudqAmOk956.png

(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再次触发。

poYBAGLZCIuAFP3PAAGaTztimX0098.png

(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开启,各类常用插补运动均支持比较,比较点坐标一定的要准确,否则会影响后面点的比较。

poYBAGLZCJqAFOOoAAECLrIH-xI827.png

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。

poYBAGLZCLSACsx2AAExqWfLuYE998.png

(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。

pYYBAGLZCNGAKVrRAAGnraeE1uI336.png

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。

poYBAGLZCN6AFRTzAAIp58ggM-w713.png

→maxerr脉冲偏差说明

2D模式下设置XY坐标需要准确,轴运动不到准确的TABLE比较点时将无法触发,3D模式同理。故多维比较模式引入一个特殊参数maxerr位置范围偏差,左右范围均有效。

即实际位置坐标点与TABLE的比较点的差值在maxerr范围内便有效,触发时刻为当前位置进入比较点的触发范围内便触发比较,比较范围示意图如下,注意:maxerr的单位为脉冲数的偏差,不是距离的偏差。

poYBAGLZCPyASkDWAAB0n1aQU2Q210.png

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:输出口编号,必须能硬件比较输出的口

⊙ 说明:参数设置可参考下方示意图,此指令的效果是固定时间周期输出,设置每个周期的有效输出的时间和重复输出的次数。

poYBAGLZCXaAOuCdAAFmppKKXc0760.png

→不同模式特点的比较:

pYYBAGLZCYCALwiPAABXbnaksP4845.png

配合“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保持最后一次反转的状态。

poYBAGLZCqiAVNvYAACOB9HZ-i0210.png

XY模式下能明显看出输出随轴0运动位置的变化。

poYBAGLZCraAe2RhAAB1FeQ64Os919.png

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保持最后一次反转的状态。

pYYBAGLZCyCAC7bQAAC0qdxoVFE757.png

XYZ模式下能明显看出输出随插补运动位置的变化。

pYYBAGLZCyqAH6VaAACf8ngIIXQ783.png

3.Mode=4

不使用TABLE。

(1)启动比较输出: 模式4,输出口0,第一个比较点输出ON,比较点矢量坐标100。

HW_PSWITCH2(4, 0, 1, 100)

(2)示波器采样波形: 轴0轴1插补的矢量合成位置VECTOR_MOVED(0)到达100矢量比较位置,OP(0)触发反转一次,比较完成。

pYYBAGLZCz-ATsMIAACRRqc4KJM042.png

XYZ模式下能明显看出输出随插补运动位置的变化。

poYBAGLZC0mAC790AACGYC2lHPk999.png

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次后结束比较。

pYYBAGLZC1uANG7tAAC5qSCgBCc802.png

XYZ模式下能明显看出输出随插补运动位置的变化。

poYBAGLZC2iAXva9AACb8Xm-0zc086.png

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次后结束比较。

poYBAGLZC3WAL4kyAACzI4FR6Yk916.png

XYZ模式下能明显看出输出随插补运动位置的变化。

pYYBAGLZC4KAUpvJAACgRMf0Vmk986.png

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点都比较完成。

pYYBAGLZC5GAWdJTAACvTZy0nX8817.png

XYZ模式下能明显看出输出随插补运动位置的变化。

poYBAGLZC5eAaiVMAACir42-iCg410.png

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保持最后一次反转的状态。

pYYBAGLZC6eALnTKAACk4DQoOwI015.png

XYZ模式下能明显看出输出随插补运动位置的变化。

pYYBAGLZC66ALNa7AACPoYVvy-o203.png

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保持最后一次反转的状态。

pYYBAGLZC7qAJx8RAACrKtps0vc209.png

XYZ模式下能明显看出输出随插补运动位置的变化。

poYBAGLZC8KAeZGHAACUahWPk1s427.png

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保持最后一次反转的状态。

pYYBAGLZC82Ad_LzAACWpWoKx_8819.png

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保持最后一次反转的状态。

poYBAGLZC9OAKNr1AACXFrM94_E159.png

本次,正运动技术运动控制器PSO位置同步输出(二):PSO模式详解, 就分享到这里。

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 运动控制器
    +关注

    关注

    2

    文章

    411

    浏览量

    24825
  • 指令
    +关注

    关注

    1

    文章

    613

    浏览量

    35849
  • 总线控制器
    +关注

    关注

    0

    文章

    29

    浏览量

    12644
  • PSO
    PSO
    +关注

    关注

    0

    文章

    49

    浏览量

    12988
收藏 人收藏

    评论

    相关推荐

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

    ZMC406和ZMC460N这两款控制器同属高系列,功能强大,能满足多种场合的需求,支持直线插补、连续插补、任意圆弧插补、空间圆弧、螺旋插补、电子凸轮、电子齿轮、位置锁存、同步跟随、虚拟轴设置、硬件比较
    的头像 发表于 07-18 13:55 3156次阅读
    <b class='flag-5'>运动</b><b class='flag-5'>控制器</b><b class='flag-5'>PSO</b><b class='flag-5'>位置</b><b class='flag-5'>同步</b><b class='flag-5'>输出</b>(一):硬件平台与<b class='flag-5'>PSO</b>指令简介

    运动控制器PSO视觉飞拍与精准输出的C++开发(三):维/三维/多轴PSO输出

    本文主要讲解正运动技术多轴PSO维、三维比较输出两种模式
    的头像 发表于 03-08 14:27 2385次阅读
    <b class='flag-5'>运动</b><b class='flag-5'>控制器</b><b class='flag-5'>PSO</b>视觉飞拍与精准<b class='flag-5'>输出</b>的C++开发(三):<b class='flag-5'>二</b>维/三维/多轴<b class='flag-5'>PSO</b><b class='flag-5'>输出</b>

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

    运动技术EtherCAT控制卡在VS平台采用C#语言实现的各种PSO功能。
    的头像 发表于 01-03 09:50 1117次阅读
    单轴<b class='flag-5'>PSO</b>视觉飞拍与精准<b class='flag-5'>输出</b>:EtherCAT超高速实时<b class='flag-5'>运动</b><b class='flag-5'>控制</b>卡XPCIE1032H上位机C#开发(七)

    PSO算法在数控机床交流伺服系统PID参数优化中的应用

    PSO算法在数控机床交流伺服系统PID参数优化中的应用摘要:针对发展高精度数控机床的要求,在数控机床交流伺服控制系统中,本文提出了一种新的永磁同步电机控制策略,即利用粒子群算法对模糊
    发表于 05-17 11:38

    基于PSO优化BP神经网络的逆运动学求解研究_赵建强

    基于PSO优化BP神经网络的逆运动学求解研究_赵建强
    发表于 01-31 15:22 1次下载

    PSO动态优化的ADRC控制器研究_张墩利

    PSO动态优化的ADRC控制器研究_张墩利
    发表于 01-31 15:22 1次下载

    PSO输出脉冲同步激光时钟信号的功能解析

    很多激光只能基于内部时钟信号触发脉冲输出。这类激光不能通过一个外部信号(比如Aerotech的位置同步
    的头像 发表于 03-19 14:57 7240次阅读

    PSO位置同步输出在激光振镜加工中的应用

    今天,正运动小助手给大家分享一下运动控制器之ZMC420SCAN的位置同步输出
    的头像 发表于 02-24 11:48 3701次阅读
    <b class='flag-5'>PSO</b><b class='flag-5'>位置</b><b class='flag-5'>同步</b><b class='flag-5'>输出</b>在激光振镜加工中的应用

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

    硬件选型的首要要求是支持PSO功能,再分析PSO的应用场合和轴数等选择具体的型号。本例以ZMC460N双总线运动控制器为例展开介绍。 PSO
    的头像 发表于 07-26 18:12 2049次阅读
    高精度等间距<b class='flag-5'>二</b>维三维<b class='flag-5'>PSO</b><b class='flag-5'>输出</b>教程

    运动控制器多工位位置比较输出在转盘式视觉筛选设备中的应用

    本文通过ZMC430N运动控制器在转盘式视觉筛选设备中的方案应用,来深入了解正运动技术运动控制器配合机器视觉进行视觉飞拍、
    的头像 发表于 09-29 14:13 1.9w次阅读
    <b class='flag-5'>运动</b><b class='flag-5'>控制器</b>多工位<b class='flag-5'>位置</b>比较<b class='flag-5'>输出</b>在转盘式视觉筛选设备中的应用

    运动控制器八通道PSO的视觉飞拍与精准输出

    运动技术EtherCAT运动控制器多通道PSO在视觉飞拍与精准输出上的应用。
    的头像 发表于 02-17 09:35 1167次阅读
    <b class='flag-5'>运动</b><b class='flag-5'>控制器</b>八通道<b class='flag-5'>PSO</b>的视觉飞拍与精准<b class='flag-5'>输出</b>

    运动控制器PSO视觉飞拍与精准输出的C++开发(一):单轴PSO

    本文主要介绍正运动技术EtherCAT控制器在VS平台采用C++语言实现的各种PSO功能。
    的头像 发表于 02-23 15:29 936次阅读
    <b class='flag-5'>运动</b><b class='flag-5'>控制器</b><b class='flag-5'>PSO</b>视觉飞拍与精准<b class='flag-5'>输出</b>的C++开发(一):单轴<b class='flag-5'>PSO</b>

    运动控制器PSO视觉飞拍与精准输出的C++开发():多轴PSO等距/周期输出

    本文主要介绍正运动技术EtherCAT控制器在VS平台采用C++语言实现的各种PSO功能。正运动提供多种PSO
    的头像 发表于 03-02 14:35 910次阅读
    <b class='flag-5'>运动</b><b class='flag-5'>控制器</b><b class='flag-5'>PSO</b>视觉飞拍与精准<b class='flag-5'>输出</b>的C++开发(<b class='flag-5'>二</b>):多轴<b class='flag-5'>PSO</b>等距/周期<b class='flag-5'>输出</b>

    新型XPCIE总线接口的总线运动控制卡XPCIE1028

    运动技术的PCI Express总线运动控制卡XPCIE1028,具备位置锁存、多维高速硬件位置比较
    发表于 06-19 12:39 599次阅读
    新型XPCIE总线接口的总线<b class='flag-5'>运动</b><b class='flag-5'>控制</b>卡XPCIE1028

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

    本文主要讲解多轴PSO维、三维比较输出两种模式
    的头像 发表于 01-08 09:34 572次阅读
    <b class='flag-5'>二</b>维/三维的多轴<b class='flag-5'>PSO</b>视觉飞拍与精准<b class='flag-5'>输出</b>:EtherCAT超高速实时<b class='flag-5'>运动</b><b class='flag-5'>控制</b>卡XPCIE1032H上位机C#开发(八)