Unity Pro SE Diff - самописная версия

Jul 18, 26

Релиз

Настольное WPF-приложение для сравнения файлов проектов Unity Pro (ПЛК Schneider Electric). Позволяет быстро находить различия между версиями проектов и формировать HTML-отчёты.

Основные функции

  • Сравнение файлов экспорта Unity Pro: .xef, .zef (ZIP-архив с unitpro.xef), .xdb, .xst
  • Древовидное отображение результатов с цветовой маркировкой:
    • ⬜ Белый — без изменений
    • 🟩 Зелёный — добавлено
    • 🟥 Красный — удалено
    • 🟨 Жёлтый — изменено

Что сравнивается

1. Параметры связи

IP-адрес ПЛК, тип симулятора, пропускная способность.

2. Конфигурация ПЛК

Модель CPU, объём памяти, состав корзин и слотов.

3. Сеть

Ethernet-интерфейсы (IP-адрес, маска, шлюз), IO Scanning, Messaging.

4. Конфигурация задач

Секции с порядком выполнения и условиями активации.

5. FB блоки

Функциональные блоки с переменными и секциями.

6. Определяемые типы (DDT)

Структуры пользовательских типов данных.

7. EFB блоки

Элементарные функциональные блоки с параметрами.

8. Секции программы

ST-код с построчным сравнением (diff).

9. Переменные

Имена, типы, адреса %MW/%IW, начальные значения, элементы массивов.

Дополнительные возможности

IO Scanning — переключение между текстовым и табличным представлением с подсветкой изменений.

Навигация по изменениям — кнопки ↑ / ↓ для перехода между изменившимися строками в diff-панелях.

HTML-отчёты:

  • report-diff.html — только изменения с цветовой подсветкой
  • report-full.html — полное содержимое проекта с пометкой изменений

Построчное сравнение ST-кода:

  PROGRAM Main
+   NewVariable AT %MW100 : INT;   // 🟩 добавлено
    x AT %MW0 : INT;
-   y AT %MW1 : REAL;              // 🟥 удалено
    // основной цикл
    IF x > 10 THEN
~     x := x - 1;                  // 🟨 изменено
    END_IF;
  END_PROGRAM

Как использовать

  1. В ленточном меню выберите «Открыть и сравнить»
  2. Укажите старый проект (.xef или .zef)
  3. Укажите новый проект (.xef или .zef)
  4. Результаты отобразятся в дереве слева; различающийся текст — в двух панелях справа
  5. Для сохранения отчёта: лента → «Отчёт»«Сохранить diff» или «Сохранить полный»

Сборка из исходников

Требования:

  • Visual Studio 2022 Community с рабочей нагрузкой «Разработка классических приложений .NET»
  • .NET Framework 4.6.1

Сборка:

# Открыть решение и собрать
& "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\devenv.exe" UnityDiff.sln /Build Release

Или через графический интерфейс:

  1. Откройте UnityDiff.sln в Visual Studio
  2. Выберите конфигурацию Release
  3. Собрать → Собрать решение (Ctrl+Shift+B)

Готовый исполняемый файл будет находиться в UnityDiff\bin\Release\UnityDiff.exe.

Технические детали

Параметр Значение
Платформа .NET Framework 4.6.1
UI-фреймворк WPF (Windows Presentation Foundation)
Архитектура MVVM
Алгоритм сравнения Longest Common Subsequence (LCS)
Язык C#
Форматы файлов .xef (XML), .zef (ZIP), .xdb, .xst
Зависимости Стандартные библиотеки .NET Framework

Структура проекта

Project/
├── UnityDiff.sln                 # Файл решения
└── UnityDiff/
    ├── MainWindow.xaml/.cs       # Главное окно
    ├── App.xaml/.cs              # Точка входа
    ├── Model.cs                  # Модель сравнения
    ├── CompareCmd.cs             # Команда сравнения
    ├── VariableComparer.cs       # Сравнение переменных
    ├── ElementCompareStatus.cs   # Статусы сравнения
    ├── ReportElement.cs          # Элемент отчёта
    ├── BaseReportElement.cs      # Базовый класс отчёта
    ├── StatusReport.cs           # Статус отчёта
    ├── IOSLineRow.cs             # Строка IO Scanning
    ├── ProgressDialog*           # Диалог прогресса
    ├── LongestCommonSubsequence/ # Реализация LCS
    ├── TextCompare/              # Построчное сравнение текста
    └── UnityFiles/               # Работа с форматами Unity Pro

Ссылки

Ссылка на репозиторий с расшифровкой - Unity-Different на github и она же gitverse .