Добрый день. Очень долго программе 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, то я продолжу выпуск статей с более подробным описанием функций программы.

Комментарии (9)


  1. poznawatel
    07.10.2017 11:15
    +1

    Под какой лицензией распространяется программа? Нигде не нашёл.


    1. totuin Автор
      07.10.2017 11:26
      +1

      Проект не коммерческий, программа раздаётся бесплатно и без ограничений. Единственно, в лицензионном соглашении (при установке через инсталятор стабильной версии) я снимаю с себя всю ответственность за её использование. ЭТО НЕ ПРОМЫШЛЕННАЯ система, и предусматривает только личное использование. Ну а больше — на свой страх и риск.


      1. unxed
        07.10.2017 14:16
        +1

        Лицензия для вашего open-source проекта

        Choose an open source license

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


        1. totuin Автор
          07.10.2017 14:34

          Ну собственно вот текст моей лицензии (встроена в инсталятор). Вот только не знаю, есть ли необходимость размещать её на сайте

          Пожалуйста, прочитайте следующее лицензионное соглашение перед использованием программы FLProg. Использование программы FLProg подразумевает, что вы принимаете условия настоящего лицензионного соглашения.
          Программа FLProg может распространяться бесплатно, при условии сохранения в неизменном виде дистрибутива, без письменного разрешения обладателя авторского права. Вы не можете видоизменять, сдавать в аренду, продавать и модифицировать настоящую программу. Любое подобное неавторизованное использование программы влечет немедленное и автоматическое аннулирование настоящей лицензии и может стать предметом преследования согласно уголовного и/или гражданского законодательства.
          Ограничение по гарантийным обязательствам
          Это программное обеспечение и сопутствующие файлы предоставляются такими «как они есть» и без гарантий по эксплуатации или иных гарантий, выраженных или подразумеваемых. Гарантия товарной ценности или пригодности для определенной цели не предоставляется. Пользователь принимает на себя целиком риск, связанный с использованием программы. Автор не несет ответственности за любые какие бы то ни было последствия, прямой и непрямой, специальный и иной ущерб, вызванный этим программным обеспечением, (включая, без ограничений, убытки от утраты прибыли от бизнеса, прерывание бизнеса, потерю деловой информации или иной финансовый урон).
          Все авторские права на программу FLProg принадлежат исключительно компании FLProg и её владельцу — Глушенко Сергею


  1. kibar
    08.10.2017 05:45

    У меня одного не воспроизводится звук в последних 4 видеообзорах? Открываю через смартфон.


    1. totuin Автор
      08.10.2017 05:46

      В этих видео звука нет. Писал на работе, в общем кабинете, и не было возможности писать звук.


  1. a_tarsov
    09.10.2017 10:47

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


  1. MaM
    09.10.2017 22:05

    Никому не нужны хорошие/плохие/любые инженеры хоть каких встроенных систем, роботов и прочего крайне интересного на периферии. Люди рефлексируют на нужды рынка, ибо кушать хочется. Спрос есть, но есть он там где центры( причём как я понял настолько большой, что люди готовы на удаленную работу, но для начинающих прямая работа с заказчиком это проблема). Что касается доп образования, не любил никогда подтирание соплей, да наверное многие считают, что образование должно быть веселой игрой, но моё сердце принадлежит только старому доброму коду будь то С, Verilog и т.д. Проблема же не в том что код писать сложно, проблема в том, что хороший код писать сложно, специалистов нет — все валят, и я наверное как смогу свалю. Будущее продано, полимеры потрачены…


    1. totuin Автор
      10.10.2017 08:29

      Ну да, давайте сложим лапки, и дружно помрем. Конечно, плакать о плохой жизни сидя на диване и ничего не делая — проще, чем пытаться как то решить проблему.
      Если правительство не очень заинтересованно в подъеме нашей экономики, то это не значит смирится с этим. Если каждый кому не все равно (не считаем офисных хомячков), будет хоть что то делать, хоть немного, то даже наперекор заевшим в думе лентяям, можно хотябы подрастающее поколение чему то научить. Я не зая упоминал о кружках, ребята бесплатно учат детей, тратя при этом прибыль своего магазина. Вот их я уважаю. А Вас, извините конечно, с этими депрессивными криками «Все пропало, мы все умрём, все продали сволочи», не очень.