对运动控制和脉冲比较陌生,在此占用一贴,简述一下想法,请众侠给点意见。
————————
收到一个要求,用200smart连续发送脉冲并能修改脉冲频率。
200smart中 发送组态发送PTO时,需要脉冲数量和频率值,连续发送需要再次启动PLS指令;
PWM可以连续发送脉冲,也能同步更新,不过以整数+微秒单位,频率有些许跳动, 比如10us的脉宽,频率为1M/10=100.00K,1M/11=90.91K, 1M/20=50.00K,1M/21=47.62K,1M/22=45.45K。
使用运动组态,用MAN块,可能会受组态的加减速时间影响。
初步设想:有两个方案,一是用PTO方式,使用定时中断(10ms)重启PLS,变更的最小时间间隙10ms
(二是用PTO完成中断,连续重发,需要定一个基本的时间片段,根据频率计算脉冲数量,因为整数的关系,时间片段一直是变化的。先尝试了第一种方案)
中断事件内两个作用,1,看给定频率值是否发生变化,发生变化,关断PTO,组态新数据,重发PLS;二,如果频率值没有变化,确定给定的脉冲数量(按最大数量给定 2^31-1)发完时,能够有效重发,A使用完成中断重发,B提前判断结束后重发。粗暴一点,直接用了B选项。
为了测试变化,程序里对频率做了一个斜坡变化,PTO输出Q0.0接到I0.0,用做高速计数,用一个250ms定时中断,乘以4,计算输入点的频率。
中断中,对PTO重发的处理:
A,SM67.7复位,执行PLS,结束当前脉冲串,
B,对SMB67,SMW68和SMD72重新组态,执行PLS,发送新脉冲串
图片中对给定VW2和高速计数器数据计算的频率VW28


ZZZZ.zip
对于这种连续PTO改变频率的要求,请众侠指点一下最佳方案的思路。