Страница 2 из 9 ПерваяПервая 1234 ... ПоследняяПоследняя
Показано с 11 по 20 из 86

Тема: Помогите разобраться...

Комбинированный просмотр

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

    По умолчанию

    Теперь осталось понять, как правильно вызывать таймер по IF...
    С условием по выходу триггера проще делать без таймера:
    Код:
    VAR
    	timeout: TIME;
    	output: BOOL;
    END_VAR
    
    IF что-нибудь THEN
    	timeout := TIME() + T#5s;
    END_IF
    
    output := TIME() >= timeout;

  2. #2
    Пользователь
    Регистрация
    13.08.2012
    Адрес
    Питер
    Сообщений
    127

    По умолчанию

    Цитата Сообщение от Yegor Посмотреть сообщение
    С условием по выходу триггера проще делать без таймера:
    Код:
    VAR
    	timeout: TIME;
    	output: BOOL;
    END_VAR
    
    IF что-нибудь THEN
    	timeout := TIME() + T#5s;
    END_IF
    
    output := TIME() >= timeout;
    Сейчас кодесиса под рукой нет... Я правильно понимаю эту конструкцию, что
    "Если 'что-нибуть' TRUE, то через 5 сек. output будет TRUE"... Так?

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

    По умолчанию

    А у нас TIME() меньше 0 при старте ?
    То что изображено - это NOT TOF.Q

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

    По умолчанию

    А у нас TIME() меньше 0 при старте ?
    К первому циклу уже больше, если не ошибаюсь.
    "Если 'что-нибуть' TRUE, то через 5 сек. output будет TRUE"... Так?
    В данном случае немного иначе: «если „что-нибудь“ TRUE, то на следующие 5 секунд output сделать FALSE, в остальное время держать TRUE».

    Таймер в таких ситуациях задалбывает требованием его вызывать. Если б хоть можно было писать timer(IN := ..., NOT Q => output) — ан нет, хрен тебе (при том, что в диаграммах отрицание ставится на любой вход или выход). В итоге лишние строки. Конечно, когда условие включения таймера держится, то лучше использовать нормальные TON, TOF и т.п.
    Последний раз редактировалось Yegor; 18.09.2012 в 05:15.

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

    По умолчанию

    Цитата Сообщение от Yegor Посмотреть сообщение
    Если б хоть можно было писать timer(IN := ..., NOT Q => output) — ан нет, хрен тебе
    Я знал! Я знал!

    notq.png

    В Стандарте есть эта фишка! Кодесис в очередной раз подтверждает своё весьма условное соответствие. Причём третья версия тоже это не поддерживает.

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

    По умолчанию

    Код:
    VAR
    	timeout: TIME;
    	output: BOOL;
    END_VAR
    
    IF что-нибудь THEN
    	timeout := TIME() + T#5s;
    END_IF
    
    output := TIME() >= timeout;
    А ничего, что при постоянном что-нибудь=TRUE output будет иногда подниматься ?

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

    По умолчанию

    При «постоянном что-нибудь=TRUE» output будет постоянно FALSE. Ну и вообще я не просто так ограничил применимость этого решения:
    С условием по выходу триггера

  8. #8
    Пользователь
    Регистрация
    13.08.2012
    Адрес
    Питер
    Сообщений
    127

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    наверное имеется ввиду, когда пройдет 49 с хвостиком суток от включения плк
    Э-э-э... А почему 49 с хвостиком суток???

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

    По умолчанию

    Авторы Arian-5 тоже так предполагали

    Т.е. этот код зависит не только от "что-нибудь" ?

    В 1996 году отличились французы. Из-за ошибок в программном обеспечении 4 июня был прерван полет космической ракеты Ariane 5. Убытки в результате составили более 500 миллионов долларов. А причина крылась в том, что по недосмотру переменная, которая описывала горизонтальную скорость ракеты, была представлена целым 16-битным числом. В результате, как только эта значение переменной превысило 32 768 (2 в 15-й степени), система управления ракетой, что называется, “подвисла”, а “сошедшую с ума” ракету пришлось уничтожить.
    уже в 90-х годах. На этот раз пострадали бравые американские военные ракетчики, принимавшие участие в операции “Буря в пустыне”. К их удивлению, ракеты “Пэтриот”, использовавшиеся для перехвата в воздухе иракских ракет, периодически проходили мимо цели. Разбирательства начались после того, как пропущенная иракская ракета привела к гибели 28 американских солдат. Первоначально зародилось подозрение, что часть “Пэтриотов” технически неисправны. Однако созданная по этому поводу комиссия с удивлением обнаружила, что все обследованные ракеты абсолютно работоспособны. Вы уже, наверное, догадались, где пряталась ошибка? Конечно же, в программном обеспечении, использовавшимся американским зенитно-ракетным комплексом. Выяснилось, что система создавалась в расчете на то, что время ее непрерывной работы не будет превышать 14 часов, однако на практике комплексы непрерывно работали по 100 и более часов.Вроде бы пустяк, но оказалось, что используемое для определения времени программное обеспечение накапливало ошибки. За 100 часов работы набегала разница в 0,34 секунды. Программисты, оказывается, знали об этом, да посчитали факт несущественным...
    Последний раз редактировалось Валенок; 18.09.2012 в 15:00.

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

    По умолчанию

    При «постоянном что-нибудь=TRUE» output будет постоянно FALSE. Ну и вообще я не просто так ограничил применимость этого решения ..c условием по выходу триггера
    Да хоть и триггером - те же проблемы. И тогда же :
    ввиду, когда пройдет 49 с хвостиком суток от включения плк
    Бывает такая нездоровая фигня как стабильное питание и безаварийная работа. Ну мы ж сразу закладываем броски и ПНР бесконечно-периодический...

Страница 2 из 9 ПерваяПервая 1234 ... ПоследняяПоследняя

Похожие темы

  1. помогите разобраться
    от Барон в разделе ПЛК1хх
    Ответов: 16
    Последнее сообщение: 17.11.2010, 08:30
  2. помогите разобраться
    от a_l_e_x в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 02.07.2010, 15:51
  3. Помогите разобраться...
    от xaker_tm в разделе ПЛК1хх
    Ответов: 7
    Последнее сообщение: 08.02.2010, 17:33
  4. ТРМ 12, помогите разобраться.
    от SEREG@ в разделе Эксплуатация
    Ответов: 3
    Последнее сообщение: 12.01.2009, 14:21
  5. Помогите разобраться !!
    от viking в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 21.11.2007, 14:31

Ваши права

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