PDA

Просмотр полной версии : Не выполняется PLC_PRG



S#716_0P
06.09.2017, 09:40
Добрый день,
Пытаюсь запустить проект в режиме эмуляции, но PLC_PRG не выполняется. На вкладке POU названия скриптов светло серого цвета (как будто неактивны), кроме одного POU, который повесил в конфигураторе задач на прерывание по таймеру. Если зайти в этот POU, то видно, что симуляция работает: номера строк подсвечиваются зеленым цветом, переменные меняют свои значения. Если же войти в PLC_PRG, то номера строк светло-серого цвета, в значениях локальных переменных отображаются три знака вопроса (???).
Целевая платформа проекта PLC110.60-Mv2. В Конфигурации ПЛК MinCycleLength - 10мсек, MinCycleLength - 1000мсек.
В конфигураторе задач создал еще одну задачу по таймеру, поставил ей время цикла 10мсек, приоритет 1 и повесил на нее PLC_PRG. Теперь все работает, но не хотелось бы оставлять костыль. Судя по документации Codesys так организован, что PLC_PRG должен выполняться в цикле. Может где-то нужна настройка для автоматического запуска PLC_PRG?

capzap
06.09.2017, 09:55
Судя по документации Codesys так организован, что PLC_PRG должен выполняться в цикле. Может где-то нужна настройка для автоматического запуска PLC_PRG?
судя по документации, использование задач превращает PLC_PRG в обычное не запускаемое ПОУ

Dimensy
06.09.2017, 11:20
Раз вы используете конфигуратор задач, то для PLC_PRG лучше сделать тип задачи "Свободная"

S#716_0P
06.09.2017, 11:38
Спасибо, подействовало! Убрал все задачи из конфигуратора задач и PLC_PRG заработал. Затем добавил PLC_PRG, поставил ей тип "Свободная" (freewheeling) и добавил еще одну задачу по таймеру - обе работают. Но нужно ставить приоритет дополнительных задач таким же или выше, чем у PLC_PRG иначе PLC_PRG работает, а остальные задачи - нет. Интересно будет попробовать это косяк симулятора или все таки проблема с Овеном.
И пока не удалось повесить задачу на системное событие. Нужно при старте контроллера запускать однократно задачу. Повесил ее на событие start, но POU так и остается неактивным (светло-серый).

Dimensy
06.09.2017, 13:38
И пока не удалось повесить задачу на системное событие. Нужно при старте контроллера запускать однократно задачу. Повесил ее на событие start, но POU так и остается неактивным (светло-серый).
Я подозреваю, что это аппаратно-зависимое событие и в эмуляторе просто не работает

S#716_0P
06.09.2017, 15:04
Спасибо. Тогда пока не буду заморачиваться, потом попробую на контроллере.

Осинский Алексей
08.09.2017, 09:16
Но нужно ставить приоритет дополнительных задач таким же или выше, чем у PLC_PRG иначе PLC_PRG работает, а остальные задачи - нет. Интересно будет попробовать это косяк симулятора или все таки проблема с Овеном.

Это не косяк с нашими контроллерами. Это нормальное поведение.
Задача типа Freewheeling добавляется в очередь на выполнение в момент завершения.
Если в очереди есть несколько задач - предпочтение отдается задаче с более высоким приоритетом.

Т.е. возникает ситуация, когда в очереди всегда есть задача (PLC_PRG) с наибольшим приоритетом.
Поэтому менеджер задач всегда отдает предпочтение ей и остальные задачи не выполняются.

S#716_0P
08.09.2017, 13:35
Понятно.
Значит если нужно, чтобы запускались несколько задач, то нужно ставить их с одним приоритетом.