WWW.LIBRUS.DOBROTA.BIZ
БЕСПЛАТНАЯ  ИНТЕРНЕТ  БИБЛИОТЕКА - собрание публикаций
 

«Традиционная технология требует от разработчика прикладного ПО знаний не только в области алгоритмических языков программирования, но и особенностей ОС, а также аппаратных ...»

7. Языки программирования промышленных контроллеров (ПРК)

Прикладное программное обеспечение (ПО) современных ПРК, имеющих встроенную операционную систему (ОС), может быть разработано как с использованием традиционных инструментальных программных средств (языки Си, Паскаль и т.д.), так и на основе специализированных языковых средств .

Традиционная технология требует от разработчика прикладного ПО знаний не только в области алгоритмических языков программирования, но и особенностей ОС, а также аппаратных возможностей данного ПРК и организации системы ввода-вывода. При этом разработанное ПО будет привязано только к данному типу ПРК и не может быть перенесено на другую аппаратнопрограммную платформу .

Специальные платформо-независимые языки программирования ПРК могут быть применены для различных типов ПРК и разработанные с их помощью программы переносимы, т.к. языки этого типа стандартизированы. Под эгидой Международной Электротехнической Комиссии (МЭК/IEC) разработан стандарт IEC 1131-3, специфицирующий 5 языков программирования ПРК: три графических (SFC, FBD, LD) и два текстовых (ST, IL) .

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

На рисунке 7.1 отображены области применения языков программирования ПРК .

Уровень языка Рис. 7.1 SFC Flow Chart ST FBD IL Область LD применения Анализ Проектирование Программирование Современные интегрированные многоязыковые системы программирования ПРК позволяют осуществлять разработку и тестирование прикладных программ для ПРК; обеспечивают единую среду разработки программ для различных типов систем на нескольких языках (в основном, работают под управлением ОС Windows и); соответствуют стандартам графического интерфейса пользователя Microsoft Windows .

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

Встроенный программный эмулятор работы ПРК позволяет производить отладку программ без подключения к реальному ПРК, используются также эмуляторы, с помощью которых можно моделировать состояния сигналов модулей ввода-вывода .

Одной из первых реализаций указанного выше стандарта стала инструментальная система ISaGRAF, разработанная компанией CJInternational (Франция) .

Язык последовательныхфункциональных схем - SFC (Sequential Function Chart) Характер многих технических объектов и технологических процессов предполагает выполнение отдельных операций последовательно. В этих случаях разработчику ПО очень важно иметь средство программирования, которое позволяло бы наглядно воспроизводить структуру объекта/процесса. Именно таким средством и является язык SFC. Это высокоуровневый графический язык, предназначенный для использования на этапе проектирования. Его основой является математический аппарат сетей Петри (СП), позволяющий описать процессы в форме двудольных ориентированных графов (рис. 7.2). Здесь: Pi – позиции, Tj – переходs, M(Pi) – разметка .

Срабатывание какого-либо перехода Tj в размеченной сети ведет к смене разметки .

М(Р2)=2 Т3 Т1 Т2 Т1 Р1 Р2 Р3 Р2

–  –  –

Функционированием (срабатыванием) размеченной СП называется процесс изменения разметки (начиная от M0), осуществляемый по правилам:

Естественно, что при формировании языка SFC интерпретация и реализация некоторых положений теории сетей Петри изменилась .





Язык SFC предназначен для использования на этапе проектирования ПО и позволяет описать блок-схему программы, т.е. логику ее работы на уровне последовательных шагов и условных переходов. Он обеспечивает общую структуризацию и координацию функций управления последовательными процессами или машинами и механизмами .

SFC-программа состоит из элементов двух типов: шагов (steps) и переходов (transitions), которые могут включать в себя элементы других языков. В соответствии с состоянием внутренних ссылок и входов-выходов логика шага может обрабатываться или игнорироваться, т.е. в каждый текущий момент времени шаг может быть активным или пассивным .

Логические структуры, связанные с шагом, обрабатываются до тех пор, пока не произойдет событие, предписывающее ПРК перейти к обработке другого шага. С помощью языка SFC автоматизируемый процесс представляется в виде совокупности определённых последовательных шагов (автономных ситуаций), разделённых (связанных) переходами. Каждому переходу сопоставлено логическое условие, а шагу – совокупность действий .

Условные графические обозначения компонентов SFC-программ приведены на рис. 7.3: Начальный шаг; Шаг; Переход; Переход на другой шаг (длинный переход); Макрошаг и др .

На рис. 7.4-7.6 приведены некоторые программы, разработанные на языке SFC в среде ISaGRAF .

Действия внутри шагов могут описываться более детально на других языках (ST, IL, LD, FBD) .

SFC-программа – это графически представленная совокупность шагов и переходов, соединенных направленными связями. По умолчанию, ориентация линии - сверху вниз. Некоторые части программы могут быть отделены и представлены в основной схеме одним специальным символом – макрошагом. Основное правило при построении схем: шаги не могут следовать подряд; переходы тоже не могут следовать подряд .

–  –  –

Программирование на SFC обычно разделяется на 2 различных уровня: уровень 1 - показывает графически блок-схемы, номера ссылок на шаги, переходы и комментарии, присоединённые к ним;

описание шагов и переходов дается внутри прямоугольников, присоединенных к символам шага и перехода, в виде свободного комментария (который не является частью языка); уровень 2 – программирование действий внутри шага или условий, присоединённых к переходу, на языке ST или IL;

подпрограммы, написанные на других языках (FDB, ST, LD или IL) могут обращаться к этим действиям или переходам .

Начальная ситуация описывается начальным шагом; после запуска программы автоматически активизируются (выделяются) все начальные шаги .

–  –  –

Рис. 7.5 .

Атрибуты шага

У шага имеются атрибуты, которые могут быть использованы в любом другом языке:

- GSnnn.x – характеризует его активность (логическая переменная);

- GSnnn.t – характеризует продолжительность (время) его активного состояния (таймер), здесь nnn – номер шага .

Действия внутри шагов и условия, соответствующие переходам На втором уровне программирования осуществляется детальное описание действий, которые выполняются во время активности шага, и условий, которые соответствуют переходам. По умолчанию языком программирования второго уровня является язык ST .

Переходы программируются чаще всего простыми булевыми выражениями, а шаг может содержать несколько различных типов действий (булевы, импульсные, не сохраняемые, SFC-действия) .

Действия внутри шагов могут быть следующих типов:

- Булевы действия и SFC-действия (управление дочерними SFC-программами), описываемые с помощью ограниченных текстовых возможностей самого языка SFC (рис. 7.6);

- “Pulse” и “Non-stored” - импульсные действия, программируемые на ST и IL (рис. 7.7);

- вызов подпрограмм, написанных на любом языке кроме SFC .

В одном и том же шаге может быть описано несколько действий одного или разных типов .

–  –  –

Условия, соответствующие переходам: Переход 2-уровня - это булево выражение. Для того чтобы задать его на языке ST, нужно просто ввести булево выражение в соответствии с синтаксисом ST .

Типы параллельных соединений: схождения и расхождения (рис. 7.8, 7.9) Расхождения – это множественные связи от одного шага или перехода ко многим .

Схождения – это множественные связи от более чем одного шага или перехода к одному другому .

При обозначении схождений и расхождений используются одиночные или двойные линии .

Альтернативные расхождения и схождения обозначаются одиночными горизонтальными линиями .

Расхождение альтернативное (альтернативные ветви) – это множественная связь от одного шага к нескольким переходам. Активной становится одна из ветвей (в зависимости от активности того или иного перехода). Проверка активности переходов осуществляется слева направо .

Каждая альтернативная ветвь начинается и заканчивается собственным условием перехода .

Проверка альтернативных условий выполняется слева направо. Если верное условие найдено, то прочие альтернативы не рассматриваются. В таких ветвях всегда работает только одна из них, поэтому ее окончание и будет означать переход к следующему за альтернативной группой шагу .

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

Схождение альтернативное – используется для того, чтобы объединить несколько ветвей SFC, начавшихся из альтернативного расхождения .

Параллельные расхождения (параллельные ветви) и схождения - обозначаются двойными горизонтальными линиями .

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

Параллельные ветви выполняются теоретически одновременно. Практически – в одном рабочем цикле, слева направо .

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

Расхождение параллельное – это множественная связь от одного перехода к нескольким шагам. Она соответствует параллельному функционированию процесса .

Схождение параллельное – это множественная связь от нескольких шагов к одному и тому же переходу. Используется, чтобы объединить несколько ветвей SFC, начавшихся их параллельного расхождения .

–  –  –

Иерархия программы SFC. В системе ISaGRAF каждая SFC-программа может управлять (запускать, уничтожать, и т.д.) другими программами на этом же языке (SFC), которые в таком случае называют дочерними программами той программы, которая ими управляет (рис. 7.10). SFCпрограммы объединяются в иерархическое дерево на основе “родственных” отношений (родительнаследник) .

–  –  –

FBD – графический язык - применяется для построения комплексных процедур, состоящих из различных функциональных библиотечных блоков – арифметических, тригонометрических, регуляторов, мультиплексоров и т.д. Наиболее подходит для управления непрерывными процессами и регулирования .

При этом осуществляется: представление функций посредством блоков, связанных между собой; соединения между выходами функциональных блоков в явном виде могут отсутствовать;

выход блока может соединяться со входами одного или нескольких блоков .

Объектами языка FBD являются:

- элементарные функции и элементарные функциональные блоки (ФБ); они находятся в библиотеке; логика их работы (программа) написана на языке С и не может быть изменена в редакторе FBD; изменять можно только их параметры;

- функции и ФБ пользователя; конструируются пользователем из элементов языка FBD .

Разработка программы осуществляется с помощью графического редактора посредством формирования блок-схемы из перечисленных выше компонентов, которые объединяются друг с другом либо посредством внешних (фактических) параметров (переменные, соответствующие входам и выходам), т.е. таблично, либо непосредственно линиями связи – графическими связями .

Последовательность (очередность) обработки отдельных компонентов в программе определяется потоком данных .

FBD-программа (рис. 7.11) очень напоминает функциональную схему электронного устройства. Она строится из стандартных элементов библиотеки (например, ISaGRAF, КОНГРАФ и др.). Каждый ФБ имеет фиксированное количество входных точек связи и фиксированное количество выходных точек связи .

На рис. 7.11,7.12 приведены примеры FBD-программ в среде КОНГРАФ и ISaGRAF .

Рис. 7.11. Моделирование САР в среде КОНГРАФ; используются ФБ:

ГЕН ИМП – генератор последовательности импульсов; ПРЕОБР Л-А – преобразование логических переменных в аналоговые; УМНОЖЕНИЕ – умножение; РАЗНОСТЬ – вычитание; ПИД АН РУ – аналоговый ПИД-закон регулирования Рис. 7.12. Программа на языке FBD (ISaGRAF): blink – ФБ генератор импульсов; 1 – ФБ присваивание;

r-trig – ФБ обнаружение/определение переднего фронта; RETURN – условное завершение программы;

rol – ФБ циклический сдвиг влево; – ФБ - сравнение “меньше чем” FBD-программа описывает функцию между входными и выходными переменными. Эта функция представляется совокупностью элементарных ФБ. Тип каждой переменной должен быть тем же, что и тип соответствующего входа. Входом FBD-блока может быть константа, любая внутренняя, входная или выходная переменная .

Язык релейных диаграмм - LD (Ladder Diagram)

Язык LD – это графический язык - применяется для описания логических выражений различного уровня сложности, графического представления булевых уравнений. Он содержит контакты (входные аргументы) и катушки (выходные переменные). Элементы организуются в сеть релейноконтактных схем. При необходимости можно реализовывать более сложную логику, используя, например элементы языка FBD .

Каждому контакту ставится в соответствие логическая переменная, определяющая его состояние. Ее имя ставится над контактом и служит его названием. Если контакт замкнут, то переменная имеет значение true, если разомкнут – false. Последовательное соединение контактов или цепей соответствует логической операции И/AND, параллельное – ИЛИ/OR. Нормально замкнутый (инверсный) контакт равнозначен логической операции НЕ .

Релейно-контактные схемы и элементы Релейная схема представляет собой 2 вертикальные шины питания, между которыми расположены горизонтальные цепи из контактов и катушек реле. Графические символы языка LD соответствуют элементам электрических цепей и имеют те же названия и обозначения (табл. 7.1) .

–  –  –

LD-программа выполняется последовательно слева направо и сверху вниз. В каждом рабочем цикле однократно выполняются все цепи, входящие в сеть. Любая переменная в рамках одной цепи всегда имеет одно и то же значение. Если даже реле в цепи изменит переменную, то новое значение поступит на контакты только в следующем цикле. Цепи, расположенные ниже, получат новое значение переменной сразу, а расположенные выше - только в следующем цикле. Строгий порядок выполнения цепей очень важен. Благодаря жесткому порядку выполнения LD-программы сохраняют устойчивость при наличии обратных связей .

–  –  –

Для управления выполнением LD-программ, могут использоваться метки и условные/безусловные переходы к ним. Если линия соединения слева от длинного перехода имеет состояние TRUE, то выполнение программы продолжается с фрагмента, расположенного после соответствующей метки .

Используя LD-редактор, можно подключить функциональные блоки (ФБ) к логическим схемам. В общем случае это может быть оператор, функция или ФБ. Т.к. блоки не всегда имеют логические/булевы входы и/или логические выходы, то при введении блоков в LD-программы приводит к добавлению нескольких новых параметров (входов) EN, ENO в эти блоки .

На рис. 7.13 приведены LD-программы (ISaGRAF), реализующие булевы функции .

–  –  –

Это текстовый язык высокого уровня с инструкциями и синтаксисом уровня адаптированного языка Паскаль. Он позволяет программировать сложные алгоритмы обработки данных – последовательности команд с использованием: переменных, вызовов функций и функциональных блоков (ФБ), операторов повторения и т.д., а также для описания действий внутри шагов и условий языка SFC. В основном используется в тех случаях, когда алгоритм трудно описать с помощью графических языков .

Логика функциональных блоков создается в C++ и не может быть изменена в ST редакторе .

Выражения Основой ST-программы служат выражения. Выражения состоят из операндов (констант и переменных) и операторов .

Операторы - являются ”командами“ языка программирования ST. Они должны заканчиваться точкой с запятой. Одна строка может содержать несколько операторов (отделяемых точками с запятой) .

Результат вычисления выражения присваивается переменной при помощи оператора присваивания “:=”. Каждое выражение обязательно заканчивается точкой с запятой “;” .

Выражение состоит из переменных, констант и функций, разделенных операторами, например: Var1 := 1+Var2 / ABS(Var2);

Стандартные операторы в выражениях языка ST имеют символьное представление, например математические действия: +, -, *, /, операции сравнения и т.д .

Имена, используемые в исходном коде (идентификаторы переменных, константы, ключевые слова) разделены неактивными разделителями (пробелами, символами окончания строки и табуляции) или активными разделителями, которые имеют заранее определенное значение (например, символ-разделитель “” означает сравнение больше чем, а символ “+” операцию сложения и т.д.) .

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

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

В текст могут быть введены комментарии, которые должны начинаться символами “(*“ и заканчиваться ими же “)*“ .

Несколько выражений можно записать в одну строку. Однако хорошим стилем считается запись одного выражения в строке. Длинные выражения можно перенести на следующую строку. Перенос строки равноценен пассивному разделителю .

Выражение может включать другое выражение, заключенное в скобки. Выражение, заключенное в скобки, вычисляется в первую очередь:

bAlarm :=byInp1 byInp2 AND byInp1+ byInp2 0 OR bAlarm2;

Тип всех операндов выражения должен быть одинаковым. Для изменения типов использовать функции преобразования типов: BOO, ANA, REAL, TMR и MSG .

Для того чтобы отделить подчасти выражения и явно определить приоритетность операций используются скобки. Когда в сложном выражении нет скобок, приоритетность ST-операторов задана неявно .

Например: 2 + 3 * 6 равно 2+18=20 - оператор * имеет высший приоритет;

(2+3) * 6 равно 5*6=30 - приоритет задается скобками .

Максимальное количество вложенных скобок - 8 .

Вызовы функций и функциональных блоков Стандартные ST-вызовы функций могут быть использованы для каждого из следующих объектов: Подпрограммы; Библиотечной функции и ФБ, написанных на IEC-языках; C-функции и ФБ;

Функции преобразования типов .

Вызовы подпрограмм или функций предполагает использование следующих элементов:

Имя: имя вызываемой подпрограммы или библиотечной функции, написанной на IECязыке или C .

Значение: вызывает ST-, IL-, LD- или FBD-подпрограммы или функции или C-функции и дает возвращаемое значение .

Синтаксис: variable := subprog (par1,...parN);

Операнды: За типом возвращаемого значения и параметрами вызова должен следовать интерфейс, определенный для подпрограммы .

Некоторые основные операторы языка ST: присваивание; вызов подпрограммы или функции; вызов функционального блока; операторы выбора/ветвления (IF-THEN-ELSE, CASE); операторы цикла (FOR, WHILE, REPEAT); управляющие операторы (RETURN, EXIT); операторы для управления программой, написанной на языке SFC .

На рис. 7.14 приведен пример ST-программы, разрабатываемой в соответствующем редакторе системы ISaGRAF .

–  –  –

IL – это текстовый язык низкого уровня, класса ассемблера, применяется для программирования булевых функций и эффективных, оптимизированных процедур. Это одноадресный язык, поэтому в большинстве его команд используется неуказываемый явно текущий результат. В микропроцессорах для этих целей используется внутренний регистр общего пользования, называемый аккумулятором (АК), поэтому далее для простоты будем использовать это обозначение .

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

Оператор – это символ арифметических или логических операций, или вызов функционального блока (ФБ). Он указывает операцию, которая должна быть выполнена над содержимым АК, в котором хранится текущий результат, представляющий собой неявно заданный операнд, и вторым операндом, явно указанным в этом операторе. Полученный результат выполнения оператора помещается снова в АК .

Команда – это один оператор плюс один или несколько операндов, разделенных запятыми;

перед командой может стоять метка (необязательно), после которого ставится символ “:” .

Комментарий - необязательный элемент, начинается и заканчивается символами “* и *” соответственно .

В таблице 7.2 приведен перечень операторов языка IL .

–  –  –

В АК загружается константа 10, затем прибавляется число 25 (оператор ADD), а результат присваивается переменной В. Теперь значение переменной В и содержимое АК равно 35. Любая следующая команда будет работать с содержимым АК, равным 35 (если это не команда LD) .

Булевы операторы. Оператор S (Set) устанавливает в true указанный операнд, если текущий результат имеет булево значение true, и ничего не делает, когда содержимое АК равно false .

Оператор R (Reset) сбрасывает указанную булеву переменную в false, если АК имеет значение true, и ничего не делает в противном случае. Команды S и R не имеют модификаторов .

Модификаторы операций: N – булево отрицание; ( - отложенная операция; C – условная операция. “N” - булево отрицание операнда. “(” - “открывающая скобка” означает, что выполнение команды должно быть отложено до тех пор, пока не встретится оператор “закрывающая скобка” .

Это обусловлено тем, что существует только один регистр-аккумулятор. Поэтому для изменения порядка выполнения команд некоторые операции следует отложить. “С” - означает, что прикрепленная к нему команда выполняется только в том случае, когда в АК булево значение true. Может использоваться совместно с идентификатором N, для указания того, что команда будет выполняться, когда АК имеет булево значение false .

–  –  –

Обозначено: АК – аккумулятор, (AК) – его содержимое; tmp – промежуточная переменная .

Решение на языке ST Решение на языке FBD






Похожие работы:

«ПОЛЕВЩИКОВА АННА СЕРГЕЕВНА ЯЗЫКОВАЯ ИГРА В РОМАНЕ А. МУШГА „DER ROTE RITTER. EINE GESCHICHTE VON PARZIVAL“(1993) (НА МАТЕРИАЛЕ НЕМЕЦКОГО ЯЗЫКА) Специальность 10.02.04 германские языки АВТОРЕФЕРАТ диссертации на соискание ученой степени кандидата филологических наук Москва Работа выполнена на кафедре немецкого языкознания филологи...»

«Н.В.Кабинина. Промысловая лексика в топонимии. век"; "Этот камень сам плоты рулит, на него не налетишь, он водой плоты от себя от­ водит, вроде бы как сам их сплавляет" . Знакомство с объектом подтвердило, что Сплавщик метафора по функции. Такие метафоры часто используются на Чус...»

«АДМИНИСТРАЦИЯ МУНИЦИПАЛЬНОГО ОБРАЗОВАНИЯ "КОТЛАС" ПОСТАНОВЛЕНИЕ от 31 января 2018 г. № ЛЗН г. КОТЛАС Об утверждении Порядка общественного обсуждения по выбору мероприятий по благоустройству городского парка, подлежащего обязательному благ...»

«Вестник 3 МГГУ им. М.А. Шолохова Sholokhov Moscow State University for the Humanities ФилолоГические нАУки Москва вестник УДК800 московского ISSN1992-6375 государственного гуманитарного университета 3.2014 им. м.а. Шолохова Издаетсяс2002г. Серия"ФИЛОЛОГИ...»

«АНГЛИЙСКИЙ ЯЗЫК, 8 класс Демонстрационный вариант КДР, октябрь 2018 Демонстрационный вариант краевой диагностической работы по АНГЛИЙСКОМУ ЯЗЫКУ Работа состоит из трёх разделов: "Аудирование", "Чт...»

«Вестник Томского государственного университета. Филология. 2016. №3 (41) УДК 81’367.332.6 / 81'367.625.2 DOI: 10.17223/19986645/41/5 О.Г. Твердохлеб ОБЩАЯ ГРАММАТИЧЕСКАЯ ХАРАКТЕРИСТИКА КОНСТРУКЦИЙ...»

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ Кафедра общего языкознания Валерия Антоновна Генералова АКТАНТЫ МОТИВИРУЮЩЕГО ГЛАГОЛА В СЕМАНТИКЕ РУССКИХ ОТГЛАГОЛЬНЫХ ПРИЛАГАТЕЛЬНЫХ Выпускная квалификационная работа бакалавра лингвистики Научный руководитель: к. ф. н. доц. Сергей Сергееви...»







 
2019 www.librus.dobrota.biz - «Бесплатная электронная библиотека - собрание публикаций»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.