Repo auto make wiki page - ☆Wiki Sandbox - НТЦ 'Комплексные Системы'

D8-Monitor - Руководство администратора

Описание

Универсальная программа для просмотра произвольной информации, собранной системой Дельта, в виде мнемосхем, таблиц, графиков, отчетов и т.д.
Для запуска требуется исходная конфигурация мнемосхем - набор файлов с описаниями мнемосхем, параметров подключений к базам данных, шаблонов отчетов, параметров отображения и пр.
Может открывать и просматривать конфигурацию мнемосхем из файловой системы или из веб-сервера в интернет.

Файлы настройки программы и командная строка

Настройки для программы мониторинга хранятся в нескольких местах, делятся на два типа: ключи запуска и xml-теги

Ключи запуска

Представляют собой набор настроек программы в виде пар имя-значение, загружаются непосредственно при запуске программы мониторинга или веб-версии мониторинга. Задавать ключи можно в нескольких местах:
  • Файл d8_monitor.xml в папке программы. Xml-файл вида:
    <config>
        <add key="Ключ1" value="Значение_ключа1"/>
        <add key="Ключ2" value="Значение_ключа2"/>
        <!--....-->
    </config>
    
  • Блок настроек приложения в файле web.config (для веб-версии):
    <configuration>
        <appSettings>
            <add key="Ключ1" value="Значение_ключа1"/>
            <add key="Ключ2" value="Значение_ключа2"/>
            <!--....-->
        </appSettings>
    </configuration>
    
  • Ключи командной строки при запуске приложения мониторинга в виде:
    d8_monitor.exe Ключ1=Значение_ключа1 Ключ2=Значение_ключа2
    

Любые ключи можно задавать как в командной строке, так и в файлах, но командная строка имеет приоритет.

Полный список ключей запуска

  • configlist - файл со списком конфигураций мнемосхем. Указывается относительно исполняемого файла d8_monitor.exe. Если расширение имени указанного файла равно «.ini», то загружает конфигурацию мнемосхем в старом формате. Если параметр не указан, позволит выбрать файл конфигурации мнемосхем через интерфейс пользователя;
  • offline - оффлайн режим работы без подключения к базам данных (true — включен, false — выключен). Если указана пустая строка, то позволит выбрать через галочку в окне авторизации;
  • index - индекс конфигурации мнемосхем, которую нужно загружать из файла списка конфигураций мнемосхем (целое число, начиная с нуля), если параметр не указан, позволит выбрать конфигурацию мнемосхем через интерфейс пользователя;
  • autologin - автоматически подключаться к базам данных, используя предоставленный в файле конфигурации логин и пароль (true — включен, false — выключен). Если указана пустая строка, то позволит выбрать через галочку в окне авторизации;
  • login - имя пользователя для подключения к базам данных (если не указано, программа будет использовать windows-авторизацию, хранить в этом файле небезопасно);
  • password - пароль для подключения к базам данных (хранить в этом файле небезопасно);
  • defaultlogin - имя пользователя для подключения к базам данных, тоже что login, но позволяет сохранять логин, введенный пользователем
  • defaultpassword - пароль для подключения к базам данных, тоже что password, но позволяет сохранять пароль, введенный пользователем
  • allowsavepassword - разрешить пользователю сохранять логин и пароль в программе, показывать галочку Запомнить пароль (true - включен, false - выключен, по умолчанию включен)
  • timestamplocal - выводить локальное время компьютера в интерфейсе пользователя (true — включен, false — выключен, по умолчанию включен);
  • excelhideauth - после генерации отчета в формате Microsoft Excel, затереть имя и пароль пользователя (true - включен, false - выключен, по умолчанию включен);
  • forceautoprovider - игнорировать указанный в строках подключения провайдер данных подставлять автоматически определенный;
  • showdataservererrors - показывать сообщения об ошибках подключения к датасерверу (true — включен, false — выключен, по умолчанию включен);
  • localdatasource - будет подключаться к базам данных на локальной машине, вместо указанных в конфигурации. Если указана пустая строка, то позволит выбрать через галочку в окне авторизации;
  • autoreload - автоматически перезагружать мнемосхемы при изменении исходного файла (true — включен, false — выключен, по умолчанию выключен);
  • expertmode - будет отображаться дополнительная информация и настройки;
  • plugin - загрузить библиотеку плагинов из указанного файла, можно указать несколько таких параметров;
  • timeout - таймаут подключения к базам данных по умолчанию в секундах;
  • proxyaddr - адрес прокси-сервера (например, 192.168.0.1 или proxy.local);
  • proxyport - порт прокси-сервера (целое число от 1 до 65535);
  • proxylogin - логин прокси-сервера;
  • proxypassword - пароль прокси-сервера;
  • statefolder - папка, в которую будет сохраняться текущее состояние программы, по умолчанию папка пользователя если начинается с «%exe%», то задается относительно исполняемого файла;
  • confirmexit - запрашивать подтверждение для выхода из программы;
  • fullscreen - всегда запускать в полноэкранном режиме (true, false)
  • nostate - не сохранять состояние сессий пользователя (true, false)
  • openurl - при запуске открыть указанную мнемосхему, сохраненные не открывать (имя файла мнемосхемы)
  • single - не запускать вторую копию программы (true, false)
  • autohidecursor - скрывать курсор в полноэкранном режиме (true, false)
  • newloadgraphleftclick - в старой конфигурации при нажатии на ссылку с диспетческим графиком выдавать новую версию диспетчерских графиков
  • hideerrortimeout - автоматически скрыть окно с сообщением об ошибке через указанное кол-во секунд (секунды, если -1 то никогда не скрывать, если 0 то вообще не показывать ошибки)
  • savestateonclose - сохранять состояние при закрытии программы (true, false, по умолчанию - true). если поставить false, то в главном меню появится кнопка для ручного сохранения состояния
  • lang - язык вывода интерфейса и мнемосхем (например, английский: en, по умолчанию: ru)
  • disableoldreports - отключить экселовские отчеты старой версии
  • prevconfiglist - предыдущий файл со списком конфигураций мнемосхем, чтобы можно было загрузить предыдущее состояние мониторинга после перемещения файла конфигураций на новое место

Пример файла конфигурации d8_monitor.xml

<? xml version="1.0" encoding="utf-8" ?>
<config>
<option key="configlist" value="mydata/monitor0.configlist"/>
<option key="autoreload" value="true"/>
<option key="autologin" value="false"/>
<option key="login" value="delta"/>
<option key="password" value=""/>
</config>

Xml-теги

Различные модули программы мониторинга используют xml-теги для загрузки (и сохранения) настроек. Для каждого модуля существует xml-тег с определенным уникальным названием. Формат данных внутри xml-тега - произвольный, зависит от модуля. Списки xml-тегов могут располагаться в нескольких местах:
  • Файл d8_monitor.options.xml в папке программы:
    <Options>
      <!-- Настройки модуля1 -->
      <Tag1 Param1="Значение_параметра" Param2="Значение_параметра">
        <SubTag2 Param3="Значение_параметра" />
        <!--...-->
      </Tag1>
      <!-- Настройки модуля2 -->
      <Tag2>
        <!--...-->
      </Tag2>
    </Options>
    
  • Файл d8_monitor.options.xml в папке пользователя:
    <Options>
      <!-- Настройки модуля1 -->
      <Tag1 Param1="Значение_параметра" Param2="Значение_параметра">
        <SubTag2 Param3="Значение_параметра" />
        <!--...-->
      </Tag1>
      <!-- Настройки модуля2 -->
      <Tag2>
        <!--...-->
      </Tag2>
    </Options>
    
  • Блок настроек внутри файла конфигурации (*.configlist), тег <ConfigList><Config><Options>
    <ConfigList>
      <!-- Блок конфигурации мониторинга -->
      <Config>
        <!--...-->
        <Options>
          <!-- Настройки модуля1 -->
          <Tag1 Param1="Значение_параметра" Param2="Значение_параметра">
            <SubTag2 Param3="Значение_параметра" />
            <!--...-->
          </Tag1>
          <!-- Настройки модуля2 -->
          <Tag2>
            <!--...-->
          </Tag2>
        </Options>
        <!--...-->
      </Config>
    </ConfigList>
    

Модули могут загружать настройки из любого места, в том числе из нескольких, в зависимости от реализации. Формат данных внутри xml-тега от места хранения не зависит. Теги, загруженные из файла d8_monitor.options.xml в папке программы, считаются настройками по умолчанию, а из файла d8_monitor.options.xml в папке пользователя - пользовательскими.

Ссылки для перехода (свойство DEST)

Задает ссылку перехода или иное действие при клике левой кнопкой по элементу. В зависимости от начальных символов.

cmd:// - запустить внешнее приложение

Команда запуска любого внешнего приложения через стандартную системную оболочку. Если внутри строки имя и путь исполняемого файла содержат пробелы, то требуется его указывать в двойных кавычках, аргументы для вызываемой программы - без кавычек. При запуске текущий каталог устанавливается на каталог с запущенным исполняемым файлом программы мониторинга (это можно изменить дополнительными параметрами).

Дополнительные параметры запуска можно указать в виде url сразу после имени файла после знака вопроса (?), например:

cmd://asdf.exe?доп.параметр1=знач1&доп.параметр2=знач2 /K dsdfgd

Дополнительные параметры запуска:

  • UseDestFolder - если указать true, то при запуске текущий каталог устанавливается на каталог с указанным файлом относительно исполняемого файла программы мониторинга, если false, то при запуске текущий каталог устанавливается на каталог с запущенным исполняемым файлом программы мониторинга (по умолчанию false)

Подстановки:

  • $(FILEROOT) - корневой каталог текущей конфигурации системы Дельта
  • $(USERID) - имя текущего пользователя, под которым был выполнен вход в программу мониторинга
  • $(PASSWORD) - пароль текущего пользователя, под которым был выполнен вход в программу мониторинга
  • $(WINAUTH) - если текущий пользователь использовал windows-авторизацию для входа в программу мониторинга, то заменяется на YES, иначе NO
  • $(PARAMID) - идентификатор параметра (SID) привязанного к элементу

http://, https://, ftp:// - открыть файл по ссылке

Открывается файл по указанной ссылке, системным приложением, установленным по умолчанию. Работают подстановки, такие же как в cmd://

Остальные значения - переход по ссылке мониторинга

Если строка не начинается ни с одной из указанных выше последовательностей, то будет выполнен переход на мнемосхему по ссылке мониторинга.

Формат ссылок мониторинга:

[+-][доменый_путь|] Имя_и_путь_файла_мнемосхемы [?аргументы]

Где:
  • Знак + (плюс) - если в начале ссылки указан плюс, то ссылка будет открыта в новом окне
  • Знак - (минус) - если в начале ссылки указан минус, то ссылка будет открыта в новой вложенной панели
  • доменый_путь - необязательный путь поддомена открываемой мнемосхемы.
    Должен быть отделен вертикальной чертой | от имени файла.
    Может содержать несколько поддоменов, каждое имя домена так же разделяется вертикальной чертой.
    Если в качестве имени домена указать две точки .. , то будет выбран родительский домен
  • Имя_и_путь_файла_мнемосхемы - имя и путь файла мнемосхемы относительно папки со слайдами, указанной в домене конфигурации.
    • Если начинается с решетки #, то откроется мнемосхема со встроенным диалогом (не из файла)
    • Если расширение файла равно .plist, то вместо мнемосхемы откроется список параметров по имени и пути файла относительно папки со списками параметров, указанной в домене конфигурации.
  • ?аргументы - необязательные аргументы, передаваемые отрываемой мнемосхеме или диалогу. Должны отделяться от имени файла знаком ?. Указываются в формате URL принятом для http-ссылок:
    аргумент1=значение1&аргумент2=значение2

Общие шаблоны диалогов

Шаблоном для Отчетов, Графиков или Таблиц параметров является xml-файл с сохраненными предварительно заполненными полями для соответствующих диалогов. При создании Отчетов, Графиков или Таблиц параметров из такого шаблона, поля будут автоматически заполнены сохраненными в файле значениями. Общие шаблоны видны всем пользователям конфигурации мониторинга при создании Отчетов, Графиков или Таблиц параметров в подразделе Общие шаблоны.

Файлы общих шаблонов нужно размещать в папке конфигурации, подпапке DialogTemplates, в соответствующих подпапках:

  • Конфигурация
    • DialogTemplates
      • ReportDialog - для Отчетов
      • DiagramDialog - для Графиков
      • ParamListDialog - для таблиц параметров

Имя подпапки DialogTemplates можно переопределить в настройках путей домена конфигурации через свойство DialogTemplatesPath (тег ConfigList) или через список папок ресурсов (тег Resorces)

Для мониторинга загруженного из старой версии конфигурации работают шаблоны в старом формате, размещенные в папке Reports\smart

Стили элементов (свойство Mapping)

Стиль элемента - это шаблон со значениями свойств элемента, который накладывается при определенном значении привязанного параметра. При наложении стиля значения свойств из шаблона копируются в значения свойств элемента.

Для каждого элемента можно задать список из нескольких стилей. При каждом изменении текущего значения параметра весь список стилей последовательно проверяется, если значение параметра соответствует значению, указанному в стиле, то происходит наложение шаблона из этого стиля.

Если значение параметра не соответствует ни одному стилю, то предыдущие значения свойств элемента не восстанавливаются, но есть возможность сохранить текущее значение свойства элемента в шаблоне стиля сразу после загрузки мнемосхемы.

Условия стилей элементов

Для стиля задается набор условий для проверки значения привязанного параметра. Проверяются только текущие значения (от датасервера). При наличии нескольких условий, все они должны выполняться для наложения стиля (логическое "И"), но, если указан флаг MapAnd = "false", то достаточно выполнения только одного условия (логическое "ИЛИ"). Если в стиле задать свойство ParamIndex, то для проверки значения будет использовать параметр из списка Params элемента, иначе параметр Param. При задании в элементе свойства AutoCreateComputeParam=false при присвоении свойства Params не будет создаваться вычисляемый параметр.

Тег NodeStyle
  • MapValueStart - значение параметра должно быть больше или равно указанному, если также сброшен флаг MapStartInclusive = "false" то только больше (по умолчанию больше или равно)
  • MapValueEnd - значение параметра должно быть меньше или равно указанному, если также сброшен флаг MapEndInclusive = "false" то только меньше (по умолчанию меньше или равно)
  • MapStartInclusive - если флаг равен true, то значение параметра должно быть больше или равно указанному в условии MapValueStart, иначе только больше (по умолчанию true), действует только совместно с MapValueStart
  • MapEndInclusive - если флаг равен true, то значение параметра должно быть меньше или равно указанному в условии MapValueEnd, иначе только больше (по умолчанию true), действует только совместно с MapValueEnd
  • MapState - битовая маска на состояние State параметра, хотя бы один бит из установленных в маске должен быть установлен в параметре
  • MapXState - битовая маска на расширенное состояние XState параметра, хотя бы один бит из установленных в маске должен быть установлен в параметре
  • MapStateBasic - битовая маска на базовое состояние BasicState параметра, хотя бы один бит из установленных в маске должен быть установлен в параметре
  • MapXStateZero - расширенное состояние XState параметра должно быть равно нулю, условие проверяется независимо от MapXState
  • MapDefaut - если равно true, то условие выполняется всегда (стиль будет накладываться при любом значении параметра)
  • MapAnd - если равно true, то стиль будет накладываться только при выполнении всех указанных условий (логическое "И"), иначе достаточно выполнения только одного условия (логическое "ИЛИ"), по умолчанию MapAnd равно true
  • MapInvert - если равно true, то стиль будет накладывать только если условия не выполняются (логическое отрицание)
  • MapValue - значение параметра должно строго совпадать, условие заменяет значения MapValueStart, MapValueEnd, MapStartInclusive, MapEndInclusive, не является отдельным условием, используется для сокращения
  • MapValueMask - значение параметра проверяется по битовой маске (Логическое И, должна вернуть ненулевое значение)
  • ParamIndex - индекс в списке привязанных параметров узла Params, по которому будет тестироваться соответствие (-1 значит не из списка, по умолчанию -1)

Шаблон из стиля элемента, восстановление предыдущего значения свойства

Шаблон из стиля накладывается на элемент при выполнении условий, указанных для стиля. Шаблон - это список тегов Set с именами и значениями свойств (внутри тега NodeStyle). Вместо значения свойства можно указать Revert=true, тогда сразу после загрузки мнемосхемы (событие XmlLoaded) в шаблоне будет сохранено текущее значение свойства элемента. Таким образом при каждом наложении шаблона стиля будет восстанавливаться значение на момент загрузки мнемосхемы.

Тег Set:
  • Name - имя свойства элемента
  • Value - значение которое будет присвоено свойству элемента
  • Revert - если указать true, то сразу после загрузки мнемосхемы в шаблоне будет сохранено текущее значение свойства элемента (вместо Value)

Звук сигнализации

Можно задать звуковой файл, который будет проигрываться для звуковой сигнализации. Понимает только файлы формата *.wav. Задать можно несколькими способами, в порядке убывания приоритета:
  • Свойство элементов AlarmSoundFile. У стандартных элементов типа текстовая надпись, картинка и т.д. можно задать свойство AlarmSoundFile в котором вписать имя звукового файла-ресурса. Файл будет искать относительно папки ресурсов типа "Sounds"
  • Можно задать имя звукового файла сразу для всей конфигурации мониторинга в файле *.configlist. Тег Options > Monitor, атрибут AlarmSoundFile. В атрибут вписать имя звукового файла-ресурса. Файл будет искать относительно папки ресурсов типа "Sounds"
  • Если в папке ресурсов приложения мониторинга "InternalResources" найдет файл с именем AlarmSound.wav, то будет проигрывать его
  • Если ни один из выше перечисленных вариантов не сработал, будет проигрывать стандартный звук

Если возникнет ситуация когда на мнемосхеме присутствует несколько элементов с разными звуками сигнализации, то будет проигрываться звук у которого название файла длиннее (больше при сравнении строк)
У элементов типа Label, Image и т.п. есть свойство PlayAlarmSound, при значении true звук тревоги будет проигрываться без привязки параметров.
Свойство AlarmSoundFile есть так же у диспетчерских графиков и таблицы тревог
Свойство AlarmSoundFile у элементов можно менять через стили или скриптами, звук будет перезапускаться

Вывод на мнемосхемах текущих значений параметров из дата-сервера

В системе Дельта вся информация передается и хранится в виде отдельных "Параметров", соответствующих неким реальным физическим величинам, например, напряжению генератора или давлению пара. Каждый параметр имеет уникальный строковый идентификатор (SID), обычно в виде: ИМЯ_СЕРВЕРА.Номер_параметра, по которому программа мониторинга может запрашивать текущие значения в системе Дельта.

Текущее значение параметра состоит из:
  • Value - величина (обычно число), непосредственно значение некой физической (любой) величины на определенный момент времени
  • Timestamp - момент времени измерения величины
  • State - флаги состояния, дополнительно содержат состояние измеряемого объекта, сервера базы данных и пр. на момент измерения. Например:
    • флаги достоверности
    • флаги ошибок оборудования
    • флаги квитирования тревог и т.д.
  • XState - расширенное состояние, целое число, может содержать любую дополнительную информацию в зависимости от параметра

Кроме текущего значения, параметры системы Дельта имеют соответствующую нормативно-справочную информацию (НСИ), такую как: единицы измерения, аварийные уставки, тип параметра и др. Большинство параметров являются аналоговыми - имеющими тип величины double, или дискретными - имеющими тип int

Для отображения текущих значений параметра на мнемосхеме, в виде строки, в программе мониторинга используется элемент Label (текстовое поле). Строковый идентификатор отображаемого (другое название - связанного) параметра задается в свойстве Param. Может отображаться различная информация, в зависимости от значения форматной строки и других свойств элемента Label. Может отображаться не только текущее значение, время, флаги состояния, но и любая информация из НСИ.

Отображать значения параметров из списка Params в элементе Label нельзя.

Свойства элемента Label, влияющие на содержание выводимой строки:
  • Param - отображаемый параметр системы Дельта (задается на мнемосхеме строковым идентификатором (SID))
  • Text - форматная строка. Задает какую информацию выводить в строке (см. описание форматной строки). Например: {0.0}кг означает вывод текущей величины с одним знаком после запятой и последующей подписью "кг". Если свойство не задано, то выводится значение параметра с единицами измерения из НСИ для аналоговых параметров и название дискретного состояния для дискретных
  • ValueScale - число, на которое умножается значение параметра при выводе (по умолчанию 1)
  • ValueShift - число, которое прибавляется к значению параметра при выводе (по умолчанию 0)

Кроме того, при изменении текущего значения параметра, происходит наложение шаблона Стиля элемента, что может влиять на отображение значений (см. Стили)

Использование вычисляемых параметров и скриптов для вывода значений параметров

Элемент Label (текстовое поле) имеет несколько свойств-обработчиков скриптов, а также свойство Params - исходные параметры, которые можно использовать в скриптах для вывода различных вычисляемых значений, например:
  • суммы значений параметров
  • количество параметров с определенным значением и пр.
Свойства элемента Label для обращения к параметрам системы Дельта:
  • Params - свойство задает список исходных параметров для вычисления скриптами отображаемого в элементе значения. Задается на мнемосхеме списком строковых идентификаторов (SID). При задании этого свойства, отображаемый параметр элемента (свойство Param) заменяется на виртуальный вычисляемый параметр, только если не задано свойство AutoCreateCumputeParam=false
  • Param - содержит виртуальный отображаемый параметр, если задано свойство Params (только если не задано свойство AutoCreateComputeParam=false). Из скриптов можно произвольно менять текущее значение этого параметра и таким образом выводить различные вычисляемые значения в элементе

Одновременно задавать на мнемосхеме свойства Param и Params нельзя, (только если не задано свойство AutoCreateComputeParam=false). Логика вывода значения параметра не зависит от того, какой отображаемый параметр (свойство Param) задан в элементе - виртуальный или реальный.

Для обращения из скриптов к текущим значениям параметров используется класс ParamBinding, который представляет собой один параметр системы Дельта с текущим значением, НСИ. Экземпляры можно получить из свойств Param и Params элемента.

Свойства и методы класса ParamBinding для вычислений в скриптах:
  • Value - величина текущего значения (object), содержит число типа double для аналоговых параметров и число типа int для дискретных. Может быть null если значение еще не задано (не пришло от дата-сервера). Может так же содержать значения других типов в зависимости от параметра
  • State - флаги состояния текущего значения (D8ParamValueState). Содержит различные флаги типа достоверность значения, превышение уставок, квитирования событий и т.д.
  • XState - расширенное состояние текущего значения (int). Может использоваться для передачи любой дополнительной информации
  • Timestamp - момент времени текущего значения (DateTime), значение в UTC. Если текущее значение не задано (не пришло от дата-сервера), то равно DateTime.MinValue
  • SetData(object pValue, D8ParamValueState pState, int pXState, DateTime pTimestamp) - установить текущее значение вычисляемого параметра. Можно использовать для задания значений вычисляемых параметров на мнемосхеме
  • SID - строковый идентификатор параметра
  • LocalName - название параметра
  • ParamType - тип параметра
  • ... - другие свойства НСИ
Обработчики событий элемента Label для вычислений в скриптах:
  • Compute - вызывается при изменении текущего значения одного из связанных параметров из списка Params. В нем можно, например, пересчитать и установить текущее значение вычисляемого параметра Param
  • ParamChanged - вызывается при изменении значения связанного параметра Param. Вызывается как для вычисляемых параметров, так и для обычных от дата-сервера. В нем можно, например, вывести любой текст, в соответствии со значением параметра, установив свойство Text.
  • XmlLoaded - вызывается один раз сразу после открытия пользователем мнемосхемы в программе мониторинга. Можно провести произвольную инициализацию

Пример вычисления суммы параметров:

Мнемосхема:

<Label Params="ABC.1;ABC.2;ABC.3" Compute="N.C.ComputeSum" ... >

Скрипты:

public void ComputeSum(Node sender, EventArgs e)
{
  Label l=(Label)sender;
  double sum = 0;
  foreach(var p in l.Params)
  {
    sum += Convert.ToDouble(p.Value);
  }
  l.Param.SetData(sum, 0, 0, DateTime.UtcNow);
}

Использование свойства AutoCreateComputeParam и свойств Param и Params

От значения свойства AutoCreateComputeParam зависит логика работы свойств Param и Params.

Если свойство AutoCreateComputeParam = true (по умолчанию), то при присвоении свойства Params вместо Param подставляется пустой вычисляемый параметр. Чтобы вывести значение в элементе мнемосхемы, нужно использовать скрипт, который вычисляет значения и записывает их в этот вычисляемый параметр.

Если свойство AutoCreateComputeParam = false, то свойства Param и Params не влияют друг на друга при присвоении. В элементе мнемосхемы будет отображаться значение параметра Param. Список Params при этом можно использовать независимо либо для наложения шаблонов элементов либо для скриптов. В шаблонах элементов при задании условий наложения можно использовать свойство ParamIndex для указания того, что условие относится к параметру из списка Params.

Дата и время

<Options>
  <Interface>
    <TimeZoneOptions Zone="msk">
      <Zones>
        <TimeZoneItem Name="msk" Caption="Москва" Bias="3:0:0" DaylightSaving="false" />
        <TimeZoneItem Name="asd" Caption="Зона 2" Bias="-4:30:0" DaylightSaving="true" />
        <TimeZoneItem Name="zzz" Caption="ZZZ" Code="D8 Russia (UTC+05:00)" />
      </Zones>
    </TimeZoneOptions>
</Options>

Квитирование параметров в скриптах

У класса ParamBinding есть метод SendEventAck() отправки квитирования в датасервер. Для проверки необходимости квитирования можно проверить флаги в свойстве параметра BasicState (см. пример). Пользователь должен иметь соответствующие разрешения для квитирования.

// Для некоторого списка  параметров
foreach (var t in pParams)
{
    // Проверить необходимость квитирования
    if ((t.BasicState & D8ParamValueStateBasic.Event) != 0 
    && (t.BasicState & D8ParamValueStateBasic.EventAcked) == 0)
        // Отправить квитирование в датасервер
        t.SendEventAck();
}

Изменение значений параметров в скриптах

У класса ParamBinding есть метод SendData() отправки значений в датасервер. Пользователь должен иметь соответствующие разрешения для изменений значений.

// Для некоторого списка  параметров
foreach (var t in pParams)
{
    // Время отправляемого отсчета 
    DateTime tTimestamp = DateTime.UtcNow;

    // Отправить значение в датасервер
    // Указывается значение, флаги состояния, расширенное состояние, время отсчета
    // Для дискретных параметров
    t.SendData((int)0x01FE0000, D8ParamValueState.vsNormal, 0, tTimestamp);
    // Для аналоговых параметров
    t.SendData((double)1.2345, D8ParamValueState.vsNormal, 0, tTimestamp);
}

Ручной ввод

Для включения ручного ввода в контекстном меню элементов мнемосхемы (таких как картинка, текст, гисторамма и т.д.) нужно задать свойство ManualInputParam. После этого в контекстном меню появится пункт Ручной ввод, при выборе которого пользователем откроется диалог ручного ввода и можно будет отправлять произвольные значения в датасервер. Конечный параметр может не совпадать с параметром, отображаемым элементом.

Свойства ручного ввода:
  • ManualInputParam - конечный параметр ручного ввода, в который будет отправлено значение
  • ManualInputSourceParam - исходный параметр ручного ввода, если задан, то в диалог ручного ввода будет подставлено текущее значение из этого параметра. Можно задать такой же параметр как конечный.
  • ManualInputMax - максимальное значение, которое разрешено для ввода в диалоге ручного ввода
  • ManualInputMin - минимальное значение, которое разрешено для ввода в диалоге ручного ввода
  • ManualInputFlags - настройки диалога ручного ввода:
    • ValueInput - поле ввода значения,
    • StateInput - поле ввода состояния,
    • XStateInput - поле ввода расширенного состояния,
    • TimestampInput - поле ввода времени значения,
    • ReadAlways - всегда считывать значение при открытии диалога,
    • BlockButton - кнопка отправки блокировки,
    • UnblockButton - кнопка отправки разблокировки,
    • SendSaveFlag - выставлять флаг Save при отправке,
    • BlockValueButton - кнопка отправки блокировки со значением,
    • EventAckButton - кнопка отправки квитирования,
    • ExtFlagsInput - поле ввода служебных флажков (Calc, Save, Check),
      Значение по умолчанию: ValueInput+StateInput+XStateInput+TimestampInput+ReadAlways
На мнемосхеме можно сделать отдельную панель с полями ручного ввода и кнопкой Отправить. Для этого на мнемосхему нужно добавить элемент ManualInputDialog, а в этот диалог добавить элементы ввода значений и кнопки. Достаточно добавить одно поле ввода значения и кнопку отправить. Можно сделать элементы скрытыми и прописать в них фиксированные значения.
Элементы:
  • ManualValueInput - поле ввода числового значения
  • ManualTimestampInput - поле метки времени значения, если не добавить, то будет использовано текущее время
  • ManualStateInput - флаги состояния
  • ManualXStateInput - флаги расширенного состояния параметра
  • ManualInputCommit - кнопка отправки введенного значения
  • ManualInputFetch - кнопка считывания текущего значения, будет подставлено в поля ввода
  • ManualInputEventAck - кнопка отправки квитирования
  • ManualInputExtFlag - поле ввода служебных флажков (Calc, Save, Check)
  • ManualInputBlock - кнопка отправки блокировки
  • ManualInputBlockValue - поле ввода значения блокировки
  • ManualInputUnblock - кнопка отправки разблокировки (отмены блокировки)

Генератор тайлов для карты MapView

Элемент карта MapView имеет встроенный генератор тайлов из исходных картинок.
Если указать для слоя имя исходного файла картинки SourcePicture, то элемент сам сгенерирует тайлы по этой картинке.
Можно задать список из нескольких исходных картинок чтобы для разных уровней увеличения были разные картинки. Для каждой картинки списка задается максимальный и минимальный уровень увеличения на котором она будет использоваться.
Генерация запускается только если указать атрибут AutoGenerateTiles=true и если время исходного файла картинки больше времени уже существующего файла с первым тайлом для каждой исходной картинки (x0y0zN).
Максимальным возможным уровнем увеличения картинки считается тот, на котором картинка полностью помещается в пикселах по ширине и высоте (размер уровня Z в пикселах равен pow(2,Z)*256, где 256 - размер тайла)
Если картинка не полностью закрывает уровень увеличения, то тайлы, не попавшие в картинку генерироваться не будут, а тайлы частично попавшие в картинку будут докрашиваться сплошным белым цветом. Цвет можно задать атрибутом FillColor.
Пути до исходных картинок указываются относительно папки ресурсов картинок (Images), путь до конечной папки с тайлами указывается относительно папки ресурсов карты (MapView), также можно указывать абсолютные пути.
Конечную папку для тайлов нужно создавать (и если надо очищать) вручную перед запуском генерации, уже существующие тайлы будут перезаписаны.
Если генерация будет прервана, то для перезапуска потребуется удалить файл с первым тайлом для каждой исходной картинки.

Пример файла конфигурации

<!-- Нужно указать AutoGenerateTiles -->
<MapView AutoGenerateTiles="true">
  <Layers>
<!-- По одной картинке, упрощенный вариант -->
     <MapLayer TileFolder="MapViewTilesMerged" SourcePicture="Images\LMZ16384.png" />
<!-- По одной или нескольким картинкам, подробный вариант -->
     <MapLayer TileFolder="MapViewTilesMerged">
       <SourcePictures>
         <item MinZoom="0" MaxZoom="2" SourcePicture="Images\LMZ1024.png" FillColor="Red" />
         <item MinZoom="3" MaxZoom="3" SourcePicture="Images\LMZ2048.png" />
         <item MinZoom="4" MaxZoom="4" SourcePicture="Images\LMZ4096.png" />
         <item MinZoom="5" MaxZoom="5" SourcePicture="Images\LMZ8192.png" />
         <item MinZoom="6" MaxZoom="6" SourcePicture="Images\LMZ16384.png" />
       </SourcePictures>
     </MapLayer>
  </Layers>
</MapView>

Таблица с историей тревог AlarmLogTable

Элемент AlarmLogTable для отображения списка истории тревог на мнемосхемах.
По умолчанию отображает историю тревог для всех дискретных параметров из всех инстансов баз данных за 1 сутки.
Можно задать фильтры по каким параметрам отображать тревоги.
Тревогой считается появление флага Event и только для дискретных - изменение значения параметра. Сравниваются два последовательных значения параметра. Например, если флаг Event в предыдущем значении сброшен а в текущем установлен, то это считается началом тревоги. Если флаг Event в текущем значении установлен, а предыдущего значения нет - то считается тревогой с неопределенным временем.
Активные тревоги отображаются красным фоном, неактивные белым, квитированные желтым.
Для получения списка тревог может использовать динамические и статические значения.

Свойства:

  • FilterParamType - какой тип параметров использовать
    • Null - все
    • Analog - аналоговые
    • Discrete - дискретные (по умолчанию)
  • InstanceNames - использовать параметры только из указанных инстансов. Список имен инстансов через точку с запятой
  • Params - список параметров которые использовать. Если задан, то остальные фильтры параметров не используются
    Можно задать атрибут со списком SID параметров через точку с запятой, например:
    Params="INST.1;INST.2"
    или списком элементов, например:
    <Params>
        <ParamBinding Param="INST.1" />
        <ParamBinding Param="INST.2" />
    </Params>
    
  • HideUnknownAlarms - не показывать тревоги время возникновения, которых неизвестно: true, false (по умолчанию false)
  • Endings - выводить также время завершения тревог отдельной строкой
  • DataMixing - режим смешивания при отображении статических и динамических данных
    • Mixed - смешанные статические и динамические данные (по умолчанию)
    • Static - только статические данные
    • Dynamic - только динамические данные
  • DeviceName - фильтр параметров по названию устройства (свойство из НСИ)
  • GroupNames - фильтр параметров по названию группы (свойство НСИ). Можно одну группу или список через точку с запятой.
  • Interval - интервал на который запрашивать архивные значения.
    Задается в виде Шаг,N
    где:
    • Шаг:
      • Seconds - секунды
      • Minutes - минуты
      • Hours - часы
      • Days - дни
    • N - кол-во шагов
      Например: Minutes,3 - это три минуты
  • AlarmMode - режим работы сигнализации при появлении тревог в таблице
    • Off - выключена (по умолчанию)
    • On - включена без звука
    • SoundOn - включена со звуком
  • AlarmSoundFile - имя файла для звуковой сигнализации

Чем отличаются ключи login и defaultlogin в файле настроек мониторинга

defaultlogin - это новая версия логина по умолчанию. Тоже что и login, но позволяет пользователю сохранить введенные им логин и пароль (появляется галка для сохранения пароля в диалоге входа).
По умолчанию не показывает в диалоге входа сам этот логин, вместо этого отображается пустая строка. Пустая строка вместо логина при входе подменяется на defaultlogin.

ParamBase и ParamBaseSrc и Числа с плюсом в идентификаторах параметров и свойства

Можно задавать идентификаторы параметров относительно некоторого базового числа, указывая, сколько надо прибавить чтобы получить номер параметра.
Для этого на мнемосхеме пишется в качестве идентификатора параметра: ИМЯ_ИСТАНСА.+Число, где Число - произвольное число, прибавляемое к базовому.
Базовое число задается двумя свойствами корневого элемента мнемосхемы типа Slide:
  • ParamBase - прибавляется к Числу с плюсом в идентификаторе параметра
  • ParamBaseSrc - вычитается из суммы ParamBase и Числа с плюсом в идентификаторе параметра

Свойство ParamBaseSrc должно быть обязательно задано (можно 0), иначе ParamBase не прибавляется.

Например:

ParamBase: 2000
ParamBaseSrc: 1000
Идентификатор: INST.+1020

Получим итоговый идентификатор: INST.2020 (1020+2000-1000)

Свойство ParamBase нужно задавать как аргумент в адресе слайда через знак вопроса, например:

slide1.slide?ParamBase=2000

Связанные свойства PropertyBindings

Связанные свойства позволяют при загрузке определенных свойств узла мнемосхемы (или при присвоении свойства через метод UserNode.Set) скопировать это же значение в другой узел мнемосхемы. Свойства задаются списком PropertyBindings. Для каждой привязки задается название исходного свойства, название конечного узла и имя конечного свойства.

Например:

<PropertyBindings>
<!--
* ParentProperty - название исходного свойства
* ChildName - название конечного узла
* ChildProperty - имя конечного свойства
-->
  <PropertyBinding ParentProperty="Param" ChildName="Имя_детского_узла" ChildProperty="Param"/>
  <PropertyBinding ParentProperty="Caption" ChildName="Имя_детского_узла2" ChildProperty="Hint"/>
</PropertyBindings>

По имени конечного узла ChildName ищется первый попавшийся узел с таким именем внутри детских узлов.
Если добавить приставку ../ перед именем детского узла, то поиск перейдет на уровень выше (родительский узел)
Можно указать несколько таких приставок.
Если указать только приставку ../, то конечным узлом будет родительский узел

Если конечным свойством является любой список, то можно в названии конечного свойства приписать две квадратные скобки [].
Тогда, при записи в исходное свойств, копия значения будет добавлена в список.
Если в скобках указать еще произвольное целое число [123], то будет произведено присвоение только одного элемента списка по индексу
Если указать в названии конечного свойства две скобки [] и в качестве исходного свойства - список, то все элементы исходного списка будут скопированы

Например:

  <PropertyBinding ParentProperty="Param" ChildName="Имя_детского_узла" ChildProperty="Params[]" />
  <PropertyBinding ParentProperty="Param" ChildName="../../Имя_детского_узла" ChildProperty="Params[123]" />
  <PropertyBinding ParentProperty="Params" ChildName="../" ChildProperty="Params[]" />

Резервные серверы мониторинга

Можно настроить несколько резервных серверов, между которыми мониторинг будет переключаться для получения данных, таких как архивы значений, текущие значения параметров датасервера, НСИ, файлы мнемосхем и т.д.
Весь набор резервных серверов называется резервным узлом. Обозначается номерами 1,2,3 и т.д. При переключении на другой резервный узел все инстансы баз данных в программе мониторинга одновременно переключаются на соответствующие резервные серверы.
Так же переключается загрузка файлов ресурсов мнемосхем и др. источники данных (которые могут использоваться в плагинах)
Переключение может выполняться автоматически при потере связи или по запросу пользователя, по нажатию кнопки.

Резервные сервера задаются:
  • Для инстансов баз данных резервные серверы указываются при задании строки подключения. Через две вертикальные черты || указываются несколько резервных строк подключения. Другой вариант - внутри строки подключения вместо адреса сервера можно указать несколько резервных сервером через одну вертикальную черту |.
  • Для файлов ресурсов мнемосхем при задании корневой папки домена в атрибуте RootPath можно указать несколько резервных путей через символ вертикальной черты |.
  • Для адреса файла списка конфигураций при запуске программы мониторинга (в файле d8_monitr.xml или командной строке или в диалоге добавления списка конфигураций) можно указать несколько резервных файлов через символ вертикальной черты |.

Настройки количества и параметры резервных узлов и автоматического переключения
указываются в файле списка конфигураций мониторинга, для каждой конфигурации отдельно. Пример:

<ConfigList ...>
    <Config ...>
        <Options>
            <Monitor>
                <ConnectionClustering ClusterNodesCount="2" AutoFailover="false" />
<!-- Тег с настройками переключения резервных серверов 
* ClusterNodesCount - количество резервных узлов на которые можно переключаться. Под резервным узлом понимается набор
    серверов для архивных баз, НСИ, датасерверов, файловых серверов и т.д. Переключение производится на весь набор сразу
* AutoFailover - автоматическое переключение на резервный узел при пропадании связи (true, false). По умолчанию false
-->
            </Monitor>
        </Options>   
    </Config>
</ConfigList>

Настройка вида паспорта параметра

Можно настраивать какие строки отображаются в таблице паспорта параметра.
Задается заголовок (текст в первой колонки) и форматная строка (вторая колонка) в которой можно вывести произвольно отформатированные значения из НСИ параметра. Форматирование происходит аналогично текстовым элементам Label на мнемосхемах (см. описание форматных строк). Задается список из произвольного количества строк. Для каждой строки можно задать фильтр по типу параметра - строка будет отображаться только для параметров указанного типа.

Настройки задаются в тегах Options в файле d8_monitor.options.xml в папке пользователя либо d8_monitor.options.xml в папке программы либо в файле списка конфигураций мониторинга configlist внутри тега Config (см. тег Options). Пример:

<Options>
<!-- Настройки вида паспорта параметра -->
  <ParamInfoOptions>
<!-- Список рядов таблицы -->
    <Rows>
<!-- Строка таблицы, где атрибуты:
     * Caption - текст в первой колонке
     * Text - форматная строка во второй колонке
     * ParamType - тип параметра, если не указано, то для всех (Analog, Discrete, Vector, Record)
-->
      <item Caption="Состояние" Text="0x{StateNumber:X} {State}" ParamType="Analog"/>
      <item Caption="Расширенное состояние" Text="{XState}"/>
      <item Caption="Числовое значение" Text="{Value:g}"/>
      <item Caption="SID" Text="{SID}"/>
      <item Caption="ID" Text="{LocalId}"/>
      <item Caption="Глобальный идентификатор" Text="0x{GlobalId:X}"/>
<!-- ... -->
    </Row>
  </ParamInfoOptions>
</Options>

Пример настроек по умолчанию:

<ParamInfoOptions>
<Rows>
<item Caption="Состояние" Text="0x{StateNumber:X} {State}"/>
<item Caption="Расширенное состояние" Text="{XState}"/>
<item Caption="Числовое значение" Text="{Value:g}"/>
<item Caption="SID" Text="{SID}"/>
<item Caption="ID" Text="{LocalId}"/>
<item Caption="Глобальный идентификатор" Text="0x{GlobalId:X}"/>
<item Caption="Дискретные значения" Text="{ScaleStates}"/>
<item Caption="Локальное имя" Text="{Name}"/>
<item Caption="Название шкалы" Text="{ScaleName}"/>
<item Caption="Единицы измерения" Text="{Units}"/>
<item Caption="Минимум шкалы" Text="{Min}"/>
<item Caption="Максимум шкалы" Text="{Max}"/>
<item Caption="Тип параметра" Text="{ParamType}"/>
<item Caption="Подтип параметра" Text="{Subtype}"/>
<item Caption="Краткое имя" Text="{ShortName}"/>
<item Caption="Краткое имя" Text="{ShortName}"/>
<item Caption="Дополнительное имя" Text="{AdditionalName}"/>
<item Caption="Устройство" Text="{DeviceName}"/>
<item Caption="AKS" Text="{AKS}"/>
<item Caption="Апертура на запись" Text="{DeltaSave}"/>
<item Caption="Апертура на пересылку" Text="{DeltaSend}"/>
<item Caption="Верхняя предупредительная уставка" Text="{RangeUp1}"/>
<item Caption="Верхняя аварийная уставка" Text="{RangeUp2}"/>
<item Caption="Нижняя предупредительная уставка" Text="{RangeDown1}"/>
<item Caption="Нижняя аварийная уставка" Text="{RangeDown2}"/>
<item Caption="Верх достоверности" Text="{ValidHigh}"/>
<item Caption="Низ достоверности" Text="{ValidLow}"/>
<item Caption="Идентификатор группы" Text="{GroupId}"/>
<item Caption="Название группы" Text="{GroupName}"/>
<item Caption="Интервал времени" Text="{Interval}"/>
<item Caption="Шаг" Text="{Step}"/>
<item Caption="Опции" Text="{Options}"/>
<item Caption="Идентификатор устройства" Text="{DeviceId}"/>
</Rows>
</ParamInfoOptions>

Настройка всплывающих подсказок на мнемосхемах для элементов с привязанными параметрами

Можно настроить какая информация о параметре выводится в всплывающей подсказке на мнемосхемах при наведении мыши для элементов с привязанными параметрами. По умолчанию выводится SID параметра и текущее значение.
Задается текст поделенный на строки. Для каждой строки задается текстовый заголовок и форматная строка в которой можно вывести произвольно отформатированные значения из НСИ параметра. Форматирование происходит аналогично текстовым элементам Label на мнемосхемах (см. описание форматных строк).
Задается список из произвольного количества строк. Для каждой строки можно задать фильтр по типу параметра - строка будет отображаться только для параметров указанного типа.

Следует отметить что если для элемента на мнемосхеме задано свойство Hint, то оно будет отображаться вместо указанного (в нем тоже можно использовать форматные строки)

Настройки задаются в тегах Options в файле d8_monitr.options.xml в папке пользователя либо d8_monitr.options.xml в папке программы либо в файле списка конфигураций мониторинга configlist внутри тега Config (см. тег Options). Пример:

<Options>
<!-- Настройки всплывающих подсказок -->
  <ParamHintOptions>
<!-- Список строк подсказки -->
    <Rows>
<!-- Строка подсказки, где атрибуты:
     * Caption - текст заголовка произвольный
     * Text - форматная строка (отображается после заголовка через двоеточие)
     * ParamType - тип параметра, если не указано, то для всех (Analog, Discrete, Vector, Record)
-->
      <item Caption="Состояние" Text="0x{StateNumber:X} {State}" ParamType="Analog"/>
      <item Caption="Расширенное состояние" Text="{XState}"/>
      <item Caption="Числовое значение" Text="{Value:g}"/>
      <item Caption="SID" Text="{SID}"/>
      <item Caption="ID" Text="{LocalId}"/>
      <item Caption="Глобальный идентификатор" Text="0x{GlobalId:X}"/>
<!-- ... -->
    </Row>
  </ParamHintOptions>
</Options>

Настройка вывода НСИ в контекстном меню на мнемосхемах для элементов с привязанными параметрами

Можно настроить вывод информации о параметре в контекстное меню на мнемосхемах (по клику правой кнопки мыши) для элементов с привязанными параметрами.
Как это было в предыдущей версии программы мониторинга. Выводится информация в виде дополнительных пунктов контекстного меню. По умолчанию отключено.
Задается список пунктов. Для каждого пункта задается текстовый заголовок и форматная строка в которой можно вывести произвольно отформатированные значения из НСИ параметра. Форматирование происходит аналогично текстовым элементам Label на мнемосхемах (см. описание форматных строк).
Для каждого пункта можно задать фильтр по типу параметра - будет отображаться только для параметров указанного типа.

Настройки задаются в тегах Options в файле d8_monitr.options.xml в папке пользователя либо d8_monitr.options.xml в папке программы либо в файле списка конфигураций мониторинга configlist внутри тега Config (см. тег Options). Пример:

<Options>
<!-- Настройки контекстного меню -->
  <ParamContextMenuOptions>
<!-- Список пунктов -->
    <Rows>
<!-- Пункт меню, где атрибуты:
     * Caption - текст заголовка произвольный
     * Text - форматная строка (отображается после заголовка через двоеточие)
     * ParamType - тип параметра, если не указано, то для всех (Analog, Discrete, Vector, Record)
-->
      <item Caption="Состояние" Text="0x{StateNumber:X} {State}" ParamType="Analog"/>
      <item Caption="Расширенное состояние" Text="{XState}"/>
      <item Caption="Числовое значение" Text="{Value:g}"/>
      <item Caption="SID" Text="{SID}"/>
      <item Caption="ID" Text="{LocalId}"/>
      <item Caption="Глобальный идентификатор" Text="0x{GlobalId:X}"/>
<!-- ... -->
    </Row>
  </ParamContextMenuOptions>
</Options>

Блок Options настроек модулей программы мониторинга

Различные модули программы мониторинга используют теги внутри этого блока для загрузки настроек.
Для каждого модуля существует тег с определенным уникальным названием. Формат данных внутри тега - произвольный, зависит от модуля.

Блок может располагаться в следующих файлах:
  • В файле d8_monitor.options.xml в папке пользователя
  • В файле d8_monitor.options.xml в папке с исполняемыми файлами программы
  • В файле списка конфигураций мониторинга внутри тега Config
Это сделано чтобы можно было гибко задавать настройки на трех уровнях группировки пользователей.
  • Для всех пользователей всех конфигураций - в папке с исполняемыми файлами программы
  • Для пользователей конкретной конфигурации - в файле конфигурации
  • Для отдельных пользователей - в папке пользователя

Большинство модулей загружает сначала из папки программы, потом из файла конфигурации, потом из папки пользователя. Если настройки заданы в нескольких местах, то последние загруженные по очереди имеют приоритет и перезаписывают предыдущие.

Синтаксис строки форматирования

Строки форматирования используются для вывода значений параметров системы Дельта в строковом виде на мнемосхемах.
Строка форматирования состоит из текста, который может содержать токены первого уровня в фигурных скобках. Токены первого уровня могут содержать токены второго уровня в квадратных скобках. Каждый токен состоит из имени и опциональной строки форматирования токена, которая указывается через двоеточие. После имени токена второго уровня можно указать вопросительный знак - тогда при отсутствии соответствующего объекта токен будет проигнорирован.
В начале строки форматирования токена 1-го или 2-го уровней можно указать токены задания часового пояса и/или культуры в угловых скобках.

...{L1TOKEN:...[L2TOKEN:...]...[L2TOKEN:...]...}...{L1TOKEN}...

Каждый токен L1 и L2 имеет следующий формат

{L1TokenName}
{L1TokenName:TokenFormat}
или
[L2TokenName]
[L2TokenName?]
[L2TokenName:TokenFormat]

TokenFormat = [<TZ:TimezoneSpec>][<LC:CultureSpec>][FormatSpec]

Примеры:

P = {ValueUnit:0.###}, S = {StateNumber:X08}h, T = {LocalTimestamp:<TZ:USER><LC:en>hh:mm:ss dd.MM.yy}
{Value:[0], [1:0.00]?}
{Value:width=[Width:0.00], height=[Height:0.00]}

Токены

Токены для полей данных (ID8Vqt)

  • Value - только значение
  • ValueXls ¹ - только значение (для совместимости с xls-отчетами)
  • XState - расширенное состояние (int)
  • State - состояние (D8ParamValueState)
  • StateNumber ¹ - состояние (uint)
  • Quality - качество значения (float)
  • Timestamp - метка времени (DateTime)
  • LocalTimestamp ¹ - метка времени, сконвертированная в локальный часовой пояс пользователя (DateTime)
  • UtcTimestamp ¹ - метка времени в UTC (DateTime)
  • LocalTimestampOA ¹ - метка времени, сконвертированная в локальный часовой пояс пользователя, приведенная к формату времени OLE (double)
  • BasicState ¹ - базовое состояние (D8ParamValueStateBasic)
  • BasicStateNumber ¹ - базовое состояние (uint)

Токены для полей НСИ (ID8ParamInfo и ID8ParamInfoBase)

  • LocalId - локальный илентификатор (int)
  • InstanceId - тдентификатор подсистемы (short)
  • GlobalId - глобальный идентификатор (long)
  • SID - строковый идентификатор
  • ParamType - тип параметра (D8ParamType)
  • Subtype - подтип параметра (D8ParamSubtype)
  • Name - имя
  • ShortName - краткое имя
  • AdditionalName - дополнительное имя
  • AKS - код
  • Interval - интервал значений (D8TimeInterval)
  • Step - шаг значений (D8TimeStep)
  • Options - флаги параметра (D8ParamOptions)
  • Units - единицы измерения
  • AggregatedUnits - единицы измерения после агрегирования
  • AggregationCoef - коэффициент агрегирования
  • ScaleName - название шкалы
  • ScaleStates - перечень пар значение/имя всех дискретных состояний
  • Min - минимум шкалы (double)
  • Max - максиму шкалы (double)
  • ValidLow - низ достоверности (double)
  • ValidHigh - верх достоверности (double)
  • RangeUp1 - первая уставка вверх (double)
  • RangeUp2 - вторая уставка вверх (double)
  • RangeDown1 - первая уставка вниз (double)
  • RangeDown2 - вторая уставка вниз (double)
  • DeltaSave - апертура архивирования (double)
  • DeltaSend - апертура пересылки (double)
  • DeviceName - название устройства
  • DeviceId - идентификатор устройства (int)
  • DeviceChannel ¹ - канал устройства (string)
  • GroupName - название группы
  • GroupId - идентификатор группы (int)

Остальные токены

  • ValueUnits ¹ - значение и единицы измерения

Файлы конфигурации (проекта) мониторинга

Файл списка конфигураций мониторинга configlist

Главный открываемый для просмотра пользователем файл конфигурации мониторинга. Содержит ссылки на все файлы или каталоги для просмотра конфигурации мониторинга: мнемосхемы, картинки, шаблоны отчетов и т.д. Содержит настройки подключений к базам данных, различные настройки просмотра, авторизации. Файл может содержать список из нескольких конфигураций мониторинга.

<ConfigList Caption="Заголовок" AuthorizationConstr="Строка_подключения">
<!-- Корневой тег списка конфигураций

* Caption - заголовок списка конфигураций для пользователя
* AuthorizationConstr - строка подключения к SQL-серверу для авторизации пользователей. 
    Если указана, то будет запрашивать и проверять уровень доступа по имени и паролю, 
    указанному пользователем при входе в программу мониторинга
-->

    <Config Caption="Заголовок" CategoryFilter="cat1,cat2" SlideTree="monitor0.slidetree" 
        ParamListTree="monitor0.plisttree" ...>
<!-- Конфигурация мониторинга, может быть несколько конфигураций в одном файле, 
    в программе мониторинга указание на конфигурацию из списка происходит по порядковому 
    номеру тега Config, начиная с 0

* Caption - заголовок конфигурации для пользователя
* CategoryFilter - список категорий пользователей, через запятую, которым разрешен доступ 
    к данной конфигурации
* SlideTree - имя файла с деревом мнемосхем, путь задается относительно папки с файлом 
    списка конфигураций (или абсолютный)
* ParamListTree - имя файла с деревом списков параметров, путь задается относительно папки
    с файлом списка конфигураций (или абсолютный)

Атрибуты, задающие пути до папок с файлами различных ресурсов:

* RootPath - задает корневую папку конфигурации (новая версия). Все пути для разных типов ресурсов задаются относительно этой корневой папки. По умолчанию папка с файлом списка конфигураций.
    Можно задавать несколько путей через символ вертикальной черты | для переключения на резервные серверы.
* ImagePath - путь до папки ресурсов с файлами изображений (тип Images), путь задается 
    относительно корневой папки конфигурации (или абсолютный). По умолчанию корневая папка 
    конфигурации (RootPath)
* SlidePath - путь до папки ресурсов с файлами мнемосхем (тип Slides), путь задается 
    относительно корневой папки конфигурации (или абсолютный). По умолчанию корневая папка 
    конфигурации (RootPath)
* ParamListPath - путь до папки ресурсов с файлами списков параметров (тип ParamLists), 
    путь задается относительно корневой папки конфигурации (или абсолютный). 
    По умолчанию корневая папка конфигурации (RootPath)
* TemplatePath - путь до папки ресурсов с файлами шаблонов элементов мнемосхем (тип Templates), путь задается корневой папкой конфигурации (или абсолютный).
    По умолчанию подпапка Templates внутри корневой папки конфигурации (RootPath)
* ReportPath - путь до папки ресурсов с файлами шаблонов экселовских отчетов (тип Reports),
    путь задается относительно корневой папки конфигурации (или абсолютный). 
    По умолчанию подпапка Reports внутри корневой папки конфигурации (RootPath)
* DialogTemplatePath - путь до папки ресурсов с общими шаблонами диалогов 
    (тип DialogTemplates), путь задается относительно корневой папки конфигурации
    (или абсолютный). По умолчанию подпапка DialogTemplates внутри корневой папки конфигурации (RootPath)
* DocumentationPath - путь до папки ресурсов с файлами документации пользователя 
    (тип Documentation), путь задается относительно корневой папки конфигурации 
    (или абсолютный). 
    По умолчанию подпапка Documentation внутри корневой папки конфигурации (RootPath)
* LocalizationPath - путь до папки ресурсов с таблицами локализации (тип Localization),
    путь задается относительно корневой папки конфигурации (или абсолютный). 
    По умолчанию подпапка Localization внутри корневой папки конфигурации (RootPath)
* DefaultResourcePath - путь до папки прочих ресурсов по умолчанию (все, кроме вышеперечисленных), будет использоваться для загрузки всех прочих типов ресурсов для
    которых пути не заданы, путь задается относительно относительно корневой папки конфигурации (или абсолютный). По умолчанию корневая папка конфигурации (RootPath)

Также пути папок ресурсов можно задавать через тег Resources (см. ниже)
-->

    <Instances>
<!-- Список инстансов (экземпляров) баз данных. Настройки для каждого экземпляра задаются 
    через вложенный тег Instance.
Вместо Instance может использоваться тег соответствующий названию плагина, заданному 
    посредством атрибута класса (сборки .net) PluginDeltaBindingInstance -->

        <Instance Name="ИМЯ1" ClientllConstr="Строка_подключения" 
            ParamDbConstr="Строка_подключения" 
            ArchiveDbConstr="Строка_подключения" 
            PreserveParamDbConstr="true/false" 
            PreserveArchiveDbConstr="true/false" 
            PreserveClientllConstr="true/false" 
            Type="Тип_класса_плагина" ...>
<!-- Один инстанс (экземпляр) базы данных. Содержит строки подключения и другие настройки
    для связи с базами данных. Для аттрибутов тега (см. ниже), содержащих строки подключения, можно задавать
    несколько значений разделенных через две вертикальные черты || для переключения на резервные серверы.
    Внутри строки подключения, в поле адреса сервера, можно указать несколько адресов разделенных через одну
    вертикальную черту | для переключения на резервные серверы
* Name - имя экземпляра инстанса. Используется далее везде в программе мониторинга (в том
    числе пользователем) для обращения к данному инстансу
* ClientllConstr - строка подключения к датасерверу системы Дельта.
* PreserveClientllConstr - если равно true, то будет сохранять имя и пароль пользователя,
    указанные в строке подключения ClientllConstr, 
    иначе заменит на имя и пароль введенный пользователем
* ArchiveDbConstr - строка подключения к SQL-серверу с архивными значениями системы Дельта
* PreserveArchiveDbConstr - если равно true, то будет сохранять имя и пароль пользователя,
    указанные в строке подключения ArchiveDbConstr,
    иначе заменит на имя и пароль введенный пользователем
* ParamDbConstr - строка подключения к SQL-серверу с нормативно-справочной информацией 
    (НСИ) системы Дельта
* PreserveParamDbConstr - если равно true, то будет сохранять имя и пароль пользователя, 
    указанные в строке подключения ParamDbConstr,
    иначе заменит на имя и пароль введенный пользователем
* Type - название типа класса плагина (сборки .net) который будет использоваться вместо
    стандартного. Плагиновые инстансы могут использовать xml-атрибуты, отличающиеся от 
    стандартных
* File - имя файла настроек инстанса старой версии (*.ini) из которого загружать параметры, 
    если также указать атрибут LoadGraph="true", то будет загружать из блока для 
    диспетчерских графиков (этого файла). 
    Путь задается относительно папки с файлом списка конфигураций (или абсолютный)
* LoadGraph - если равно true, и задано имя файла настроек инстанса старой версии (*.ini)
    атрибутом File, то будет загружать параметры из блока для диспетчерских графиков 
    (того файла)
-->
        <!-- ... еще теги Instance ...-->
        <Typename1 Name="ИМЯ3" ... />
<!-- Вместо Instance может использоваться тег соответствующий названию плагина,
заданному посредством атрибута класса (сборки .net) PluginDeltaBindingInstance.
Плагиновые инстансы могут использовать xml-атрибуты, отличающиеся от стандартных
-->

    </Instances>

    <Resources>
<!-- Список путей до папок с файлами различных ресурсов. Для каждого типа ресурсов путь 
    задается через вложенный тег Resource. Все пути задаются относительно корневой папки конфигурации (RootPath) (или абсолютно). 
    Также пути папок ресурсов можно задавать атрибутами тега Config (см. выше) -->

        <Resource Type="Тип_ресурса1" Path="Путь_до_ресурса1" />
<!-- Тег Resource задает путь для одного из типов ресурсов
* Type - название типа ресурса. Тип ресурса может быть стандартный, а может быть произвольный.
    Стандартные типы: 
        Images - картинки,
        Slides - мнемосхемы,
        ParamLists - списки параметров,
        Templates - шаблоны элементов,
        ReportTemplates - шаблоны генератора отчетов,
        DialogTemplates - общие шаблоны диалогов,
        Documentation - файлы документации пользователя,
        Localization - таблицы локализации
* Path - путь до папки ресурсов, путь задается относительно корневой папки конфигурации (RootPath) (или абсолютный)
-->
        <Resource Type="Тип_ресурса2" Path="Путь_до_ресурса2" />
        <!-- ... еще теги Resource ... -->
    </Resources>

    <Domain Name="Имя" ...>
<!-- Задает домен ресурсов конфигурации мониторинга. Домен содержит набор путей 
    до папок с файлами различных ресурсов. Можно задать несколько тегов Domain. 
    Домены могут содержать вложенные поддомены (через вложенный тег Domain) образуя 
    древовидную структуру. При этом основной набор путей до папок (заданный в теге 
    Config или Config &gt; Resources) считается корневым доменом. 
    Домены предназначены для создания объединенных конфигураций мониторинга, 
    состоящих из нескольких вложенных, ресурсы которых располагаются в разных местах
    файловой системы. Пути до ресурсов вложенных доменов задаются по иерархии
    относительно родительских доменов. Пути до папок ресурсов можно задавать атрибутами тега или через
    вложенный тег Resources (см. ниже).

* Name - имя домена

Атрибуты, задающие пути до папок с файлами различных ресурсов:

* RootPath - задает корневую папку домена (новая версия). Все пути для разных
    типов ресурсов задаются относительно этой корневой папки. А сама папка задается относительно корневой папки родительского домена.
     По умолчанию корневая папка родительского домена.
    Можно задавать несколько путей через символ вертикальной черты | для переключения на резервные серверы.
* ImagePath - путь до папки ресурсов с файлами изображений (тип Images), путь задается 
    относительно корневой папки домена (или абсолютный). По умолчанию корневая папка 
    домена (RootPath)
* SlidePath - путь до папки ресурсов с файлами мнемосхем (тип Slides), путь задается 
    относительно корневой папки домена (или абсолютный). По умолчанию корневая папка 
    домена (RootPath)
* ParamListPath - путь до папки ресурсов с файлами списков параметров (тип ParamLists), 
    путь задается относительно корневой папки домена (или абсолютный). 
    По умолчанию корневая папка домена (RootPath)
* TemplatePath - путь до папки ресурсов с файлами шаблонов элементов мнемосхем (тип Templates),
    путь задается корневой папки домена (или абсолютный).
    По умолчанию подпапка Templates внутри корневой папки домена (RootPath)
* ReportPath - путь до папки ресурсов с файлами шаблонов экселовских отчетов (тип Reports),
    путь задается относительно корневой папки домена (или абсолютный). 
    По умолчанию подпапка Reports внутри корневой папки домена (RootPath)
* DialogTemplatePath - путь до папки ресурсов с общими шаблонами диалогов 
    (тип DialogTemplates), путь задается относительно корневой папки домена 
    (или абсолютный). По умолчанию подпапка DialogTemplates внутри корневой папки домена (RootPath)
* DocumentationPath - путь до папки ресурсов с файлами документации пользователя 
    (тип Documentation), путь задается относительно корневой папки домена 
    (или абсолютный). 
    По умолчанию подпапка Documentation внутри корневой папки домена (RootPath)
* LocalizationPath - путь до папки ресурсов с таблицами локализации (тип Localization),
    путь задается относительно корневой папки домена (или абсолютный). 
    По умолчанию подпапка Localization внутри корневой папки домена (RootPath)
* DefaultResourcePath - путь до папки прочих ресурсов по умолчанию (все, кроме 
    вышеперечисленных), будет использоваться для загрузки всех прочих типов ресурсов для
    которых пути не заданы, путь задается относительно относительно корневой папки домена 
    (или абсолютный). По умолчанию корневая папка домена (RootPath)
* Path - (устаревшая, теперь используется RootPath) задает все вышеперечисленные пути сразу, так же, как они задаются по умолчанию,
    но вместо папки с файлом списка конфигураций используется указанная.
    Не будет влиять на пути, которые будут задаваться после другими атрибутами или 
    тегом Resources.
    Путь задается относительно папки с файлом списка конфигураций (или абсолютный). 

Также пути папок ресурсов можно задавать через тег Resources (см. ниже)

* SlideTree - имя файла с деревом мнемосхем, путь задается относительно папки с файлом    
    списка конфигураций (или абсолютный)
* ParamListTree - имя файла с деревом списков параметров, путь задается относительно 
    папки с файлом списка конфигураций (или абсолютный)

-->

        <Resources>
<!-- Список путей до папок с файлами различных ресурсов. Для каждого типа ресурсов путь
    задается через вложенный тег Resource. 
    Подробнее см. выше описание тега Resources внутри тега Config, только все пути задаются 
    относительно корневой папки домена (или абсолютно). -->
            <Resource Type="Тип_ресурса1" Path="Путь_до_ресурса1" />
            <Resource Type="Тип_ресурса2" Path="Путь_до_ресурса2" />
            <!-- ... еще теги Resource ... -->
        </Resources>
    </Domain>

    <Options>
<!-- Блок настроек модулей программы мониторинга.
Различные модули программы мониторинга используют теги внутри этого блока для загрузки настроек.
Для каждого модуля существует тег с определенным уникальным названием. 
    Формат данных внутри тега - произвольный, зависит от модуля.
-->
    </Options>

    <ConfigObjects>
<!-- Блок загрузки объектов-плагинов конфигурации. Каждый тег задает один экземпляр 
    объекта-плагина. Экземпляры создаются при загрузке конфигурации мониторинга.
    Обычно объекты-плагины конфигурации используются для обработки/обмена информацией 
    в фоновом режиме
-->
        <Type1 Name="имя_экземпляра1" ...> ... </Type1>
<!-- Название тега должно соответствовать названию, заданному посредством атрибута класса
    (сборки .net) PluginConfigObject.
* Name - имя экземпляра, может использоваться скриптами внутри конфигурации для обращения
    к экземпляру объекта-плагина.
Тег может содержать произвольные атрибуты и вложенные теги, формат зависит от объекта-плагина
-->
        <Type2 Name="имя_экземпляра" ...> ... </Type2>
        <!-- ... еще теги объектов ...-->
    </ConfigObjects>

  </Config>

Файл дерева мнемосхем slidetree

Дерево мнемосхем содержит древовидный список ссылок на мнемосхемы конфигурации системы Дельта. Название файла, из которого программа мониторинга будет загружать список, указывается в файле списка конфигураций мониторинга configlist.

<SlideTree>
<!--
Корневой тег SlideTree, может содержать произвольное число вложенных тегов Slide
-->

    <Slide Caption="Заголовок_слайда" Dest="Url">
<!--
Тег Slide задает один пункт в дереве мнемосхем. Может содержать вложенные теги Slide, 
    соответствующие вложенным пунктам дерева.
* Caption - заголовок пункта дерева для пользователя, может отличаться от заголовка 
    мнемосхемы, на которую указывает
* Dest - ссылка для перехода по клику пользователя на этот пункт. Ссылка может содержать
    имя файла мнемосхемы, параметры открытия файла в виде url, имя плагинового объекта,
    команду для запуска исполняемого файла и т.д. (см. описание).
Ссылку можно не задавать, например, для группировки ссылок на мнемосхемы по категориям.
-->
        <Slide Caption="Заголовок_вложенного_слайда" Dest="Url"/>
        <!-- Вложенный слайд ... -->

        <Include Dest="Имя_домена" Caption="Заголовок" />
<!-- Тег позволяет вставить дерево мнемосхем из другого файла. Дерево будет вставлено внутрь
    того пункта, в котором находится тег Include (можно в корневом)
* Caption - заголовок пункта дерева для пользователя. Заменяет заголовок первого вставляемого
    из файла пункта дерева. Можно не задавать.
* Dest - название поддомена ресурсов, заданного в файле списка конфигураций. Вставлять будет
    файл дерева мнемосхем, указанный для этого поддомена.
-->

        <Folder Dest="Имя_папки" Filter="*.slide" Recursive="true" LoadCaptions="true" />
<!-- Создает список ссылок на все файлы из указанной папки ресурсов.
* Dest - имя папки ресурсов (типа ресурсов Slide)
* Filter - маска какие файлы учитывать (стандартная маска для файлов)
* Recursive - загружать вложенные папки
* LoadCaptions - для каждого пункта попытается загрузить заголовок из файла мнемосхемы
-->

        <PluginTreeLoader1 />
<!-- Загружает пункты дерева из плагина. Имя тега должно соответствовать имени плагина,
    заданного атрибутом класса (сборки .net) PluginTreeLoaderAttribute. Пункты дерева будут
    вставлены внутрь того пункта, в котором находится тег. Формат данных тега зависит от плагина.
-->

    </Slide>
</SlideTree>

Файл дерева списков параметров plisttree

Дерево списков параметров содержит древовидный список ссылок на файлы списков параметров. Название файла,
из которого программа мониторинга будет загружать список, указывается в файле списка конфигураций мониторинга configlist.
<ParamListTree>
<!--
Корневой тег ParamListTree, может содержать произвольное число вложенных тегов ParamList
-->

    <ParamList Caption="Заголовок_списка" Dest="путь_и_имя_файла">
<!--
Тег ParamList задает один пункт в дереве списков параметров. Может содержать вложенные теги
 ParamList, соответствующие вложенным пунктам дерева.
* Caption - заголовок пункта дерева для пользователя
* Dest - путь и имя файла списка параметров для перехода по клику пользователя на этот пункт
Ссылку можно не задавать, например, для группировки ссылок по категориям.
-->
        <ParamList Caption="Заголовок_вложенного_списка" Dest="путь_и_имя_файла"/>
        <!-- Вложенный список ... -->

        <Include Dest="Имя_домена" Caption="Заголовок" />
<!-- Тег позволяет вставить дерево списков параметров из другого файла. Дерево будет вставлено 
    внутрь того пункта, в котором находится тег Include (можно в корневом)
* Caption - заголовок пункта дерева для пользователя. Заменяет заголовок первого вставляемого
    из файла пункта дерева. Можно не задавать.
* Dest - название поддомена ресурсов, заданного в файле списка конфигураций. Вставлять будет файл
    дерева списков параметров, указанный для этого поддомена.
-->

        <Folder Dest="Имя_папки" Filter="*.paramlist" Recursive="true" LoadCaptions="true" />
<!-- Создает список ссылок на все файлы из указанной папки ресурсов.
* Dest - имя папки ресурсов (типа ресурсов ParamList)
* Filter - маска какие файлы учитывать (стандартная маска для файлов)
* Recursive - загружать вложенные папки
* LoadCaptions - для каждого пункта попытается загрузить заголовок из файла мнемосхемы
-->

        <PluginTreeLoader1 />
<!-- Загружает пункты дерева из плагина. Имя тега должно соответствовать имени плагина, заданного 
    атрибутом класса (сборки .net) PluginTreeLoaderAttribute. Пункты дерева будут вставлены внутрь
    того пункта, в котором находится тег. Формат данных тега зависит от плагина.
-->

    </ParamList>
</ParamListTree>

Тег <ParamList> - тег с одним пунктом дерева списков параметров. Может содержать вложенные теги ParamList
  • Dest - имя файла со списком параметров относительно папки ресурсов ParamLists
    • Через вопросик можно указать смещение в виде:
      Dest="имя_файла.paramlist?ParamBase=смещение"
      которое будет прибавляться ко всем идентификаторам параметров в загружаемом файле, если параметры указаны с плюсиком (см. формат файлов списков параметров)
    • Через вопросик можно указать любые параметры в виде пар имя=значение, которые будут использоваться как замены в тексте при загрузке файла списка параметров, кроме того все атрибуты тега с нестандартным именами будут использоваться как замены в тексте
    • Если имя начинается с решетки # загрузка динамически генерируемого списка параметров из плагина в виде:
      #имя_плагина?параметр1=знач1&параметр2=знач2
      После решетки указывается имя плагина, после вопросика - параметры, передаваемые плагину. Плагину так же будет передан весь тег ParamList, из которого он так же может проводить загрузку
      Так же если имя тега не ParamList, будет загружать параметры из плагина таким же образом, только именем плагина будет считаться имя тега, атрибут Dest не будет обрабатывать
  • Для быстрого создания отфильтрованного списка параметров используется встроенный плагин InstanceParamList:
    #InstanceParamList?Instance=имя_инстанса&Query=фильтр
    где Instance - имя инстанса из которого брать параметры, Query - фильтр параметров (формат фильтра смотри в описании класса DataView в .net), фильтр можно не указывать
  • Caption - заголовок пункта в дереве в диалоге мониторинга
  • Blist - имя файла со списком связанных параметров. Файлы со связанными параметрами загружаются отдельно от самих списков, не связан с файлов указанным в Dest, просто надо было где-то указать имя файлов со связанными параметрами. Формат файла со связанными параметрами такой же как для списка параметров, но внутри тегов ParamBinding есть еще тег LinkedParam внутри которого указывается список связанных параметров. Эти связанные параметры потом можно посмотреть в мониторинге по правому клику на графике параметра. Было сделано для вибромониторинга.
  • Все остальные атрибуты будут использоваться как замены в тексте (пары имя атрибута=значение атрибута) при загрузке файла списка параметров.
Тег <Include> - вставить дерево списков параметров из другого поддомена:
  • Dest - имя поддомена из которого вставлять дерево списков параметров
  • Caption - заголовок пункта в дереве в диалоге мониторинга

В файлах со списком параметров работают стандартные замены для xml: локализация LocalizationId, фильтр категорий CategoryFilter, IfCategory, замены в тексте (см. описание)

Замены, подстановки при загрузке файлов мнемосхем и других в формате xml

При загрузке файлов из xml (таких как мнемосхемы, дерево мнемосхем, списки параметров и др.) можно использовать различные виды замен и подстановок
в зависимости от аргументов в url имени загружаемого файла, текущего языка локализации, категории пользователя и др.

Текстовые замены значений xml-атрибутов @

Если в строке значения xml-атрибута указать имя аргумента внутри символов

@  @
то такая строка будет заменена на значение атрибута
из url имени файла. Например имя файла:
slide1.slide?PARAM=23
задает аргумент PARAM со значением 23. Если теперь в xml-атрибуте указать:
<Label Text="zzz@PARAM@"/>
то zzz@PARAM@ будет заменено на zzz23

Замены по таблицам локализации @?

Если в строке значения xml-атрибута указать строку-идентификатор внутри символов

@?  @
то такая строка будет заменена на соответствующий перевод из файла таблицы локализации. Например, если в xml-атрибуте указать:
<Label Text="zzz@?PARAM@"/>
то zzz@?PARAM@ будет заменено на zzzПЕРЕВОД перевод по строке-идентификатору PARAM из таблицы локализации для текущего языка программы мониторинга.
Если такой строки-идентификатора нет в таблице локализации, то будет подставлена сама эта строка zzzPARAM.
Строки-идентификаторы могут содержать имя подгруппы локализации через точку, например GRP1.PARAM

Шаблоны локализации Localization

Если внутри любого xml-тега расположить вложенный тег Localization, то этот тег будет загружен как шаблон, только если текущий язык программы мониторинга совпадает с языком, указанным в атрибуте LocalizationId тега Localization.
Загрузка как шаблон означает что все атрибуты из вложенного тега Localization будут загружены в родительский тег, например:

<Label Text="...">
   <Localization LocalizationId="ru" Text="Рус"></Localization>
   <Localization LocalizationId="en" Text="Eng"></Localization>
</Label>
Здесь в свойство Text элемента Label будет загружено значение "Рус" для языка ru, значение "Eng" для языка en. Для остальных языков будет загружено значение из элемента Label которое равно "..."

Фильтр пользователей CategoryFilter

Если в xml-теге задать атрибут CategoryFilter, то такой тег будет загружен только если категория текущего пользователя соответствует категории указанной в атрибуте CategoryFilter. Например:

<Slide>
  <Nodes>
    <Label CategoryFilter="А"/>
    <Image CategoryFilter="Б"/>
  </Nodes>
</Slide>
Тег Label будет загружен только для пользователей категории A, а тег Image будет загружен только для пользователей категории Б

Фильтр пользователей CategoryCheck

Если внутри любого xml-тега расположить вложенный тег CategoryCheck, то такой тег будет загружен только если категория текущего пользователя соответствует категории указанной в атрибуте IfCategory тега CategoryCheck. Загружаться будут только вложенные теги. Например:

<Slide>
  <Nodes>
    <CategoryCheck IfCategory="А">
      <Label />
    </CategoryCheck>
    <CategoryCheck IfCategory="Б">
      <Image />
    </CategoryCheck>
  </Nodes>
</Slide>
Тег Label будет загружен только для пользователей категории A, а тег Image будет загружен только для пользователей категории Б

Шаблоны xml

Загрузка объектов конфигурации мониторинга, таких как элементы мнемосхем, происходит из определенных xml-тегов. Один xml-тег соответствует одному объекту.
Для каждого объекта можно указать загрузку из дополнительных шаблонных тегов. Загрузка происходит также как из основного тега. Сначала загружаются теги шаблонов, а потом уже основной тег. Если в шаблонах и основном теге загружаются одни и те же свойства, то первые загруженные по порядку будут перезаписаны последними (основной тег загружается последним).

<Slide>
  <Nodes>
      <Label Text="AAA">
<!-- Задается список шаблонов для тега Label-->
         <XmlTemplates>
            <XmlTemplate Name="t1"/>
            <XmlTemplate Name="t2"/>
         </XmlTemplates>
      </Label>
<!-- Другой вариант задания списка шаблонов через атрибут-->
      <Label XmlTemplates="t1;t2" Text="BBB">
      </Label>
  </Nodes>
<!-- Это сами шаблоны -->
  <Templates>
<!-- Имя шаблона задается атрибутом Name -->
     <Template Name="t1" Width="5"/>
     <Template Name="t2" ForeColor="red"/>
  </Templates>
</Slide>
Шаблоны для файлов мнемосхем так же могут располагаться в отдельных файлах в папке шаблонов. Папка шаблонов задается в файле списка конфигураций configlist. Из каждого файла из этой папки загружаются все шаблоны из тега Templates. Эти шаблоны считаются общими и их можно использовать во всех файлах мнемосхем.

Открыть Генератор отчетов по ссылке или из скрипта

Пример Url для открытия генератора отчетов:
#ReportDialog?Report=D8ExcelReport,Стандартный - Значения в момент времени&
Steps=<Step Name="Step1"><Fields><Field Name="Timing" Kind="TimingEdit"><Value TimingType="Задать вручную" T1="14.02.2020 10:20:00" /></Field></Fields></Step>

Где:
  • Report указывается имя генератора отчета и через запятую имя отчета,
  • Steps - xml со значениями полей, которыми будут заполнены поля отчета, в виде строки.

Скопировать эти значения можно из шаблона отчета, сохранив его в xml-файл через обычный пользовательский интерфейс. Для Steps нужно брать содержимое тега Steps. Все поля не обязательно.
Если открыть мнемосхему с этим адресом, то откроется диалог генератора отчетов с частично заполненными полями.
Можно сразу запустить построение отчета с помощью аргумента в Url: AutoStart=true

Также сохраненный шаблон для генератора отчетов можно открыть как мнемосхему

Ограничения веб-версии мониторинга

  • Повороты картинок и svg работают только при NewTransformMode=true (Новый режим вращения). В старом режиме вращения работает только поворот на прямой угол.
    Поворот текста не работает

История версий

  • 4.2.21.0831
    • Добавлено allowsavepassword
  • 4.2.21.0813
    • Папка состояния при старте переносится в новое место
    • Изменения в названиях
  • 4.2.21.0803
    • Изменения под новые сборки
  • 4.2.21.0408
    • Изменения под новые сборки
  • 4.2.21.0319
    • Исправлен выбор интервалов в контроле для генератора отчетов
  • 4.2.21.0316
    • Исправления в мониторинге для отображения как в старой версии
  • 4.2.21.0310
    • Колонка Адрес подключения в таблице параметров
  • 4.2.21.0305
    • Исправления в конверторе и мониторинге для отображения как в старой версии
  • 4.2.21.0302
    • Исправления в конверторе
  • 4.2.21.0203
    • Исправления в генераторе отчетов, выдавала сообщения про обращения из другого потока
  • 4.2.21.0201
    • Переделано определение ближайшей точки при кликах на графике
  • 4.2.20.1230
    • Исправлена загрузка шаблонов мнемосхем
  • 4.2.20.1229
    • Сделана настройка для продления всех графиков до текущего времени
  • 4.2.20.1225
    • Сделана настройка для отключения масштабирования графиков по Y
  • 4.2.20.1222
    • Исправлены ссылки на веб на списки параметров
  • 4.2.20.1221
    • Исправления в конверторе
  • 4.2.20.1210
    • Проигрыватель архивов
  • 4.2.20.1204
    • Выделение элемента на мнемосхеме при поиске по параметру
  • 4.2.20.1103
    • Сделана рекурсивная загрузка для списков параметров
  • 4.2.20.1023
    • Исправлены динамические значения в вычисляемых параметрах
  • 4.2.20.1020
    • Добавлены битовые маски для проверки знаений параметров в стилях
  • 4.2.20.1019
    • Конвертор старого формата мнемосхем сделал шрифт по умолчанию MS Sans Serif
  • 4.2.20.1007
    • Изменена обработка ошибок подключения к датасерверу
  • 4.2.20.0713
    • Исправлена ошибка с папкой состояния
  • 4.2.20.0706
    • Исправления под новые сборки мониторинга
  • 4.2.20.0508
    • Доработаны контролы под веб пристыковываемые панели
  • 4.2.20.0417
    • Переход на новые сборки
    • Доработаны контролы под веб поддержка цветов, шрифтов и т.д.
  • 4.2.19.1213
    • Исправление ошибок
  • 4.2.19.0823
    • Добавлена функция переключения на резервный сервер
  • 4.2.19.0612
    • Исправлено скроллирование таблиц на веб
  • 4.2.19.0423
    • Сделано сохранение состояния при выходе из системы в режиме сервиса без видимых мнемосхем
  • 4.2.19.0416
    • Изменено отображение некоторых элементов для совместимости со старой версией мониторинга на сгрэс2
  • 4.2.19.0318
    • Исправлена ошибка прибавляемыми идентификаторами параметров (ParamBaseSrc)
  • 4.2.19.0315
    • Добавлен новый пункт меню Открыть ссылку
  • 4.2.19.0301
    • Консоль формул, шаблоны вычисляемых параметров Формула и Сумма теперь отображаются не только в экспертном режиме
  • 4.2.19.0219
    • Добавлен выбор вариантов в фильтре таблиц
  • 4.2.19.0121
    • Исправлено не показывался вариант создания вычисляемого параметра по формуле если режим эксперта включить уже после показа диалога
  • 4.2.18.1122
    • Исправлен диалог ручного ввода исчезали кнопки
  • 4.2.18.1113
    • Изменения в диалоге авторизации
  • 4.2.18.1102
    • Добавлена настройка prevconfiglist
  • 4.2.18.0921
    • Некоторые изменения и оптимизации для карты MapView
  • 4.2.18.0723
    • Возможность посылать блокировку значений в датасервер
  • 4.2.18.0621
    • Настройки для новых графиков перенесены в главный диалог настроек
  • 4.2.18.0613
    • Добавлено свойство AutoCreateComputeParam для ParamBoxNode
    • Добавлено свойство ParamIndex для NodeStyle
  • 4.2.18.0523
    • Исправлено неправильно обрабатывалось время в поле ввода для системной локали когда месяц первый
    • Заменен диалог просмотра лог-файла
  • 4.2.18.0403
    • Изменения под новые сборки
    • Добавлена возможность скопировать текст из таблицы параметров с заголовками
  • 4.2.18.0320
    • Переделано свойство Name с названием параметра ParamBinding
    • Добавлено контекстное меню для открывания ссылок на весь экран
    • Добавлено масштабирование слайдов в веб-версии
  • 4.2.18.0118
    • Переделано сохранение состояния программы мониторинга чтобы не исчезали вкладки при ошибке, обратно не совместимо
  • 4.2.18.0117
    • Исправлено в AlarmLogTable игнорируется флаг vsSave
  • 4.2.18.0115
    • Исправления загрузка списка параметров из плагинов (InstanceParamList)
  • 4.2.17.1206
    • Новая версия таблиц DeltaTable, SqlTable
  • 4.2.17.1030
    • Возможность скрывать программу мониторинга в трей
  • 4.2.17.1026
    • Замены переменных окружения при запуске ссылок на исполняемые файлы
  • 4.2.17.0906
    • Изменены названия часовых поясов, перерисовка при выборе часового пояса пользователем
  • 4.2.17.0905
    • Исправлено не отображалась полоска в элементе Bar если значение меньше минимального и задано ZeroBase
    • Иконки на кнопках переключения закладок
  • 4.2.17.0821
    • Изменения в элементе отображения таблиц
  • 4.2.17.0801
    • Поддержка строковых значений для ручного ввода
  • 4.2.17.0724
    • Изменения под новые сборки
  • 4.2.17.0621
    • Небольшие изменения в контроле ввода времени
  • 4.2.17.0609
    • На карте MapView добавлена возможность ограничить скроллирование
  • 4.2.17.0518
    • Анимированные gif картинки
  • 4.2.17.0317
    • Исправлена ошибка при кешировании значений параметров (диспетчерский график)
    • В инстансах устанавливает флаг для последовательной обработки значений с датасервера
  • 4.2.17.0305
    • Исправлена ошибка с календариком при выборе даты в воскресенье
  • 4.2.17.0131
    • Добавлена возможность задавать файл для звуковой сигнализации
  • 4.2.17.0126
    • Исправлено не запоминала индекс предыдущей открытой конфигурации если настройках указать фиксированый файл но не указывать индекс
  • 4.2.16.1214
    • Изменения в кешировании значений параметров
  • 4.2.16.1206
    • Изменения в реализации инстансов баз данных
    • Изменения в кешировании ресурсов (картинки)
  • 4.1.16.1011
    • Добавлены кнопка на главной панели и пункты в главном меню для открытия файлов документации пользователя
  • 4.1.16.0623
    • Изменения для работы ссылок начинающихся с решетки из поддомена
  • 4.1.16.0520
    • Изменен формат сохранения состояния мониторинга чтобы при изменениях в коде сохраненное состояние не сбрасывалось
  • 4.1.16.0517
    • Добавлен ввод параметров по текстовому SID в диалоге добавления параметров в режиме эксперта
  • 4.1.16.0427
    • Исправлено включение автомасштаба свойством AutoFitOnStart
    • Добавлена возможность задать мин. макс. значения для ручного ввода
  • 4.1.16.0422
    • Добавлено в ParamMapping свойство для проверки XState
  • 4.1.16.0420
    • Исправлен вывод линейно интерполированных значений курсора на графиках
  • 4.1.16.0407
    • Паддинг для автомасштабирования слайдов
    • Ввод текста в ComboBox
  • 4.1.16.0404
    • Исправления для диспетчерского графика перерисовка при изменениях
  • 4.1.16.0324
    • Добавлены фиксируемые панели
  • 4.1.16.0310
    • Переделано кеширование в графиках
  • 4.1.16.0226
    • Исправлена загрузка старых отчетов xlt из старого формата конфигурации
  • 4.1.16.0216
    • Исправления фильтр для SqlTable
  • 4.1.16.0211
    • Исправления загрузки параметров из мнемосхемы
  • 4.1.16.0203
    • Ссылки на списки параметров
    • Фильтр и поиск в таблице sql
  • 4.1.15.1223
    • Добавлена возможность загрузки файлов конфигурации через веб-сервер
  • 4.1.15.1214
    • Перевод на русский названий состояний параметров системы Дельта
  • 4.1.15.1125
    • Автовыбор конфигурации по группе пользователя
  • 4.1.15.1111
    • Передаланы привязки Anchor
  • 4.1.15.0825
    • Добавлен пункт меню для полноэкранного режима
  • 4.1.15.0805
    • Исправлено сохранение файлов в генераторе отчетов
    • Изменения для многоязычности
  • 4.1.15.0716
    • Добавлена настройка для выбора языка программы
  • 4.1.15.0512
    • Добавлена настройка для ручного сохранения состояния
  • 4.1.15.0408
    • Добавлена возможность автоматически скрывать диалог с сообщениями об ошибках
  • 4.1.15.0406
    • Шаблоны DPS из старой конфигурации теперь конвертирует в отдельные файлы
  • 4.1.15.0330
    • Добавлено отображение элементов из старого формата, типы: 1001, 1002, 1003
  • 4.1.15.0227
    • Новые классы для построения отчетов
  • 4.0.15.0112
    • Восстановлен вывод сигнализации в виде букв для старого формата, свойство EXDR
  • 4.0.14.1205
    • Исправления в диалоге печати, кнопка печати графиков
    • Элемент Планка теперь определяет минимум-максимум по заданному параметру
  • 4.0.14.1026
    • Изменения для перехода времени
  • 4.0.14.0911
    • Переход на .net40
  • 3.0.14.0820
    • Добавлена возможность отключать сигнализацию
  • 3.0.14.0730
    • Добавлены плагины для карты
  • 3.0.14.0623
    • Добавлены настройки временной зоны
  • 3.0.14.0617
    • При генерировании старых отчетов порядок колонок в таблице параметров на листе setting сохраняется
    • Графики теперь используют отдельный кеш, был общий
    • В графиках добавлен режим смешивания статических и динамических данных
  • 3.0.14.0513
    • Добавлен журнал тревог
  • 3.0.14.0402
    • Экспорт таблиц параметров в Excel
  • 3.0.14.0325
    • Разные мелкие изменения
  • 3.0.14.0227
    • Разные мелкие изменения
  • 3.0.14.0217
    • Исправлена ошибка с соединениями ID8Instance2
  • 3.0.14.0214
    • Исправлена выдача интервалов Текущая смена/Предыдущая смена в отчеты
    • Переход на новую версию ID8Instance2
  • 3.0.14.0115
    • Новое поле ввода даты и времени
  • 3.0.13.1217
    • Добавлены параметры запуска: fullscreen, openurl, nostate
  • 3.0.13.1030
    • Доработка для диспетчерских графиков
  • 3.0.13.1023
    • При генерации отчетов вставляет строку Provider=SQLOLEDB.1
  • 3.0.13.1021
    • Доработка диалогов
    • Новая версия d8_client
  • 3.0.13.1016
    • Исправлены ошибки в графиках
  • 3.0.13.1014
    • Добавлена возможность запретить запуск двух копий программы
    • Доработка диалогов
  • 3.0.13.1011
    • Исправлены ошибки в графиках
  • 3.0.13.0920
    • Доработка контекстного меню графиков
  • 3.0.13.0918
    • Добавлено отображение дискретных шкал на графиках
    • Исправлена генерация отчетов с дискретными параметрами
  • 3.0.13.0916
    • Исправления в графиках
  • 3.0.13.0913
    • При выборе интервала времени можно указать текущую/предыдущую смену
  • 3.0.13.0911
    • Графики оптимизированы для больших диапазонов и фоновой загрузки
  • 3.0.13.0905
    • Номер версии заменен с 1.0 на 3.0
  • 1.0.13.0829
    • Исправлено неправильное отображение графиков у которых есть очень большие (или маленькие) пиковые значения
  • 1.0.13.0826
    • Доработка графиков
  • 1.0.13.0822
    • Изменения для Модес-Т
  • 1.0.13.0819
    • Добавлена поддержка для новых диспетчерских графиков
    • Удалены старые диспетчерские графики
    • Удалена поддержка старых комов
  • 1.0.13.0807
    • Цветная печать графиков
  • 1.0.13.0729
    • Для старого формата для текстовых полей если DPS с указанным индексом отсутствует, то берет DPS с индексом 0
  • 1.0.13.0717
    • Для старого формата исправил картинка в DPS с индексом -1 соответствует одновременно и значению -1 и недостоверному значению
  • 1.0.13.0712
    • Сделал сохранение списка аттрибутов для заголовков графиков при сохранении шаблона графиков
  • 1.0.13.0701
    • В графики добавлена возможность настроить какие аттрибуты параметров выводить в заголовках
  • 1.0.13.0617
    • Добавлены в диалог добавления параметров новые общие шаблоны
  • 1.0.13.0613
    • Добавлены общие шаблоны отчетов, списков параметров и т.д.
  • 1.0.13.0610
    • Изменено при генерации старых экселовских отчетов если отчет без параметров, то список инстансов не вставляется
  • 1.0.13.0524
    • Добавил настройку PreserveRdgConstr
  • 1.0.13.0523
    • Исправил не отображались значения на шкале Y при печати графиков
  • 1.0.13.0516
    • Добавлены новые иконки состояний параметров
  • 1.0.13.0515
    • Исправил неправильное отображение поля 1004
  • 1.0.13.0506
    • Исправил неправильное отображение полосок гистрограмм
  • 1.0.13.0424
    • Изменил логику запуска исполняемых файлов по ссылке в старом формате, теперь текущую папку при запуске делает как у d8_root.ini
  • 1.0.13.0423
    • Перебрал названия свойств основных элементов отображаемых в редакторе мнемосхем
  • 1.0.13.0416
    • Добавил ExcelHelper для генерации экселовских отчетов
  • 1.0.13.0411
    • Добавил обработку ошибок загрузки удаленного файла в прокси-мониторинг
  • 1.0.13.0408
    • Исправил неправильное отображение полосок (гистограм) в старом формате
  • 1.0.13.0405
    • Перенос D8VectorValueWrapper в другую сборку
  • 1.0.13.0402
    • Добавил возможность запрашивать подтверждение выхода из программы
    • Исправления для веб-мониторинга
  • 1.0.13.0329
    • Исправлено при загрузке старой версии если Дискретное с пиктограммой не имеет привязанных параметров, то удаляется с мнемосхемы
  • 1.0.13.0318
    • Мелкие исправления в структуре классов
  • 1.0.13.0307
    • Убрал дергание автомасштаба при наведении курсора на поля с параметрами и появлении рамки выделения
  • 1.0.13.0306
    • Добавлена возможность задать заголовок корневого узла включенного через Include дерева мнемосхем или списков параметров
  • 1.0.13.0305
    • Добавлены флаги PreserveConnstr в новом формате мониторинга
    • Исправлен вывод строк соединения в таблице Базы данных
  • 1.0.13.0221
    • Исправлено поля на старых мнемосхемах выводились черным цветом
    • Исправлено не генерировались отчеты в excel если в имени файла стоит точка
    • Добавлен файл с описанием программы для пользователей
  • 1.0.13.0205
    • Новая иконка
  • 1.0.12.1220
    • Небольшие исправления в веб-мониторинге
  • 1.0.12.1218
    • Небольшие исправления в веб-мониторинге
  • 1.0.12.1213
    • Добавлена возможность задавать имя файла шаблона отчетов в диспетчерских графиках
  • 1.0.12.1211
    • Исправлен вывод времени в текстовых элементах
    • Исправлен алгоритм вставки в стандартные экселовские отчеты
    • Исправлена ошибка при открытии диалогов в дочернем окне
  • 1.0.12.1206
    • Добавлены настройки графиков
  • 1.0.12.1203
    • Добавлены настройки графиков
  • 1.0.12.1127
    • Добавил полноэкранный режим
  • 1.0.12.1126
    • Исправлено неправильная обработка при вводе пустых полей в диалогах
    • Исправлено неправильная обработка фильтра параметров при наличии колонки №п/п
  • 1.0.12.1116
    • Заголовки мнемосхем старой версии теперь берет из дерева мнемосхем
    • Отображение недостоверных значений серым цветом
    • Метки значений на графиках
  • 1.0.12.1029
    • Исправлено не работало без .NET SP1
  • 1.0.12.1025
    • Исправлена обработка строк подключений с флагами PRESERVE из старой версии
  • 1.0.12.1017
    • Исправлена обработка строк подключений с флагами PRESERVE из старой версии
    • Ком-объекты теперь по умолчанию не используются
    • Добавлена автоматическая перезагрузка при изменении задания в диспетчерских графиках
  • 1.0.12.1015
    • Исправлено отображение переводов строк в старых мнемосхемах
    • Добавлены классы для AlarmMonitor
  • 1.0.12.0919
    • В конфигурации можно задавать папку сохранения состояний
    • Новые классы для работы с базами системы Дельта (без комов)
  • 1.0.12.0815
    • Исправления для векторных графиков
    • Исправил не загружалось дерево объектов в старом формате если в файле были комментарии
  • 1.0.12.0809
    • Переделал выдачу сообщений об ошибках от прокси сервера
  • 1.0.12.0807
    • Компиляция скриптов на мнемосхемах теперь работает без установки .net35 и даже .net20sp1
  • 1.0.12.0706
    • Добавил функцию возврата к исходному положению в графиках, так же автовозврат
  • 1.0.12.0705
    • Добавлено окно с надписью "загрузка"
  • 1.0.12.0704
    • Добавлено у паметров системы Дельта идентификатор группы и имя группы
    • Исправил в стилях не работало свойство MapInvert
  • 1.0.12.0702
    • Исправил ошибка при копировании параметров из таблицы
    • Исправил в стилях не работало свойство MapInvert
  • 1.0.12.0628
    • Исправил с рисованием сетки на графике когда сетку рисовала через один
    • Переделал работу с ресурсами (файлами) конфигурации
  • 1.0.12.0609
    • Перенес прокси-мониторинг в веб-мониторинг
    • Добавил настройки масштабирования мнемосхем по умолчанию
  • 1.0.12.0607
    • Исправил неправильное отображение старых простых дискретных полей
  • 1.0.12.0606
    • Исправил при отображении картинок с отражением/поворотом иногда выдавала OutOfMemory
  • 1.0.12.0605
    • Исправил диалог ручного ввода неправильно считывал значения
    • Добавил отправку значений в датасервер для прокси-мониторинга
  • 1.0.12.0531
    • Исправил настройки прокси
  • 1.0.12.0530
    • Исправил размазывание краев изображений в формате gif с прозрачностью
  • 1.0.12.0525
    • Первая версия