我是小庄,初入工控行业,目前正努力钻研、提高。即日起,借“塞北名驼”这个平台,不定期更新一些学习心得,借以鞭策自己。
一、中断组织块
组织块OB1用于循环程序处理。除了OB1外,S7中还提供了中断OB。一旦中断发生,操作系统将执行相应了中断OB内的用户程序,以便可以按已编写的动作对中断做出响应。下表汇总了不同类型的中断。
![0e0013261b52ad336fad396a97a1009d.png](https://img-blog.csdnimg.cn/img_convert/0e0013261b52ad336fad396a97a1009d.png)
表一 中断类型和应用
本文,详细介绍一下时间中断,即OB10-OB17的功能及用法。
二、时间中断组织块(OB10-OB17)
STEP7提供了多达8个OB(OB10-OB17),用作时间中断。时间中断可以在指定的日期执行,也可以配置成特定的时间间隔来执行。时间中断有以下两种触发方式:
· 在特定的时间执行一次
· 周期性地,指定启动时间和中断重复的时间间隔(如:每分、每小时、每天等),如图1所示。
![9275439eac59d66eca7ab4148bada925.png](https://img-blog.csdnimg.cn/img_convert/9275439eac59d66eca7ab4148bada925.png)
图1 时间中断的触发方式
并不是每个CPU都支持全部8个时间中断,如图1所示,CPU315-2DP仅支持OB10一个时间中断,具体情况可参考硬件手册。
1、启动时间中断
有三种方法来启动时间中断:
· 使用STEP7给时间中断分配参数,然后等待中断自动启动,图1即为该种方法;
· 调用SFC28(SET_TINT)和SFC30(ACT_TINT)设置并激活时间中断。
· 如图1中,可以通过STEP7分配参数来设置时间中断,但不选择激活。然后在程序中使用SFC30(ACT_TINT)来激活。
2、查询时间中断
要查询设置了哪些时间中断以及它们设置为何时发生,可以采用以下方法:
· 调用SFC31(QRY_TINT)
· 在系统状态列表的"中断状态"列表中查询。
系统状态列表(SSL)记录PLC的当前状态,包括组态、当前参数分配、CPU的当前状态和顺序以及属于它的模块的信息。系统状态列表中的数据只能读取,而不能修改。它仅是一个按要求创建的虚拟列表。系统状态列表一般分为四个区域,如图2所示。
![4090d5dc3df6e7747ecf0e98e91b9de5.png](https://img-blog.csdnimg.cn/img_convert/4090d5dc3df6e7747ecf0e98e91b9de5.png)
图2 系统状态列表SSL
这里,我们要查询的"中断状态"即属于系统状态列表中的"system data"的一部分。
3、取消激活时间中断
可以使用SFC29(CAN_TINT)取消未被执行的时间中断。当然,被取消的时间中断可以用SFC28(SET_TINT)重新设置,用SFC30(ACT_TINT)激活。
4、时间中断OB的本地数据
下表给出了时间中断OB的临时(TEMP)变量,以OB10为例。
![725ccd576451e60805c45e86769dd39c.png](https://img-blog.csdnimg.cn/img_convert/725ccd576451e60805c45e86769dd39c.png)
表二 时间中断OB10的临时(TEMP)变量
三、影响时间中断OB的条件
由于时间中断仅以指定的时间间隔发生(不考虑仅执行一次的情况),因此,在执行用户程序期间,某些条件可能会影响OB的操作。下表类除了其中的一些条件,并说明了该条件对执行时间中断OB的影响。
![265ba181e5f2007a5d23a0ae4a02da83.png](https://img-blog.csdnimg.cn/img_convert/265ba181e5f2007a5d23a0ae4a02da83.png)
表三 影响时间中断OB的可能条件
时间中断的注意事项:
· 周期性的时间中断必须对应于实际日期。从1月31日开始,每月重复OB10是做不到的。没有31日的月份不会响应OB10的中断的;
· 在启动期间激活的时间中断,只有当启动完成之后才响应中断;
· 由参数分配取消选择的时间中断OB不能启动。CPU将识别编程错误,并切换到STOP模式。
· 重新启动(暖启动)之后,必须重新设置时间中断(例如,在启动程序中使用SFC30 ACT_TINT)。