Языки программирования контроллеров.
Для программирования ПЛК используются стандартизированные языки МЭК (IEC) стандарта IEC61131-3. Языки программирования для инженеров по автоматизации (графические):
1. LD — Язык релейных схем — самый распространённый язык для PLC
Ladder Diagram (англ. LD, англ. LAD, рус. РКС) — язык релейной (лестничной) логики.
Применяются также названия:
язык релейно-контактной логики (РКС)
релейные диаграммы
релейно-контактные схемы
язык программирования релейно-лестничной логики стандарта МЭК 61131-3.
Предназначен для программирования промышленных контроллеров (ПЛК). Синтаксис языка удобен для замены логических схем, выполненных на релейной технике. Ориентирован на инженеров по автоматизации, работающих на промышленных предприятиях. Обеспечивает наглядный интерфейс логики работы контроллера, облегчающий не только задачи собственно программирования и ввода в эксплуатацию, но и быстрый поиск неполадок в подключаемом к контроллеру оборудовании.
Программа на языке релейной логики имеет наглядный и интуитивно понятный инженерам-электрикам графический интерфейс, представляющий логические операции, как электрическую цепь с замкнутыми и разомкнутыми контактами. Протекание или отсутствие тока в этой цепи соответствует результату логической операции (true — если ток течет; false — если ток не течет).
Основными элементами языка являются контакты, которые можно образно уподобить паре контактов реле или кнопки. Пара контактов отождествляется с логической переменной, а состояние этой пары — со значением переменной.
Пример логического выражения на LD
Различаются нормально замкнутые и нормально разомкнутые контактные элементы, которые можно сопоставить с нормально замкнутыми и нормально разомкнутыми кнопками в электрических цепях.
─┤ ├─ Нормально разомкнутый контакт разомкнут при значении false, назначенной ему переменной и замыкается при значении true.
─┤/├─ Нормально замкнутый контакт, напротив, замкнут, если переменная имеет значение false, и разомкнут, если переменная имеет значение true.
─( )─ Итог логической цепочки копируется в целевую переменную, которая называется катушка (англ. coil). Это слово имеет обобщенный образ исполнительного устройства, поэтому в русскоязычной документации обычно говорят о выходе цепочки, хотя можно встретить и частные значения термина , например катушка реле.
Конкретные версии языка реализуются обычно в рамках программных продуктов, для работы с определенными типами ПЛК. Часто такие реализации содержат команды, расширяющие множество стандартных команд языка, что вызвано желанием производителя полнее учесть желания заказчика, но в итоге приводят к несовместимости программ, созданных для контроллеров различных типов.
2. FBD — Язык функциональных блоков — 2-й по распространённости язык для PLC
FBD (англ. Function Block Diagram) — графический язык программирования стандарта МЭК 611131-3. Предназначен для программирования программируемых логических контроллеров (ПЛК). Программа образуется из списка цепей, выполняемых последовательно сверху вниз. Цепи могут иметь метки. Инструкция перехода на метку позволяет изменять последовательность выполнения цепей для программирования условий и циклов.
При программировании используются наборы библиотечных блоков и собственные блоки, также написанные на FBD или других языках МЭК 61131-3. Блок (элемент) — это подпрограмма, функция или функциональный блок (И, ИЛИ, НЕ, триггеры, таймеры, счётчики, блоки обработки аналогового сигнала, математические операции и др.).
Каждая отдельная цепь представляет собой выражение, составленное графически из отдельных элементов. К выходу блока подключается следующий блок, образуя цепь. Внутри цепи блоки выполняются строго в порядке их соединения. Результат вычисления цепи записывается во внутреннюю переменную либо подается на выход ПЛК.
Пример цепи FBD: A поделить на B , умножить на 2 и записать в переменную result
При необходимости управления вызовом блоков в них добавляются специальные входы EN (enable) и выходы ENO. Логический ноль на входе EN запрещает вызов блока. Выход ENO используется для индикации ошибки в блоке и позволяет прекратить вычисление остатка цепи.
Язык FBD прост в изучении, нагляден и удобен для прикладных специалистов, не имеющих специальной подготовки в области информатики. Жесткая последовательность выполнения приводит к простой внутренней структуре команд, которая транслируется в быстрый и надежный код.
Существует много практических реализаций языка FBD с определенными расширениями или ограничениями.
Одним из вариантов FBD является язык программирования CFC (Continuous Function Chart). Он позволяет произвольно задавать порядок выполнения блоков. Диаграммы CFC дают программисту большую свободу действий, но платой за это является несколько большая вероятность допустить ошибку и более объемный код.
Существует модификация FBD допускающая использование только чистых функций с одним выходом, без промежуточных состояний. Она реализует парадигму функционального программирования.
3. SFC — Язык диаграмм состояний — используется для программирования автоматов
SFC — графический язык, предназначенный для написания программ последовательного управления технологическим процессом, описывающий его в форме близкой к диаграмме состояний. Аналогом может служить сеть Петри с разноцветными фишками. В каждом состоянии система выполняет действия (подпрограммы) с определенными модификаторами. Например, модификатор N — исполнять, пока состояние активно.
Пример: Поддержание уровня жидкости в сосуде с непрерывно вытекающей жидкостью
Основными элементами языка являются:
состояния, в которых выполняются определенные действия, одновременно могут быть активны несколько состояний, одно из состояний является начальным;
переходы из состояния в состояние, для каждого перехода задаются логическое условие перехода к следующему шагу
альтернативное ветвление алгоритма, когда из текущего состояния возможны переходы к нескольким состояниям, при этом каждому переходу соответствует свое логическое условие и при выполнении алгоритма производится только один из альтернативных переходов
параллельное ветвление, в отличие от альтернативного имеет общее условие перехода на несколько параллельно работающих веток
переход к заданному состоянию
остановка процесса
При программировании контроллеров семейства SIMATIC, используются две версии этого языка, разработанных в компании Siemens. Язык Graph 7 является дополнением к пакету STEP 7 и реализуем как для контроллеров SIMATIC S7-300, так и SIMATIC S7-400. Вторая версия этого языка под названием SFC, применяется только в рамках интегрированной среды разработки программ контроллеров и систем человеко-машинного интерфейса SIMATIC PCS 7.
4. CFC — Не сертифицирован IEC61131-3, дальнейшее развитие FBD
Языки для программистов ПЛК (текстовые)
1. IL — Ассемблер
IL (Instruction List) — язык программирования стандарта IEC61131-3. Предназначен для программирования промышленных контроллеров. По синтаксису напоминает ассемблер. Ориентирован на профессиональных программистов и разработчиков контроллеров и ПО для них. Является вместе с LD одним из самых распространённых при программировании ПЛК.
Пример: Линейное преобразование Y(x)=A*x+B
LD x
MUL A
ADD B
ST Y
Реализация языка Instruction List для контроллеров SIMATIC S7 производства SIEMENS носит наименование STL (Statement List) или AWL (Anweisungsliste).
2. ST — Паскале-подобный язык
Structured Text (ST) — язык программирования стандарта IEC61131-3. Предназначен для программирования промышленных контроллеров и операторских станций. Широко используется в SCADA/HMI/SoftLogic пакетах. По структуре ближе всего к языку программирования Паскаль. Удобен для написания больших программ и работы с аналоговыми сигналами и числами с плавающей точкой.
Пример
Вычисление максимума из массива
VAR_CONSTANT
Array_Sz:BYTE:=4;
END_VAR
VAR
Iter:BYTE;
arr:ARRAY [1..Array_Sz] of real:=3.2,4.2,1.4,7.8;
fnd_max:REAL:=-1.2E38;
END_VAR
FOR Iter:=1 TO Array_Sz DO
fnd_max:=MAX(fnd_max,arr[Iter]);
END_FOR
Выражения
Основой 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.
Структурно в IEC61131-3 среда исполнения представляет собой набор ресурсов (в большинстве случаев это и есть ПЛК, хотя некоторые мощные компьютеры под управлением многозадачных ОС представляют возможность запустить несколько программ типа softPLC и имитировать на одном ЦП несколько ресурсов). Ресурс предоставляет возможность исполнять задачи. Задачи представляют собой набор программ. Задачи могут вызываться циклически, по событию, с максимальной частотой.
Программа — это один из типов программных модулей POU. Модули (Pou) могут быть типа программа, функциональный блок и функция.
В некоторых случаях для программирования ПЛК используются нестандартные языки, например:
· Блок-схемы алгоритмов
· Си-ориентированная среда разработки программ для ПЛК.
· HiGraph 7 — язык управления на основе графа состояний системы.
Инструменты программирования ПЛК на языках МЭК 61131-3 могут быть специализированными для отдельного семейства ПЛК (например, STEP 7 для контроллеров SIMATIC S7-300/400) или универсальными, работающими с несколькими (но далеко не всеми) типами контроллеров:
· CoDeSys
· ISaGRAF
· ИСР "КРУГОЛ"
· Beremiz
Дата добавления: 2015-02-19; просмотров: 6962;