Страница 2 из 2 ПерваяПервая 12
Показано с 11 по 15 из 15

Тема: как подвесить плк100/150?

  1. #11

    По умолчанию

    Дико извиняюсь, что встреваю в дискуссию. Таймер WDT в ПЛК реализован аппаратно внутри процессора AT91RM9200. Сброс WDT идет в конце цикла плк. Пока не было ситуации что бы WDT не срабатывал как положено.
    Программа содержащие циклы while, repeat, for время в нахождения которых превышает время цикла ПЛК - заведомо неправильна. Если время внутри цикла сканирования превысит время сброса WDT - программа перезагрузится.
    Цикл организованный средствами SFC - не зависнет т.к. после каждого шага - конец цикла и сброс WDT.


    И наконец - РЕАЛЬНАЯ проблема - пользователь пишет программу в которой при некотором сочетании входных элементов и параметров происходит подвисание срабатывает WDT, программа загружается и снова WDT - и так бесконечно. Вот от таких вещей надо защитится

  2. #12

    По умолчанию

    Цитата Сообщение от Малышев Олег Посмотреть сообщение
    Программа содержащие циклы while, repeat, for время в нахождения которых превышает время цикла ПЛК - заведомо неправильна.

    Цикл организованный средствами SFC - не зависнет т.к. после каждого шага - конец цикла и сброс WDT.
    я вот в ходе тестов, описанных здесь ранее, подвесил ПЛК150 вот таким безобидным кодом:

    while Temperаtura < 100 do
    TEN:=true;
    end_while;
    где Temperаtura - прямое обращение к аналоговому входу 1, а TEN - прямое обращение к дискретному выходу 3...

    и вот это тоже РЕАЛЬНАЯ проблема, на мой взгляд. Ведь за время цикла ПЛК в 10 мс (да и за максимальные 1000 мс) ничего нагреть не успеешь, никакой датчик среагировать не успеет, никакой процесс не изменит своих выходных параметров... получается область применения циклов While - это только энкодеры и какие-то быстрые вычислительные процессы (даже представить не могу, как его можно применить "в жизни", не повесив ПЛК)...

    While do может повесить ПЛК! - до сих пор не укладывается в голове - я даже Владислава здесь обидел своими сомнениями...
    Впрочем, теперь воспринимается как "с этим надо жить, это - реальность". :о))))

    Да, реальность такова - переписываю блоки управления температурой с while на if и вставляю блок "ПЛК-киллер" с одним единственным безобиднейшим циклом While do...

    з.ы. и For туда же??? я плакаю :о((( а что тогда остаётся?..
    з.з.ы. да, про sfc понятно, спасибо! на самом деле эти "шаги" - не те "гоу-то", какие были в Паскале, это совсем другая кухня в принципе...
    з.з.з.ы. хм, единичный циклик (Step) в sfc это - "делать содержимое в скобках до тех пор, пока не выполняется условие выхода"... но это и есть практически: repeat () until (условие); или while (условие) do ( ) end_while;
    Последний раз редактировалось Dimur; 05.05.2010 в 12:46.

  3. #13

    По умолчанию

    И еще раз ВНИМАТЕЛЬНО читаем

    "И наконец - РЕАЛЬНАЯ проблема - пользователь пишет программу в которой при некотором сочетании входных элементов и параметров происходит подвисание срабатывает WDT, программа загружается и снова WDT - и так бесконечно. Вот от таких вещей надо защитится"

    ПЛК не подвешивается, а уходит в бесконечную перезагрузку. Есть способ ее прервать - удерживать пуск.

    Еще раз - программы для ПЛК так не пишут - читам букварь IEC-61131-3. Цикл ПЛК и есть нужный цикл - не нужно плодить лишних
    TEN :=(Temperаtura < 100);

    И насчет, истина - предлагаю выложить номер прошивки, таргета, зав. номер прибора и программу проверить на ПЛК150 не составит труда.
    Чудес не бывает. Не может быть что бы в кристалле процессора прошли такие изменения что не работает WDT
    Часто задаваемые вопросы по кодесис
    1) Почему программа не работает - Следует выполнить "Онлайн ->Старт"
    2) Где скачать CoDeSys, таргеты, прошивки, библиотеки - http://www.owen.ru/catalog/codesys_v3/opisanie

  4. #14

    По умолчанию

    Цикл плк измеряется от 1 до 1000 ms
    ЦИКЛ ПЛК
    чтение входов
    выполнение пользовательских программ
    (обслуживание системы)
    запись выходов
    сброс WDT
    отдых
    КОНЕЦ_ЦИКЛА_ПЛК
    Часто задаваемые вопросы по кодесис
    1) Почему программа не работает - Следует выполнить "Онлайн ->Старт"
    2) Где скачать CoDeSys, таргеты, прошивки, библиотеки - http://www.owen.ru/catalog/codesys_v3/opisanie

  5. #15

    По умолчанию

    Спасибо за ликбез, учту.
    Довольно непривычно перекладывать Паскаль на ПЛК.

    я без труда реализую то, что было задумано доступными средствами, без while do.

    Самое главное, что тема раскрыта, спасибо!

    2 Малышев Олег: я вечеров пришлю Вам в личку номер ПЛК, год, прошивку и программку - проверки и установки безопасного режима при перезагрузке ПЛК, как я её вижу.
    пока что все реле ПЛК150 не замыкаются на True, установленное в качестве "безопасного режима", но успешно размыкаются, при False. Коряворучие собственное не исключаю, естественно, но уж дюже хочется его проверить.

Страница 2 из 2 ПерваяПервая 12

Ваши права

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