菜鸟提问:
上图使用simotion task profiler 采集的图片
如果是background的实际运行时间很小的话,在一个伺服周期内,background会运行很多次吗?
background的时间分配也不起作用。我的background的时间分配如下图所示
为什么设置成1和20通过profiler看没什么变化呢?
大虾:
background是在自由时间循环执行的,所有才有这么多脉冲吧
菜鸟:
那在一个伺服周期内,background可能会运行很多遍?
大虾:
一个周期剩余的时间都是用户程序的自由时间,用来循环执行BACKGROUND和MOTION TASK,你给BACKGROUND分配1或者20个SERVO CYCLE对前面的**任务没影响,*多就是会影响和MOTION TASK任务之间的时间分配,结合你的图来看,应该是给任务执行系统分配的时候,把任务都给了BACKGROUND,个人理解,没做实验验证。
菜鸟:
谢谢。
这个如何通过实验进行验证呢?我手头有个一simotion我可以测试一下。
另外在《SIMOTION 的任务执行机制及系统时钟》提到的自由执行任务的分配
运行时间是指时间片,而不是伺服周期吧。
侠客:
我觉得是这样的,BACKGROUND等于PLC中的OB1,OB1在每个扫描周期都运行一次,BACKGUORND也是这样循环运行的,需要注意BACKGUOND是非周期循环运行的,是循环运行但是循环的时间在于你给BACKGROUND里面分配的PROGRAM决定的,所以你给BACKGROUND分配1个SERVO CYCLE或者20个SERVO CYCLE目前是看不出区别的,因为你的BACKGROUND中的程序指令太短,1个SERVO CYCLE都绰绰有余了。除非你的程序写的足够长,就能看出区别了。