SDP LogiC (Software Development Platform for programmable Logic Controllers) представляет собой программный комплекс, созданный для построения программируемых логических контроллеров (ПЛК) и приложений для него.

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

Компоненты платформы SDP LogiC:

  • Runtime - cреда выполнения, запускаемая на ПЛК;
  • DragonToolchain - набор инструментов, состоящий из компилятора приложений на языке DragonScript, и клиентской части отладчика;
  • IDE - интегрированная среда разработки (пока не реализована);
  • Loader - утилита, позволяющая загружать пользовательское приложение в ПЛК.

Подключение ПЛК к персональному компьютеру для отладки пользовательского приложения осуществляется через отладочный интерфейс. Через этот же интерфейс можно загружать готовое приложение с помощью утилиты Loader:

Подключение ПЛК с установленным Runtime SDP LogiC к ПК для отладки пользовательского приложения на DragonScript

 Остановимся более подробно на каждом из компоненте платформы SDP LogiC.

 

Runtime

Runtime, запускаемый на микроконтроллере ПЛК, состоит из следующих элементов:

  • DragonVM - виртуальная машина, выполняющая пользовательское приложение;
  • Debug Server - сервер отладки, который выполняет загрузку пользовательского приложения в память виртуальной машины, и его отладку, через отладочный интерфейс;
  • Drivers - драйверы периферийных устройств;
  • Algorithms - алгоритмы, написанные на C/C++ с целью ускорения выполнения, которые можно вызывать из пользовательского приложения;
  • System Call Handlers - обработчики системных запросов, поступающих из пользовательского приложения;
  • Debug Port и Periphery - аппаратные, ресурсы ПЛК.

Архитектура Runtime SDP LogiC

Ядром Runtime-а является виртуальная машина DragonVM, которая выполняет байт-код пользовательского приложения. В своем составе DragonVM имеет две области памяти: ПЗУ, в котором хранится пользовательское приложение (User App) и ОЗУ (RAM), в котором располагаются стек и переменные приложения. Байт-код приложения (User App) загружается в память виртуальной машины с помощью Debug Server, который подключается к ПК через Debug Port. Debug Server также участвует в отладке приложения, а именно по командам от клиентской части, запускаемой на ПК, устанавливает точки останова, читает и записывает области памяти приложения, передает в ПК отладочные сообщения от виртуальной машины.

Во время своей работы, пользовательское приложение может вызывать системные запросы, которые будут обрабатываться в блоке System Call Handlers. В зависимости от id запроса, он может быть направлен либо к драйверу периферийного устройства (Drivers), либо к алгоритму, реализованному на C/C++. 

 

DragonToolchain

DragonToolchain - набор программных инструментов для разработки пользовательских приложений на языке DragonScript. Поставляется в виде консольных утилит, которые можно запускать либо вручную из консоли, либо при работе из IDE. 

DragonToolchain состоит из следующих компонентов:

  • Компилятор
  • Отладчик (запланировано, пока не реализовано)
  • Дизассемблер (запланировано, пока не реализовано)

Для работы DragonToolchain требуется персональный компьютер с установленной ОС Windows 7, либо новее, и пакет Microsoft .NET Framework 4.5. В дальнейшем планируется поддержка Linux.

 

IDE

В перспективе планируется разработка интегрированной среды разработки (IDE) для SDP LogiC. IDE будет включать в себя следующее:

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

В данный момент, для разработки приложений. предлагается использовать текстовый редактор с подсветкой синтаксиса, такой, как Notepad++, Visual Studio Code, либо иной. В некоторые из текстовых редакторов будет добавлена подсветка синтаксиса DragonScript. Если в интересующий Вас редактор подсветка синтаксиса не добавлена, то можно использовать подсветку Java, C/C++, или C#.

 

Loader

Loader представляет собой утилиту с графическим пользовательским интерфейсом, с помощью которой можно загрузить бинарный файл приложения в ПЛК без необходимости в установке полного пакета разработки. Системные требования: персональный компьютер с установленной ОС Windows 7, либо новее, и пакет Microsoft .NET Framework 4.5. В дальнейшем планируется поддержка Linux.