Jump to content
  • Sign in to follow this  

    西门子 Tia Portal – OB10 时钟中断组织块

       (0 reviews)

    leigehong

    在上一篇文章中,我们讨论了什么是组织块,并且谈到了一个非常重要的组织块,它就是主 OB1

    在本文中,我们将继续讨论不同的 OB,这次我们讨论的是时间中断组织块或 OB10

    内容:

    • 中断 OB10 是一天中的什么时间?
    • 如何创建和使用 OB10?
    • 简单的程序示例。
    • 一天中中断时间的重要规则。
    • 结论。

    什么是当日时间中断 (OB10)?

    顾名思义,时间中断是一个组织块,它将在一天中的某个时间中断 PLC 程序主周期的执行。该中断时间(日期和时间)可以指定为在指定时间发生一次,或者以指定时间间隔定期发生,例如每分钟、每小时、每天、每周和一些其他选项。

    您可以在同一程序中拥有多个时钟中断,它们不必具有相同的逻辑或代码,每个中断都可以有自己的功能,并且每个中断都可以单独配置为在指定的时间发生 时间。

    如何创建和使用 OB10?

    要创建一天中的时间中断,请按照与需要在逻辑中添加任何新块时相同的步骤进行操作。见图1。

    145-1.gif

    图 1 – 添加一天中的时间中断

    按左侧项目树中的添加新块选项,选择组织块,然后选择一天中的时间中断,如上图所示。

    现在您可以打开 OB10 并添加调用此块时要执行的任何 PLC 逻辑,所谓调用是指中断事件或时间已经发生,因此操作系统将中断主周期并执行 OB10

    我们将在 OB10 中编写一段非常简单的代码,以帮助我们更好地理解这个 OB10 块的工作原理。在此逻辑中,我们使用 add 指令将值 1 添加到称为 TimeOfDayInterruptCounter 的内存区域,然后将求和结果放回同一区域。这样我们就可以有一个用于执行 OB10 的计数器。

    每次调用并执行 OB10 时,TimeOfDayInterruptCounter 的值都会加 1。见图 2。

    145-2.gif

    图 2 – 将逻辑添加到 OB10

    现在我们已经创建了 OB10 并在其中编写了一些逻辑,我们需要配置 OB10 的设置时间以及我们希望它中断主周期的次数。

    要配置 OB10 的时间和间隔设置,我们需要进入 OB10 的属性页面。见图3。

    145-3.gif

    图 3 – OB10 的属性

    在 OB10 的属性中,您会发现许多可以配置的设置和属性。

    现在我们需要的是一天中的时间中断页面,以便我们可以设置何时调用 OB10 以及调用多少次。见图4。

    145-4.gif

    图 4 – 时间中断设置

    正如您从最后一张图片中看到的,您可以设置 OB10 的执行、开始日期以及执行 OB10 的时间。

    为了模拟方便,我们将执行间隔设置为每分钟,这样每分钟都会调用并执行 OB10。这意味着从 2023 年 3 月 23 日和时间 09:25 AM 开始,TimeOfDayInterruptCounter 的值将每分钟增加 1。

    您可以选择根据 PLC 系统时间或本地时间设置时间,如上图所示。在上一篇文章中,我们讲了 PLC 的系统时间和本地时间,各个时间的含义以及如何配置和使用它们。

    正如我们之前所说,当地时间是您现在在 PC 上看到的时间。所以是 PLC 使用地区的实际时间。

    您必须根据 PLC 的使用地点配置本地时间。见图5。

    145-5.gif

    图 5 – 设置 PLC 当地时间

    简单 PLC 程序示例

    我们PLC 程序中添加了时间中断 OB10,并对其进行了设置,以便每分钟执行一次。我们还配置了 PLC 的本地时间。

    我们创建了 ADD 指令的简单逻辑,以便在每次执行 OB10 时将 TimeOfDayInterruptCounter 的值累加 1。

    我们将添加另一条指令,但在主 OB1 中,该指令是 RD_LOC_T 或读取本地时间,因此我们可以看到本地时间的进展情况并将其与 OB10 的执行进行比较。见图6。

    145-6.gif

    图 6 – 简单程序示例

    编译您的 PLC 程序并开始新的模拟。

    请注意,我们将设置中断发生的时间,以便在模拟 PLC 逻辑时可以调用并执行 OB10。请参阅以下模拟。

    spacer.png

    从动画中可以看到,TimeOfDayInterruptCounter 的值一开始为零,然后从 09:25 AM 开始每分钟增加 1,表示 OB10 每分钟执行一次。

    一天中的时间中断的重要规则

    • 如果设置时间中断以使相应的 OB 被处理一次,则启动时间不得是过去的时间(相对于 CPU 的实时时钟)。
    • 如果设置时间中断以定期处理相应的 OB,但开始时间是过去的时间,则在下次到期时根据当前时间处理时间中断 OB。
    • 周期性时间中断的日期必须与实际日期相对应。例如,开始日期为 1/31 的时间中断 OB 每月重复一次是不可能的。在这种情况下,仅在有 31 天的月份中启动 OB。
    • 启动期间激活的时间中断只有在启动完成后才会执行。
    • 启动会删除由用户程序中的指令设置和激活的所有时间中断。

    结论

    OB10 是一个组织块,可配置为在特定日期和时间中断程序循环。该中断可以发生一次,也可以每隔一定时间定期发生。

    没有具体原因说明您需要 OB10,因为这取决于您的流程和逻辑。是的,您可以使用您的个人代码实现相同的功能,但它是一个可用且易于使用的内置函数。而且你知道如何使用它。

    Sign in to follow this  


    User Feedback

    Create an account or sign in to leave a review

    You need to be a member in order to leave a review

    Create an account

    Sign up for a new account in our community. It's easy!

    Register a new account

    Sign in

    Already have an account? Sign in here.

    Sign In Now

    There are no reviews to display.


×
×
  • Create New...