Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя
Показано с 11 по 20 из 27

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

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

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию

    Цитата Сообщение от Gans Посмотреть сообщение
    Вот так должно работать:

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

    Проще я я не умею :-)
    IF (NOT bPLC_Power_ON) THEN WHILE(TRUE) DO;END_WHILE; END_IF;

    TON по моему лишний. Даже если потеря питания не в первый цикл ПЛК,
    если уж флаг потери питания есть , то он есть и для запуска TON и для пуска бесконечного цикла. И по моему, цикла 0.5 сек для Watchdoga маловато

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

    По умолчанию

    Цитата Сообщение от mkhm Посмотреть сообщение
    IF (NOT bPLC_Power_ON) THEN WHILE(TRUE) DO;END_WHILE; END_IF;

    TON по моему лишний. Даже если потеря питания не в первый цикл ПЛК,
    если уж флаг потери питания есть , то он есть и для запуска TON и для пуска бесконечного цикла. И по моему, цикла 0.5 сек для Watchdoga маловато
    Здесь же таймер стоит, только для того что если через 500мс питание не восстановилось, то тогда уходим в рестарт, зачем лишний раз перегружаться если все продолжает работать

  3. #3

    По умолчанию

    Ясно, спасибо.

  4. #4

    По умолчанию

    все же - как именно сбрасывает вотчдог? Идет ли после этого неявная инициализация переменных?
    По ссылке, которую я давал чуть раньше, как раз обсуждались нюансы сохранения Retain'ов при перезапуске по бесконечному циклу через watchdog. Не в этом ли причина?

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

    По умолчанию

    Цитата Сообщение от Terrano1992 Посмотреть сообщение
    По ссылке, которую я давал чуть раньше, как раз обсуждались нюансы сохранения Retain'ов
    Но это не то, братцы...
    Я не использую RETAIN вообще. Но есть много обычных переменных. Инициализация их идет такими способами:

    1) Совершенно неявно: начальное значение переменной не имеет для меня значения, т.к. при первом ее использование предполагается, что этой переменной будет присвоено значение (это большинство очень локальных, временных переменных). Первая операция - запись переменной.

    2) Операцией присвоения в процессе инициализации программы: есть часть кода, которая выполняется 1 раз после старта программы. В дальнейшем значение переменной может либо использоваться в операциях чтения-записи, либо только читаться.

    3) Операцией присвоения при объявлении переменной. Интересно, эта операция производится при перезапуске от собаки?

    4) Думаю, что при запуске работы контроллера он может устанавливать свое ОЗУ в определенное состояние (скорее всего, нули). Происходит ли это в ПЛК100? Происходит ли это при перезапуске от собаки?

    Ответов на эти вопросы в той ветке я не нашел. Где-то еще есть описание разных типов сбросов ПЛК (в режиме ОНЛАЙН), сейчас буду искать. Но не уверен, что там четко сказано о собаке.

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

    По умолчанию Доигрался с собакой

    Ну, братцы, я таки действительно доигрался.

    Прошу подсказать, как мне теперь сбросить программу у ПЛК. В ходе своих экспериментов я сделал шедевр, в котором за 50 мс после старта программа уходит в мертвый цикл. После положенных 1000 мс вотчдог дает рестарт. ПЛК вякает своим противным зуммером и сидит некоторое время в глубокомысленных стартовых процедурах ("что он там так долго делает?" Обычный вопрос возле туалетной комнаты в коммуналке...). Затем он 50 мс работает. И все повторяется.

    А чуднодивный гейтвей устроен так, что системе не все равно, чем там занят процессор. Ей, видишь ли, нужно, чтобы процессор работал.
    В результате, ОНЛАЙН не включится, если проц сидит в мертвой петле. После перезапуска ПЛК система тоже не хочет с ним вязаться. Вероятно, те единственные 50 мс, когда ПЛК работает по программе, слишком малы, чтобы установить ОНЛАЙН.

    Сухой остаток: я не могу теперь подключиться к ПЛК. Я не могу перешить программу или хоть стереть ее как-то. Кто знает, каковы выходы? "Выбросить в форточку" - плохой совет. У меня 13-й этаж.

  7. #7

    По умолчанию

    Для меня это набор английских букв и символов))) всегда когда смотришь на это и думаешь неужели я когда буду в этом разбиратся

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

    По умолчанию

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

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

    По умолчанию

    "Отче наш" читать или нет?
    Впрочем, пробовал и так, и эдак. Не помогло.

    Какие еще варианты?

    ДОБАВЛЕНО: Перепрошивка помогла. Очевидно, во время загадочной надписи "Идет форматирование" (с очень эмоциональным восклицательным знаком) форматируется таки память. Слава Богу!
    Последний раз редактировалось drvlas; 11.12.2012 в 15:47.

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

    По умолчанию Каково отличие Сброса ОНЛАЙН от включения питания?

    Итак, работоспособность ПЛК восстаноовлена.

    Снова вернемся к вопросу рестарта программы. Сброс неодинаков от меню СБРОС отладчика и от включения питания

    В приложении проект. Желающие могут его развернуть и проверить, мож у меня руки кривые...

    Опишу кратко для тех, кому влом запускать проект.
    Весь_проект_с_собакой.jpg

    В проекте запускается аппаратный генератор на дискретном выходе 6.0. Частота генератора должна быть 10 Гц, меандр.

    В Конфигураторе создал Генератор с частотой Out11Freq, дьюти-сайклом Out11Duty и непрерывной генерацией.

    В программе есть начальный участок, который устанавливает частоту генератора 10 Гц. Этого должно быть достаточно, если никто больше к переменной Out11Freq не обращается?

    Компилируем, грузим проект. Запускаем, видим частоту 10 Гц. Можно и без осциллографа - в отладчике при работе ОНЛАЙН видно, что переменная Out11Freq таки равна 10.
    Сброс от Кодесиса ничего не меняет, все работает прекрасно.
    А теперь сброс кнопкой на ПЛК. И, о-па! Частота стала 1 Гц. Это видно и осциллом, и по значению переменной Out11Freq, если сейчас подключиться отладчиком. Она равна 1, то есть 1 Гц.
    Такое же поведение при выключении питания и повторном включении.

    Я так понимаю, что инициализации переменных не произошло, переменная Initialized не стала ЛОЖЬю, начальный участок программы не прокрутился... Или где? Где рыться. чтобы понять разницу в сбросах от системы отладки и от выключения питания?
    Причем, что прискорбно, именно сброс от выключения питания дает плохой (для моей задачи) результат. Бог с ней, с системой отладки, но как же работать с непонятной мне инициализацией переменных?
    Вложения Вложения

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

Похожие темы

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

Ваши права

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