(1)硬件定时器指令介绍
MOVE_HWTIMER(mode, cyclonetime, optime, reptimes, opstate, opnum )
①mode:0-停止硬件定时器,1-动态修改参数(不修改启动设置),2-启动(启动后不可重复开启)
②cyclonetime:周期时间,us单位
③optime:有效时间,us单位
④reptimes:重复次数,启动模式,reptimes =0时,软关闭HW_TIMER,原来的脉冲没有完成的,会继续输出完成;-1时无限输出,除非主动关闭
⑤opstate:输出缺省状态,输出口变为非此状态后开始计时(输出口初始状态OFF。一般此参数设为OFF,将输出口变为ON状态后开始计时)
⑥opnum:输出口编号,必须能硬件比较输出的口。
(2)测试代码详情
'主函数逻辑
'轴参数初始化
BASE(0,1,2)
DPOS=0,0,0
MPOS=0,0,0
UNITS=100,100,100
MAX_SPEED=10000000,10000000,10000000
'停止线程和轴运动
STOPTASK 1
RAPIDSTOP(2)
WAIT IDLE
'清除控制器报警
DATUM(0)
'开始轨迹规划
'单在Sin曲线轨迹规划插入对输出口的操作指令
MySingleAxisSinOP(0,10,Pi/50,0,0.25)
END
'/******************************************************************************
'函数功能:单轴sin函数的轨迹+输出口多次输出
'函数模型:y=10*sin(Pi/50*x+0)
' 输 入 :AxisNum(运动的轴)
' 输 出 :
'具体需求:要求Sin函数每隔0.5个周期打开一次输出口,并且输出口的以脉冲的形式输出4个脉冲
'******************************************************************************/
GLOBAL SUB MySingSinOP_HwTime(AxisNum)
LOCAL lvTime,Space
lvTime=0
Space=0.5
BASE(AxisNum)
MOVE_OP(0,OFF)
MOVE_HWTIMER(0, 60000, 30000, 4, OFF, 0)
MOVE_HWTIMER(2, 60000, 30000, 4, OFF, 0)
WHILE 1
MOVE_PTABS(10,10*SIN(PI*lvTime/50+0))
'检测是否执行到Space个周期,执行到需要打开/关闭输出口,mod是求余指令
IF lvTime MOD (50) = 0THEN
MOVE_OP(0,ON)
ENDIF
lvTime=lvTime+1
DELAY(1)
WEND
ENDSUB
(3)测试结果
如需了解更多详情内容,请点击→“正运动技术”
最后修改:2025/2/13 11:28:08