Jump to content
  • Sign in to follow this  

    Tia Portal – Организационный блок прерывания с задержкой OB20

       (0 reviews)

    leigehong

    В предыдущих статьях мы обсуждали, что такое организационный блок, и говорили о главном циклическом прерывании OB1 и прерывании по времени суток OB10.

    В этой статье мы продолжим обсуждение различных OB, и на этот раз мы поговорим об организационном блоке прерывания с задержкой или OB20.

    Содержание:

    • Что такое OB20?
    • Как вызвать OB20?
    • Параметры инструкции SRT_DINT.
    • Пример программы.
    • Заключение.

    Что такое прерывание с задержкой (OB20)?

    OB20 — это организационный блок, который вызывается и выполняется операционной системой, но мы должны сообщить операционной системе, когда вызывать этот OB20.

    Операционная система получает информацию из пользовательской программы ПЛК для вызова этого OB20, она будет ждать настроенного времени задержки, а затем вызовет и выполнит любую логику внутри OB20.

    Мы создаем блок OB20 из Add a new block в дереве проекта. См. рисунок 1.

    144-1.gif

    Рисунок 1 – Создание нового блока OB20

    Теперь, когда я создал прерывание с задержкой, когда оно будет выполнено? И как настроить задержку выполнения блока?

    Опять же, OB20 является организационным блоком, что означает, что вы не вызываете блок для выполнения, но сообщаете операционной системе, когда она может вызвать его и выполнить любую функциональность, написанную внутри.

    Как сообщить операционной системе вызвать OB20?

    Чтобы сообщить операционной системе, что мы хотим вызвать OB20, мы используем SRT_DINT или прерывание задержки запуска, см. рисунок 2.

    144-2.gif

    Рисунок 2 – Инструкция задержки запуска

    Параметры инструкции SRT_DINT

    Как видно из последнего рисунка, вы можете использовать инструкцию SRT_DINT для вызова OB20. но вам нужно настроить некоторые параметры, чтобы инструкция работала.

    EN: инструкция не будет выполнена, пока на входе EN не будет представлен отрицательный фронт сигнала. Это означает, что вам нужно назначить условие из набора условий для включения сигнала, и инструкция будет работать только тогда, когда это условие истинно, а затем снова ложно.

    OB_NR: вы назначаете номер прерывания задержки, которое вам нужно вызвать, в нашем случае 20, поскольку мы создали OB20, но мы можем создать более одного прерывания задержки, и тогда нам придется вызывать каждое из них с помощью отдельной инструкции SRT_DINT.

    DTIME: это время задержки, которое вы хотите выждать перед выполнением OB20, мы установим это время на 5 секунд для симуляции.

    SIGN: Идентификатор, который появляется, когда прерывание с задержкой по времени OB вызывается в информации о событии запуска OB.

    Пример программы ПЛК

    Чтобы лучше понять OB20, мы создадим простую логику, чтобы увидеть, как OB20 может быть вызван и выполнен. Мы построим этот пример ПЛК на предыдущей логике, которую мы сделали для OB1 и OB10 в предыдущих статьях.

    Внутри OB20 мы создадим логику, которая подсчитывает, сколько циклов OB1 было вызвано и выполнено в течение 5 секунд задержки, которую мы настроили для OB20. См. рисунок 3.

    144-3.gif

    Рисунок 3 – Логика внутри OB20

    На последнем рисунке вы видите, что мы использовали инструкцию MOVE для передачи информации о количестве циклов в начале вызова OB20 и после его выполнения.

    См. рисунок 4 для остальной части логики.

    144-4.gif

    Рисунок 4 – Рассчитайте, сколько циклов выполняется за 5 секунд

    После этого мы вычтем два значения количества циклов, чтобы получить, сколько циклов было выполнено за пятисекундную задержку.

    Теперь, когда мы создали нужную нам логику, как мы можем вызвать OB20? Как объяснялось ранее, мы должны использовать инструкцию SRT_DINT. Мы будем использовать эту инструкцию внутри OB10, который мы настроили ранее для выполнения каждую минуту. Это означает, что OB20 также будет вызываться и выполняться каждую минуту, но с задержкой в 5 секунд.

    В предыдущей статье мы построили логику, которая определяет, сколько раз вызывается и выполняется OB1, мы также построили другую логику, которая будет вызывать OB10 каждую минуту.

    В этом примере мы будем использовать вызов OB10 для вызова OB20. Смотрите рисунок 5.

    144-5.gif

    Рисунок 5 – Вызов OB20 через OB10

    Ранее мы говорили, что SRT_DINT нужен отрицательный фронт сигнала на EN для начала вызова. Вот почему мы использовали сигнал TimeOfDayInterruptEnabled, который, как мы знаем, будет истинным при выполнении OB10, а затем вернется к ложному, давая нам нужный нам фронт сигнала.

    Теперь, когда вся логика ПЛК завершена, давайте скомпилируем и запустим новую симуляцию. Смотрите следующую симуляцию нашего проекта.

    spacer.png

    Видите ли, в анимации сначала значения счетчиков циклов равны нулю, но когда вызывается OB10 и TimeOfDayInterruptEnabled имеет значение true, логика будет ждать 5 секунд, а затем значения счетчиков будут обновлены счетчиками циклов.

    Вывод

    • OB20 — это организационный блок, вызываемый и выполняемый операционной системой.
    • Мы можем указать операционной системе вызвать OB20 с помощью инструкции SRT_DINT.
    Sign in to follow this  


    User Feedback

    Recommended Comments

    There are no comments to display.



    Create an account or sign in to comment

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

    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

Apply for friendship links:WhatsApp or E-mail: admin@plchmis.com
×
×
  • Create New...