[西门子] 西门子博图组织块OB

[复制链接]
查看91105 | 回复0 | 2024-5-23 17:42:05 | 显示全部楼层 |阅读模式
新建一个项目在,选择一款西门子PLC,打开程序块(关于新建项目的详细方法可参阅“01西门子新建项目设定”文档),选择添加新块,如下图所示:



下面针对组织块进行详细解读:

双击打开添加新块,打开添加新块对话框,如下图所示:在2位置选择“组织块”,3位置显示系统自带的各种组织块列表,在4位置可选择当前所选组织块的编程语言,5位置选择自动编号,下方针对目前组织块的功能做了简单说明。




    P一、rogram cycle“程序循环OB”

“程序循环”OB 为主程序块且会循环执行。用户可在其中设置控制应用的指令,也可以调用其它用户块。

要启动程序执行,项目中至少要有一个程序循环 OB。操作系统每个周期调用该程序循环 OB 一次,从而启动用户程序的执行。可以使用多个 OB(OB 编号大于等于 123)。使用多个程序循环 OB 时,将按照 OB 编号依次调用。首先调用 OB 编号最低的程序循环 OB。添加一个Program cycle  OB自动编号为OB123如下图所示:



程序循环 OB 的优先等级为 1。这对应于所有 OB 的最低优先级。任何其它事件类别的事件都可以中断循环程序。

对循环程序执行进行编程

可通过在循环 OB 以及所调用的块中编写用户程序对循环程序执行进行编程。

一旦成功执行启动程序后,就会开始第一次循环程序执行。每次循环程序执行结束后,循环重新开始。

循环程序执行的顺序

一个程序执行周期包括以下步骤:

1、操作系统启动最大循环时间。

2、操作系统将输出过程映像中的值写到输出模块。

3、操作系统读取输入模块的输入状态,并更新输入过程映像。

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

5、在循环结束时,操作系统执行所有未决的任务,例如加载和删除块,或调用其它循环 OB。

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

过程映像的基本原理

功能

用户程序对输入 (I) 和输出 (O) 操作数区域寻址时,不会查询或更改数字量信号模块端的信号状态。而是访问 CPU 系统存储器中的存储区。该存储区称为过程映像。

过程映像的优点

与直接访问输入和输出模块相比,访问过程映像的主要优点在于在一个程序周期期间,CPU 具有一致性的过程信号映像。如果程序执行期间输入模块端的信号状态发生变化,过程映像中的信号状态仍保持不变,直到下一个周期再次更新过程映像。在用户程序中周期性地扫描输入信号的过程,确保了总有一致的输入信息。简单总结就是如果直接访问输入和输出模块,系统将无法判定执行程序。

访问过程映像还比直接访问信号模块更节省时间,因为过程映像位于 CPU 的内部存储器中。

中断选项

循环程序执行可被以下事件中断:

·中断

·以下情况触发的 STOP 命令

编程设备的运行

“STP”指令

·电源故障

·发生设备故障或程序出错

启动信息

·无

·优化启动信息:




    s  二、startup“启动OB”



“启动“OB 将在 PLC 的工作模式从 STOP 切换为 RUN 时执行一次。完成后,将开始执行主“程序循环“OB。

可以确定 CPU 启动特性的边界条件,例如,“RUN”对应的初始值。为此,请编写启动程序。启动程序包括一个或多个启动 OB(OB 编号为 100 或大于等于 123)。可以将启动的一些必要条件编写在此OB内,只有这些条件都满足才可以切换至循环OB,加强程序运行的安全些等。

启动程序在从“STOP”模式切换到“RUN”模式期间执行一次。输入过程映像中的当前值对于启动程序不可用,也不能设置这些值。

启动 OB 执行完毕后,将读入输入过程映像并启动循环程序。

启动例程的执行没有时间限制。 因此,未激活扫描循环监视时间。不能使用时间驱动或中断驱动的组织块。

功能

接通 CPU 后,它在开始执行循环用户程序之前首先执行启动程序。

通过适当编写启动 OB,可以在启动程序中为循环程序指定一些初始化变量。对启动 OB 的数量没有要求。即,可以在用户程序中创建一个或多个启动 OB,或者一个也不创建。

启动特性的参数设置

可以指定 CPU 是否保持在 STOP 模式或者是否在暖启动。此外,还可以在 CPU 属性的“启动”(Startup) 组中设置启动期间的响应(RUN 或前一模式)。

特性

请注意以下几点有关“STARTUP”模式的内容:

·执行启动 OB。不管选择哪种启动模式,已编写的所有启动 OB 都会执行。

·不执行任何基于时间的程序。

·中断控制的程序的执行仅限于:

OB 82(诊断中断)

·禁用模块上的输出。

·不更新过程映像;可以对输入进行直接 I/O 访问。

下面看一下实际效果:



当PLC初次上电或有STOP→RUN时,startup执行一次,将两个数据赋初值。



然后我们修改其中数据1的值为60修改成功,证明“启动OB”执行完初始化后不再执行。

三、Time delay interrupt_1“延时中断OB”

指定的延时时间到达后,"延时中断" OB 将中断程序的循环执行。延时时间在扩展指令 "SRT_DINT" 的输入参数中指定。

未完待续。。。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则