
Комментарии 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 вроде как признали устаревшим, не знаю есть ли смысл его внедрять, только для совместимости
Промышленный контроллер на АМУР MIK32