Инструменты пользователя

Инструменты сайта


dev:nastrojka_avtomatizacii

Различия

Показаны различия между двумя версиями страницы.


Предыдущая версия
dev:nastrojka_avtomatizacii [2025/06/03 14:45] (текущий) 192.168.1.70
Строка 1: Строка 1:
 +====== Настройка Автоматизации ======
 +
 +===== WebConsole =====
 +
 +Файл: C:\inetpub\wwwroot\Web.config
 +
 +Настройки веб консоли
 +
 +   * connectionstring - строка соединения с базой данных
 +      * Server=localhost;Port=3306;Database=chromosflow;Uid=chromosflow;Pwd=password;
 +   * PathChromosCalc - 
 +      * C:\ChromosFlow\Chromos.Calc.dll
 +   * PathChromosModBus - 
 +      * C:\ChromosFlow\Chromos.ModBus.dll
 +   * PathChromosMapper - 
 +      * C:\ChromosFlow\Chromos.Mapper.dll
 +   * PathChromosFlow - 
 +      * C:\ChromosFlow\Chromos.Flow.exe
 +   * PathChromosWebConsole - 
 +      * C:\inetpub\wwwroot\bin\Chromos.WebConsole.dll
 +   * PathChromosDataBase - 
 +      * C:\ChromosFlow\Chromos.DataBase.dll
 +   * SchedulerHiddenActions - список задач через `;` которые необходимо скрыть
 +      * AnalysisGost3137172008 - анализ по ГОСТ 31371.7 от 2008г.
 +      * CalibrationGost3137172008 - градуировка по ГОСТ 31371.7 от 2008г.
 +      * Cooling - охлаждение
 +      * Conditioning - кондиционирование
 +      * AnalysisAbsoluteCalibration - анализ по абсолютной градуировке
 +      * ChangeFlow - смена потоков
 +
 +Пример:
 +<code xml>
 +<?xml version="1.0" encoding="utf-8"?>
 +<configuration>
 +  ...
 +  <appSettings>
 +    <add key="webpages:Version" value="3.0.0.0" />
 +    <add key="webpages:Enabled" value="false" />
 +    <add key="ClientValidationEnabled" value="true" />
 +    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
 +    <add key="connectionstring" value="Server=localhost;Port=3306;Database=chromosflow;Uid=chromosflow;Pwd=password;" />
 +    <add key="PathChromosCalc" value="C:\ChromosFlow\Chromos.Calc.dll" />
 +    <add key="PathChromosModBus" value="C:\ChromosFlow\Chromos.ModBus.dll" />
 +    <add key="PathChromosMapper" value="C:\ChromosFlow\Chromos.Mapper.dll" />
 +    <add key="PathChromosFlow" value="C:\ChromosFlow\Chromos.Flow.exe" />
 +    <add key="PathChromosWebConsole" value="C:\inetpub\wwwroot\bin\Chromos.WebConsole.dll" />
 +    <add key="PathChromosDataBase" value="C:\ChromosFlow\Chromos.DataBase.dll" />
 +    <add key="SchedulerHiddenActions" value="ChangeFlow;AnalysisAbsoluteCalibrationFlow1:AnalysisAbsoluteCalibrationFlow2" />
 +  </appSettings>
 +  ...
 +</configuration>
 +</code>
 +
 +
 +===== Shell.config =====
 +
 +Файл: C:\ChromosShell\Chromos.Shell.exe.config
 +
 +Настройки оболочки
 +
 +   * TimerInterval - задержка перед запуском автоматизации
 +   * UserPasswordHash - hash сумма пароля
 +   * ProcessStorage - следить за состоянием запущенных процессов
 +   * InitializationTimeSleep - задержка перед запуском
 +    
 +Пример:
 +<code xml>
 +<?xml version="1.0" encoding="utf-8"?>
 +<configuration>
 +  <appSettings>
 +    <add key="ChromosPath" value="c:\Program Files\Chromos\Chromos.exe"/>
 +    <add key="ChromosFlowPath" value="c:\ChromosFlow\Chromos.Flow.exe"/>
 +    
 +    <add key="OskPath" value="c:\Windows\System32\osk.exe"/>
 +    <add key="TaskManager" value="c:\Windows\System32\taskmgr.exe"/>
 +    <add key="ControlPanel" value="c:\Windows\System32\control.exe"/>
 +    <add key="FileManager" value="c:\Windows\explorer.exe"/>
 +    <add key="SiteUrl" value="http://localhost"/>
 +    
 +    <add key="ChromosFlowProcessName" value="Chromos.Flow"/>
 +    <add key="ChromosProcessName" value="Chromos"/>
 +    <add key="WebConsoleProcessName" value="Chromos.Shell"/>
 +    
 +    <add key="TimerInterval" value="3000"/>
 +    <add key="UserPasswordHash" value="d77004646e27365ae0e4fc90cf8d8a6958a75a1e"/>
 +    <add key="ProcessStorage" value="True"/>
 +
 +    <add key="InitializationTimeSleep" value="60000"/>
 +  </appSettings>
 +</configuration>
 +</code>
 +
 +
 +===== Bot =====
 +
 +Файл: C:\ChromosFlow\Chromos.Flow.exe.config
 +
 +Настройки параметров автоматизации
 +
 +   * MethodCooling - наименование метода для задачи охлаждение
 +   * MethodConditioning - наименование метода для задачи кондиционирование
 +   * MethodFlow1Channel1 - наименование метода для потока 1
 +   * MethodFlow1Channel2 - наименование метода для потока 2
 +   * ConditioningTimeout - время ожидания выполнения кондиционирования (в секундах). При превышении этого времени происходит принудительное завершение задания
 +   * LogicTimeout - время ожидания выполнения задания (в секундах). При превышении этого времени происходит принудительное завершение задания
 +   * LogicThreads - количество потоков для обработки очереди заданий
 +   * LogicQueueSize - Размер очереди заданий
 +
 +Пример:
 +<code xml>
 +<?xml version="1.0" encoding="utf-8"?>
 +<configuration>
 +  <appSettings>
 +    <add key="connectionstring" value="Server=localhost;Port=3306;Database=chromosflow;Uid=chromosflow;Pwd=password;" />
 +    <add key="DelayTime" value="60000" />
 +    <add key="EventTime" value="60000" />
 +    <add key="ResetTime" value="60000" />
 +    <add key="EventType" value="1" />
 +    <add key="MethodCooling" value="Охлаждение" />
 +    <add key="MethodConditioning" value="Кондиционирование" />
 +    <add key="MethodFlow1Channel1" value="УВ" />
 +    <add key="MethodFlow1Channel2" value="О2" />
 +
 +    <add key="ConditioningTimeout" value="600" />
 +    <add key="LogicTimeout" value="55" />
 +    <add key="LogicThreads" value="2" />
 +    ...
 +  </appSettings>
 +  ...
 +</configuration>
 +</code>
 +
 +Выбор особой пробоподготовки
 +  * Preparation - выбор варианта пробоподготовки: 
 +    * NetPreparation – переключение потоков на основе ET-7242
 +    * ComplexPreparation – комплексная внешняя пробоподготовка: ПЛК + переключение потоков через ПО Хромос
 +    * PUKPreparation – переключение потоков через ПО Хромос посредством ПУК
 +
 +Пример:
 +<code xml>
 +<?xml version="1.0" encoding="utf-8"?>
 +<configuration>
 +  <appSettings>
 +    ...
 +    <add key="Preparation" value="ComplexPreparation" />
 +    ...
 +  </appSettings>
 +  ...
 +</configuration>
 +</code>
 +
 +Настройки для пробоподготовки на основе ET-7242:
 +
 +   * NetPreparationHostName - IP-адрес (по умолчанию "192.168.255.1")
 +   * NetPreparationPort - порт (по умолчанию "502")
 +   * NetPreparationStartAddress - адрес начальной ячейки для записи(по умолчанию "0")
 +   * NetPreparationFlowCount - количество потоков(по умолчанию "16")
 +   * NetPreparationLinear - True = отдельный клапан для каждого потока; False = каскадная схема в соответствии с [[dev:nastrojka_probopodgotovki|Настройка Пробоподготовки]]
 +
 +Пример:
 +<code xml>
 +<?xml version="1.0" encoding="utf-8"?>
 +<configuration>
 +  <appSettings>
 +    ...
 +    <add key="Preparation" value="NetPreparation" />
 +    <add key="NetPreparationHostName" value="192.168.255.1" />
 +    <add key="NetPreparationPort" value="502" />
 +    <add key="NetPreparationStartAddress" value="0" />
 +    <add key="NetPreparationFlowCount" value="16" />
 +    <add key="NetPreparationLinear" value="True" />
 +    ...
 +  </appSettings>
 +  ...
 +</configuration>
 +</code>
 +
 +Настройка частоты опроса датчиков (индикаторов)
 +  * PollingRate - Частота опроса в секундах (30 = каждые 30 секунд)
 +
 +Пример:
 +<code xml>
 +<?xml version="1.0" encoding="utf-8"?>
 +<configuration>
 +  <appSettings>
 +    ...
 +    <add key="PollingRate" value="30" />
 +    ...
 +  </appSettings>
 +  ...
 +</configuration>
 +</code>
 +
 +Настройки индикатора водорода на основе NSENSOR2_0:
 +
 +   * HydrogenSensor - активировать (по умолчанию "False")
 +   * HydrogenSensorSlaveId - адрес ведомого (подчинённого) устройства (по умолчанию "126")
 +   * HydrogenSensorPortName - порт (по умолчанию "COM3")
 +   * HydrogenSensorBaudRate - скорость передачи для последовательного порта (в бодах) (по умолчанию "9600")
 +   * HydrogenSensorDataBits - стандартное число битов данных в байте (по умолчанию "8")
 +   * HydrogenSensorParity - протокол контроля четности (по умолчанию "None") (варианты: None = 0, Odd, Even, Mark, Space)
 +   * HydrogenSensorStopBits - стандартное число стоповых битов в байте (по умолчанию "One") (варианты: None, One, Two, OnePointFive)
 +   * HydrogenSensorReadTimeout - срок ожидания в миллисекундах для завершения операции (по умолчанию "500")
 +   * HydrogenSensorWriteTimeout - срок ожидания в миллисекундах для завершения операции (по умолчанию "500")
 +
 +Пример:
 +<code xml>
 +<?xml version="1.0" encoding="utf-8"?>
 +<configuration>
 +  <appSettings>
 +    ...
 +    <add key="HydrogenSensor" value="True" />
 +    <add key="HydrogenSensorSlaveId" value="126" />
 +    <add key="HydrogenSensorPortName" value="COM3" />
 +    <add key="HydrogenSensorBaudRate" value="9600" />
 +    <add key="HydrogenSensorDataBits" value="8" />
 +    <add key="HydrogenSensorParity" value="None" />
 +    <add key="HydrogenSensorStopBits" value="One" />
 +    <add key="HydrogenSensorReadTimeout" value="500" />
 +    <add key="HydrogenSensorWriteTimeout" value="500" />
 +    ...
 +  </appSettings>
 +  ...
 +</configuration>
 +</code>
 +
 +Настройки индикатора температуры на основе NSENSOR2_0:
 +
 +   * TempSensor - активировать (по умолчанию "False")
 +   * TempSensorLevel - уровень, в градусах (по умолчанию "70")
 +   * TempSensorSlaveId - адрес ведомого (подчинённого) устройства (по умолчанию "126")
 +   * TempSensorPortName - порт (по умолчанию "COM3")
 +   * TempSensorBaudRate - скорость передачи для последовательного порта (в бодах) (по умолчанию "9600")
 +   * TempSensorDataBits - стандартное число битов данных в байте (по умолчанию "8")
 +   * TempSensorParity - протокол контроля четности (по умолчанию "None") (варианты: None = 0, Odd, Even, Mark, Space)
 +   * TempSensorStopBits - стандартное число стоповых битов в байте (по умолчанию "One") (варианты: None, One, Two, OnePointFive)
 +   * TempSensorReadTimeout - срок ожидания в миллисекундах для завершения операции (по умолчанию "500")
 +   * TempSensorWriteTimeout - срок ожидания в миллисекундах для завершения операции (по умолчанию "500")
 +
 +Пример:
 +<code xml>
 +<?xml version="1.0" encoding="utf-8"?>
 +<configuration>
 +  <appSettings>
 +    ...
 +    <add key="TempSensor" value="True" />
 +    <add key="TempSensorLevel" value="70" />
 +    <add key="TempSensorSlaveId" value="126" />
 +    <add key="TempSensorPortName" value="COM3" />
 +    <add key="TempSensorBaudRate" value="9600" />
 +    <add key="TempSensorDataBits" value="8" />
 +    <add key="TempSensorParity" value="None" />
 +    <add key="TempSensorStopBits" value="One" />
 +    <add key="TempSensorReadTimeout" value="500" />
 +    <add key="TempSensorWriteTimeout" value="500" />
 +    ...
 +  </appSettings>
 +  ...
 +</configuration>
 +</code>
 +
 +CalibrationSwitchToFlow - Поток для переключения после окончания градуировки (от нуля; для переключения на предыдущий значение -1)
 +
 +Пример:
 +<code xml>
 +<?xml version="1.0" encoding="utf-8"?>
 +<configuration>
 +  <appSettings>
 +    ...
 +    <add key="CalibrationSwitchToFlow" value="0" /> 
 +    ...
 +  </appSettings>
 +  ...
 +</configuration>
 +</code>
 +
 +Настройки для команд через Modbus
 +  * AnalysisActionName - Имя задания Анализ (команда StartAnalysis)
 +        * SchedulerAction.AnalysisAbsoluteCalibration – Анализ (абсолютная градуировка)
 +        * SchedulerAction.AnalysisGost3137172008 – Анализ ГОСТ 31371.7-2008
 +        * SchedulerAction.AnalysisGost533672009 – Анализ ГОСТ 53367-2009
 +  * CalibrationActionName - Имя задания Градуировка (команда StartCalibration)
 +        * SchedulerAction.CalibrationGost3137172008 – Градуировка ГОСТ 31371.7-2008
 +        * SchedulerAction.CalibrationGost533672009 – Градуировка ГОСТ 53367-2009
 +        * SchedulerAction.CalibrationStatic – Градуировка статическая ГОСТ 31371.7-2008
 +
 +Пример:
 +<code xml>
 +<?xml version="1.0" encoding="utf-8"?>
 +<configuration>
 +  <appSettings>
 +    ...
 +    <add key="AnalysisActionName" value="SchedulerAction.AnalysisGost3137172008"/>
 +    <add key="CalibrationActionName" value="SchedulerAction.CalibrationGost3137172008"/>
 +    ...
 +  </appSettings>
 +  ...
 +</configuration>
 +</code>
 +
 +PathDatabaseDumps - Каталог для экспорта базы данных
 +      * C:\tmp\dumps\ – по умолчанию
 +Пример:
 +<code xml>
 +<?xml version="1.0" encoding="utf-8"?>
 +<configuration>
 +  <appSettings>
 +    ...
 +    <add key="PathDatabaseDumps" value="C:\tmp\dumps\" />
 +    ...
 +  </appSettings>
 +  ...
 +</configuration>
 +</code>
 +
 +
 +===== Modbus =====
 +
 +Файл: C:\ChromosFlow\modbus.xml
 +
 +Карта modbus
 +  * group - группа параметров или команд
 +      * flow - номер потока, нумерация от 0
 +    * command - команда 
 +      * addr - адрес команды
 +      * data_type - тип регистра modbus
 +        * Coil - однобитовый тип, доступен для чтения и записи – для команд устройству (InCommand)
 +        * Input - однобитовый тип, доступен только для чтения – для команд от устройства (OutCommand), например для внешней системы пробоподготовки
 +      * name - наименование команды:
 +        * InCommand.StartAnalysis - запуск анализа. Тип анализа указывается в настройках Bot (см. соотв. раздел)
 +        * InCommand.StartCalibration - запуск градуировки. Тип градуировки указывается в настройках Bot (см. соотв. раздел)
 +        * Дополнительные команды при работе с комплексной внешней пробоподготовкой (например на базе ПЛК):
 +          * OutCommand.StartPreparation - сигнал внешней пробоподготовке о необходимости начала подготовки пробы
 +          * OutCommand.AnalysisEnded - сигнал внешней пробоподготовке об окончании анализа
 +          * InCommand.PreparationComplete - сигнал от внешней пробоподготовки об успешной подготовке пробы (можно начинать анализ)
 +          * InCommand.PreparationError - сигнал от внешней пробоподготовки об ошибке при подготовке пробы (анализ провести нельзя)
 +
 +    * param - параметр
 +      * addr - адрес параметра
 +
 +      * data_type - тип регистра modbus
 +        * Coil - однобитовый тип, доступен для чтения и записи
 +        * Input - однобитовый тип, доступен только для чтения
 +        * InputRegister - 16-битовый знаковый или беззнаковый тип, доступен только для чтения
 +        * HoldingRegister - 16-битовый знаковый или беззнаковый тип, доступен для чтения и записи
 +
 +      * reverse_bytes - меняет порядок байт в каждом регистре на "старший байт первым"
 +
 +      * reverse_words - меняет порядок регистров на "старший регистр первым"
 +
 +      * operator – определяет усреднение данных; если отсутствует – выдаются текущие значения. Усреднение поддерживает компоненты Component.* и расчётные параметры Property.*, а также дату и время начала и конца усреднения (см. ниже)
 +        * avg_hour – усреднение за последний час
 +        * avg_day – усреднение за последние сутки
 +
 +
 +      * type - тип параметра, поддерживаемые варианты:
 +        * i16 - 16-ти битовый знаковый тип
 +        * ui16 - 16-ти битовый беззнаковый тип
 +        * i32 - 32-х битовый знаковый тип
 +        * ui32 - 32-х битовый беззнаковый тип
 +        * i64 - 64-х битовый знаковый тип
 +        * ui64 - 64-х битовый беззнаковый тип
 +        * float - вещественное число одинарной точности с плавающей точкой
 +        * double - вещественное число двойной точности с плавающей точкой
 +
 +      * name - наименование параметра:
 +        * Component.methane - компонент "метан"
 +        * Component.ethane - компонент "этан"
 +        * Component.propane - компонент "пропан"
 +        * Component.n_butane - компонент "н-бутан"
 +        * Component.iso_butane - компонент "и-бутан"
 +        * Component.n_pentane - компонент "н-пентан"
 +        * Component.isopentane - компонент "и-пентан"
 +        * Component.neopentane - компонент "нео-пентан"
 +        * Component.n_hexane - компонент "н-гексан"
 +        * Component.2_methylpentane - компонент "2-метилпентан"
 +        * Component.3_methylpentane - компонент "3-метилпентан"
 +        * Component.2_2_dimethylbutane - компонент "2.2-диметилбутан"
 +        * Component.2_3_dimethylbutane - компонент "2.3-диметилбутан"
 +        * Component.n_heptane - компонент "н-гептан"
 +        * Component.n_octane - компонент "н-октан"
 +        * Component.nonane - компонент "н-нонан"
 +        * Component.n_decane - компонент "н-декан"
 +        * Component.ethylene - компонент "этилен"
 +        * Component.propylene - компонент "пропилен"
 +        * Component.1_butene - компонент "1-бутен"
 +        * Component.cis_2_butene - компонент "цис-2-бутен"
 +        * Component.trans_2_butene - компонент "транс-2-бутен"
 +        * Component.iso_butene - компонент "2-метилпропен"
 +        * Component.1_pentene - компонент "1-пентен"
 +        * Component.propadiene - компонент "пропадиен"
 +        * Component.1_2_butadiene - компонент "1.2-бутадиен"
 +        * Component.1_3_butadiene - компонент "1.3-бутадиен"
 +        * Component.acetylene - компонент "ацетилен"
 +        * Component.cyclopentane - компонент "циклопентан"
 +        * Component.methylcyclopentane - компонент "метилциклопентан"
 +        * Component.ethylcyclopentane - компонент "этилциклопентан"
 +        * Component.cyclohexane - компонент "циклогексан"
 +        * Component.methylcyclohexane - компонент "метилциклогексан"
 +        * Component.ethylcyclohexane - компонент "этилциклогексан"
 +        * Component.benzene - компонент "бензол"
 +        * Component.toluene - компонент "толуол"
 +        * Component.ethylbenzene - компонент "этилбензол"
 +        * Component.o_xylene - компонент "о-ксилол"
 +        * Component.methanol - компонент "метанол"
 +        * Component.methanethiol - компонент "метантиол"
 +        * Component.hydrogen - компонент "водород"
 +        * Component.water - компонент "вода"
 +        * Component.hydrogen_sulphide - компонент "сероводород"
 +        * Component.ammonia - компонент "аммиак"
 +        * Component.hydrocyanic_acid - компонент "цианид водорода"
 +        * Component.carbon_monoxide - компонент "монооксид углерода"
 +        * Component.carbonyl_sulfide - компонент "карбонилсульфид"
 +        * Component.carbon_disulfide - компонент "сероуглерод"
 +        * Component.helium - компонент "гелий"
 +        * Component.neon - компонент "неон"
 +        * Component.argon - компонент "аргон"
 +        * Component.nitrogen - компонент "азот"
 +        * Component.oxygen - компонент "кислород"
 +        * Component.carbon_dioxide - компонент "диоксид углерода"
 +        * Component.sulphur_dioxide - компонент "диоксид серы"
 +        * Component.air - компонент "воздух"
 +        * Component.isobutylene - компонент "изобутилен"
 +        * Component.acrolein - компонент "акролеин"
 +        * Component.c5plus - компонент "С5+"
 +        * Component.c6plus - компонент "С6+"
 +        * Component.isopropanol - компонент "изопропанол"
 +        * Component.tetrahydrofuran - компонент "тетрагидрофуран"
 +        * Component.methylacetylene - компонент "метилацетилен"
 +        * Component.4vinylcyclohexene - компонент "винилциклогексен"
 +        * Component.acetonitrile - компонент "ацетонитрил"
 +        * Component.acrylonitrile - компонент "нак"
 +        * Component.methyl_mercaptan - компонент "метилмеркаптан"
 +        * Component.ethyl_mercaptan - компонент "этилмеркаптан"
 +        * Component.propyl_mercaptan - компонент "пропилмеркаптан"
 +        * Component.isopropyl_mercaptan - компонент "изопропилмеркаптан"
 +        * Component.sec_butyl_mercaptan - компонент "втор-бутилмеркаптан"
 +        * Component.tert_butyl_mercaptan - компонент "трет-бутилмеркаптан"
 +        * Component.isobutyl_mercaptan - компонент "изобутилмеркаптан"
 +        * Component.butyl_mercaptan - компонент "бутилмеркаптан"
 +        * Component.ethanol - компонент "этанол"
 +        * Component.c4-1 - компонент "C4-1"
 +        * Component.c4-2 - компонент "C4-2"
 +        * Component.c4-3 - компонент "C4-3"
 +        * Component.c4-4 - компонент "C4-4"
 +        * Component.c4-5 - компонент "C4-5"
 +        * Component.c4-6 - компонент "C4-6"
 +        * Component.c4-7 - компонент "C4-7"
 +        * Component.c4-8 - компонент "C4-8"
 +        * Component.c4-9 - компонент "C4-9"
 +        * Component.c4-10 - компонент "C4-10"
 +        * Component.dimethyl_sulfide - компонент "диметилсульфид"
 +        * Component.methyl_ethyl_sulfide - компонент "метилэтилсульфид"
 +        * Component.diethyl_sulfide - компонент "диэтилсульфид"
 +        * Component.isobutanol - компонент "изобутанол"
 +        * Component.acetaldehyde - компонент "ацетальдегид"
 +        * Component.1,2_dichloroethane - компонент "1,2-дихлорэтан"
 +        * Component.dichloromethane - компонент "дихлорметан"
 +        * Component.carbon_tetrachloride - компонент "тетрахлорметан"
 +        * Component.trichloroethylene - компонент "трихлорэтилен"
 +        * Component.chloroform - компонент "трихлорметан"
 +        * Component.tetrachloroethylene - компонент "тетрахлорэтилен"
 +        * Component.1,1,1,2_tetrachloroethane - компонент "1,1,1,2-тетрахлорэтан"
 +        * Component.1,1,2,2_tetrachloroethane - компонент "1,1,2,2-тетрахлорэтан"
 +        * Component.pentachloroethane - компонент "пентахлорэтан"
 +        * Component.hexachloroethane - компонент "гексахлорэтан"
 +        * Component.benzyl_chloride - компонент "бензилхлорид"
 +        * Component.c6 - компонент "С6"
 +        * Component.c7 - компонент "С7"
 +        * Component.c7plus - компонент "С7+"
 +        * Component.c8 - компонент "С8"
 +        * Component.c9plus - компонент "С9+"
 +        * Component.c10 - компонент "С10"
 +        * Component.c6plusstar - компонент "С6+(*)"
 +        * Component.n_undecane - компонент "н-ундекан"
 +        * Component.n_dodecane - компонент "н-додекан"
 +        * Component.n_tridecane - компонент "н-тридекан"
 +        * Component.n_tetradecane - компонент "н-тетрадекан"
 +        * Component.n_pentadecane - компонент "н-пентадекан"
 +        * Component.thiophene – компонент «тиофен»
 +        * Component.p_xylene – компонент «п-ксилол»
 +        * Component.m_xylene – компонент «м-ксилол»
 +        * Component.styrene – компонент «стирол»
 +        * Component.vinylacetylene – компонент «винилацетилен»
 +        * Component.ethylacetylene – компонент «этилацетилен»
 +        * Component.dimethylacetylene – компонент «диметилацетилен»
 +        * Component.1_hexene – компонент «1-гексен»
 +        * Component.1_nonene – компонент «нонен-1»
 +        * Component.tert_butanol – компонент «трет-бутанол»
 +        * Component.2_ethyl_1_butene – компонент «2-этил-бутен-1»
 +        * Component.3_methyl_1_pentene – компонент «3-метил-пентен-1»
 +        * Component.2_ethyl_3_methyl_1_pentene – компонент «2-этил-3-метил-пентен-1»
 +        * Component.propionaldehyde – компонент «пропиональдегид»
 +        * Component.isobutylaldehyde – компонент «изобутилальдегид»
 +        * Component.butylaldehyde – компонент «бутилальдегид»
 +        * Component.isovaleraldehyde – компонент «изовалериановый альдегид»
 +        * Component.valeraldehyde – компонент «валериановый альдегид»
 +        * Component.aceton – компонент «ацетон»
 +        * Component.2_butanone – компонент «метилэтилкетон»
 +        * Component.dimethylether – компонент «диметиловый эфир»
 +        * Component.diethylether – компонент «диэтиловый эфир»
 +        * Component.mtbe – компонент «МТБЭ»
 +        * Component.etbe – компонент «ЭТБЭ»
 +        * Component.diispropylether – компонент «диизопропиловый эфир»
 +        * Component.dipropylether – компонент «дипропиловый эфир»
 +        * Component.tame – компонент «ТАМЭ»
 +        * Component.propanol – компонент «пропанол»
 +        * Component.allylalcohol – компонент «аллиловый спирт»
 +        * Component.sec_butanol – компонент «втор-бутанол»
 +        * Component.n_butanol – компонент «н-бутанол»
 +
 +        * **ФХП по ГОСТ 31369-2008:**
 +        * Property.Gost313692008BurnoutTemperature  -  температура сгорания
 +        * Property.Gost313692008D  -  относительная плотность реального газа (кг/м3)
 +        * Property.Gost313692008D0  -  относительная плотность идеального газа (кг/м3)
 +        * Property.Gost313692008HmassN  -  низшая теплота сгорания массовая (МДж/кг)
 +        * Property.Gost313692008HmassNKcal  -  низшая теплота сгорания массовая (ккал/кг)
 +        * Property.Gost313692008HmassV  -  высшая теплота сгорания массовая (МДж/кг)
 +        * Property.Gost313692008HmassVKcal  -  высшая теплота сгорания массовая (ккал/кг)
 +        * Property.Gost313692008HmolN  -  низшая теплота сгорания молярная (кДж/моль)
 +        * Property.Gost313692008HmolNCal  -  низшая теплота сгорания молярная (кал/моль)
 +        * Property.Gost313692008HmolV  -  высшая теплота сгорания молярная (кДж/моль)
 +        * Property.Gost313692008HmolVCal  -  высшая теплота сгорания молярная (кал/моль)
 +        * Property.Gost313692008HvolN  -  низшая теплота сгорания объёмная (МДж/м3) реального газа
 +        * Property.Gost313692008HvolN0  -  низшая теплота сгорания объёмная (МДж/м3) идеального газа
 +        * Property.Gost313692008HvolN0Kcal  -  низшая теплота сгорания объёмная (ккал/м3) идеального газа
 +        * Property.Gost313692008HvolNKcal  -  низшая теплота сгорания объёмная (ккал/м3) реального газа
 +        * Property.Gost313692008HvolV  -  высшая теплота сгорания объёмная (МДж/м3) реального газа
 +        * Property.Gost313692008HvolV0  -  высшая теплота сгорания объёмная (МДж/м3) идеального газа
 +        * Property.Gost313692008HvolV0Kcal  -  высшая теплота сгорания объёмная (ккал/м3) идеального газа
 +        * Property.Gost313692008HvolVKcal  -  высшая теплота сгорания объёмная (ккал/м3) реального газа
 +        * Property.Gost313692008IsMethaneByDifference  -  метан по разности (0 – нет; 1 – да)
 +        * Property.Gost313692008M  -  молярная масса (кг/кмоль)
 +        * Property.Gost313692008MeasureTemperature  -  температура измерения
 +        * Property.Gost313692008Ro  -  плотность реального газа (кг/м3)
 +        * Property.Gost313692008Ro0  -  плотность идеального газа (кг/м3)
 +        * Property.Gost313692008WobbeN  -  число воббе низшее (МДж/м3) реального газа
 +        * Property.Gost313692008WobbeN0  -  число воббе низшее (МДж/м3) идеального газа
 +        * Property.Gost313692008WobbeN0Kcal  -  число воббе низшее (ккал/м3) идеального газа
 +        * Property.Gost313692008WobbeNKcal  -  число воббе низшее (ккал/м3) реального газа
 +        * Property.Gost313692008WobbeV  -  число воббе высшее (МДж/м3) реального газа
 +        * Property.Gost313692008WobbeV0  -  число воббе высшее (МДж/м3) идеального газа
 +        * Property.Gost313692008WobbeV0Kcal  -  число воббе высшее (ккал/м3) идеального газа
 +        * Property.Gost313692008WobbeVKcal  -  число воббе высшее (ккал/м3) реального газа
 +        * Property.Gost313692008Zmix  -  коэффициент сжимаемости
 +        * **ФХП по ГОСТ 31369-2021:**
 +        * Property.Gost313692021AtmosphericPressure – Атмосферное давление
 +        * Property.Gost313692021BurnoutTemperature – Температура сгорания
 +        * Property.Gost313692021D – Плотность реального газа (кг/м3)
 +        * Property.Gost313692021D0 – Плотность идеального газа (кг/м3)
 +        * Property.Gost313692021G – Относительная плотность реального газа
 +        * Property.Gost313692021G0 – Относительная плотность идеального газа
 +        * Property.Gost313692021HmassG – Высшая теплота сгорания массовая (МДж/кг)
 +        * Property.Gost313692021HmassGKcal – Высшая теплота сгорания массовая (ккал/кг)
 +        * Property.Gost313692021HmassN – Низшая теплота сгорания массовая (МДж/кг)
 +        * Property.Gost313692021HmassNKcal – Низшая теплота сгорания массовая (ккал/кг)
 +        * Property.Gost313692021HmolG – Высшая теплота сгорания молярная (кДж/моль)
 +        * Property.Gost313692021HmolGCal – Высшая теплота сгорания молярная (кал/моль)
 +        * Property.Gost313692021HmolN – Низшая теплота сгорания молярная (кДж/моль)
 +        * Property.Gost313692021HmolNCal – Низшая теплота сгорания молярная (кал/моль)
 +        * Property.Gost313692021HvolG – Высшая теплота сгорания объёмная (МДж/м3) реального газа
 +        * Property.Gost313692021HvolG0 – Высшая теплота сгорания объёмная (МДж/м3) идеального газа
 +        * Property.Gost313692021HvolG0Kcal – Высшая теплота сгорания объёмная (ккал/м3) идеального газа
 +        * Property.Gost313692021HvolGKcal – Высшая теплота сгорания объёмная (ккал/м3) реального газа
 +        * Property.Gost313692021HvolN – Низшая теплота сгорания объёмная (МДж/м3) реального газа
 +        * Property.Gost313692021HvolN0 – Низшая теплота сгорания объёмная (МДж/м3) идеального газа
 +        * Property.Gost313692021HvolN0Kcal – Низшая теплота сгорания объёмная (ккал/м3) идеального газа
 +        * Property.Gost313692021HvolNKcal – Низшая теплота сгорания объёмная (ккал/м3) реального газа
 +        * Property.Gost313692021IsMethaneByDifference – Метан по разности (0 – нет; 1 – да)
 +        * Property.Gost313692021MeasureTemperature – Температура измерения
 +        * Property.Gost313692021Mm – Молярная масса (кг/кмоль)
 +        * Property.Gost313692021WobbeG – Число Воббе высшее (МДж/м3) реального газа
 +        * Property.Gost313692021WobbeG0 – Число Воббе высшее (МДж/м3) идеального газа
 +        * Property.Gost313692021WobbeG0Kcal – Число Воббе высшее (ккал/м3) идеального газа
 +        * Property.Gost313692021WobbeGKcal – Число Воббе высшее (ккал/м3) реального газа
 +        * Property.Gost313692021WobbeN – Число Воббе низшее (МДж/м3) реального газа
 +        * Property.Gost313692021WobbeN0 – Число Воббе низшее (МДж/м3) идеального газа
 +        * Property.Gost313692021WobbeN0Kcal – Число Воббе низшее (ккал/м3) идеального газа
 +        * Property.Gost313692021WobbeNKcal – Число Воббе низшее (ккал/м3) реального газа
 +        * Property.Gost313692021Z – Коэффициент сжимаемости
 +        * **ФХП по ГОСТ 34704-2020:**
 +        * Property.Gost347042020CM – Метановое число упрощённой смеси
 +        * Property.Gost347042020M – Метановое число газового моторного топлива
 +        * **ФХП по ГОСТ 53367-2009:**
 +        * Property.Gost533672009ButylMercaptanSulphur – Массовая концентрация меркаптановой серы, бутилмеркаптан, мг/м3
 +        * Property.Gost533672009CarbonylSulfideSulphur – Массовая концентрация серы, карбонилсульфид, мг/м3
 +        * Property.Gost533672009EthylMercaptanSulphur – Массовая концентрация меркаптановой серы, этилмеркаптан, мг/м3
 +        * Property.Gost533672009GenericSulphur – Массовая концентрация общей серы, мг/м3
 +        * Property.Gost533672009HydrogenSulphideSulphur – Массовая концентрация серы, сероводород, мг/м3
 +        * Property.Gost533672009IsobutylMercaptanSulphur – Массовая концентрация меркаптановой серы, изобутилмеркаптан, мг/м3
 +        * Property.Gost533672009IsopropylMercaptanSulphur – Массовая концентрация меркаптановой серы, изопропилмеркаптан, мг/м3
 +        * Property.Gost533672009MethylMercaptanSulphur – Массовая концентрация меркаптановой серы, метилмеркаптан, мг/м3
 +        * Property.Gost533672009PropylMercaptanSulphur – Массовая концентрация меркаптановой серы, пропилмеркаптан, мг/м3
 +        * Property.Gost533672009SecButylMercaptanSulphur – Массовая концентрация меркаптановой серы, втор-бутилмеркаптан, мг/м3
 +        * Property.Gost533672009TertButylMercaptanSulphur – Массовая концентрация меркаптановой серы, трет-бутилмеркаптан, мг/м3
 +        * Property.Gost533672009TotalMercaptanSulphur – Суммарная массовая концентрация меркаптановой серы, мг/м3
 +        * Property.Gost533672009CarbonDisulfideSulphur – Массовая концентрация серы, сероуглерод, мг/м3
 +        * Property.Gost533672009DimethylSulfideSulphur – Массовая концентрация серы, диметилсульфид, мг/м3
 +        * Property.Gost533672009MethylEthylSulfideSulphur – Массовая концентрация серы, метилэтилсульфид, мг/м3
 +        * Property.Gost533672009DiethylSulfideSulphur – Массовая концентрация серы, диэтилсульфид, мг/м3
 +        * Property.Gost533672009ThiopheneSulphur – Массовая концентрация серы, тиофен, мг/м3
 +        * **ФХП по ГОСТ 34723-2021:**
 +        * Property.Gost347232021ButylMercaptanSulphur – Массовая концентрация меркаптановой серы, бутилмеркаптан, мг/м3
 +        * Property.Gost347232021CarbonylSulfideSulphur – Массовая концентрация серы, карбонилсульфид, мг/м3
 +        * Property.Gost347232021EthylMercaptanSulphur – Массовая концентрация меркаптановой серы, этилмеркаптан, мг/м3
 +        * Property.Gost347232021GenericSulphur – Массовая концентрация общей серы, мг/м3
 +        * Property.Gost347232021HydrogenSulphideSulphur – Массовая концентрация серы, сероводород, мг/м3
 +        * Property.Gost347232021IsobutylMercaptanSulphur – Массовая концентрация меркаптановой серы, изобутилмеркаптан, мг/м3
 +        * Property.Gost347232021IsopropylMercaptanSulphur – Массовая концентрация меркаптановой серы, изопропилмеркаптан, мг/м3
 +        * Property.Gost347232021MethylMercaptanSulphur – Массовая концентрация меркаптановой серы, метилмеркаптан, мг/м3
 +        * Property.Gost347232021PropylMercaptanSulphur – Массовая концентрация меркаптановой серы, пропилмеркаптан, мг/м3
 +        * Property.Gost347232021SecButylMercaptanSulphur – Массовая концентрация меркаптановой серы, втор-бутилмеркаптан, мг/м3
 +        * Property.Gost347232021TertButylMercaptanSulphur – Массовая концентрация меркаптановой серы, трет-бутилмеркаптан, мг/м3
 +        * Property.Gost347232021TotalMercaptanSulphur – Суммарная массовая концентрация меркаптановой серы, мг/м3
 +
 +        * AssayDate.Year - время измерения, год;
 +        * AssayDate.Month - время измерения, месяц;
 +        * AssayDate.Day - время измерения, день;
 +        * AssayDate.Hour - время измерения, час;
 +        * AssayDate.Minute - время измерения, минута;
 +        * AssayDate.Second - время измерения, секунда;
 +        * AssayDate.UnixTime - время измерения, в формате unix time 32 бита
 +        * AssayType — тип измерения:
 +          * 0 - нормально измерение;
 +          * 1 - градуировка;
 +          * 2 - ручной запуск;
 +          * 3 - отбракованное измерение;
 +          * 4 - контрольное измерение;
 +        * Error.Chromos - код ошибки прибора:
 +          * 1 - перегрев
 +          * 9 - обрыв тсп
 +          * 17 - короткое замыкание тсп
 +          * 37 - сработала защита спирали дтп
 +          * 38 - невозможно идентифицировать термостатируемый объект с ошибкой
 +          * 39 - ошибка кранов - невозможно переключиться
 +          * 40 - ошибка кранов - долгое переключение
 +          * 41 - ошибка кранов - кран заклинило
 +          * 42 - ошибка кранов - непонятный тип крана
 +          * 43 - внутренняя ошибка прибора - сбой ацп температур
 +          * 44 - пропало пламя
 +          * 46 - конфигурация температурных зон прибора не верна.
 +          * 47 - невозможно загрузить из прибора названия всех температурных зон
 +          * 48 - перегрев зоны 0
 +          * 49 - перегрев зоны 1
 +          * 50 - перегрев зоны 2
 +          * 51 - перегрев зоны 3
 +          * 52 - перегрев зоны 4
 +          * 53 - перегрев зоны 5
 +          * 54 - перегрев зоны 6
 +          * 55 - перегрев зоны 7
 +          * 56 - обрыв тсп зоны 0
 +          * 57 - обрыв тсп зоны 1
 +          * 58 - обрыв тсп зоны 2
 +          * 59 - обрыв тсп зоны 3
 +          * 60 - обрыв тсп зоны 4
 +          * 61 - обрыв тсп зоны 5
 +          * 62 - обрыв тсп зоны 6
 +          * 63 - обрыв тсп зоны 7
 +          * 64 - короткое замыкание тсп зоны 0
 +          * 65 - короткое замыкание тсп зоны 1
 +          * 66 - короткое замыкание тсп зоны 2
 +          * 67 - короткое замыкание тсп зоны 3
 +          * 68 - короткое замыкание тсп зоны 4
 +          * 69 - короткое замыкание тсп зоны 5
 +          * 70 - короткое замыкание тсп зоны 6
 +          * 71 - короткое замыкание тсп зоны 7
 +          * 72 - перегрев дополнительной зоны 0
 +          * 73 - перегрев дополнительной зоны 1
 +          * 74 - перегрев дополнительной зоны 2
 +          * 75 - перегрев дополнительной зоны 3
 +          * 76 - перегрев дополнительной зоны 4
 +          * 77 - обрыв тсп дополнительной зоны 0
 +          * 78 - обрыв тсп дополнительной зоны 1
 +          * 79 - обрыв тсп дополнительной зоны 2
 +          * 80 - обрыв тсп дополнительной зоны 3
 +          * 81 - обрыв тсп дополнительной зоны 4
 +          * 82 - короткое замыкание тсп дополнительной зоны 0
 +          * 83 - короткое замыкание тсп дополнительной зоны 1
 +          * 84 - короткое замыкание тсп дополнительной зоны 2
 +          * 85 - короткое замыкание тсп дополнительной зоны 3
 +          * 86 - короткое замыкание тсп дополнительной зоны 4
 +          * 87 - превышено максимальное давление газа
 +          * 89 - плохая сеть 220в
 +          * 90 - невозможно поджечь пламя
 +          * 92 - ошибка связи
 +          * 93 - ошибка связи - данные не поступают
 +          * 94 - ошибка связи - ошибка crc
 +          * 96 - ошибка связи - параметр не записан
 +          * 100 - ожидание подачи газа
 +        * Error.Bot - код ошибки автоматизации:
 +          * 2 - проверка целостности не пройдена
 +          * 3 - аварийное завершение работы
 +          * 4 - неисправен индикатор водорода
 +          * 5 - превышение концентрации водорода
 +          * 6 - неисправен индикатор температуры пробы
 +          * 7 - температура пробы ниже заданной
 +          * 8 - неисправен индикатор расхода
 +          * 9 - пониженный уровень расхода пробы
 +          * 10 - ошибка Анализатора FAS-W
 +          * 11 - выход из диапазона измерения Анализатора FAS-W
 +          * 12 - ошибка Преобразователя КОНГ-Прима-2М
 +          * 13 - выход из диапазона измерения Преобразователя КОНГ-Прима-2М
 +          * 14 - градуировка неудачна
 +          * 15 - ошибка датчика давления МИДА-15
 +          * 16 - выход из диапазона измерения датчика давления МИДА-15
 +          * 17 - ошибка датчика давления КОРУНД-Дх-001MRS
 +          * 18 - выход из диапазона измерения датчика давления КОРУНД-Дх-001MRS
 +          * 19 - ошибка датчика
 +          * 20 - выход из диапазона измерения датчика
 +          * 100 - Некорректное измерение
 +          * 101 - Ошибка пробоподготовки при выполнении задания
 +          * 102 - Ошибка запроса внешних параметров при выполнении задания
 +          * 103 - Полученное при выполнении задания количество файлов хроматограмм меньше числа каналов
 +          * 104 - Отсутствуют привязанные к потоку методы и каналы
 +          * 105 - Отсутствует активная градуировка для данного потока и вида зависимости
 +          * 106 - Ошибка подключения к прибору
 +          * 107 - Ошибка при переключении потока при выполнении задания
 +          * 200 - Аварийное выключение из-за достижения установленного % от НКПР водорода
 +        * Device.Mode - код режима прибора:
 +          * 0 - прибор остановлен
 +          * 1 - подготовка к анализу
 +          * 2 - подготовка к поджигу
 +          * 3 - осуществляется поджиг
 +          * 4 - установка заданных температур и газов
 +          * 5 - прибор готов к записи
 +          * 6 - анализ (T1)
 +          * 7 - анализ (V12)
 +          * 8 - анализ (T2)
 +          * 9 - анализ (V23)
 +          * 10 - анализ (T3)
 +          * 11 - анализ (V34)
 +          * 12 - анализ (T4)
 +          * 13 - анализ (V45)
 +          * 14 - анализ (T5)
 +          * 15 - остановка анализа
 +          * 16 - продувка
 +          * 17 - охлаждение прибора
 +          * 18 - резерв (устар.)
 +          * 19 - ошибка в приборе
 +          * 20 - ожидание ввода дозатором
 +          * 21 - ожидание подачи газа
 +        * Signal.Alarm - контроль времени цикла анализа:
 +          * 0 — успешно
 +          * 1 — ошибка
 +        * AvgFromDate.Year - дата и время начала усреднения, год;
 +        * AvgFromDate.Month - дата и время начала усреднения, месяц;
 +        * AvgFromDate.Day - дата и время начала усреднения, день;
 +        * AvgFromDate.Hour - дата и время начала усреднения, час;
 +        * AvgFromDate.Minute - дата и время начала усреднения, минута;
 +        * AvgFromDate.Second - дата и время начала усреднения, секунда;
 +        * AvgFromDate.UnixTime - дата и время начала усреднения, в формате unix time 32 бита
 +        * AvgToDate.Year - дата и время окончания усреднения, год;
 +        * AvgToDate.Month - дата и время окончания усреднения, месяц;
 +        * AvgToDate.Day - дата и время окончания усреднения, день;
 +        * AvgToDate.Hour - дата и время окончания усреднения, час;
 +        * AvgToDate.Minute - дата и время окончания усреднения, минута;
 +        * AvgToDate.Second - дата и время окончания усреднения, секунда;
 +        * AvgToDate.UnixTime - дата и время окончания усреднения, в формате unix time 32 бита
 +        * Mixture.N.Ro — абсолютная плотность градуировочной смеси. Вместо N указывается номер активного баллона (на текущий момент 1 или 2)
 +        * Mixture.N.HmolN – низшая теплота сгорания градуировочной смеси
 +        * Mixture.N.<Имя_компонента> — молярная доля компонента в градуировочной смеси. Возможные имена компонентов аналогичны Component.*
 +
 +
 +
 +Пример:
 +<code xml>
 +?xml version="1.0" encoding="utf-8" ?>
 +<modbus xsi:noNamespaceSchemaLocation="http://kb.has.ru/_media/dev:modbus.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 +  <group flow="0">
 +    <command addr="0"   data_type="Coil"  name="InCommand.StartAnalysis"/>
 +    <command addr="1"   data_type="Coil"  name="InCommand.StartCalibration"/>
 +    <command addr="2"   data_type="Coil"  name="InCommand.PreparationComplete"/>
 +    <command addr="3"   data_type="Coil"  name="InCommand.PreparationError"/>
 +    <command addr="0"   data_type="Input" name="OutCommand.StartPreparation"/>
 +    <command addr="1"   data_type="Input" name="OutCommand.AnalysisEnded"/>
 +
 +    <param addr="1"   data_type="InputRegister" reverse_bytes="false" reverse_words="false" type="ui16"  name="Error.Chromos" />
 +    <param addr="2"   data_type="InputRegister" reverse_bytes="false" reverse_words="false" type="ui16"  name="Error.Bot" />
 +    <param addr="49"  data_type="InputRegister" reverse_bytes="false" reverse_words="true"  type="float" name="Property.Gost313692008WobbeV" />
 +    <param addr="70"  data_type="InputRegister" reverse_bytes="false" reverse_words="true"  type="float" name="Component.methane" />
 +    <param addr="72"  data_type="InputRegister" reverse_bytes="false" reverse_words="true"  type="float" name="Component.difference" />
 +    
 +    <param addr="200" data_type="InputRegister" reverse_bytes="false"  reverse_words="true" type="float"  name="Mixture.1.Ro" />
 +    <param addr="202" data_type="InputRegister" reverse_bytes="false"  reverse_words="true" type="float" operator="avg_hour"  name="Component.propane" />
 +    <param addr="204" data_type="InputRegister" reverse_bytes="false"  reverse_words="true" type="float" operator="avg_day"  name="Component.neopentane" />
 +    <param addr="206" data_type="InputRegister" reverse_bytes="false"  reverse_words="false" type="ui16" operator="avg_hour"  name="AvgFromDate.Hour" />
 +    <param addr="207" data_type="InputRegister" reverse_bytes="false"  reverse_words="false" type="ui16" operator="avg_day"  name="AvgFromDate.Day" />
 +    <param addr="208" data_type="InputRegister" reverse_bytes="false"  reverse_words="false" type="ui16" operator="avg_day"  name="AvgToDate.Minute" />
 +    <param addr="212" data_type="InputRegister" reverse_bytes="false"  reverse_words="true" type="float"  name="Mixture.1.HmolN" />
 +    <param addr="214" data_type="InputRegister" reverse_bytes="false"  reverse_words="true" type="float"  name="Mixture.1.n_butane" />
 +    ...
 +  </group>
 +  ...
 +</modbus>
 +</code>
 +
 +
 +===== Mapper =====
 +
 +Файл: C:\ChromosFlow\mapper.xml
 +
 +Настройки  аналоговых и цифровых выводов через дополнительные устройства с modbus интерфейсом
 +
 +   * device - исполнительное устройство с интерфейсом modbus TCP
 +      * host - адрес устройства
 +      * port - порт устройства
 +      * id - номер устройства
 +
 +   * group - группа параметров
 +      * addr - стартовый адрес
 +      * flow - номер потока, нумерация от 0
 +      * type - тип параметра
 +         * rs420 - пересчет по формуле <m 16>{(val - vmin) * {(dmax - dmin) / (vmax - vmin)} + dmin}</m>
 +      * dmin - минимальное значение выходного параметра
 +      * dmax - максимальное значение выходного параметра
 +      * vmin - минимальное значение параметра
 +      * vmax - максимальное значение параметра
 +      * operator - операция над всеми компонентами в группе
 +         * sum - сложение всех компонентов
 +      * data_type - тип регистра для записи
 +         * HoldingRegister
 +         * Coil
 +
 +   * param - параметр
 +      * dmin - минимальное значение выходного параметра
 +      * dmax - максимальное значение выходного параметра
 +      * vmin - минимальное значение параметра
 +      * vmax - максимальное значение параметра
 +      * name - наименование параметра, такие же как и в карте modbus (поддерживаются Component.*, Property.*, Signal.*, Error.*)
 +
 +Пример:
 +<code xml>
 +<?xml version="1.0" encoding="utf-8" ?>
 +<mapper xsi:noNamespaceSchemaLocation="http://kb.has.ru/_media/dev:mapper.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 +    <device host="192.168.255.1" port="502">
 +        <group addr="0" flow="0" type="rs420">
 +            <param vmin="35" vmax="45" name="Component.isobutylene" />
 +            <param vmin="50" vmax="60" name="Component.iso_butane" />
 +        </group>
 +        <group addr="2" flow="1" type="rs420" dmin="0" dmax="65535" vmin="0.1" vmax="0.7" operator="sum">
 +            <param name="Component.propane" />
 +            <param name="Component.propylene" />
 +            <param name="Component.propadiene" />
 +        </group>
 +     </device>
 +     <device host="192.168.255.2" port="502">
 +        <group addr="0" flow="0" data_type="Coil">
 +           <param vmin="0" vmax="1" name="Error.Chromos" />
 +           <param vmin="0" vmax="1" name="Error.Bot" />
 +       </group>
 +    </device>
 +</mapper>
 +</code>