Codesys (824048), страница 5
Текст из файла (страница 5)
Или выделить шаг ивыбрать команду меню "Extras" "ZoomAction/Transition". Помимо основного действия, шаг можетвключать одно входное и одно выходное действие.Действия МЭК шагов показаны в Организаторе Объектов, непосредственно под вызывающей их POU.Редактирование действия запускается двойным щелчком мыши или клавишей <Enter>. Новые действияCoDeSys V2.32-18Что есть, что в CoDeSysдобавляются командой главного меню "Project" "Add Action". Вы можете сопоставить одному шагу до 9действий.Входное или выходное действиеВ шаг можно добавить входное и выходное действие.Входное действие выполняется один раз при активизации шага, выходное – при деактивизации.
Шаг,который имеет входное действие, обозначается буквой "Е" в левом нижнем углу, шаг с выходнымидействиями – буквой "Х" в правом нижнем углу.Входные и выходные действия могут описываться на любом языке. Для того чтобы отредактироватьвходное или выходное действие, надо дважды щелкнуть мышкой в соответствующем углу шага.Пример простого шага с входным и выходным действиями:Переход/условие переходаМежду шагами находятся так называемые переходы. Условием перехода может быть логическая переменная или константа, логический адрес или логическое выражение, описанное на любом языке.
Условие может включать серию инструкций, образующих логический результат, в виде ST выражения (т.е.(i<= 100) AND b) либо на любом другом языке. Но условие не должно содержать присваивания, вызовпрограмм и экземпляров функциональных блоков!В редакторе SFC условие перехода можно записать непосредственно около символа перехода либо вотдельном окне редактора для ввода условия (См.
раздел 5.4.4,'Extras' 'Zoom Action/Transition'). Условиезаданное окне редактора предпочтительнее!Замечание: помимо условий переходов, можно использовать тактируемый режим переходов; См. SFCtip иSFCtipmode.Активный шагПосле вызова SFC POU начальный шаг (шаг, выделенный двойной рамкой) выполняется первым. Шаг,выполняемый в данный момент, называется активным. Действия, связанные с активным шагом, выполняются один раз в каждом управляющем цикле. В режиме online активные шаги выделяются синимцветом.
Следующий за активным шагом шаг станет активным, только когда условие перехода к этомушагу будет истинно.В каждом управляющем цикле будут выполнены действия, содержащиеся в активных шагах. Далеепроверяются условия перехода, и, возможно, уже другие шаги становятся активными, но выполнятьсяони будут уже в следующем цикле.Замечание: выходное действие выполняется однократно в следующем цикле, после того, как условие переходастанет истинным.Шаг МЭКВ отличие от упрощенного SFC МЭК шаги могут включать несколько действий.
Действия МЭК шаговописываются отдельно от них и могут неоднократно использоваться в пределах данного POU, для чегоих надо связать с шагом с помощью команды главного меню "Extras" "Associate action".CoDeSys V2.32-19Что есть, что в CoDeSysКроме действий с шагом, можно связывать логические переменные.С помощью так называемых классификаторов действия и логические переменные могут активироватьсяи деактивироваться, возможно, с задержкой времени.
Например: действие может продолжать работу,даже если запустивший его шаг утратил активность; с помощью классификатора S (установка) можнопрограммировать параллельные процессы и т.д.Логическая переменная, связанная с шагом, получает значение ИСТИНА при каждой активации шага.Действие, связанное с МЭК шагом, описывается справа от него в блоке, состоящем из двух частот. Левая часть этого блока содержит классификатор, возможно, с константой времени, а правая часть содержит имя действия или логической переменной.Пример МЭК шага с двумя действиями:В режиме online все активные действия выделяются синим цветом, подобно активным шагам.
Благодаря чему достаточно легко проследить ход выполнения процесса после каждого управляющего цикла.Замечание: Если действие деактивируется, то оно выполняется еще один раз. Это означает, что каждое действиевыполняется хотя бы два раза (см. далее действие со спецификаторами).При выполнении шага сначала производится деактивация действий, затем выполняются активные действия в алфавитном порядке.Для того чтобы использовать шаги с МЭК действиями, необходимо установить опцию "Extras" "UseIEC-Steps" и подключить к проекту специальную библиотеку Iecsfc.lib.В Организаторе объектов действия показаны непосредственно под SFC POUs, которые их вызывают.Новые действия можно создавать с помощью команды "Project" "Add Action".SFC POU со списком действий в Организаторе Объектов:Классификаторы действийДля связи шагов и действий применяются классификаторы:CoDeSys V2.3NНе сохраняемоеДействие активно в течение активности шагаRВнеочередной СбросДеактивация действияSУстановкаДействие активно вплоть до сбросаLОграниченное по времениДействие активно в течение указанного времени, но недольше времени активности шагаDОтложенноеДействие активируется по прошествии указанного времени, если шаг еще активен и продолжает быть активным2-20Что есть, что в CoDeSysни, если шаг еще активен и продолжает быть активнымPИмпульсДействие выполняется один раз, если шаг активенSDСохраняемое и отложенноеДействие активно после указанного времени до сбросаDSОтложенное и сохраняемоеДействие активно после указанного времени, если шагеще активен, вплоть до сбросаSLСохраняемое и ограничен-Активно после указанного времени.ное по времениКлассификаторы L, D, SD, DS, SL требуют указания временной константы в формате TIME.Замечание: В процессе деактивации действие выполняется еще один раз.
Это относится и к действиям с классификатором P!Неявные переменные в SFCВ SFC существуют неявно объявленные переменные, которые могут оказаться полезны.Каждому шагу соответствует флаг, который хранит информацию о его состоянии. Этот флаг обозначается <StepName>.x для МЭК шагов и<StepName> для простых шагов. Этот флаг имеет значение ИСТИНА, когда соответствующий шаг активен, и ЛОЖЬ, когда неактивен.
Он может использоваться влюбом действии или переходе SFC.Аналогично, с помощью переменной <ActionName>.x, можно узнать, активно действие или нет. С помощью неявной переменной <StepName>.t можно узнать время активности МЭК шага.К неявным переменным разрешен доступ даже из другой программы. Например: boolvar1:=sfc1.step1.x;Где step1.x - неявная логическая переменная, представляющая состояние МЭК шага step1 в POU sfc1.Флаги SFCДля управления работой SFC компонента предусмотрены специальные флаги. Для использования этихфлагов необходимо объявлять их глобально или локально как входные или выходные переменные.Пример: Если в SFC POU некоторый шаг активен дольше, чем время, заданное в его атрибутах (см. ниже), устанавливается специальный флаг, доступный через переменную "SFCError" (SFCError принимаетзначение TRUE в этом случае).Вы можете использовать следующие переменные-флаги:SFCEnableLimit: Переменная типа BOOL.
Когда значение этой переменной ИСТИНА, задержка времени шага регистрируется в SFCError. Другие задержки времени игнорируются.SFCInit: Переменная типа BOOL. Когда переменная получает значение ИСТИНА, программа переходит обратно на шаг Init и все SFC флаги сбрасываются. Шаг Init становится активным, но не выполняется, пока переменная имеет значение ИСТИНА. Как только SFCInit примет значение ЛОЖЬ, выполнение программы продолжится.SFCReset: Переменная типа BOOL. Работает подобно SFCInit. Но последующее выполнение будетпродолжено после шага инициализации Init.
Поэтому флаг SFCReset можно сбросить в FALSE в самомшаге Init.CoDeSys V2.32-21Что есть, что в CoDeSysSFCQuitError: Переменная типа BOOL. Выполнение программы SFC приостанавливается, покапеременная имеет значение ИСТИНА. Посредством чего сбрасывается возможный таймаут. Времяработы любого активного шага сбрасывается, когда эта переменная снова получает значение ЛОЖЬ.SFCPause: Переменная типа BOOL. Выполнение программы SFC приостанавливается, пока эта переменная имеет значение ИСТИНА.SFCError: Эта логическая переменная принимает значение ИСТИНА, когда происходит задержка времени.
Если следом возникает вторая ошибка, она не фиксируется, пока флаг SFCError не будет сброшен. Для уточнения причины ошибки необходимо использовать флаги: SFCErrorStep, SFCErrorPOU,SFCQuitError, SFCErrorAnalyzation.SFCTrans: Переменная типа BOOL. Принимает значение ИСТИНА, когда переход активируется.SFCErrorStep: Переменная типа STRING. В этой переменной хранится имя шага, в котором обнаружена ошибка (задержка времени).SFCErrorPOU: Переменная типа STRING. В этой переменной хранится имя компонента, в которомобнаружена ошибка (задержка времени).SFCCurrentStep: Переменная типа STRING. В этой переменной хранится имя активного шага. В случае одновременного выполнения шагов в переменной сохраняется имя того шага который находится вправой ветви SFC диаграммы.SFCErrorAnalyzationTable: Переменная типа ARRAY [0..n] OF ExpressionResult сообщает результаты анализа условного выpажения перехода. Для каждого элемента выражения, формирующего значениеFALSE и соответственно задерживающего переход, заполняется структура, содержащая наименование,адрес, комментарий и текущее значение.Допускается максимум до 16 элементов (переменных), поэтому индексы массива имеют значения от 0до 15.Структура ExpressionResult и неявно используемые функции анализа включены в библиотеку AnalyzationNew.lib.
Модули библиотеки можно использовать явно в других POU, не запрограммированных вSFC.Предварительным условием анализа является обнаружение задержки в шаге. Поэтому контроль времени выполнения обязателен при анализе. Также обязательно должна быть объявлена переменная SFCError (см. выше).SFCTip, SFCTipMode: Переменные типа BOOL позволяют задать тактируемый режим выполненияSFC. Если этот режим включен – SFCTipMode=TRUE, то переход к следующему шагу возможен толькопри SFCTip, равном TRUE. Пока SFCTip имеет значение FALSE, переход не разрешен, даже если условие выполнено.Альтернативная ветвьДве и более ветви SFC могут быть альтернативными.
Каждая альтернативная ветвь должна начинатьсяи заканчиваться переходом. Альтернативные ветви могут содержать параллельные ветви и другие альтернативные ветви. Альтернативная ветвь начинается горизонтальной линией (начало альтернативы), азаканчивается горизонтальной линией (конец альтернативы) или переходом на произвольный шаг(jump). Если шаг, который находится перед линией альтернативного начала, активен, то первые переходы альтернативных ветвей начинают оцениваться слева направо.Таким образом, первым активируется тот шаг, который следует за первым слева истинным переходом.CoDeSys V2.32-22Что есть, что в CoDeSysПараллельные ветвиДве и более ветви SFC могут быть параллельными.Каждая параллельная ветвь должна начинаться и заканчиваться шагом.