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

Тема: Время цикла ПЛК больше 100мс

  1. #1

    По умолчанию Время цикла ПЛК больше 100мс

    Доброе время суток!

    Использую ПЛК110-60М + СП270(RS-485-I) + МВ110-8АС(RS-485-II) +
    МВ110(RS-485-II) для автоматизации котла ДКВР. Прошивка 2.12.7 Таргет 2.10.

    Во время выполнения программы в ПЛК, время цикла составляет чуть более 100 мс. В модуле STATISTIC горит CPU Overloaded. Котел проработал примерно сутки, после чего ПЛК завис. Проявилось это в том, что на панели СП270 значение времени цикла ПЛК из модуля STATISTIC замерло на величине 110, не производилось регулирование ПИД регуляторов (по газу открылась заслонка на максимум и по воздуху закрылась на минимум), ПЛК не отлавливал нажатие кнопки СТОП (прописано в основной программе PLC_PRG). Min cycle length - 50 мс, Max cycle length 1000 мс.

    Может ли CPU Overloaded каким нибудь образом способствовать зависанию ПЛК? Какие методы оптимизации рабочей программы можно использовать для предотвращения зависания ПЛК? Какие механизмы имеются в ПЛК, которые выведут его из зависшего состояния? Весь проект написан на ST.
    Последний раз редактировалось Aplle; 28.06.2011 в 19:04.

  2. #2
    Пользователь
    Регистрация
    11.01.2009
    Адрес
    Кострома
    Сообщений
    3,144

    По умолчанию

    Ну, скорее всего нужно смотреть программу.
    Где-то зацикливание.
    Выкладывайте.

  3. #3

    По умолчанию

    Не использовать While, переход на метку и тому подобное. Очень аккуратно обращаться с указателями и все в таком духе.

  4. #4

    По умолчанию

    Использую циклы for и крайне редко, указатели не использую вообще. Переходы на метку тоже не использую.

  5. #5
    Пользователь
    Регистрация
    11.01.2009
    Адрес
    Кострома
    Сообщений
    3,144

    По умолчанию

    Тогда удачи........

  6. #6
    Пользователь
    Регистрация
    10.05.2011
    Адрес
    Харьков
    Сообщений
    21

    По умолчанию

    Цитата Сообщение от Александр Приходько Посмотреть сообщение
    Не использовать While, переход на метку и тому подобное. Очень аккуратно обращаться с указателями и все в таком духе.
    Я бы уточнил:
    не использовать циклы с неизвестным заведомо количеством итераций;
    не использовать переходы на метку назад по коду.

    По поводу оптимизации:
    Не выполняйте весь код каждый цикл ПЛК. Каждый, логически отдельный, кусок кода выполняйте только тогда, когда есть потребность данных, получаемых в результате выполнения этого куска.
    Например:
    1. У вас в программе два (или больше) ПИД регулятора. Выполняйте их в периодической задаче каждые Х мс. Думаю для вашего случая Х = 100-200 мс. При этом, каждый ПИД выполняйте в отдельном цикле контроллера (отдельном от других ПИД).
    2. Вы рассчитываете технологические параметры по каким-нибудь формулам. Посмотрите кто потребляет эти параметры. Если ПИД, то тех. параметры ему нужны только каждые Х мс, если панель оператора, то ей параметры не нужны чаще, чем раз в 500 мс.
    3. Как часто обновляются измеренные аналоговые величины? Рассчитывать тех. параметры чаще, чем обновляются их аналоговые сигналы, не имеет смысла.
    4. И т.д. в таком же духе.

  7. #7

    По умолчанию

    Очень интересен первый пункт, можно подробнее. Если не затруднит с примером реализации. У меня особенность: пид регуляторы включаются на разных этапах розжига котла. Что такое периодические задачи? Каким образом их применить в моем случае? У меня в проекте текущий этап обозначен через глобальную переменную. Каждый этап описан в своей программе. В PLC_PRG в зависимости от значения этой переменной вызывается программа отвечающая за выполнение текущего этапа.

  8. #8

    По умолчанию

    На мой взгляд, лучше для ST писать все в одной программе PLC_PRG без лишних переходов к POU. Делать всё по шагам с привязкой по таймеру.

  9. #9

    Wink отладка

    Цитата Сообщение от Адрей Посмотреть сообщение
    На мой взгляд, лучше для ST писать все в одной программе PLC_PRG без лишних переходов к POU. Делать всё по шагам с привязкой по таймеру.
    Это ошибка - при проектах средней сложности время на отладку возрастает на порядок.

    Мои рекомендации. Основная программа на ST. Внутри нее небольшая логика по перезапуску машины состояний. Основная машина состояний на SFC. Внутри SFC - на каждое состояние действие которое умещается на один экран. Если больше - лучше вынести в отдельный POU.

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

  10. #10

    По умолчанию

    Цитата Сообщение от Малышев Олег Посмотреть сообщение
    Это ошибка - при проектах средней сложности время на отладку возрастает на порядок.
    Я с вами согласен про машину состояний (движок программы) применимо для сложных задач вы ответили как штатный программист.... Но для алгоритма автоматики котла нужна высокая оперативность и минимальная загрузка ПЛК. Применять движок, смысла нет. Процесс работы котла ступенчатый значит и алгоритм должен быть таков. А для написания хорошего алгоритма время не должно быть критично. Котел все таки.

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

Ваши права

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