S7-1200 培训课程八—关于OB的说明及使用(入门→精通→工程案例及经验分享)
在西门子 S7-1200 系列 PLC 的TIA Portal编程体系中,组织块(Organization Block,简称 OB)OB 是连接操作系统与用户程序的核心接口,负责控制用户程序的执行流程和响应机制。OB 作为事件驱动的程序块,根据不同的触发条件执行特定的功能,构成了 PLC 程序的基本执行框架理解和掌握各类 OB 的功能特性、执行机制以及实际应用方法,对于开发高效、稳定的 PLC 控制系统至关重要。
西门子 S7-1200 支持多种类型的 OB,包括程序循环 OB、启动 OB、时间中断 OB、延时中断 OB、循环中断 OB、硬件中断 OB、时间错误中断 OB、诊断错误中断 OB 等每种 OB 都有其特定的触发条件、优先级和执行特性,在工业自动化项目中发挥着不可替代的作用
OB是西门子S7系列PLC操作系统与用户程序的接口,操作系统通过时间或事件驱动来调用各OB,达到用户想执行的程序在规定的时间或规定的事件驱动下执行,会很好使用OB和不会很好使用OB的,做出来的程序效果,执行效率也会有很大不同。OB可以调用FB、FC、SFB、SFC。具体可以支持的OB数量,与CPU型号有关。
程序循环 OB(OB1 及≥123):优先级 1(最低)
时间中断 OB(OB10-OB17):优先级 2
延时中断 OB(OB20-OB23):优先级 3-6(OB20 为 3,OB21 为 4,依此类推)
诊断错误中断 OB82:优先级 5
拔出 / 插入模块 OB83:优先级 6
机架或站故障 OB86:优先级 6
循环中断 OB(OB30-OB38):优先级 7-17(OB30 为 7,OB31 为 8,依此类推)
硬件中断 OB(OB40-OB47):优先级 16-23(OB40 为 16,OB41 为 17,依此类推)
时间错误中断 OB80:优先级 22
背景组织块 OB90:优先级 29(最高)
在执行机制
当多个 OB 同时触发时,系统按照以下规则处理
高优先级 OB 可以中断低优先级 OB 的执行
同一优先组内的 OB 按优先级由高到低排队依次执行
同一优先级的 OB 按编号由小到大依次执行
7)、其他特殊组织块,包括诊断错误中断组织块、变成错误组织块,具体编号及优先级如下,针对优先级后续会说明,OB类别、编号和优先级如下图。
1)、启动组织块, 在CPU启动(暖启动)时执行一次,如OB100。 可选择多个启动组织块,系统将根据组织块的编号大小顺序依次执行,启动组织块通常用来做出初始化的程序。比如,锅炉除氧脱盐水处理过程,为了确保CPU在重启后各装置处于安全状态,可在OB100中将所有开关阀控制到安全状态,让所有定时器及计数器归零。
2)、循环程序组织块,如OB1,优先级最低,所有其它时间都可以中断它。当CPU完成启动,进入运行状态后,开始循环的执行循环组织块,执行完后,操作系统再次调用执行,循环程序可以有一个或多个循环OB,这些OB的优先级为1,多个循环程序OB,先调用编号小的,依次调用编号大。我们做一个项目至少有一个OB1。
时间中断和循环中断均是由时间来驱动,达到条件,调用相应的OB。
时间中断用于设定在指定时间(日期带时间)触发一次执行的OB。也可设定周期兴触发(可按每分、每小时、每日、每周、每月、月末、每年来处罚一次),此功能当时间间隔比较小时,如需要10ms、100ms、1000ms这些小的时间间隔,我们采用循环中断,若时间间隔比较长,则选用时间中断。
用此功能,可以用于统计班产量、日产量、月产量、年产量。直接在中断内读取累计量,然后获取差值计算可得。
4)、循环中断组织块,OB30~OB38,>=123,是根据设定的时间间隔循环执行的组织块,
使用案例,比如我们要计算一个累计量或系统运行时间统计,瞬时量的单位为吨/小时,我们按100ms计算一次,配置OB35,将其循环时间中断设置为100ms,一小时,包括60*60*10=36000个100ms周期,因此通过在OB35将瞬时量除以36000后,设定一个累计量单元,每个周期进行累加。最后得出的即为累计量。
运用循环中断,使 Q0.0 500ms 输出为 1,500ms 输出为 0,即实现周期为 1s 的方波输出。具体实现过程如下
OB30 中编程,当循环中断执行时,Q0.0 以方波形式输出
同样,在 OB1 中编程调用“SET_CINT”指令,可以重新设置循环中断时间,例如:CYCLE=1s(即周期为2s);调用“QRY_CINT”指令可以查询中断状态。在“指令->扩展指令->中断->循环中断”中可以找相关指令。也可以设置一个变量,得到不同周期的方波。
比如日常的PID调节,需要按周期性执行,可以在循环中断中进行处理,设定调整周期为3S,具体设定周期依据工艺调整需求,即每3S调用一次PID块,每3S调节输出刷新一次。
延时中断和硬件中断,属于事件类驱动中断,当某一时间发生时调用该中断。
,经过指定的时间延时后,触发相应的延时中断组织块。延时间中断,可用于一些控制事件调动。
OB响应具有硬件中断能力的模块时间,通过组态定义具体的触发事件,通过硬件中断,提高程序对外部信号变化的响应速度。比如,我们可以应用该功能,实现对现场模拟量监控对象实现超程保护,当监测到对象的测量值大于设定限值时,责关停设备。此功能也可以在程序中采用定时器实现,采用中断时间更精确,此功能在工艺型CPU编程中使用更多,更多用在运动控制的场合。
OB80:时间错误,子啊一个循环内第一次违反循环时间,或者已经请求但未处理的OB数量已经到达组态的限值,则会调用该OB,调用后,可以在内部编写一些提示信息,方便问题查找。
OB82:诊断错误,具有诊断功能的S7-1500模块检测到其他诊断状态发生变化,并相CPU发送诊断请求。
OB83:插拔模块,移除或插入已经组态且未禁用的分布式I/O模块或子模块。
OB86:机架错误,检测到DP主站系统或PROFINET IO系统发生故障;检测到DP从站或I/O设备发生故障;检测到PROFINET智能设备部分单元模块发生故障。
OB121:编程错误组织块,比如超出最大嵌套深度,访问了尚未装载的DB,均会调用该组织块。
OB22:I/O访问出错组织块,如直接访问I/O数据时出错
具有更高优先级的OB可以中断正在执行较低优先级的OB,被中断的组织块将等待,直到高优先级组织块完成运行在继续执行。可相同优先级的组织块,依照编号顺序,直到同优先级的组织块完成后,在继续执行其他编号,如果存在错误,导致部分同优先级组织块没有执行,系统将会调用OB80。如下图,当OB11没有按要求调用一次,则会调用OB80一次,我们可以在OB80中编写提示程序,提示OB11没有备正常调用。
组织块过载原因:当收到优先级较高的OB影响,若系统配置时,设定循环周期比较短,那么有可能造成循环中断程序不能及时处理,这种现象称为组织块过载,如下图。
三、OB优先级管理
在使用 S7-1200 的 OB 时,优先级管理是一个需要特别关注的问题。错误的优先级配置可能导致系统响应延迟、任务丢失甚至系统崩溃。
避免优先级倒置:高优先级 OB 的频繁执行可能导致低优先级 OB”饿死”。例如,如果 OB35(循环中断)的执行时间过长或者周期过短,可能会频繁打断 OB1 的执行,导致主程序的扫描周期延长,影响系统的整体响应速度。因此,在配置循环中断 OB 时,必须确保其执行时间小于设定的循环周期,否则会导致时间错误事件,可能使系统进入停机状态.
合理设置优先级:
在设计 OB 优先级时,应该遵循以下原则:
关键的安全相关任务(如急停处理)应该使用最高优先级
实时控制任务(如运动控制、高速计数)使用较高优先级
周期性数据采集和处理使用中等优先级
非关键的后台任务(如数据记录、通信)使用较低优先级
1. 通用基础OB(两者均支持)
两类CPU均支持程序循环OB、启动OB、延时中断、循环中断、硬件中断、时间错误OB80、诊断错误OB82、插拔模块OB83、机架故障OB86,基础中断与故障OB框架一致,满足常规自动化控制需求。
2. S7-1500独有、S7-1200不支持OB
通用基础OB: (两者均支持)两类CPU均支持程序循环OB、启动OB、延时中断、循环中断、硬件中断、时间错误OB80、诊断错误OB82、插拔模块OB83、机架故障OB86,基础中断与故障OB框架一致,满足常规自动化控制需求。
S7-1500独有、S7-1200不支持OB: 同步错误OB:OB121(编程错误中断)、OB122(访问错误中断),1200无此类同步错误处理机制,编译阶段会直接拦截非法访问,无法下载错误程序。
冗余相关OB: 适配1500R/H冗余CPU,冗余同步、故障切换专用OB,1200无冗余机型,完全不支持
多任务与高级中断OB: 多周期中断。、事件触发同步中断、运动控制专属高阶OB(1200仅基础运动OB,功能受限)。
系统故障OB:OB81(电源故障) 、OB85(优先级错误)、OB87(通信错误)、OB88(过程故障),1200无对应故障触发机制。背景OB扩展:支持多背景OB,1200仅基础OB90,功能单一
启动OB细分差异: S7-1200:仅支持暖启动OB100,无冷启动OB102、热启动OB101,启动类型单一。S7-1500:完整支持暖启动OB100、热启动OB101、冷启动OB102,适配断电恢复、系统重启等复杂场景。