Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 16

Тема: Вызов программы по событию TRUE->FALSE

  1. #1

    По умолчанию Вызов программы по событию TRUE->FALSE

    День добрый!

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

  2. #2
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,825

    По умолчанию

    Цитата Сообщение от Туман Посмотреть сообщение
    День добрый!

    Возникла задача измерить длительность сигнала на выходе ПЛК внешним прибором. Для этого решил взять другой ПЛК и добавить две задачи, первая по приходу на вход TRUE, для фиксирования момента включения. Вторая по пропаданию сигнала, для фиксирования момента выключения и расчета длительности. Однако столкнулся с проблемой вызова программы по пропаданию сигнала. Какие могут быть варианты вызова программы по заднему фронту на входе без использования циклической программы?
    Две задачи в Вашем случае -мазохизм.
    Используйте в основной программе функцию TIME().
    Запоминаете значение TIME() по фронту прихода значения "TRUE", по спаду получите новое значение TIME() и вычитаете из него ранее запомненное.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  3. #3
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,825

    По умолчанию

    PROGRAM PLC_PRG
    VAR
    R_TRIG1: R_TRIG;
    In: BOOL;
    tmp: TIME;
    F_TRIG1: F_TRIG;
    Delta: TIME;
    END_VAR

    R_TRIG1(CLK:=In);
    IF R_TRIG1.Q THEN
    tmp:=TIME();
    END_IF
    F_TRIG1(CLK:=In);
    IF F_TRIG1.Q THEN
    Delta:=TIME()-tmp;
    END_IF

    Захват-1.png
    Последний раз редактировалось petera; 17.11.2015 в 16:47.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  4. #4

    По умолчанию

    Цитата Сообщение от petera Посмотреть сообщение
    Две задачи в Вашем случае -мазохизм.
    Используйте в основной программе функцию TIME().
    Запоминаете значение TIME() по фронту прихода значения "TRUE", по спаду получите новое значение TIME() и вычитаете из него ранее запомненное.
    Через основную программу все уже давно проверено и перепроверено. Вот только непонятки в работе оборудования иногда все равно проскакивают, поэтому и приходится заниматься "мазохизмом".

  5. #5

    По умолчанию

    Цитата Сообщение от petera Посмотреть сообщение
    Две задачи в Вашем случае -мазохизм.
    Используйте в основной программе функцию TIME().
    Запоминаете значение TIME() по фронту прихода значения "TRUE", по спаду получите новое значение TIME() и вычитаете из него ранее запомненное.
    Не совсем верно сразу понял, т.е. засунуть в одну циклическую триггеры и ловить переходы? Да, в данном случае это подойдет, быстродействия хватит. Т.к. надо отловить изменения кратные мсек. Но вопрос как вызывать программу по переходу сигнала из TRUE в FALSE интересен теперь уже сам по себе

  6. #6
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,317

    По умолчанию

    Цитата Сообщение от Туман Посмотреть сообщение
    .. Но вопрос как вызывать программу по переходу сигнала из TRUE в FALSE интересен теперь уже сам по себе
    п#3 внимательно смотрим

  7. #7
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,825

    По умолчанию

    Цитата Сообщение от Туман Посмотреть сообщение
    Не совсем верно сразу понял, т.е. засунуть в одну циклическую триггеры и ловить переходы? Да, в данном случае это подойдет, быстродействия хватит. Т.к. надо отловить изменения кратные мсек. Но вопрос как вызывать программу по переходу сигнала из TRUE в FALSE интересен теперь уже сам по себе
    Нету там ни какой цикличности. Программа всего одна -PLC_PRG. Диспетчер (конфигурация) задач в моем варианте не используется!
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  8. #8

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    п#3 внимательно смотрим
    я ведь еще в теме написал изначально:
    Какие могут быть варианты вызова программы по заднему фронту на входе без использования циклической программы?
    +
    Но вопрос как вызывать программу по переходу сигнала из TRUE в FALSE интересен теперь уже сам по себе

  9. #9

    По умолчанию

    Цитата Сообщение от petera Посмотреть сообщение
    Нету там ни какой цикличности. Программа всего одна -PLC_PRG. Диспетчер (конфигурация) задач в моем варианте не используется!
    и что? это не отменяет того факта что PLC_PRG вызывается самостоятельно циклически.
    Вопрос сейчас стоит так:
    Но вопрос как вызывать программу по переходу сигнала из TRUE в FALSE интересен теперь уже сам по себе

  10. #10
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    Написать NOT и вызывать точно так же, как по переходу из FALSE в TRUE, нет?

Страница 1 из 2 12 ПоследняяПоследняя

Похожие темы

  1. Ответов: 8
    Последнее сообщение: 10.04.2017, 15:23
  2. Ответов: 5
    Последнее сообщение: 01.06.2015, 10:07
  3. Ответов: 3
    Последнее сообщение: 12.05.2015, 22:19
  4. Ответов: 3
    Последнее сообщение: 08.12.2014, 22:16

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •