Примеры привязок
В этом разделе даны некоторые реальные примеры привязок инструментальных панелей.
Пример 1: Привязка цвета панели к статусу контроллера
Эта привязка сделает панель статуса красной, если контроллер пришлет тревогу о падении напряжения. В остальных случаях панель будет зеленой.
Обратите внимание, что выражение и ссылка на цель используют относительные пути контекста (".
"), чтобы инструментальная панель была совместима со множеством одинаковых контроллеров. Инструментальная панель должна быть относительной и действующей для всех устройств типа "контроллер напряжения".
Цель |
|
Выражение |
|
Активатор |
|
Условие | |
Опции |
|
Приведенную выше привязку можно изменить так, чтобы панель становилась красной, если показание температуры превышает 50 градусов:
|
Пример 2: Привязка компонента с числовым полем к уставке контроллера
Следующая пара привязок будет менять уставку контроллера (например, контроллера температуры) при изменении значения компонента с числовым полем.
Первая привязка используется для чтения текущего значения уставки с контроллера и инициализации числового поля:
Цель |
|
Выражение |
|
Активатор | |
Условие | |
Опции |
|
Вторая привязка записывает новую уставку на контроллер после перемещения регулятора:
Цель |
|
Выражение |
|
Активатор | |
Условие |
|
Опции |
|
Пример 3: Привязка редактора таблицы к результатам запроса
Привязка выполняет запрос сервера, текст которого содержится в текстовом поле queryText
, и помещает результаты запроса в компонент Редактор таблицы данных с именем results
.
Запрос выполняется путем вызова executeQuery
корневого контекста сервера. Операция выполняется при нажатии на кнопку execute
.
Обратите внимание, что первый параметр функции executeQuery
помещен в одинарные кавычки, чтобы система обрабатывала его как выражение.
Цель |
|
Выражение |
|
Активатор |
|
Условие | |
Опции |
|
Можно использовать альтернативный синтаксис для выражения этой привязки:
Это выражение работает точно так же, как и приведенное выше, но использует функцию |
Пример 4: Вызов функции устройства
Этот пример объясняет, как вызвать функцию устройства или сервера из инструментальной панели. Предположим, у нас есть устройство, поддерживающее операцию multiply
с двумя числовыми аргументами. Мы хотим вызвать эту операцию нажатием кнопки calculate
, учитывая числа, введенные в два текстовых поля (argument1
и argument2
).
Метод один: Вызов функции из цели привязки инструментальной панели
В этом случае цель нашей привязки будет указывать на функцию, и ее выражение вернет таблицу предопределенных параметров:
Цель |
|
Выражение |
|
Активатор |
|
Условие | |
Опции |
|
Обратите внимание, что мы используем относительный путь контекста (".
") в цели, чтобы вычислительная инструментальная панель была совместима со множеством вычислительных агентов. Чтобы использовать ее только с одним агентом, укажите абсолютный путь, например, users.my_user.devices.my_agent.
В этом примере результат вычисления, возвращаемый операцией multiply
, будет отброшен. Но что если мы захотим включить его в другой компонент инструментальной панели (например, метку)? Есть решение:
Метод два: Вызов функции из выражения привязки инструментальной панели
В этом случае выражение нашей привязки вызовет функцию и вернет ее выход (Таблицу данных). Сам результат вычисления (числовое поле result
) извлекается из этой таблицы при помощи функции cell()
. Этот результат записывается в метку result
:
Цель |
|
Выражение |
|
Активатор |
|
Условие | |
Опции |
|
Обратите внимание, что используется относительный путь контекста устройства (возвращаемый функцией dc()
). Чтобы использовать абсолютный путь контекста, замените dc()
на полный путь устройства, например, users.my_user.devices.my_agent
.
Существует другой (более компактный) стиль записи приведенного выше выражения привязки с тем же результатом. Этот стиль использует ссылку на функцию вместо функции
|