首页 正运动技术 正文

回复

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

正运动技术 浏览:21 回复:0 收藏

正运动技术  2025-02-13 11:40

如果需要通过硬件定时器对输出口进行操作,那么下面这个指令一定要来学习!


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

09614cdf39a7fd59b609c46d72333912.png

(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)测试结果

8966dd50262ff424e08b42e98890ace1.png




我知道了