Pull to refresh
0
FLProg
Визуальная среда Arduino и ESP8266

Начало тестирования SCADA-системы, интегрированной в программу FLProg

Reading time6 min
Views23K

Добрый день. Очень долго программе FLProg не было новостей. Это обоснованно тем, что я был занят большой задачей, по созданию интегрированной в программу системы Scada. И вот вышла первая, бета версия этой системы.

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

История развития системы
Первый отчет о состоянии проекта от 29 июн. 2017 г.



Второй отчет о состоянии проекта от 6 сент. 2017 г.




Сначала расскажу об идеологии системы.

В настоящее время я не нашёл ни одной Скада системы которая устроила бы меня по уровню вхождения, и удобству создания проектов. Практически все они представляют собой монстров, рассчитанных на промышленное применение, и для того что бы начать ими пользоваться требуется пройти серьёзное обучение. Да и после обучения (я например сертифицированный разработчик на WinCC), начало работы на них требует значительного времени. К тому же цены на них начинаются от десятка тысяч рублей. Есть, конечно, бесплатные версии, но чаще всего они ограничены либо очень маленьким количеством тэгов, либо временем работы. Есть FreeScada. Но я так и не разобрался, как с ней работать. И если этого не смог сделать я, то люди не знакомые с программированием (какими является большинство пользователей программы) тем более не справятся.

Кроме того во всех скадах которые я рассматривал для создания логики поведения самой скады используются те или иные текстовые языки программирования. То есть встаёт необходимость изучать их синтаксис, правила написания, набор команд. Это так же противоречит девизу проекта FLProg –«Программирование для непрограммистов».

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



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

Редактор графической части



В качестве образца я взял очень любимую мной программу WinCC от Сименса, встроенную в пакет TiaPortal. Убрал то, что мне в ней не нравится, добавил то, что как мне кажется, ей не хватает, взял немного из виндового паинта, немного из CorelDraw, немного от себя. Во всех остальных скадах, которые я видел, меня больше всего напрягала жесткое задание размеров экрана. При отображении этих экранов на мониторах с другим разрешением получались либо черные рамки, либо часть элементов уходило за пределы экрана, и была просто невидимо. Это в полной мере касается, например той же WinCC. Вижу это на работе каждый день. В моей скаде размер экрана то же задается, но при проигрывании проекта в плеере можно изменять размеры окна программы, при этом элементы будут автоматически подстраиваться под новый размер. Что-то типа масштабирования, но умного, без потери качества (все виджеты скады — векторные).

В первой бета-версии программы виджетов пока немного. Это прямоугольник, круг, ломаная линия, текст. Кроме этого есть контролы. Это поле ввода – вывода, простая кнопка, круглый индикатор.

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

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

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

Небольшая демонстрация


Редактор схемы



Тут я конечно за основу взял редактор FBD, который используется при программировании контроллера в программе FLProg. Интерфейс редактора практически не изменился, что позволит пользователям программы легко работать и в редакторе схемы скады. Но вот начинка изменилась кардинально. За время работы над программой FLProg (уже пошёл пятый год) у меня возникло достаточно много идей по оптимизации работы редактора и компилятора программы. Все эти идеи я применил в редакторе схемы скады, и после обкатки на ней, перенесу их так же и в основную программу. Насчет поддержки языка LAD в скаде я ещё не принял решение, если будет достаточно много заинтересованных в этом пользователей, то сделаю.

Небольшая демонстрация


Коммуникации

Ну и конечно коммуникации, какая же скада без них.

  1. Внутренний протокол FLProg. Это обмен переменными любого типа через ComPort (для компьютера) с UART портом микроконтроллера. Работает быстро, но возможно только для прошивок контроллеров созданных в программе FLProg.
  2. Modbus RTU, Modbus TCP, Modbus RTU over TCP. Можно создавать неограниченное количество соединений по этим протоколам. Поддерживаются функции 1, 2, 3, 5, 6, 15, 16. Драйвер протокола самописный, внешние библиотеки не используются. Старался максимально соответствовать стандарту Modbas. Тестирование покажет, насколько это мне удалось. Работает в среде Windows и Linux. Впрочем, для Linux есть некоторые ограничения от меня не зависящие. Дело в том, что Modbus TCP Slave подымает TCP сервер на определённом порту. Для Modbus стандартный порт -502. Но в линуксе порты меньше 1024-го обычный пользователь не имеет права открывать. Поэтому надо либо создавать слейва на порту с более старшим номером, либо запускать плеер от рута (что не есть хорошо). С мастером, поскольку он клиент, таких проблем нет.

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

В любой момент разработки проекта можно открыть этот проект на исполнение, и посмотреть, как он будет работать. Для проигрывания в плеере создаётся Runtime файл.

Небольшая демонстрация
Приём — передача переменных через UART



Modbus RTU



Modbus RTU



Плеер

Плеер runtime файла представляет собой отдельное приложение. Пакет плеера имеет три исполняемых файла для Windows и два для Linux.

Файл Start.exe (только Windows версия). При запуске ищет у себя под боком runtime файл (расширение .fsp). Если находит – запускает его на исполнение. Если не находит, то ищет записи диспетчера проекта. В этих записях ищется проект по умолчанию, который и запускается на исполнение. Если не найдены записи диспетчера проектов, или в них не отмечен проект по умолчанию, то запускается непосредственно сам диспетчер. С помощью диспетчера можно найти runtime файлы на компьютере, составить из них список, и назначить какой – то из них как запускаемый по умолчанию. Файл Start.exe нельзя переименовывать, так же нельзя к нему привязывать на исполнение runtime файлы (расширение .fsp). Нельзя этот файл и удалять из пакета.

Файл Pleer.exe. По поведению, аналогичен файлу Start.exe, но при этом нет ограничений по переименованию, и привязки runtime файлов. Если данные функции не нужны, то данный файл из пакета можно удалить (это касается только Windows, в Linux он является основным запускающим файлом).

Файл Manager.exe. Служит для однозначного запуска диспетчера проектов. Если данная функция не нужна, то данный файл из пакета можно удалить.

Остальные файлы в пакете представляют собой непосредственно плеер.

Небольшая демонстрация


Обучение!




Основная цель проекта FLprog – это привлечение молодёжи в профессию промышленного программиста, электронщика, да и просто в профессии технического направления. Обычных программистов и менеджеров по продажам у нас в стране и так слишком много. Куда ни плюнь, либо программист игрушек для андроида, либо веб программист продажных страниц, либо «продвинутый» менеджер. А хорошего наладчика или разработчика автоматизированной системы управления днём с огнём не сыщешь. В связи с этим меня радует появление уже двух кружков робототехники, которые в качестве основной рабочей программы выбрали FLProg. Один в городе Шатура, другой в Мытищах (Фотография из этого кружка). С учетом этого разрабатывалась и скада. Я старался что бы любой преподаватель мог без сложностей, изучения языков программирования, принципов построения программ сделать интерактивное приложение, например для демонстрации работы базовой логики. Так же с помощью этой скады, можно проводить какие либо лабораторные работы по построению логических схем, обучению создания промышленных систем автоматики.



У меня отсутствует учительский дар, но я думаю, настоящий преподаватель сможет придумать правильный материал. Ну а инструмент я постарался предоставить.



Должен сразу предупредить, что существующая, на текущий момент версия программы является СИЛЬНО тестовой. Поскольку штат проекта FLProg состоит из одного человека (меня), то в качестве отдела QA я беззастенчиво использую пользователей программы. И они с удовольствием выполняют эту работу. На сегодняшний день выловлено достаточно много ошибок. Поэтому в ближайшее время на сервере обновится тестовая версия. Расчётное время тестирования – месяц, после чего будет выпущен стабильный релиз.

Если данная тема заинтересует читателей Geektimes, то я продолжу выпуск статей с более подробным описанием функций программы.
Tags:
Hubs:
If this publication inspired you and you want to support the author, do not hesitate to click on the button
Total votes 16: ↑15 and ↓1+14
Comments9

Articles

Information

Website
flprog.ru
Registered
Founded
Employees
1 employee (me only)
Location
Россия