Цитата Сообщение от korwins Посмотреть сообщение
Ага, понятно. В руководстве это 51 и 55. Спасибо, с этим понятно.
Еще вопрос остался:
Есть ли возможность остановить таймеры шагов МЭК SFC диаграммы? Поясню - к примеру, действие в случае невыполнения в течении 20 секунд выводит ошибку и останавливает выполнение программы. Для чего нужно - в ходе работы уходим в режим "Пауза", в результате при продолжении программы тут же получаем ошибку невыполнения.
Получается, таймеры шагов МЭК SFC диаграммы работают вне зависимости от того, вызывался ли экземпляр объекта все это время.
Как их можно останавливать?
Честно говоря ни чего не понял.
Для чего нужно - в ходе работы уходим в режим "Пауза"
Зачем этот режим и что он означает?
Есть ли возможность остановить таймеры шагов МЭК SFC диаграммы?
В SFC нет таймеров шагов, по крайней мере в традиционном понимании "таймер".
Выполнение SFC программы это не работа по таймерам.
Переход от одного состояния (шага А) в другой (шаг Б) осуществляется по условиям перехода.
Добавьте к шагам переход по нужному условию на шаг "Пауза" и выводите в нем свою ошибку.
Возможно Вы используете в условиях перехода между шагами одну из специальных переменных -Step.t.
Но это не таймер, а одна из специальных переменных SFC исполнителя и содержит длительность активности шага.
Имеется еще одна -Step.x она содержит признак активности шага. Она нужна для синхронизации шагов.
Обе переменные предназначены только для чтения. Ими у правляет исполнитель SFC.
Отладчик CoDeSys позволяет изменить их значения для целей тестирования. Но делать это из программы категорически не следует.
Если заглянуть глубже, то можно заметить еще две переменные с аналогичными названиями, но начинающиеся с символа подчеркивания. Каждое МЭК действие имеет в CoDeSy s аналогичный набор переменных плюс свой экземпляр управляющей структуры SFCActionControl.
Не используйте неявные переменные на запись в рабочих программах. Это нарушает связь реального хода выполнения шагов с визуальным отображением на диаграмме. Таким образом, SFC диаграмма теряет смысл.
Грамотно реализованный программный компонент на SFC может иметь несколько у ровней вложений. Отдельные действия могут переставлять собой вложенные диаграммы. Компонент может вызывать другие POU. Но в любом случае последовательность работы компонента должна выражаться средствами языка SFC без применения трюков с неявными переменными.
Это выдержка из статьи Игоря Петрова "Отладка прикладных ПЛК программ в CoDeSys". Почитайте на досуге http://prolog-plc.ru/pb1
Нам же найдете в главе 7 и главе 8, как использовать атрибуты контроля времени активности шагов для контроля тайм-аута выполнения SFC.
Почитайте про флаги SFC. С помощью них можно управлять работой SFC программы, даже приостанавливать ее работу.