首页 理论教育 如何正确使用组织块(OB)

如何正确使用组织块(OB)

时间:2023-07-01 理论教育 版权反馈
【摘要】:S7-1200CPU支持的组织块,相应的启动事件,优先级和编号等,见表4-14。表4-14 组织块列表(续)程序循环组织块CPU处于RUN模式时,操作系统每个周期调用程序循环OB一次。延时中断组织块延时中断OB在一段可设置的延时时间后启动。诊断错误组织块OB82OB82是操作系统用于响应诊断错误的中断组织块。插拔中断组织块OB83OB83是操作系统用于响应对模块的移除或者插入操作的中断组织块。

如何正确使用组织块(OB)

组织块的基本功能是调用用户程序,同时还执行以下操作:

•自动化系统的启动;

•循环程序处理;

•中断响应的程序执行;

错误处理。

1.组织块类型与说明

不同类型的组织块完成不同的系统功能。S7-1200CPU支持的组织块,相应的启动事件,优先级和编号等,见表4-14。

4-14 组织块列表

978-7-111-58391-2-Chapter04-40.jpg

(续)

978-7-111-58391-2-Chapter04-41.jpg

(1)程序循环组织块

CPU处于RUN模式时,操作系统每个周期调用程序循环OB一次。所有的程序循环OB执行完成后,操作系统再重新调用程序循环OB。

S7-1200CPU支持多个程序循环OB,按编号顺序由小到大依次执行,如图4-23所示。程序循环OB的优先级为1(最低)且不可修改。

(2)启动组织块

操作系统从STOP切换到RUN时,启动OB将被执行一次,启动OB执行完后才开始执行程序循环。如果有多个启动OB,按照编号顺序由小到大依次执行。用户可以在启动OB中编写初始化程序。

978-7-111-58391-2-Chapter04-42.jpg

图4-23 程序循环组织块的执行顺序

(3)时间中断组织块

时间中断OB用于在时间可控的应用中定期运行一部分用户程序,可实现在某个预设时间到达时只运行一次;或者在设定的触发日期到达后,按每分/小时/天/周/月等周期运行。

只有在设置并激活了时间中断,且程序中存在相应组织块的情况下,才能运行时间中断。通过以下指令对时间中断进行操作:

•“ACT_TINT”指令:激活时间中断;

•“SET_TINTL”指令:设定时间中断OB的参数;

•“CAN_TINT”指令:取消未执行的时间中断;

•“QRY_TINT”指令:查询时间中断的状态。

注意:

在启动OB中,调用“ACT_TINT”指令激活的时间中断不会在启动OB结束前执行。

(4)延时中断组织块

延时中断OB在一段可设置的延时时间后启动。通过以下指令对延时中断进行操作:

•“SRT_DINT”指令:用于启动延时中断,该中断在超过参数指定的延时时间后调用延时中断OB。延时时间范围1~60000ms,精度为1ms;

•“CAN_DINT”指令:取消启动的延时中断;

•“QRY_DINT”指令:查询延时中断的状态。

(5)循环中断组织块

循环中断OB按设定的时间间隔循环执行。例如,如果时间间隔为100ms,则在程序执行期间会每隔100ms调用该OB一次。双击项目树中相应PLC站点下的“程序块>添加新块”,如图4-24所示,在窗口中的“循环时间”中设置时间间隔。

978-7-111-58391-2-Chapter04-43.jpg

图4-24 添加循环OB

如果在同一时间间隔内同时调用低优先级OB和高优先级OB,则只有在执行完成高优先级OB后才会调用低优先级OB。低优先级OB的调用时间可能有所偏移,这取决于执行高优先级OB的时间长度;如果为低优先级OB组态的相位偏移大于高优先级OB的当前执行时间,则会在固定时基内调用该块。相位偏移在循环中断OB调用过程中的作用,如图4-25所示。

循环时间和相移可以在循环中断OB“属性”的“常规>循环中断”中设置,如图4-26所示。

978-7-111-58391-2-Chapter04-44.jpg

图4-25 循环中断OB的调用

①“循环时间”:是循环中断的间隔时间,单位为ms,范围1~60000。

②“相移”:循环OB启动的相位偏移量,单位为ms,范围0~100,必须是0.001的倍数。

通过以下指令对循环中断进行操作:

•“SET_CINT”指令:可置位循环中断的OB的参数,OB块号,时间间隔ms和相位偏移;(www.xing528.com)

978-7-111-58391-2-Chapter04-45.jpg

图4-26 循环时间和相移

•“QRY_CINT”指令:查询循环中断的当前参数。

(6)硬件中断组织块

在RUN模式下,CPU立即响应硬件中断事件,调用相关的硬件中断OB,硬件中断的启动事件见表4-14。中断程序的执行不受主程序扫描和过程映像更新时间的影响,适合需要快速响应的应用。

一个硬件中断事件只允许对应一个硬件中断OB,而一个硬件中断OB可以分配给多个硬件中断事件。可以组态硬件中断事件并分配OB,也可以通过“ATTACH”和“DETACH”指令进行动态分配。

硬件中断触发后,操作系统将识别输入通道并确定所分配的OB。在识别和确认的过程中,同一模块上发生了触发硬件中断的另一事件,须遵循以下规则:

•如果该通道再次发生相同的中断事件,操作系统不予响应,硬件中断将丢失;

•如果发生不同的中断事件,则在当前正在执行的中断确认后响应这个新的中断事件。

(7)时间错误组织块OB80

OB80是操作系统用于处理时间故障的中断组织块。当程序执行时间超过最大循环时间或者发生时间错误事件时,CPU将触发时间错误中断OB80。更多关于OB80的说明,请参见第13.5.1章节。

(8)诊断错误组织块OB82

OB82是操作系统用于响应诊断错误的中断组织块。例如,激活诊断功能的模块检测到故障状态发生变化(事件到来或离开)时,向CPU发送诊断中断请求,触发诊断错误中断OB82。更多关于OB82的说明,请参见第13.5.1章节。

(9)插拔中断组织块OB83

OB83是操作系统用于响应对模块的移除或者插入操作的中断组织块。S7-1200PLC本地模块不支持热插拔,拔出或者插入中央机架模块将导致CPU进入停止模式。更多关于OB83的说明,请参见第13.5.1章节。

(10)机架错误中断组织块OB86

OB86是操作系统响应PROFIBUS-DP和PROFINET-IO分布式IO站通信故障的中断组织块。更多关于OB86的说明,请参见第13.5.1章节。

(11)MC-Interpolator、MC-Servo、MC-PreServo、MC-PostServo

这部分OB属于S7-1200PLC运动控制相关的组织块,请参见第12.2.1章节。

2.OB的过载

在处理属于先前事件的OB前,相同的事件可能再次或多次发生。当同一个源的事件的发生速度大于CPU的处理速度时,该OB将会发生过载。操作系统通过限制与同一源相关的未决事件的数量来控制临时过载。

S7-1200 CPU中,循环中断和时间中断可以设置OB过载的特性,如图4-27所示。

①“待排队的事件”:当未决启动事件的数目达到预设值时,将丢弃下一事件,范围是1~4。如果设置为1,则仅临时存储一个事件。

978-7-111-58391-2-Chapter04-46.jpg

图4-27 循环中断OB事件队列

②“过载事件将在诊断缓冲区中留下一次记录”:选中该项时,当发生丢失了该OB的启动事件时,CPU将把此次过载情况写入诊断缓冲区。

③“启动时间错误”:选中该项时,当达到类似事件的指定过载级别时,调用时间错误OB80。

④“时间错误的时间阈值”:如果设置为1,则当发生一次中断事件时,在诊断缓冲区记录一次,并在发生第二个事件时,请求时间错误OB80。满足1≤“时间错误的时间阈值”≤“待排队的事件”。

3.组织块的临时存储区大小

CPU为每个优先级的OB提供了临时存储区,存储区的大小见表4-15。

4-15 临时存储区的大小

978-7-111-58391-2-Chapter04-47.jpg

注意:

如果使用的临时变量超过L区规定的限制,又没有进行编程错误处理,则S7-1200CPU将停机报错。

4.组织块的接口区

在组织块的接口区中,除了自动生成的变量之外,用户可以自行定义临时变量及本地常量。OB接口区参数所支持的数据类型,见表4-16。

4-16 OB块接口区数据类型

978-7-111-58391-2-Chapter04-48.jpg

①在这些区域不能声明STRING和WSTRING的长度。仅允许在优化访问的块中声明WSTRING。

②不允许使用数据类型为ARRAY或STRUCT的常量。

注意:

Input变量是所有OB的启动信息,由系统生成,并操作系统自动更新的,用户不能自行定义。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈