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
Как использовать
- В ленточном меню выберите «Открыть и сравнить»
- Укажите старый проект (
.xefили.zef) - Укажите новый проект (
.xefили.zef) - Результаты отобразятся в дереве слева; различающийся текст — в двух панелях справа
- Для сохранения отчёта: лента → «Отчёт» → «Сохранить 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
Или через графический интерфейс:
- Откройте
UnityDiff.slnв Visual Studio - Выберите конфигурацию Release
- Собрать → Собрать решение (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 .