Словарь тэгов (база данных выполнения) – основа системы InTouch. Во время выполнения база данных содержит текущие значения всех своих записей. Для того, чтобы создать базу данных выполнения, InTouch необходима информация обо всех создаваемых переменных. Каждой переменной должен быть присвоен тэг и тип. InTouch также необходима дополнительная информация о некоторых типах переменных.
В пакете InTouch используется два базовых типа переменных - Memory (внутренние) и I/O (переменные ввода/вывода).
Переменные типа Memory могут быть использованы для создания различных системных констант, моделирования элементов системы управления и в вычисляемых переменных, доступных другим Windows - программам.
Все тэги, которые считывают или записывают свои значения в другом приложении Windows, относятся к типу внешних тэгов. Сюда относятся все входы и выходы программируемых контроллеров, компьютеров управления процессами, а также данные из узлов сети. Доступ к внешним тэгам осуществляется при помощи коммуникационных протоколов Microsoft Dynamic Data Exchange (DDE) и Wonderware SuiteLink. При изменении значения внешнего тэга чтения/записи оно немедленно записывается в удаленное приложение. Тэг можно также обновить из удаленного приложения путем изменения в этом приложении записи, с которой этот тэг связан.
Определение новой переменной в базе данных InTouch, как и просмотр, и модификация атрибутов уже существующих переменных, производится в диалоге Tagname Dictionary (рис.18). Доступ к этому диалогу осуществляется командой меню Speсial/Tagname Dictionary в окне среды разработки WindowMaker или двойным щелчком по иконке Tagname Dictionary в окне Application Explorer.
Рис.18. Диалог Tagname Dictionary (Словарь переменных).
Переключатели параметров в верхней части диалогового окна Tagname Dictionary используются для выбора детализации отображения тэгов:
- Main - Отображает главное диалоговое окно словаря тэгов. При работе с супертэгами параметр Main отображает только родительский или корневой тэг. Любые изменения в родительском или корневом тэге могут перезаписать информацию тэга-члена. Произведя изменения, нажмите Save. Появится запрос подтверждения перезаписи тэга-члена изменениями корневого тэга.
- Details - Отображает детальное диалоговое окно для выбранного типа тэга.
- Alarms - Отображает диалоговое окно конфигурации алармов для выбранного типа тэга.
- Details & Alarms - Отображает как детальное диалоговое окно, так и конфигурацию алармов для выбранного типа тэга.
- Members - Отображает детальное диалоговое окно члена супертэга.
Поля Tagname и Comment предназначены для ввода имени переменной и соответствующего комментария. Тэги могут включать в себя до 32 символов и должны начинаться с буквенного символа (A-Z or a-z). Остальные символы могут быть с A по Z, a-z, 0-9,!, @, -,?, #, $, %, _, \ и &.
По умолчанию включена опция Read/Write (чтение/запись). Можно отметить и опцию Read Only, если в процессе исполнения WindowViewer должен только читать значение переменной.
В любое время в режиме разработки можно открыть список переменных приложения щелчком по кнопке Select для выбора соответствующей переменной, просмотра списка или модификации атрибутов. Диалог Select Tag (выбор переменной) представлен на рис.19.
Рис.19. Диалог Select Tag (выбор переменной).
Для каждой переменной в этом диалоге приведена следующая информация: имя переменной, ее тип, имя доступа, группа аларма и комментарий.
Выбор Log Data нужен для регистрации тэге, во время выполнения приложения, в архивном файле. Регистрация происходит всякий раз, когда значение его единиц измерения превысит значение Log Deadband или по умолчанию один раз в час, независимо от изменений значения.
Выбор Log Events нужен для регистрации все изменений значений тэга, произведенные оператором, сервером ввода/вывода, Quick-сценарием или системой. При включении параметра Log Events активизируется поле Priority. Введенное в этом поле значение определяет уровень приоритета событий для тэга. В данное поле можно вводить значения от 1 до 999, где 1- высший приоритет, а 999-низший.
Выбор Retentive Value необходим, если нужно сохранить текущее значение тэга при выходе из WindowViewer. Это значение будет использоваться в качестве исходного значения тэга при каждом последующем запуске WindowViewer.
Выбор Retentive Parameters необходим, если нужно сохранять все изменения, производимые оператором со значением любых предельных полей тэга. Это значение будет использоваться в качестве исходного для алармов при перезапуске WindowViewer.
Группа алармов (Alarm group) для переменной определяется в диалоге, вызываемом нажатием кнопки Group диалога Tagname Dictionary.
Выбор типа переменной осуществляется в диалоге Tag Types (тип переменной, рис. 20), вызываемом на экран нажатием кнопки Туре диалога Tagname Dictionary.
Рис.20. Диалог Tag Types (тип переменной).
В этом диалоге представлен полный список основных типов переменных InTouch. Выбор завершается отметкой соответствующей опции и щелчком по Ok.
После выбора типа переменной программа возвращает пользователя в диалог Tagname Dictionary (Словарь переменных). При этом будет открыт и дополнительный диалог подробного описания переменной, содержание которого зависит от выбранного типа.
На рис.21 представлен диалог подробного описания вещественной переменной типа I/O Integer.
Рис.21. Диалог подробного описания переменной типа I/O.
Значение Initial Value, будет присвоено тэгу при первой загрузке базы данных в среду выполнения.
В поле Deadband вводится величина, на которое должен измениться тэг, прежде чем будет обновлена база данных.
В поле Min EU вводится величина, отображаемое при получении минимального необработанного значения тэга.
В поле Max EU введите величина, отображаемое при получении максимального необработанного значения тэга.
В поле Min Raw введите минимальный предельный уровень необработанного целого значения внешнего тэга.
В поле Max Raw введите максимальный предельный уровень необработанного целого значения внешнего тэга.
Значения Min EU, Min Raw, Max EU и Max Raw используются для масштабирования внешних тэгов.
В поле Eng Units введите название единиц измерения данного тэга.
Поле Conversion, применяется если будет использоваться база данных для масштабирования необработанных данных при расчете единиц измерения.
Linear – результат рассчитывается при помощи линейной интерполяции между конечными точками.
Алгоритм линейного масштабирования данных ввода выглядит следующим образом:
EUValue = (RawValue – MinRaw) * ((MaxEU – MinEU) / (MaxRaw – MinRaw)) + MinEU
Алгоритм линейного масштабирования данных вывода выглядит следующим образом:
RawValue = (EUValue – MinEU) * ((MaxRaw – MinRaw) / (MaxEU – MinEU)) + MinRaw
Square Root – для интерполяции используются необработанные значения.
Это удобно при масштабировании данных ввода с нелинейных устройств, таких как преобразователи давления.
Алгоритм масштабирования данных ввода по квадратному корню выглядит следующим образом:
EUValue = sqrt(RawValue – MinRaw) * ((MaxEU – MinEU) / sqrt(MaxRaw – MinRaw)) + MinEU
Алгоритм масштабирования данных вывода по квадратному корню выглядит следующим образом:
RawValue = square((EUValue – MinEU) * (sqrt(MaxRaw – MinRaw) / (MaxEU -MinEU))) + MinRaw
Кнопка Access Name (имя доступа) используется для определения канала обмена (канала доступа) с сервером, с которым будет связана описываемая переменная. Имя доступа Access Name определяется именем узла, именем приложения и именем группы или топика. Имя топика должно совпадать с соответствующим именем, заданным при конфигурировании DDE, SuiteLink-сервера.
В распределенных системах InTouch имя доступа может быть определено либо как локальный адрес, либо как глобальный.
Локальные адреса используются в том случае, когда View - узлы имеют свои серверы ввода/вывода. На рис. 22 узлы исполнения (View - узлы), каждый со своей копией одного и того же приложения, ссылаются на свои собственные источники данных ввода/вывода (серверы ввода/вывода).
Рис. 22. Сеть View - узлов с собственными серверами ввода/вывода.
Поэтому при определении канала доступа к информации ввода/вывода достаточно трехуровневого адреса (Application - приложение, Topic - объект, Item - элемент). Имя узла (Node) в этом случае опускается.
Щелчок по кнопке Access Name (рис.23) вызывает на экран одноименный диалог.
Рис. 23. Диалог Access Names (имена доступа).
Этот диалог предназначен для определения нового канала доступа (кнопка Add), модификации существующего (Modify) или удаления (Delete). Щелчок по кнопке Add вызывает диалог определения нового канала доступа (рис.24).
Рис.24. Диалог определения нового канала доступа (локальный адрес).
В качестве имени (канала) доступа (Access Names) рекомендуется выбирать имя группы или топика (Topic Name).
Следует подчеркнуть, что поле Node Name (имя узла) оставлено пустым.
Щелчок по кнопке Ok возвращает пользователя в диалог Access Names (имена доступа) с определенным именем доступа (рис.25).
Рис.25. Диалог Access Names с определенным именем доступа.
Глобальные адреса источников данных ввода/вывода позволяют нескольким View - узлам обращаться к одному и тому же серверу ввода/вывода. Такой подход предоставляет возможность отказаться от нескольких серверов ввода/вывода, однако менее защищен от отказов (рис.26).
Рис.26. Архитектура с двумя View - узлами и сервером ввода/вывода.
Два View - узла исполняют идентичные копии одного и того же приложения и ссылаются на один и тот же источник ввода/вывода (I/O сервер). Поэтому при определении канала доступа к информации ввода/вывода необходимо использовать четырехуровневый адрес (Node - узел, Application -приложение, Topic - объект, Item - элемент).
Заполненный диалог при определении имени доступа для такой конфигурации представлен на рис. 27.
Рис.27. Диалог определения нового канала доступа (глобальный адрес).
При выборе имени доступа действует то же правило, что и при локальной адресации: рекомендуется, чтобы это имя совпадало с именем группы данных или топика (Topic Name). Но поле Node Name (имя узла) необходимо заполнить. В качестве этого имени при глобальной адресации выбирают имя узла, на котором установлен сервер ввода/вывода, являющийся источником данных для нескольких приложений.
Для каждой переменной ввода/вывода задается атрибут Access Name. С одним именем доступа, как правило, связано большое количество переменных. Распределение переменных по группам (топикам) - произвольное. Но для оптимизации функционирования серверов рекомендуется в одну группу относить переменные с одинаковой частотой обновления. В противном случае частота, задаваемая при конфигурировании топика в сервере, должна соответствовать минимальному временному кванту. Желательно на этапе конфигурирования сервера определить группы (топики) для каждого частотного диапазона и в соответствии с этими группами создать имена доступа (Access Name) в InTouch (лучше даже, чтобы имена групп совпадали с именами доступа). А далее каждую описываемую в InTouch-приложении переменную типа I/O связывать с подходящим именем доступа для обеспечения рационального пакетирования данных.
Супертэги.
InTouch поддерживает структуру супертэгов, позволяющую создавать составные типы тэгов. Все тэги, созданные на основе супертэгов, работают так же, как обычные тэги. Они поддерживают тренды, алармы и все поля тэгов. Для удобства работы InTouch оснащен утилитой TemplateMaker, которую можно использовать для создания супертэгов. TemplateMaker позволяет создавать, редактировать и удалять шаблоны супертэгов и тэги - члены. InTouch сохраняет все шаблоны супертэгов в файле SUPERTAG.DAT в своем установочном каталоге (не в каталоге приложения). Это позволяет использовать шаблоны в любом приложении. Создавать супертэги можно различными способами. Например, можно создать супертэг непосредственно из словаря тэгов, в окне ввода выражений, в Quick-сценариях и т.д.
Поскольку тэги InTouch ограничены 32 символами, каждый из супертэгов Родительский экземпляр\Дочерний тип\Подтип также ограничен 32 символами.
Синтаксис ссылки супертэга поддерживается везде, где можно использовать обычные тэги. Например, допустимой ссылкой супертэга может быть: ColdRoom4\ EvapUnit1\ FanMotor2.MaxE.
Вывод числовых значений.
Текстовые объекты могут использоваться для отображения статических или динамических числовых значений. Задавая текстовому объекту при помощи окна выбора анимационных связей User Inputs - Analog или Value Display - Analog, можно отображать значение целого или действительного тэга. Для указания формата отображения аналогового значения обычно используется символ «#» - номер или знак фунта и «.» -точка. Символ «#» отображает любой целый номер. Сочетание символа «.» и символов «#» справа от точки позволяет выводить действительное значение с требуемой точностью.
Удаление тэгов.
В случае, если тэг используется в приложении, то удалить его нельзя. При помощи утилиты перекрестных ссылок InTouch (Cross Reference) можно определить названия окон и координаты объектов, а также сценарии InTouch, в которых используется данный тэг. Для некоторых операций счетчик не обновляется автоматически, например, для удаления окна, изменения тэгов в связях или сценариях и т.п. В таких случаях InTouch продолжает считать, что тэг по-прежнему используется в приложении, и не дает его удалить. Для обновления информации о количестве используемых тэгах, используется утилита Update Use Counts из меню Special. Для удаления неиспользуемых тэгов используется утилита Delete Unused Tags из меню Special.
Анимационные связи.
Один и тот же объект может иметь набор различных динамических свойств. Комбинации этих свойств предоставляют возможность создавать на экране в режиме исполнения (Runtime) практически любые динамические эффекты. Для установки динамических свойств необходимо вызвать на экран диалог их выбора (рис.28). Это достигается командой Special/Animation Link или двойным щелчком левой кнопки мыши на объекте.
Рис. 28. Диалог выбора динамических свойств объекта.
Все динамические связи можно разделить на две группы: Touch Links (левая колонка) и Display Links (три колонки справа). С помощью свойств Touch Links выполняется ввод данных в систему. Свойства Display Links осуществляют вывод информации на экран дисплея.
Нажатие на любую клавишу диалога (рис.28) вызывает появление нового диалога для определения соответствующего свойства объекта. Количество диалогов соответствует количеству динамических свойств (кнопок) диалога выбора. Все диалоги различны, но большинство из них имеет общие характеристики:
- окно типа объекта;
- одинаковую палитру цветов;
- быстрый вызов словаря переменных;
- быстрый доступ к полям переменных;
- поддержку правой кнопки мыши в полях Tagname (имя переменной) и Expression (выражение).
Содержание задания.
1. В основном окне организовать ввод/вывод внутренних действительных тэгов для расходов, уровня и задания уровня и вывод целого тэга для времени и задания времени отстаивания и перемешивания.
2. Обеспечить вывод значений тэга целого или действительного типа, задаваемого с помощью программы моделирования DDE – сервера.
3. Организовать ввод/вывод символьной информации в поле комментария заданного внутреннего тэга (ввод осуществить через графический объект).
4. В основном окне задать следующие анимационные связи: степень заполнения бака в зависимости от значения тэга уровня жидкости; ползунок увеличения/уменьшения задания уровня для емкостей.