Программирование dcs

Используйте следующие рекомендации для улучшения программирования программируемых логических контроллеров (ПЛК) и распределенных систем управления (РСУ). Программирование систем управления в реальном времени-это действительно программирование. Но оно использует языки и модели. Которые обычно не преподаются на уроках программирования. Языки и модели реального времени также не имеют много общего с современными языками программирования. Такими как C#, Java, PHP. Perl и Python. При написании управляющих программ инженерам и программистам обычно приходится заново учиться подходить к задачам. Используя либо программирование функциональных блок-схем при работе с DCSs. Либо языки IEC 61131-3 при работе с PLCS.

4 языка, 1 структурный элемент

Последняя версия IEC 61131-3, издание 3.0 от 2013-02, определяет четыре языка управления и один структурирующий элемент. Языки управления-это Лестничные диаграммы. Функциональные блоки. Список инструкций и Структурированный текст. Структурирующими элементами являются Последовательные функциональные диаграммы. Список инструкций (IL) и Структурированный текст (ST) должны быть знакомы программистам. Но Функциональная блок-схема (FBD). Функциональные блоки (FB). Лестничные диаграммы (LD) и Последовательные функциональные диаграммы (SFC) значительно отличаются от современных языков программирования.

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

Современные модели программирования на основе событий. Которые используются в веб-разработке. Хранимых процедурах баз данных и разработке смартфонов/планшетов. Также не являются подходящими моделями для управления в реальном времени. Реактивное управление в реальном времени обычно основано не на событиях. А на повторяющихся сканированиях входов и генерации выходов.

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

Функциональное программирование

Функциональное программирование-это модель программирования. Используемая в языках LISP. AWK и XSLT. Наиболее распространенным сегодня является XSLT (Extensible Stylesheet Language Transformations). Где он используется для создания веб-страниц и преобразования данных в печатный или отображаемый формат. Ключевым аспектом функциональных языков является то. Что они организованы правилами. А не процедурным контролем. Функциональная программа состоит из набора правил и связанного с ними кода.

Правила вычисляются для каждого входного сигнала; как правило. Это логическое или регулярное выражение. Которое вычисляется как TRUE или FALSE. В случае AWK правила вычисляются для каждой строки текста в файле. Для XSLT правила вычисляются для каждого элемента XML-документа. Когда правило вычисляет значение TRUE. Соответствующий код выполняется. Как только правило выполняется. Остальные правила пропускаются. И программа повторяется для следующего ввода.

Пример лестничной диаграммы

Лестничные диаграммы можно рассматривать как форму функционального программирования. LDs первоначально были разработаны для представления реле и переключателей в формате вертикальной колонки. Каждая сеть подключенных реле и коммутаторов напоминала ступеньку в лестнице. И термин Если вы рассматриваете ранг как набор правил в функциональной программе. То LD-программирование можно рассматривать как форму функционального программирования с одним особым отличием: каждое правило вычисляется каждый раз. Если нет пропуска или скачка. Чтобы обойти следующие правила. Если вы рассматриваете программу LD как набор правил и связанного с ними кода. То вы можете применить ментальную модель функционального программирования к вашей проблеме.

Рассмотрим каждую ступеньку лестницы как указание правила оценки. Если он имеет значение TRUE. То выполните следующий код; в противном случае перейдите к следующей ступени правила. Например, правило rung для valve V1 будет реализовывать логику (automatic_mode=1) и (available_status=1) и (open_command=1). Если вычислить значение TRUE. То следующая логика будет реализовывать код для открытия клапана. В LD это может выглядеть так. Как показано на рисунке.

Программирование функциональных блоков

В связанном с правилом коде логика. Необходимая для выполнения управления на основе состояний. Может быть добавлена без каких-либо проблем с побочными эффектами от других частей программы. Программирование функциональных блоков (FD) — это то же самое. Что и программирование LD. Только изложенное в горизонтальном формате. С методом описания последовательности выполнения сети/ступени. Функциональная блок-схема (FBD) также может рассматриваться как функциональная модель с математическими вычислениями в качестве связанного кода. В программировании FBD набор правил обычно обрабатывает управление режимом (автоматическое или ручное). Проверку ошибок или альтернативные стратегии управления.

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

Управляющие программы

Управляющие программы могут следовать этой модели. Поскольку модель не зависит от языка. Самые маленькие элементы обычно называются модулями управления. Поскольку они инкапсулируют базовое управление и обеспечивают доступ к системе ввода-вывода. Они обычно управляют одним физическим устройством. Таким как двигатель. Клапан или насос. Или управляют набором устройств. Которые должны работать вместе. Каждый модуль управления реализует относительно простой алгоритм управления. А триггером для управления выполнением алгоритма является функциональное программное правило. Описанное выше. Затем алгоритм модуля управления может быть запрограммирован в LD, FB, IL или ST. IL-это форма языка ассемблера. Аналогичная тем. Которые обычно преподаются на уроках программирования. ST-это язык высокого уровня. Подобный Pascal или C. Для программирования IL или ST не требуется никаких новых ментальных моделей для проектирования программного обеспечения.

Объекты более высокого уровня могут затем командовать объектами модуля управления с помощью процедур. Которые представляют собой последовательные или параллельные наборы команд для модулей управления. Хотя процедуры трудно программировать с помощью программирования LD или FB. Их легко программировать с помощью SFC. СФК-это форма сетей Петри. А сети Петри-это графическая нотация для пошаговых процессов. Они обеспечивают возможность выбора. Итерации и параллельного выполнения. Думайте о SFC как о исполняемых блок-схемах. Которые допускают параллельные ветви. Каждый шаг в SFC содержит набор команд. Которые могут запускать другие SFC (декомпозиция) или посылать команды управляющим модулям (инкапсуляция). Объекты более высокого уровня обычно представляют собой машины или блоки. Которые представляют собой набор устройств (модулей управления) и процедур. Используемых для их управления.

Избегайте плохо разработанных программ

Разработка ментальной модели, необходимой для решения задач программирования в реальном времени, затруднена. Если ваш единственный опыт был связан с веб-разработкой или классическим программированием. Однако вы можете основывать свои программы ПЛК и DCS в реальном времени на хорошо известных и понятных моделях функционального программирования. Инкапсуляции. Декомпозиции иерархии и сетей Петри.

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

– Деннис Брандл-президент BR&L Consulting в Кэри. Штат Нью-Йорк. Его фирма специализируется на его производстве. Под редакцией Марка Т. Хоске. Контент-менеджер, Инженер управления, mhoske@cfemedia.com.