SDP LogiC (Software Development Platform for programmable Logic Controllers) представляет собой программный комплекс, созданный для построения программируемых логических контроллеров (ПЛК) и приложений для него.
Идея данной платформы состоит в следующем. На этапе производства в ПЛК прошивается среда выполнения (Runtime), состоящая из драйверов периферийных устройств, программных библиотек, и виртуальной машины, которая будет выполнять байт-код пользовательского приложения. Для адаптации ПЛК под конкретную задачу, необходимо спроектировать пользовательское приложение на си-подобном языке программирования DragonScript, скомпилировать его, и загрузить результирующий бинарный файл в память ПЛК, для выполнения его в виртуальной машине.
Компоненты платформы SDP LogiC:
- Runtime - cреда выполнения, запускаемая на ПЛК;
- DragonToolchain - набор инструментов, состоящий из компилятора приложений на языке DragonScript, и клиентской части отладчика;
- IDE - интегрированная среда разработки (пока не реализована);
- Loader - утилита, позволяющая загружать пользовательское приложение в ПЛК.
Подключение ПЛК к персональному компьютеру для отладки пользовательского приложения осуществляется через отладочный интерфейс. Через этот же интерфейс можно загружать готовое приложение с помощью утилиты Loader:
Остановимся более подробно на каждом из компоненте платформы SDP LogiC.
Runtime
Runtime, запускаемый на микроконтроллере ПЛК, состоит из следующих элементов:
- DragonVM - виртуальная машина, выполняющая пользовательское приложение;
- Debug Server - сервер отладки, который выполняет загрузку пользовательского приложения в память виртуальной машины, и его отладку, через отладочный интерфейс;
- Drivers - драйверы периферийных устройств;
- Algorithms - алгоритмы, написанные на C/C++ с целью ускорения выполнения, которые можно вызывать из пользовательского приложения;
- System Call Handlers - обработчики системных запросов, поступающих из пользовательского приложения;
- Debug Port и Periphery - аппаратные, ресурсы ПЛК.
Ядром 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.