您现在所在的是:

运动控制

回帖:0个,阅读:46 [上一页] [1] [下一页]
198
运动控制小正
文章数:124
年度积分:198
历史总积分:198
注册时间:2022/9/5
发站内信
发表于:2025/2/13 11:27:49
#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编辑过]

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2025 Gkong.com, All Rights Reserved

31.2002