恭喜,你发布的帖子
发布于 2023-11-29 23:35:29
38楼
你这话我看了三遍。
一、“OB30是有多少程序,就执行多少时间,不是固定时间宽度的,只是OB30的触发时间间隔是根据设定固定的。”
OB30里程序的执行时间必须短于循环周期,否则CPU会报错。所以,假设OB30的循环周期是6秒,里面的程序的执行时间不能超过6秒,比如可以是200ms,但是不能是7s,是这样吗?
二、“其次,OB30执行程序的时间是会计入扫描周期的,增加扫描周期的时长。”比如OB30里的程序的执行时间是350ms,而OB1的扫描周期是150ms,加到一起,系统的扫描周期是500ms,是这样吗?
只说对了一部分
OB1与OB30都是有看门狗的,当然机制略有不同,详细看手册,不罗嗦了。
简单地说,中断程序的执行延长了OB1的执行时间,但OB1总执行时间,即OB1自身的程序执行时间与中断程序执行的时间,包括系统程序执行的时间,加起来这个总执行时间是不能超过看门狗时间的,明白吗?
所以你理解的例子,看上去对,本质上不对。
反过来,再问一句,OB1为啥不能固定周期呢?博途的的CPU属性里我设置最小扫描周期为20ms,而我确保实际的所有程序的执行最多只要10ms,这时候OB1的20ms等间隔周期与OB30的20ms定时中断在程序等间隔执行上有多大区别?这时PID放在OB1里执行不行吗?
请填写推广理由:
分享
只看
楼主