Function block diagram (fbd) plc programming tutorial for beginners

Структурированный Текст Программирование ПЛК

Структурированный текст-это язык программирования ПЛК. Который очень похож на C или ассемблер. Пользователь вводит строки кода, которые выполняются последовательно, оценивают определенные функции. Логические проверки и активируют соответствующие выходы ПЛК. Структурированный текст обеспечивает простой переход в PLCS для тех. Кто имеет опыт работы с традиционными языками программирования. Такими как C, C++. Java или Python. Кроме того, им можно легко манипулировать в текстовых процессорах. Что делает его быстрым в реализации без необходимости использования аппаратного обеспечения.

Структурированное текстовое программирование ПЛК | Пример в Studio 5000 CompactLogix PLC

Преимущества структурированного текстового программирования ПЛК

  • Интуитивно понятный для других языков программирования | Как уже упоминалось выше, структурированный текст легко усваивается теми. Кто хочет перейти от опыта разработки программного обеспечения. Он имеет те же структуры, парадигмы программирования и функции, которые можно было бы ожидать увидеть в C или Java.
  • Высокая сложность | Структурированный текст обеспечивает большую гибкость, чем другие языки, и, таким образом. Облегчает реализацию расширенных функциональных возможностей для тех. Кто владеет языком.

  • Переносимость | Структурированный текст стандартизирован среди большинства ПЛК-систем. Что облегчает миграцию между платформами. Вы найдете значительные различия в других языках между платформами. Но структурированный текст может быть реализован в аппаратных и программных платформах.

Недостатки структурированного текста

  • По сравнению с лестничным логическим программированием структурированный текст гораздо сложнее с точки зрения устранения неполадок.

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

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

Обычно мы рекомендуем изучать структурированный текст только после того. Как вы освоили Лестничную логику

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

Охарактеризуйте язык функциональных блок-схем fbd.

Язык 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”.

ПРОГРАММИРОВАНИЕ НА ЯЗЫКАХ LAD, STL И FBD

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

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

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

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

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

Вступление

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

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

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

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

Определение сети обычно схематично и преобразуется в список соединений на каком-либо языке нижнего уровня или в нотации. FBP часто является визуальным языком программирования на этом уровне. Более сложные определения сетей имеют иерархическую структуру, состоящую из подсетей с «липкими» соединениями. Многие другие потоковые языки / среды выполнения построены на более традиционных языках программирования, наиболее ярким примером является RaftLib, который использует операторы, подобные iostream C ++, для определения потокового графа.

FBP имеет много общего с языком Linda в том смысле, что он, по терминологии Гелернтера и Карриеро, является «координационным языком»: он по существу не зависит от языка. Действительно, при наличии планировщика, написанного на достаточно низкоуровневом языке, компоненты, написанные на разных языках, могут быть связаны вместе в единую сеть. Таким образом, FBP поддается концепции предметно-ориентированных языков или «мини-языков».

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

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

Цикл программы и Базовый таймер

Шаги схемы выполняются гарантированно, т.е. значения выходов гарантированно поступают на соответствующие входы; блоки гарантированно выполняют расчеты. В отличие от электронных схем, где каждый элемент имеет временные задержки в работе и может пропустить значения входов, схема FBD работает в общем дискретном времени, где каждый шаг полного расчета схемы соответствует одной единице дискретного времени. А каждая единица дискретного времени схемы соответствует какому-то интервалу физического времени. 

Длительность этого интервала зависит только от скорости работы устройства, настройка такого соотношения в системе zetFBD отсутствует. Устройство выполняет шаги с максимально возможной скоростью. 

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

Гарантия срабатывания блоков в каждом шаге позволяет использовать следующую особенность: многие логические значения выходов, сигнализирующие о возникновении события, работают по принципу «одиночного срабатывания». Это значит, что такой выход выдает 0 в течение большинства шагов выполнения схемы. Только при возникновении события он выдает 1, в течение только одного шага выполнения схемы, а на следующих шагах снова выдается 0. Такая одиночная 1 только в течение одного шага (в течение одной единицы дискретного времени) обязательно будет обработана соответствующими блоками. Само собой разумеется, что если такой выход подключить к физическому дискретному выходу устройства – он будет включаться на время 1 шага схемы, который может длиться от 100 мксек до 1000 мсек, что неправильно, т.к. внешние системы не должны быть зависимы от времени выполнения шага устройства. Поведение таких выходов удобно тем, что для них передний фронт и уровень – одно и то же, при необходимости иметь передний фронт можно просто использовать этот выход, без анализа фронта.

Для синхронизации с реальным временем используется блок «таймер», работа которого определяется Базовым таймером системы.

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

Важно понимать:

  • Цикл системы всегда динамический. Система внутренней оптимизации будет стремиться выполнить программу за минимальное время;
  • Базовый таймер задает интервал времени, которому кратны все пользовательские таймеры;
  • Если время динамического цикла выполнения программы будет больше времени базового таймера, то устройство выдаст ошибку (см. документ D080813 — Коды ошибок)

Бизнес и финансы

БанкиБогатство и благосостояниеКоррупция(Преступность)МаркетингМенеджментИнвестицииЦенные бумагиУправлениеОткрытые акционерные обществаПроектыДокументыЦенные бумаги — контрольЦенные бумаги — оценкиОблигацииДолгиВалютаНедвижимость(Аренда)ПрофессииРаботаТорговляУслугиФинансыСтрахованиеБюджетФинансовые услугиКредитыКомпанииГосударственные предприятияЭкономикаМакроэкономикаМикроэкономикаНалогиАудитМеталлургияНефтьСельское хозяйствоЭнергетикаАрхитектураИнтерьерПолы и перекрытияПроцесс строительстваСтроительные материалыТеплоизоляцияЭкстерьерОрганизация и управление производством

Устранение неполадок при открытии файлов FBD

Общие проблемы с открытием файлов FBD

DART Pro 98 User-definied Complex Restoration Filters не установлен

При двойном щелчке FBD-файла может появиться диалоговое окно операционной системы с сообщением о том, что он «Не удается открыть этот тип файла». Если это так, это обычно связано с тем, что у вас нет DART Pro 98 User-definied Complex Restoration Filters для %%os%%, установленного на вашем компьютере. Поскольку ваша операционная система не знает, что делать с этим файлом, вы не сможете открыть его двойным щелчком мыши.

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

Установлена неправильная версия DART Pro 98 User-definied Complex Restoration Filters

В некоторых случаях может быть более новая (или более старая) версия файла CADfix Geometry Database File, которая не поддерживается установленной версией приложения. Если у вас нет правильной версии DART Pro 98 User-definied Complex Restoration Filters (или любой из других программ, перечисленных выше), вам может потребоваться попробовать загрузить другую версию или одно из других программных приложений, перечисленных выше. Эта проблема чаще всего встречается, когда у вас есть более старая версия программного приложения, и ваш файл был создан более новой версией, которую он не может распознать.

Совет: Иногда вы можете получить подсказку о версии FBD-файла, который у вас есть, щелкнув правой кнопкой мыши на файле, а затем нажав на «Свойства» (Windows) или «Получить информацию» (Mac OSX).

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

Хотя на вашем компьютере уже может быть установлено DART Pro 98 User-definied Complex Restoration Filters или другое программное обеспечение, связанное с FBD, вы по-прежнему можете столкнуться с проблемами при открытии файлов CADfix Geometry Database File. Если у вас по-прежнему возникают проблемы с открытием FBD-файлов, могут возникнуть другие проблемы, препятствующие открытию этих файлов. Эти другие проблемы включают (перечислены в порядке от наиболее до наименее распространенных):

Типы данных. Преобразование данных

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

Тип данных Размер, бит min значение max значение Цветовая маркировка по-умолчанию
1 Логический (bool) 1 1 красный
2 Без знака целый 1 байт (Uint8) 8 255  синий 
3 Без знака целый 2 байт (Uint16) 16 65535 синий
4 Без знака целый 4 байт (Uint32) 32 4294967295 синий 
5 Со знаком целый 1 байт (Sint8) 8 -128 +127 зеленый
6 Со знаком целый 2 байт (Sint16) 16 -32768 +32767 зеленый
7 Со знаком целый 4 байт (Sint32) 32 -2147483648 +2147483647 зеленый
8 Дробный 4 байт (float) 32  любое рациональное число   желтый 

Типы данных выбираются в свойствах блоков, входов/выходов макросов и переменных.

zetFBD преследует цель достижения однозначности поведения устройства при любых входных данных. Для определенности значений входов, связанных с выходами, имеющими отличный тип данных, имеется требование: тип данных выхода должен быть подмножеством типа данных входа. Если для какой-либо связи это требование является ненужным или недостижимым – пользователь должен вставить блок «Преобразование данных» в разрыв этой связи. Вход этого блока принимает данные любого типа. Опции этого блока позволяют определить его поведение при наличии значения, не попадающего во множество значений требуемого типа данных. Блоки, значения выходов у которых могут выходить за диапазон значений типа данных (переполнение при математических операциях), имеют опции, определяющие их поведение.

Ограничения ПЛК

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

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

Роль каналов обмена данными играют кабельные медные шины, оптоволоконная связь. Успешно используются варианты стандартизированных интерфейсов RS-232, RS-485 (кабель), промышленных Profibus или CAN. Не возбраняется коммутация по беспроводным линиям (Wi-Fi).

Выполнение

Инициализация

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

int fbdInit(DESCR_MEM unsigned char *descr)

descr — указатель на массив описания схемы.

Отрицательное значение результата функции означает ошибку:-1 — неверный код элемента в описании схемы;-2 — несовпадение размерности сигнала или элемента;-3 — массив описания содержит схему с неподдерживаемой версией;-4 — ошибка при проверке контрольной суммы описания схемы.

Положительное значение результата функции — требуемый объем RAM для выполнения схемы.

Если вызов инициализаии схемы выполнен без ошибок и вы имеете необходимый объем RAM, то следующим шагом необходимо выполнить вызов инициализации памяти:

void fbdSetMemory(char *buf)

buf — указатель на буфер памяти. Функция не возвращает результат.

После инициализации памяти схема готова к работе.

Пошаговое выполнение

Для вычисления схемы необходимо периодически (например в главном цикле программы) выполнять функцию:

void fbdDoStep(tSignal period)

period — время, прошедшее с момента предыдущего вызова функции в мс. При первом вызове указывается значение 0.

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

Timing

Some elements of the schemes use time. For each such element library organizes independent timer value is stored in RAM. Timers used to store the type . Timer values changes by every time the function is called. Time can be expressed in any units: sec, ms, µs. Unit selection depends on the time scale in which the PLC should work. In my opinion, a decent selection of milliseconds for most cases.

Visuino

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

Итак, что надо сделать. Выбираем компоненты (модули) с панели компонентов и перемещаем их в область проектирования. Затем их необходимо соединить и настроить свойства. Это делается с помощью инспектора объектов.

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

Когда ПЛК запрограммирован, графическая среда подсказывает доступный способ подключения к контроллеру. Это может быть последовательный порт, Ethernet, Wi-Fi или GSM.

Наконец ваш проект готов: все контроллеры прописаны, все работает. Теперь, нажав на логотип Arduino, расположенный на верхней панели, вы заставите Visuino создать коды для Arduino и открыть среду его разработки (Arduino IDE), через которую уже можно скомпилировать код и загрузить его в ПЛК.

Совет. Если установленная плата не соответствует вашему Arduino, вы можете изменить ее с помощью команды «Select Board» (Выбрать панель).

Входы и выходы

В любом контроллере реализованы входы трех типов – дискретные, аналоговые, специальные.

Дискретный вход

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

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

Системное ПО обязательно оснащено драйвером. Он считает физические значения каждого входа в ОЗУ. За счет этого программистам нет нужды понимать, как устроен контролер внутри. Дискретный вход – биты, которые можно читать и изменять из оперативной памяти устройства.

Аналоговый вход

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

Специальный вход

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

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

Второй тип таких входов – это входы, которые могут мгновенно запускать команды пользователей с прерываниями на выполнения основного ПО.

Дискретный выход

С одним выходом можно коммутировать только один сигнал. В качестве нагрузки на выходы могут использоваться различные исполнительные устройства.