首页 理论教育 初始化和循环中断组织块

初始化和循环中断组织块

时间:2023-06-30 理论教育 版权反馈
【摘要】:程序循环OB的优先级最低,其他事件都可以中断它们。打开STEP7的项目视图,生成一个名为“启动组织块与循环中断组织块”的新项目,CPU的型号为CPU 1214C。生成循环中断组织块OB30,其时间间隔为默认值100000μs,相移为0μs。单击两次I0.3对应的小方框,在I0.3的上升沿,循环中断被禁止,MW10停止加1。

初始化和循环中断组织块

1.程序循环组织块

主程序OB1属于程序循环OB,CPU在RUN模式时循环执行OB1,可以在OB1中调用FC和FB。如果用户程序生成了其他程序循环OB,CPU按OB编号的顺序执行它们,首先执行主程序OB1,然后执行编号大于等于123的程序循环OB。一般只需要一个程序循环OB。程序循环OB的优先级最低,其他事件都可以中断它们。

打开STEP7的项目视图,生成一个名为“启动组织块与循环中断组织块”的新项目(见随书光盘中的同名例程),CPU的型号为CPU 1214C。

打开项目视图中的文件夹“\PLC_1\程序块”,双击其中的“添加新块”,单击打开的对话框中的“组织块”按钮(见图4-35),选中列表中的“Program cycle”,生成一个程序循环组织块。OB默认的编号为123,语言为LAD(梯形图),默认的名称为Main_1。单击“确定”按钮,生成OB123,可以在项目树的文件夹“\PLC_1\程序块”中看到新生成的OB123。

978-7-111-58719-4-Chapter04-52.jpg

图4-35 生成循环中断组织块

分别在OB1和OB123中生成简单的程序(见图4-36和图4-37),将它们下载到CPU,CPU切换到RUN模式后,可以用I0.4和I0.5分别控制Q1.0和Q1.1,说明OB1和OB123均被循环执行。

978-7-111-58719-4-Chapter04-53.jpg

图4-36 OB1的程序

978-7-111-58719-4-Chapter04-54.jpg

图4-37 OB123的程序

2.启动组织块

启动组织块用于系统初始化,CPU从STOP切换到RUN时,执行一次启动OB。执行完后,读入过程映像输入,开始执行OB1。允许生成多个启动OB,默认的是OB100,其他启动OB的编号应大于等于123。一般只需要一个启动组织块。

用上述方法生成启动(Startup)组织块OB100。OB100中的初始化程序见图4-38。将它下载到CPU,将CPU切换到RUN模式后,可以看到QB0的值被OB100初始化为7,其最低3位为1。

978-7-111-58719-4-Chapter04-55.jpg

图4-38 OB100的程序

该项目的M区没有设置保持功能,暖启动时M区的存储单元的值均为0。在监控时如果看到MB14的值为1,说明只执行了一次OB100,是OB100中的INC指令使MB14的值加1。

3.S7-1200的循环中断组织块

循环中断组织块用于按精确的时间间隔循环执行中断程序,例如周期性地执行闭环控制系统的PID控制程序。(www.xing528.com)

循环中断组织块以设定的循环时间(1~60000ms)周期性地执行,而与程序循环OB的执行无关。如果循环中断OB的执行时间大于扫描循环时间,操作系统将会调用时间错误组织块OB80。

双击项目树中的“添加新块”,选中出现的对话框中的“Syclic interrupt”,默认的编号为OB30,将循环中断的时间间隔(循环时间)由默认值100ms修改为1000ms(见图4-35)。

978-7-111-58719-4-Chapter04-56.jpg

图4-39 项目树与循环中断组织块OB30

双击打开项目树中的OB30,选中巡视窗口的“属性>常规>循环中断”(见图4-39),可以设置循环时间和相移。相移是相位偏移的简称,用于防止循环时间有公倍数的几个循环中断OB同时启动,导致连续执行中断程序的时间太长,相移的默认值为0。

图4-39中的程序用于控制8位彩灯循环移位,I0.2控制彩灯是否移位,I0.3控制移位的方向。在CPU运行期间,可以使用OB1中的SET_CINT指令重新设置循环中断的循环时间CYCLE和相移PHASE(见图4-40),时间的单位为μs;使用QRY_CINT指令可以查询循环中断的状态。这两条指令在指令列表的“扩展指令”窗格的“中断”文件夹中。

单击工具栏上的“开始仿真”按钮978-7-111-58719-4-Chapter04-57.jpg,打开S7-PLCSIM。将程序下载到仿真PLC,后者进入RUN模式。在S7-PLCSIM的SIM1表中生成IB0和QB0的SIM表条目,由于OB100的作用,QB0的初始值为7,其低3位为1。单击I0.2对应的小方框,使它变为1状态,彩灯循环左移。令I0.3为1状态,彩灯循环右移。

978-7-111-58719-4-Chapter04-58.jpg

图4-40 查询与设置循环中断

令I0.0为1状态,执行QRY_CINT指令和SET_CINT指令,将循环时间由1s修改为3s。图4-41中的MD4是QRY_CINT指令读取的循环时间(单位为μs),MB9是读取的状态字MW8的低位字节,M9.4为1表示已下载OB30,M9.2为1表示已启用循环中断。

978-7-111-58719-4-Chapter04-59.jpg

图4-41 S7-PLCSIM的SIM表1

4.S7-1500的循环中断组织块

生成项目“禁止与激活循环中断”(见随书光盘中的同名例程),CPU为CPU 1511-1PN。生成循环中断组织块OB30,其时间间隔为默认值100000μs,相移为0μs。在OB30中用INC指令将MW10加1。

在OB1中编写图4-42所示的程序,在I0.2的上升沿调用扩展指令窗格的“中断”文件夹中的“EN_IRT”指令,来激活OB30对应的循环中断。在I0.3的上升沿调用指令“DIS_IRT”,来禁止OB30对应的循环中断。

978-7-111-58719-4-Chapter04-60.jpg

图4-42 OB1的程序

将程序和硬件组态数据下载到仿真PLC。进入RUN模式后,在S7-PLCSIM的SIM1表中生成IB0和MW10的SIM表条目。可以看到OB30被自动激活,每100ms调用一次OB30,将MW10加1。单击两次I0.3对应的小方框,在I0.3的上升沿,循环中断被禁止,MW10停止加1。单击两次I0.2对应的小方框,在I0.2的上升沿,循环中断被激活,MW10又开始加1。

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

我要反馈