Сообщения лога Uniplant Atomix (Warn и выше)
ADPUtils.BackupManager
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| ADPUtils | ERROR | (логируется исключение)src/legacy/ADPUtils/BackupManager.cs | Исключение при копировании содержимого бэкапа в целевую директорию во время отката (CopyAllInDirectory). |
| ADPUtils | ERROR | Директории не существует {pathToSubDirectory}src/legacy/ADPUtils/BackupManager.cs | При откате (UndoDirectory) каталог бэкапа с указанным именем не существует; откат прерван. |
| ADPUtils | ERROR | Директории не существует {targetDirectory}src/legacy/ADPUtils/BackupManager.cs | При откате (UndoDirectory) целевой каталог, в который восстанавливается бэкап, не существует; откат прерван. |
| ADPUtils | ERROR | Ошибка при выполнении бэкапа: {ex.Message}src/legacy/ADPUtils/BackupManager.cs | Исключение в процессе создания бэкапа (создание каталога/копирование содержимого) в методе Backup. |
| ADPUtils | WARN | Директория не найдена и будет создана: {targetDirectory}src/legacy/ADPUtils/BackupManager.cs | В UndoFile целевой директории не существует; она будет создана перед перемещением файла. |
| ADPUtils | WARN | Не удалось удалить старую директорию бэкапа {oldestBackup}: {ex.Message}src/legacy/ADPUtils/BackupManager.cs | При удалении лишних старых бэкапов (DeleteExtraBackups) удаление самого старого каталога вызвало исключение; цикл удаления прерван. |
GenericXmlSerializer
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| ADPUtils | ERROR | При чтении файла {filePath} произошла критическая ошибкаsrc/legacy/ADPUtils/Extensions/GenericXmlSerializer.cs | Исключение при XML-десериализации файла в методе Load; файл нечитаем или невалиден, исключение пробрасывается дальше. |
Модуль валидации
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| ADPUtils | WARN | Строка '{input}' содержит русские символыsrc/legacy/ADPUtils/Extensions/Common.cs | Метод CheckForRussianAndWarn обнаружил в строке кириллические символы (ContainsRussiaLetters). |
Модуль генерации Excel-файлов
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| ADPUtils | WARN | Не найдены листы в файле {path}src/legacy/ADPUtils/Extensions/FileHandlers/ExcelFileHandler.cs | В открытой книге первый лист (GetSheetAt(0)) равен null; лист отсутствует, создаётся новый лист 'Sheet'. |
Модуль генерации специфичных Excel-файлов
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| ADPUtils | WARN | Невозможно сделать автоширину на листе {sheet.SheetName}src/legacy/ADPUtils/Extensions/FormattingHandler/ExcelUnimodDocSpecialFormatter.cs | Исключение в AutoSizeColumns при применении автоширины колонок листа; автоширина не применена. |
Модуль глобального файлового обработчика
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| ADPUtils | ERROR | Ошибка при копировании из "{dest}" сюда "{file.Name}"src/legacy/ADPUtils/Extensions/GlobalFileHandler.cs | Исключение при копировании файла в CopyAllInDirectory (file.CopyTo); файл не скопирован. |
| ADPUtils | ERROR | Что-то пошло не так при создании директории {dirName} {ex.Message}src/legacy/ADPUtils/Extensions/GlobalFileHandler.cs | Исключение при Directory.CreateDirectory в CheckDirectoryExists; директорию создать не удалось. |
| ADPUtils | WARN | ReadFromFile: путь к файлу не задан (null или пустой). Вызов из {callerMember} ({callerFile}:{callerLine}). Чтение пропущено.src/legacy/ADPUtils/Extensions/GlobalFileHandler.cs | В ReadFromFile передан null или пустой путь; чтение файла пропускается, возвращается null. |
| ADPUtils | WARN | SaveFile: путь к файлу не задан (null или пустой). Вызов из {callerMember} ({callerFile}:{callerLine}). Запись пропущена.src/legacy/ADPUtils/Extensions/GlobalFileHandler.cs | В PrepareToSave передан null или пустой путь; сохранение файла пропускается, чтобы не упасть на Path.GetExtension(null). |
| ADPUtils | WARN | SaveXlsFileWithAutoColumns: путь не задан (null или пустой). Вызов из {callerMember} ({callerFile}:{callerLine}). Запись пропущена.src/legacy/ADPUtils/Extensions/GlobalFileHandler.cs | В SaveXlsFileWithAutoColumns передан null или пустой путь к файлу; запись xls пропускается. |
Модуль сохранения контекста классов (GenericJsonSerializer)
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| ADPUtils | ERROR | При чтении файла '{filePath}' произошла критическая ошибкаsrc/legacy/ADPUtils/Extensions/GenericJsonSerializer.cs | JsonException при десериализации содержимого файла в методе Load; JSON некорректен, далее бросается FileProcessingException. |
| ADPUtils | ERROR | При чтении файла '{path}' произошла критическая ошибкаsrc/legacy/ADPUtils/Extensions/GenericJsonSerializer.cs | JsonException при десериализации конфигурации в LoadConfig; файл конфигурации содержит некорректный JSON. |
API.JSC.JscSettings
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| API | WARN | Не найдено элемента по пути {path}src/legacy/API/JSC/JscSettings.cs | Поиск узла по указанному пути вернул null (foundNode == null): элемент по пути отсутствует; возвращается null. |
| API | WARN | Передан некорректный путь ({path}) к переменным pathsrc/legacy/API/JSC/JscSettings.cs | Проверка string.IsNullOrEmpty(path) провалилась: переданный путь к переменным пустой или null; возвращается null. |
| API | WARN | Проблема с получением переменных из {path} {foundNode.Value}src/legacy/API/JSC/JscSettings.cs | Из найденного узла не удалось извлечь переменные (variables == null); возвращается null. |
Модуль обработки GAP
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| API | ERROR | Ошибка инициализации скриптов: {e.Message}src/legacy/API/Script/ScriptManager.cs | Исключение в catch при инициализации скриптов (вызов инициализации в ScriptManager). |
| API | ERROR | Ошибка выполнения скрипта: {e.Message}src/legacy/API/Script/Scripts.cs | Исключение при компиляции и запуске собранного C#-скрипта (CSharpScript.RunAsync) во время инициализации. |
| API | ERROR | Ошибка выполнения скрипта: {e.Message}src/legacy/API/Script/Scripts.cs | Исключение при выполнении метода скрипта через _scriptState.ContinueWithAsync(method) в RunMethod; возвращается null. |
| API | ERROR | Ошибка чтения файла Includes.gs: {e.Message}src/legacy/API/Script/Scripts.cs | Внешний catch: сбой при чтении/обработке файла Includes.gs и сборке кода скриптов. |
| API | ERROR | Ошибка чтения файла скрипта {path}: {e.Message}src/legacy/API/Script/Scripts.cs | Исключение в catch при попытке прочитать файл скрипта по пути path (File.ReadAllTextAsync); файл недоступен или не читается. |
AppSettings.ViewModels.ChangeHandler
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| AppSettings | ERROR | Ошибка очистки кэша парсеровsrc/legacy/AppSettings/ViewModels/ChangeHandler.cs | В обработчике ошибок Rx-подписки (ThrownExceptions) команды ClearCommand парсеров: команда очистки кэша парсеров завершилась исключением. |
Настройка ExternalModules
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| AppSettings | ERROR | Ошибка во время закрытия настроек ExternalModules{e.GetFullMessage()}src/legacy/AppSettings/ViewModels/LibraryManagerViewModel.cs | Исключение в catch при восстановлении состояния модулей из бэкапа во время закрытия настроек ExternalModules. |
| AppSettings | WARN | Ключ модуля отсутствует в бэкапе настроек ExternalModules: {key}src/legacy/AppSettings/ViewModels/LibraryManagerViewModel.cs | BackupModules.TryGetValue по ключу модуля не нашёл сохранённого значения; модуль помечается как не используемый в PLC. |
AutomiqAutomation.App
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| AutomiqAutomation | FATAL | Во время запуска произошла ошибкаsrc/legacy/AutomiqAutomation/App.xaml.cs | Исключение в общем catch при инициализации/запуске приложения — после логирования приложение завершается (Environment.Exit). |
| AutomiqAutomation | ERROR | Unhandled exception {ex.Message}src/legacy/AutomiqAutomation/App.xaml.cs | Глобальный обработчик необработанных исключений (LogException) — приложение поймало критическую ошибку и требует перезапуска. |
AutomiqAutomation.Diagnostics.ParserDebug.ParserEventDispatcher
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| AutomiqAutomation | WARN | ParserEventDispatcher: не удалось получить обработчиков события {0}src/legacy/AutomiqAutomation/Diagnostics/ParserDebug/ParserEventDispatcher.cs | Исключение при получении обработчиков уведомления из DI (GetServices) — диспетчеризация события прекращается. |
| AutomiqAutomation | WARN | ParserEventDispatcher: обработчик {0} завершился с ошибкойsrc/legacy/AutomiqAutomation/Diagnostics/ParserDebug/ParserEventDispatcher.cs | Исключение в catch при вызове handler.Handle(notification) — конкретный обработчик события упал, остальные продолжают обрабатываться. |
AutomiqAutomation.Modules.BaseInstanceNodeModelModule.ViewModels.BaseInstanceNodeModelViewModel
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| AutomiqAutomation | ERROR | Не удалось открыть файл IObj по пути {model.IObjPath}: {ex.Message}src/legacy/AutomiqAutomation/Modules/BaseInstanceNodeModelModule/ViewModels/BaseInstanceNodeModelViewModel.cs | В блоке catch метода OpenIObjExcel: запуск Excel (Process.Start) для файла IObj выбросил исключение. |
| AutomiqAutomation | ERROR | Не удалось открыть файл: {ex.Message}src/legacy/AutomiqAutomation/Modules/BaseInstanceNodeModelModule/ViewModels/BaseInstanceNodeModelViewModel.cs | В блоке catch метода OpenModel: запуск Excel (Process.Start) для файла модели выбросил исключение. |
| AutomiqAutomation | ERROR | Ошибка загрузки модулей из библиотеки {lib}src/legacy/AutomiqAutomation/Modules/BaseInstanceNodeModelModule/ViewModels/BaseInstanceNodeModelViewModel.cs | В блоке catch цикла по библиотекам в LoadExternalModulesAsync: вызов LoadModulesFromAssembly для конкретной библиотеки завершился исключением. |
| AutomiqAutomation | ERROR | Файл не найден: {model.FullName}src/legacy/AutomiqAutomation/Modules/BaseInstanceNodeModelModule/ViewModels/BaseInstanceNodeModelViewModel.cs | В методе OpenModel файл по пути model.FullName не существует (File.Exists вернул false). |
| AutomiqAutomation | ERROR | Файл не найден: {model.FullName}src/legacy/AutomiqAutomation/Modules/BaseInstanceNodeModelModule/ViewModels/BaseInstanceNodeModelViewModel.cs | В методе OpenIObjExcel файл IObj по пути model.IObjPath не существует (File.Exists вернул false). |
AutomiqAutomation.Modules.HmiManager.ViewModels.ConfigViewModel
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| AutomiqAutomation | WARN | Не удалось создать {IconJsonFilePath}.src/legacy/AutomiqAutomation/Modules/HmiManager/ViewModels/ConfigViewModel.cs | Исключение в catch при автоматическом создании JSON-файла размеров иконок (сериализация/запись файла не удалась). |
AutomiqAutomation.Modules.ParserDebug.Services.ExplorerInfoService
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| AutomiqAutomation | ERROR | Explorer: ошибка чтения снимкаsrc/legacy/AutomiqAutomation/Modules/ParserDebug/Services/ExplorerInfoService.cs | В блоке catch метода LoadAsync: при чтении опций или файла снимка Explorer возникло непредвиденное исключение. |
| AutomiqAutomation | WARN | Explorer: не удалось загрузить снимок {0}src/legacy/AutomiqAutomation/Modules/ParserDebug/Services/ExplorerInfoService.cs | Загрузка снимка Explorer завершилась неудачей (snapshotResult.IsFailed) или корень снимка пуст (Root == null). |
AutomiqAutomation.Modules.ParserDebug.Services.ParserDebugCollector
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| AutomiqAutomation | ERROR | ParserDebugCollector: сбой конвейера событийsrc/legacy/AutomiqAutomation/Modules/ParserDebug/Services/ParserDebugCollector.cs | В onError-обработчике Rx-подписки буферизованного конвейера событий парсинга произошло необработанное исключение. |
AutomiqAutomation.Modules.ParserDebug.ViewModels.ParserDebugViewModel
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| AutomiqAutomation | ERROR | Не удалось загрузить данные Проводникаsrc/legacy/AutomiqAutomation/Modules/ParserDebug/ViewModels/ParserDebugViewModel.cs | В блоке catch метода LoadExplorerAndPopulateAsync: вызов EnsureLoadedAsync (загрузка снимка Проводника) выбросил исключение. |
| AutomiqAutomation | ERROR | Не удалось открыть {0} {1}src/legacy/AutomiqAutomation/Modules/ParserDebug/ViewModels/ParserDebugViewModel.cs | В блоке catch метода OpenFile: запуск внешнего приложения для открытия файла (Process.Start) завершился исключением. |
AutomiqAutomation.Navigation.NavigationService
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| AutomiqAutomation | ERROR | ServiceProvider недоступен, навигация на страницу {PageType} невозможнаsrc/legacy/AutomiqAutomation/Navigation/NavigationService.cs | Аксессор сервис-провайдера вернул null — DI-контейнер ещё не готов, поэтому навигация на страницу невозможна. |
| AutomiqAutomation | WARN | Страница {PageType} не зарегистрирована в DIsrc/legacy/AutomiqAutomation/Navigation/NavigationService.cs | serviceProvider.GetService вернул null — запрошенный тип страницы не зарегистрирован в DI-контейнере, переход не выполняется. |
AutomiqAutomation.ViewModels.MainWindowViewModel
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| AutomiqAutomation | ERROR | Ошибка при копировании информации о текущей локацииsrc/legacy/AutomiqAutomation/ViewModels/MainWindowViewModel.cs | Исключение в catch при формировании текста и копировании информации о текущей локации в буфер обмена. |
MnemoViewModel
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| AutomiqAutomation | ERROR | {valueKind} в данный момент не реализован ^_^src/legacy/AutomiqAutomation/Modules/HmiManager/Extensions/HmiObjectExtensions.cs | В GetUpdateAction попался неизвестный (default) тип значения свойства, обработка которого не реализована. |
| AutomiqAutomation | ERROR | {valueKind} в данный момент не реализован ^_^src/legacy/AutomiqAutomation/Modules/HmiManager/Extensions/HmiObjectExtensions.cs | В FindProperty попался неизвестный (default) вид значения свойства, обработка которого не реализована. |
| AutomiqAutomation | ERROR | {valueKind} в данный момент не реализован ^_^src/legacy/AutomiqAutomation/Modules/HmiManager/Extensions/HmiObjectExtensions.cs | В FindPropertyFromBase попался неизвестный (default) вид значения свойства, обработка которого не реализована. |
| AutomiqAutomation | WARN | Conditional formula пока не обновляетсяsrc/legacy/AutomiqAutomation/Modules/HmiManager/Extensions/HmiObjectExtensions.cs | В GetUpdateAction тип свойства ConditionalFormula не поддерживается для обновления — действие пропускается. |
| AutomiqAutomation | WARN | Conditional formula пока не обновляетсяsrc/legacy/AutomiqAutomation/Modules/HmiManager/Extensions/HmiObjectExtensions.cs | В FindProperty тип свойства ConditionalFormula не поддерживается — поиск свойства для этого вида не выполняется. |
| AutomiqAutomation | WARN | Conditional formula пока не обновляетсяsrc/legacy/AutomiqAutomation/Modules/HmiManager/Extensions/HmiObjectExtensions.cs | В FindPropertyFromBase тип свойства ConditionalFormula не поддерживается — поиск значения из базового типа не выполняется. |
| AutomiqAutomation | WARN | Init formula пока не обновляетсяsrc/legacy/AutomiqAutomation/Modules/HmiManager/Extensions/HmiObjectExtensions.cs | В GetUpdateAction тип свойства InitFormula не поддерживается для обновления — действие пропускается. |
| AutomiqAutomation | WARN | Init formula пока не обновляетсяsrc/legacy/AutomiqAutomation/Modules/HmiManager/Extensions/HmiObjectExtensions.cs | В FindProperty тип свойства InitFormula не поддерживается — поиск свойства для этого вида не выполняется. |
| AutomiqAutomation | WARN | Init formula пока не обновляетсяsrc/legacy/AutomiqAutomation/Modules/HmiManager/Extensions/HmiObjectExtensions.cs | В FindPropertyFromBase тип свойства InitFormula не поддерживается — поиск значения из базового типа не выполняется. |
| AutomiqAutomation | WARN | Для {optionName} {hmiObject.Name} будет применено значение из базового, так как ApplyOptions пришел пустымsrc/legacy/AutomiqAutomation/Modules/HmiManager/Extensions/HmiObjectExtensions.cs | Значение ApplyOptions для свойства оказалось пустым, поэтому подставляется значение из базового типа объекта. |
| AutomiqAutomation | WARN | Не найдено свойства {optionName} в объекте {hmiObject.Name}src/legacy/AutomiqAutomation/Modules/HmiManager/Extensions/HmiObjectExtensions.cs | У объекта HMI не нашлось ни обычного свойства, ни параметра с искомым именем опции — обновление иконки по этой опции невозможно. |
Замена иконок на мнемосхеме
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| AutomiqAutomation | ERROR | Ошибка получения данных о мнемосхемах.src/legacy/AutomiqAutomation/Modules/HmiManager/ViewModels/RebindingIconViewModel.cs | Исключение в catch при инициализации моделей иконок мнемосхем (InitializeMnemoHmiIconViewModels); исключение пробрасывается дальше. |
| AutomiqAutomation | WARN | {e.Message}src/legacy/AutomiqAutomation/Modules/HmiManager/ViewModels/RebindingIconViewModel.cs | Исключение в catch при обработке выбранных иконок (ProcessIcons); логируется текст ошибки, окно закрывается, исключение пробрасывается. |
Изменение размеров иконок
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| AutomiqAutomation | ERROR | Не удалось внести изменения в файл {JsonFilePath}src/legacy/AutomiqAutomation/Modules/HmiManager/ViewModels/IconsResizerViewModel.cs | Исключение в catch при сериализации списка размеров иконок и записи их в JSON-файл. |
Импорт сетевых параметров Unimod
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| AutomiqAutomation | ERROR | Не найден файл конфигурации {pathToUnimodConfiguration}src/legacy/AutomiqAutomation/Modules/ProjectConfigurator/ViewModels/Unimod/UnimodConfigurationViewModel.cs | В методе ImportNetworkParameters файл configuration.json по пути _pathToUnimod не существует, импорт сетевых параметров невозможен. |
| AutomiqAutomation | ERROR | Сетевые настройки не получилось импортириоватьsrc/legacy/AutomiqAutomation/Modules/ProjectConfigurator/ViewModels/Unimod/UnimodConfigurationViewModel.cs | TryUpdateJsonData вернул false — обновление секции controllers в configuration.json сетевыми параметрами ПЛК не выполнено. |
Импорт словарей
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| AutomiqAutomation | ERROR | Обязательная переменная {jscSettingName} отсутствует или пуста в конфигурацииsrc/legacy/AutomiqAutomation/Modules/ProjectConfigurator/Models/DictionaryImporter.cs | TryGetDictionaryPath вернул false (нет пути к словарю), а импорт помечен как обязательный (isRequired = true). |
| AutomiqAutomation | ERROR | Ошибка при копировании файла {fileName}: {ex.Message}src/legacy/AutomiqAutomation/Modules/ProjectConfigurator/Models/DictionaryImporter.cs | В блоке catch(IOException): операция File.Copy при копировании словаря в целевую папку завершилась ошибкой ввода-вывода. |
| AutomiqAutomation | WARN | Для packed-словаря используется устаревшая переменная {ImportDictionaryPath2}. Рекомендуется перейти на {PackedDictionaryPathSetting}.src/legacy/AutomiqAutomation/Modules/ProjectConfigurator/Models/DictionaryImporter.cs | Для packed-словаря не задана новая переменная UNIMOD_DICTIONARY_PACKED_PATH, и путь берётся из устаревшей UNIMOD_DICTIONARY_PATH2. |
Инициализатор PLC
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| AutomiqAutomation | ERROR | Ошибка инициализации PLC {plc.Name}: {ex.Message}src/legacy/AutomiqAutomation/Modules/ProjectConfigurator/ViewModels/PlcInitializationService.cs | В блоке catch при инициализации ПЛК: вызов TrySetupInstance внутри Task.Run выбросил исключение, инициализация экземпляра ПЛК не завершилась. |
Основной Модуль
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| AutomiqAutomation | FATAL | Произошла фатальная ошибка и сборка дальше не отработает \n{ex.GetFullMessage()}:\n{ex}src/legacy/AutomiqAutomation/Modules/ProjectConfigurator/ViewModels/WorkspaceViewModel.cs | В блоке catch метода BuildPLC: вызов _model.Build выбросил исключение, прерывающее сборку ПЛК. |
| AutomiqAutomation | ERROR | Невозможно скопировать unet.xml из Unimod ({unimodUnetFilePath}) в DevStudio ({devStudioUnetFilePath}): \n{e.GetFullMessage()}src/legacy/AutomiqAutomation/Modules/ProjectConfigurator/Services/DevStudioUnetCopier.cs | Общий блок catch(Exception) метода Copy: при загрузке Solution/AxmlHlp или копировании файла произошло непредвиденное исключение. |
| AutomiqAutomation | ERROR | Невозможно скопировать unet.xml из Unimod в DevStudio: PLC не выбран.src/legacy/AutomiqAutomation/Modules/ProjectConfigurator/Services/DevStudioUnetCopier.cs | В метод Copy передан null вместо объекта ПЛК, копирование невозможно. |
| AutomiqAutomation | ERROR | Невозможно скопировать unet.xml из Unimod в DevStudio: в DevStudio нет PLC {plc.Name}src/legacy/AutomiqAutomation/Modules/ProjectConfigurator/Services/DevStudioUnetCopier.cs | GetPlcAppElementByShortName вернул null — в omx DevStudio не найден элемент приложения ПЛК с указанным коротким именем. |
| AutomiqAutomation | ERROR | Невозможно скопировать unet.xml из Unimod в DevStudio: в {config.SelectedProject.Name} нет omx файлаsrc/legacy/AutomiqAutomation/Modules/ProjectConfigurator/Services/DevStudioUnetCopier.cs | У выбранного проекта в DevStudio отсутствуют исходные файлы (Files.SourceFiles пуст или null). |
| AutomiqAutomation | ERROR | Невозможно скопировать unet.xml из Unimod в DevStudio: в конфиге нет omx проектаsrc/legacy/AutomiqAutomation/Modules/ProjectConfigurator/Services/DevStudioUnetCopier.cs | config.SelectedProject равен null — в конфигурации не выбран omx-проект. |
| AutomiqAutomation | ERROR | Невозможно скопировать unet.xml из Unimod в DevStudio: не удалось определить путь источника unet.xml для PLC {plc.Name}src/legacy/AutomiqAutomation/Modules/ProjectConfigurator/Services/DevStudioUnetCopier.cs | BuildUnimodUnetFilePath вернул пустую строку — не удалось определить путь к исходному unet.xml в проекте Unimod. |
| AutomiqAutomation | ERROR | Невозможно скопировать unet.xml из Unimod в DevStudio: не удалось получить unetAddressMap для PLC {plc.Name} omx = {selectedOmxPath}src/legacy/AutomiqAutomation/Modules/ProjectConfigurator/Services/DevStudioUnetCopier.cs | GetUnetAddressDefinition вернул null — в omx не найдено описание unet-address-map для данного ПЛК. |
| AutomiqAutomation | ERROR | Невозможно скопировать unet.xml из Unimod в DevStudio: не удалось получить путь к omx файлу, копирование отменено.src/legacy/AutomiqAutomation/Modules/ProjectConfigurator/Services/DevStudioUnetCopier.cs | GetSelectedOmxPath вернул пустую строку — не удалось определить путь к omx-файлу выбранного проекта. |
| AutomiqAutomation | ERROR | Невозможно скопировать unet.xml из Unimod в DevStudio: не удалось сформировать путь назначения для unet.xml для PLC {plc.Name}src/legacy/AutomiqAutomation/Modules/ProjectConfigurator/Services/DevStudioUnetCopier.cs | BuildDevStudioUnetFilePath вернул пустую строку — не удалось построить путь назначения для unet.xml в DevStudio. |
| AutomiqAutomation | ERROR | Невозможно скопировать unet.xml из Unimod в DevStudio: нет omx файлаsrc/legacy/AutomiqAutomation/Modules/ProjectConfigurator/Services/DevStudioUnetCopier.cs | Путь к omx-файлу пуст или файл по этому пути не существует на диске. |
| AutomiqAutomation | ERROR | Невозможно скопировать unet.xml из Unimod в DevStudio: отсуствует unetAddressMaps у PLC {plc.Name}src/legacy/AutomiqAutomation/Modules/ProjectConfigurator/Services/DevStudioUnetCopier.cs | У элемента приложения ПЛК нет потомков unet-address-map (коллекция пуста или null). |
| AutomiqAutomation | ERROR | Невозможно скопировать unet.xml из Unimod в DevStudio: отсутствует unet.xml в проекте Unimod у PLC {plcName}src/legacy/AutomiqAutomation/Modules/ProjectConfigurator/Services/DevStudioUnetCopier.cs | По пути проекта Unimod файл unet.xml не существует (File.Exists вернул false). |
| AutomiqAutomation | ERROR | Невозможно скопировать unet.xml из Unimod в DevStudio: путь к проекту Unimod пуст.src/legacy/AutomiqAutomation/Modules/ProjectConfigurator/Services/DevStudioUnetCopier.cs | Передан пустой путь к проекту Unimod (unimodProjectPath), исходный unet.xml не определить. |
| AutomiqAutomation | ERROR | Невозможно скопировать unet.xml из Unimod в DevStudio: у PLC {plc.Name} отсутствует Attribute = file в {unetAddress}src/legacy/AutomiqAutomation/Modules/ProjectConfigurator/Services/DevStudioUnetCopier.cs | У элемента unet-address-map отсутствует или пуст атрибут file, путь к unet.xml построить нельзя. |
| AutomiqAutomation | ERROR | Не удалось определить путь к папке глобальных словарей по переменной UNIMOD_DICTIONARY_PATH.src/legacy/AutomiqAutomation/Modules/ProjectConfigurator/ViewModels/WorkspaceViewModel.cs | PlcOptions равны null либо подстановка переменной UNIMOD_DICTIONARY_PATH (TryGetUpdatedValue) не удалась. |
| AutomiqAutomation | ERROR | Не удалось открыть результат сборки по пути {fullPath}src/legacy/AutomiqAutomation/Modules/ProjectConfigurator/ViewModels/WorkspaceViewModel.cs | В блоке catch при открытии результата сборки: запуск проводника или копирование файла во временную папку выбросили исключение. |
| AutomiqAutomation | ERROR | Не удалось открыть файл: {ex.GetFullMessage()}src/legacy/AutomiqAutomation/Modules/ProjectConfigurator/ViewModels/WorkspaceViewModel.cs | В блоке catch метода OpenModel: запуск Excel (Process.Start) для файла модели ПЛК выбросил исключение. |
| AutomiqAutomation | ERROR | Ошибка загрузки модулей из библиотеки {library}src/legacy/AutomiqAutomation/Modules/ProjectConfigurator/ViewModels/WorkspaceViewModel.cs | В блоке catch цикла по библиотекам: вызов LoadModulesFromAssembly для конкретной библиотеки внешних модулей завершился исключением. |
| AutomiqAutomation | ERROR | Ошибка при обработке изменения настроекsrc/legacy/AutomiqAutomation/Modules/ProjectConfigurator/ViewModels/WorkspaceViewModel.cs | В блоке catch обработчика OnSettingsChanged: переинициализация конфигурации (_model.InitConfig/AfterInitPLC) после смены настроек завершилась исключением. |
| AutomiqAutomation | ERROR | Папка глобальных словарей не найдена: {directoryPath}src/legacy/AutomiqAutomation/Modules/ProjectConfigurator/ViewModels/WorkspaceViewModel.cs | Полученный путь к папке словарей пуст или директория по нему не существует на диске. |
| AutomiqAutomation | ERROR | Файл не найден: {PLC.FullName}src/legacy/AutomiqAutomation/Modules/ProjectConfigurator/ViewModels/WorkspaceViewModel.cs | В методе OpenModel файл модели ПЛК по пути PLC.FullName не существует (File.Exists вернул false). |
| AutomiqAutomation | WARN | Обнаружено несколько unetAddressMaps: {countUnetAddressMaps} у PLC {plc.Name}. Будет взят первый: {unetAddress.Attribute("name").Value}src/legacy/AutomiqAutomation/Modules/ProjectConfigurator/Services/DevStudioUnetCopier.cs | Найдено более одной записи unet-address-map для ПЛК; неоднозначность разрешается выбором первой. |
| AutomiqAutomation | WARN | (логируется исключение)src/legacy/AutomiqAutomation/Modules/ProjectConfigurator/ViewModels/WorkspaceViewModel.cs | В блоке catch метода AfterInitPLC: загрузка внешних модулей (LoadExternalModulesAsync) выбросила исключение, логируется сам объект ex без текста. |
| AutomiqAutomation | WARN | Не найден файл или папка по пути {fullPath}src/legacy/AutomiqAutomation/Modules/ProjectConfigurator/ViewModels/WorkspaceViewModel.cs | В OpenModuleInBuildResult по сформированному пути в папке результатов сборки нет ни файла, ни директории. |
Основной модуль Unimod Programms
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| AutomiqAutomation | ERROR | Директория не найдена: {PathToMainProjectUnimod}src/legacy/AutomiqAutomation/Modules/ProjectConfigurator/ViewModels/Unimod/UnimodProgrammsViewModel.cs | В методе Import директория основного проекта Unimod (PathToMainProjectUnimod) не существует, импорт программ прерывается. |
| AutomiqAutomation | WARN | Директория не найдена и будет создана: {PathToResultUnimod}src/legacy/AutomiqAutomation/Modules/ProjectConfigurator/ViewModels/Unimod/UnimodProgrammsViewModel.cs | В методе Import целевая директория результатов Unimod (PathToResultUnimod) отсутствует, поэтому она будет создана. |
| AutomiqAutomation | WARN | Не удалось удалить директорию {dir}: {ex.Message}src/legacy/AutomiqAutomation/Modules/ProjectConfigurator/ViewModels/Unimod/UnimodProgrammsViewModel.cs | В блоке catch при импорте: попытка удалить старую директорию программы (Directory.Delete) завершилась исключением. |
Перепривязка env
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| AutomiqAutomation | ERROR | Не удалось перепривязать env для uuid='{item.TargetUuid}' в '{mnemo.Name}'src/legacy/AutomiqAutomation/Modules/HmiManager/Services/EnvRebindApplier.cs | Исключение в catch при применении перепривязки env к одной строке (TryApplyRow) — обработка строки завершилась ошибкой. |
| AutomiqAutomation | ERROR | Ошибка сохранения мнемосхемы '{mnemo.Name}'src/legacy/AutomiqAutomation/Modules/HmiManager/Services/EnvRebindApplier.cs | Исключение в catch при mnemo.Save() после перепривязки env — все ранее успешные строки группы откатываются в неуспешные. |
| AutomiqAutomation | WARN | <object uuid='{item.TargetUuid}'/> не найден в '{mnemo.Name}', пропускаем.src/legacy/AutomiqAutomation/Modules/HmiManager/Services/EnvRebindApplier.cs | В XML мнемосхемы не найден элемент object с указанным uuid — целевой объект для перепривязки отсутствует, строка пропускается. |
| AutomiqAutomation | WARN | Мнемосхема '{group.Key}' не найдена в проекте, пропускаем.src/legacy/AutomiqAutomation/Modules/HmiManager/Services/EnvRebindApplier.cs | В проекте HMI не найдена мнемосхема с именем из запроса перепривязки — все строки этой группы помечаются как неуспешные. |
| AutomiqAutomation | WARN | Не удалось перечитать '{pathToCheck}' для проверки.src/legacy/AutomiqAutomation/Modules/HmiManager/Services/EnvRebindApplier.cs | В отладочной проверке после сохранения не удалось перечитать файл мнемосхемы с диска (XDocument.Load бросил исключение). |
| AutomiqAutomation | WARN | У строки нет TargetUuid (FullPath='{item.OffenderFullPath}', тег='{item.Tag}'), пропускаем.src/legacy/AutomiqAutomation/Modules/HmiManager/Services/EnvRebindApplier.cs | В строке запроса перепривязки отсутствует TargetUuid, поэтому объект на мнемосхеме невозможно идентифицировать — строка пропускается. |
| AutomiqAutomation | WARN | Не удалось обновить окно конфликтов после Apply.src/legacy/AutomiqAutomation/Modules/HmiManager/ViewModels/EnvRebindViewModel.cs | Исключение в catch при вызове коллбэка _onApplied после применения перепривязки — обновление окна конфликтов не удалось. |
Перепривязка HMI
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| AutomiqAutomation | ERROR | Ошибка загрузки модулей из {lib}src/legacy/AutomiqAutomation/Modules/HmiManager/ViewModels/HmiManagerViewModel.Command.cs | Исключение в catch при асинхронной загрузке внешних модулей из сборки (LoadModulesFromAssembly) для одной из библиотек. |
| AutomiqAutomation | ERROR | HmiData не найдена для объекта: {instanceModel.InstanceName} (ObjectType: {instanceModel.ObjectTypeName})src/legacy/AutomiqAutomation/Modules/HmiManager/ViewModels/HmiManagerViewModel.cs | У экземпляра при перестроении иконок ObjectTypes отсутствует HmiData (instanceModel.HmiData == null) — объект пропускается. |
| AutomiqAutomation | ERROR | Базовая мнемосхема {BaseMnemoName} не найдена.src/legacy/AutomiqAutomation/Modules/HmiManager/ViewModels/MnemoUpdateViewModel.cs | Среди мнемосхем проекта не найдена базовая мнемосхема с заданным именем — обновление всех мнемосхем невозможно. |
| AutomiqAutomation | ERROR | Ошибка при обновлении мнемосхем.src/legacy/AutomiqAutomation/Modules/HmiManager/ViewModels/MnemoUpdateViewModel.cs | Исключение в catch при чтении проекта HMI и обновлении всех мнемосхем по базовой. |
| AutomiqAutomation | WARN | Не удалось найти выделенные мнемосхемы в проекте.src/legacy/AutomiqAutomation/Modules/HmiManager/ViewModels/HmiManagerViewModel.Command.cs | После перезагрузки проекта среди мнемосхем не нашлось ни одной из выделенных (mnemos.Count == 0) при поиске конфликтов env. |
| AutomiqAutomation | WARN | Не удалось найти выделенные мнемосхемы в проекте.src/legacy/AutomiqAutomation/Modules/HmiManager/ViewModels/HmiManagerViewModel.Command.cs | После перезагрузки проекта среди мнемосхем не нашлось ни одной из выделенных (mnemos.Count == 0) при пакетной подстановке цветов env. |
| AutomiqAutomation | WARN | Не удалось найти мнемосхему {selectedMnemo.Mnemo.Name} в проекте.src/legacy/AutomiqAutomation/Modules/HmiManager/ViewModels/HmiManagerViewModel.Command.cs | Выбранная мнемосхема не найдена в проекте после перезагрузки (FirstOrDefault вернул null) при открытии окна цветов env. |
| AutomiqAutomation | WARN | Окно привязки иконок не открыто: мнемосхема {mnemoName} не перезагружена.src/legacy/AutomiqAutomation/Modules/HmiManager/ViewModels/HmiManagerViewModel.Command.cs | TryReloadMnemo вернул false — мнемосхему не удалось перечитать с диска, поэтому окно привязки иконок не открывается. |
| AutomiqAutomation | WARN | Выбранный ПЛК {_parserHelper?.Plc?.Name} не найден в AppObject {AppConfig?.SelectedObject}src/legacy/AutomiqAutomation/Modules/HmiManager/ViewModels/HmiManagerViewModel.cs | Проверка AxmlHlp.IsPlc вернула false — выбранный для парсинга ПЛК не числится среди объектов проекта (AppObject). |
ПЛК конфигуратор: начальная страница
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| AutomiqAutomation | ERROR | {plc.Message}src/legacy/AutomiqAutomation/Modules/ProjectConfigurator/ViewModels/StartPageViewModel.cs | При выборе ПЛК у выбранного экземпляра не пустое поле Message — то есть в нём накоплены ошибки инициализации/валидации ПЛК. |
| AutomiqAutomation | ERROR | {plc.Message}src/legacy/AutomiqAutomation/Modules/ProjectConfigurator/ViewModels/StartPageViewModel.cs | В блоке catch метода BuildPLC: сборка модели ПЛК (_model.Build) выбросила исключение, текст которого добавлен в plc.Message. |
| AutomiqAutomation | ERROR | Не удалось перезагрузить начальную страницу ПЛК после смены настроек.src/legacy/AutomiqAutomation/Modules/ProjectConfigurator/ViewModels/StartPageViewModel.cs | В блоке catch обработчика OnSettingsChanged: при перезагрузке списка ПЛК (InitializeAllPLC) после смены проекта произошло исключение. |
Подмена иконок на мнемосхеме
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| AutomiqAutomation | ERROR | Ошибка загрузки шаблонов из {selectedFolder}.src/legacy/AutomiqAutomation/Modules/HmiManager/ViewModels/IconReplacementViewModel.cs | Исключение в catch при загрузке и разборе мнемосхем-шаблонов из выбранной папки. |
| AutomiqAutomation | ERROR | Ошибка поиска подмен.src/legacy/AutomiqAutomation/Modules/HmiManager/ViewModels/IconReplacementViewModel.cs | Исключение в catch при выполнении поиска предложений подмены (FindReplacements). |
| AutomiqAutomation | ERROR | Ошибка применения подмен.src/legacy/AutomiqAutomation/Modules/HmiManager/ViewModels/MnemoReplacementViewModel.cs | Исключение в catch при применении выбранных предложений подмены к мнемосхеме. |
| AutomiqAutomation | WARN | Объект "{candidate.DisplayName}" ({rule.From.BaseTypeName}) на мнемосхеме "{proposal.SourceMnemo.Name}" не найден для замены (возможно, уже заменён ранее).src/legacy/AutomiqAutomation/Modules/HmiManager/Services/IconReplacementService.cs | UpdateMnemoIcon вернул false: объект для замены не найден в мнемосхеме (вероятно, уже был заменён ранее), предложение пропускается. |
| AutomiqAutomation | WARN | Объект "{entry.ObjectName}" ({entry.BaseTypeName}) на мнемосхеме "{entry.MnemoName}" подменить не удастся: {entry.Details}src/legacy/AutomiqAutomation/Modules/HmiManager/Services/ReplacementResultBuilder.cs | Формируется запись о пропуске объекта при подмене (BuildSkip): объект не удалось сопоставить с шаблоном по указанной причине. |
| AutomiqAutomation | WARN | В {replaceRectangle.Name} на мнемосхеме {mnemo.Name} нет вложенных From/To — шаблон пропущен.src/legacy/AutomiqAutomation/Modules/HmiManager/Services/ReplacementTemplateReader.cs | Внутри ReplaceRectangle не найдены контейнеры From и/или To, поэтому шаблон подмены некорректен и пропускается. |
| AutomiqAutomation | WARN | В {replaceRectangle.Name} на мнемосхеме {mnemo.Name} пустой From или To — шаблон пропущен.src/legacy/AutomiqAutomation/Modules/HmiManager/Services/ReplacementTemplateReader.cs | Контейнер From или To не содержит ни одного символа, поэтому пары для подмены построить нельзя и шаблон пропускается. |
| AutomiqAutomation | WARN | В {replaceRectangle.Name} на мнемосхеме {mnemo.Name} число символов From ({fromSymbols.Count}) не совпадает с To ({toSymbols.Count}) — шаблон пропущен.src/legacy/AutomiqAutomation/Modules/HmiManager/Services/ReplacementTemplateReader.cs | Количество символов в From и To не совпадает, сопоставление 1:1 невозможно, шаблон считается некорректным и пропускается. |
| AutomiqAutomation | WARN | В выбранных мнемосхемах-шаблонах не найдено ни одного шаблона подмены (прямоугольник ReplaceRectangle с вложенными From и To). Проверьте, что выбрана правильная папка шаблонов и отмечены нужные мнемосхемы.src/legacy/AutomiqAutomation/Modules/HmiManager/ViewModels/IconReplacementViewModel.cs | После разбора выбранных мнемосхем не найдено ни одного валидного шаблона подмены (templates.Count == 0). |
Подстановка цветов env
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| AutomiqAutomation | ERROR | Ошибка сохранения мнемосхемы {mnemo.Name}src/legacy/AutomiqAutomation/Modules/HmiManager/Services/MnemoColorBatchApplier.cs | Исключение в catch при попытке сохранить мнемосхему через SaveMnemoSpecial в пакетном применении цветов env (метод Apply по коллекции мнемосхем). |
| AutomiqAutomation | ERROR | Ошибка сохранения мнемосхемы {mnemo.Name}src/legacy/AutomiqAutomation/Modules/HmiManager/Services/MnemoColorBatchApplier.cs | Исключение в catch при попытке сохранить одну мнемосхему через SaveMnemoSpecial после применения цветов env к выбранным объектам. |
| AutomiqAutomation | WARN | Не удалось прочитать {filePath}: {ex.Message}src/legacy/AutomiqAutomation/Modules/HmiManager/Services/EnvironmentResolver.cs | Исключение при чтении/разборе XML-файла окружений (LoadFile) — файл с описанием environment не удалось загрузить. |
Привязка иконок HMI
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| AutomiqAutomation | ERROR | Не удалось сохранить привязку иконок для мнемосхемы {mnemo.Name}.src/legacy/AutomiqAutomation/Modules/HmiManager/ViewModels/MnemoIconBinderViewModel.cs | Исключение в catch при сохранении мнемосхемы с добавленными иконками (SaveMnemoSpecial/AddMnemosToHmi); выполняется откат перечитыванием мнемосхемы. |
| AutomiqAutomation | ERROR | у объекта {hmiIconViewModel.Instance.InstanceName} HMIData is nullsrc/legacy/AutomiqAutomation/Modules/HmiManager/ViewModels/MnemoIconBinderViewModel.cs | У модели иконки отсутствует HmiModel (HmiModel == null) при создании HMI-иконки — иконка не создаётся. |
| AutomiqAutomation | WARN | Привязка иконок не сохранена: мнемосхема {_mnemo.Name} не перезагружена.src/legacy/AutomiqAutomation/Modules/HmiManager/ViewModels/MnemoIconBinderViewModel.cs | TryReloadMnemo вернул false — мнемосхему не удалось перечитать с диска, поэтому привязка иконок не сохраняется. |
AutomiqLib.API
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| AutomiqLib | ERROR | Неожиданная ошибка при получении IosPath для sourceName = "{sourceName}", tag = "{tag}". Причина: {ex.Message}src/legacy/AutomiqLib/API/Api.cs | В блоке catch при получении источника или IosPath возникло непредвиденное исключение. |
| AutomiqLib | ERROR | IOS_App '{_selectedAppFullName}' не найден в проекте.src/legacy/AutomiqLib/API/IosPath/DeviceIosPathResolver.cs | Не найдено выбранное IOS_App ни по полному имени, ни как главный объект (iosApp == null); путь построить невозможно. |
| AutomiqLib | ERROR | Объектов с тегом {tag} в DevStudio слишком много - {elements.Count}шт.!src/legacy/AutomiqLib/API/IosPath/DeviceIosPathResolver.cs | При поиске объекта по тегу с аспектом IOS по всему проекту найдено более одного элемента (ветка > 1); неоднозначность, возвращается null. |
| AutomiqLib | ERROR | Устройство с именем '{deviceName}' не найдено.src/legacy/AutomiqLib/API/IosPath/DeviceIosPathResolver.cs | Элемент устройства по короткому имени не найден в проекте (deviceAppObject == null); путь не может быть построен. |
| AutomiqLib | ERROR | Объект '{tag}' не найден в IOS_App домена '{sourceName}'.src/legacy/AutomiqLib/API/IosPath/DomainIosPathResolver.cs | Внутри IOS_App домена не найден объект с заданным тегом (iosObj == null). |
| AutomiqLib | ERROR | Найдено несколько элементов с именем '{sourceName}' ({candidates.Count} шт.). Это ошибка конфигурации. Список: - Тип: '{typeName}', FullPath: {path}src/legacy/AutomiqLib/API/IosPath/IosPathResolverFactory.cs | По имени sourceName найдено более одного элемента (candidates.Count > 1); неоднозначность конфигурации, резолвер не создаётся. |
| AutomiqLib | ERROR | IOS_App '{_selectedAppFullName}' не найден в проекте.src/legacy/AutomiqLib/API/IosPath/PlcIosPathResolver.cs | Не найдено выбранное IOS_App ни по полному имени, ни как главный объект (iosApp == null). |
| AutomiqLib | ERROR | Объект с тегом '{tag}' не найден внутри ПЛК '{plcName}'.src/legacy/AutomiqLib/API/IosPath/PlcIosPathResolver.cs | Внутри найденного ПЛК нет объекта с заданным непустым тегом (objectInPlc == null при непустом tag). |
| AutomiqLib | ERROR | ПЛК с именем '{plcName}' не найден.src/legacy/AutomiqLib/API/IosPath/PlcIosPathResolver.cs | Элемент application-object для ПЛК по короткому имени не найден (plcAppObj == null); путь построить невозможно. |
| AutomiqLib | WARN | Не удалось найти IOS_App в Domain {domain}src/legacy/AutomiqLib/API/Api.cs | LINQ-запрос по доменам/узлам/объектам не нашёл io-server приложения для указанного домена (iosAppObject == null); возвращается пустая строка. |
| AutomiqLib | WARN | Не удалось определить тип источника: {sourceName} (tag = "{tag}")src/legacy/AutomiqLib/API/Api.cs | Фабрика резолверов не смогла подобрать резолвер для sourceName (вернула null) — источник не является ПЛК/устройством/узлом/доменом; возвращается пустая строка. |
| AutomiqLib | WARN | Объект '{tag}' с аспектом IOS не найден в узле Alpha.Domain '{sourceName}'.src/legacy/AutomiqLib/API/IosPath/DomainNodeIosPathResolver.cs | Внутри IOS_App узла домена не найден объект с заданным тегом и аспектом IOS (iosObj == null). |
| AutomiqLib | WARN | Передан ct:object с именем '{sourceName}' напрямую. Это, скорее всего, ошибка вызова. FullPath: {single.GetFullName()}src/legacy/AutomiqLib/API/IosPath/IosPathResolverFactory.cs | Единственный найденный элемент имеет тип object (ct:object) — передан объект напрямую, а не источник; путь по нему получить нельзя. |
| AutomiqLib | WARN | Элемент '{sourceName}' найден, но его тип '{singleName}' не поддерживается для получения IOSPath пути. FullPath: {single.GetFullName()}src/legacy/AutomiqLib/API/IosPath/IosPathResolverFactory.cs | Единственный найденный элемент имеет тип, не поддерживаемый для получения IOSPath (не ПЛК/устройство/узел/домен/object); резолвер не создаётся. |
| AutomiqLib | WARN | Элемент '{sourceName}' не найден в проекте DevStudio. (tag = "{tag}")src/legacy/AutomiqLib/API/IosPath/IosPathResolverFactory.cs | Поиск элементов по имени sourceName не дал результатов (candidates.Count == 0); резолвер не создаётся, возвращается null. |
| AutomiqLib | WARN | CALL API GetIosPath: plcName = {plcName}, tag = {tag} - объектов с таким тегом {elements.Count} шт. Объекты расположены по следующим путям в DevStudio: {element.GetFullName()}src/legacy/AutomiqLib/API/IosPath/PlcIosPathResolver.cs | Объект внутри выбранного IOS_App не найден, а по всему проекту по тегу с аспектом IOS найдено более одного элемента (ветка > 1); неоднозначность путей. |
AutomiqLib.AutomiqModels.AddressMaps.BaseMapModel
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| AutomiqLib | ERROR | При загрузке карты {this.NameAttribute} по пути {FilePath} произошла ошибка! {e.GetFullMessage()}src/legacy/AutomiqLib/AutomiqModels/AddressMaps/BaseMapModel.cs | В блоке catch метода LoadMapBase загрузка карты не удалась (файл отсутствует или ошибка десериализации); карта обнуляется, флаг ошибки выставляется. |
| AutomiqLib | ERROR | При сохранении файла '{FilePath}' произошла ошибка. {e.GetFullMessage()}src/legacy/AutomiqLib/AutomiqModels/AddressMaps/BaseMapModel.cs | В блоке catch метода SaveMapBase при создании каталога и сериализации карты в файл возникло исключение. |
| AutomiqLib | ERROR | При сохранении файла '{FilePath}' произошла ошибка. Класс {typeof(T)} == null.src/legacy/AutomiqLib/AutomiqModels/AddressMaps/BaseMapModel.cs | В SaveMapBase сохраняемая карта (map) равна null; сериализовать нечего. |
AutomiqLib.AutomiqModels.AddressMaps.NetDiagMapModel
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| AutomiqLib | ERROR | При загрузке карты адресов {this.NameAttribute} по пути {FilePath} произошла ошибка! {e.GetFullMessage()}src/legacy/AutomiqLib/AutomiqModels/AddressMaps/NetDiagMapModel.cs | В блоке catch метода LoadMap файл карты сетевой диагностики отсутствует или не десериализуется; выставляется флаг ошибки загрузки. |
| AutomiqLib | ERROR | При сохранении произошла ошибка. {e.GetFullMessage()}src/legacy/AutomiqLib/AutomiqModels/AddressMaps/NetDiagMapModel.cs | В блоке catch метода SaveMap при сериализации NetDiagMap в файл возникло исключение. |
| AutomiqLib | ERROR | При сохранении произошла ошибка. Класс NetDiagMap == null.src/legacy/AutomiqLib/AutomiqModels/AddressMaps/NetDiagMapModel.cs | В SaveMap сохраняемый объект NetDiagMap равен null; сериализовать нечего. |
AutomiqLib.AutomiqModels.ApplicationObjectModel
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| AutomiqLib | ERROR | Ошибка при загрузке атрибутов: {e.Message}src/legacy/AutomiqLib/AutomiqModels/ApplicationObjectModel.cs | В блоке catch метода LoadAttributes при загрузке карт атрибутов и построении иерархии контрол-объектов возникло исключение; метод возвращает false. |
AutomiqLib.AutomiqModels.AttributeMapModel
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| AutomiqLib | ERROR | Не удалось получить тип карты атрибута у name = {element.Attribute("name")?.Value}src/legacy/AutomiqLib/AutomiqModels/AttributeMapModel.cs | У элемента карты не удалось определить тип ни из атрибута type, ни из вложенного attribute-map-attribute-type; возвращается пустая строка. |
| AutomiqLib | ERROR | При загрузке карты атрибутов {Type} по пути {Path} произошла ошибка! {e.ToString()}src/legacy/AutomiqLib/AutomiqModels/AttributeMapModel.cs | В блоке catch метода LoadMap при десериализации XML-карты атрибутов возникло исключение (файл недоступен/повреждён); карта остаётся пустой. |
AutomiqLib.AutomiqModels.ControlObject
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| AutomiqLib | WARN | Список атрибутов для объекта {name} равен null. Будет использован пустой список атрибутов.src/legacy/AutomiqLib/AutomiqModels/ControlObject.cs | В CreatePlcObject передан attributes == null; вместо него создаётся пустой список атрибутов. |
| AutomiqLib | WARN | атрибут {attribute.Type} отсутствует в типе {baseType.GlobalName}, поэтому не будет добавлен в объект {name}src/legacy/AutomiqLib/AutomiqModels/ControlObject.cs | В CreatePlcObject базовый тип не содержит данного атрибута (baseType.HasAttribute вернул false); атрибут не добавляется в создаваемый объект. |
AutomiqLib.AutomiqModels.InnerObject
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| AutomiqLib | WARN | при инициализации InnerObject с именем {Name} не удалось найти его базовый тип {BaseTypeName}src/legacy/AutomiqLib/AutomiqModels/InnerObject.cs | При инициализации вложенного объекта по полному имени базового типа GetTypeInfo вернул null; базовый тип не установлен. |
AutomiqLib.AutomiqModels.Refs.Ref
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| AutomiqLib | ERROR | Не найден тип, на который ссылается r:ref type = {RelativeTypeName}. родитель {element.Parent.GetFullName()}, элемент {element.ToString()}src/legacy/AutomiqLib/AutomiqModels/Refs/Ref.cs | Для ссылки r:ref не удалось определить элемент базового типа (typeElement == null); тип, на который указывает ссылка, не найден. |
AutomiqLib.HMI.HmiDataHandler
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| AutomiqLib | ERROR | Ошибка загрузки {jsonFilePath}, {ex.Message}src/legacy/AutomiqLib/HMI/HmiDataHandler.cs | В конструкторе при создании словаря размеров иконок из json-файла произошло исключение (файл недоступен/повреждён/невалидный JSON). |
AutomiqLib.HMI.Types.HmiWithInnerObjects
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| AutomiqLib | ERROR | Не найдено в базовом типе hmi {BaseType.Name} target={target}src/legacy/AutomiqLib/HMI/Types/HmiObject.cs | Свойство target отсутствует и в текущем объекте, и в DesignedProperties базового типа (TryGetValue вернул false); метод возвращает false. |
| AutomiqLib | WARN | Проверьте значение для {target}, должно быть (condition){ConditionValueSplitter}(expression)src/legacy/AutomiqLib/HMI/Types/HmiObject.cs | Значение условного выражения после разбиения по разделителю не содержит ровно двух частей (parts.Length != 2); формат condition/expression нарушен. |
| AutomiqLib | WARN | Переданный placer и собственный placer у {Name} равны nullsrc/legacy/AutomiqLib/HMI/Types/HmiWithInnerObjects.cs | В PlaceObjects и переданный placementArea, и собственный InnerObjectPlacer равны null; разместить объекты невозможно. |
| AutomiqLib | WARN | Попытка добавления в {Name} hmiObject, который равен nullsrc/legacy/AutomiqLib/HMI/Types/HmiWithInnerObjects.cs | В AddInnerObject (перегрузка с координатами) передан hmiObject == null; добавление прекращается. |
| AutomiqLib | WARN | Попытка добавления в {Name} hmiObject, который равен nullsrc/legacy/AutomiqLib/HMI/Types/HmiWithInnerObjects.cs | В AddInnerObject (перегрузка со смещениями offsetX/offsetY) передан hmiObject == null; добавление прекращается. |
| AutomiqLib | WARN | У объекта {Name} не задан InnerObjectPlacersrc/legacy/AutomiqLib/HMI/Types/HmiWithInnerObjects.cs | В AddInnerObject у объекта отсутствует InnerObjectPlacer (== null); вычислить координаты для размещения нельзя. |
| AutomiqLib | WARN | У объекта {Name} не задан InnerObjectPlacersrc/legacy/AutomiqLib/HMI/Types/HmiWithInnerObjects.cs | В ChangeOffset у объекта отсутствует InnerObjectPlacer (== null); изменить смещение невозможно. |
| AutomiqLib | WARN | Не определен путь для мнемосхемы {Name}src/legacy/AutomiqLib/HMI/Types/Mnemo.cs | В методе Save путь к файлу мнемосхемы (_mnemoPath) пустой; сохранение невозможно. |
AutomiqLib.HMI.Types.Param
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| AutomiqLib | ERROR | Попытка задать значение {value} атрибута {name}, но элемент == null.src/legacy/AutomiqLib/HMI/Types/Param.cs | В методе SetAttributeValue связанный XML-элемент Element равен null; установить значение атрибута нельзя. |
| AutomiqLib | ERROR | Элемент == null, невозможно обновить XML.src/legacy/AutomiqLib/HMI/Types/Param.cs | В методе UpdateElement связанный XML-элемент Element равен null; обновить атрибуты нельзя. |
AutomiqLib.HMI.Types.ValueBase
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| AutomiqLib | ERROR | Попытака задать значение {value} атрибута {name}, но элемент == null, owner = {Owner}src/legacy/AutomiqLib/HMI/Types/ValueBase.cs | В SetAttributeValue связанный XML-элемент Element равен null; установить значение атрибута невозможно. |
HmiGlobalObject
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| AutomiqLib | WARN | Не найдено свойство со значением {propertyValue} глобального объекта {_globalLinkName}src/legacy/AutomiqLib/HMI/Types/HmiGlobalObject.cs | В GetGlobalNameByValue среди init-свойств не нашлось свойства с заданным значением (init.Key == null); возвращается исходное значение. |
| AutomiqLib | WARN | Не найдено свойство со значением {propertyValue} у глобального объекта {_globalLinkName}src/legacy/AutomiqLib/HMI/Types/HmiGlobalObject.cs | В TryGetGlobalNameByValue среди init-свойств не нашлось свойства с заданным значением (init.Key == null); метод возвращает false. |
Библиотека AutomiqLib
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| AutomiqLib | ERROR | При загрузке библиотеки {Name} произошла ошибка, не найден файл {PathToOmx}src/legacy/AutomiqLib/AutomiqModels/AutomiqModule.cs | Файл библиотеки .omx по пути PathToOmx не существует (File.Exists вернул false); далее выбрасывается FileNotFoundException. |
| AutomiqLib | WARN | Не найден {attrTypeName} при создании атрибута для объекта {this.FullPath}src/legacy/AutomiqLib/AutomiqModels/ControlObject.cs | Для элемента атрибута, не определённого в базовом типе, не найден его тип атрибута (attributeType == null); атрибут пропускается. |
Детектор дублирования
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| AutomiqLib | ERROR | Не удалось получить базовый тип сокета по имени {BaseTypeGlobalName}. Возможно это связано с дублированием Namespace в проекте библиотеки. Обратитесь к разработчику.src/legacy/AutomiqLib/AutomiqModels/Sockets/SocketDefinition.cs | В InitBaseType по BaseTypeGlobalName не удалось получить тип сокета (SocketType == null), вероятно из-за дублирования Namespace; инициализация прерывается. |
Модуль DevStudio (Axml)
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| AutomiqLib | ERROR | Не найден тип {typeof(T).Name}: {globalName}src/legacy/AutomiqLib/Axml.cs | Тип с указанным globalName не найден ни по локальному имени, ни по индексу GlobalName, ни с префиксом unit.; GetTypeInfo возвращает null. |
| AutomiqLib | ERROR | Найдено несколько элементов <device> с именем "{name}". Возвращается первый из {devices.Count}.src/legacy/AutomiqLib/AxmlHlp.cs | По имени устройства в индексе найдено более одного элемента <device> (devices.Count > 1); это неоднозначность конфигурации, возвращается только первый. |
| AutomiqLib | WARN | Не удалось найти тип {devStudioType}src/legacy/AutomiqLib/Axml.cs | В GetDevStudioTypes передано пустое имя типа (devStudioType пустое или null); возвращается пустая коллекция. |
| AutomiqLib | WARN | Метод GetDomainNodeByName - вернул {foundElements.Count} по тегу {name}. Это залет. Ни один алгоритм не расчитан для работы с ТАКИМИ проектами. Удачиsrc/legacy/AutomiqLib/AxmlHlp.cs | По имени domain-node найдено более одного элемента (ветка default в switch по количеству); проект содержит дубликаты узлов, алгоритмы на это не рассчитаны. |
| AutomiqLib | WARN | Не найдено плк по имени {plcName} в DevStudiosrc/legacy/AutomiqLib/AxmlHlp.cs | Среди узлов всех доменов не найден узел (ПЛК) с заданным именем; GetLoadedPlc возвращает null. |
| AutomiqLib | WARN | Не удалось найти объект по пути {iosAppName}src/legacy/AutomiqLib/AxmlHlp.cs | По частям пути (домен/сервер/приложение) не удалось найти соответствующий IOS-объект (iosApp == null); метод возвращает null. |
| AutomiqLib | WARN | Передан некорректный путь для данного метода, нужно ИмяДомена.ИмяСервера.Сервер.ИмяОбъектаsrc/legacy/AutomiqLib/AxmlHlp.cs | Переданный путь IOS_App после разбиения по точке не состоит ровно из 4 частей, значит формат пути неверен. |
| AutomiqLib | WARN | Попытка добавить дубликат элемента <{elementName}> {value.FullPath} из библиотеки "{module.Name}". Уже загружено из {projectSourceName}src/legacy/AutomiqLib/Helpers/RegHelper.cs | TryAdd в словарь типов вернул false — элемент с таким ключом уже зарегистрирован ранее из другого источника; дубликат не добавляется. |
Модуль HMI
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| AutomiqLib | ERROR | Не удалось перезагрузить мнемосхему {mnemo.Name} на месте.src/legacy/AutomiqLib/HMI/HmiProject.cs | В блоке catch метода ReloadMnemoInPlace при перечитывании и резолве базовых типов мнемосхемы возникло исключение. |
| AutomiqLib | ERROR | Не удалось перезагрузить мнемосхему {mnemoName} из файла {mnemoFilePath}src/legacy/AutomiqLib/HMI/HmiProject.cs | В блоке catch метода TryReloadMnemo при создании новой мнемосхемы и резолве базовых типов возникло исключение. |
| GAProcessor | ERROR | MnemoName == null у {o.InstanceName}src/legacy/GAProcessor/Generators/HmiObjectPaster.cs | У элемента HmiData не задано имя мнемосхемы MnemoName, мнемосхему получить нельзя, элемент пропускается. |
| GAProcessor | ERROR | у объекта {o.InstanceName} HMIData == nullsrc/legacy/GAProcessor/Generators/HmiObjectPaster.cs | У обрабатываемого объекта поле HmiData равно null, создавать иконки HMI не из чего, объект пропускается. |
| AutomiqLib | WARN | Мнемосхема {mnemoName} удалена из кеша HMI: файл не найден {mnemoFilePath}src/legacy/AutomiqLib/HMI/HmiProject.cs | Файл мнемосхемы по ожидаемому пути отсутствует (File.Exists вернул false); мнемосхема удаляется из кеша, метод возвращает false. |
| AutomiqLib | WARN | Уже существует мнемосхема с именем {element.Name} {mnemo.Name}src/legacy/AutomiqLib/HMI/HmiProject.cs | При добавлении мнемосхемы в скрытые в корне документа найден элемент с тем же именем; добавление прекращается. |
| AutomiqLib | WARN | Шаблон {mnemoFile} не загружен: {exception.GetFullMessage()}src/legacy/AutomiqLib/HMI/HmiProject.cs | При создании мнемосхемы из файла-шаблона и резолве базовых типов возникло исключение; данный шаблон пропускается. |
Обработка значений атрибутов с @
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| AutomiqLib | WARN | Не удалось обработь значение {matchValue} для {instance.FullRelativePath}src/legacy/AutomiqLib/Helpers/AttributeValueHelpers/AttributeValueHelper.cs | Найденный по шаблону @(...) линк-апдейтер не смог получить обновлённое значение (TryGetUpdatedValue вернул false); исходный текст оставляется без изменений. |
Обработка сокетов devstudio
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| AutomiqLib | WARN | Найдено сразу несколько параметров по пути {appObjectPathToFind}src/legacy/AutomiqLib/AutomiqModels/Sockets/SocketInstance.cs | При поиске параметра сокета по пути найдено более одного совпадения (socketParameters.Count() > 1); неоднозначность, возвращается null. |
Обработчик карт атрибутов
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| AutomiqLib | WARN | Не удалось загрузить карту атрибутов {Name} -- {Type}. Не удалось получить атрибут filesrc/legacy/AutomiqLib/AutomiqModels/AttributeMapModel.cs | У элемента карты атрибутов отсутствует атрибут file (filePath == null); путь к файлу карты не определён, загрузка прекращается. |
DebugProject.Program
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| DebugProject | FATAL | (логируется исключение)src/legacy/DebugProject/Program.cs | В том же catch (Exception) метода Main3 дополнительно логируется само объект-исключение. |
| DebugProject | FATAL | Чет критануло конкретно. Текст ошибки: {e.GetFullMessage()}src/legacy/DebugProject/Program.cs | Общий catch (Exception) в методе Main3: произошла необработанная ошибка во время обработки .omx и тегов. |
| DebugProject | ERROR | application-object c именем {appObjName} НЕ найден!src/legacy/DebugProject/Program.cs | Среди application-object из .omx не найден объект с переданным именем (FirstOrDefault вернул null); программа завершается. |
| DebugProject | ERROR | найдено несколько({el.Count}) объектов с тегом "{tagName}". Они все будут записаны в результирующий файлsrc/legacy/DebugProject/Program.cs | По тегу найдено более одного объекта (el.Count > 1); все они записываются в результирующий файл. |
| DebugProject | ERROR | не найден файл "{omxFile}"src/legacy/DebugProject/Program.cs | Указанный во втором аргументе .omx файл не существует (File.Exists вернул false); программа завершается. |
| DebugProject | ERROR | не найден файл "{tagsFile}"src/legacy/DebugProject/Program.cs | Файл с тегами объектов (третий аргумент) не существует; программа завершается. |
| DebugProject | ERROR | не найдет объект с тегом "{tagName}"src/legacy/DebugProject/Program.cs | Для тега из списка не найдено ни одного объекта (el.Count == 0) внутри application-object. |
| DebugProject | ERROR | необходи передать 4 аргумента! 1-имя application-object, 2-путь к .omx файлу, 3-путь к файлу с тегами объектов, 4-путь к результирующему файлуsrc/legacy/DebugProject/Program.cs | Количество аргументов командной строки не равно 4; программа завершается. |
| DebugProject | ERROR | теги в файле {tagsFile} не обнаруженыsrc/legacy/DebugProject/Program.cs | Список тегов, прочитанный из файла, пуст (Count < 1); программа завершается. |
ExtModules.ModuleOrchestrator
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| ExtModules | WARN | Остановка выполнения цепочки модулей: {ex.Message}src/legacy/ExtModules/ModuleOrchestrator.cs | Поймано ModuleStopException во время выполнения цепочки модулей — модуль запросил остановку; исключение пробрасывается дальше. |
Загрузчик внешних модулей
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| ExtModules | ERROR | LoaderException для {assemblyPath}src/legacy/ExtModules/ModuleLoader.cs | Поймано ReflectionTypeLoadException при загрузке типов из сборки; перебираются LoaderExceptions — не удалось разрешить зависимости типов сборки. |
| ExtModules | ERROR | Не удалось загрузить сборку {assemblyPath}src/legacy/ExtModules/ModuleLoader.cs | Общий catch при загрузке сборки из AssemblyLoadContext; сборку прочитать не удалось, возвращается пустой список типов. |
| ExtModules | ERROR | Произошла ошибка зугрузки мастер-модулей. Подробнее в Debug. Сообщение: {ex.Message}src/legacy/ExtModules/ModuleLoader.cs | В catch при получении мастер-модуля и его подмодулей из сборки выброшено исключение; мастер-модуль не загружен. |
| ExtModules | ERROR | Произошла ошибка зугрузки модулей. Подробнее в Debug. Сообщение: {ex.Message}src/legacy/ExtModules/ModuleLoader.cs | В catch при создании экземпляра одного из модулей из сборки (GetModuleAsync) выброшено исключение; модуль не загружен. |
Запуск внешних модулей
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| ExtModules | ERROR | Ошибка загрузки модулей из библиотеки {library.LibraryFileInfo.FullPath}src/legacy/ExtModules/Modules/ModuleLauncher/ViewModels/ModuleLauncherViewModel.cs | Исключение при загрузке модулей из сборки библиотеки (LoadModulesFromAssembly) для одной из подключённых библиотек. |
Менеджер свойств модулей
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| ExtModules | ERROR | Ошибка записи свойства {baseProperty.Name} в файл {path}: {ex.Message}src/legacy/ExtModules/Persistence/ModulePropertiesManager.cs | Исключение при сериализации свойства и сохранении его в XML-файл; свойство не записано. |
| ExtModules | ERROR | Ошибка сохранения XML файла {filePath}: {ex.Message}src/legacy/ExtModules/Persistence/ModulePropertiesManager.cs | Исключение при вызове doc.Save для XML-документа; файл не сохранён. |
| ExtModules | ERROR | Ошибка сохранения уровней сохранения в файл {persistenceSettingsPath}: {ex.Message}src/legacy/ExtModules/Persistence/ModulePropertiesManager.cs | Исключение при формировании и сохранении XML-документа с уровнями persistence; файл уровней не сохранён. |
Обработка внешних модулей
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| ExtModules | ERROR | В модуле {module.Name} cвойство {prop.Name} с аттрибутом BackupAttribute должно быть типа BackupManagerViewModel, но является {prop.PropertyType}. Резульирующая кнопка для данного свойства не появитсяsrc/legacy/ExtModules/ModuleControlViewModel.cs | Свойство с атрибутом BackupImportAttribute имеет тип, отличный от BackupImportViewModelBase; кнопка для него не создаётся. |
| ExtModules | ERROR | В модуле {module.Name} cвойство {prop.Name} с аттрибутом OpenDirOrFileAttribute должно быть типа string, но является {prop.PropertyType}. Резульирующая кнопка для данного свойства не появитсяsrc/legacy/ExtModules/ModuleControlViewModel.cs | Свойство с атрибутом OpenDirOrFileAttribute имеет тип, отличный от string; кнопка для него не создаётся. |
| ExtModules | ERROR | В модуле {module.Name} cвойство {prop.Name} с аттрибутом ResultAttribute должно быть типа ICommand, но является {prop.PropertyType}. Резульирующая кнопка для данного свойства не появитсяsrc/legacy/ExtModules/ModuleControlViewModel.cs | Свойство с атрибутом ResultAttribute имеет тип, отличный от ICommand; кнопка для него не создаётся. |
| ExtModules | ERROR | Ошибка при загрузке свойств модуля {module.Name}src/legacy/ExtModules/ModuleControlViewModel.cs | ModulePropertiesManager.LoadPropertiesAsync вернул false — не удалось загрузить сохранённые свойства модуля. |
| ExtModules | ERROR | Ошибка при инициализации модуля {module.Name}src/legacy/ExtModules/ModuleControlViewModel.cs | module.InitializeAsync вернул false — модуль сообщил о неуспешной инициализации. |
| ExtModules | ERROR | Произошла ошибка при инциализации модуля {loadedModule.Module.Name}src/legacy/ExtModules/ModuleControlViewModel.cs | Исключение при асинхронной инициализации загруженного модуля (InitLoadedModulesAsync); инициализация модуля провалилась. |
| ExtModules | ERROR | {ex.InnerException.Message}src/legacy/ExtModules/ModuleViewModel/ModuleViewModel.cs | Если у исключения выполнения модуля есть InnerException, логируется его сообщение. |
| ExtModules | ERROR | {ex.ToString()}src/legacy/ExtModules/ModuleViewModel/ModuleViewModel.cs | В том же catch выполнения модуля логируется полный текст пойманного исключения. |
| ExtModules | ERROR | Ошибка при выполнении модуля {Module.Name}src/legacy/ExtModules/ModuleViewModel/ModuleViewModel.cs | Исключение при запуске модуля через оркестратор (RunModuleAsync); состояние модуля переведено в Error. |
| ExtModules | WARN | В модуле {module.Name} cвойство {prop.Name} с аттрибутом BackupManagerViewModel имеет тип BackupManagerViewModel, но его значение равно null. Резульирующая кнопка для данного свойства не появитсяsrc/legacy/ExtModules/ModuleControlViewModel.cs | Значение свойства с атрибутом BackupImportAttribute равно null; кнопка для него не создаётся. |
| ExtModules | WARN | В модуле {module.Name} cвойство {prop.Name} с аттрибутом OpenDirOrFileAttribute имеет тип string, но его значение равно null. Резульирующая кнопка для данного свойства не появитсяsrc/legacy/ExtModules/ModuleControlViewModel.cs | Значение свойства типа string с атрибутом OpenDirOrFileAttribute равно null; кнопка для него не создаётся. |
| ExtModules | WARN | В модуле {module.Name} cвойство {prop.Name} с аттрибутом ResultAttribute имеет тип ICommand, но его значение равно null. Резульирующая кнопка для данного свойства не появитсяsrc/legacy/ExtModules/ModuleControlViewModel.cs | Значение свойства типа ICommand с атрибутом ResultAttribute равно null; кнопка для него не создаётся. |
| ExtModules | WARN | Свойство {prop.Name} содержит неизвестный атрибут {attr.GetType().Name}.src/legacy/ExtModules/ModuleControlViewModel.cs | В ветке default switch по атрибутам свойства встречен атрибут, не поддерживаемый обработчиком результирующих свойств. |
| ExtModules | WARN | не удалось провалидировать свойства результатов {module.Name}src/legacy/ExtModules/ModuleControlViewModel.cs | TryValidateResultProperties вернул false — результирующие свойства модуля не прошли валидацию. |
FilterElixir.WPF.ViewModels.AttributesEditor.AttributesEditorViewModel
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| FilterElixir | ERROR | (логируется исключение)src/modules/FilterElixir/FilterElixir.WPF/ViewModels/AttributesEditor/AttributesEditorViewModel.Commands.cs | Исключение в catch при сохранении; в лог передаётся только объект исключения e, пользователю показывается сообщение об ошибке сохранения. |
| FilterElixir | ERROR | Ошибка при перезагрузке данных: {e.Message}src/modules/FilterElixir/FilterElixir.WPF/ViewModels/AttributesEditor/AttributesEditorViewModel.Commands.cs | Исключение в catch при перезагрузке данных; пользователю показывается сообщение об ошибке. |
| FilterElixir | ERROR | Backup успешно создан {backupPath}src/modules/FilterElixir/FilterElixir.WPF/ViewModels/AttributesEditor/AttributesEditorViewModel.cs | После успешного копирования проекта в backup-файл фиксируется создание резервной копии (успешное событие, записанное уровнем Error). |
| FilterElixir | ERROR | Ошибка при загрузке LoadAttributes() {e}src/modules/FilterElixir/FilterElixir.WPF/ViewModels/AttributesEditor/AttributesEditorViewModel.cs | Исключение в catch внутри LoadAttributes(); дополнительно показывается критическое сообщение пользователю. |
| FilterElixir | ERROR | Произошла ошибка backup: {ex.Message}src/modules/FilterElixir/FilterElixir.WPF/ViewModels/AttributesEditor/AttributesEditorViewModel.cs | Исключение в catch при создании резервной копии проекта; метод возвращает false. |
FBD-генератор. Модуль замен TAG (From-To)
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| GAProcessor | ERROR | Подстановка переменной в имени {block["name"]} в библиотечном {inputJson.Name} не выполнилась. Данный блок не попадет в результирующий файл. См. локльный словарьsrc/legacy/GAProcessor/Generators/ModuleFBD/Services/TagProcessor.cs | После замены в имени блока остались квадратные скобки (неподставленная переменная); блок удаляется из FBD и не попадёт в результат. |
GA ObjTypeProcessor
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| GAProcessor | ERROR | {instance.InstanceName} - ObjectType.Data == null, такого быть не должно - объект будет пропущен, проверьте свои исходные данные!src/legacy/GAProcessor/ParserInputData/InstanceModelUpdaters/ObjectTypeProcessor.cs | У типа объекта отсутствуют данные (objectType.Data == null), поэтому обработка экземпляра прерывается и возвращается null. |
| GAProcessor | ERROR | Не задан путь для {(instance.UseLocalObjectType ? "локальных" : "глобальных")} ObjectTypessrc/legacy/GAProcessor/ParserInputData/InstanceModelUpdaters/ObjectTypeProcessor.cs | Полученный путь к каталогу ObjectTypes (локальных или глобальных) пуст; возвращается значение по умолчанию. |
| GAProcessor | ERROR | Не найден файл ObjectType '{objectTypeName}': {ex.GetFullMessage()}src/legacy/GAProcessor/ParserInputData/InstanceModelUpdaters/ObjectTypeProcessor.cs | Поиск файла ObjectType на диске (FileSearcher.FindFileByExactName) выбросил исключение, файл не найден. |
| GAProcessor | ERROR | Не найдена переменная {DefLabelsPathPrefix}src/legacy/GAProcessor/ParserInputData/InstanceModelUpdaters/ObjectTypeProcessor.cs | В настройках JscSettings отсутствует ключ DefLabelsPathPrefix (путь к файлу DefLabels не получен). |
| GAProcessor | ERROR | Не найдена переменная {WeintekEventParams}src/legacy/GAProcessor/ParserInputData/InstanceModelUpdaters/ObjectTypeProcessor.cs | В настройках JscSettings отсутствует ключ WeintekEventParams (путь к параметрам событий Weintek не получен). |
| GAProcessor | ERROR | Не удалось распарсить ObjectType: '{objectTypeName}' из файла {matchedFile}. Проверьте файлsrc/legacy/GAProcessor/ParserInputData/InstanceModelUpdaters/ObjectTypeProcessor.cs | Парсинг файла ObjectType (ParseObjectTypesAndAttributes) вернул null. |
| GAProcessor | ERROR | Ошибка при обработке ObjectType для инстанса '{instance.InstanceName}': {ex.GetFullMessage()}src/legacy/GAProcessor/ParserInputData/InstanceModelUpdaters/ObjectTypeProcessor.cs | Внешний catch метода GetObjTypeOrDefault: любое исключение при поиске/парсинге ObjectType. |
| GAProcessor | ERROR | Ошибка при обработке экземпляра '{instance.InstanceName}': {ex.Message}src/legacy/GAProcessor/ParserInputData/InstanceModelUpdaters/ObjectTypeProcessor.cs | Внешний catch при обработке экземпляра: любое исключение в основном блоке формирования UpdatedInstanceModel. |
| GAProcessor | ERROR | Ошибка при чтении или парсинге файла: {ex.Message}src/legacy/GAProcessor/ParserInputData/InstanceModelUpdaters/ObjectTypeProcessor.cs | При создании workbook или парсинге листов DefLabels возникло исключение. |
| GAProcessor | WARN | Не задан путь для {(useLocalObjectType ? "локальных" : "глобальных")} ObjectTypes. Проверьте Settingssrc/legacy/GAProcessor/ParserInputData/InstanceModelUpdaters/ObjectTypeProcessor.cs | В JscSettings отсутствует или пуст ключ пути к каталогу ObjectTypes (LocalObjectsPath/GlobalObjectsPath). |
| GAProcessor | WARN | Ошибка при обработке HMI экземпляра '{instance.InstanceName}': {e.Message}src/legacy/GAProcessor/ParserInputData/InstanceModelUpdaters/ObjectTypeProcessor.cs | При замене HMI-переменных в StaburHmiModels выброшено ApiException; список Stabur HMI заменяется пустым. |
| GAProcessor | WARN | Ошибка при обработке HMI экземпляра '{instance.InstanceName}': {e.Message}src/legacy/GAProcessor/ParserInputData/InstanceModelUpdaters/ObjectTypeProcessor.cs | При замене HMI-переменных в HmiModels (платформа Alpha) выброшено ApiException; список HMI-моделей заменяется пустым. |
| GAProcessor | WARN | Ошибка при обработке HMI экземпляра '{instance.InstanceName}': {e.Message}src/legacy/GAProcessor/ParserInputData/InstanceModelUpdaters/ObjectTypeProcessor.cs | Вызов метода DevStudio API (GetDevStudioApiMethod) при вычислении IosPath выбросил исключение. |
| GAProcessor | WARN | Ошибка при работе с DevStudio, {devObject.DevStudioName}src/legacy/GAProcessor/ParserInputData/InstanceModelUpdaters/ObjectTypeProcessor.cs | Экземпляр Api (Api.Instance) равен null, поэтому путь IosPath не может быть вычислен через DevStudio. |
GAP scripts
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| GAProcessor | ERROR | Namespace {nameSpace} не найден.src/legacy/GAProcessor/Scripts/Scripts.cs | GetTypeFromAssembly вернул null — запрошенный тип/namespace отсутствует в загруженной сборке; вызов метода прерывается. |
| GAProcessor | ERROR | Во время выполнения метода {method.DeclaringType?.FullName}.{method.Name} из модуля {method.Module.Name} возникла ошибка {e.InnerException.Message}src/legacy/GAProcessor/Scripts/Scripts.cs | В catch при вызове instance-метода через рефлексию выброшено исключение, у которого есть InnerException; логируется внутреннее сообщение. |
| GAProcessor | ERROR | Во время выполнения метода {method.DeclaringType?.FullName}.{method.Name} из модуля {method.Module.Name} возникла ошибка {e.Message}src/legacy/GAProcessor/Scripts/Scripts.cs | В catch при вызове instance-метода через рефлексию выброшено исключение без InnerException; логируется его собственное сообщение. |
| GAProcessor | ERROR | Количество параметров не совпадает для метода {methodName}.src/legacy/GAProcessor/Scripts/Scripts.cs | ConvertParameters вернул null: число переданных аргументов не совпадает с числом параметров метода. |
| GAProcessor | ERROR | Метод {methodName} не найден.src/legacy/GAProcessor/Scripts/Scripts.cs | GetMethodFromType не нашёл публичный статический или instance-метод с таким именем в типе; вызов прерывается. |
| GAProcessor | ERROR | Не удалось загрузить сборку по пути {gapPath}src/legacy/GAProcessor/Scripts/Scripts.cs | AssemblyHelper.LoadOrReloadAssembly вернул null — сборка GAP.dll по указанному пути не загрузилась. |
| GAProcessor | ERROR | Не удалось создать экземпляр класса GAP.Helpers.DictionaryProcessor: {ex.Message}src/legacy/GAProcessor/Scripts/Scripts.cs | В catch при создании экземпляра DictionaryProcessor через рефлексию (Activator.CreateInstance) возникло исключение. |
| GAProcessor | ERROR | Не удалось создать экземпляр класса {type.FullName}: {ex.Message}src/legacy/GAProcessor/Scripts/Scripts.cs | В catch при переборе нестатических классов сборки не удалось создать экземпляр типа через Activator.CreateInstance. |
| GAProcessor | ERROR | Ошибка загрузки DLL: {e.Message}src/legacy/GAProcessor/Scripts/Scripts.cs | В блоке catch при инициализации внешних модулей: не удалось загрузить или перезагрузить сборку GAP.dll либо инициализировать DictionaryProcessor. |
| GAProcessor | ERROR | Ошибка при вызове метода {methodName}: {ex.Message}src/legacy/GAProcessor/Scripts/Scripts.cs | В общем catch CallMethod при обработке аргументов, конвертации параметров, создании экземпляра или вызове метода возникло исключение. |
| GAProcessor | ERROR | Сборка не загружена.src/legacy/GAProcessor/Scripts/Scripts.cs | В InitializeNonStaticClasses поле _assembly == null — сборка ещё не была загружена, инициализация классов невозможна. |
GAProcessor.API.InstancePostUpdateService
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| GAProcessor | ERROR | Произошла ошибка при пост обработке инстансов: {ex.GetFullMessage()}src/legacy/GAProcessor/API/InstancePostUpdateService.cs | В catch метода UpdateAll при одном из шагов пост-обновления инстанса (AdditionalData/ObjectType/Modbus/Attributes/NetDiags/HmiData) возникло исключение. |
GAProcessor.API.InstructionHandlers.HmiDataInstructionHandler
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| GAProcessor | WARN | Для HmiModel неподходящая конструкция, должно быть HmiData.(HmiType какой-то).(OptionName какой-то).Переменнаяsrc/legacy/GAProcessor/API/InstructionHandlers/HmiDataInstructionHandler.cs | Путь инструкции при разбиении по разделителю дал не 3 части — неверный формат обращения к HmiData. |
GAProcessor.API.InstructionHandlers.TemplatesInstructionHandler
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| GAProcessor | WARN | Для Templates неподходящая конструкция, должно быть Templates.(Alias какой-то).Переменнаяsrc/legacy/GAProcessor/API/InstructionHandlers/TemplatesInstructionHandler.cs | Путь инструкции при разбиении по разделителю дал не 2 части — неверный формат обращения к Templates. |
GAProcessor.BaseParser
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| GAProcessor | ERROR | Произошла ошибка при чтении файла {filePath}: {ex.Message}src/legacy/GAProcessor/BaseParser.cs | Catch в ParseJsmFile: чтение строк JSM-файла или их обработка выбросили исключение. |
GAProcessor.CodesysModbus.GlobalDictionary.GlobalDictionary
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| GAProcessor | ERROR | Не найден Updated Instance для экземпляра {instance.Tag}src/legacy/GAProcessor/CodesysModbus/GlobalDictionary/GlobalDictionary.cs | Среди updatedInstances нет экземпляра, у которого InstanceName совпадает с тегом instance.Tag; префикс библиотеки получить нельзя, возвращается false. |
| GAProcessor | ERROR | Не найден префикс библиотеки Codesys (CodesysLibraryPrefix) для экземпляра {instance.Tag} (ObjectType {instance.ObjectTypeName}src/legacy/GAProcessor/CodesysModbus/GlobalDictionary/GlobalDictionary.cs | В AdditionData найденного экземпляра отсутствует ключ CodesysLibraryPrefix; префикс устанавливается в пустую строку. |
GAProcessor.CodesysModbus.Services.InvalidDiagFileWriter
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| GAProcessor | ERROR | InvalidDiag. Не указан путь к выходному файлу {properties.OutputInvalidDiagFilePath}src/legacy/GAProcessor/CodesysModbus/Services/InvalidDiagFileWriter.cs | Входной путь корректен, но не задан путь к выходному файлу InvalidDiag (OutputInvalidDiagFilePath пуст); обработка не выполняется. |
| GAProcessor | ERROR | InvalidDiag. Некорректный путь к файлу {properties.InputInvalidDiagFilePath}src/legacy/GAProcessor/CodesysModbus/Services/InvalidDiagFileWriter.cs | Входной путь InvalidDiag пуст или файл по нему не существует (isInvalidDiagPathExists == false); обработка не выполняется. |
GAProcessor.CodesysModbus.Services.ModbusWriter.CodesysPlcInstanceSelector
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| GAProcessor | WARN | Найдено несколько ПЛК-техобъектов в модели ПЛК, у которых ObjectType соответствует файлу: {plcObjectsPath}. Будет использован первый instance. Количество: {plcTechObjects.Count}. Source instance: {sourcePlcInstance.InstanceName}. ObjectType: {sourcePlcInstance.ObjectTypeName}src/legacy/GAProcessor/CodesysModbus/Services/ModbusWriter/CodesysPlcInstanceSelector.cs | Под условия из файла [PlcObjects] подошло более одного техобъекта ПЛК; для обновления JSM используется первый из них. |
GAProcessor.ExcelHandler.ExcelParser
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| GAProcessor | ERROR | Произошла ошибка при обработке формул листа {currentSheetName}, адрес ячейки {currentCell?.Address} {ex}src/legacy/GAProcessor/ExcelHandler/NpoiExcelParser.cs | Во внешнем catch при создании FormulaEvaluator или обходе листов/строк/ячеек возникло исключение. |
| GAProcessor | ERROR | Произошла ошибка при обработке формул листа {currentSheetName}, адрес ячейки {currentCell?.Address} {e}src/legacy/GAProcessor/ExcelHandler/NpoiExcelParser.cs | В catch при вычислении конкретной формульной ячейки (evaluator.EvaluateInCell) возникло исключение; обработка остальных ячеек продолжается. |
GAProcessor.FromDictionaryConverters.DictionaryConversionManager
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| GAProcessor | WARN | Задан неизвестный тип {option}src/legacy/GAProcessor/FromDictionaryConverters/DictionaryConversionManager.cs | Для переданного FromDictionaryOption нет зарегистрированного конвертера (TryGetValue вернул false). |
| GAProcessor | WARN | Ошибка обработки для {filePath}src/legacy/GAProcessor/FromDictionaryConverters/DictionaryConversionManager.cs | ParseWithPrefix вернул пустые/null данные — из файла не удалось получить исходные данные для конвертации. |
| GAProcessor | WARN | Ошибка обработки для {filePath}-{sheetName}src/legacy/GAProcessor/FromDictionaryConverters/DictionaryConversionManager.cs | ParseSheet вернул пустые/null данные — указанный лист файла не дал исходных данных для конвертации. |
GAProcessor.FromDictionaryConverters.DictionaryToJsonConverter
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| GAProcessor | WARN | Не удалось обработать значение для {key}-{value}src/legacy/GAProcessor/FromDictionaryConverters/DictionaryToJsonConverter.cs | Среди зарегистрированных IValueToJsonHandler ни один не смог обработать пару ключ-значение (Find вернул null). |
GAProcessor.Unimod2.Converters.FromFrameToNodeConverter
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| GAProcessor | ERROR | не найден ModbusDiag у {frame.Device?.Name}src/legacy/GAProcessor/Unimod2/Converters/FromFrameToNodeConverter.cs | У парсера отсутствует тип объекта ModbusDiag (_parser.ModbusDiagObjectType == null), поэтому узлы диагностики Modbus для устройства не строятся; возвращается null. |
GAProcessor.Unimod2.Models.FrameModel
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| GAProcessor | WARN | Не найдено {FunctionStr} {Type}src/legacy/GAProcessor/Unimod2/Models/FrameModel.Methods.cs | Для функции/типа фрейма отсутствует запись о максимальном размере (в _maxFrameSizesDict нет Function или нужного bitCount); проверка корректности фрейма возвращает false. |
logger
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| GAProcessor | WARN | Не удалось сформировать путь для {devStudioObject.InstanceName}, проверьте DevStudioPathsrc/legacy/GAProcessor/Helpers/DevStudioHelper.cs | CanInstanceDevStudioPathBeFormed вернул false — у объекта пустой DevStudioPath или DevStudioName, путь сформировать нельзя. Логгер передаётся параметром, имя NLog-логгера определяется вызывающим. |
ModbusMap
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| GAProcessor | ERROR | Критическая ошибка! в {instance.InstanceName}, {instance.ObjectTypeName} не удалось найти ключ {SignalKeys.DefLabel}src/legacy/GAProcessor/MapCreation/ModbusAddressAssigner.cs | У сигнала отсутствует ключ DefLabel (signal.ContainsKey вернул false) — нет данных для определения состояний/меток сигнала. |
| GAProcessor | WARN | Не заполнено имя канала у {instance.InstanceName} объекта {instance.ObjectTypeName}src/legacy/GAProcessor/MapCreation/ModbusAddressAssigner.cs | При назначении адреса у сигнала пустое имя канала (ParName) — назначение адреса для этого сигнала пропускается. |
SheetRowData (строка из Excel)
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| GAProcessor | ERROR | По несуществующему ключу '{key}' произошла попытка создания action '{action.GetType().ToString()}'src/legacy/GAProcessor/ExcelHandler/SheetRowData.cs | В AddAction проверка ContainsKey(key) провалилась — попытка привязать action к ключу, которого нет в строке. |
| GAProcessor | WARN | [ExtraData] Переменная '{value}' не обновлена для {parentInstanceName}src/legacy/GAProcessor/ExcelHandler/SheetRowData.cs | При обновлении строки из родителя переменную не удалось разрешить (TryGetUpdatedValue вернул false) по данным родительской строки. |
TVFL-обработчик (Action)
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| GAProcessor | ERROR | Ошибка использования Action TVFL: файл '{updatedFilePath}' не содержит лист с именем '{updatedSheetName}'src/legacy/GAProcessor/ExcelHandler/RowDictActionHandlers/TvflActionHandler.cs | В найденном файле workbook.GetSheet вернул null — запрошенный TVFL лист отсутствует в книге. |
| GAProcessor | ERROR | Ошибка использования Action TVFL: файла '{updatedFilePath}' не существуетsrc/legacy/GAProcessor/ExcelHandler/RowDictActionHandlers/TvflActionHandler.cs | File.Exists для разрешённого пути вернул false — указанный в TVFL Excel-файл не найден. |
Библиотека для генерации FBD
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| GAProcessor | ERROR | Значение для {errorEntityName} должно содержать два значения, разделенных запятой. Текущее значение: {rawValue}src/legacy/GAProcessor/Generators/ModuleFBD/Services/LibraryLocalDictionaryServices/TwoValueExtractor.cs | После разбора значение разбито запятой не на 2 части (parts.Length != 2); двухзначную модель построить нельзя, возвращается false. |
| GAProcessor | WARN | Нет библиотечной FBD TemplateUnimod2x для результирующей FBD fbdFileName = {outputs[i]}. Cм. ObjectType = '{model.ObjectTypeName}'src/legacy/GAProcessor/Generators/ModuleFBD/Services/FbdVariableInitializer.cs | Выходных имён FBD (outputs) больше, чем входных шаблонов (inputs); для лишних результирующих файлов нет соответствующего библиотечного шаблона. |
Валидация TagList - Dictionary
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| GAProcessor | ERROR | Для имени '{dictionaryEntry.Name}' найдены расхождения в адресах: Dictionary - {dictionaryEntry.Address}, TagList - {tagListEntry.Address}src/legacy/GAProcessor/Validation/TagListDictionatyComparator/CsvComparator.cs | Запись найдена в обоих файлах, но адреса в Dictionary и TagList не совпадают. |
| GAProcessor | ERROR | Имя '{dictionaryEntry.Name}' из Dictionary не найдено в TagList.src/legacy/GAProcessor/Validation/TagListDictionatyComparator/CsvComparator.cs | Для записи из Dictionary не нашлась соответствующая по имени запись в TagList (FirstOrDefault вернул null). |
| GAProcessor | ERROR | Не найден файл TagList или Dictionarysrc/legacy/GAProcessor/Validation/TagListDictionatyComparator/CsvComparator.cs | В конструкторе путь к TagList или Dictionary пустой/null — сравнение файлов невозможно. |
Генератор POU
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| GAProcessor | ERROR | Количество сформированных POU = 0src/legacy/GAProcessor/StProgramGen.cs | Список pouModels пуст — ни одного POU не сформировано, генерация ST-файлов прерывается. |
| GAProcessor | ERROR | Не найден закрывающий тег </PROGRAM> в файле.src/legacy/GAProcessor/StProgramGen.cs | В строках файла 0_prog.prg не найден закрывающий тег </PROGRAM> (FindIndex == -1); вставить новые ST-строки некуда, обновление прерывается. |
| GAProcessor | ERROR | Не найдены теги <CHILD_PROGRAM> или </CHILD_PROGRAM> в файле.src/legacy/GAProcessor/StProgramGen.cs | В файле 0_prog.prg не найден открывающий или закрывающий тег CHILD_PROGRAM (один из FindIndex == -1); вставка дочерних программ невозможна, обновление прерывается. |
| GAProcessor | ERROR | Ошибка при обновлении файла '{prgFilePath}': {ex.Message}src/legacy/GAProcessor/StProgramGen.cs | В catch-блоке InitStProgForProject при записи обновлённого файла 0_prog.prg (File.WriteAllLines) возникло исключение. |
| GAProcessor | ERROR | Ошибка при обновлении файла '{prgFilePath}': {ex.Message}src/legacy/GAProcessor/StProgramGen.cs | В catch-блоке InitChildStProgForProject при записи обновлённого файла 0_prog.prg (File.WriteAllLines) возникло исключение. |
| GAProcessor | ERROR | Ошибка при сохранении файла '{fileName}': {ex.Message}src/legacy/GAProcessor/StProgramGen.cs | В catch-блоке при создании директории и записи .st файла (File.WriteAllText) возникло исключение. |
| GAProcessor | ERROR | Произошла ошибка подготовки ST программы для {updatedInstance.InstanceName}, {e.Message}src/legacy/GAProcessor/StProgramGen.cs | В catch-блоке при чтении include-файлов шаблона и подстановке плейсхолдеров возникло исключение (например, файл не читается или нет ключа GroupPou). |
| GAProcessor | ERROR | Файл '{prgFilePath}' не найден.src/legacy/GAProcessor/StProgramGen.cs | Проверка File.Exists для файла 0_prog.prg провалилась в InitStProgForProject — файл проекта не найден; обновление прерывается. |
| GAProcessor | ERROR | Файл '{prgFilePath}' не найден.src/legacy/GAProcessor/StProgramGen.cs | Проверка File.Exists для файла 0_prog.prg провалилась в InitChildStProgForProject — файл проекта не найден; обновление прерывается. |
| GAProcessor | WARN | Не удалось найти свойство {propertyName} у экземпляра {updatedInstance.InstanceName} при использовании {match.Value}src/legacy/GAProcessor/StProgramGen.cs | В InstanceData экземпляра нет свойства, указанного в плейсхолдере <getinstancedata PropertyName>; подстановка не выполняется. |
Модуль DevStudio
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| GAProcessor | ERROR | Не найден объект UNET Client модуляsrc/legacy/GAProcessor/Generators/ControlObjectPaster.cs | Парсинг UNET Client модуля вернул null, категории данных записать некуда. |
| GAProcessor | ERROR | Не найден тип {devObject.DevStudioType} объекта {devObject.DevStudioName}src/legacy/GAProcessor/Generators/ControlObjectPaster.cs | По короткому имени DevStudioType не найден тип PLC-объекта в проекте, создать объект нельзя, метод прерывается. |
| GAProcessor | ERROR | Не найден тип в проекте {existObjectType}, возможно необходимо обновить исходники DevStudiosrc/legacy/GAProcessor/Generators/ControlObjectPaster.cs | У существующего объекта base-type не разрешается в TypeInfo (GetTypeInfo вернул null); сравнить типы невозможно, метод прерывается. |
| GAProcessor | ERROR | Не удалось найти контроллер {plcName} в проекте DevStudio, ничего создано не будет!src/legacy/GAProcessor/Generators/ControlObjectPaster.cs | В проекте DevStudio не найден PLC App элемент по короткому имени plcName (PlcAppObject == null), генерация объектов невозможна. |
| GAProcessor | ERROR | Объект {devObject.DevStudioName} существует, его текущий тип {oldtype.GlobalName} отличается от нового {type.GlobalName}.src/legacy/GAProcessor/Generators/ControlObjectPaster.cs | Существующий объект имеет тип, не совпадающий с требуемым; перезапись типа не выполняется, объект пропускается. |
| GAProcessor | ERROR | у объекта {devObject.DevStudioName} атрибуты == nullsrc/legacy/GAProcessor/Generators/ControlObjectPaster.cs | У существующего объекта коллекция Attributes равна null, добавлять новые атрибуты нечем, объект пропускается. |
| GAProcessor | WARN | Атрибут {newAttributeDef["value"]} объекта {devObject.DevStudioName} отсутствует в типе {type.GlobalName}, поэтому не будет добавленsrc/legacy/GAProcessor/Generators/ControlObjectPaster.cs | Тип объекта не содержит атрибута с указанным именем (type.HasAttribute == false), атрибут не добавляется. |
Модуль Unimod2
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| GAProcessor | ERROR | Кодировка '{appconfig.EncodingForDictionary}' не найдена. Используется кодировка по умолчанию UTF-8.src/legacy/GAProcessor/Unimod2/Generators/Unimod2Manager.cs | Кодировка, заданная в настройках (EncodingForDictionary), отсутствует среди доступных кодировок; файл сохраняется в UTF-8 по умолчанию. |
| GAProcessor | ERROR | Не найден файл structs.json по пути {GetStructPath()}, возможно стоит проверить общие настройки программыsrc/legacy/GAProcessor/Unimod2/Generators/Unimod2Manager.cs | Не удалось загрузить типы объектов из structs.json (StructsObjTypes == null) — файл отсутствует по ожидаемому пути; вероятна проблема в общих настройках. |
| GAProcessor | ERROR | Не найдено переменной для UNIMOD_DICTIONARY_PATHsrc/legacy/GAProcessor/Unimod2/Generators/Unimod2Manager.cs | Не удалось получить путь к выходному файлу глобального словаря по плейсхолдеру [UNIMOD_DICTIONARY_PATH] (GetUnimod2Path вернул false); сохранение прерывается. |
| GAProcessor | ERROR | Не найдено переменной для UNIMOD_DICTIONARY_PATHsrc/legacy/GAProcessor/Unimod2/Generators/Unimod2Manager.cs | В режиме сохранения одного файла не удалось получить путь по плейсхолдеру [UNIMOD_DICTIONARY_PATH] (GetUnimod2Path вернул false); сохранение прерывается. |
| GAProcessor | ERROR | Не найдено переменной для UNIMOD_DICTIONARY_PATH2src/legacy/GAProcessor/Unimod2/Generators/Unimod2Manager.cs | Не удалось получить путь к второму выходному файлу словаря по плейсхолдеру [UNIMOD_DICTIONARY_PATH2] (GetUnimod2Path вернул false); сохранение прерывается. |
| GAProcessor | ERROR | У {parName} {array} не является числом, можно попробовать проверить объект {instanceName}src/legacy/GAProcessor/Unimod2/Generators/Unimod2Manager.cs | При формировании узла-массива размер массива (array) не парсится в int (int.TryParse вернул false); используется arraySize=0. |
| GAProcessor | ERROR | На листе template/UnimodFB для алиаса '{alias}' не указан тип данных в колонке '{TreiFbAttrConst}'. OBJTYPENAME='{objectTypeName}'.src/legacy/GAProcessor/Unimod2/Services/Unimod/TemplatesNodeBuildStrategy.cs | У шаблона с найденным alias пустое поле TreiFB (тип данных не задан), запись канала пропускается. |
| GAProcessor | ERROR | На листе template/UnimodFB для алиаса '{alias}' не указан тип данных в колонке 'TreiFB'. OBJTYPENAME='{objectTypeName}'.src/legacy/GAProcessor/Unimod2/Services/Unimod/UnimodAliasesTemplateValidator.cs | Не удалось определить базовый тип шаблона и поле TreiFB пустое (тип данных не задан) для данного alias. |
| GAProcessor | WARN | У StNet MKO {mkoContext} на {sourceName} указано недопустимое значение '{fieldName}'='{rawValue}'. Допустимые значения: {allowedValues}. Значение будет очищено.src/legacy/GAProcessor/Unimod2/Builders/STNetMkoConfigurationBuilder.cs | При нормализации поля StNet MKO (Epi/Priority/Timeout_Multiplier/Ping_Interval_EPI_Multiplier) считанное значение не входит в допустимый набор; оно сбрасывается в пустую строку. |
| GAProcessor | WARN | Не найден файл arrays.json по пути - {path}src/legacy/GAProcessor/Unimod2/Generators/Unimod2Manager.cs | При загрузке модели массивов файл arrays.json не существует по указанному пути (File.Exists вернул false); модель массивов не заполняется. |
| GAProcessor | WARN | Не найден файл types.json {_typesPath}src/legacy/GAProcessor/Unimod2/Generators/Unimod2Manager.cs | После загрузки системных типов обработчик системных типов не создан (_systemTypesHandler == null) — файл types.json не найден или не прочитан по указанному пути. |
| GAProcessor | WARN | Не найдено objectType в structs.json или типа в types.json с именем {node.Library}, объект {node.InstanceName} structs.json находится в "{_structPath}" types.json находится в "{GetTypesPath()}"src/legacy/GAProcessor/Unimod2/Generators/Unimod2Manager.cs | Тип node.Library не найден ни среди struct_defs в structs.json, ни среди системных типов в types.json (и это не простой словарный тип); узел пропускается. |
| GAProcessor | WARN | Не переданы objectTypes, второй файл создаваться не будет.src/legacy/GAProcessor/Unimod2/Generators/Unimod2Manager.cs | Не задана переменная UNIMOD_DICTIONARY (список objectTypes пуст), поэтому разделение словаря на два файла не выполняется — сохраняется только один файл. |
| GAProcessor | WARN | Некорректно считан objectType из structs.json {node.Library}, объект {node.InstanceName}src/legacy/GAProcessor/Unimod2/Generators/Unimod2Manager.cs | Найденный objectType из structs.json не проходит проверку валидности (objectType.IsValid() == false); узел пропускается. |
| GAProcessor | WARN | Нужно проверить {node.Alias} {node.InstanceName} {node.Instance.ObjectTypeName}src/legacy/GAProcessor/Unimod2/Generators/Unimod2Manager.cs | При обновлении узлов у узла не задана библиотека (node.Library == null); узел нельзя сопоставить с типом, он пропускается. |
| GAProcessor | WARN | Произошла ошибка при обработке arrays.json по пути {path} Ошибка - {ex.Message}src/legacy/GAProcessor/Unimod2/Generators/Unimod2Manager.cs | В блоке catch при чтении/десериализации arrays.json произошло исключение (некорректный JSON или ошибка доступа к файлу). |
| GAProcessor | WARN | На листе template/UnimodFB алиас '{duplicateAlias.Alias}' указан {duplicateAlias.Count} раз. Будет использовано первое вхождение. OBJTYPENAME='{objectTypeName}'.src/legacy/GAProcessor/Unimod2/Services/Unimod/ObjectTypeTemplateValidator.cs | В шаблонах объекта обнаружен дублирующийся alias (встречается более одного раза) на листе template/UnimodFB; используется только первое вхождение. |
| GAProcessor | WARN | В unimodFB указан алиас '{aliasFromChannel}', но он отсутствует среди разрешённых алиасов (TechObject.UnimodAliases). File='{file}' ObjectType='{objectType}', TemplateName='{templateName}', Tag='{tag}', UnimodFB='{unimodFB}', ParName='{parName}', Разрешённые алиасы:'{string.Join(",", allowedAliases)}'. Каналы с этим алиасом будут пропущены.src/legacy/GAProcessor/Unimod2/Services/Unimod/UnimodAliasesNodeBuildStrategy.cs | В колонке unimodFB канала указан alias, которого нет в списке разрешённых алиасов TechObject.UnimodAliases; каналы с таким алиасом пропускаются. |
| GAProcessor | WARN | В TechObject.UnimodAliases указаны алиасы, отсутствующие на листе 'template' файла '{instance.FilePath}'. ObjectType='{instance.ObjectTypeName}', TemplateName='{instance.Template}', UnimodAliases='{string.Join(", ", unimodAliases)}' Отсутствующие алиасы:'{string.Join(", ", missingAliases)}'.src/legacy/GAProcessor/Unimod2/Services/Unimod/UnimodAliasesTemplateValidator.cs | Часть алиасов из TechObject.UnimodAliases не найдена среди алиасов на листе template шаблона объекта (рассогласование списка алиасов и шаблона). |
| GAProcessor | WARN | Для alias '{alias}' значение Value='{value}' не соответствует базовому типу '{baseTypeFromTemplate}'. Будет использовано значение по умолчанию.src/legacy/GAProcessor/Unimod2/Services/Unimod/UnimodAliasesTemplateValidator.cs | Значение Value канала не валидно для базового типа alias (IsInvalidValueForBaseType вернул true); подставляется значение по умолчанию для типа. |
| GAProcessor | WARN | Для alias '{kvp.Key}' Type='{channelType}' на листе шаблона не совпадает с TreiFB='{baseTypeFromTemplate}' на листе template/UnimodFB. Будет использован тип '{baseTypeFromTemplate}'.src/legacy/GAProcessor/Unimod2/Services/Unimod/UnimodAliasesTemplateValidator.cs | Тип канала (Type) на листе шаблона не совпадает с базовым типом TreiFB из template/UnimodFB для того же alias; принудительно используется тип из TreiFB. |
Модуль Unimod2. Построение MKO
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| GAProcessor | WARN | В configuration.json для MKO указан неподдерживаемый тип связи '{entryType}'. Запись будет прочитана как EthernetRes.src/legacy/GAProcessor/Unimod2/Builders/MkoConfigurationBuilder.cs | При чтении существующей записи MKO из configuration.json тип связи (поле type) не сопоставлен ни с одним зарегистрированным builder; запись интерпретируется как EthernetRes. |
Модуль бэкапа FBD
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| GAProcessor | ERROR | Ошибка при выполнении бэкапа: {ex.Message}src/legacy/GAProcessor/Generators/ModuleFBD/Services/BackupService.cs | В общем блоке catch перехвачено исключение при копировании содержимого/создании директории бэкапа FBD. |
| GAProcessor | WARN | Не удалось удалить старую директорию бэкапа {oldestBackup}: {ex.Message}src/legacy/GAProcessor/Generators/ModuleFBD/Services/BackupService.cs | При ротации бэкапов (их больше 10) в блоке catch не удалось удалить самую старую директорию бэкапа. |
Модуль генерации EventList
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| GAProcessor | ERROR | EventList. Превышен лимит {eventListSize} строк. Алармов всего: {alarmRowsCount}. Основной файл: {_eventListPath}. Излишек: {overflowPath}⠀{_counterTarget}src/legacy/GAProcessor/Generators/EventListCreator.cs | Количество строк алармов превысило лимит 10000; лишние строки вынесены в отдельный файл EventListOverLimit, об этом сообщается ошибкой. |
| GAProcessor | ERROR | Не найдена файл {localVarPath} или он пустойsrc/legacy/GAProcessor/Generators/EventListCreator.cs | Файл локальных переменных по подставленному пути отсутствует или пустой при попытке прочитать его в GetLocalVars. |
Модуль генерации FBD
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| GAProcessor | ERROR | ChangeVariableTypeSet: Неуданные замены ({failed.Count}) для файла {metadata.PathToFbdJsonFile}, невозможно заменить ObjType (несогласованность входных/выходных каналов): {string.Join("\n", failed.Select(c => $"Переменная {c.Tag}\" не будет иметь ObjType = \"{c.NewObjTypeName}\""))}{metadata.Info}src/legacy/GAProcessor/Generators/ModuleFBD/FbdGenerator.cs | Для части переменных смена ObjType (ChangeVariableType) не прошла — TryReplace вернул false из-за несогласованности входных/выходных каналов. |
| GAProcessor | ERROR | InsertFbdByTagModel: не найден шаблон FBD-программы для тех.объекта '{childModel.InstanceName}' ObjType = '{childModel.ObjectTypeName}'src/legacy/GAProcessor/Generators/ModuleFBD/FbdGenerator.cs | Для дочернего тех.объекта из правила InsertFbdByTagModel рекурсивная генерация FBD-программы не вернула результат (childPrograms == null); замена помечается как неудачная. |
| GAProcessor | ERROR | json файла нет в каталоге с FBD - {_fbdUserOption.PathToLibraryUnimod}src/legacy/GAProcessor/Generators/ModuleFBD/FbdGenerator.cs | Каталог с библиотечными FBD (PathToLibraryUnimod) не существует, генерация FBD прерывается. |
| GAProcessor | ERROR | Замен FromObjType на ToObjType не произойдет для файла {inputJsonPath}{metadata.Info}src/legacy/GAProcessor/Generators/ModuleFBD/FbdGenerator.cs | Замена типов объектов в FBD не выполнена — _objTypeReplacer.TryReplace вернул false (несогласованность или отсутствие типов). |
| GAProcessor | ERROR | Каталог с FBD инвалидныйsrc/legacy/GAProcessor/Generators/ModuleFBD/FbdGenerator.cs | Каталог проекта Unimod (PathToProjectUnimod) не существует, генерация FBD прерывается. |
| GAProcessor | ERROR | Нет глобальных переменных "Libraries_FBD_Frame" и "Result_FBD_Frame". FBD для Frame-ов сгенерированы не будутsrc/legacy/GAProcessor/Generators/ModuleFBD/FbdGenerator.cs | Не удалось подставить значения глобальных переменных [Library_FBD_Frame] и/или [Result_FBD_Frame] из данных экземпляра; генерация FBD для Frame-ов прекращается. |
| GAProcessor | ERROR | Неуспешное удаление нанайденых заменяющих тегов в InsertFbdByTagModelдля тех. объекта '{updatedInstanceModel.InstanceName}': {string.Join(", ", failedDeletions.Select(c => $"'{c.SrcTag}' -> '{c.DstTag}'"))}src/legacy/GAProcessor/Generators/ModuleFBD/FbdGenerator.cs | Для не найденных заменяющих тегов не удалось удалить блок со связью (TryToRemoveBlockWithLink вернул false) — блок с битой ссылкой остаётся в FBD. |
| GAProcessor | ERROR | Произошла коллизия: один и тот же TAG = '{fBDJson.Name}' записывается в файл FBD = '{metadata.ResultFbdFileName}' По данному TAG не будет создан FBD-блок{metadata.Info}src/legacy/GAProcessor/Generators/ModuleFBD/Model/GroupFBD.cs | В коллекции Inputs уже есть запись с таким именем TAG (fBDJson.Name) — коллизия имён; повторный блок не создаётся. |
| GAProcessor | ERROR | Внутряняя ошибка библиотеки TreiLib: {lib} имеет невалидный типsrc/legacy/GAProcessor/Generators/ModuleFBD/Services/BaseObjTypeReplacer.cs | Для входного канала (InOut == 1) значение Type библиотечного элемента не парсится в int; тип канала некорректен. |
| GAProcessor | ERROR | Внутряняя ошибка библиотеки TreiLib: {lib} имеет невалидный типsrc/legacy/GAProcessor/Generators/ModuleFBD/Services/BaseObjTypeReplacer.cs | Для выходного канала (InOut == 2) значение Type библиотечного элемента не парсится в int; тип канала некорректен. |
| GAProcessor | ERROR | Канал {targetChannelKey} не найден. Проверьте локальный словарь {metadata.PathToLibraryLocalDictionary}{metadata.Info}src/legacy/GAProcessor/Generators/ModuleFBD/Services/LinkChecker.cs | Целевой канал (hasTargetChannel == false) отсутствует среди _channelItems; замену типа выполнить нельзя, проверка возвращает false. |
| GAProcessor | ERROR | Несовпадение типов каналов: from: {sourceChannelKey}.Type = {_channelItems[sourceChannelKey]} to: {targetChannelKey}.Type = {_channelItems[targetChannelKey]}{metadata.Info}src/legacy/GAProcessor/Generators/ModuleFBD/Services/LinkChecker.cs | Типы исходного и целевого каналов в Links различаются; замена ObjType приведёт к несовместимости каналов, проверка возвращает false. |
| GAProcessor | ERROR | FromObjType "{replacement.Key}" не существует. Замена ObjType "{replacement.Key}" на "{replacement.Value}" не произойдет. См. библиотечный локальный словарь (поле FromObjType): {metadata.PathToLibraryLocalDictionary}{metadata.Info}src/legacy/GAProcessor/Generators/ModuleFBD/Services/ObjTypeReplacementValidator.cs | Исходный тип объекта (ключ замены) отсутствует в наборе известных типов _objTypeSet; замена удаляется из словаря. |
| GAProcessor | ERROR | ToObjType "{replacement.Value}" не существует. Замена ObjType "{replacement.Key}" на "{replacement.Value}" не произойдет. См. библиотечный локальный словарь (поле ToObjType): {metadata.PathToLibraryLocalDictionary}{metadata.Info}src/legacy/GAProcessor/Generators/ModuleFBD/Services/ObjTypeReplacementValidator.cs | Целевой тип объекта (значение замены) отсутствует в наборе известных типов _objTypeSet; замена удаляется из словаря. |
| GAProcessor | WARN | InsertFbdByTagModel. Тех. объект '{updatedInstanceModel.InstanceName}'. Правила не выполнимы, т.к. заменяющие теги не найдены: {string.Join(", ", unfound.Select(insertFbdByTagModel => $"'{insertFbdByTagModel.DstTag}'"))}src/legacy/GAProcessor/Generators/ModuleFBD/FbdGenerator.cs | Для части правил InsertFbdByTagModel не найдены дочерние модели по DstTag (unfound), вставка невозможна; далее выполняется удаление соответствующих блоков. |
| GAProcessor | WARN | В объекте {updatedInstanceModel.InstanceName} добавлена переменная [TechObject.FbdFileName] = {templateUnimod2x}. Но библиотечной PLC нет в директории: {_fbdUserOption.PathToLibraryUnimod}src/legacy/GAProcessor/Generators/ModuleFBD/FbdGenerator.cs | Файл prog.json библиотечной PLC по пути inputJsonPath не существует; FBD для данного шаблона не генерируется. |
| GAProcessor | WARN | Глобальная переменная {templateUnimod2x} содержит путь к файлу библиотченой FBD. По указанному пути ({inputJsonPath}) не нейден файлsrc/legacy/GAProcessor/Generators/ModuleFBD/FbdGenerator.cs | Файл prog.json библиотечной FBD по пути из переменной templateUnimod2x не найден; обработка Frame-ов прерывается. |
| GAProcessor | WARN | Для библиотечной FBD TemplateUnimod2x = {templateUnimod2x} нет соотвествующей результирующей FBD fbdFileName. Смотри ObjectType = {updatedInstanceModel.ObjectTypeName}src/legacy/GAProcessor/Generators/ModuleFBD/FbdGenerator.cs | Количество входных шаблонов (inputs) превышает количество выходных имён (outputs); для данного входного шаблона нет парного результирующего FBD. |
| GAProcessor | WARN | На момент выполнения обработки названия TechObject.FbdFileName переменная "{match.Value}" не определена. Объект {updatedInstanceModel.InstanceName}, {updatedInstanceModel.ObjectTypeName}. Соответсвующий FBD сгенерирован не будетsrc/legacy/GAProcessor/Generators/ModuleFBD/FbdGenerator.cs | В имени FbdFileName есть подстановочная переменная в скобках, которая не подставилась из InstanceData; результирующий FBD не формируется, шаблон пропускается. |
| GAProcessor | WARN | Не удалось удалить директорию {dir}: {ex.Message}src/legacy/GAProcessor/Generators/ModuleFBD/FbdGenerator.cs | В блоке catch при очистке результирующего каталога не удалось удалить директорию FBD-программы (например, файлы заняты). |
| GAProcessor | WARN | Непредвиденная ситуация. Исходный ObjType {sourceObjType} не найден в библиотченом проекте. Проверьте файл проекта, наличие ObjType в SVN, а также локальный словарь {metadata.PathToLibraryLocalDictionary}{metadata.Info}src/legacy/GAProcessor/Generators/ModuleFBD/Services/LinkChecker.cs | Исходный ObjType отсутствует в маппинге типов библиотечного проекта при проверке совместимости каналов связи. |
| GAProcessor | WARN | Непредвиденная ситуация. Исходный канал {sourceObjType} не найден в библиотченом проекте. Проверьте файл проекта, наличие ObjType в SVN, а также локальный словарь {metadata.PathToLibraryLocalDictionary}{metadata.Info}src/legacy/GAProcessor/Generators/ModuleFBD/Services/LinkChecker.cs | Исходный канал (targetChannelKey) отсутствует среди известных _channelItems библиотечного проекта (hasSourceChannel == false). |
Модуль генерации POU
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| GAProcessor | ERROR | Не найден путь к jsm у {instance.InstanceName} - {instance.ObjectTypeName}src/legacy/GAProcessor/Unimod2/Generators/StCodeGenerators/IODataGenerator.cs | У include-модели не задан путь к jsm (FullPath пустой); данный include-элемент пропускается. |
| GAProcessor | ERROR | Не найдено FB Unimod в OBJTYPE {instance.ObjectTypeName}, TAG {instance.InstanceName}src/legacy/GAProcessor/Unimod2/Generators/StCodeGenerators/IODataGenerator.cs | У найденного objectTypeNode отсутствуют шаблоны (Templates == null или пустой); FB Unimod не определён. |
| GAProcessor | ERROR | Не найдено instance {instance.InstanceName} - {instance.ObjectTypeName}src/legacy/GAProcessor/Unimod2/Generators/StCodeGenerators/IODataGenerator.cs | Среди objectTypeNodes не найден узел с InstanceName текущего экземпляра (objectTypeNode == null); данные не собираются. |
| GAProcessor | ERROR | Не найдено template у {instance.InstanceName} - {instance.ObjectTypeName}src/legacy/GAProcessor/Unimod2/Generators/StCodeGenerators/IODataGenerator.cs | Очередной шаблон в коллекции Templates равен null (template == null); сбор данных прерывается. |
| GAProcessor | ERROR | Не найдено статусного фрейма у {device.Name}src/legacy/GAProcessor/Unimod2/Generators/StCodeGenerators/IODataGenerator.cs | У устройства отсутствует фрейм с именем 'status' (frame == null); данные устройства не собираются, возвращается пустой набор. |
| GAProcessor | ERROR | Для MKO {mko.DataVarName} не удалось сгенерировать JSM/ST. Ошибка неизвестна, обратитесь к разработчикамsrc/legacy/GAProcessor/Unimod2/Generators/StCodeGenerators/MkoStGenerator.cs | Не создано ни одного ST-фрагмента, при этом ни одна из известных причин пропуска не накопилась (список reasons пуст) — неизвестная ошибка генерации. |
| GAProcessor | ERROR | {message.Text}src/legacy/GAProcessor/Unimod2/Validation/MkoValidationLogger.cs | Диспетчер MKO-валидации: severity сообщения равен Error, выводится текст накопленного сообщения валидации MKO. Логгер передаётся вызывающим (MkoStGenerator). |
| GAProcessor | WARN | Ничего не будет сохранено для входовsrc/legacy/GAProcessor/CodesysModbus/AssignmentStCodeBuilder.cs | Путь к файлу входов (inputPath) пуст — у первого входа отсутствует OutputFile, поэтому данные входов не записываются. |
| GAProcessor | WARN | Ничего не будет сохранено для выходовsrc/legacy/GAProcessor/CodesysModbus/AssignmentStCodeBuilder.cs | Путь к файлу выходов (outputPath) пуст — у первого выхода отсутствует OutputFile, поэтому данные выходов не записываются. |
| GAProcessor | WARN | Не удалось найти objectTypeName с tag={tag} causeEffectTag={causeEffect?.CauseEffectTag}src/legacy/GAProcessor/Unimod2/Generators/StCodeGenerators/CauseEffectOutputs/ConditionsOutputHandler.cs | У объекта причинно-следственной связи не определён ObjectTypeName (пустой); формирование условий для данного causeEffect пропускается. |
| GAProcessor | WARN | Не удалось проинициализировать conditionStr для {tag}-{objectTypeName}src/legacy/GAProcessor/Unimod2/Generators/StCodeGenerators/CauseEffectOutputs/ConditionsOutputHandler.cs | Не удалось подставить переменные в путь Condition.jsm (TryGetUpdatedValue вернул false); генерация условия для объекта пропускается. |
| GAProcessor | WARN | Не удалось проинициализировать forceCondition для {tag}-{objectTypeName}src/legacy/GAProcessor/Unimod2/Generators/StCodeGenerators/CauseEffectOutputs/ConditionsOutputHandler.cs | Не удалось подставить переменные в путь ForceCondition.jsm (TryGetUpdatedValue вернул false); генерация force-условия для объекта пропускается. |
| GAProcessor | WARN | Не удалось проинициализировать startCondtion для {tag}-{instanceNodeModel.ObjectTypeName}src/legacy/GAProcessor/Unimod2/Generators/StCodeGenerators/CauseEffectOutputs/ConditionsOutputHandler.cs | Не удалось подставить переменные в путь StartCondition.jsm (TryGetUpdatedValue вернул false); генерация стартового условия для объекта пропускается. |
| GAProcessor | WARN | Не удалось найти destination.jsm для объекта {tag}src/legacy/GAProcessor/Unimod2/Generators/StCodeGenerators/CauseEffectOutputs/DestinationsOutputHandler.cs | Не удалось подставить переменные в путь Destination.jsm (TryGetUpdatedValue вернул false); обработка destination для данного causeEffect пропускается. |
| GAProcessor | WARN | Не удалось обработать путь к StartDestination.jsm для объекта {tag}src/legacy/GAProcessor/Unimod2/Generators/StCodeGenerators/CauseEffectOutputs/DestinationsOutputHandler.cs | Не удалось подставить переменные в путь StartDestination.jsm (TryGetUpdatedValue вернул false); генерация стартового destination пропускается. |
| GAProcessor | WARN | Не удалось обработать {path} или он пустой для {string.Join(";", infoToShow)}src/legacy/GAProcessor/Unimod2/Generators/StCodeGenerators/CauseEffectOutputs/OutputHandler.cs | Считанные из jsm данные пусты (string.IsNullOrEmpty(data)) — файл не найден или не дал содержимого; фрагмент не добавляется в результат. |
| GAProcessor | WARN | Не заполнен causeEffectTagsrc/legacy/GAProcessor/Unimod2/Generators/StCodeGenerators/CauseEffectsDiagGenerator.cs | У модели причинно-следственной связи пустой CauseEffectTag; запись считается невалидной и пропускается. |
| GAProcessor | WARN | Не заполнен conditionTagsrc/legacy/GAProcessor/Unimod2/Generators/StCodeGenerators/CauseEffectsDiagGenerator.cs | У модели причинно-следственной связи пустой ConditionTag; запись считается невалидной и пропускается. |
| GAProcessor | WARN | Не найден объект с causeEffectTag={model.CauseEffectTag}src/legacy/GAProcessor/Unimod2/Generators/StCodeGenerators/CauseEffectsDiagGenerator.cs | Среди экземпляров нет объекта с InstanceName, равным CauseEffectTag; запись невалидна и пропускается. |
| GAProcessor | WARN | Не найден объект с conditionTag={model.ConditionTag}src/legacy/GAProcessor/Unimod2/Generators/StCodeGenerators/CauseEffectsDiagGenerator.cs | Среди экземпляров нет объекта с InstanceName, равным ConditionTag; запись невалидна и пропускается. |
| GAProcessor | WARN | LoopType не равен LPSM у {lpsm.ModbusName}src/legacy/GAProcessor/Unimod2/Generators/StCodeGenerators/ExecutiveMechanismsGenerator.cs | Значение LoopType устройства не равно 'LPSM'; генерация исполнительных механизмов для этого элемента не выполняется. |
| GAProcessor | WARN | Не найдено DevsAssignType у device.Name={device.Name}src/legacy/GAProcessor/Unimod2/Generators/StCodeGenerators/ExecutiveMechanismsGenerator.cs | В PouData устройства не задан DevsAssignType (пустое значение); имя выходного файла POU определить нельзя, генерация прерывается (return). |
| GAProcessor | WARN | Не найдено template у {instance.InstanceName}src/legacy/GAProcessor/Unimod2/Generators/StCodeGenerators/ExecutiveMechanismsGenerator.cs | У экземпляра отсутствует первый шаблон (Templates.FirstOrDefault() == null); элемент пропускается. |
| GAProcessor | WARN | Не найдено устройства с ModbusName={lpsm.ModbusName}src/legacy/GAProcessor/Unimod2/Generators/StCodeGenerators/ExecutiveMechanismsGenerator.cs | Среди устройств не найдено устройство с ModbusName, равным указанному в LPSM (device == null); элемент LPSM пропускается. |
| GAProcessor | WARN | Не найдено файла {path}src/legacy/GAProcessor/Unimod2/Generators/StCodeGenerators/ExecutiveMechanismsGenerator.cs | Файл по сформированному пути include-модели не существует (File.Exists вернул false); генерация прерывается (return). |
| GAProcessor | WARN | Не удалось обработать путь path для {instance.InstanceName}src/legacy/GAProcessor/Unimod2/Generators/StCodeGenerators/ExecutiveMechanismsGenerator.cs | После подстановки переменных путь к include-модели пуст (string.IsNullOrEmpty(path)); генерация прерывается (return). |
| GAProcessor | WARN | Не указан LoopTypesrc/legacy/GAProcessor/Unimod2/Generators/StCodeGenerators/ExecutiveMechanismsGenerator.cs | В PouData устройства не задано значение LoopType (пустое); элемент LPSM пропускается. |
| GAProcessor | WARN | Проблема при обработке {path} для {device.Name}src/legacy/GAProcessor/Unimod2/Generators/StCodeGenerators/ExecutiveMechanismsGenerator.cs | Считанные из jsm данные пусты (string.IsNullOrEmpty(data)); генерация прерывается (return). |
| GAProcessor | WARN | У устройства {device.Name} нет instancesrc/legacy/GAProcessor/Unimod2/Generators/StCodeGenerators/ExecutiveMechanismsGenerator.cs | У устройства не задан связанный экземпляр (device.Instance == null); генерация прерывается (return). |
| GAProcessor | WARN | Не найден файл jsm {pathToJsm} у {instance.InstanceName} - {instance.ObjectTypeName}src/legacy/GAProcessor/Unimod2/Generators/StCodeGenerators/IODataGenerator.cs | После подстановки переменных файл jsm не существует по пути pathToJsm (File.Exists вернул false); элемент пропускается. |
| GAProcessor | WARN | Ошибка при обработке {instance.InstanceName} - {instance.ObjectTypeName}src/legacy/GAProcessor/Unimod2/Generators/StCodeGenerators/IODataGenerator.cs | Сгенерированные jsm-данные для очередного элемента пусты (string.IsNullOrEmpty(data)); элемент пропускается. |
| GAProcessor | WARN | Ошибка при обработке {pathToJsm} у {instance.InstanceName} - {instance.ObjectTypeName}src/legacy/GAProcessor/Unimod2/Generators/StCodeGenerators/IODataGenerator.cs | Считанные из jsm данные пусты после парсинга (string.IsNullOrEmpty(jsmData)); элемент пропускается. |
| GAProcessor | WARN | Ошибка с pouName при обработке {instance.InstanceName} - {instance.ObjectTypeName}src/legacy/GAProcessor/Unimod2/Generators/StCodeGenerators/IODataGenerator.cs | Имя POU для очередного элемента пустое (string.IsNullOrEmpty(pouName)); файл не сохраняется, элемент пропускается. |
| GAProcessor | WARN | Пустой includeModel у {template.Alias}, объекта {instance.InstanceName}src/legacy/GAProcessor/Unimod2/Generators/StCodeGenerators/IODataGenerator.cs | У шаблона отсутствует IncludeModel (null или пустой список); сбор данных по этому экземпляру прерывается. |
| GAProcessor | WARN | Для MKO {mko.DataVarName} не создано ни одного ST-фрагмента: {string.Join(", ", reasons)}.src/legacy/GAProcessor/Unimod2/Generators/StCodeGenerators/MkoStGenerator.cs | Для MKO не сгенерировано ни одного ST-фрагмента; перечисляются накопленные причины пропуска элементов (ошибки arrNum, отсутствие include-моделей, пустой путь/PouName, отсутствующий или пустой jsm). |
| GAProcessor | WARN | Не удалось удалить MKO ST raw-файл {filePath}: {ex.Message}src/legacy/GAProcessor/Unimod2/Generators/StCodeGenerators/MkoStGenerator.cs | В блоке catch при очистке выходной директории не удалось удалить raw-файл MKO ST (File.Delete бросил исключение, напр. файл занят/нет прав). |
| GAProcessor | WARN | Не удалось удалить директорию MKO ST {dir}: {ex.Message}src/legacy/GAProcessor/Unimod2/Generators/StCodeGenerators/MkoStGenerator.cs | В блоке catch при очистке сгенерированных директорий не удалось удалить директорию MKO ST (Directory.Delete бросил исключение). |
| GAProcessor | WARN | У MKO {mko.DataVarName} не заполнены {IgmJsmPathPrefixConst}*/{PouNamePrefixConst}*src/legacy/GAProcessor/Unimod2/Generators/StCodeGenerators/MkoStGenerator.cs | Для строки MKO не найдено ни одной include-модели (нет заполненных путей IGM.POU/PouName); строка пропускается. |
| GAProcessor | WARN | {message.Text}src/legacy/GAProcessor/Unimod2/Validation/MkoValidationLogger.cs | Диспетчер MKO-валидации: severity сообщения равен Warning, выводится текст предупреждения валидации MKO. Логгер передаётся вызывающим (MkoStGenerator). |
Модуль генерации StringList
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| GAProcessor | ERROR | Ошибка валидации stringList при записи тех.объекта {updatedInstanceModel.InstanceName} (ObjType = {updatedInstanceModel.ObjectTypeName}) в StringList. Он не попадет в итоговый StringListsrc/legacy/GAProcessor/Generators/WeintekStringList/InstanceRowMapper.cs | Проверка CheckStringList для тех.объекта не пройдена (невалидный или отсутствующий StringList), объект пропускается. |
| GAProcessor | ERROR | Некорректный формат в файле подмен {path}. Должно быть 3 колонкиsrc/legacy/GAProcessor/Generators/WeintekStringList/ReplacementReader.cs | В заголовке файла подмен число колонок не равно 3 при чтении первой строки. |
| GAProcessor | ERROR | Некорректный формат в файле подмен {path}. Должно быть 3 колонки: "{Filter} {From} {To}"src/legacy/GAProcessor/Generators/WeintekStringList/ReplacementReader.cs | Заголовок файла подмен не соответствует ожидаемым именам колонок Filter/From/To. |
| GAProcessor | ERROR | Некорректный формат в файле подмен {path}. Должны быть заполнены поля From и Tosrc/legacy/GAProcessor/Generators/WeintekStringList/ReplacementReader.cs | При обработке строки данных встречено значение To (колонка 2), но поле From не было заполнено; запись подмены невозможна, чтение прерывается. |
| GAProcessor | ERROR | Некорректный формат в файле подмен {path}. Должны быть заполнены поля From и Tosrc/legacy/GAProcessor/Generators/WeintekStringList/ReplacementReader.cs | После обработки строки поле From осталось заполненным без парного To; строка подмены неполная. |
| GAProcessor | ERROR | Ошибка в чтении файла {path}src/legacy/GAProcessor/Generators/WeintekStringList/ReplacementReader.cs | При парсинге заголовка файла подмен возникло исключение (например, ReadFields бросил ошибку или пустой файл); чтение прерывается с возвратом false. |
| GAProcessor | ERROR | Ошибка в чтении файла {path}src/legacy/GAProcessor/Generators/WeintekStringList/ReplacementReader.cs | При чтении очередной строки данных файла подмен возникло исключение; чтение прерывается с возвратом false. |
| GAProcessor | ERROR | тех объект {model?.InstanceName} (ObjType = {model?.ObjectTypeName}) имеет невалидный StringList. Данные с тех объекта не будут включены в итоговый StringListsrc/legacy/GAProcessor/Generators/WeintekStringList/StringListValidator.cs | Модель, её StringList, первый элемент или его данные равны null/пусты; объект признаётся невалидным и исключается из итогового StringList. |
| GAProcessor | ERROR | StringList не прошел проверку. Chapter и/или Row сгенерировались не последовательно. См файлы: StringBase(глоабльный): {templatePath} StringBase(локальный): {weintekStrListChaptersFilePath} WeintekTypes: {weintekTypesPath}src/legacy/GAProcessor/Generators/WeintekStringList/WeintekStringListCreator.cs | Проверка последовательности номеров Chapter/Row в итоговом StringList выявила нарушение порядка (IsStringListValid), что указывает на некорректные исходные StringBase/WeintekTypes. |
| GAProcessor | ERROR | WeintekStringListCreator: Не нашли файл шаблона {templatePath}src/legacy/GAProcessor/Generators/WeintekStringList/WeintekStringListCreator.cs | Глобальная переменная WEINTEK_STRINGLIST_CONST_PATH не задана или файл шаблона по этому пути не существует; генерация StringList прерывается. |
| GAProcessor | WARN | В строке "| {string.Join(" | ", localRow)} |" происходит обращение к строкам из StringBase для поиска {data[ChapterName]}, но этой строки там нет. Необходимо дописать его в StringBase или закомментировать(удалить) данное поле в StringListsrc/legacy/GAProcessor/Generators/WeintekStringList/InstanceRowMapper.cs | В StringBase не найдена строка раздела с описанием, равным data[ChapterName], на которую ссылается обрабатываемая строка; ссылка не разрешается. |
| GAProcessor | WARN | chapterName не найден для типа {weintekTypeItem.ObjTypeName}src/legacy/GAProcessor/Generators/WeintekStringList/WeintekStringListCreator.cs | У элемента WeintekTypes имя раздела chapterName равно null либо подстановка переменных в нём не удалась; в строку записывается несформированное имя раздела. |
Модуль генерации TagList
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| GAProcessor | ERROR | (логируется исключение)src/legacy/GAProcessor/Generators/TagListCreator.cs | В блоке catch при обработке WeintekTypes перехвачено исключение (например, отсутствие ожидаемого ключа при чтении sheetData); логируется сам объект исключения. |
| GAProcessor | ERROR | Не найден modbus адрес для {instance.InstanceName} - {instance.ObjectTypeName} - {parName}src/legacy/GAProcessor/Generators/TagListCreator.cs | В MapModels найденного modbus-маппинга нет узла с именем parName; адрес для канала отсутствует, канал пропускается. |
| GAProcessor | ERROR | Не найдено экземпляра объекта {instance.InstanceName} - {instance.ObjectTypeName}src/legacy/GAProcessor/Generators/TagListCreator.cs | В ModbusMap нет записи с тегом, равным имени экземпляра; modbus-адреса для каналов не найти, канал пропускается. |
| GAProcessor | ERROR | Отсутствует переменная {WeintekTypes}src/legacy/GAProcessor/Generators/TagListCreator.cs | Глобальная переменная [WEINTEK_TYPES] не подставилась (TryGetUpdatedValue вернул false), путь к WeintekTypes неизвестен, метод прерывается. |
| GAProcessor | ERROR | Отсутствует переменная {constName}src/legacy/GAProcessor/Generators/TagListCreator.cs | Константа-переменная не подставилась (TryGetUpdatedValue вернул false), путь к jsm-файлу неизвестен, возвращается null. |
| GAProcessor | ERROR | Ошибка в колонке mapping. Значение ячейки: "{mapping}" Файл: {path}src/legacy/GAProcessor/Generators/TagListCreator.cs | Калькулятор адресов не смог определить тип памяти по значению колонки mapping (вернул null), строка типового канала не формируется. |
| GAProcessor | ERROR | Произошла ошибка в PrepareData, вероятен пробел в строкеsrc/legacy/GAProcessor/Generators/TagListCreator.cs | Данные из jsm-файла (WeintekPath) не получены — PrepareDataFromJsmFile вернул null, итоговая строка не формируется. |
| GAProcessor | ERROR | Произошла ошибка в WriteTagListToFile, вероятен пробел в строкеsrc/legacy/GAProcessor/Generators/TagListCreator.cs | PrepareData вернул null (нет константных данных), запись TagList в файл невозможна, метод прерывается. |
| GAProcessor | ERROR | У {instance.InstanceName} отсутствует {UpdatedInstanceModel.ModbusTemplateName}src/legacy/GAProcessor/Generators/TagListCreator.cs | У экземпляра объекта не задан ModbusTemplate, теги для него сформировать нельзя, возвращается null. |
| GAProcessor | WARN | TagList для Weintek не сгенерирован: список тегов {(tagList.Count == 0 ? "пуст" : "не содержит PlcName в первом теге")}. Дополнительные данные и локальные переменные TagList также будут пропущены.src/legacy/GAProcessor/Generators/TagListCreator.cs | У первого тега списка отсутствует PlcName (или список тегов пуст), поэтому путь сохранения не определяется и файл не создаётся. |
| GAProcessor | WARN | Не найден ключ modbusTemplate. {sb.ToString()}src/legacy/GAProcessor/Generators/TagListCreator.cs | В строке листа WeintekTypes отсутствует поле modbusTemplate; строка пропускается, в сообщение выводятся все её пары ключ-значение. |
| GAProcessor | WARN | Не найден файл {localVarPath} или он пустойsrc/legacy/GAProcessor/Generators/TagListCreator.cs | Файл локальных переменных по указанному пути отсутствует или содержит пустые данные; дописывание локальных данных в TagList не выполняется. |
| GAProcessor | WARN | Не указан descrDataSrcRus у {instance.InstanceName} - {instance.ObjectTypeName}src/legacy/GAProcessor/Generators/TagListCreator.cs | У строки канала отсутствует описание descrDataSrcRus; канал пропускается. |
| GAProcessor | WARN | Не указан parName у {instance.InstanceName} - {instance.ObjectTypeName}src/legacy/GAProcessor/Generators/TagListCreator.cs | У строки канала отсутствует parName; канал пропускается. |
| GAProcessor | WARN | Не указан тип маппирования у {instance.InstanceName} - {instance.ObjectTypeName}src/legacy/GAProcessor/Generators/TagListCreator.cs | У строки канала экземпляра отсутствует значение mapping; канал пропускается. |
| GAProcessor | WARN | Пропуск дополнения TagList: путь не задан — GenerateTagList не выполнился (см. предыдущее предупреждение).src/legacy/GAProcessor/Generators/TagListCreator.cs | _plcSavedPath пуст, потому что предыдущий шаг GenerateTagList не создал файл; дополнение данных пропускается, чтобы избежать передачи null в SaveFile. |
Модуль генерации Weintek Macros
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| GAProcessor | WARN | У типа {type.TypeName} объекта {instance.InstanceName} в {instance.ObjectTypeName} не найден канал {alarmLevelsModel.ChannelName}src/legacy/GAProcessor/Models/TypeOfSignDataModel.cs | Среди AlarmLevels экземпляра не найдена модель с ChannelName, совпадающим с обрабатываемым каналом уровня сигнализации; TypeOfSign для этого экземпляра пропускается. |
Модуль генерации WeintekTypes
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| GAProcessor | WARN | Не найдено такого типа {group.TypeName} в WeintekTypes ({typesOutputPath})src/legacy/GAProcessor/Generators/WeintekTypesCreator.cs | Тип, рассчитанный по ModbusTemplate, отсутствует в словаре TypesDict менеджера типов, поэтому вес для него не сохраняется. |
Модуль поиска файлов FileSearcher
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| GAProcessor | ERROR | Обнаружены файлы {scopeName} с одинаковым именем. Они будут пропущены. Пожалуйста, исправьте совпадения в следующих файлах: {список файлов}src/legacy/GAProcessor/FileSearcher.cs | При фильтрации файлов найдены группы с одинаковым именем без расширения (дубликаты) — такие файлы пропускаются. |
Модуль чтения библиотечного локального словаря proj.csv
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| GAProcessor | ERROR | header не содержит колонки "Value" в csv: {path}src/legacy/GAProcessor/Generators/ModuleFBD/Services/LibraryLocalDictionaryProcessor.cs | В заголовке csv отсутствует колонка "Value" (valueColumnId == -1). |
| GAProcessor | ERROR | header не содержит колонки "Value" в csv: {path}src/legacy/GAProcessor/Generators/ModuleFBD/Services/LibraryLocalDictionaryProcessor.cs | В заголовке csv отсутствует колонка "Name" (nameColumnId == -1); текст сообщения по ошибке ссылается на "Value". |
| GAProcessor | WARN | Библиотечный локальный словарь proj.csv {path} не существуетsrc/legacy/GAProcessor/Generators/ModuleFBD/Services/LibraryLocalDictionaryProcessor.cs | Файл локального словаря proj.csv по указанному пути не существует (File.Exists == false); возвращается null. |
| GAProcessor | WARN | Файл библиотечного локальный словарь proj.csv не содержит строк: {path}src/legacy/GAProcessor/Generators/ModuleFBD/Services/LibraryLocalDictionaryProcessor.cs | После чтения заголовка поток сразу закончился (EndOfStream) — строк данных нет; возвращается словарь только с заголовком. |
| GAProcessor | WARN | Файл библиотечный локальный словарь proj.csv пустой: {path}src/legacy/GAProcessor/Generators/ModuleFBD/Services/LibraryLocalDictionaryProcessor.cs | Поток файла сразу в конце (EndOfStream) — заголовок прочитать нельзя, файл пуст; возвращается пустой словарь. |
| GAProcessor | WARN | строка "{string.Join(";", splitLine)}" имеет больше колонок, чем header этого csv: {path}src/legacy/GAProcessor/Generators/ModuleFBD/Services/LibraryLocalDictionaryProcessor.cs | В строке данных колонок больше, чем в заголовке (columns.Length < splitLine.Length); структура строки не соответствует заголовку. |
| GAProcessor | WARN | строка "{string.Join(";", splitLine)}" имеет меньше колонок, чем header этого csv: {path}src/legacy/GAProcessor/Generators/ModuleFBD/Services/LibraryLocalDictionaryProcessor.cs | В строке данных колонок меньше, чем в заголовке (columns.Length > splitLine.Length); структура строки не соответствует заголовку. |
Обработка AlphaAlarms
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| GAProcessor | ERROR | При извлечении данных из AlphaAlarms('{alarmLevelName}'), произошла ошибка {e.GetType()} {e.GetFullMessage()}src/legacy/GAProcessor/Models/AlphaAlarmsHandler.cs | В catch-блоке при поиске и десериализации данных AlarmLevel (arr:dsAtt) возникло исключение. |
| GAProcessor | WARN | AlphaAlarmsData пустsrc/legacy/GAProcessor/Models/AlphaAlarmsHandler.cs | AlphaAlarmsData равно null или содержит 0 строк при поиске по Severity; возвращается null. |
| GAProcessor | WARN | Не найден канал по имени {alarmLevel} в AlphaAlarms для {instanceName}, parName={parName}src/legacy/GAProcessor/Models/AlphaAlarmsHandler.cs | В AlphaAlarmsData нет строки с AlarmLevel, совпадающим с уровнем из канала экземпляра; возвращается null. |
| GAProcessor | WARN | Не найдено ключа {arrayKey}, проверьте файл с каналами, который не objectType, там у атрибутов должно быть проставлено {arrayKey}src/legacy/GAProcessor/Models/AlphaAlarmsHandler.cs | У найденной строки AlarmLevel в AlphaAlarms отсутствует ключ-массив arr:<arrayName> с атрибутами; возвращается null. |
| GAProcessor | WARN | Не найдено файла по пути {_alphaAlarmPath}, проверьте глобальную переменную {AlphaAlarmsVariable}src/legacy/GAProcessor/Models/AlphaAlarmsHandler.cs | Проверка File.Exists для пути файла AlphaAlarms (из глобальной переменной [ALPHA_ALARMS_PATH]) провалилась — файл не найден; возвращается null. |
| GAProcessor | WARN | Не удалось десериализовать данные при обработке AlphaAlarmssrc/legacy/GAProcessor/Models/AlphaAlarmsHandler.cs | Десериализация JSON атрибутов канала вернула null (GetAttributesFromJson не смог распарсить строку). |
| GAProcessor | WARN | Не удалось найти AlarmLevel = '{alarmLevelName}'src/legacy/GAProcessor/Models/AlphaAlarmsHandler.cs | В AlphaAlarmsData нет строки с указанным именем AlarmLevel; возвращается false. |
| GAProcessor | WARN | Не удалось найти AlarmLevel = '{alarmLevelName}'src/legacy/GAProcessor/Models/AlphaAlarmsHandler.cs | Найденная строка AlarmLevel не содержит ключ arr:dsAtt с атрибутами; возвращается false. |
| GAProcessor | WARN | Не удалось считать файл alphaAlarmssrc/legacy/GAProcessor/Models/AlphaAlarmsHandler.cs | AlphaAlarmsData равно null — файл AlphaAlarms не был считан при инициализации; проверка данных возвращает false. |
| GAProcessor | WARN | Проверьте AlphaAlarms, ключ {arrayKey} не найденsrc/legacy/GAProcessor/Models/AlphaAlarmsHandler.cs | Хотя бы одна строка AlphaAlarmsData не содержит ожидаемый ключ-массив arr:<arrayName>; данные считаются некорректными. |
Обработка DataCategory
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| GAProcessor | ERROR | В объекте {node.Name} задано некорректноное значение DataCategory: {key}src/legacy/GAProcessor/Models/DataCategoryHandler.cs | Для значения DataCategory из канала узла не удалось найти соответствующую DataCategoryInfo (TryGetDataCategoryInfo вернул false); возвращается пустая DataCategoryInfo. |
| GAProcessor | ERROR | В файле AlphaDataCategory отсутствует лист с именем {DefaultAlphaDataCategorySheetName}.src/legacy/GAProcessor/Models/DataCategoryHandler.cs | После неудачного чтения основного листа повторный парсинг резервного листа Default тоже вернул null — лист Default в файле отсутствует. |
| GAProcessor | ERROR | Параметр AlphaDataCategory имеет некорректное значение {subsystemCategoriesSheetName} на листе PlcOption в файле модели {_parser.PlcOptionsModel.PlcName}src/legacy/GAProcessor/Models/DataCategoryHandler.cs | Парсинг листа с именем subsystemCategoriesSheetName вернул null — лист с таким именем не найден, делается попытка прочитать лист Default. |
| GAProcessor | ERROR | При извлечении данных из DataCategories('{dataCategoryKey}'), произошла ошибка {e.GetType()} {e.GetFullMessage()}src/legacy/GAProcessor/Models/DataCategoryHandler.cs | В catch-блоке при разборе/десериализации JSON категории (arr:dcProp) возникло исключение. |
| GAProcessor | ERROR | Файл {dataCategoriesPath} не существуетsrc/legacy/GAProcessor/Models/DataCategoryHandler.cs | Проверка File.Exists для пути к файлу DataCategories провалилась — файл по указанному пути отсутствует, инициализация прерывается. |
| GAProcessor | WARN | В файле AlphaDataCategory нет категории '{dataCategoryKey}'src/legacy/GAProcessor/Models/DataCategoryHandler.cs | В данных DataCategories не найдена строка с ключом dataCategory равным запрошенному, либо у неё отсутствует поле arr:dcProp; возвращается false. |
| GAProcessor | WARN | В файле модели {_parser.PlcOptionsModel.PlcName} на листе {subsystemCategoriesSheetName} обнаружено несколько категорий с именем {dataCategoryInfo.Name} с различающимися параметрами При генерации будет использована первая категория из спискаsrc/legacy/GAProcessor/Models/DataCategoryHandler.cs | Найден дубликат категории по имени, но уже добавленная категория не равна текущей (различаются параметры); используется первая, остальные пропускаются. |
Обработка unimod, configuration.json
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| GAProcessor | ERROR | Ошибка в {jsonObject}, при десериализации:src/legacy/GAProcessor/Unimod2/Generators/Unimod2ConfigurationCUpdater.cs | В блоке catch при десериализации JToken устройства в модель типа T возникло исключение; возвращается новый пустой экземпляр. |
| GAProcessor | ERROR | Ошибка при десериализации конфигурации: {ex.Message}src/legacy/GAProcessor/Unimod2/Generators/Unimod2ConfigurationCUpdater.cs | В блоке catch при десериализации массива из configuration.json в тип T возникло исключение (некорректная структура/формат JSON). |
| GAProcessor | ERROR | Ошибка при сохранении конфигурации: {ex.Message}src/legacy/GAProcessor/Unimod2/Generators/Unimod2ConfigurationCUpdater.cs | В блоке catch при записи обновлённого массива в configuration.json произошло исключение (ошибка сериализации или записи файла). |
| GAProcessor | WARN | Массив modbus не найден в файле конфигурации. {path}src/legacy/GAProcessor/Unimod2/Generators/Unimod2ConfigurationCUpdater.cs | При чтении данных из configuration.json указанный массив (modbus) отсутствует в JSON; возвращается значение по умолчанию. |
| GAProcessor | WARN | Массив modbus не найден в файле конфигурации. {path}src/legacy/GAProcessor/Unimod2/Generators/Unimod2ConfigurationCUpdater.cs | При сохранении данных в configuration.json указанный массив (modbus) отсутствует в JSON; сохранение не выполняется. |
| GAProcessor | WARN | Не найдено файла по пути {filePath}src/legacy/GAProcessor/Unimod2/Generators/Unimod2ConfigurationCUpdater.cs | Файл configuration.json не существует по сформированному пути (File.Exists вернул false); JArray не извлекается. |
Обработчик InvalidDiag
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| GAProcessor | ERROR | Не удалось извлечь путь ({InvalidDiagParser.ProcessJsmKey}) к JSM из строки: '{line}' Файл:'{inputInvalidDiagPath}'src/legacy/GAProcessor/CodesysModbus/Services/InvalidDiagContentParser.cs | Строка содержит маркер ProcessJsmKey, но парсер не смог извлечь из неё путь к JSM (TryExtract вернул false). |
| GAProcessor | ERROR | Путь к jsm не найден '{jsmPath}' Файл:'{inputInvalidDiagPath}'src/legacy/GAProcessor/CodesysModbus/Services/InvalidDiagProcessor.cs | Проверка File.Exists для извлечённого из строки пути к JSM провалилась — файл JSM не существует; путь пропускается. |
Общий модуль для обновления тех-объектов
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| GAProcessor | ERROR | Не найдена переменная WEINTEK_EventParamssrc/legacy/GAProcessor/ParserInputData/InstanceModelUpdaters/InstanceUpdater.cs | В JscSettings отсутствует ключ WEINTEK_EventParams (путь к параметрам событий Weintek не получен). |
| GAProcessor | WARN | Атрибут {attributeName} не найден в массиве {arrayName} для уровня тревоги {alarmLevel}, объекта {instance.InstanceName}src/legacy/GAProcessor/ParserInputData/InstanceModelUpdaters/InstanceUpdater.cs | Не удалось обновить значение атрибута (TryGetUpdatedValue вернул false): атрибут отсутствует в массиве AlphaAlarms. |
| GAProcessor | WARN | Не удалось найти атрибуты для уровня тревоги {alarmLevel} и массива {arrayName}, объекта {instance.InstanceName}src/legacy/GAProcessor/ParserInputData/InstanceModelUpdaters/InstanceUpdater.cs | AlphaAlarms.GetAttributesForChannel вернул null: нет атрибутов для данного уровня тревоги и массива. |
| GAProcessor | WARN | Ошибка при обработке HMI экземпляра '{instance.InstanceName}': {e.Message}src/legacy/GAProcessor/ParserInputData/InstanceModelUpdaters/InstanceUpdater.cs | Вызов метода DevStudio API (GetDevStudioApiMethod) при определении пути DevStudio выбросил исключение. |
Отладка парсинга техобъектов
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| GAProcessor | WARN | ParserDebug: ошибка вычисления значения ключа {kvp.Key}src/legacy/GAProcessor/Diagnostics/SheetRowDataInspector.cs | В catch при вычислении значения ключа (ResolveWithInstructions) в GetComputedProperties возникло исключение; используется сырое значение. |
| GAProcessor | WARN | ParserDebug: ошибка вычисления значения ключа {kvp.Key}src/legacy/GAProcessor/Diagnostics/SheetRowDataInspector.cs | В catch при доисполнении inline-скрипта значения ключа (ResolveWithInstructions) в GetComputedComparison возникло исключение; используется сырое значение. |
Парсинг PLC, ObjType и тех. объектов
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| GAProcessor | FATAL | Найдена кириллица ({errorCount} шт.): {fatalErrors}src/legacy/GAProcessor/Validators/ConfigurationValidator.cs | В именах экземпляров (InstanceName) обнаружены русские буквы — кириллица в тегах недопустима. |
| GAProcessor | FATAL | Найдены дубликаты ({errorCount} шт.): {fatalErrors}src/legacy/GAProcessor/Validators/ConfigurationValidator.cs | В списках инстансов найдены повторяющиеся InstanceName (группировка по имени дала группы из более чем одного элемента). |
| GAProcessor | FATAL | Расхождение данных Modbus между ObjType с одинаковым modbusTemplate: {errors}src/legacy/GAProcessor/Validators/ConfigurationValidator.cs | У объектов с одинаковым modbusTemplate обнаружены разные наборы/отпечатки Modbus-каналов (distinctGroups > 1), что означает несовместимую конфигурацию Modbus. |
| GAProcessor | ERROR | (логируется исключение)src/legacy/GAProcessor/ParserHelper.cs | Внешний catch метода ParseTemplates: при разборе шаблонов из файла возникло исключение; в лог передаётся только объект исключения e. |
| GAProcessor | ERROR | В файле {filePath} отсутствует часть листов шаблонов, указанных в переменной {templateVar} Отсутствующие шаблоны: {missingComponentsString} Объекты не будут созданы.src/legacy/GAProcessor/ParserHelper.cs | Число найденных компонентов шаблона меньше указанных в templateVar и частичное отсутствие не допускается; объекты не создаются. |
| GAProcessor | ERROR | В файле модели {PlcOptionsModel.PlcName} на листе PlcOptions отсутствует информация о контроллереsrc/legacy/GAProcessor/ParserHelper.cs | Список PlcOptions пуст (FirstOrDefault вернул null): на листе PlcOptions нет данных о контроллере. |
| GAProcessor | ERROR | Во время инициализации HmiGlobalObjects произошла ошибка: {e.GetFullMessage()}src/legacy/GAProcessor/ParserHelper.cs | Catch при инициализации глобальных HMI-объектов: исключение при чтении omobj-файлов или их добавлении. |
| GAProcessor | ERROR | Не обнаружен Modbus Diag {ModbusDiagObjectType} среди считанных типов объекта(ObjectType)src/legacy/GAProcessor/ParserHelper.cs | Среди файлов ObjectType не найден файл ModbusDiag (modbusFile пуст); возвращается пустой список шаблонов. |
| GAProcessor | ERROR | Отсутствует шаблон {dataSheetName}! путь к файлу == {filePath}src/legacy/GAProcessor/ParserHelper.cs | Парсинг основного листа ObjectType вернул null (data is null): лист с данными в файле отсутствует. |
| GAProcessor | ERROR | Ошибка инициализации парсераsrc/legacy/GAProcessor/ParserHelper.cs | Общий catch метода Init: исключение при инициализации PlcOptions, экземпляров, AlphaAlarms, категорий данных или HMI-объектов. |
| GAProcessor | ERROR | Ошибка при загрузке парсера, {ex.GetFullMessage()}src/legacy/GAProcessor/ParserHelper.cs | Общий catch метода Load: исключение во время инициализации внешних модулей или загрузки данных парсером. |
| GAProcessor | ERROR | Ошибка при разборе PlcOptions: {e.Message}src/legacy/GAProcessor/ParserHelper.cs | Catch при создании PlcOptionsModel: исключение при парсинге значений (startIndex, адреса, JSM-файл и т.п.). |
| GAProcessor | ERROR | Не удалось прочитать объекты по пути {valuePath} для {iObjKey} у {instance.InstanceName}, проверьте {instance.SheetName}src/legacy/GAProcessor/ParserInputData/Loaders/BaseInstanceNodeModelLoader.cs | При создании workbook и парсинге вложенных IObj-экземпляров по пути возникло исключение (catch без фильтра). |
| GAProcessor | ERROR | Ошибка загрузки DsModbusDevices: {ex.GetFullMessage()}src/legacy/GAProcessor/ParserInputData/Loaders/DSModbusDevicesLoader.cs | Общий catch метода Load: исключение при очистке/поиске/парсинге DsModbusDevices. |
| GAProcessor | ERROR | Ошибка при парсинге DsModbusDevices файла: {path}src/legacy/GAProcessor/ParserInputData/Loaders/DSModbusDevicesLoader.cs | Парсинг workbook (ParseInstancesFromWorkbook) выбросил исключение для конкретного файла. |
| GAProcessor | ERROR | В названии листа '{sheetName}' ПЛК {path} указан неподдерживаемый тип связи MKO. Поддерживаемые типы связи: {_supportedMkoConnectionTypes}.src/legacy/GAProcessor/ParserInputData/Loaders/MkoObjectsLoader.cs | Имя листа MKO не содержит распознаваемого типа связи (TryGetConnectionTypeFromSheetName вернул false); лист пропускается. |
| GAProcessor | ERROR | Ошибка загрузки MKO-объектов: {ex.GetFullMessage()}src/legacy/GAProcessor/ParserInputData/Loaders/MkoObjectsLoader.cs | Общий catch метода Load: исключение при очистке/получении пути/парсинге MKO-объектов. |
| GAProcessor | ERROR | Ошибка при парсинге MKO файла: {path}src/legacy/GAProcessor/ParserInputData/Loaders/MkoObjectsLoader.cs | Парсинг workbook MKO (ParseInstancesFromWorkbook/обработка листов) выбросил исключение. |
| GAProcessor | ERROR | Не найден лист PouVars в {filePath}src/legacy/GAProcessor/ParserInputData/Loaders/ModbusDevicesLoader.cs | При создании workbook или парсинге листов VAR. возникло исключение; данные POU не получены. |
| GAProcessor | ERROR | Ошибка загрузки NetSwitch инстансов: {ex.GetFullMessage()}src/legacy/GAProcessor/ParserInputData/Loaders/NetSwitchesLoader.cs | Общий catch метода Load: исключение при очистке/поиске/парсинге NetSwitches. |
| GAProcessor | ERROR | Ошибка при парсинге NetSwitch файла: {path}src/legacy/GAProcessor/ParserInputData/Loaders/NetSwitchesLoader.cs | Парсинг workbook (ParseInstancesFromWorkbook) выбросил исключение для конкретного файла NetSwitches. |
| GAProcessor | ERROR | {dub.Key} дублируется {dub.Count()} раз(а)!!!!: {fullPath}src/legacy/GAProcessor/ParserInputData/Loaders/ObjectTypeFilesLoader.cs | Среди файлов ObjectType обнаружены дубликаты с одинаковым именем (без расширения); логируется список их полных путей. |
| GAProcessor | ERROR | В объекте {instance.InstanceName} на листе {instance.SheetName} задано некорректное значение поля localObject: {isLocal}.src/legacy/GAProcessor/ParserInputData/Loaders/ObjectTypesLoader.cs | Поле localObject имеет значение, отличное от пустого и от 'x' (недопустимое значение флага локального объекта). |
| GAProcessor | ERROR | Для объекта {instance.InstanceName} на листе {instance.SheetName} задан поиск файла с OBJTYPENAME: {instance.ObjectType} в локальной папке ObjType. Файл не найден.src/legacy/GAProcessor/ParserInputData/Loaders/ObjectTypesLoader.cs | Поле localObject == 'x', но в локальных файлах ObjectType отсутствует файл для запрошенного типа объекта. |
| GAProcessor | ERROR | Не найден файл для ObjectType: {instance.ObjectType}, тег {instance.InstanceName} на листе {instance.SheetName}.src/legacy/GAProcessor/ParserInputData/Loaders/ObjectTypesLoader.cs | Поле localObject пустое, но в глобальных файлах ObjectType отсутствует файл для запрошенного типа объекта. |
| GAProcessor | WARN | PlcOptions найден, но не содержит ключевых полей '{Constants.SheetRowDataConstants.PlcNameKey}' или 'opt.startIndex'. Пропускаем инициализацию.src/legacy/GAProcessor/ParserHelper.cs | Первая строка PlcOptions не содержит обязательных ключей PlcName или opt.startIndex; инициализация PlcOptionsModel пропускается. |
| GAProcessor | WARN | В локальных переменных не задана {DataCategoriesPathVariable}src/legacy/GAProcessor/ParserHelper.cs | Переменная пути к категориям данных не разрешилась (GetUpdatedValue вернул саму переменную); чтение категорий прерывается. |
| GAProcessor | WARN | В файле {filePath} отсутствует часть листов шаблонов, указанных в переменной {templateVar} Отсутствующие шаблоны: {missingComponentsString}src/legacy/GAProcessor/ParserHelper.cs | Число найденных компонентов шаблона меньше указанных в templateVar, но допускается частичное отсутствие (allowMissingComponents == true). |
| GAProcessor | WARN | В файле модели {PlcOptionsModel.PlcName} на листе PlcOptions отсутствует параметр AlphaDataCategory, будет применено значение из листа Defaultsrc/legacy/GAProcessor/ParserHelper.cs | В первой строке PlcOptions нет ключа AlphaDataCategory; категории данных инициализируются листом Default. |
| GAProcessor | WARN | Лист {templateSheetName} из {file} пустой. Строка из PLC вызвавшее предупреждение: '{string.Join(' ', data.SelectMany(n => n))}'src/legacy/GAProcessor/ParserHelper.cs | Парсинг листа шаблонов вернул 0 строк (sheetData.Count == 0): лист существует, но пуст. |
| GAProcessor | WARN | На листе {dataSheetName} в файле {filePath} не задана переменная {templateVar} Объекты не будут созданы.src/legacy/GAProcessor/ParserHelper.cs | В первой строке данных отсутствует переменная со списком компонентов шаблона (templateVar); foundItems делается пустым. |
| GAProcessor | WARN | Обнаружено дублирование листа {sheet.SheetName} в файле {workbook.FileName}src/legacy/GAProcessor/ParserHelper.cs | При парсинге HMI (ParseHmi) модель с таким ViewName уже добавлена (TryAdd вернул false): дублирование листа HMI. |
| GAProcessor | WARN | Обнаружено дублирование листа {sheet.SheetName} в файле {workbook.FileName}src/legacy/GAProcessor/ParserHelper.cs | При парсинге Stabur HMI (ParseStaburHmi) модель с таким именем уже добавлена (TryAdd вернул false): дублирование листа HMIS. |
| GAProcessor | WARN | Попытка добавления уже существующей модели {newModel.ModbusName}src/legacy/GAProcessor/ParserHelper.cs | Модель Modbus с такими же сетевыми настройками уже присутствует в списке (IsSameNetSettings), повторное добавление отклонено. |
| GAProcessor | WARN | Шаблон {dataSheetName} пустой! Путь к objType: {filePath}src/legacy/GAProcessor/ParserHelper.cs | Основной лист ObjectType распарсен, но содержит 0 строк (data.Count == 0). |
| GAProcessor | WARN | Не найдено ни одного файла DsModbusDevices для загрузки.src/legacy/GAProcessor/ParserInputData/Loaders/DSModbusDevicesLoader.cs | Поиск excel-файлов в каталоге MbPlcs вернул пустой список или null. |
| GAProcessor | WARN | Файл DsModbusDevices не найден: {path}src/legacy/GAProcessor/ParserInputData/Loaders/DSModbusDevicesLoader.cs | Файл по указанному пути не существует (File.Exists вернул false). |
| GAProcessor | WARN | PLC-файл для загрузки MKO-объектов не найден: {currentPlcPath}src/legacy/GAProcessor/ParserInputData/Loaders/MkoObjectsLoader.cs | Файл PLC по указанному пути не существует (File.Exists вернул false). |
| GAProcessor | WARN | Не задан текущий PLC-файл для загрузки MKO-объектов.src/legacy/GAProcessor/ParserInputData/Loaders/MkoObjectsLoader.cs | Путь к текущему PLC-файлу пуст или равен null (_parserHelper.Plc.FullName не задан). |
| GAProcessor | WARN | Не получилось обработать автофреймы для {framesDataFromScript} в устройстве {device.Name}src/legacy/GAProcessor/ParserInputData/Loaders/ModbusDevicesLoader.cs | Десериализация JSON автофреймов из скрипта (scriptFrames) выбросила исключение. |
| GAProcessor | WARN | Обработка Modbus Devs (Объект "{device.Tag}") Не удалось определить путь к кадрам. проверьте INC у {device.Name}src/legacy/GAProcessor/ParserInputData/Loaders/ModbusDevicesLoader.cs | Путь к файлу кадров устройства пуст или файл не существует (device.Path пустой либо File.Exists == false). |
| GAProcessor | WARN | Не найдено ни одного файла NetSwitches для загрузки.src/legacy/GAProcessor/ParserInputData/Loaders/NetSwitchesLoader.cs | Поиск excel-файлов в каталоге NetSwitches вернул пустой список или null. |
| GAProcessor | WARN | Файл NetSwitches не найден: {path}src/legacy/GAProcessor/ParserInputData/Loaders/NetSwitchesLoader.cs | Файл по указанному пути не существует (File.Exists вернул false). |
| GAProcessor | WARN | Не удалось получить weintekTypes, проверьте {_parserHelper.PlcOptionsModel.WeintekTypesPath}(имя листа в excel WeintekTypes) или [WEINTEK_TYPES]src/legacy/GAProcessor/ParserInputData/Loaders/ObjectTypesLoader.cs | Парсинг листа WeintekTypes вернул null: лист с указанным именем не найден или путь некорректен. |
| GAProcessor | WARN | Не удалось получить путь к WeintekTypessrc/legacy/GAProcessor/ParserInputData/Loaders/ObjectTypesLoader.cs | PlcOptionsModel равен null, путь WeintekTypesPath пуст или переменная [WEINTEK_TYPES] не разрешилась. |
| GAProcessor | WARN | Пустое поле объекта {item.GroupInitializer}src/legacy/GAProcessor/Validators/ConfigurationValidator.cs | У элемента списка InstanceName пустой или null — у объекта отсутствует обязательное имя экземпляра. |
| GAProcessor | WARN | Список {instanceList.GetType()} не сформирован.src/legacy/GAProcessor/Validators/ConfigurationValidator.cs | При проверке пустых инстансов один из переданных списков имеет Count == 0 — список инстансов не заполнен. |
| GAProcessor | WARN | Список {instanceList.GetType()} не сформирован.src/legacy/GAProcessor/Validators/ConfigurationValidator.cs | При проверке дубликатов один из списков инстансов имеет Count == 0 — список не сформирован, проверка пропускается. |
Парсинг данных
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| GAProcessor | WARN | В Parser пришел workbook == nullsrc/legacy/GAProcessor/BaseParser.cs | В метод ParseWithPrefix передан null вместо книги Excel; возвращается пустой SheetModelData. |
| GAProcessor | WARN | В Parser пришел workbook == nullsrc/legacy/GAProcessor/BaseParser.cs | В метод ParseWithPrefixGrouped передан null вместо книги Excel; возвращается пустой результат. |
| GAProcessor | WARN | Не найден лист с именем {sheetName} по пути {path}src/legacy/GAProcessor/BaseParser.cs | ParseSheet вернул null: лист с указанным именем в книге отсутствует. |
| GAProcessor | WARN | Произошла проблема при создании workbook с {path}src/legacy/GAProcessor/BaseParser.cs | CreateWorkbook вернул null: не удалось открыть/создать книгу Excel по указанному пути. |
Парсинг строк PLC-подобных файлов
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| GAProcessor | ERROR | Не удалось прочитать объекты по пути {valuePath} для {iObjKey} у {instance.InstanceName}, проверьте {instance.SheetName}src/legacy/GAProcessor/ParserInputData/InstanceParser/BaseInstanceParser.cs | При разборе вложенных IObj-экземпляров по пути из ячейки возникло исключение (catch без фильтра). |
Парсинг техобъектов
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| GAProcessor | WARN | При работе с iobj не удалось обновить {value}, InstanceName={InstanceName}, Имя листа = {SheetName}, родительский объект - {parentInstanceName}src/legacy/GAProcessor/Models/InstanceNodeModel.cs | Для строкового свойства-переменной не удалось получить обновлённое значение (TryGetUpdatedValue вернул false) из данных родительского объекта; свойство остаётся без обновления. |
| GAProcessor | WARN | При работе с iobj не удалось обновить {value}, InstanceName={InstanceName}, Имя листа = {SheetName}, родительский объект - {parentInstanceName}src/legacy/GAProcessor/Models/InstanceNodeModel.cs | При обновлении значений словаря Data переменная не была разрешена (TryGetUpdatedValue вернул false) по данным родительского объекта; запись словаря остаётся без обновления. |
Сохранение конфигурационного файла Unimod2
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| GAProcessor | WARN | Устройства не будут сохранены, видимо при их обработке произошла ошибкаsrc/legacy/GAProcessor/Unimod2/Generators/Unimod2ConfigurationSavor.cs | Список устройств для сохранения равен null (devicesToSave is null) — вероятно, обработка устройств завершилась ошибкой; сохранение пропускается. |
Формирование modbus устройств
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| GAProcessor | WARN | Не найден столбец TAG, проверьте лист со шлейфамиsrc/legacy/GAProcessor/Unimod2/Models/ModbusDevsModel.cs | У строки датчика отсутствует значение в столбце TAG (пустой sensorTag); обработка датчиков прерывается. |
| GAProcessor | WARN | Не найдена переменная {FrameModel.MaxRequestVariable}src/legacy/GAProcessor/Unimod2/Models/ModbusDevsModel.cs | Не удалось получить значение переменной максимального размера запроса (TryGetUpdatedValue вернул false); добавление фреймов прерывается. |
| GAProcessor | WARN | Некорректное значение переменной {FrameModel.MaxRequestVariable} - {maxRequestSizeStr}src/legacy/GAProcessor/Unimod2/Models/ModbusDevsModel.cs | Значение переменной максимального размера запроса не парсится в int (int.TryParse вернул false); добавление фреймов прерывается. |
| GAProcessor | WARN | При обработке датчиков не удалось найти instance с Tag={sensorTag}, смотреть-> LPSM./LPSK.src/legacy/GAProcessor/Unimod2/Models/ModbusDevsModel.cs | Среди экземпляров не найден instance с InstanceName, равным TAG датчика; данный датчик пропускается. |
| GAProcessor | WARN | У устройства {device.ModbusName} одинаковые Ip и IpRessrc/legacy/GAProcessor/Unimod2/Models/ModbusDevsModel.cs | У устройства основной и резервный IP совпадают (IsTheSameIpAndIpRes); резервный IP очищается. |
Формирование входов/выходов
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| GAProcessor | WARN | В канале плк не содержится ключа {ChannelMappingKey}src/legacy/GAProcessor/CodesysModbus/Assignment/AssignInputOutputGenerator.cs | В канале ПЛК отсутствует ключ mapping; определить соответствие mapping невозможно, возвращается false. |
| GAProcessor | WARN | Имя jsm не заполнено для фрейма {frame.Name}, проверьте ReadJsm/WriteJsm для {mapping.Key}src/legacy/GAProcessor/CodesysModbus/Assignment/AssignInputOutputGenerator.cs | Имя JSM (ReadJsm/WriteJsm в зависимости от направления фрейма) пусто в данных mapping; JSM-файл найти нельзя, возвращается false. |
| GAProcessor | WARN | Не найдено файла по пути {jsmPath}, проверьте данные для {mapping.Key}src/legacy/GAProcessor/CodesysModbus/Assignment/AssignInputOutputGenerator.cs | Проверка File.Exists для собранного пути к JSM-файлу провалилась — файл не существует; возвращается false. |
| GAProcessor | WARN | Не удалось в объекте найти канал {map.ObjectTypeNodeName}src/legacy/GAProcessor/CodesysModbus/Assignment/AssignInputOutputGenerator.cs | Среди ObjectTypeInstance экземпляра нет канала с parName, совпадающим с map.ObjectTypeNodeName; plcChannel остаётся null, возвращается false. |
| GAProcessor | WARN | Не удалось найти объект с тегом карты = {map.InstanceName}src/legacy/GAProcessor/CodesysModbus/Assignment/AssignInputOutputGenerator.cs | Среди _instances нет экземпляра с InstanceName, равным имени из карты (map.InstanceName); канал ПЛК найти нельзя, возвращается false. |
| GAProcessor | WARN | Не удалось найти соответствие между плк каналом и данными из mapping файла по ключу {ChannelMappingKey}src/legacy/GAProcessor/CodesysModbus/Assignment/AssignInputOutputGenerator.cs | Для канала ПЛК не найдено соответствующее отображение в mapping-файле (TryFindMapping вернул false либо mapping == null); канал пропускается. |
| GAProcessor | WARN | Путь к jsm не заполнен, проверьте JsmPath для {mapping.Key}src/legacy/GAProcessor/CodesysModbus/Assignment/AssignInputOutputGenerator.cs | Каталог JSM (JsmPath) не заполнен в данных mapping; путь к файлу JSM построить нельзя, возвращается false. |
HMI.Core.Extensions.TemplateFileHandler
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| HMI | ERROR | Не найден применяемый базовый шаблон{e.Message}src/modules/HMI/HMI.Core/Extensions/TemplateFileHandler.cs | Базовый применяемый шаблон не найден: показывается критическое сообщение, пишется ошибка и пробрасывается исключение. |
MnemonicsFileHandler
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| HMI | ERROR | Ошибка обработки {path}src/modules/HMI/HMI.WPF/Extensions/MnemonicsFileHandler.cs | Исключение в catch при обработке файла мнемосхемы по пути path; метод возвращает null. |
Модуль дерево иконок
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| HMI | ERROR | Дублирующийся объект с именем: {y.Key} {string.Join(Environment.NewLine, y.Select(s => s.IosPath))}src/modules/HMI/HMI.WPF/UserTagTree/ViewModel/UserTagTreeViewModel.cs | При группировке объектов с SystemTag по имени обнаружена группа с более чем одним элементом (y.Count() > 1): дублирующиеся имена объектов. |
| HMI | ERROR | Не удалось сохранить файл: {ex.Message}src/modules/HMI/HMI.WPF/UserTagTree/ViewModel/UserTagTreeViewModel.cs | Исключение в catch при попытке сохранить файл дерева иконок. |
| HMI | ERROR | Не удалось сохранить файл: {ex.Message}src/modules/HMI/HMI.WPF/UserTagTree/ViewModel/UserTagTreeViewModel.cs | Исключение в другом catch-блоке при сохранении файла дерева иконок. |
| HMI | ERROR | Ошибка десериализации: {ex.Message}src/modules/HMI/HMI.WPF/UserTagTree/ViewModel/UserTagTreeViewModel.cs | JsonException в catch при десериализации содержимого файла дерева иконок. |
| HMI | ERROR | Файл не найден: {filePath}src/modules/HMI/HMI.WPF/UserTagTree/ViewModel/UserTagTreeViewModel.cs | Ветка else: указанный файл по пути filePath не существует, загрузка дерева не выполнена. |
Модуль дерево иконок автозаполнение
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| HMI | WARN | Мнемосхема "{item.SelectedMnemonic?.Name}" сохраненаsrc/modules/HMI/HMI.WPF/UserTagTree/ViewModel/AutoFillViewModel.cs | В SaveDefaultSelectedMnemonics для элемента с непустой SelectedMnemonic фиксируется сохранение мнемосхемы (информационное событие, записанное уровнем Warn). |
| HMI | WARN | Найден дубликат {mnemo.Name}src/modules/HMI/HMI.WPF/UserTagTree/ViewModel/AutoFillViewModel.cs | Найдена другая мнемосхема с тем же максимальным уровнем вложенности и другим Uuid: обнаружен дубликат на одном уровне. |
| HMI | WARN | Не удалось применитьsrc/modules/HMI/HMI.WPF/UserTagTree/ViewModel/AutoFillViewModel.cs | После вызова GetDeepestMnemonic выбранная мнемосхема равна null (item.SelectedMnemonic == null): применить элемент не удалось. |
| HMI | WARN | Обновлен список доступных мнемосхем: {result.Count} элементовsrc/modules/HMI/HMI.WPF/UserTagTree/ViewModel/AutoFillViewModel.cs | В UpdateAvailableList после пересборки списка доступных мнемосхем фиксируется его обновление (информационное событие, записанное уровнем Warn). |
DJ.Helper.NLogViewerHelper
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| NLogViewer | ERROR | Ошибка открытия отфильтрованного лога в Excel: {e.GetFullMessage()}src/legacy/NLogViewer/Helper/NLogViewerHelper.cs | Исключение в catch при попытке открыть отфильтрованные логи в Excel. |
| NLogViewer | ERROR | При открытии лога произошла ошибкаsrc/legacy/NLogViewer/Helper/NLogViewerHelper.cs | Исключение в catch при попытке открыть файл лога; в лог пишется само исключение e вместе с сообщением. |
PLC.Models.WorkspaceModel
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| PLC | FATAL | (логируется исключение)src/legacy/PLC/Models/WorkspaceModel.cs | В блоке finally при попытке открыть лог-файл (Process.Start) выброшено исключение; логируется как фатальное. |
| PLC | ERROR | (логируется исключение)src/legacy/PLC/Models/WorkspaceModel.cs | Общий catch (Exception) в методе Build: логируется само необработанное исключение, после чего оно пробрасывается дальше. |
| PLC | ERROR | JSC не валидировалосьsrc/legacy/PLC/Models/WorkspaceModel.cs | Не удалось подставить переменные в шаблон пути результатов PLC (TryGetUpdatedValue вернул false); сборка прерывается. |
| PLC | ERROR | Не сгенерировались дополнительные данные для Unimod2. Генерация FBD не произойдетsrc/legacy/PLC/Models/WorkspaceModel.cs | В GenerateFbd структуры объектных типов Unimod2 (StructsObjTypes или struct_defs) равны null; генерация FBD пропускается. |
| PLC | ERROR | Не существует проекта в unimod {path}src/legacy/PLC/Models/WorkspaceModel.cs | В GenerateForUnimod2 каталог проекта Unimod по полученному пути не существует; генерация Unimod2 прерывается. |
| PLC | ERROR | Отсутствует переменная {pathTemplate}src/legacy/PLC/Models/WorkspaceModel.cs | Для генерации Weintek не удалось разрешить переменную пути к types.csv (TryGetUpdatedValue вернул false); генерация прерывается. |
| PLC | ERROR | Ошибка поиска файла: {e.Message}src/legacy/PLC/Models/WorkspaceModel.cs | Поймано IOException вида FileNotFoundException/DirectoryNotFoundException в процессе сборки; нужный файл или каталог не найден. |
| PLC | ERROR | Ошибка. Файл используется другим процессом или доступ к нему запрещён: {e.Message}src/legacy/PLC/Models/WorkspaceModel.cs | Поймано IOException в процессе сборки; файл занят другим процессом или доступ к нему запрещён. |
| PLC | ERROR | Процесс сборки прерван: ошибка валидации исходных данных. Исправьте опечатки и следы копипасты, а затем попробуйте снова. Удачной сборки! 🚀src/legacy/PLC/Models/WorkspaceModel.cs | Parser.ValidateInitializedConfiguration вернул true (есть ошибки валидации исходных данных); сборка прерывается. |
| PLC | WARN | Генерация Alpha не прошла проверку и будет выключенаsrc/legacy/PLC/Models/WorkspaceModel.cs | В InitAxml конфиг равен null либо в нём не выбран SelectedSolution; генерация под платформу Alpha отключается. |
Unimod
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| SharedGAPresentation | ERROR | Не удалось скопировать содержимое файла prog.csv в буфер обмена: {ex.Message}src/legacy/SharedGAPresentation/ViewModels/ImportAndBackup/ImportBackupViewModelBase.cs | Исключение в catch при копировании содержимого файла prog.csv в буфер обмена. |
| SharedGAPresentation | ERROR | Ошибка команды {commandName} в {GetType().Name}.src/legacy/SharedGAPresentation/ViewModels/ImportAndBackup/ImportBackupViewModelBase.cs | В обработчике ThrownExceptions реактивной команды: выполнение команды commandName завершилось исключением. |
| SharedGAPresentation | ERROR | Файл локального словаря не найден в директории: {directoryPath}src/legacy/SharedGAPresentation/ViewModels/ImportAndBackup/ImportBackupViewModelBase.cs | Проверка File.Exists(csvPath) провалилась: файл локального словаря (prog.csv) отсутствует в директории; метод прерывается. |
| AutomiqAutomation | WARN | Директория не найдена и будет создана: {PathToBackup}src/legacy/AutomiqAutomation/Modules/ProjectConfigurator/ViewModels/Unimod/UnimodConfigurationViewModel.cs | В методе Import директория бэкапа (PathToBackup) отсутствует, поэтому она будет создана перед бэкапом конфигурации. |
Модуль менеджера файловых менеджеров
| Модуль | Уровень | Сообщение | Описание причины возникновения |
|---|---|---|---|
| SharedGAPresentation | ERROR | Ошибка при добавлении вкладки в Total Commander: {e.Message}src/legacy/SharedGAPresentation/ViewModels/FileManager/ExplorerManager.cs | Исключение в catch при попытке добавить новую вкладку в Total Commander. |
| SharedGAPresentation | ERROR | Ошибка проводника. Это точно файловый менеджер? {e.Message}src/legacy/SharedGAPresentation/ViewModels/FileManager/ExplorerManager.cs | Общее исключение при попытке открыть выбранный файловый менеджер (возможно, выбран не файловый менеджер); откат к explorer. |
| SharedGAPresentation | ERROR | Ошибка проводника: {e.Message}src/legacy/SharedGAPresentation/ViewModels/FileManager/ExplorerManager.cs | InvalidOperationException при работе с проводником/файловым менеджером; выполняется откат к стандартному explorer и повторное открытие. |