Руководство пользователя по программированию плк в CoDeSys 3
Скачать 5.57 Mb.
|
Visu- alizations )) 2.2 Языки программирования CoDeSys поддерживает следующие текстовые: Что есть, что в CoDeSys CoDeSys V2.3 2-9 • Instruction List (IL) - Список инструкций • Structured Text (ST) – Структурированный текст и графические МЭК языки: • Sequential Function Chart (SFC) – Последовательные Функциональные Схемы • Function Block Diagram (FBD) – Функциональные Блоковые Диаграммы • Ladder Diagram (LD) – Релейно-Контактные Схемы Кроме того, CoDeSys включает поддержку основанного на Функциональных Блоковых Диаграм- мах, редактора Continuous Function Chart (CFC) – Непрерывные Функциональные Схемы. Список инструкций (IL) В IL (Instruction list) каждая инструкция начинается с новой строки и содержит оператор и, в зави- симости от типа операции, один и более операндов, разделенных запятыми. Перед операндом может находиться метка, заканчивающаяся двоеточием (:). Комментарий должен быть последним элементом в строке. Между инструкциями могут находиться пустые строки. Пример: LD 17 ST lint (* комментарий*) GE 5 JMPC next LD idword EQ istruct.sdword STN test next: Модификаторы и операторы IL В IL можно использовать следующие операторы и модификаторы: Модификаторы: С с JMP, CAL, RET: инструкция выполняется только тогда, когда результат аккумуля- тора ИСТИНА. N с JMPC,CALC, RETC: инструкция выполняется тогда, когда результат аккумулятора ЛОЖЬ. N в других случаях: отрицание операнда. Ниже приведена таблица всех операторов IL с пояснениями и допустимыми модификаторами: Оператор Модифи- катор Значение LD N Присвоение аккумулятору значения оператора ST N Присвоение значения аккумулятора операнду S Присвоить логическому операнду значение ИСТИНА, если зна- чение аккумулятора ИСТИНА R Присвоить логическому операнду значение ЛОЖЬ AND N, ( Побитное И OR N, ( Побитное ИЛИ XOR N, ( Побитное исключающее ИЛИ ADD ( Сложение SUB ( Вычитание MUL ( Умножение Что есть, что в CoDeSys CoDeSys V2.3 2-10 DTV ( Деление GT ( > GE ( >= QE ( = NE ( < > LE ( <= LT ( < JMP CN Переход к метке CAL CN Вызов функционального блока RET CN Выход из POU и возврат в вызывающую программу. ) Вычисление задержанной операции Список всех операторов МЭК приведен в приложении. Пример IL программы с использованием некоторых модификаторов: LD TRUE (*загрузить значение ИСТИНА в аккумулятор*) AND BOOL1 (*выполнить И с инверсным значением переменной BOOL1*) JMPC mark (*если значение аккумулятора ИСТИНА, то перейти к метке " mark"*) LDN BOOL2 (*сохранить инверсное значение BOOL2 в аккумуляторе*) ST ERG (*сохранить значение аккумулятора в ERG*) После оператора можно поставить скобки, тогда значение выражения внутри скобок рассматрива- ется как операнд. Например: LD 2 MUL 2 ADD 3 ST ERG Здесь значение ERG равно 7. Если поставить скобки, то порядок вычислений изменится: LD 2 MUL ( 2 ADD 3 ) ST ERG Теперь значение переменной ERG равно 10. Операция MUL выполняется только тогда, когда программа доходит до ")". В качестве операнда MUL использует значение 5. Структурированный текст (ST) ST представляет собой набор инструкций высокого уровня, которые могут использоваться в услов- ных операторах ("IF…THEN…ELSE") и в циклах (WHILE…DO). Пример: IF value < 7 THEN WHILE value < 8 DO value:=value+1; END_WHILE; END _ IF ; Что есть, что в CoDeSys CoDeSys V2.3 2-11 Выражения Выражение – это конструкция, возвращающая определенное значение после его вычисления. Выражение состоит из операторов и операндов. Операндом может быть константа, переменная, функциональный блок или другое выражение. Вычисление выражений Вычисление выражений выполняется согласно правилам приоритета. Оператор с самым высоким приоритетом выполняется первым, оператор с более низким приоритетом – вторым и т.д., пока не будут выполнены все операторы. Операторы с одинаковым приоритетом выполняются слева направо. В следующей таблице приведен список ST операторов, расположенных в порядке приоритета. Операция Обозначение Приоритет Выражение в скобках (Выражение) Самый высокий. Вызов функции Имя функции (список параметров) Возведение в степень EXPT Замена знака - Числовое дополнение NOT Умножение * Деление / Остаток от деления MOD Сложение + Вычитание - Сравнение < , > ,<=, >= Неравенство < > Равенство = Логическое И AND Логическое исключающее ИЛИ. XOR Логическое ИЛИ OR Самый низкий Ниже приведены примеры использования инструкций ST: Тип инструкции Пример Присваивание A := B; CV := CV+1; C := SIN (X); Вызов функционального блока и использование FB выхода A := CMD_TMR.Q RETURN RETURN; Что есть, что в CoDeSys CoDeSys V2.3 2-12 IF D := B*B; IF D<0.0 THEN C := A; ELSIF D = 0.0 THEN C := B; ELSE C := D; END_IF CASE CASE INT1 OF 1: BOOL1 := TRUE; 2: BOOL2 := TRUE; ELSE BOOL1 := FALSE; BOOL2 END_CASE FOR J := 101; FOR I :=1 TO 100 BY 2 DO IF ARR [I] = 70 THEN J := I; EXIT; END_IF END_FOR WHILE J: =1; WHILE J<= 100 AND ARR [J] <> 70 DO J: = J+2; END_WHILE REPEART J := -1; REPEAT J := J+2; UNTIL J = 101 OR ARR [J] = 70 END_REPEAT EXIT EXIT; Пустая инструкция ; Оператор присваивания Перед оператором присваивания находится операнд (переменная или адрес), которому присваива- ется значение выражения, стоящего после оператора присваивания. Пример: Var1 := Var2 * 10; После выполнения этой операции Var1 принимает значение в десять раз большее, чем Var2. Вызов функционального блока в ST Функциональный блок вызывается с помощью имени экземпляра функционального блока и списка входных параметров с присваиванием данных в круглых скобках. В следующем примере вызывает- ся таймер с параметрами IN и PT. Значение выходной переменной Q присваивается переменной А. К выходной переменной, как и в IL, можно обратиться с помощью имени экземпляра функциональ- ного блока, точки, следующей за ним и имени выходной переменной: CMD_TMR (IN := %IX5, PT := 300); A := CMD_TMR.Q Что есть, что в CoDeSys CoDeSys V2.3 2-13 Инструкция RETURN Инструкция RETURN позволяет выйти из POU, например, в зависимости от условия. Инструкция IF Используя инструкцию IF, можно проверить условие, и в зависимости от этого условия выполнить какие-либо действия. Синтаксис: IF {ELSIF .ELSIF ELSE END_IF; Часть конструкции фигурных скобках не обязательна. Если < В противном случае будут выполняться остальные логические выражения одно за другим, пока од- но из них не возвратит истину. Тогда выполняются инструкции, стоящие после этого логического выражения до следующего ELSIF или ELSE. Если все логические выражения ложны, то выполняются инструкции, стоящие после ELSE. Пример: IF temp < 17 THEN heating_on := TRUE; ELSE heating_on := FALSE; END_IF В этом примере нагревание (heating) включается, когда температура опустится ниже 17 º градусов, иначе оно останется выключенным. Что есть, что в CoDeSys CoDeSys V2.3 2-14 Инструкция CASE C помощью инструкции CASE можно нескольким различным значениям целочисленной перемен- ной сопоставить различные инструкции. Синтаксис: CASE ELSE END_CASE; Инструкция CASE выполняется согласно следующим правилам: • Если переменная • Если • Чтобы одна и та же инструкция выполнялась при различных значениях переменной • Чтобы одна и та же инструкция выполнялась для целого диапазона значений, необходимо ука- зать начальное и конечное значения, разделенные двумя точками. Пример: CASE INT1 OF 1, 5: BOOL1 := TRUE; BOOL3 := FALSE; 2: ВОOL2 := FALSE; BOOL3 := TRUE; 10. 20: BOOL1:= TRUE; BOOL3 := TRUE; ELSE BOOL1 := NOT BOOL1; BOOL2 := BOOL1 OR BOOL2; END_CASE Цикл FOR С помощью FOR можно программировать повторяющиеся процессы. Синтаксис: INT_Var :INT; FOR END_FOR Часть конструкции, заключенная в фигурные скобки, не обязательна. Что есть, что в CoDeSys CoDeSys V2.3 2-15 Всякий раз, когда выполняются , увеличивается на может принимать любое целое значение. По умолчанию шаг устанавливается равным 1 Пример: FOR Counter: =1 TO 5 BY 1 DO Var1 := Var1*2; END_FOR; Erg:=Var1; В этом примере предполагается, что начальное значение Var1 равно 1. После выполнения цикла эта переменная будет равна 32. Замечание: Цикл WHILE Цикл WHILE может использоваться, как и цикл FOR, с тем лишь различием, что условие выхода определяется логическим выражением. Это означает, цикл выполняется, пока верно заданное усло- вие. Синтаксис: WHILE END_WHILE Раздел Если Замечание: Программист должен быть уверен, что цикл не станет бесконечным. Для этого в теле цикла значе- ние входящей в условие переменной обязательно должно изменяться. Например, путем инкремен- та или декремента счетчика. Пример: WHILE counter<>0 DO Var1 := Var1*2; сounter := сounter-1; END_WHILE Цикл REPEAT Цикл REPEAT отличается от цикла WHILE тем, что первая проверка условия выхода из цикла осу- ществляется, когда цикл уже выполнился 1 раз. Это означает, что независимо от условия выхода цикл выполняется хотя бы один раз. Синтаксис: REPEAT UNTIL END_REPEAT Раздел Если Что есть, что в CoDeSys CoDeSys V2.3 2-16 выполнен один раз. Если Замечание: Программист должен быть уверен, что цикл не станет бесконечным. Для этого в теле цикла значе- ние входящей в условие переменной обязательно должно изменяться. Например, путем инкремен- та или декремента счетчика. Инструкция EXIT Если EXIT встречается в циклах FOR, WHILE, REPEAT, то цикл заканчивает свою работу незави- симо от значения условия выхода. Что есть, что в CoDeSys CoDeSys V2.3 2-17 Язык последовательных функциональных схем (SFC) SFC – это графический язык, который позволяет описать хронологическую последовательность различных действий в программе. Для этого действия связываются с шагами (этапами), а последо- вательность работы определяется условиями переходов между шагами. Пример SFC диаграммы: Шаг SFC POU состоит из набора шагов, связанных переходами. Существуют 2 вида шагов: • Шаг простого типа (упрощенный SFC) может включать единственное действие. Графический флажок (небольшой треугольник в верхнем углу шага) показывает, пустой шаг или нет. • МЭК шаг (стандартный SFC) связан с произвольным числом действий или логических пере- менных. Связанные действия располагаются с правой стороны от шага. Действие Действие может содержать список инструкций на IL или ST, схемы на FBD или LD, или снова схе- мы на SFC. При использовании простых шагов действие всегда связывается с этим шагом. Для того чтобы ре- дактировать действие, необходимо дважды щелкнуть левой клавишей мышки на шаге. Или выде- лить шаг и выбрать команду меню ‘ Дополнения ’ ‘ Открыть действие/Переход ’ (‘ Extras ‘ ‘ Zoom Action/Transition’) . Помимо основного действия, шаг может включать одно входное и одно выход- ное действие. Действия МЭК шагов показаны в Организаторе Объектов, непосредственно под вызывающей их POU. Редактирование действия запускается двойным щелчком мыши или клавишей Проект ’ ‘ Добавить действие ’ (‘ Project’ ‘ Add Ac- tion’ ). Вы можете сопоставить одному шагу до 9 действий. Что есть, что в CoDeSys CoDeSys V2.3 2-18 Входное или выходное действие В шаг можно добавить входное и выходное действие. Входное действие выполняется один раз при активизации шага, выходное – при деактивизации. Шаг, который имеет входное действие, обозначается буквой "Е" в левом нижнем углу, шаг с вы- ходными действиями – буквой "Х" в правом нижнем углу. Входные и выходные действия могут описываться на любом языке. Для того чтобы отредактиро- вать входное или выходное действие, надо дважды щелкнуть мышкой в соответствующем углу ша- га. Пример простого шага с входным и выходным действиями: Переход/условие перехода Между шагами находятся так называемые переходы. Условием перехода может быть логическая переменная или константа, логический адрес или логическое выражение, описанное на любом язы- ке. Условие может включать несколько инструкций, образующих логический результат, в виде ST выражения (т.е. (i<= 100) AND b) либо на любом другом языке. Но условие не должно содержать присваивания, вызов программ и экземпляров функциональных блоков! В редакторе SFC условие перехода можно записать непосредственно около символа перехода либо в отдельном окне редактора для ввода условия (См. раздел 0, ’ Дополнения ’ ‘ Открыть дейст- вие/Переход ’ (‘ Extras ‘ ‘ Zoom Action/Transition’ )). Условие, заданное в окне редактора предпочти- тельнее! Замечание: помимо условий переходов, можно использовать тактируемый режим переходов; См. SFCtip и SFCtipmode. Активный шаг После вызова SFC POU начальный шаг (шаг, выделенный двойной рамкой) выполняется первым. Шаг, выполняемый в данный момент, называется активным. Действия, связанные с активным ша- гом, выполняются один раз в каждом управляющем цикле. В режиме онлайн активные шаги выде- ляются синим цветом. Следующий за активным шагом шаг станет активным, только когда условие перехода к этому шагу примет значение TRUE. В каждом управляющем цикле будут выполнены действия, содержащиеся в активных шагах. Далее проверяются условия перехода, и, возможно, уже другие шаги становятся активными, но выпол- няться они будут уже в следующем цикле. Замечание: выходное действие выполняется однократно в следующем цикле, после того, как условие перехо- да станет истинным. Шаг МЭК В отличие от упрощенного SFC МЭК шаги могут включать несколько действий (до девяти). Дейст- вия МЭК шагов описываются отдельно от них и могут неоднократно использоваться в пределах данного POU, для чего их надо связать с шагом с помощью команды главного меню ‘ Дополнения ’ ‘ Связать действие ’ (‘ Extras ’ ‘ Associate action ’). Кроме действий, с шагом можно связывать логические переменные. С помощью так называемых классификаторов, действия и логические переменные могут активиро- ваться и деактивироваться, возможно, с задержкой времени. Например: действие может продол- |