回复:200SMART接手轮程序问题

laoguren1122

  • 帖子

    8
  • 精华

    0
  • 被关注

    4

论坛等级:新手

注册时间:2014-09-21

普通 普通 如何晋级?

发布于 2019-11-14 17:21:41

12楼

展开查看
以下是引用芳季在2019-11-12 14:52:03的发言 >10楼

问题不在准不准时这里,而是在每一个时间片里面能不能把企图的脉冲数发完?发多了怎么办,发不够怎么办?多了和不够都好,下一个时间片还是会来的。新的任务又加入了。

差值和新任务加起来,计算预算下一个时间片要用多大的频率发完这些脉冲?预算归预算,扫描周期的不确定性确定了你一定不能好好地把脉冲发完,总是多了或者少了。【这一点与用pls指令的极为不同,用pls指令的说发完就发完。只要在时间片里面提早一个很小的一个时间单位完成脉冲,那么下一个时间片里面就不带有上次的残留脉冲。假如计算出需要2345赫兹的脉冲频率发送12个脉冲,那么,设定pls的时候就使用2350赫兹发12个脉冲,那么总可以在每次中断内完成所有脉冲任务。可是库的man指令就不行。

man指令由于扫描的原因总是迟到。在时间片里面2345赫兹发12个脉冲可能下一个时间片到来的时候正在发地13个脉冲或者第12个脉冲还没发完。那么这个脉冲可能算不出来,硬件自己都不知道,就不能在下一个时间片里面加入误差。所以误差又要连累到再下一个时间片了。

还有一个致命的问题。除法得到的速度,脉冲数除以时间片单位,然后取整。假如10毫秒里面数到18个脉冲……那么频率是多少?18×1000÷10=1800赫兹。那么1800将会给到man指令的speed。假如数到17个脉冲呢?那么就把1700作为给定。问题来了。18个脉冲和17个脉冲两种结果之间的跳动,对于高速计数器来说是很平常的事情,但是1800和1700作为给定,就让脉冲偏差了100个。本来理论上是匀速的1800赫兹最适合的,但是一旦出现了1700的给定之后,下一个时间片就要欠了100个脉冲,再加上理论的1800就是1900个脉冲了。当你用1900作为给定的时候,下一个时间片就超了100多个脉冲,然后下一个时间片又要把给定调整为1690。结果震荡发生了。最后可能没有脉冲了,都回不来,十几二十个回合才能停住在目标位置。

哎。

此情此境,大家又会想到pid了……瘘子大了。

果然想的高深,但是手轮应该很简单的功能

评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200 SMART

共有8941条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。