在之前的文章中,我们开始讨论 TIA Portal PLC 的不同组织块,讨论了 OB 是什么,并讨论了一些 OB,例如 OB1 - 主循环、OB10 和 OB20,分别表示时间延迟和时间延迟中断。在本文中,我们将讨论西门子 Tia Portal 中的 OB100 或启动组织块。
内容:
- 什么是 OB100?
- 为什么需要 OB100?
- 启动期间的重要注意事项。
- 简单的程序示例。
什么是初创组织块(OB100)?
OB100 或启动 OB 是一个组织块,在 PLC 启动时由操作系统调用并执行一次,即每次从 STOP 模式转换到 RUN 模式时一次。
只有执行完 OB100 内部的所有启动函数后,主循环 OB1 才会被调用和执行。
您的 PLC 逻辑中可以有多个启动 OB,如果发生这种情况,操作系统将从较低 OB 编号到较高编号开始一一调用并执行所有这些启动 OB。IE。如果您有 OB100 和 OB123,则将首先调用并执行 OB100,然后再调用并执行 OB123。
执行 OB100 后,操作系统将输入模块读入 PII 并启动主循环程序 OB1。
为什么需要 OB100?
在启动循环逻辑之前,您可以使用 OB100 来执行许多您可能想要或需要执行的任务,原因如下:
- 初始化变量。
- 重置系统模块。
- 重新校准传感器/执行器。
- 在开始流程之前检查警报和安全状况。
即使您尚未为逻辑创建启动 OB,操作系统在启动主逻辑之前仍然需要执行许多任务,其中一些任务是:
- 清除非保留记忆
- 清除 PIQ
- 调用并执行启动 OB(如果有)。
- 更新个人身份信息
- 更改为 RUN 模式后启用输出。
您是否注意到启动例程的最后一个任务是启用输出? 这就是为什么执行主循环程序 OB1 的第一步是将 PIQ 写入输出模块。
启动期间的重要注意事项
关于 “STARTUP” 模式,请注意以下几点:
- 模块上的输出被禁用。
- 过程映像被初始化。
- 过程映像未更新。
- 为了在“启动”期间从输入读取当前状态,您可以通过直接 I/O 访问来访问输入。
- 为了在启动期间初始化输出,可以通过过程映像或直接 I/O 访问写入值。 在转换到“RUN”模式期间,这些值在 输出端输出。
- 非保持性位存储器、定时器和计数器被初始化。
- 数据块中的非保持性标签被初始化。
- 在启动期间,尚未运行循环时间监控。
简单程序示例
在此示例中,我们将向 PLC 逻辑添加一个启动 OB100,并查看 OB100 执行了多少次。请参阅图 1 添加新的 OB100。
图 1 – 添加 OB100
正如您从最后一张图片中看到的,您添加启动组织块的方式与我们添加功能块的功能相同。
在我们刚刚创建的 OB100 中,我们将添加一个简单的 ADD 指令,以累计 OB100 被调用和执行的次数。见图2。
图 2 – OB100的累计执行次数
现在,编译并运行您的程序,看看会发生什么。请参阅以下动画来了解 PLC 程序的模拟。
动画1
从上面的动画中可以看到,OB100CycleCounter 为 1,并且当 PLC 模式从 STOP 转换为 RUN 时它不会改变。
嗯,它确实发生了变化,但你看不到这种变化。每次 PLC 进入 STOP 模式,然后再次进入 RUN 模式。执行 OB100 后,计数器将重置为零,然后再次重置为 1。您还可以看到主 OB1 循环计数器发生变化,PLC 停止然后再次运行,OB1CycleCounter 将再次开始累加。
为了看到启动计数器的变化,我们需要保留标签内存的值。见图3。
图 3 – 保留 OB100CycleCounter 标签存储器
我们保留 OB100CycleCounter 标签后,现在再次运行 PLC 仿真,看看会发生什么。参见模拟动画2。
动画2
现在,您可以从上面的动画中看到,每次我停止 PLC 然后再次启动它时,启动计数器都会增加。由于现在保留了标签内存,因此该值不会重置为零,这就是您看到 OB100CycleCounter 的值累加的原因。
现在,我需要向启动 PLC 逻辑添加额外的功能,即了解 PLC 上次启动的时间。我们将通过一个简单的逻辑来实现这一点,在启动时读取 PLC 的本地时间并将日期和时间移动到某个存储区域。见图4。
图 4 – 启动时读取当地时间
添加逻辑后,再次编译并运行模拟。参见 PLC 仿真动画3。
动画3
从上面的动画可以看到,每次 PLC 启动时,启动日期和时间都会被记录在我们分配的内存区域中。现在我有了关于我的 PLC 启动了多少次以及上次启动时间是什么时候的信息。
结论
如果您想在运行循环过程之前评估某些功能,启动 OB 非常重要。您可以使用启动 OB 来初始化参数、校准传感器,甚至在允许流程运行之前检查安全条件。