Свойства кнопки (транспаранта). Variable и variableEx

Стартовая страница Форумы Вопросы без категории Свойства кнопки (транспаранта). Variable и variableEx

Просмотр 3 сообщений - с 1 по 3 (из 3 всего)
  • Автор
    Сообщения
  • #41789
    Ivan_Vit
    Участник

    Здравствуйте, подскажите, буду очень признателен!
    Из руководства:

    Если необходимо изменять цвет по биту одной переменной, а скорость анимации по биту другой переменной, то нужно указать в свойстве изображения «Переменная» первую переменную, а в свойстве «Доп. переменная» вторую переменную. Далее, нужно написать универсальный скрипт приведенный ниже и установить его на событие OnDataChange и OnDataChangeEx требуемых изображений:

    begin
    if Sender is TM_Image then // сначала убедимся, что скрипт вызван объектом «Изображение»
    with Sender as TM_Image do // далее будем работать с объектом Sender, как с изображением
    begin
    // меняем цвет изображения по основной переменной
    if GetBit(AsInt, 3) = TRUE then
    Color := clGreen
    else
    Color := clRed;
    // меняем скорость анимации изображения по доп. переменной «VariableEx»
    if GetBit(VariableEx.AsInt, 1) = TRUE then
    AnimSpeed := 10
    else
    AnimSpeed := 0;
    end;
    end.

    Мой случай:
    У меня есть две переменные status_36 и status_37, по status_36 по биту 5 сигнал аварии, транспарант( кнопка ) должна гореть красным.
    По status_37 по биту 0 приходит сигнал работы, кнопка должна при работе гореть зеленым.
    Далее, свойствах кнопки я могу указать основную и доп. переменную, а также могу указать бит и тег, в событиях кнопки есть ondatachange и ondatachangeEx.
    Нужно ли в свойствах кнопки вписывать биты, по которым приходит сигнал, если да то как , так как есть одна строка куда указывается бит и одна строка, где указывается тег. А у меня же два бита используются 5 и 0.
    Проблема в том , что в свойствах кнопки есть только одно поле «Бит», но у меня два бита в разных переменных. Невозможно указать оба бита в одном поле.

    Далее, если я правильно понял ( прошу, дайте знать правильно/неправильно понял)
    кнопкой(транспарантом) можно управлять полностью через скрипт, при этом настройка будет следующей:
    Основная переменная (Variable): status_36
    Доп. переменная (VariableEx): status_37
    Бит: 0 или оставить пустым (так так как управление полностью через скрипт). Отмечу, что оставить пустым не получается, есть вариант сделать «-1″(что означает не работать с битами). Остается только ставить нуль, но это сомнительно.
    Tag: не использую.
    Тогда скрипт такой:

    begin
    if Sender is TM_Button then
    with Sender as TM_Button do
    begin
    // Проверяем бит 5 в status_36 (авария)
    var alarmBit := 5; // бит для аварии
    var workBit := 0; // бит для работы

    // Получаем значения переменных
    var alarmStatus := GetBit(AsInt, alarmBit); // Основная переменная (status_36)
    var workStatus := GetBit(VariableEx.AsInt, workBit); // Доп. переменная (status_37)

    // Определяем цвет
    if alarmStatus = TRUE then
    States[0].Color := clRed // Авария — красный
    else if workStatus = TRUE then
    States[0].Color := clGreen // Работа — зеленый
    else
    States[0].Color := clGray; // Ни аварии, ни работы — серый
    end;
    end.

    В целом, мне кажется, работать должно. Основной вопрос заключается в том, а если этих кнопок будет много, то будет ли возможность сделать универсальный скрипт для такого случая ? Чтобы к каждой кнопки не привязывать скрипт, где просто нужно поменять нумера для битов.

    #41793
    a80808
    Участник

    Как то сложно…
    1. Выбираем нужный бит в канал GetBit()
    2. На канал привязываем коллекцию =1 — картинка с зеленой кнопкой, =0 — картинка с красной кнопкой.
    3. Если на эту же кнопку нужно нажимать то в в5 ставим на этот же канал выходной с командой, в в6 канал сразу делаем входной/выходной

    Хотя если у вас Mimic….

    #41806
    Mikhail
    Модератор

    Добрый день!
    Упростите, пожалуйста, Ваш вопрос применительно к Rapid SCADA, при необходимости разбив его на отдельные вопросы.

Просмотр 3 сообщений - с 1 по 3 (из 3 всего)
  • Для ответа в этой теме необходимо авторизоваться.