如何理解和使用STEP7的循环中断组织块OB3x?
一、S7系列PLC的程序执行过程
要回答这一问题,首先得清楚S7系列PLC程序执行的过程,如下图所示。
PLC得电或由STOP模式切换到RUN模式时,CPU起动,同时清除没有保持功能的位存储器、定时器、计数器,清除中断堆栈和块堆栈的内容,复位保存的硬件中断等。
执行“系统起动组织块”OB100,该组织块可以自定义编程,实现一些初始化的工作; 系统进入周期扫描,并起动循环时间监控;CPU将输出过程映像区的数据写入输出模块;读取输入模块的状态,并写入输入过程映像区; CPU调用OB1,执行用户程序,期间,根据需要可调用其他逻辑块(FB、SFB、FC及SFC),来实现控制任务;在循环结束时,操作系统执行所有挂起的任务,例如下载和删除块、接收和发送全局数据等;CPU重新启动循环时间监控,开始新的循环;9、在执行用户程序的过程中,如果有中断事件发生,当前执行的块将暂停执行,转而执行相应的组织块,来响应中断。该组织块执行完成后,之前被暂停的块将从中断的地方继续开始执行。OB1具有很低的优先级,除了OB90外,所有的组织块都能中断OB1。
二、循环中断组织块的概念S7提供了多达九个的循环中断OB (OB30至OB38),它们以固定的时间间隔来中断用户程序。不同的CPU支持的循环中断的个数有所差异,比如CPU315-2DP仅有一个循环中断组织块——OB35;而S7-400系列CPU几乎支持全部的九个循环中断OB,具体支持与否,可查看硬件手册。
循环中断OB的等距启动时间是由时间间隔和相位偏移量决定的。在“硬件组态”中,可以定义循环中断的优先级、两次中断之间的时间间隔以及相位偏移量(在S7-300系列CPU中,只能定义时间间隔),如下图所示。
定义好上述参数后,系统上电、正常运行后,每隔一定的时间,触发一次循环中断,系统暂时中止执行OB1中的程序,转而执行循环中断OB(如OB35)中的程序。循环中断OB中的代码执行完毕后,系统自动回到OB1的断点处,继续执行OB1的程序。直到下一次循环中断的产生,如此,周而复始。
三、什么时候用循环中断我们知道,OB1由于可能被其他组织块中断,因此,每一次处理周期的时间会不尽相同,因此一些些对“周期时间”要求比较严格的信号,在OB1中处理就不太合适了。
和OB1不同,循环中断OB块的是“等间隔”执行的,其执行间隔可由用户自定义,相比OB1而言,其等时、同步性能更好,比如模拟量的采集和处理,为保证数据的统一性,通常可将代码写在循环中断组织块中。
Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有