理论教育 学会使用组织块OB,提高工作效率

学会使用组织块OB,提高工作效率

时间:2023-06-17 理论教育 版权反馈
【摘要】:图8.1新建起动组织块在OB100中编写程序如图8.2所示,则当S7-1200 PLC从STOP转到RUN时,若实时时钟丢失则输出Q0.0指示灯亮。图8.3设置循环中断组织块属性图8.4OB200对应的PLC程序4.硬件中断组织块硬件中断OB用来响应特定事件,最多可使用50个硬件中断OB,它们在用户程序中彼此独立。

学会使用组织块OB,提高工作效率

组织块0B是操作系统与用户程序的接口,由操作系统调用。组织块中除可以用来实现PLC循环扫描控制以外,还可以完成PLC的起动、中断程序的执行和错误处理等功能。熟悉各类组织块的使用,对于提高编程效率有很大的帮助。

1.事件和组织块

事件是S7-1200 PLC操作系统运行的基础,分为能够起动OB的和无法起动OB的两类事件。能够起动OB的事件会调用已分配给该事件的OB或按照事件的优先级将其输入队列,如果没有为该事件分配OB,则会触发默认系统响应。无法起动OB的事件会触发相关事件类别的默认系统响应。

用户程序循环取决于事件和给这些事件分配的OB,以及包含在OB中的程序代码或在OB中调用的程序代码。如表8.1所示为能够起动OB的事件,其中包括相关的事件类别。

表8.1 能够起动OB的事件

续表

无法起动OB的事件如表8.2所示,其响应由操作系统完成。

表8.2 无法起动OB的事件

2.起动组织块

接通CPU后,S7-1200 PLC在开始执行用户程序之前首先执行起动程序,可以在起动OB中为所设计的程序指定需要的初始化变量。允许在用户程序中创建一个或多个起动OB,当然也可以一个也不创建,起动组织块的编号为100或大于等于200,可以手动设置或由系统自动指定。

S7-1200 PLC支持三种起动模式:不重新起动模式、暖起动-RUN模式和暖起动断电前的工作模式。不管选择哪种起动模式,已编写的所有起动OB都会执行。

S7-1200暖起动期间,所有非保持性位存储器内容都将删除并且非保持性数据块内容将复位为来自装载存储器的初始值。保持性存储器和数据块内容将保留。

起动程序在从“STOP”模式切换到“RUN”模式期间执行一次。输入过程映像中的当前值对于起动程序不能使用,也不能设置。起动OB执行完毕后,将读入输入过程映像并起动循环程序。起动程序的执行没有时间限制。

当起动0B被操作系统调用时,用户可以在局部数据堆栈中获得规范化的起动信息。起动OB声明表中变量的含义如表8.3所示。可以利用声明表中的符号名来访问起动信息,用户还可以补充OB的局部变量表。

表8.3 起动OB声明表中变量的含义

【例8-1】S7-1200 PLC中要利用实时时钟,如交通灯不同时间段切换不同的控制策略等,起动运行时,需要检测实时时钟是否丢失,若丢失,则警示灯Q0.0亮。

在项目视图项目树中,双击PLC设备程序块下的“添加新块”项,选择添加OB块,如图8.1所示,选择添加“Startup”类型的组织块,自动新建编号为100的组织块。如果再新建一个起动组织块,则其编号要大于等于200。

图8.1 新建起动组织块

在OB100中编写程序如图8.2所示,则当S7-1200 PLC从STOP转到RUN时,若实时时钟丢失则输出Q0.0指示灯亮。

图8.2 在OB100中编写程序

3.循环中断组织块

循环中断组织块用于按一定时间间隔循环执行中断程序,如周期性地定时执行闭环控制系统的PID运算程序等。循环中断OB与循环程序执行无关。循环中断OB的起动时间通过循环时间基数和相位偏移量来指定。循环时间基数定义循环中断OB起动的时间间隔,是基本时钟周期1 ms的整数倍,循环时间的设置范围为1~60000ms。相位偏移量是与基本时钟周期相比起动时间所偏移的时间。如果使用多个循环中断OB,当这些循环中断OB的时间基数有公倍数时,可以使用该偏移量防止多个程序同时起动。

下面给出使用相位偏移的实例。假设已在用户程序中插入两个循环中断OB:循环中断OB201和循环中断OB202。对于循环中断OB201,已设置时间基数为20ms,对于循环中断OB202,已设置时间基数为100ms。时间基数100 ms到期后,循环中断OB201第五次到达起动时间,而循环中断OB202是第一次到达起动时间,此时需要设置其中一个循环中断OB的偏移,为其输入相位偏移量。

用户定义时间间隔时,必须确保在两次循环中断之间的时间间隔中有足够的时间处理循环中断程序。各循环中断OB的执行时间必须明显小于其时间基数。如果尚未执行完循环中断OB,但由于周期时钟已到而导致执行再次暂停,则将起动时间错误OB。

【例8-2】使用循环中断组织块,每隔1.5秒MW20的值加1。

在项目视图项目树中,双击PLC设备程序块下的“添加新块”项,选择添加“Cyclic interrupt”类型的OB块,用手动方式设置程序的编号,并将循环时间设为1.5秒,如图8.3所示,对应的PLC程序如图8.4所示。

图8.3 设置循环中断组织块属性

图8.4 OB200对应的PLC程序(www.daowen.com)

4.硬件中断组织块

硬件中断OB用来响应特定事件,最多可使用50个硬件中断OB,它们在用户程序中彼此独立。使用时只能将触发报警的事件分配给一个硬件中断OB,而一个硬件中断OB可以对应给多个事件。

高速计数器和输入通道可以触发硬件中断。对于将触发硬件中断的各高速计数器和输入通道,需要组态触发硬件中断的过程事件,如高速计数器的计数方向的改变,并对该过程事件分配对应的硬件中断OB的编号。

触发硬件中断后,操作系统将识别输入通道或高速计数器,并确定所分配的硬件中断OB。如果没有其他中断OB激活,则调用所确定的硬件中断OB;如果已经在执行其他中断OB,硬件中断将被置于与其同优先等级的队列中。所分配的硬件中断OB完成执行后,即确认了该硬件中断。

如果在对硬件中断进行标识和确认的这段时间内,在同一模块中发生了触发硬件中断的另一事件,则若该事件发生在先前触发硬件中断的通道中,将不会触发另一个硬件中断。只有确认当前硬件中断后,才能触发其他硬件中断,否则若该事件发生在另一个通道中,将触发硬件中断。只有在CPU处于“RUN”模式时才会调用硬件中断OB。

【例8-3】新建一个硬件中断组织块OB200,通过硬件中断在I0.0上升沿时将Q1.0置位,在I0.1下降沿时将Q1.0复位。

S7-1214C集成输入点可以逐点设置中断特性。新建一个项目,插入CPU 1214C并在设备配置CPU的属性对话框的“数字输入”项中,设置其输入滤波器的时间常数。勾选通道0的“启用上升沿检测”,选择硬件中断为新建的硬件中断组织块OB200,如图8.5所示;再勾选通道l的“启用下降沿检测”,选择硬件中断为新建的硬件中断组织块OB201。

图8.5 设置硬件中断

在OB200中编写程序,如图8.6(a)所示,在OB201中编写程序,如图8.6(b)所示。

图8.6 编写程序

5.延时中断组织块

延时中断组织块用来编写延时中断程序,在某个特定事件出现时,如特定的输入出现下降沿或上升沿,可以通过SRT_DINT指令起动延时中断程序,延时时间在SRT_DINT中指定,时间精度为1ms,同时还可通过RET_VAL检测指令执行是否正常。与PLC中常用的定时器延时不同,延时中断组织块的的定时精度不受循环扫描周期的影响,因而可以获得较高精度的延时。

与此中断组织块相关的指令还有CAN_DINT、DIS_AIRT和EN_AIRT。CAN_DINT功能块可以用来阻止执行尚未起动的延时中断,只需在其输入参数中指定相应的延时中断组织块的块号即可;DIS_AIRT指令用来延时执行优先级高于当前组织块的中断组织块的处理,当然也包括延时中断组织块,每执行一次DIS_AIRT,都会对此指令的延时次数进行计数并使处理延时,通过该指令的参数RET_VAL,可查询延时的次数;要取消延时,必须执行EN_AIRT指令,直至EN_AIRT的执行次数与DIS_AIRT的调用次数相等,才会取消执行的延时。

总之,要使用延时中断OB需要调用指令SRT-DINT且将延时中断OB作为用户程序的一部分下载到CPU,只有在CPU处于“RUN”模式时才会执行延时中断OB。暖起动将清除延时中断OB的所有起动事件;可以使用中断指令DIS-AIRT和EN-AIRT来禁用和重新启用延时中断。如果执行SRT-DINT之后使用DIS-AIRT禁用中断,则该中断只有在使用ENAIRT启用后才会执行,延迟时间将相应地延长。

【例8-4】在I0.1的下降沿起动延时中断程序OB202的调用,200ms后OB202被调用,在OB202中将Q1.0置位,并立即输出。其编写程序如图8.7所示。

图8.7 示例编写程序

6.时间错误组织块

在用户程序中只能使用一个时间错误中断组织块,在以下事件发生时,操作系统将自动进行调用:

(1)循环程序超出最大循环时间;

(2)被调用0B(如延时中断OB和循环中断0B)当前正在执行;

(3)中断OB队列发生溢出;

(4)由于中断负载过大而导致中断丢失。

时间错误中断OB的起动信息含义如表8.4所示。

表8.4 时间错误中断OB起动信息

7.诊断组织块

可以为具有诊断功能的模块启用诊断错误中断功能,使模块能检测到I/O状态变化,因此模块会在出现故障(进入事件)或故障不再存在(离开事件)时触发诊断错误中断。如果没有其他中断OB激活,则调用诊断错误中断OB。若已经在执行其他中断OB,诊断错误中断将置于同优先级的队列中。

在用户程序中只能使用一个诊断错误中断OB。诊断错误中断OB的起动信息如表8.5所示。表8.6列出了局部变量IO_state所能包含的可能I/O状态。

表8.5 诊断错误中断OB起动信息

表8.6 IO_state状态

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

我要反馈