Апр 04 2012

Старый проект

Когда-то давно была идея разработать собственный программируемый логический контроллер (ПЛК). Тогда эта идея казалась вполне здравой, и ряд подобных отечественных разработок существовал.
Понятно, что аппаратная составляющая ПЛК довольно проста, и затруднений с ее реализацией не возникло. Самое сложное — программная часть.

Известные мне ПЛК работают либо в стандарте IEC-61131-3 (самый распространенный вариант), либо программируются иными способами: в среде Matlab (некоторые контроллеры ICP DAS), в собственной среде разработки (Siemens Logo), на языке С (фактически, контроллеры под IEC61131-3 очень часто поддерживают написание собственных функций на С).

В общем, было решено, что наиболее удобным для пользователей, не имеющих подготовки в области программирования, является графическая среда разработки, похожая на язык FBD стандарта IEC 61131-3 (FBD — Functional Block Diagram), или на среду разработки Siemens Logo.

Такая среда была мной разработана, носила название MicroSwitch и включала в себя графические редакторы диаграмм двух видов: FBD и конечных автоматов. Скриншоты приведены ниже.


Рис. 1. Редактор диаграмм функциональных блоков. (нажмите на картинку для увеличения)


Рис. 2. Редактор диаграмм конечных автоматов. (нажмите на картинку для увеличения)

Среда позволяла в графическом виде описывать работу программы, используя разнообразные функции и типы данных: логические, вещественные и целочисленные. Среда должна была позволять редактировать «схемы», производить эмуляцию их работы и генерировать исполняемый код для микроконтроллера (т.е. генерировать С-код, который затем компилировался штатным компилятором).

Однако разработка была завершена на этапе графического редактора, и вряд ли будет когда-либо продолжена. Тем не менее, сама идея была красивая. Она состояла в том, что программа описывалась в виде множества иерархических конечных автоматов, при этом было возможно графическое описание параллельных потоков, различных взаимодействий этих автоматов, функций переходов автоматов и т.п., всё это делалось с помощью всего лишь двух вышеупомянутых видов диаграмм. Пример такой диаграммы приведен на рис. 3.

Рис. 3. Пример диаграммы автомата. (нажмите на картинку для увеличения)

На графический редактор было получено свидетельство о государственной регистрации.

Весь этот проект был моим личным (не по работе), и все права на него принадлежат, соответственно, только мне. Я мог бы выложить исходные тексты в общий доступ, на случай, если кто-либо заинтересуется и возьмётся продолжать, однако всё это написано на Delphi, который давно вышел из моды. Переписывать всё на чём-либо более современном у меня нет ни времени, ни желания.

  • Дмитрий

    Здравствуйте, Владимир!
    Заинтересовал ваш вариант графического редактора (язык FBD). Если он написан на C#, то еще интереснее, т.к. я тоже немного пишу простые программы на C#. Нельзя ли получить у вас шаблон, хотя бы самый простой, чтобы развивать проект, если потяну. Ведь кроме редактора, должен быть и компилятор для целевого микроконтроллера.

  • arktur04

    Здравствуйте, Дмитрий.
    Это довольно старый проект, он написан на Delphi, и он, к сожалению, не доделан до конца (там не хватает именно кодогенерации для целевой системы).
    Исходники я никуда не выкладывал, и пока нет времени этим заниматься, приводить в порядок и т.п.
    Возможно, если будет время, я этим займусь, но не в ближайшие несолько месяцев точно, увы.