Codesys (824048), страница 3
Текст из файла (страница 3)
Объявлять экземпляр функционального блока в теле функции нельзя. Экземпляры функционального блока доступны в том POU, в котором они объявлены, если они не объявлены глобально.Экземпляры функциональных блоков могут быть использованы в качестве входных переменных другихфункциональных блоков или функций.Замечания. После выполнения функционального блока все его переменные сохраняются до следующего выполнения. Следовательно, функциональный блок, вызываемый с одними и теми же входными параметрами,может производить различные выходные значения.Если хотя бы одна переменная функционального блока объявлена как RETAIN, то все данные экземпляров целиком помещаются в энергонезависимый сегмент.Вызов функционального блокаДля обращения к входным и выходным переменным функционального блока извне необходимо указатьимя экземпляра функционального блока, следующей за ней точкой и именем переменной:<Имя экземпляра>.<Имя переменной >Присваивание параметров при вызове:В текстовых языках (IL, ST) задать актуальные параметры и считать значения выходов можно непосредственно при вызове экземпляра функционального блока.
Для входных переменных применяетсяприсваивание ":=", выходы считываются при помощи "=>". Этот процесс упрощается, если использовать ассистент ввода (<F2>) с включенной опцией вставки с аргументами (With arguments).Пример:Допустим, FBINST - это локальная переменная типа функциональный блок, имеющий входную переменную xx и выходную переменную yy. При вставке FBINST в ST с помощью ассистента ввода получается следующая заготовка:FBINST1(xx:= , yy=> );Переменные вход-выход:Обратите внимание, что переменные вход-выход (VAR_IN_OUT) передаются в экземпляр функционального блока через указатели. Поэтому таким переменным нельзя присваивать константы при вызове.Пример:VARinst: fubo;var: int;END_VARvar1 := 2;CoDeSys V2.32-4Что есть, что в CoDeSysinst(instout1 := var1^);не допустимые попытки присваивания констант:inst(instout1:=2); или inst.inout1:=2;Примеры вызова экземпляра вышеописанного функционального блока FUB:Результат умножения сохраняется в переменной ERG, а результат сравнения в переменной QUAD.
Экземпляр функционального блока FUB называется INSTANZ.Вызов экземпляра функционального блока в IL:Тот же пример в ST (раздел объявлений такой же, как и в предыдущем примере):Тот же пример в FBD:CoDeSys V2.32-5Что есть, что в CoDeSysВ SFC экземпляры функциональных блоков могут вызываться только из действий шага.ПрограммаПрограмма – это POU, способный формировать произвольное значение во время вычислений. Значениявсех переменных программы сохраняются между вызовами. В отличие от функционального блока экземпляров программы не существует. Программа является глобальной во всем проекте.Пример программы:Нельзя вызывать программу из функции.Если вызвать программу, которая изменит значения своих переменных, то при следующем вызове еепеременные будут иметь те же значения, даже если она вызвана из другогоPOU.В этом заключается главное различие между программой и функциональным блоком, в котором изменяются только значения переменных данного экземпляра функционального блока.Объявление программы начинается ключевым словом PROGRAM и заканчивается ключевым словомEND_PROGRAM.Так же, как и для экземпляров функциональных блоков, в текстовых языках (IL, ST) задать актуальныепараметры и считать значения выходов можно непосредственно при вызове программы.
Для входныхпеременных применяется присваивание ":=", выходы считываются при помощи "=>".Пример вызова программы:IL:CALCoDeSys V2.3PRGexample22-6Что есть, что в CoDeSysLDSTPRGexample2.out_varERGИли с присваиванием параметров:CAL PRGexample2(in_var:=33, out_var=>erg )ST:PRGexample2;Erg := PRGexample2.out_var;Или с присваиванием параметров:PRGexample2(in_var:=33, out_var=>erg );FBD:PLC_PRGПрограмма PLC_PRG – это специальный POU, который должен быть в каждом проекте. Эта программавызывается один раз за цикл управления.При создании нового проекта автоматически открывается диалог "Project" "Object Add", предлагающий создать новый POU - программу с именем PLC_PRG.Не следует менять предложенные установки.Если определить последовательность выполнения задач в Task Configuration, то проект может не содержать PLC_PRG.Внимание: Нельзя удалять или переименовывать POU PLC_PRG(если Task Configuration не используется).PLC_PRG является главной программой в однозадачном проекте.ДействиеПрограммы или функциональные блоки могут быть дополнены действиями.
Фактически действия - этодополнительный набор встроенных в POU подпрограмм. Действия могут описываться на языке, отличном от того, на котором выполняется соответствующий функциональный блок или программа.Действие оперирует с теми же данными, что и функциональный блок или программа, к которой онопринадлежит.CoDeSys V2.32-7Что есть, что в CoDeSysПример действия функционального блока:В данном примере функциональный блок Counter увеличивает или уменьшает выходную переменную"out" в зависимости от значения входа "in".
При вызове действия Reset выходная переменная принимаетзначение 0. Одна и та же переменная "out" используется в обоих случаях.Вызов действия:Действие вызывается с помощью идентификатора:<Имя_программы>.<Имя_действия> или <Имя_экземпляра>.<Имя_действия >.Если нужно вызвать действие из POU, к которому оно принадлежит, то в текстовых языках используется имя действия, а в графических – функциональный блок без указания имени экземпляра.Пример вызова вышеописанного действия:PROGRAM PLC_PRGVARInst : Counter;END_VARIL:CAL Inst.Reset(In : = FALSE)LD Inst.outST ERGST:Inst.Reset(In := FALSE);Erg := Inst.out;FBD:Замечание Действия играют ключевую роль в SFC (подробнее смотри раздел SFC).Стандарт МЭК определяет только действия SFC шагов. Применение действий в функциональных блоках и программах является расширением CoDeSys.CoDeSys V2.32-8Что есть, что в CoDeSysРесурсыРесурсы отвечают за конфигурацию проекта, включая:§§§§Глобальные переменные, используемые во всем проекте.Менеджер библиотек (Library manager) для подключения необходимых библиотек к проектуЖурнал записи действий во время исполненияКонфигуратор тревог (Alarm Configuration) для конфигурирования обработки тревог в проекте§ Конфигуратор ПЛК (PLC Configuration) для конфигурирования аппаратуры контроллера.§ Конфигуратор задач (Task Configuration) для управления задачами§ Менеджер рецептов (Watch and Receipt Manager) для просмотра и заказа наборов значенийпеременных§ Опции целевой системы (Target Settings)§ Рабочая область для отображения опций проектаВ зависимости от системы исполнения и ее опций могут подключаться дополнительные объекты:§§§§§Sampling Trace - для задания графической трассировки значений переменных.Parameter Manager - для взаимодействия с другими контроллерами в сетиPLC-Browser - монитор ПЛКTools – для вызова внешних, специфичных для каждой платформы инструментовSoftMotion – компоненты системы управления движением (в соответствии с лицензией), редакторы CNC и CAMБиблиотекиПроект может использовать несколько библиотек, в которые входят POU, необходимые им типы данных и глобальные переменные.
Библиотечные POU можно использовать точно так же, как и определенные пользователем.Библиотеки "standard.lib" и "util.lib" обязательно входят в стандартный комплект поставки.(См. «Менеджер библиотек»)Типы данныхКроме стандартных типов данных, вы можете использовать определяемые пользователем типы данных.Ими могут быть структуры, перечисления и ссылки.(См. «Приложение Типы данных»)ВизуализацияС помощью визуализации пользователь может создать графическое представление проекта. Форма ицвет графических элементов будут изменяться при работе программы в зависимости от значений переменных.Визуализация может исполнятся в системе программирования, в отдельном приложении CoDeSys HMIили как Web или целевая (в ПЛК) визуализация.
(См. раздел «CoDeSys Визуализация»)2.2 Языки программированияCoDeSys поддерживает следующие текстовые:••Instruction List (IL)Structured Text (ST)и графические МЭК языки:•CoDeSys V2.3Sequential Function Chart (SFC)2-9Что есть, что в CoDeSys••Function Block Diagram (FBD)Ladder Diagram (LD)Кроме того, CoDeSys включает поддержку, основанного на Функциональных Блоковых Диаграммах,редактора Continuous Function Chart (CFC).2.2.1 Список инструкций (IL)Язык IL (Instruction list) дословно – список инструкций. Каждая инструкция начинается с новой строкии содержит оператор и, в зависимости от типа операции, один и более операндов, разделенных запятыми.Перед операндом может находиться метка, заканчивающаяся двоеточием (:).
Комментарий долженбыть последним элементом в строке. Между инструкциями могут находиться пустые строки.Пример:LDSTGEJMPCLDEQSTNnext:17lint(* комментарий*)5nextidwordistruct.sdwordtest2.2.2 Модификаторы и операторы ILВ IL можно использовать следующие операторы и модификаторы:Модификаторы:Сс JMP, CAL, RET:инструкция выполняется только тогда, когда результат аккумулятора ИСТИНА.Nс JMPC,CALC, RETC:инструкция выполняется тогда, когда результат аккумулятораЛОЖЬ.Nв других случаях:отрицание операнда.Ниже приведена таблица всех операторов IL с пояснениями и допустимыми модификаторами:ОператорLDМодификаторNЗначениеПрисвоение аккумулятору значения оператораSTNПрисвоение значения аккумулятора операндуSПрисвоить логическому операнду значение ИСТИНА, если значение аккумулятора ИСТИНАRПрисвоить логическому операнду значение ЛОЖЬANDN, (Побитное ИORN, (Побитное ИЛИXORN, (Побитное исключающее ИЛИADD(СложениеSUB(ВычитаниеMUL(УмножениеCoDeSys V2.32-10Что есть, что в CoDeSysDTV(ДелениеGT(>GE(>=QE(=NE(<>LE(<=LT(<JMPCNПереход к меткеCALCNВызов функционального блокаRETCNВыход из POU и возврат в вызывающую программу.Вычисление задержанной операции)Список всех операторов МЭК приведен в приложении.Пример IL программы с использованием некоторых модификаторов:LD TRUEANDJMPCLDNST ERG(*загрузить значение ИСТИНА в аккумулятор*)BOOL1 (*выполнить И с инверсным значением переменной BOOL1*)mark(*если значение аккумулятора ИСТИНА, то перейти к метке" mark"*)BOOL2 (*сохранить инверсное значение BOOL2 в аккумуляторе*)(*сохранить значение аккумулятора в ERG*)После оператора можно поставить скобки, тогда значение выражения внутри скобок рассматриваетсякак операнд.Например:LDMULADDST223ERGЗдесь значение ERG равно 7.