Редактор алгоритмов инструментальной системы SCADA+ поддерживает два языка программирования:

  • FBD (Functional Block Diagram) язык функциональных блоков - визуальный язык программирования
  • C# (Си-шарп) - текстовый процедурный объектно-ориентированный язык программирования

 

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

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

 

При разработке алгоритмов система предоставляет уникальный движок работы с данными, внутри система не разделяет данные на конкретные типы (int, float, striing и так далее), а она воспринимает любой тип данных как объект, который может быть переведен в необходимый конечный тип в зависимости от контекста использования. Это значительно упрощает для разработчика процедуры преобразования типов, потому что система сама знает какой тип ей необходим для выполнения конкретной операции.

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

Кроме того, данная особенность позволяет использовать единые универсальные блоки для арифметики с данными, например: с помощью единого FBD-блока Сложение можно складывать как числовые значения (float + float), так и строковые, а можно складывать смешанные типы - например, строку с числом.

 

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

  • bool - булевый тип данных (True/Flase) [1 bit]
  • byte/sbyte - однобайтовое целое без знака и со знаком [8 bits]
  • short/ushort - двухбайтовое целое без и со знаком [16 bits]
  • int/uint - четырехбайтовое целое без и со знаком [32 bits]
  • long/ulong - восьмибайтовое целое без и со знаком [64 bits]
  • float - стандартное 32-х разрядное с плавающей точкой одинарной точности [32 bits]
  • double - стандартное 64-х разрядное с плавающей точкой двойной точности [64 bits]
  • string - строка символов в формате UNICODE размерностью от 1 до 2млрд. символов
  • ArrayList - уникальный тип данных, реализующий понятие динамического массива размерностью от 1 до 2млрд. элементов

 

Последний тип данных (ArrayList) - представляет особый интерес, потому что он может являться массивом любого из вышеуказанных типов, причем даже самого себя, что позволяет создавать n-мерные массивы любого типа данных с динамическими размерами. Также массив может быть смешанного типа, то есть - каждый его отдельный элемент может быть любого из вышеуказанного типа в рамках единого массива!

 

 

Язык FBD

 

Визуальный технологический язык программирования на основе стандарта FBD (IEC61131.3).

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

Сам набор блоков удобно сгруппирован по их функциональному смыслу:

  • Технологические
  • Логические
  • Побитовые
  • Арифметические
  • Тригонометрические
  • Алгебраические
  • Сравнение
  • Выбор
  • Триггеры/Счетчики
  • Сервис/Генераторы
  • Управление
  • Регулирование
  • Строковые
  • Аргументы программы

 

Всего свыше 120 различных функциональных блоков.

 

Редактор алгоритмов FBD   Редактор алгоритмов FBD  Редактор алгоритмов FBD

 

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

Программа может быть задокументирована в файл MS Visio как векторное изображение алгоритма.

 

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

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

 

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

 

При работе проекта в Отладчике среды разработки, алгоритмы помеченные для он-лайн отладки можно загружать в редактор прямо в процессе выполнения проекта и не только видеть как работает весь алгоритм, но и редактировать его не прерывая процесса выполнения проекта в реальном времени!

 

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

 

 

Язык C# (Си-шарп)

 

Редактор алгоритмов на С#

 

Уникальной особенностью системы является поддержка стандартного синтаксиса языка программирования высокого уровня технологии Microsoft .Net.

В систему включен родной компилятор языка и поддерживается его исходный стандарт! То есть теперь можно писать вполне профессиональные алгоритмы на чистом C# прямо в проекте.

Это позволяет разработчику использовать всю мощь языка применительно к его разработкам для АСУТП!

Чтобы представить эти воззможности - достаточно отметить, что вообще вся SCADA+ написана полностью на языке C#.

 

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

 

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

 

 

Единый инструмент для разработки имитационных моделей проекта

 

В рамках единой среды разработки с помощью редактора алгоритмов разработчик может создавать не только внутренние алгоритмы для узлов проекта (АРМов оператора и контроллеров), но и разрабатывать математические модели имитаторов технологического объекта или процесса, которые он может подключать напрямую к описателям точек ввода-вывода по оборудованию и напрямую к компонентам самого проекта. Переключение проекта с имитатора на реальное железо производится в один клик! Сами имитаторы работают как в Отладчике среды разработки, так и в исполнительных рантаймах. Таким образом разработчик может сразу внутри проекта заложить все необходимые математические модели для отладки проекта без оборудования и оперативно управлять режимом работы проекта на реальных сигналах или имитаторах.

Данный функционал работает следуюзим образом - для любого описателя оборудования в проекте можно назначить алгоритм, в котором при таком назначении система автоматически создает аргументы привязанные к точкам ввода-вывода того УСО, к которому его привязали. При этом выходные сигналы УСО привязываются к входным аргументам программы, а входные сигналы к выходным аргументам программы. Теперь разработчику только остается на основе FBD или C#, или обоих языков вместе, разработать логику обработки данных по этим аргументам. А в процессе выполнения проекта, исполнительный модуль или Отладчик будут обрабатывать такой источник сигнала либо по аппаратуре, либо по алгоритму, если у него будет включен флаг имитатора. Пример, демонстрирующий этот метод, есть в последнем видеоролике ниже.

 

 

Видеоролики работы Редактора алгоритмов

 

Пример разработки алгоритма на языке C#: ссылка на YouTube

 

 

 

Демонстрация возможностей вычислителя по обработке разного типа данных: ссылка на YouTube

 

 

 

Он-лайн редактирование алгоритма: ссылка на YouTube

 

 

 

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

 

 

 

Работа в алгоритмах с динамическими массивами: ссылка на YouTube

 

 

 

Разработка имитатора для реального проекта: ссылка на YouTube