Обновить

Промышленный контроллер на АМУР MIK32

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели5.7K
Всего голосов 3: ↑3 и ↓0+4
Комментарии7

Комментарии 7

Вот объясните мне: как версионировать, мерж/diffить код написанный картинками?
есть ли выгрузка/загрузка в текст который потом глазками diffить...

Не все слова понимаю из вопроса.

Если перевод картинку - в команду, то в моих прошлых двух постах есть несколько больше информации:

1) https://habr.com/ru/articles/1103196/

2)https://habr.com/ru/articles/1103386/

Коротко, то картинок (типа jpeg) и подобного нет. Есть векторная графика : список фигур и линий, из которых получается рисунок, а вместе с рисунком есть набор инструкций которые понимает мой компилятор. В конце, каждый получает свое, человек картинку, компилятор - текстовую команду.

Когда пользователь нажимает на вставку картинки/функционального блока, то в конце при компиляции, вместо картинки вставляется - код, который описывает что делать в этом участке кода.

Например, на рисунке есть контакт , на вид как --| |-- , а при компиляции картинка заменяется инструкцией ANDM R0 Variable0; , еще чуть дальше в обработке ANDM R0 Variable0; превращается в ANDM R0 Port12; Где Port12 это уже ваша переменная в том месте программы.

Речь о системах контроля версий (git как пример, https://git-scm.com/book/ru/v2)

Помнится огромная боль с переносом изменений между версиями проекта в TIA Portal и подобных…

А, спасибо! Есть .xml файл проекта, который содержит все : построение веток, инструкций, переменные и т.п. там на видео, с отладкой в реальном времени, и есть открытые проекта, файл .xml

Ветки, ladder программа хранится в этом фале проекта в скрипте текстовом, выглядит как последовательность строк типа @LOD(...); @ LDN(...); их можно как текст копировать/вмтавить и схема перерисуется.

Библиотека функциональных блоков, так же но отдельный файл .xml, он в интерфейсе программы сверху, вкладки типа binary, timers ...Если что то свое нарисовали, пид регулятор какой, то онихранится как модель ПЛК. Но думаю если б я выходил на рынок, то организовал бы эти .xml под международный открытый стандарт, который позволяет переносить проекты между производителями ПЛК

Как по мне, xml не самый удобный для слияния формат - весь файл можно оформить одной строкой.

В добавок в случае xml предполагается, что программист знает устройство его внутренностей(которое не стандартизировано)

ИМХО, тут бы бы удобнее IL(Instruction list) либо ST(Structured Text)

Программа, сама, на низком уровне (для рантайма) это и есть ассемблерные инструкции:

ADDI R28 @SymbolAddress(Thread.Stack.R);

SDR R28 CNXT @SymbolAddress(PC);

SDR R28 CNXT @SymbolAddress(CNXT);

Но это уже скомпилированный файл, это не ветки, это как открыть через блокнот .exe программу, АСУ ТПшник с этим кодом встречаться не будет если не хочет.

Ladder программа/вернее скрипт который внутри .xml выглядит как:

Начало ветки:

@LOD(TimerOff.Dn); // контакт

@TON(TimerOn,500,0);// таймер

конец ветки

...

Это аналог XIC XIO BST BND у Allen Bradley - вставляете этот скрипт, и лестница нарисовалась. Этот скрипт, и находится в .xml. Версии проекта, это история изменения именно этого скрипта который внутри .xml

внутри .xml это выглядит так

SRG - это начало ранга. INF - это типа цветной комментарий и.тд

Среда IDE читает эту последовательность, и рисует схему.

IL вроде как признали устаревшим, не знаю есть ли смысл его внедрять, только для совместимости

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации