Язык программирования fbd: НТБ МАЛИ :: Ошибка 404

Содержание

Языки программирования контроллеров. Особенности применения языков FBD, LD.

УДК 004.418

Ахмерова Алия Ниязовна – старший преподаватель кафедры Систем автоматизации и управления технологическими процессами Казанского национального исследовательского технологического университета.

Аннотация: В статье рассмотрены языки FBD и LD международного стандарта МЭК 61131 для программируемых логических контроллеров. Приведены факторы, влияющие на выбор языка программирования. Рассмотрена реализация программного кода одной и той же задачи на  двух графических языка стандарта МЭК 61131 — LD и FBD в среде CoDeSys.

Ключевые слова: Программируемые логические контроллеры, стандарт МЭК-61131, FBD, LD, CoDeSys.

Современные ПЛК (программируемые логические контроллеры) являются ключевым элементом системы управления объектом.  Для создания пользовательской программы, задающей алгоритм работы ПЛК, используются специальные языки программирования, регламентированные стандартом МЭК 61131. Так же существуют международный стандарт IEC 61131 и соответствующий европейский стандарт EN 61131. Сам стандарт включает в себя как общие понятия, которые уже применяются при  программировании ПЛК, так и дополнительные новые методы программирования, а так же  определяет архитектуру, параметры аппаратных средств, организацию коммуникационной подсистемы [1].

МЭК 61131 представляет собой  международный  стандарт, состоящий из 9 частей, для программируемых контроллеров и связанных с ними периферийных устройств.

В разделе МЭК 61131-3 «Контроллеры программируемые. Часть 3. Языки программирования» приводится описание синтаксиса и обозначений пяти регламентированных языков программирования логических контроллеров: FBD (диаграммы функциональных блоков), LD (релейно-контактные схемы или релейные диаграммы) ST (структурированный текст), IL (список инструкций), SFC (последовательные функциональные схемы).

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

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

На сегодняшний день существуют различные инструментальные среды разработки программ для контроллеров. К инструментальным средам программирования  на языках МЭК 61131-3 относятся: ISaGRAF, CoDeSys, MULTIPROG, SIMATIC STEP 7, OpenPCS, SOFTLOGIC, Concept и др.

Рассмотрим особенности применения  базовых языков программирования FBD и LD в среде CoDeSys.

LD – «релейные диаграммы» – графический язык, в основе которого лежат принципы работы релейно-контактных схем с возможностью использования различных функциональных блоков при подключении соответствующих библиотек. Язык LD использует жесткую логику, т.е. принимает только два значения «ложь» и «истина», где 0 – «ложь», а 1 – «истина». Символика языка была заимствована из проектирования в области электротехники.

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

Внешний вид  LD-секции представлен в виде ступеней. На рисунке 1 приведен фрагмент программы управления освещением в помещении в редакторе LD в CoDeSys.

 

Рисунок 1. Фрагмент программы в редакторе LD.

Вертикальная линия слева в рабочей области представляет собой «провод с высоким потенциалом», а вертикальная линия          справа – «нулевой провод». Между ними располагаются горизонтальные линии, именуемые контактными цепями. Слева по горизонтальным линиям располагаются «коммутаторы электрического тока», соответствующие входным переменным логического типа и дискретным входам. Справа располагаются «потребители электрического тока», соответствующие выходным переменным логического типа и дискретным выходам [3].

Как видно из рисунка 1, язык релейно-контактных схем идеален для простых программ, описывающих дискретную логику. В частности, перемещение объектов. Но для обработки «непрерывных» процессов с множеством аналоговых переменных язык LD не подходит.

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

Другим недостатком является то, что по мере роста объема программного кода, становится сложно читать и интерпретировать сам код из чего следует, что реализация процесса управления от и до на языке релейно-контактных схем  — трудная задача [2].

На рисунке 2 приведен фрагмент программы управления освещением в помещении, реализованной уже  в редакторе FBD.

 

Рисунок 2. Фрагмент программы в редакторе FBD.

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

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

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

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

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

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

Также при создании программы на языке FBD требуется предварительная проработка программы в виде четкого прописывания  алгоритма работы перед тем, как начать писать код, так как потом будет достаточно сложно внести      изменения [2].

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

Список литературы

  1. И.В. Елькин, П.В. Кустарев, Научно-технический вестник,4, 55-62 (2003).
  2. Понимание языков программирования IEC61131-3: [Электронный ресурс] / – Режим доступа: https://www.proasutp.com/articles/plc/understanding _the_iec61131_3_programming_languages.html), свободный.
  3. А.А. Игонин, А.Н. Крючков, В.Н. Илюхин, А.Г. Гимадиев Лабораторный практикум по программируемым логическим контроллерам / А.А. Игонин, – Самара: Изд-во Самар. гос. аэрокосм. ун-та, 2011. — 75 с.

Интересная статья? Поделись ей с другими:


FBD — это… Что такое FBD?

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 дают программисту большую свободу действий, но платой за это является несколько большая вероятность допустить ошибку и более объемный код.

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

См. также

Языки программирования стандарта МЭК 61131-3:

  • LD — Релейно-Контактные Схемы
  • FBD — Функциональные Блоковые Диаграммы
  • IL — Список Инструкций
  • SFC — Последовательностные Функциональные Диаграммы
  • ST — Структурированный Текст

Литература

  • Петров И. В. Программируемые контроллеры. Стандартные языки и приемы прикладного проектирования / Под ред. проф. В. П. Дьяконова . — М.: СОЛОН-Пресс, 2004. — 256 c. ISBN 5-98003-079-4
  • Минаев И.Г. Программируемые логические контроллеры в автоматизированных системах управления / И.Г. Минаев, В.М. Шарапов, В.В. Самойленко, Д.Г. Ушкур. 2-е изд., перераб. и доп. — Ставрополь: АГРУС, 2010. — 128 с. ISBN 978-5-9596-0670-1

FLProg – альтернативная среда программирования Arduino. Описание проекта


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

Начнем по порядку.
Программа FLProg позволяет создавать прошивки для плат Arduino с помощью графических языков FBD и LAD, которые являются стандартом в области программирования промышленных контроллеров.
Описание языка FBD

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


Описание языка LAD

Ladder Diagram (LD, LAD, РКС) — язык релейной (лестничной) логики. Синтаксис языка удобен для замены логических схем, выполненных на релейной технике. Язык ориентирован на инженеров по автоматизации, работающих на промышленных предприятиях. Обеспечивает наглядный интерфейс логики работы контроллера, облегчающий не только задачи собственно программирования и ввода в эксплуатацию, но и быстрый поиск неполадок в подключаемом к контроллеру оборудовании. Программа на языке релейной логики имеет наглядный и интуитивно понятный инженерам-электрикам графический интерфейс, представляющий логические операции, как электрическую цепь с замкнутыми и разомкнутыми контактами. Протекание или отсутствие тока в этой цепи соответствует результату логической операции (истина — если ток течет; ложь — если ток не течет). Основными элементами языка являются контакты, которые можно образно уподобить паре контактов реле или кнопки. Пара контактов отождествляется с логической переменной, а состояние этой пары — со значением переменной. Различаются нормально замкнутые и нормально разомкнутые контактные элементы, которые можно сопоставить с нормально замкнутыми и нормально разомкнутыми кнопками в электрических цепях.


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

Вид окна программы в режиме языка FBD

Вид окна программы в режиме языка LAD

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

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

При работе с программой пользователю нет необходимости заниматься написанием кода, контролем за использованием входов – выходов, проверкой уникальности имен и согласованностью типов данных. За всем этим следит программа. Так же она проверяет корректность проекта целиком и указывает на наличие ошибок.
Для работы с внешними устройствами создано несколько вспомогательных инструментов. Это инструмент инициализации и настройки часов реального времени, инструменты для чтения адресов устройств на шинах OneWire и I2C а так же инструмент для чтения и сохранения кодов кнопок на ИК пульте. Все определённые данные можно сохранить в виде файла и в последующем использовать в программе.

Список функциональных блоков существующих на сегодняшний день в языке FBD
Базовые элементы

[XOR]
[AND]
[OR]
[Bounce]
Специальные блоки

[Scale]
Тригеры

[SR]
[TT]
[RS]
[Rtrig]
Таймеры

[Generator]
[Timer]
Счетчики

[Counter]
[SpeedCounter]
Математика

[SUM(+)]
[MUL(*)]
[DIV(/)]
[SUB(-)]
Алгебра

[SIN]
[COS]
[TAN]
[ABS]
[SQ]
[SQRT]
[MIN]
[MAX]
[POW]
[RANDOM]
Сравнение

[Comparator]
Com — Порт

Send
SendVariable
ReceiveVariable
Переключатель

[SWITCH]
[MUX]
[DMS]
Моторы

ServoMotor
StepMotor
Часы реального времени

[Alarm]
[GetTime]
[SetTime]
Дисплеи

Дисплей на чипе НD44780
Подсветка дисплея на чипе НD44780 I2C
Блок декодирования семи сегментного индикатора
Строки

Сложение строк
Датчики

[Ultrasonic HC-SR04]
[DHT11, DHT21, DHT22]
[DS18x2x]
[IR Ressive]
[BMP-085]
SD карта

Запись переменной на SD карту
Выгрузка файла с SD карты
Конвертация типов

Преобразование строк
Преобразование Float в Integer
Микросхемы расширений

Расширитель выводов 74HC595
Операции с битами

Шифратор
Дешифратор
Чтение бита
Запись бита
Разное

Матричная клавиатура

Список функциональных блоков существующих на сегодняшний день в языке LAD
Базовые блоки

Контакт
Катушка
Защита от дребезга
Выделение переднего фронта
Специальные реле

Двустабильное реле
Реле времени
Генератор
Реле сравнения
Алгебра

SIN
COS
TAN
ABS
MAX
MIN
SQ
SQRT
POW
RANDOM
Аналоговые блоки

Масштабирование
Математика
Счетчик
Аналоговый переключатель
Переключатель много к одному
Переключатель один ко многим
Аналоговый вход контроллера
Аналоговый выход контроллера
Вход аналогового соеденителя
Выход аналогового соединителя
Скоростной счетчик
ComPort

Передача в ComPort
Передача переменной через ComPort
Прием переменной через ComPort
Моторы

Сервомотор
Шаговый двигатель
Часы реального времени

Получить данные
Будильник
Установка времени
Дисплеи

Дисплей на чипе HD44780
Блок управления подсветкой дисплея на чипе HD4480 I2C
Блок декодирования семи сегментного индикатора
Строки

Сложение строк
Датчики

Ультразвуковой дальномер HC-SR04
Датчик температуры и влажности DHT11 (DHT21, DHT22)
Датчик температуры DS18x2x
IR Ressive
BMP-085
SD карта

Запись переменной на SD карту
Выгрузка файла с SD карты
Конвертирование типов

Конвертация строк
Преобразование Float в Integer
Микросхемы расширений

Расширитель выводов 74HC595
Операции с битами

Шифратор
Дешифратор
Чтение бита
Запись бита
Разное

Матричная клавиатура.

Список оборудования применяемого в проекте на сегодняшний день.

В следующих публикациях я расскажу о сайте проекта и перспективах развития проекта.

Создание программы на языке FBD (Отчет по лабораторной работе) | ПЛК

ПЛК

 

Задание

Требуется создать программу на языке FBD согласно условиям:

1) Время перемещения в каждом направлении нужно контролировать. Перемещение влево должно прекращаться через 5 с, а перемещение вправо – через 10 с.

2) Направление перемещения изменяется автоматически по истечении указанного времени.

 

Решение

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

 

Рис. 1. Решение на языке FBD

 

Рис. 2

Рис. 3

 

Ответы на контрольные вопросы

Язык FBD (Function Block Diagram) – графический язык программирования высокого уровня, обеспечивающий управление потоками данных всех типов. Позволяет использовать очень мощ­ные алгоритмы простым вызовом функций и функциональных блоков. Удовлетворяет непрерывным динамическим процессам. Подходит для небольших приложений. Хорош для сложных ве­щей подобно ПИД регуляторам, массивам и т. д. Имеет большую библиотеку блоков. FBD заимствует символику булевой алгебры и, так как булевы символы имеют входы и выходы, которые могут быть соединены между собой, FBD является более эффективным для представления структурной информации, чем язык релейно-контактных схем.

2. Что такое EFB, DFB, UDEFB?

 EFB (Elementary Function Block) – элементарные функции и элементарные функциональные блоки; они находятся в библиоте­ках. Логика обработки в EFB (программа) написана на языке С и не может быть изменена в редакторе FBD. Изменять можно только параметры блоков;

DFB (Derived Function Block) – функции и функциональные блоки пользователя; они конструируются пользователем из EFB;

UDEFB (User Defined Elementary Function Block) – разработан­ные пользователем на языке С; они оформляются как объекты библиотек.

3. Каково назначение входов EN и выходов ENO функциональных блоков?

Все FFB могут быть вызваны с дополнительными (необязатель­ными) формальными параметрами: EN (входом) и ENO (выходом).

Конфигурирование (включение или выключение) параметров EN и ENO осуществляется в диалоговом окне Property (свойства) FFB, которое вызывается посредством команд Object, Property (Объекты, Свойства), или двойным нажатием левой клавиши (ЛК) мыши на изображении FFB.

Если FFB вызывается с параметрами EN/ENO и при этом значе­ние EN равно нулю, то алгоритмы, определяемые FFB, не будут вы­полняться. В этом случае значение ENO автоматически устанавлива­ется равным 0. Если же значение EN равно 1, то алгоритмы, опреде­ляемые FFB, будут выполнены. После выполнения этих алгоритмов без ошибок значение ENO автоматически устанавливается равным 1. Если же возникает ошибка во время выполнения этих алгоритмов, то значение ENO будет установлено равным 0.

Поведение FFB одинаково как в случае вызова FFB с EN = 1, так и при вызове без параметров EN/ENO.

4. Какую структуру имени, присваиваемого автоматически, имеет FFB?

Для EFB, DFB и UDEFB принято общее обозначение – FFB (Functions/Function Block). Каждый из перечисленных объектов представляет собой подпро­грамму, которая помещается в одну из библиотек, используемых при разработке программы работы ПЛК. Таким образом обеспечи­вается возможность вызова и хранения FFB в форме библиотек.

Имя экземпляра является уникальным идентификатором для функционального блока в проекте. Имя экземпляра создается автоматически и имеет следующую структуру: FBI_n

FBI = Экземпляр Функционального Блока

n = порядковый номер функционального блока в проекте

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

5. Для чего служат связи?

Связи являются соединениями между FFB. Несколько связей могут быть соединены с FFB выходом. Пункты любого такого соединения отмечаются жирной точкой. Входы/выходы, которые будут соединены, должны иметь соответствующие типы данных. Связи могут быть отредактированы в режиме Выбора. Перекрывание с другими объектами разрешается. Связи не могут использоваться для конфигурации контуров, потому что не возможно ясно определить порядок обработки в секции. Контуры должны решаться с помощью фактических параметров.

6. Какое значение назначается по умолчанию несвязанным входам FFB?

Несвязанным входам FFB назначается по умолчанию значение ”0”.

Светофор на ПЛК – все языки МЭК 61131-3 / Хабр

В прошлой статье Светофор на ПЛК – 30 блоков программа для ПЛК светофора была написана только на FBD.
Новая программа использует все 5 языков стандарта МЭК 61131-3.

Первая секция на IL.
Это похожий на ассемблер язык.
В секции всего 2 строки:
LD — загрузка значения в аккумулятор
S — установка переменное в true, если в аккумуляторе true, иначе переменная не изменяется.

Генератор импульсов периодом 0,5 секунды написан на FBD, как и в предыдущей версии.

Основная секция написана на SFC. Как мне кажется, это самый сложный для применения язык в стандарте МЭК 61131-3.
Программа состоит из шагов и переходов.
При запуске программы выполняется шаг Init.
Следующий шаг выполняется, если усовие перехода за ним истинно. Шаг может быть выполнен с задержкой, время шага может быть ограничено.
На рисунке ниже только однин переход содержит условие. Остальные переходы выполняются всегда.
В конце цепочки выполняется безусловный переход на метку WaitPeople.

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

При выполнении каждого шага выполняется опеределенное действие. В моей программе задано выполнение секции на языке ST.

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

Секция на ST в зависимости от состояния uState записывает значение на булевские переменные, которые потом будут переписаны на выходы. Это можно было сделать в секциях stStep_1..stStep_8, но тогда бы вы не увидели оператора CASE и не поняли бы, что ST — самый близкий для программиста язык из стандарта МЭК 61131-3. Так же в этой секции введена защита от программных ошибок в виде мигающего желтого при неопределенном состоянии.

Язык LD близок к схемам релейной логики. Основа LD — контакты и катушки. На схеме видно, что слева расположен проводник, от которого «напряжение» (true) распростроняется направо по ответвлениям.
Нормально разомкнутый контакт (похож на конденсатор) замыкается, если привязанная к нему переменная истинна.
Нормально замкнутый контакт (похож на конденсатор со слэшем внутри) замыкается, если привязанная к нему переменная ложна.
Катушка (2 скобки) пропускает «напряжение» через себя и переписывает его значение (false или true) в привязанную к ней переменную.
В программе данная секция используется для того, чтобы переписать промежуточные переменные в переменные, привязанные к выходам, с защитой от программной ошибки. Зеленый свет загарается только если нет красного на данном светофоре и зеленого на другом светофоре.

Результат работы программы:

Применение всех 5 языков в одной программе не оправдано. Но в реальных проектах иногда приходится применять одновременно 2..3 языка. Чаще всего я использую ST, реже FBD, еще реже IL. SFC и LD в реальных проектах мне применять не приходилось.

UPD. Сделал исправление — убрал лишний ноль из названия стандарта по замечанию RouR

UPD2. Небольшое изменение в описании LD.

ПРОГРАММИРОВАНИЕ НА ЯЗЫКАХ LAD, STL И FBD — КиберПедия

 

Каждый вход и выход имеет абсолютный адрес, предопределенный конфигурацией аппаратуры. Этот адрес указывается непосредственно, например: I 1.5 (вход-байт 1-бит 5). Абсолютный адрес может быть заменен символическим именем по вашему выбору (рис.53).

 

Рис. 53 Распределение адресов

 

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

 

Создание программы в OB1

В STEP 7 программы S7 создаются на стандартных языках программирования: контактный план (LAD), список операторов (STL) или функциональный план (FBD), рисунок 54. На практике необходимо решить, какой язык использовать.

 

 

Рис. 54 Стандартные языки программирования

 

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

Копирование таблицы символов и открытие OB 1

Для копирования таблицы символов необходимо открыть свой проект «Getting Started». Для этого щелкните на кнопке Open [Открыть]на панели инструментов, выберите проект «Getting Started», который был создан, и подтвердите с помощью OK.

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

Ø zEn01_06_STEP7__LAD_1-9;

Ø zEn01_02_STEP7__STL_1-9;

Ø zEn01_04_STEP7__FDB_1-9.

В методических указаниях приведены все три примера проектов. Необходимо открыть „zEn01_XXX“ и достигнуть компонент Symbols [Символы]. Далее студент может скопировать его с помощью буксировки в папку S7 Programв окне своего проекта «Getting Started». Затем окно „zEn01_XXX“ закрывается. Дважды щелкнув на OB 1в проекте «Getting Started» и откроется окно для программирования LAD/STL/FBD.

Буксировка означает, что вы щелкаете мышью на любом объекте и перемещаете его, удерживая кнопку мыши нажатой. Когда вы отпускаете кнопку мыши, объект вставляется в выбранной позиции. В STEP 7 OB 1 обрабатывается CPU циклически. CPU читает и исполняет строку за строкой команды программы. Когда CPU возвращается к первой строке программы, он завершает ровно один цикл. Время, необходимое для этого, называется временем цикла сканирования. Все блоки программируются в окне LAD/STL/FBD.

 

 

Рис. 55 Окно для программирования LAD/STL/FBD

 

 

Программирование ОВ 1 в виде контактного плана

Далее рассмотрим примеры программирования последовательной, параллельной цепи и функцию памяти SR (установка / сброс) в виде контактного плана (LAD).



Программирование последовательной цепи в контактном плане. Если необходимо, установите LADв качестве языка программирования в меню View [Вид]. Щелкните в области заголовка (title)OB1 и введите, например, «Циклически обрабатываемая главная программа». Выберите путь тока для своего первого элемента. Щелкните на этой кнопке на панели инструментов и вставьте нормально открытый контакт (рис.56).

 

Рис. 56 Последовательная цепь в контактном плане

Таким же образом вставьте второй нормально открытый контакт. Вставьте катушку у правого конца пути тока. В этой последовательной цепи пока отсутствуют адреса нормально открытых контактов и катушки. Проверьте, активизировано ли символическое представление (Symbolic Representation).

Щелкните на знаке ??.?и введите символическое имя «Key_1 [Ключ_1]» (в кавычках). Подтвердите, нажав Enter. Введите символическое имя «Key_2 [Ключ_2]» для второго нормально открытого контакта. Введите имя «Green_Light [Зеленый_свет»] для катушки. Теперь запрограммирована вся последовательная цепь. Сохраните блок, если отсутствуют символы, выделенные красным цветом. Символы отображаются красным цветом, если, например, они отсутствуют в таблице символов, или если имеет место синтаксическая ошибка (рис.57).

Вы можете также вставить символическое имя непосредственно из таблицы символов. Щелкните на знаке ??.?, а затем выберите команду меню Insert >Symbol [Вставить > Символ]. Просматривайте прокручиваемый список, пока не достигнете соответствующего имени, и выберите его. Символическое имя добавляется автоматически.

 

 

Рис. 57

 

Для программирования параллельной цепи в контактном плане выделите Network 1 [Сегмент 1]. Вставьте новый сегмент. Снова выберите путь тока. Вставьте нормально открытый контакт и катушку. Выделите вертикальную линию в пути тока. Вставьте параллельную ветвь. Добавьте еще один нормально открытый контакт в параллельной ветви. Закройте ветвь (если необходимо, выберите нижнюю стрелку). В параллельной цепи все еще отсутствуют адреса. Для назначения символических адресов действуйте так же, как и для последовательной цепи.



Напишите у верхнего нормально открытого контакта «Key_3 [Ключ_3]», у нижнего контакта «Key_4 [Ключ_4]», а у катушки «Red_Light [Красный_свет]» Сохраните блок.

 

Рис. 58 Параллельная цепь в контактном плане

Для программирования функции памяти в контактном плане выделите Network 2 [Сегмент 2] и вставьте еще один сегмент (рис.59). Снова выделите путь тока. Перемещайтесь в каталоге элементов программы в разделе Bit Logic [Двоичная логика], пока не достигнете элемента SR. Дважды щелкните, чтобы вставить этот элемент. Вставьте нормально открытый контакт перед каждым из входов S и R. Введите следующие символические имена перед элементом SR:

Ø Верхний контакт «Automatic_On

Ø [Автоматический_режим_включен]»

Ø Нижний контакт «Manual_On

Ø [Ручной_режим_включен]»

Ø Элемент SR «Automatic_Mode

Ø [Автоматический_режим]».

Сохраните блок и закройте окно.

 

Рис. 59 Функция памяти в контактном плане

 

Пять типов языков программирования ПЛК | LD | ST | IL | FBD

Хотя кажется, что каждая модель ПЛК имеет свой собственный идиосинкразический стандарт программирования, все же существует международный стандарт программирования контроллеров, которому большинство производителей ПЛК, по крайней мере, пытаются соответствовать. Это стандарт IEC 61131-3, который будет стандартом

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

Между разными языками программирования общего назначения (например, C / C ++, BASIC, FORTRAN, Pascal, Java, Ada и т. Д.) Существуют гораздо большие различия, чем между языками программирования, поддерживаемыми разными ПЛК, и этот факт не мешает компьютеру программисты от «многоязычия».

Я лично написал и / или проанализировал программы для более чем полдюжины различных производителей ПЛК (Allen-Bradley, Siemens, Square D, Koyo, Fanuc, Moore Products APACS и QUADLOG и Modicon) с несколькими моделями ПЛК в пределах большинство из этих брендов, и я могу сказать вам, что различия в соглашениях о программировании в основном несущественны.

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

ПЛК Языки программирования

Стандарт IEC 61131-3 определяет пять различных форм языка программирования для промышленных контроллеров:

  • Релейная диаграмма (LD)
  • Структурированный текст (ST)
  • Список инструкций (IL)
  • Функциональная блок-схема (FBD)
  • Последовательная функциональная диаграмма (SFC)

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

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

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

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

Стандарт безопасности ISA номер 84 классифицирует промышленные языки программирования как фиксированные языки программирования (FPL), языки с ограниченной вариативностью (LVL) или языки с полной вариативностью (FVL).

Программирование на лестничных диаграммах и функциональных блок-схемах считается языками с «ограниченной вариабельностью», тогда как список инструкций (и традиционные языки компьютерного программирования, такие как C / C ++, FORTRAN, BASIC и т. Д.) Считаются языками «полной вариативности» с весь сопутствующий потенциал для сложных ошибок.

.

Комбинированный редактор позволяет программировать на языках FBD (функциональная блок-схема), LD (лестничная диаграмма) и IL (список инструкций).

Основной единицей программирования FBD и LD является сеть. Каждая сеть содержит структуру, которая может представлять следующее: логическое или арифметическое выражение, вызов ПМ (функции, функционального блока, программы и т. Д.), Переход или инструкцию возврата. IL фактически не требует сетей. Однако в CODESYS программа IL также состоит по крайней мере из одной сети для поддержки преобразования в FBD или LD.Ввиду этого вам также следует осмысленно разделить программу IL на сети.

См. Также

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

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

Пример

Примечание

CFC также является языком программирования, основанным на том же принципе, что и FBD, но со следующими отличиями:

  • Редактор CFC не ориентирован на сеть.
  • Вы можете свободно размещать элементы в редакторе CFC.
  • Возможна прямая вставка отзывов.
  • Порядок выполнения определяется списком вставленных в данный момент элементов, который вы можете изменить.

См. Также

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

Релейная диаграмма состоит из серии сетей. Сеть ограничена с левой стороны вертикальной линией (шиной).Сеть содержит принципиальную схему контактов, катушек, дополнительных блоков (POU) и соединительных линий. На левой стороне сети есть контакт или серия контактов, которые передают состояние ВКЛ или ВЫКЛ, что соответствует логическим значениям ИСТИНА, и ЛОЖЬ, , слева направо. С каждым контактом связана логическая переменная. Если эта переменная имеет значение ИСТИНА, статус передается слева направо через соединительную линию. В противном случае выдается реле OFF. Таким образом, катушка (катушки) в правой части сети принимает (а) значение ON и OFF, приходящее слева, и значение TRUE или FALSE записывается соответственно в присвоенную им логическую переменную.

Если элементы соединены последовательно, это означает операцию И. Если они соединены параллельно, это означает операцию ИЛИ. Линия, проходящая через элемент, означает отрицание элемента. Отрицание входа или выхода обозначается кружком.

Пример

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

См. Также

Список инструкций — это язык программирования, подобный ассемблеру, соответствующий стандарту IEC 61131. Он поддерживает программирование на основе аккумулятора.

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

Поддерживаются все операторы IEC 61131-3, а также несколько входов, несколько выходов, отрицания, комментарии, установка / сброс выходов и условные / безусловные переходы.

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

Список инструкций поддерживает операторы сравнения (EQ, GT, LT, GE, LE, NE) и переходы для программирования условного выполнения или циклов. Переходы могут быть безусловными (JMP) или условными (JMPC / JMPCN). В случае условных переходов выполняется проверка, является ли значение в аккумуляторе ИСТИНА или ЛОЖЬ .

Пример

См. Также

.

Что такое язык программирования C? Основы, введение и история

Guru99
  • На главную
  • Тестирование

      • Назад
      • Гибкое тестирование
      • BugZilla
      • Cucumber
      • Тестирование базы данных
      • 9000 JB 9000 JS 9000 J 9000 9000 J 9000 9000 J 9000 9000 J 9000 9000 9000 J 9000 9000 J 9000
      • JUnit
      • LoadRunner
      • Ручное тестирование
      • Мобильное тестирование
      • Mantis
      • Почтальон
      • QTP
      • Назад
      • Центр качества (ALM)
      • RPA 9000 Testing 5 Управление
      • TestLink
  • SAP

      • Назад
      • ABA P
      • APO
      • Начинающий
      • Basis
      • BODS
      • BI
      • BPC
      • CO
      • Назад
      • CRM
      • Crystal Reports
      • QM4O
      • Crystal Reports
      • FIC5O
      • Заработная плата
      • Назад
      • PI / PO
      • PP
      • SD
      • SAPUI5
      • Безопасность
      • Менеджер решений
      • Successfactors
      • SAP Tutorials
    • 8 SAP Tutorials
  • 8
  • Apache
  • AngularJS
  • ASP.Net
  • C
  • C #
  • C ++
  • CodeIgniter
  • СУБД
  • JavaScript
  • Назад
  • Java
  • JSP
  • Kotlin
  • Linux
  • Linux
  • Kotlin
  • Linux
  • js
  • Perl
  • Назад
  • PHP
  • PL / SQL
  • PostgreSQL
  • Python
  • ReactJS
  • Ruby & Rails
  • Scala
  • SQL
  • 000 0004 SQL
  • UML
  • VB.Net
  • VBScript
  • Веб-службы
  • WPF
  • Обязательно учите!

      • Назад
      • Бухгалтерский учет
      • Алгоритмы
      • Android
      • Блокчейн
      • Business Analyst
      • Веб-сайт сборки
      • CCNA
      • Облачные вычисления
        • 0005
        • COBOL 9000 Compiler
            0005
              9000 Встроенный COBOL 9000 Дизайн 9000
            • Ethical Hacking
            • Учебные пособия по Excel
            • Программирование на Go
            • IoT
            • ITIL
            • Jenkins
            • MIS
            • Сетевые подключения
            • Операционная система
            • Назад
            • Управление проектами Обзоры
            • Salesforce
            • SEO
            • Разработка программного обеспечения
            • VBA
        • Big Data

            • Назад
            • AWS
            • BigData
            • Cassandra
            • Cognos
            • Хранилище данных
            • 0005
            • MicroStrategy
        .

        Что такое язык программирования?

        Обновлено: 09.06.2020, Computer Hope

        Язык программирования — это компьютерный язык, который программисты используют для разработки программ, сценариев или других наборов инструкций для компьютеров.

        Хотя многие языки имеют общие черты, каждый имеет свой синтаксис. Когда программист изучает правила, синтаксис и структуру языков, он пишет исходный код в текстовом редакторе или IDE. Затем программист часто компилирует код на машинный язык, понятный компьютеру.Языки сценариев, для которых не требуется компилятор, используют интерпретатор для выполнения сценария.

        Типы языков программирования

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

        Заметка

        Существуют и другие парадигмы, которые могут классифицировать язык программирования. Мы постарались перечислить только самые распространенные в качестве отправной точки.

        Список языков программирования

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

        Заметка

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

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

        Заметка

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

        Разработка приложений и программ

        Разработка приложений и программ включает в себя программы, с которыми вы работаете ежедневно.Например, Интернет-браузер, который вы используете для просмотра этой веб-страницы, считается программой. Если вы заинтересованы в разработке программы, рассмотрите следующие языки:

        Развитие искусственного интеллекта

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

        Разработка базы данных

        Разработчики баз данных создают и поддерживают базы данных.Если вы заинтересованы в создании или обслуживании базы данных, рассмотрите любой из следующих языков:

        Разработка игр

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

        Драйверы для компьютеров или другие разработки оборудования

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

        Интернет и разработка веб-страниц

        Интернет и разработка веб-страниц — это суть Интернета.Без разработчиков Интернета не было бы. Если вы заинтересованы в создании веб-страниц, Интернет-приложений или других задач, связанных с Интернетом, рассмотрите следующие языки:

        Разработка сценария

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

        Сколько существует языков программирования?

        По мере развития компьютеров было создано множество различных языков программирования для различных типов разработки.Хотя у нас есть несколько десятков языков, перечисленных на нашем сайте, есть сотни, которых мы не перечислили. Чтобы получить представление о различных языках программирования, вы можете посетить Коллекция Hello World, в которой демонстрируется, как писать «Hello World» на более чем 591 различных языках программирования.

        Какие языки программирования самые популярные?

        Есть много различий

        .
  • Отправить ответ

    avatar
      Подписаться  
    Уведомление о