登录
首页 运动控制 运动控制
回帖 发帖
正文

主题:【正运动技术】如何通过硬件定时器对输出口进行操作?

点击:42 回复:0

如果需要通过硬件定时器对输出口进行操作,那么下面这个指令一定要来学习!
(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:输出口编号,必须能硬件比较输出的口。
附件 示意图.jpg
(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)测试结果
附件 测试结果.jpg
如需了解更多详情内容,请点击→“正运动技术
最后修改:2025/2/13 11:28:08
25-02-13 11:27

工控新闻

更多新闻资讯