发布于 2009-04-05 00:01:06
0楼
“3.从广义上讲,OB1也是间隔的,只不过间隔周期不固定,因此原先在OB1中执行的程序在中断(尤其是间隔较短的中断,如5MS)中处理,是有好处的,稳定,但这种中断不宜太多,最好是一层中断比较好处理,而且逻辑处理最好在同一个优先级的中断处理程序中,I/O的刷新最好与中断同步。”
1。如果只用一种中断OB(即所有程序都写在一个中断OB里)的话,是不是就意味着不但没有减少扫描周期,反而增加了?OB1的时间+程序量扫描时间(中断OB时间)??
2。OB1是主程序,使用不同的中断OB,由于其优先级不同,使得需要快速响应的信号,比如开关量放在OB优先级高,中断扫描时间短的OB里,模拟量放在优先级低,中断扫描时间较长的OB里,这样就会优先处理开关量,然后再处理相对响应较慢的模拟量。这是否就是中断OB的好处?
3。如果按照斑竹提供的思路,那么使用OB1里做程序肯定要比使用中断OB做程序的总的程序扫描时间最低,是这样吧。因为中断OB的扫描周期应该都是大于其内程序的执行时间的,否则就会因超时而报错。
因此综上所述:
1。降低OB1的扫描周期的前提应该是为了降低CPU负荷;但往往OB1与中断OB的使用对于扫描周期的影响应该是微小的。可能意义在于这方面的考虑并不大;
2。降低OB1的扫描周期的办法就是少使用中断OB;少使用循环跳转命令,因为这样会使得OB1中重复,循环的去判断,重复的执行相应扫描时间;
3。我想降低OB1扫描周期的底线应该是全部使用机器语言的编程方式,对于S7应该是使用STL的编程方式。这样会减少程序量;但这样的做法显然会降低程序的可读性和将来维护的方便性。
不以物喜,不以己悲;
达则兼济天下,穷则独善其身。