PDA

Просмотр полной версии : Программа для ПЛК на языке SFC



corsar
12.11.2012, 21:13
В исходном состоянии все клапаны закрыты, а смеситель 5 выключен.
Когда аппарат пустой и нажимается кнопка "Пуск", открывается клапан 1 и
первая жидкость заполняет аппарат до уровня "b". Клапан 1 закрывается,
включается мешалка 5 и открывается клапан 2 подачи концентрированной
жидкости. Через 3с дополнительно открывается клапан 3. После этого через 5с закрываются клапаны 2 и 3, выключается смеситель 5 и открывается клапан 4. Смесь выливается из аппарата. После достижения уровня "a" - цикл повторяется.

Можете проверить программу, может у меня где то ошибки.

Николаев Андрей
13.11.2012, 12:46
с расширенным не работал.
Работал с простым (без МЭКшагов).
Суть Вы уловили правильно.
Единственно не увидел где Вы таймер взводите.
В SFC если выбрать шаг и левой кнопкой выбрать опции шага есть параметры минимальное и максимальное время. Можно просто задать минимальное время T#3s и на следующий шаг переход случится не ранее, чем через 3 сек.

vasylye
13.11.2012, 13:56
Step3.t>T#3S
step6.t>T#5s -- условия перехода в следующий шаг, это системная переменная шага, можно обходиться без отдельного таймера

VitVir
06.05.2013, 23:31
Всё пропало!
В версии 2.3.9.30 (а может и раньше) все не так.
Свойств шагов уже нет, зато есть булевая переменная с именем шага, и переменная с прочерком в начале, типа _STEP. Обе трушные во время активности шага.
А время шага содержится в _timeSTEP (вместо STEP - название), и появляется только в случае добавления времени в атрибуты.

petera
07.05.2013, 03:53
Всё пропало!
В версии 2.3.9.30 (а может и раньше) все не так.
Свойств шагов уже нет, зато есть булевая переменная с именем шага, и переменная с прочерком в начале, типа _STEP. Обе трушные во время активности шага.
А время шага содержится в _timeSTEP (вместо STEP - название), и появляется только в случае добавления времени в атрибуты.
Ни чего не пропало.
В кодесис программы можно писать либо в упрощенном SFC либо с использованием МЭК шагов.

Step3.t>T#3S
step6.t>T#5s -- условия перехода в следующий шаг, это системная переменная шага, можно обходиться без отдельного таймерабудет работать именно при использовании SFC с МЭК шагами.

В отличие от упрощенного SFC МЭК шаги могут включать несколько действий (до девяти).

Действия МЭК шагов описываются отдельно от них и могут неоднократно использоваться в пределах данного POU, для чего их надо связать с шагом с помощью команды главного меню "Дополнения" "Связать действие".

Кроме действий, с шагом можно связывать логические переменные.

С помощью так называемых классификаторов, действия и логические переменные могут активироваться и деактивироваться, возможно, с задержкой времени.

Например: действие может продолжать работу, даже если запустивший его шаг утратил активность; с помощью классификатора S (установка) можно программировать параллельные процессы и т.д.
Для того чтобы использовать шаги с МЭК действиями, необходимо установить опцию "Дополнения" "Использовать МЭК-шаги" и подключить к проекту специальную библиотеку IECSFC.lib.

А вообще нужно справку по кодесис читать внимательно

Неявные переменные в SFC
В SFC существуют неявно объявленные переменные, которые могут быть полезны для определения состояния шагов, действий и контроля времени активности шагов. Все они устанавливаются в начале каждого рабочего цикла.

Для МЭК шагов данные переменные поддерживаются библиотекой iecsfc.lib (структуры SFCStepType и SFCActionType), автоматически включаемой в проект. Для упрощенного SFC неявные переменные реализованы непосредственно в CoDeSys.

Логические переменные активности шагов:

Для МЭК шагов определены две переменные: StepName.x и StepName._x.
Переменная StepName.x содержит признак активности шага в текущем цикле.
Переменная StepName._x содержит признак активности шага в следующем цикле. Если StepName.x=TRUE, то шаг будет выполняться в текущем цикле. Если StepName._x=TRUE и StepName.x=FALSE, то шаг будет выполняться в следующем цикле. Соответственно значение StepName._x будет скопировано в StepName.x в начале цикла.

Для простых шагов определены аналогичные по смыслу переменные с именами StepName и _StepName. Первая имеет значение ИСТИНА, когда соответствующий шаг активен, и ЛОЖЬ, когда неактивен.

Для МЭК действий переменная: ActionName.x приобретает значение ИСТИНА, как только действие становится активным. (Не используйте переменную ActionName._x она служит для внутренних целей).

Переменные контроля времени активности шагов (TIME):

С помощью следующих неявных переменных можно узнать время, истекшее с момента получения шагом активности. Для их использования необходимо задать минимальное время активности в конфигурации шага.

Для МЭК шагов определена переменная StepName.t (StepName._t служит для внутренних целей).

Для простых шагов соответствующая переменная называется _timeStepName. Ее необходимо явно объявить, например "_timeStep1: TIME;"

Для МЭК действий неявные переменные контроля времени активности недоступны.

Неявные переменные доступны в любом действии или переходе SFC. Кроме того, к ним разрешен доступ даже из другой программы.

Например: boolvar1:=sfc1.step1.x; Где step1.x - неявная логическая переменная, представляющая состояние МЭК шага step1 в POU sfc1.