Стартовая страница › Форумы › Понять, как работает ПО › Как создать кнопку в Редакторе схем
Помечено: команды, редактор схем
- В этой теме 44 ответа, 11 участников, последнее обновление 6 лет, 4 месяца назад сделано
Mikhail.
-
АвторЗаписи
-
22.11.2017 в 20:30 #7960
MikhailМодераторНужно по нажатию кнопки отправлять команду ТУ, которая будет менять значение входного канала (дорасчётного типа) и соответственно то или иное значение или цвет на схеме.
26.12.2017 в 14:32 #8174e-gin
УчастникПри нажатии кнопки, возникает окошко, для подтверждения выполнение команды. Как убрать это подтверждение так, что бы команда выполнялась сразу после нажатия кнопки и без дополнительного всплывающего окна. Необходимость ввода пароля для выполнения команды я отключил в Конфигурации Web приложения.
27.12.2017 в 08:50 #8178
MikhailМодераторПока никак, но этот вопрос в разработке.
17.02.2020 в 15:52 #14832bakh76
УчастникПодскажите, как сделать, чтобы по нажатию кнопки параметр изменялся с 0 на 1 или с 1 на 0 сразу (без окна подтверждения). В данный момент выполняется только установка параметра в 0.
17.02.2020 в 17:53 #14833
MikhailМодераторДействие кнопки необходимо установить «Отправить команду сразу». Под изменением параметра подразумевается отправка команды на контроллер?
Кнопка не имеет положения. Поэтому значение параметра должно вычисляться в формуле канала управления.25.02.2020 в 11:31 #14913bakh76
УчастникВсе это я сделал, но
Например с кнопкой сброс я направляю команду 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;
}
Возможно я что то не понимаю в процедурах и косяк в этом?25.02.2020 в 11:33 #14914bakh76
УчастникЕсли просто выставить «Отправить команду сразу» отправляется всегда почему то значение 0?
25.02.2020 в 12:44 #14916bakh76
УчастникВсем спасибо, разобрался. Оказывается в списках «формулы» описываются функции, а не процедуры. Итог
double InversySetByte(int n)
{
if (Val(n)==1)
return SetVal(n, 0);
else
return SetVal(n, 1);
}
И все работает25.02.2020 в 18:58 #14929
MikhailМодераторЕсли просто выставить «Отправить команду сразу» отправляется всегда почему то значение 0?
Для кнопки — да. Для тумблера отправляется его новое положение.
Всем спасибо, разобрался.
OK.
28.02.2020 в 11:57 #14964bakh76
Участник«Для кнопки — да. Для тумблера отправляется его новое положение»
Дело в том, что меня не устраивает изображение тумблера, которое нельзя изменить, поэтому пришлось делать свои через динамические рисунки
24.04.2020 в 19:58 #15793Seliverstoff.yu
УчастникПодскажите, пожалуйста, аналогично выше изложенной формуле пытался соорудить пирог, но даже сервер отказался запускаться))))
Все это для запуска или останова насоса одной кнопкой.
в общем есть входной канал Х, он же канал управления, у него есть три его положения 0- это автоматическая работа насоса, 1- останов насоса, 2-запуск насоса, так же имеется входной канал Y — статус этого насоса имеет два положения 0-насос остановлен,1- насос запущен. И вот я наивный пытался по аналогии с предыдущей формулой что-то подобное сделать, но явно ничего не вышло, создал формулу, в которой сначала проверяется состояние канала X , если там не 0, то проверяем состояние канала Y, если там 0 то отправляем значение 2, иначе отправляем значение 1, теперь возвращаемся к первому условию и если там 1, то отправляем команду 2, иначе отправляем команду 1.
Такое вобще возможно в формуле отобразить или это слишком?24.04.2020 в 20:58 #15794Romiros
УчастникС помощью формул можно изменить значение отправляемой команды, в том числе используя Ваши условия. Но саму отправку команды из формулы выполнить нельзя. Отправляйте вручную со схемы (кнопка, тумблер и т.д.). Для автоматической отправки команды используйте модуль автоуправления с триггером на изменение данных. Он конечно платный, но он того стоит. Это плагин из разряда маст хэв 🙂
25.04.2020 в 04:40 #15796Seliverstoff.yu
УчастникДа, я знаю, что команду из формулы не отправить, создал динамический рисунок, чтобы при его нажатии срабатывала формула, котооа по определенным условиям выполняла бы команду, или нужно сделать чтобы формула при выполнении определенных условий выполняла номер канала управления?
Про модуль тоже знаю, пробую без него пока наткнулся на формулу в посте #14916, вот и подумал вдруг это возможно.25.04.2020 в 08:21 #15797Romiros
УчастникМне не очень понятно с условиями. По Вашему описанию получается следующее:
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):025.04.2020 в 09:35 #15798
manjey73УчастникПочему это из формулы не отправить команду ?
У вас Cmd же есть. И выполнение действия «Отправить команду сразу». Если не ошибаюсь, то отправляться будет всегда 0. Так вот формула в Канале управления может делать
Cmd + 1 и отправить 1, ну либо более что-то сложное с проверкой требуемых каналов.Используя формулу в канале управления вы вместо Cmd можете вернуть любое значение и оно отправится вместо Cmd…
-
Ответ изменён 6 лет, 4 месяца назад пользователем
manjey73.
-
Ответ изменён 6 лет, 4 месяца назад пользователем
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.