恭喜,你发布的帖子
发布于 2022-07-02 09:25:30
14楼
本胖对循环的理解:OB1(主程序)当然是循环;定时中断也是循环;用定时器实现的循环同样是循环。
说个单片机的例子:
本胖当年(9x年)曾经搞过单片机,当时也只能用汇编,但大的思路却跟C的while差不多,就是主程序实际上就是一个大循环,PLC的OB1应该也是同样的思路。C
但同样还有定时中断在运行,比如:看门狗(现在流行的心跳,其实就是看门狗)。这种定时中断是硬件级别的,同样是循环。
那么,这两种循环有啥本质区别吗?软件上看就是优先级不同;硬件上看,其实还是优先级不同,高优先级的定时器(硬件,跟PLC的定时中断类似)中断,即使在CPU已经死机的情况下,仍然会产生中断。
SO,本胖曾经做过一个比较极端的程序架构:干脆不要主程序了,全部程序都放入100ms的定时中断里面。结果就是连抗干扰很垃圾的AT89C52都很抗干扰了!
上面说的不管具体是啥,本质上都是循环,只是实现的方法不同而已。
循环有两个方面,一个是死循环,程序在里面跳不出来,比如while,相当PLC的OB1;另一个是活循环,运行条件执行完就会跳出循环,比如for,相当于定时器T。至于定时中断,是属于另一个范畴,执行不执行完中断内容,也会跳出再进入。整体循环模式给人的感觉就是3种循环模式。至于单片机尽可能避免用while,否则会造成CPU死机,卡住不动,所以就有看门狗的介入。就本质而已,PLC的芯片和单片机芯片就是一家的。
请填写推广理由:
分享
只看
楼主