Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 27

Тема: Быстрый рестарт ПЛК по "передергу" питания

  1. #1
    Пользователь Аватар для drvlas
    Регистрация
    30.09.2010
    Адрес
    Киев
    Сообщений
    700

    По умолчанию Быстрый рестарт ПЛК по "передергу" питания

    Включил недавно модуль статистики, а толком его использовать не получается. Прошу помощи.

    Задача такая. При выключении питания ПЛК пробует повисеть на аккумуляторе, "цепляется за жизнь". Как результат, выключение питания и включение его через 5-10 секунд не приводит к перезапуску программы ПЛК с нуля. А мне нужно, чтобы приводил именно к перезапуску. То есть, он цепляется, а мы его топориком...

    Решение 1: выпаять аккум. Работает. Но изделия идут в серию, выпаивание не есть гут.

    Решение 2: Ловлю, когда модуль статистики показывает, что питание пропало, запускаю таймерок (на всякий случай) и через 50 мс говорю: "питалово йок!"

    Код:
    TON_Power( IN:= (NOT bPLC_Power_ON) AND (NOT TON_Power.Q), PT:=T#50ms);
    IF TON_Power.Q THEN bPWR_Was_Bad := TRUE; END_IF
    А по появлению bPWR_Was_Bad я вызываю программу инициализации, кагбэ перезапуская все с нуля.

    И что странно: плохо работает! Вчера, когда аккум был разряжен, вроде как работало. А сегодня - не хочет даже после выключения на 10 секунд перестартовывать. Как понаблюдать в онлайне - не ясно, срывается же связь без питания...

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

    Спасибо!

  2. #2
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,243

    По умолчанию

    по пропаданию питания запустите бесконечный цикл, вроде по быстрому рестартанет

  3. #3

    По умолчанию

    каковы канонические подходы к использованию информации о пропадании питания?
    Загнать программу в бесконечный цикл, чтобы ПЛК по watchdog'у перезагрузился. Вот одна из тем на этот счет:
    http://www.owen.ru/forum/showthread.php?p=7351

  4. #4
    Пользователь Аватар для drvlas
    Регистрация
    30.09.2010
    Адрес
    Киев
    Сообщений
    700

    По умолчанию

    Спасибо, коллеги!

    Учел замечание от автора той темы, коллеги SergeyNG, о том, что во время первого скана ПЛК еще не знает, что питанию ж*па.

    Поэтому все же оставил ожидание в течение 500 мс, проверку надежности смерти:

    Код:
    TON_Power( IN:= (NOT bPLC_Power_ON) AND (NOT TON_Power.Q), PT:=T#500ms);
    IF TON_Power.Q THEN
    	WHILE TRUE
    		DO ;
    	END_WHILE
    END_IF
    Работает замечательно! Параллельно ПЛК включена панель ИП320, которая, да будет известно уважаемым коллегам, прекрасно работает при снижении питания до 10 В. Поэтому выключение 24-вольтового блока питания не сразу отражается на "морде лица" панели, ее импульсный стабилизатор вытягивает, сколько может. Я пробовал настолько быстро передергивать питание, что панель еще не погасла - а ПЛК уже все уловил, постоял в глубоком раздумье - и рестартовал.
    Переживать, что он "словит" короткий провал в питании я не буду. Провал может породить всякой гадости в системе - поэтому для моих приборов предпочтительнее "словить" и перезапуститься, чем вытягивать работу до последнего. Ну, это мои подробности, я больше приборист, чем автоматчик.

  5. #5

    По умолчанию

    Цитата Сообщение от drvlas Посмотреть сообщение
    Поэтому все же оставил ожидание в течение 500 мс, проверку надежности смерти:

    Код:
    TON_Power( IN:= (NOT bPLC_Power_ON) AND (NOT TON_Power.Q), PT:=T#500ms);
    IF TON_Power.Q THEN
    	WHILE TRUE
    		DO ;
    	END_WHILE
    END_IF
    Работает замечательно!
    Можно немного проще :-)
    Код:
    TON_Power( IN:= (NOT bPLC_Power_ON) AND (NOT TON_Power.Q), PT:=T#500ms);
    WHILE TON_Power.Q DO; END_WHILE
    Автоматизация Диспетчеризация Сервис
    e-mail: ads-kaluga@mail.ru

  6. #6
    Пользователь Аватар для drvlas
    Регистрация
    30.09.2010
    Адрес
    Киев
    Сообщений
    700

    По умолчанию

    Точно! Спешил

  7. #7

    По умолчанию

    Цитата Сообщение от drvlas Посмотреть сообщение
    Точно! Спешил
    Еще один вопрос :-) В строке: TON_Power( IN:= (NOT bPLC_Power_ON) AND (NOT TON_Power.Q), PT:=T#500ms);

    Для чего тут "AND (NOT TON_Power.Q)"? Без него должно работать не хуже, или я что-то недопонял?
    Автоматизация Диспетчеризация Сервис
    e-mail: ads-kaluga@mail.ru

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

    По умолчанию

    Цитата Сообщение от Gans Посмотреть сообщение
    или я что-то недопонял?
    Да х.з., у меня сложные отношения с таймерами. Когда-то пробовал, получилось запускать именно так, вот с тех пор и ставлю всегда по шаблону. А что, можно иначе?
    Если говорить не о случае, когда просто делается задержка на таймере...

  9. #9

    По умолчанию

    Вот так должно работать:

    TON_Power(IN:= NOT bPLC_Power_ON, PT:=T#500ms);
    WHILE TON_Power.Q DO; END_WHILE

    Проще я я не умею :-)
    Автоматизация Диспетчеризация Сервис
    e-mail: ads-kaluga@mail.ru

  10. #10
    Пользователь Аватар для drvlas
    Регистрация
    30.09.2010
    Адрес
    Киев
    Сообщений
    700

    По умолчанию

    Цитата Сообщение от Gans Посмотреть сообщение
    Проще я я не умею :-)
    Если выбросить одно "я", то будет проще!

    Да, именно так сейчас и запустил. Работает

    Теперь у меня изменится шаблон...

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

Похожие темы

  1. Ответов: 7
    Последнее сообщение: 27.02.2013, 19:08
  2. Ответов: 8
    Последнее сообщение: 29.03.2011, 14:07
  3. Ответов: 3
    Последнее сообщение: 30.09.2010, 22:30
  4. как выбрать управление "прямое" или "обратное"
    от maxmore в разделе Эксплуатация
    Ответов: 1
    Последнее сообщение: 18.01.2010, 10:13

Ваши права

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