首页 理论教育 S7-1200 CPU事件优先级与中断处理相关知识

S7-1200 CPU事件优先级与中断处理相关知识

时间:2023-06-24 理论教育 版权反馈
【摘要】:系统忽略过程映像更新期间出现的I/O 错误。启动事件与程序循环事件不会同时发生,在启动期间,只有诊断错误事件能中断启动事件,其他事件将进入中断队列,在启动事件结束后再处理。高优先级组的事件可以中断低优先级组事件的OB 的执行。对于V4.0 以上版本的S7-1200 CPU,优先级大于或等于2 的组织块将中断循环程序的执行。

S7-1200 CPU事件优先级与中断处理相关知识

1.启动组织块的事件

组织块在模块一的1.5 部分已有简单的介绍,组织块充当操作系统和用户程序之间的接口。组织块包括启动组织块、程序循环组织块、延时中断组织块、循环中断组织块、硬件中断组织块、时间错误中断组织块和诊断组织中断组织块。OB 是由事件驱动的。当出现启动组织块的事件时,由操作系统调用对应的组织块。如果当前不能调用OB,则按事件的优先级将其保存到队列,如果没有为该事件分配OB,则会触发默认的系统响应。S7-1200 启动组织块事件的属性如表6-3所示。

表6-3 S7-1200 启动组织块事件的属性

续表

如果插入/拔出中央模块,或超出最大循环时间两倍,CPU 将切换到STOP 模式。系统忽略过程映像更新期间出现的I/O 错误。块中有编程错误或I/O 访问错误时,保持RUN 模式不变。启动事件与程序循环事件不会同时发生,在启动期间,只有诊断错误事件能中断启动事件,其他事件将进入中断队列,在启动事件结束后再处理。

2.事件执行的优先级与中断队列

优先级、优先级组合队列用来决定时间服务程序的处理顺序。每个CPU 事件都有它的优先级,不同优先级的事件分为3 个优先级组。优先级的编号越大,优先级越高。事件一般按优先级的高低来处理,先处理高优先级的事件。优先级相同的事件按“先来先服务”的原则来处理。高优先级组的事件可以中断低优先级组事件的OB 的执行。一个OB 正在执行时,如果出现了另一个具有相同或较低优先级组的事件,后者不会中断正在处理的OB,将根据它的优先级添加到对应的中断队列排队等待。当前的OB 处理完后,再处理排队的事件。不同的事件均有它自己的中断队列和不同的队列深度。对于特定的事件类型,如果队列中的事件个数达到上限,下一个事件将使队列溢出,新的中断事件被丢弃,同时产生时间错误中断事件。

S7-1200 可以用CPU 的“启动”属性中的复选框“OB 应该可中断”设置组织块是否可以被中断。对于V4.0 以上版本的S7-1200 CPU,优先级大于或等于2 的组织块将中断循环程序的执行。如果设置为中断模式,优先级为2 ~25 的组织块可被优先级高于当前运行的组织块的任何事件中断,时间错误事件类型会中断所有其他事件类型的组织块。如果未设置可中断模式,优先级为2 ~25 的组织块不能被任何事件中断。

3.程序循环组织块

程序循环组织块(Program cycle)OB1 是用户程序中的主程序,CPU 循环执行操作系统程序,在每一次循环中,操作系统程序调用一次OB1。程序循环组织块的优先等级为1,为最低优先等级,任何其他类别的事件都可以中断循环程序的执行。CPU 在RUN 模式时循环执行OB1,可以在OB1 中调用FC 和FB。如果用户程序生成了其他程序循环的组织块,CPU按OB 编号的顺序执行它们,首先执行主程序OB1,然后执行编号大于或等于123 的程序循环OB。一般情况只需要一个程序循环组织块。

S7-1200 操作系统的运行过程如图6-38所示。

图6-38 S7-1200 操作系统的运行过程

具体运行过程如下:

(1)操作系统启动扫描循环监视时间;

(2)操作系统将输出过程映像区的值写到输出模块;

(3)操作系统读取输入模块的输入状态,并更新输入过程映像区;

(4)操作系统处理用户程序并执行程序中包含的运算;

(5)当循环结束时,操作系统执行所有未决的任务,例如加载和删除块或调用其他循环OB;

(6)最后,CPU 返回循环起点,并重新启动扫描循环监视时间。

打开博途软件,生成一个名为“组织块例子”的新项目,双击项目树中的“添加新设备”,添加一个新设备,CPU 的型号为CPU 1215C。打开项目视图中的文件夹“ \ PLC_1 \程序块”双击其中的“添加新块”,单击方框中的“OB 组织块”按钮,如图6-39所示,选择列表中的“Program cycle”,生成一个程序循环组织块,OB 默认的编号为123 (可手动设置OB 的编号,最大编号为32767)。块的名称为默认的Main_1 (可修改块的名称)。单击右下角的“确认”按钮,OB 块自动生成,可以在项目树的文件夹“ \ PLC_1 \ 程序块”中看到新生成的OB123。

分别在OB1 和OB123 输入程序,如图6-40 和图6-41所示,将它们下载到CPU,将CPU 切换到RUN 模式后,可以用1 号按钮I0.0 和2 号按钮I0.1 分别控制Q0.1、Q0.2、Q0.3,OB1 和OB123 均被循环执行。(www.xing528.com)

图6-39 生成程序循环组织块

图6-40 OB1 中的程序

图6-41 OB123 中的程序

4.启动组织块

启动组织块(Startup)用于初始化,CPU 从STOP 模式切换到RUN 模式时,执行一次启动OB。执行完后,开始执行程序循环OB1。允许生成多个启动OB,默认的是OB100,其他的启动OB 的编号应大于或等于123,一般只需要一个启动组织块。启动组织块不会中断程序循环OB,因为CPU 在进入RUN 模式之前将先执行启动OB。

S7-1200 PLC 支持3 种启动模式:不重新启动模式、暖启动-RUN 模式、暖启动-断电前的操作模式,如图6-42所示。不管选择哪种启动模式,已编写的所有启动OB 都会执行,并且CPU 是按OB 的编号顺序执行它们,首先执行启动组织块OB100,然后执行编号大于或等于123 的启动组织块OB。

在“组织块例子”中,用生成程序循环组织块类似的方法生成启动(Startup)组织块OB100 和OB124。分别在启动组织块OB100 和OB124 中生成初始化程序,如图6-43和图6-44所示。把程序下载到CPU 并切换到RUN 模式,执行OB100 程序后QB0 被初始化为“16#F0”,再经过执行OB124 程序后,QB0 被初始化为“16#FF”。

图6-42 S7-1200 PLC 的启动模式

图6-43 OB100 程序

图6-44 0B124 程序

5.循环中断组织块

循环中断(Cyclic interrupt)组织块被用于按设定的时间间隔循环执行中断程序。最多可以组态4 个循环中断事件。循环中断组织块以设定的循环时间(1 ~60 000 ms)周期性地执行,与程序循环OB 的执行无关。在CPU 运行期间,可以使用“SET_CINT”指令重新设置循环中断的间隔扫描时间、相移时间;同时还可以使用“QRY_CINT”指令查询循环中断的状态。循环中断OB 的编号必须为30 ~38,或大于等于123。如果循环中断OB 的执行时间大于循环时间,则将会启动时间错误OB。循环中断OB 的执行过程如图6-45所示。

图6-45 循环中断OB 的执行过程

由图6-45 可知,循环中断组织块的执行过程如下:

(1)PLC 启动后开始计时;

(2)当到达固定的时间间隔后,操作系统将启动相应的循环中断OB;

(3)图例中,到达固定的时间间隔后,循环中断OB30 中断,程序循环OB1 先执行。

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

我要反馈