Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ста 7-9.docx
Скачиваний:
33
Добавлен:
10.02.2016
Размер:
187.07 Кб
Скачать

7. Краткая характеристика языков программирования мэк 61131. Основные отличия языков мэк-61131 от языков программирования общего назначения.

Английский

Русский

 

Аббр.

Обозначение

Аббр.

Обозначение

Описание

IL

Instruction List

IL

Список инструкций

Текстовый язык. Аппаратно-независимый низкоуровневый ассемблероподобныйязык.

LD

Ladder Diagram

РКС

Релейно-Контактные Схемы

Графический язык. Представляет собой программную реализацию электрических схем на базе электромагнитных реле.

FBD

Function Block Diagram

FBD

Функциональные блоковые диаграммы

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

SFC

Sequential Function Chart

SFC

Последовательностные функциональные диаграммы

Графический высокоуровневый язык. Создан на базе математического аппарата сетей Петри. Описывает последовательность состояний и условий переходов.

ST

Structured Text

ST

Структурированный текст

Текстовый Паскалеподобныйязык программирования

IL (Instruction List) — язык программирования стандарта IEC61131-3. Предназначен для программирования промышленных контроллеров. По синтаксису напоминает ассемблер.

Пример: Линейное преобразование Y(x)=A*x+B

LD x

MUL A

ADD B

ST Y

В последние годы практически вышел из употребления. Из третьей редакции стандарта IEC61131-3 (2012 г.) язык IL полностью исключен.

Ladder Diagram (англ. LD, англ. LAD, рус. РКС) — язык релейной (лестничной) логики.

Применяются также названия:

  • язык релейно-контактной логики (РКС)

  • релейные диаграммы

  • релейно-контактные схемы

  • язык программирования релейно-лестничной логики стандарта МЭК 61131-3.

Пример логического выражения на LD

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

Программа на языке релейной логики имеет наглядный и интуитивно понятный инженерам-электрикам графический интерфейс, представляющий логические операции, как электрическую цепь с замкнутыми и разомкнутыми контактами. Протекание или отсутствие тока в этой цепи соответствует результату логической операции (истина — если ток течет; ложь — если ток не течет).

Основными элементами языка являются контакты, которые можно образно уподобить паре контактов реле или кнопки. Пара контактов отождествляется с логической переменной, а состояние этой пары — со значением переменной.

Различаются нормально замкнутые и нормально разомкнутые контактные элементы, которые можно сопоставить с нормально замкнутыми и нормально разомкнутыми кнопками в электрических цепях.

  • ─┤ ├─ Нормально разомкнутый контакт разомкнут при значении ложь, назначенной ему переменной и замыкается при значении истина.

  • ─┤/├─ Нормально замкнутый контакт, напротив, замкнут, если переменная имеет значение ложь, и разомкнут, если переменная имеет значение истина.

  • ( )─ Итог логической цепочки копируется в целевую переменную, которая называется катушка (англ. coil). Это слово имеет обобщенный образ исполнительного устройства, поэтому в русскоязычной документации обычно говорят о выходе цепочки, хотя можно встретить и частные значения термина, например катушка реле.

Конкретные версии языка реализуются обычно в рамках программных продуктов, для работы с определенными типами ПЛК. Часто такие реализации содержат команды, расширяющие множество стандартных команд языка, что вызвано желанием производителя полнее учесть желания заказчика, но в итоге приводят к несовместимости программ, созданных для контроллеров различных типов.

FBD (англ. Function Block Diagram) — графический язык программирования стандарта МЭК 61131-3. Предназначен для программирования программируемых логических контроллеров (ПЛК). Программа образуется из списка цепей, выполняемых последовательно сверху вниз. Цепи могут иметь метки. Инструкция перехода на метку позволяет изменять последовательность выполнения цепей для программирования условий и циклов.

При программировании используются наборы библиотечных блоков и собственные блоки, также написанные на FBD или других языках МЭК 61131-3. Блок (элемент) — это подпрограмма, функция или функциональный блок (И, ИЛИ, НЕ, триггеры, таймеры, счётчики, блоки обработки аналогового сигнала, математические операции и др.).

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

Пример цепи FBD: A поделить на B , умножить на 2 и записать в переменную result

┌───────┐

│ │ ┌───────┐

A───────┤ │ │ * │

│ / ├────────┤ ├───result

│ │ │ │

B ──────┤ │ 2 ──┤ │

│ │ └───────┘

└───────┘

При необходимости управления вызовом блоков в них добавляются специальные входы EN (enable) и выходы ENO. Логический ноль на входе EN запрещает вызов блока. Выход ENO используется для индикации ошибки в блоке и позволяет прекратить вычисление остатка цепи.

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

Существует много практических реализаций языка FBD с определенными расширениями или ограничениями.

Одним из вариантов FBD является язык программирования CFC (Continuous Function Chart). Он позволяет произвольно задавать порядок выполнения блоков. Диаграммы CFC дают программисту большую свободу действий, но платой за это является несколько большая вероятность допустить ошибку и более объемный код.

Sequential Function Chart-(последовательные функциональные схемы) — язык программирования стандарта IEC61131-3. Предназначен. для программирования промышленных контроллеров. Широко используется в SCADA/HMI пакетах.

  • SFC — графический язык, предназначенный для написания программ последовательного управления технологическим процессом, описывающий его в форме близкой к диаграмме состояний. Аналогом может служить сеть Петри с разноцветными фишками. В каждом состоянии система выполняет действия (подпрограммы) с определенными модификаторами. Например, модификатор N — исполнять, пока состояние активно.

Пример: Поддержание уровня жидкости в сосуде с непрерывно вытекающей жидкостью

╔════════╗

║ ║

║ START ║ Начальное состояние

╚═══╤════╝

─┼─level_low Уровень меньше (условие перехода - логическая переменная)

┌───┴────┐ ┌───┬────────────┐

│ Motor ├──┤ N │motor_on │ Состояние активно пока не сработает условие уровень больше. Действие с модификатором N - пока

│ On │ └───┴────────────┘ активно

└───┬────┘

─┼─level_high Уровень больше (условие перехода - логическая переменная)

┌───┴────┐ ┌───┬────────────┐

│ Motor ├──┤ P │motor_off │ Состояние активно пока не сработает условие уровень больше.Действие с модификатором P -

│ Off │ └───┴────────────┘ однократное срабатывание

└───┬────┘

START Переход на начальное состояние

Основными элементами языка являются:

  • состояния, в которых выполняются определенные действия, одновременно могут быть активны несколько состояний, одно из состояний является начальным;

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

  • альтернативное ветвление алгоритма, когда из текущего состояния возможны переходы к нескольким состояниям, при этом каждому переходу соответствует свое логическое условие и при выполнении алгоритма производится только один из альтернативных переходов

  • параллельное ветвление, в отличие от альтернативного имеет общее условие перехода на несколько параллельно работающих веток

  • переход к заданному состоянию

  • остановка процесса

При программировании контроллеров семейства SIMATIC, используются две версии этого языка, разработанных в компании Siemens. Язык Graph 7 является дополнением к пакету STEP 7 и реализуем как для контроллеров SIMATIC S7-300, так и SIMATIC S7-400. Вторая версия этого языка под названием SFC, применяется только в рамках интегрированной среды разработки программ контроллеров и систем человеко-машинного интерфейса SIMATIC PCS 7.

Structured Text (ST)— язык программирования стандартаIEC61131-3. Предназначен дляпрограммирования промышленных контроллерови операторских станций. Широко используется вSCADA/HMI/SoftLogicпакетах. По структуре ближе всего к языку программированияПаскаль. Удобен для написания больших программ и работы с аналоговыми сигналами и числами с плавающей точкой.

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

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

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

Выражение состоит из переменных, констант и функций, разделенных операторами, например:

Varl := 1+Var2 / ABS(Var2) ;

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

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

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

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

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

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

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

bAlarm :=bylnpl > bylnp2 'AND' bylnpl+ bylnp2 о О 'OR' bAlarm2 ;

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

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

Например:

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

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

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

Стандарт МЭК 61131-3 устанавливает пять языков программирования ПЛК, три графических и два текстовых. Первоначально стандарт назывался IEC 1131-3 и был опубликован в 1993 г. но в 1997 г. МЭК (IEC) перешел на новую систему обозначений и в названии стандарта добавилась цифра "6". Продвижением стандарта занимается организация PLCopen (http://www.plcopen.org).

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

Системы программирования, основанные на МЭК 61131-3, характеризуются следующими показателями:

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

  • возможностью простой модификации программы и наращивания ее функциональности;

  • переносимостью проекта с одного ПЛК на другой;

  • возможностью повторного использования отработанных фрагментов программы;

  • простотой языка и ограничением количества его элементов.

Языки МЭК 61131-3 появились не как теоретическая разработка, а как результат анализа множества языков, уже используемых на практике и предлагаемых рынку производителями ПЛК. Стандарт устанавливает пять языков программирования со следующими названиями:

  • структурированный текст (ST - Structured Text);

  • последовательные функциональные схемы (SFC - "Sequential Function Chart");

  • диаграммы функциональных блоков (FBD - Function Block Diagram);

  • релейно-контактные схемы, или релейные диаграммы (LD - Ladder Diagram);

  • список инструкций (IL - Instruction List).

Графическими языками являются SFC, FBD, LD. Языки IL и ST являются текстовыми.

В стандарт были введены несколько языков (а не один) для того, чтобы каждый пользователь мог применить наиболее понятный ему язык. Программисты чаще выбирают язык IL (похожий на ассемблер) или ST, похожий на язык высокого уровня Паскаль; специалисты, имеющие опыт работы с релейной логикой, выбирают язык LD, специалисты по системам автоматического управления (САУ) и схемотехники выбирают привычный для них язык FBD.

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

Языки МЭК 61131-3 базируются на следующих принципах [Lewis]:

  • вся программа разбивается на множество функциональных элементов - Program Organization Units (POU), каждый из которых может состоять из функций, функциональных блоков и программ. Любой элемент МЭК-программы может быть сконструирован иерархически из более простых элементов;

  • стандарт требует строгой типизации данных. Указание типов данных позволяет легко обнаруживать большинство ошибок в программе до ее исполнения;

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

  • для выполнение операций в определенной последовательности, которая задается моментами времени или событиями, используется специальный язык последовательных функциональных схем ( SFC);

  • стандарт поддерживает структуры для описания разнородных данных. Например, температуру подшипников насоса, давление и состояние "включено-выключено" можно описать с помощью единой структуры "Pomp" и передавать ее внутри программы как единый элемент данных;

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

  • программа, написанная для одного контроллера, может быть перенесена на любой контроллер, совместимый со стандартом МЭК 61131-3.

Любой ПЛК работает в циклическом режиме. Цикл начинается со сбора данных с модулей ввода, затем исполняется программа ПЛК и оканчивается цикл выводом данных в устройства вывода. Поэтому величина контроллерного цикла зависит от времени исполнения программы и быстродействия процессорного модуля.