6. Языки программирования промышленных контроллеров (1245064), страница 2
Текст из файла (страница 2)
1).Таблица 1.LDЕСКДОбозначениеНормально разомкнутый контактНормально замкнутый контактОбмотка релеin1in2LampЭта схема эквивалентна выражению:Lamp:= (In1 AND In2) OR In3;in3LD-программа выполняется последовательно слева направо и сверху вниз. В каждом рабочем цикле однократновыполняются все цепи, входящие в сеть. Любая переменная в рамках одной цепи всегда имеет одно и то же значение. Если даже реле в цепи изменит переменную, то новое значение поступит на контакты только в следующемцикле.
Цепи, расположенные ниже, получат новое значение переменной сразу, а расположенные выше - только вследующем цикле.Объекты языка LD1. Нормально разомкнутыйконтакт (НРК).in1in2out(*Эквивалент на ST*)out := in1 AND in2in12. Нормально замкнутый(инвертирующий) контакт (НЗК).in2out(*Эквивалент на ST*)out := NOT (in1) AND NOT (in2)3. Контакт, замыкаемый передним фронтом (ЗПФ).in1in2Рoutin2in2prt(*Эквивалент на ST*):out := in1 AND (in2 AND NOT(in2pr));Здесь in2pr – значение in2на предыдущем цикле.4. Контакт, замыкаемый задним фронтом (ЗЗФ).5in1in2outin2prin2N1. Катушка (обычная).in1out1(*Эквивалент на ST*)out1 := in1;out2 := in1;out22.
Инвертирующая катушка.in1t(*Эквивалент на ST*):out := in1 AND (NOT (in2) AND in2pr);Здесь in2pr – значение in2на предыдущем цикле.out1(*Эквивалент на ST*)out1:=NOT(in1);out2:= in1;out23. Катушка установки значенияпеременной - SET-катушка.in14. Катушка сброса значенияпеременной - RESET-катушка.in1out(*Эквивалент на ST*)SIF in1 THENout:= true;END_IF;outR(*Эквивалент на ST*)IF in1 THEN out:= false; END_IF;Левое множественное соединениеin1outРеализация логического ИЛИin2(in1 OR in2 )(*Эквивалент на ST*)out:=in1 OR in2;Правое множественное соединениеin1out1out2(*Эквивалент на ST*)out1:=in1;out2:=in1;Для управления выполнением LD-программ, могут использоваться метки и условные/безусловные переходы к ним.
Если линия соединения слева от длинного перехода имеет состояние TRUE, то выполнение программыпродолжается с фрагмента, расположенного после соответствующей метки.Используя LD-редактор, можно подключить функциональные блоки (ФБ) к логическим схемам. В общемслучае это может быть оператор, функция или ФБ. Т.к. блоки не всегда имеют логические/булевы входы и/илилогические выходы, то при введении блоков в LD-программы приводит к добавлению нескольких новых параметров (входов) EN, ENO в эти блоки.6На рис. 9 приведены LD-программы (ISaGRAF), реализующие булевы функции.f x x - конъюнкция (, И, &); f x x - дизъюнкция (, ИЛИ);f x - отрицание (инверсия); f x x - исключающее ИЛИ / сложение по модулю 2 ( );f (x x x ) x (x x ) - произвольная булева функция.113152247891011534612Рис.
9. Реализация некоторых булевых функций на языке LD в среде ISaGRAFЯзык структурированного текста – ST (Structured Text)Это текстовый язык высокого уровня с инструкциями и синтаксисом уровня адаптированного языкаПаскаль. Он позволяет программировать сложные алгоритмы обработки данных – последовательности команд сиспользованием: переменных, вызовов функций и функциональных блоков (ФБ), операторов повторения и т.д., атакже для описания действий внутри шагов и условий языка SFC. В основном используется в тех случаях, когдаалгоритм трудно описать с помощью графических языков.Логика функциональных блоков создается в C++ и не может быть изменена в ST редакторе.ВыраженияОсновой ST-программы служат выражения.
Выражения состоят из операндов (констант и переменных)и операторов.Операторы - являются ”командами“ языка программирования ST. Они должны заканчиваться точкой сзапятой. Одна строка может содержать несколько операторов (отделяемых точками с запятой).Результат вычисления выражения присваивается переменной при помощи оператора присваивания “:=”.Каждое выражение обязательно заканчивается точкой с запятой “;”.Выражение состоит из переменных, констант и функций, разделенных операторами, например:Var1:= 1+Var2 / ABS(Var2);Стандартные операторы в выражениях языка ST имеют символьное представление, например математические действия: +, -, *, /, операции сравнения и т.д.В текст могут быть введены комментарии, которые должны начинаться символами “(*“ и заканчиватьсяими же “)*“.Несколько выражений можно записать в одну строку. Однако хорошим стилем считается запись одноговыражения в строке.
Длинные выражения можно перенести на следующую строку. Перенос строки равноцененпассивному разделителю.Выражение может включать другое выражение, заключенное в скобки. Выражение, заключенное в скобки, вычисляется в первую очередь:bAlarm :=byInp1 > byInp2 AND byInp1+ byInp2 <> 0 OR bAlarm2;Тип всех операндов выражения должен быть одинаковым.
Для изменения типов использовать функциипреобразования типов: BOO, ANA, REAL, TMR и MSG.7Для того чтобы отделить подчасти выражения и явно определить приоритетность операций используютсяскобки. Когда в сложном выражении нет скобок, приоритетность ST-операторов задана неявно.Например: 2 + 3 * 6 равно 2+18=20 - оператор * имеет высший приоритет;(2+3) * 6 равно 5*6=30- приоритет задается скобками.Максимальное количество вложенных скобок - 8.Вызовы функций и функциональных блоковСтандартные ST-вызовы функций могут быть использованы для каждого из следующих объектов: Подпрограммы; Библиотечной функции и ФБ, написанных на IEC-языках; C-функции и ФБ; Функции преобразования типов.
Возможны вызовы подпрограмм.Некоторые основные операторы языка ST: присваивание; вызов подпрограммы или функции; вызовфункционального блока; операторы выбора/ветвления (IF-THEN-ELSE, CASE); операторы цикла (FOR, WHILE,REPEAT); управляющие операторы (RETURN, EXIT); операторы для управления программой, написанной наязыке SFC.Язык инструкций/команд – IL (Instruction List)IL – это текстовый язык низкого уровня, класса ассемблера, применяется для программирования булевыхфункций и эффективных, оптимизированных процедур. Это одноадресный язык, поэтому в большинстве его команд используется неуказываемый явно текущий результат. В микропроцессорах для этих целей используетсявнутренний регистр общего пользования, называемый аккумулятором (АК).Программа на языке IL представляет собой список инструкций/команд; каждая команда должна начинаться с новой строки и содержать оператор, заканчивающийся необязательным модификатором и, если необходимо, операндом. Оператор (см. табл.
2) – это символ арифметических или логических операций, или вызовфункционального блока (ФБ). Он указывает операцию, которая должна быть выполнена над содержимым АК, вкотором хранится текущий результат, представляющий собой неявно заданный операнд, и вторым операндом,явно указанным в этом операторе. Полученный результат выполнения оператора помещается снова в АК.
Команда – это один оператор плюс один или несколько операндов, разделенных запятыми; перед командой можетстоять метка (необязательно), после которого ставится символ “:”. Комментарий - необязательный элемент,начинается и заканчивается символами “* и *” соответственно.Таблица 2.Перечень операторов языка ILОператорМодификаторОперандОписаниеLDNКонстанта, переменнаяЗагружает значение операнда в аккумулятор (АК)STNПеременнаяПрисваивает значение аккумулятора операндуSБулева переменнаяУстанавливает операнд в 1 (true), если (АК)=1 (true)RБулева переменнаяУстанавливает операнд в 0 (false), если (АК)=0 (false)БулеваБулеваБулеваКонстанта, переменнаяКонстанта, переменнаяКонстанта, переменнаяКонстанта, переменнаяКонстанта, переменнаяКонстанта, переменнаяКонстанта, переменнаяКонстанта, переменнаяКонстанта, переменнаяКонстанта, переменнаяМеткаЭкземпляр ФБЛогическое ИЛогическое ИЛИЛогическое исключающее ИЛИСложениеВычитаниеУмножениеДелениеПроверить: >Проверить : >=Проверить : =Проверить : <>Проверить : <=Проверить : <Переход на меткуВызов ФБANDORXORADDSUBMULDIVGTGEEQNELELTJMPCALN, (N, (N, (((((((((((C, NC, NRETC, NЗавершение программы, возврат из подпрограммыФБ запускаются с помощью оператора СAL или посредством использования входов ФБ.
Программаначинается с команды LD – загрузка операнда в аккумулятор.Управление данными. Основными операторами для передачи данных являются команды LD и ST: LD(LoaD) осуществляет загрузку в АК операнда; допустимый модификатор – N; ST (STore) осуществляет сохранение содержимого АК в операнде; допустимый модификатор – N.Рассмотрим пример использования операторов LD и ST: LD 10; ADD 25; ST B.8В АК загружается константа 10, затем прибавляется число 25 (оператор ADD), а результат присваиваетсяпеременной В. Теперь значение переменной В и содержимое АК равно 35.