Как создать кнопку в Редакторе схем

Стартовая страница Форумы Понять, как работает ПО Как создать кнопку в Редакторе схем

Просмотр 15 сообщений - с 16 по 30 (из 45 всего)
  • Автор
    Сообщения
  • #7960
    Mikhail
    Модератор

    Нужно по нажатию кнопки отправлять команду ТУ, которая будет менять значение входного канала (дорасчётного типа) и соответственно то или иное значение или цвет на схеме.

    #8174
    e-gin
    Участник

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

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

    Пока никак, но этот вопрос в разработке.

    #14832
    bakh76
    Участник

    Подскажите, как сделать, чтобы по нажатию кнопки параметр изменялся с 0 на 1 или с 1 на 0 сразу (без окна подтверждения). В данный момент выполняется только установка параметра в 0.

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

    Действие кнопки необходимо установить «Отправить команду сразу». Под изменением параметра подразумевается отправка команды на контроллер?
    Кнопка не имеет положения. Поэтому значение параметра должно вычисляться в формуле канала управления.

    #14913
    bakh76
    Участник

    Все это я сделал, но
    Например с кнопкой сброс я направляю команду 1 по формуле SetVal(163, 1)
    контроллер через 1 программный цикл переводит значение в 0
    а как быть с с переключателем, который надо сначала посмотреть в каком он положении и потом отправить команду на изменение значения 0 или 1
    Я порылся-познакомлся с си, написал процедурку, добавил в формулы, вызываю в таблице каналов управления «InversySetByte(111)». Отображение переключателя в скаде изменяется на противоположное на несколько десятков секунд, а в контроллер не приходят, хотя команда аналогична с кнопкой сброс.
    Сама процедура
    bool InversySetByte(int n)
    {
    if (Val(n)==1)
    SetVal(n, 0);
    else
    SetVal(n, 1);
    return false;
    }
    Возможно я что то не понимаю в процедурах и косяк в этом?

    #14914
    bakh76
    Участник

    Если просто выставить «Отправить команду сразу» отправляется всегда почему то значение 0?

    #14916
    bakh76
    Участник

    Всем спасибо, разобрался. Оказывается в списках «формулы» описываются функции, а не процедуры. Итог
    double InversySetByte(int n)
    {
    if (Val(n)==1)
    return SetVal(n, 0);
    else
    return SetVal(n, 1);
    }
    И все работает

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

    Если просто выставить «Отправить команду сразу» отправляется всегда почему то значение 0?

    Для кнопки — да. Для тумблера отправляется его новое положение.

    Всем спасибо, разобрался.

    OK.

    #14964
    bakh76
    Участник

    «Для кнопки — да. Для тумблера отправляется его новое положение»

    Дело в том, что меня не устраивает изображение тумблера, которое нельзя изменить, поэтому пришлось делать свои через динамические рисунки

    #15793
    Seliverstoff.yu
    Участник

    Подскажите, пожалуйста, аналогично выше изложенной формуле пытался соорудить пирог, но даже сервер отказался запускаться))))
    Все это для запуска или останова насоса одной кнопкой.
    в общем есть входной канал Х, он же канал управления, у него есть три его положения 0- это автоматическая работа насоса, 1- останов насоса, 2-запуск насоса, так же имеется входной канал Y — статус этого насоса имеет два положения 0-насос остановлен,1- насос запущен. И вот я наивный пытался по аналогии с предыдущей формулой что-то подобное сделать, но явно ничего не вышло, создал формулу, в которой сначала проверяется состояние канала X , если там не 0, то проверяем состояние канала Y, если там 0 то отправляем значение 2, иначе отправляем значение 1, теперь возвращаемся к первому условию и если там 1, то отправляем команду 2, иначе отправляем команду 1.
    Такое вобще возможно в формуле отобразить или это слишком?

    #15794
    Romiros
    Участник

    С помощью формул можно изменить значение отправляемой команды, в том числе используя Ваши условия. Но саму отправку команды из формулы выполнить нельзя. Отправляйте вручную со схемы (кнопка, тумблер и т.д.). Для автоматической отправки команды используйте модуль автоуправления с триггером на изменение данных. Он конечно платный, но он того стоит. Это плагин из разряда маст хэв 🙂

    #15796
    Seliverstoff.yu
    Участник

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

    #15797
    Romiros
    Участник

    Мне не очень понятно с условиями. По Вашему описанию получается следующее:
    1. Проверяем что Х>0 — насос не в автомате, иначе отправляе 0
    2. Проверяем если Y=0, то отправляем 2 — запуск, иначе 1 — останов
    3. Проверяем X=1 — останов насоса, отправляем 2 -запуск, иначе 1 — останов

    Зачем двойная проверка? Пунктов 1 и 2 недостаточно? Пункты 2 и 3 не могут противоречить друг другу?

    Давайте для начала проверим что работают условия 1 и 2
    Впишите следующую формулу в канал управления
    Val(X)>0?(Val(Y)==0?2:1):0

    #15798
    manjey73
    Участник

    Почему это из формулы не отправить команду ?
    У вас Cmd же есть. И выполнение действия «Отправить команду сразу». Если не ошибаюсь, то отправляться будет всегда 0. Так вот формула в Канале управления может делать
    Cmd + 1 и отправить 1, ну либо более что-то сложное с проверкой требуемых каналов.

    Используя формулу в канале управления вы вместо Cmd можете вернуть любое значение и оно отправится вместо Cmd…

    • Этот ответ был изменен 3 года, 12 месяцев назад от manjey73.
Просмотр 15 сообщений - с 16 по 30 (из 45 всего)
  • Вы должны авторизироваться для ответа в этой теме.