Стартовая страница › Форумы › Понять, как работает ПО › Использование формул › Подстановка значения в переменную
- В этой теме 58 ответов, 5 участников, последнее обновление 1 год, 6 месяцев назад сделано fergus2022.
-
АвторСообщения
-
11.10.2022 в 14:48 #25410fergus2022Участник
Для этого же канала создать канал управления и в нем так же выбрать формат Перечисление и в формулу добавить SetVal(канал, Cmd)
В канале управления нету колонки «Формат», как выбрать формат Перечисления ?
>скриншот<11.10.2022 в 15:06 #25411manjey73УчастникВ 5-й версии вам надо в Справочники — Таблица «Значение Команд» добавить
Имя — Значение
Test_Choise — Температура; Давление; Расход
При вызове команды вы получите 3 кнопки с подписями.Создать два расчетных входных канала Choise (105) и Value (106) например
105-й канал можно будет скрыть вообще из интерфейса
Создаете Канал управления, например 105 так же
В ней формула SetVal(105, Cmd) тип команды Стандартный, Значение — ваш Test_Choise который вы создалиВ таблицы «Формулы» добавляете
public double MyChoise(double choise) { double val = 0; if (choise == 0) val = Val(101); else if (choise == 1) val = Val(102); else if (choise == 2) val = Val(103); return val; }
Так как мы оперируем значением нашего канала, а не его номера, то внутри указываем double choice а не int
Ну и во Входном канале 106 куда хотим подтягивать значения датчиков пишем формулу
MyCoise(Val(105))
И указываем канал управления 105, в интерфейс можно добавить только 106-й канал для отображения.В формуле прописываем нужные нам каналы, из которых забирать значения.
З.ы. можно повыделываться и создать универсальную формулу, которую можно будет пришпиливать к любому списку каналов при желании…11.10.2022 в 15:09 #25412manjey73УчастникДа, для каналов Управление тут есть разделение. Своя таблица — Значение Команд.
Если хотите на мнемосхеме еще и отражать, что это за параметр, то для Входных каналов в Таблице Размерности надо создать точно такой же список, выбрать Формат Перечисление и созданный список в Размерностях.
Ну и соответственно выводить еще канал 105 на мнемосхему и привязывать команду к нему…В общем вариации но всегда через окно кнопок…
12.10.2022 в 08:13 #25419fergus2022УчастникПоявилось окно с выбором темп. давл. расх., значение выбора канала прилетает в виртуальную переменную — вобщем заработало ! Огромное спасибо ! Далее по аналогии буду делать. Еще подскажите пожалуйста, для чего в интерфейсе можно создать файл формата .xml ?
- Этот ответ был изменен 1 год, 6 месяцев назад от fergus2022.
12.10.2022 в 08:43 #25421fergus2022УчастникЕще вопрос, как в переменную вывести выбранное значение из test_choise ? что бы была надпись типа: Канал 1 выбрано «Температура»
12.10.2022 в 09:00 #25422fergus2022УчастникПытаюсь как то так:
public double MyChoise(double perech) { double val = 0; string text = ""; if (perech == 0) val = Val(101); text = "Температура"; else if (perech == 1) val = Val(102); else if (perech == 2) val = Val(103); return val; return text; }
И у переменной для отображения ставлю формат «Текстовый ASCII» и формулу MyChoise(textl(104)), но это не работает (
12.10.2022 в 09:05 #25423manjey73УчастникЯ же вам написал. У вас «Температура; Давление; Расход» должны быть одинаковыми в таблицах «Значение команд» и «Размерности»
Одна таблица действует на Кнопки при отправке команды\
Вторая таблица действует на Входной канал если выставить тип Перечисление — Фактически в канале 105 у вас значения 0, 1 и 2 но мнемосхема будет отображать надписи из таблицы Размерности.То есть каких-то дополнительных формул уже не требуется. Просто отобразить на мнемосхеме еще и канал 105 с перечислением
Текст ASCII или UNICODE это другое, это отображение в виде текста 8-ми или 4-х символов из байтового массива (значение double) которое вы можете сформировать как текст.
12.10.2022 в 09:08 #25426manjey73УчастникПо поводу xml в Интерфейсах, он нужен для настройки смещений каналов, если у вас одна мнемосхема используется для вывода однотипных устройств.
12.10.2022 в 09:23 #25427fergus2022УчастникВсё увидел, разобрался, отобразилось, спасибо )
19.10.2022 в 14:19 #25592fergus2022УчастникДобрый день, возник похожий вопрос по передаче.
Есть канал AI mode (значение 1 или 2) — нужно через скаду делать настройку (отправлять 1 или 2).
Сделал по аналогии формулуpublic double viborM1(double viborM1) { double val = 0; if (viborM1 == 0) val = 1; else if (viborM1 == 1) val = 2; return val; }
И значения команд 4-20Ma; 0-20Ma, размерности 4-20Ma; 0-20Ma. ViborM1 — 145 номер канала.
Если ставлю входной канал valueM1 исп. формулу viborM1(Val(145)) и канал управления 145, то в скаде в ViborM1 вижу 4-20Ма и ValueM1 — «1» соответственно. Как тегу устройства AI mode передать выбранное значение ? (Команда 4-20Ма, значение «1») ?- Этот ответ был изменен 1 год, 6 месяцев назад от fergus2022.
19.10.2022 в 14:27 #25594manjey73УчастникНе совсем ясно… В каналах управления есть формулы SetVal(канал, Cmd) вот вам Cmd и надо изменять 1 или 2 отправить.
или речь про другое ?
19.10.2022 в 14:31 #25595fergus2022УчастникЕсть тег AI_Mode, это выбор настройки 4-20ма или 0-20 на моксе. Скада читает значение этого тега нормально. Но нужно еще, чтобы из скады можно было отправлять настройку, т.е значение. Например, при выборе в моксе 4-20ма, тег получает значение «1». При 0-20ма, соответственно значение «2».
Хотелось бы в скаде вызывать окно команды с двумя кнопками: 4-20ма и 0-20ма, при нажатии которых тегу AI Mode на устройство посылалось значение «1» или «2».19.10.2022 в 15:54 #25596manjey73Участникаааа, ну так и вызывайте. Добавьте в Таблицу Команд такую запись
; 4-20mA ; 0-20mA
тут первым символом
;
вы уберете 0 и кнопки будут отправлять соответственно 1 и 220.10.2022 в 06:13 #25604fergus2022Участник» тут первым символом ; вы уберете 0 и кнопки будут отправлять соответственно 1 и 2 »
воооот, не знал как 0 убрать, спасибо! -
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.