Руководства, Инструкции, Бланки

Язык Программирования St Руководство img-1

Язык Программирования St Руководство

Категория: Руководства

Описание

Средства пользовательского программирования и автоматизация проектирования в MasterSCADA

Средства пользовательского программирования и автоматизация проектирования в MasterSCADA

В статье рассматривается развитие средств пользовательского программирования в SCADA-системе MasterSCADA – от решения нестандартных задач управления и контроля на технологическом языке ST до автоматизации процесса проектирования во встроенной среде сценарного языка С#. В продолжение этой линии впервые анонсирована новая среда программирования контроллеров MasterPLC Designer. полностью реализующая требования стандарта МЭК 61131-3 и сохранившая принятую в MasterSCADA объектную идеологию, которая обеспечивает удобство и скорость разработки, тиражирование проектных решений.

От «перетащи и брось»

к «напиши и запусти»

Объектно-ориентированная SCADA-система MasterSCADA изначально не содержала никаких средств программирования, даже традиционных сценарных языков (или на техническом жаргоне «скриптов»). Это объяснялось концептуальной позицией разработчиков, считавших необходимым приучать пользователей к объектной идеологии и стандартным инструментам MasterSCADA. обеспечивающих простым «перетаскиванием» (drag-and-drop) элементов проекта установление любых связей по передаче данных, а также включение одних элементов в другие (например, динамический символ или кнопку вызова документов одного объекта в мнемосхему другого). Тем не менее было необходимо найти возможности и для тех пользователей, которые хотели бы в рамках MasterSCADA решать нестандартные задачи.

Универсальный рецепт создания библиотечных блоков и визуальных контролов на языках профессионального программирования подходит далеко не всем инженерам. Еще одна причина озаботиться способами программирования прикладных задач была связана (начиная со 2-й версии MasterSCADA) с тем, что MasterSCADA стала вертикально-интегрированной системой, в рамках которой можно было произвольно распределять логику контроля и управления между рабочими станциями и контроллерами с открытой архитектурой (для них была выпущена исполнительная система).

Первым инструментом технологического программирования в рамках MasterSCADA стал графический язык схем функциональных блоков. Но это – способ создавать решения, основанные на уже имеющихся библиотеках, а их функционал ограничен даже в условиях постоянного расширения. Решительное развитие необходимого инструментария началось уже в 3-й версии MasterSCADA. Библиотека функциональных блоков расширилась блоками пользовательских программ. Были реализованы блоки двух видов – для инженерного программирования на языке ST (стандарт МЭК 61131-3) и для автоматизации разработки проектов или реализации сложных задач на языке C#. Если программы на языке ST работают как на верхнем уровне систем, так и в контроллерах, то программы на С# предназначены исключительно для функционирования в рамках рабочих станций. Поскольку в MasterSCADA создается единый проект на всю систему с автоматической организацией связи между ее частями, эту специализацию языков разработчик проекта должен учитывать изначально.

Программирование на языке ST

Язык ST прост для освоения инженерами. Поколениям, выпущенным из вузов в девяностых и нулевых годах, как правило, знаком из учебного курса язык Паскаль, от которого ST заимствовал основные идеи. К тому же программа на ST содержит чисто инженерные понятия – входы/выходы, переменные с типом «время» и т.п. Добавление в разделы INPUT или OUTPUT новых переменных автоматически приводит к появлению новых входов/выходов у функционального блока ST в проекте. Любые входы/выходы в проекте простым перетаскиванием могут быть связаны с входами/выходами других объектов или переменными проекта.

Рис. 1. Пример работы в редакторе ST, встроенном в MasterSCADA

С точки зрения удобства разработки редактор ST предоставляет современную среду (рис. 1), встроенную, как это в MasterSCADA принято, непосредственно в интегрированный менеджер проекта так, что разработчик не задумывается ни над способом открытия редактора (просто выбирает закладку «Код» соответствующего блока в проекте), ни над тем, где хранятся файлы программы (в MasterSCADA вопрос хранения и именования файлов решен системным образом и остается за кадром – разработчику не нужно знать, как называются и где хранятся эти файлы).

Созданная программа компилируется в специальный интерпретируемый код, который может выполняться и в компьютере, и во всех типах контроллеров, поддерживаемых входящей в состав MasterSCADA исполнительной системой MasterPLC. Это контроллеры с практически любыми современными и не очень процессорами (x86, ARM7, ARM9 и т.п.) и распространенными операционными системами (от DOSа и Windows CE до Linux и Ecos). Существенно и то, что для отладки не требуется иметь контроллер в наличии. Программу можно отлаживать как на так называемом Windows-контроллере (исполнительной системе контроллера, запущенной на той же рабочей станции, что и проект MasterSCADA для верхнего уровня), так и прямо в режиме разработки, запустив на исполнение код только одного разрабатываемого блока. При этом доступно традиционное исполнение программы по шагам, включая возможность входа во вложенные процедуры.

Рис. 2. Пример реализации вычислительного алгоритма на языке С#

Программирование на языке С#

Для сравнения приведем пример программы на C#. В данном примере реализован вычислительный алгоритм фильтрации входного аналогового значения. Из рис. 2 можно увидеть, что переменные программы создаются на специальной панели заданием имени, выбором типа и разрешения на запись. Сразу после ввода они появляются в декларациях программы и входах/выходах алгоритма в дереве проекта.

Рис. 3. Вид дерева проекта до выполнения сценария

Автоматизация проектов на языке С#

Задачи, с которыми сталкиваются в своей работе проектировщики, иногда требуют выполнения большого числа рутинных операций, а ведь передача компьютеру «механической» работы и есть главная цель автоматизации. Вот типичная задача – нужно создать систему поквартирного учета ресурсов в многоквартирном доме. Допустим, фрагмент проекта – учет в одной квартире – создан. Теперь его нужно размножить на требуемое число квартир и подъездов, создать мнемосхему с вызовом необходимой квартиры для просмотра ее показателей (рис. 3).

Именно для этих целей можно выполнять сценарии, написанные на C# внутри MasterSCADA и обращающиеся к ее объектной модели (рис. 4).

Рис. 4. Пример текста сценария, написанного на C# внутри MasterSCADA

После запуска сценария (этот пример взят из библиотеки образцовых сценариев MasterSCADA ) в проект добавляется новый объект «Дом» на основе образца объекта «Дом». В него, исходя из заданных нами в настройках количественных параметров, вставляется указанное количество подъездов, этажей, квартир (рис. 5).

Рис. 5. Вид дерева проекта после выполнения сценария

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

Рис. 6. Вид мнемосхемы с созданными сценарием кнопками вызова окон

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

Логика развития – полная поддержка стандарта МЭК 61131-3

Резкий рост интереса пользователей к программированию контроллеров с открытой архитектурой на технологических языках, описанных стандартом МЭК 61131-3, привел нас к мысли не просто реализовать в MasterSCADA полную поддержку стандарта, но и выпустить отдельный продукт для тех, кто программирует контроллеры для автономного применения, а не для использования в рамках вер­ти­кально-интегрированных сис­тем. Так появился MasterPLC Designer. Это полнофункциональная, полностью отвечающая стандарту интегрированная среда разработки, которая сохранила принятую в MasterSCADA объектную идеологию, позволяющую повысить не только качество проектов автоматизации, но и производительность труда проектировщиков. В связи с использованием новейшей программной архитектуры функционал этой среды не включен в состав MasterSCADA версии 3, но станет частью будущей 4-й версии.

Таким образом, сейчас в рамках инструментария MasterSCADAv.3 ИнСАТ предлагает программировать системы, которые содержат как нижний контроллерный уровень, так и операторские станции, а проекты для автономных контроллеров рекомендуется разрабатывать с помощью намного более мощного нового продукта – MasterPLC Designer. Обе среды разработки используют одну и ту же исполнительную систему для контроллеров, поэтому с точки зрения технических характеристик и структурной функциональности (список поддерживаемых контроллеров и платформ, драйверы, архивы, протоколы, быстродействие) их возможности практически одинаковы. Новую среду можно использовать и для программирования тех контроллеров, которые все же взаимодействуют с верхним уровнем, но используют для этого имеющийся OPC-сервер либо один из поддерживаемых протоколов, а не принятую в MasterSCADA технологию не требующего конфигурирования «прозрачного» обмена данных.

Рис. 7. Редактор схем релейной логики

Посмотрим на пример проекта, разработанного в среде MasterPLC Designer (рис. 7). Основное преимущество новой среды – возможность создания программы одновременно на всех языках стандарта, используя для каждой части алгоритма тот язык, который для ее реализации окажется наиболее нагляден. Как правило, для динамических алгоритмов, например регулирования, удобнее использовать язык функциональных блоков (FBD), для описания логики инженерам-электрикам привычнее релейные схемы, а по­операционное управление прекрасно описывается языком шаговых последовательностей (SFC). Вычислительные и любые иные задачи могут быть решены на языке «Структурированный текст» (ST).

В приведенном на рис. 7 примере программа контроля параметра «нарисована» на языке LD и далее используется как библиотечный ФБ в программе, созданной уже на языке функциональных блоков (рис. 8).


Рис. 8.
Редактор схем функциональных блоков

Особенность программной архитектуры MasterPLC Designer (и, следовательно, будущей MasterSCADAv4, в состав которой этот продукт войдет) в том, что она полностью открыта для расширения. Это означает, что встроить в инструментарий поддержку еще одного графического языка (например, языка блок-схем для описания алгоритмов или языка UML для описания взаимодействия объектов проекта) мы сможем сразу, как только почувствуем его востребованность нашими потребителями. В случае MasterPLC Designer такими потребителями являются прежде всего производители контроллеров и их заказчики. Расширение списка поддерживаемых контроллеров происходит быстрыми темпами, и, следовательно, разнообразие запросов от растущей клиентской базы растет столь же быстро. Именно тесное взаимодействие с квалифицированными пользователями и является источником пополнения библиотек сценариев и алгоритмов, мотивом непрерывного развития средств разработки, способных справиться с усложняющимися задачами автоматизации.

Статья опубликована в журнале «ИСУП», № 1(31)_2011

И.Е. Аблин, Генеральный директор,

Другие статьи

PLC - это просто! Условные операторы и операторы циклов языка ST - PLC - это просто!

Условные операторы и операторы циклов языка ST

С помощью FOR можно программировать повторяющиеся процессы.

FOR <INT_Var> := <INIT_VALUE> TO <END_VALUE> DO

Часть конструкции, заключенная в фигурные скобки, не обязательна.

<Instructions> выполняются, пока счетчик <INT_Var> не больше <END_VALUE>. Это условие проверяется перед выполнением <Instructions>, поэтому раздел <Instructions> не выполняется, если <INIT_VALUE> больше <END_VALUE>.

Всякий раз, когда выполняются <Instructions>, значение <INIT_VALUE>, увеличивается на <Step_size>. <Step_ size> может принимать любое целое значение. По умолчанию шаг устанавливается равным 1.

FOR Counter: =1 TO 5 BY 1 DO

В этом примере предполагается, что начальное значение Var1 равно 1. После выполнения цикла эта переменная будет равна 32.

Замечание: <END_VALUE>: не должно быть равно предельному значению счетчика <INT_VAR>. Например, если счетчик является переменной типа SINT и <END_VALUE> равно 127, то цикл становится бесконечным.

Цикл WHILE

Цикл WHILE может использоваться, как и цикл FOR, с тем лишь различием, что условие выхода определяется логическим выражением. Это означает, цикл выполняется, пока верно заданное условие.

WHILE <Boolean expression>

Раздел <Instructions> выполняется циклически до тех пор, пока <Boolean_expression> дает TRUE. Если <Boolean_expression> равно FALSE уже при первой итерации, то раздел <Instructions> не будет выполнен ни разу. Если <Boolean_expression> никогда не примет значение FALSE, то раздел <Instructions> будет выполняться бесконечно.

WHILE counter<>0 DO

Цикл REPEAT

Цикл REPEAT отличается от цикла WHILE тем, что первая проверка условия выхода из цикла осуществляется, когда цикл уже выполнился 1 раз. Это означает, что независимо от условия выхода цикл выполняется хотя бы один раз.

UNTIL <Boolean expression>

Раздел <Instructions> выполняется циклически до тех пор, пока <Boolean_expression> дает TRUE. Если<Boolean_expression> равно FALSE уже при первой итерации, то раздел <Instructions> не будет выполнен один раз. Если <Boolean_expression> никогда не примет значение FALSE, то раздел <Instructions> будет выполняться бесконечно.

Петров И

Петров И.В. Программируемые контроллеры. Стандартные языки и приемы прикладного проектирования

— М. СОЛОН-Пресс, 2004. — 256 с. ил. — (Серия «Библиотека инженера»)
Под ред В. П. Дьяконова.
Описана практика применения промышленных программируемых контроллеров, широко применяющихся для автоматизации производства. Излагаются языки программирования иа основе действующего стандарта МЭК 61131-3 и многочисленные примеры подготовки программ для промышленных программируемых контроллеров. Для специалистов по автоматизации производственных процессов и производственного оборудования, а также для студентов и преподавате- лей высших технических заведений.

Предисловие научного редактора
Введение
Предупреждения
Программируемые контроллеры
Определение ПЛК
Входы-выходы
Режим реального времени и ограничения на применение ПЛК
Условия работы ПЛК
Интеграция ПЛК в систему управления предприятием
Доступность программирования
Программный ПЛК
Рабочий цикл
Время реакции
Устройство ПЛК
Системное и прикладное программное обеспечение
Контроль времени рабочего цикла
Стандарт МЭК 61131
Открытые системы
Целесообразность выбора языков МЭК
Простота программирования и доходчивое представление
Единые требования в подготовке специалистов
Инструменты программирования ПЛК
Комплексы проектирования МЭК 61131-3
Инструменты комплексов программирования ПЛК
Встроенные редакторы
Текстовые редакторы
Графические редакторы
Средства отладки
Средства управления проектом
Комплекс СоDeSys
Строение комплекса CoDeSys
Данные и переменные
Типы данных
Элементарные типы данных
Целочисленные типы
Логический тип
Действительные типы
Интервал времени
Время суток и дата
Строки
Иерархия элементарных типов
Пользовательские типы данных
Массивы
Структуры
Перечисления
Ограничение диапазона
Псевдонимы типов
Специфика реализации типов данных СоDeSys
Переменные
Идентификаторы
Распределение памяти переменных
Прямая адресация
Поразрядная адресация
Преобразования типов
Тонкости вычислений
Венгерская запись
Формат ВСD
Компоненты организации программ (РOU)
Определение компонента
Объявление РОU
Формальные и актуальные параметры
Параметры и переменные компонента
Функции
Вызов функции с перечислением значений параметров
Присваивание значений параметрам функции
Функции с переменным числом параметров
Операторы и функции
Перегрузка функций и операторов
Пример функции
Ограничение возможностей функции
Функции в логических выражениях
Функциональные блоки
Создание экземпляра функционального блока
Доступ к переменным экземпляра
Вызов экземпляра блока
Инициализация данных экземпляра
Тиражирование экземпляров
Особенности реализации и применения функциональных блоков
Шаблонные переменные
Пример функционального блока
Действия
Программы
Использование программ
Компоненты в СоDeSys
Структура программного обеспечения ПЛК
Задачи
Ресурсы
Конфигурация
Языки МЭК
Проблема программирования ПЛК
ПЛК как конечный автомат
Семейство языков МЭК
Диаграммы SFC
Список инструкций IL
Структурированный текст ST
Релейные диаграммы LD
Функциональные диаграммы FBD
Язык линейных инструкций (IL)
Формат инструкции
Аккумулятор
Переход на метку
Скобки
Модификаторы
Операторы
Вызов функциональных блоков и программ
Вызов функции
Комментирование текста
IL в режиме исполнения
Структурированный текст (ST)
Выражения
Порядок вычисления выражений
Пустое выражение
Оператор выбора IF
Оператор множественного выбора CASE
Циклы WHILE и REPEAT
Цикл FOR
Прерывание итераций операторами EXIT и RETURN
Итерации на базе рабочего цикла ПЛК
Оформление текста
Релейные диаграммы (LD)
Цепи
Реле с самофиксацией
Порядок выполнения и обратные связи
Управление порядком выполнения
Расширение возможностей LD
Особенности реализации LD в CoDeSys
LD-диаграммы в режиме исполнения
Функциональные блоковые диаграммы (FBD)
Отображение POU
Соединительные линии
Порядок выполнения FBD
Инверсия логических сигналов
Соединители и обратные связи
Метки, переходы и возврат
Выражения ST в FBD
Последовательные функциональные схемы (SFC)
Шаги
Переходы
Начальный шаг
Параллельные ветви
Альтернативные ветви
Переход на произвольный шаг
Упрощенный SFC
Стандартный SFC
Классификаторы действий
Действие — переменная
Механизм управления действием
Внутренние переменные шага и действия
Функциональные блоки и программы SFC
Отладка и контроль исполнения SFC
Стандартные компоненты
Операторы и функции
Арифметические операторы
Операторы битового сдвига
Логические битовые операторы
Операторы выбора и ограничения
Операторы сравнения
Математические функции
Строковые функции
Стандартные функциональные блоки
Таймеры
Триггеры
Детекторы импульсов
Счетчики
Расширенные библиотечные компоненты
Побитовый доступ к целым
Гистерезис
Пороговый сигнализатор
Ограничение скорости изменения сигнала
Интерполяция зависимостей
Дифференцирование
Интегрирование
ПИД-регулятор
Примеры программирования
Генератор импульсов (PRG LD)
Последовательное управление по времени (PRG LD, SFC)
Кодовый замок (PRG LD) 203
Динамический знаковый индикатор (FUN LD, ST)
Целочисленное деление с симметричным округлением (FUN ST)
Генератор случайных чисел (FB ST)
Очередь FIFO (FB ST)
Быстрая очередь FIFO (FB ST)
Фильтр «скользящее среднее» (FB ST)
Медианный фильтр (FB ST)
Линеаризация измерений (PRG ST)
Широтно-импульсный модулятор на базе таймера (FB IL)
Управление реверсивным приводом (FB SFC)
Сравнение языков с позиции минимизации кода (IL, ST, FBD, LD)
Программирование последовательности состояний (ST, IL) 232
Параллельное решение в виде логических выражений (FBD, LD, ST, IL)
Функциональный блок против программы
Список литературы
Интернет-ссылки
Приложение. Перевод специальных терминов и сокращений

  • Чтобы скачать этот файл зарегистрируйтесь и/или войдите на сайт используя форму сверху.

Язык программирования Structured Text

Язык программирования Structured Text – это одна из составных частей стандарта IEC61131-3 и представляет собой текстовый язык программирования высокого уровня. Structured Text в некой степени имеет схожесть с известными Pascal и Basic, что делает его очень удобным инструментом программирования ПЛК для программистов не знакомых со спецификой FBD. LD. SFC. IL .

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

Преимущества языка программирования ST:

  1. Люди, знакомые с Pascal и Basic смогут быстро освоится с ST;
  2. Программа на ST легко читается, за счет символьного представления;
  3. Программа на ST может быть создана в любом текстовом редакторе;

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

Структурированный текст, они же ST содержит в себе следующие специфические конструкции:

  • Циклический оператор WHILE;
  • Циклический оператор FOR;
  • Оператор условных переходов IF-THEN-ELSE;
  • Оператор условных переходов CASE;

Набор различных операторов отличается для каждой версии ПЛК и LCADA-конфигуратора ;

Помимо прочего, Structured Text позволяет описывать условия и шаги в алгоритмах SFC .

Пример листинга программы на ST.

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

Языки программирования промышленных контроллеров

В настоящее время большинство пользователей применяют при программировании PLC языки стандарта IEC 1131-3. Этот стандарт определяет следующие пять языков для программирования PLC:

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

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

3.Графический язык релейных диаграмм или релейной логики LD, используемой для описания логических выражений различного уровня сложности.

4.Язык структурированного текста ST – относится к классу языков высокого уровня и по мнемонике похож на Pascal. Язык ST предоставляет болевые и арифметические операторы, а также конструкции структурного программирования такие, как IF THEN ELSE, FOR TO DO, WHILE DO, REPET UNTIL. На основе этого языка можно создавать гибкие процедуры обработки данных.

5.Язык инструкции IL, относящийся к классу текстовых языков низкого уровня (Ассемблеры) и позволяющий создавать эффективные оптимальные процедуры.

Bool. LD b1 (* reg IL:=b1 *)

& b2 (* reg IL:=b1 AND b2 *)

AND b3 (* reg IL:= b1 AND b2 And NOT (b3) *)

ST b0 (* b0:= reg IL *)

Стандарт IFC 1131-3 является открытым для расширений, поэтому в нем тщательно опиваются механизмы, посредством которых производители и пользователи могут определять новые типы данных, функции и функциональные блоки.

Одной из известных фирм, реализующих упомянутый стандарт в своем продукте ISaGRAF, является французская фирма SY International, предложившая свое решение в 1990 г. рассмотрим некоторые

… реш-я в организац. Программирования PLC, реализуемые данной фирмой.

Основной принцип, лежащий в основе исполнительной системы ISaCRAF TARGET – синхронизация. Прикладная задача ISaCRAF работает строго по временным циклам, продолжительность которых определяет разработчик при компиляции задачи. Минимальная продолжительность такого цикла определяется характеристиками аппаратно-программной платформы (например для MS-DOS – 55 мс, для OS-9 – 10 мс).

Диаграмма продолжительности цикла:

Прикладная задача (ISaCRAF Proect) состоит из программ и процедур, которые в свою очередь могут быть расположены в трех программных секциях:

1) секция BEGIN (циклическая)

2) секция SEQUENTAL (последовательная)

3) секция END (циклическая)

Цикл системы исполнения ISaCRAF:

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

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

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

Использование множественного соединения (дивергенция, конвергенция).

Пр-ры программ на SFC: