diff --git a/docs/user_manual/ReadMe.md b/docs/user_manual/ReadMe.md index 1473829b..4b5e6269 100644 --- a/docs/user_manual/ReadMe.md +++ b/docs/user_manual/ReadMe.md @@ -82,6 +82,7 @@ + [Добавление устройств в операции в табличном режиме](#718-Добавление-устройств-в-операции-в-табличном-режиме) + [Сохранение результатов редактирования](#719-Сохранение-результатов-редактирования) + [Использование параметров в объекте](#7110-Использование-параметров-в-объекте) + + [Модификация названий устройств](#7111-модификация-названий-устройств) + [Описание действий](#72-Описание-действий) + [Использование функциональности базового объекта и базовой операции](#73-Использование-функциональности-базового-объекта-и-базовой-операции) + [Привязка базовых объектов друг к другу](#731-Привязка-базовых-объектов-друг-к-другу) @@ -807,11 +808,11 @@ ProjectTestEnabled=True | NONE | Подтип не определен. | | V_DO1 | Клапан с одним каналом управления. | | V_DO2 | Клапан с двумя каналами управления. | -| V_DO1_DI1_FB_OFF | Клапан с одним каналом управления и одной обратной связью (*выключенное состояние*). | -| V_DO1_DI1_FB_ON | Клапан с одним каналом управления и одной обратной связью (*включенное состояние*). | +| V_DO1_DI1_FB_OFF | Клапан с одним каналом управления и одной обратной связью (_выключенное состояние_). | +| V_DO1_DI1_FB_ON | Клапан с одним каналом управления и одной обратной связью (_включенное состояние_). | | V_DO1_DI2 | Клапан с одним каналом управления и двумя обратными связями. | | V_DO2_DI2 | Клапан с двумя каналами управления и двумя обратными связями. | -| V_MIXPROOF | Клапан противосмешивающий (*2 канала управления и 2 обратные связи*). | +| V_MIXPROOF | Клапан противосмешивающий (_2 канала управления и 2 обратные связи_). | | V_IOLINK_MIXPROOF | Клапан противосмешивающий с **IO-Link**. | | V_AS_MIXPROOF | Клапан противосмешивающий с **AS интерфейсом**. | | V_BOTTOM_MIXPROOF | Клапан с промывкой и двумя обратными связями (донный). | @@ -821,7 +822,7 @@ ProjectTestEnabled=True | V_IOLINK_VTUG_DO1 | **IO-Link VTUG** клапан с одним каналом управления. | | V_IOLINK_VTUG_DO1_FB_OFF | **IO-Link VTUG** клапан с одним каналом управления и одной обратной связью (*выключенное состояние*). | | V_IOLINK_VTUG_DO1_FB_ON | **IO-Link VTUG** клапан с одним каналом управления и одной обратной связью (*включенное состояние*). | -| V_IOLINK_VTUG_DO1_DI2 | **IO-Link VTUG** клапан с одним каналом управления и двумя обратными связями (*включенное и выключенное состояния*). | +| V_IOLINK_VTUG_DO1_DI2 | **IO-Link VTUG** клапан с одним каналом управления и двумя обратными связями (_включенное и выключенное состояния_). | | V_VIRT | Виртуальный клапан. | | V_MINI_FLUSHING | Клапан с миниклапаном промывки и двумя обратными связями. | | V_IOL_TERMINAL_MIXPROOF_DO3 | Противосмешивающий клапан с управление от пневмоострова IO-Link | @@ -879,7 +880,7 @@ ProjectTestEnabled=True | VC | Аналоговый клапан. | | VC_IOLINK | **IO-Link** аналоговый клапан. | | VC_VIRT | Виртуальный аналоговый клапан. | -| HLA | Дискретная сигнальная колонна (*4 DO сигнала на каждый из цветов и сирену*). | +| HLA | Дискретная сигнальная колонна (_4 DO сигнала на каждый из цветов и сирену_). | | HLA_VIRT | Виртуальная сигнальная колонна. | | HLA_IOLINK | IO-Link сигнальная колонна. | | FS | Датчик наличия потока. | @@ -1312,10 +1313,15 @@ ProjectTestEnabled=True * Быстрое выделение элементов (выделяются все элементы одного типа относящиеся к одной группе, технологические объекты выделяются также по одному технологическому типу) – Ctrl+2xЛКМ; * При копировании – вставке/замене объекта копируются все поля исходного объекта необходимо учитывать следующие нюансы: * Номер объекта меняется на номер объекта, на место которого вставляем объект - * Копируется полный список операций и происходит копирование устройств, которые используются в операции. При этом происходит корректная замена номера объекта на новый. Это происходит в случае совпадения у двух объектов поля ОУ. Так при копировании операций из объекта __Танк 1__ с устройством __TANK1V1__ и заменой в объекте __Танк 3__ устройство изменит свое имя на __TANK3V1__. + * Копируется полный список операций и происходит копирование устройств, которые используются в операции. При этом происходит корректная замена номера объекта на новый (Подробнее описано [здесь](#7111-модификация-названий-устройств)). Это происходит в случае совпадения у двух объектов поля ОУ. Так при копировании операций из объекта __Танк 1__ с устройством __TANK1V1__ и заменой в объекте __Танк 3__ устройство изменит свое имя на __TANK3V1__. * При копировании операций происходит копирование ограничений, описанных в операции. Для ограничений, относящихся к данному объекту (_«Ограничения внутри объекта», «Ограничения на последующие операции»_), происходит замена старого номера объекта на новый. * Можно копировать не только отдельные строки параметров, операций, а также целые группы параметров, ограничений, операций. +##### Модификация названий устройств ##### + + + + #### 7.1.1 Неопознанные объекты при загрузке описания проекта ####

Если базовый объект будет не распознан системой, добавляемый при загрузке объект будет добавлен в группу "Неопознанные объекты". Пример на рисунке ниже.

@@ -1455,6 +1461,39 @@ ProjectTestEnabled=True

Рисунок - Пример отображения параметров в операции

+#### 7.1.11 Модификация названий устройств #### + +

Модификация названий привязанных устройств выполняется при изменении названия или номера технологического объекта, которое происходит в следствии редактирования полей, вставке или замене объекта. Так же модификация проводится при открытии и сохранении проекта.

+ +В модификации привязаных устройств учавствуют следующие поля в технологическом объекта: + - Все поля дейтсвий; + - Параметры действий(если к ним привязано устройство); + - Элементы поля `Доп.свойства`(в операциях); + - Элементы поля `Оборудование`. + +##### Правила модификации устройств ##### + +Устройства в поле оборудования всегда соответсвуют технологическому объекту, поэтому там правило простое: подставляется устройство с соответствующим объектом или удаляется; + +Для остальных полей модификация устройств проводится по следующим правилам: + - Если у привязанного устройства объект совпадает с изменяемым тех.объектом, то устройство модифицируется в соответсвии с изменением имени/номера объекта (или остается прежним в случае отсутсвия такого устройства): + * (имя: "OBJ" => "OTHER") : `[OBJ]1V1` => `[OTHER]1V1`; [*][modify] + * (номер: 1 => 2) : `OBJ[1]V1` => `OBJ[2]V1`; [*][modify] + - В случае если совпадает название объекта, но номер **НЕ** совпадает и при этом он совпадает с новым номером объекта, то он изменяется на противоположный: + * (номер: 1 => 2) : `OBJ[2]V1` => `OBJ[1]V2`; [*][modify] + - Если устройства взяты из типового объекта, то в случае их отсутствия они удаляются; + - Модификация клапанов **MIXPROOF**-типов осуществляется в следующих условиях: + * Модифицируемый объкта - **Аппарат**; + * Имя устойства объекта не совпадат с ОУ тех.объекта; + * Устройство имеет тип **MIXPROOF** или похожий; + + При этом модифицируется не номер объекта, а номер устройства (точнее, его часть свопадающая с номером тех.объекта), если такого устройства нет, оно удаляется из привязки: + * (номер: 1 => 2) : `NO_UNIT1V[1]` => `NO_UNIT1V[2]` [*][modify] + * (номер: 13 => 14) : `NO_UNIT1V2[13]` => `NO_UNIT1V2[14]` [*][modify] + +[modify]: ## "В круглых скобках указывается изменение объекта, далее черех двоеточие результат модификации устройства, где в квадратных скобках указано, что именно изменяется." + + ### 7.2 Описание действий #### Список реализованных действий: diff --git a/src/Device/DeviceManager.cs b/src/Device/DeviceManager.cs index ea78278b..f8617d15 100644 --- a/src/Device/DeviceManager.cs +++ b/src/Device/DeviceManager.cs @@ -1159,8 +1159,8 @@ private IDevice ModifyMixproof(IDevice device, IDevModifyOptions options) var match = mixproofRegex.Match(device.Name); if (match.Success) { - var mixproofP = match.Groups[1].Value; - return GetDeviceByEplanName($"{mixproofP}{options.NewTechObjectNumber}"); + var mixproofPart = match.Groups[1].Value; + return GetDeviceByEplanName($"{mixproofPart}{options.NewTechObjectNumber}"); } else return device; }