Стартовая страница › Форумы › Понять, как работает ПО › Смена уставок
- В этой теме 25 ответов, 5 участников, последнее обновление 1 год, 7 месяцев назад сделано
Mikhail.
-
АвторЗаписи
-
29.01.2025 в 22:26 #36568
JurasskParkУчастникНадо указать код тега ессно для отправки
ОООоооооооооо!!! А я когда спрашивал у Михаила, почему команда без кода тега выдает ошибку DrvDbImportPlus, меня он отправил отлавливать ошибку в коде! 😀
А получается, что в 6ой версии без кода тега всё таки команда не работает.29.01.2025 в 23:22 #36569
manjey73УчастникМожно номер команды ввести а не код.
Номер только не помню как смотреть30.01.2025 в 08:12 #36572saprin8
УчастникМне хотя бы в пустой канал что-то передать, без тега, чисто поменять в свободном канале значение
30.01.2025 в 09:01 #36573
manjey73Участникесли канал расчетный/выходной и вы хотите в него же задавать значения, например некую уставку для других каналов.
Самый простой пример
входная формулаVal()
Выходная формулаSetVal(CnlNum, Cmd)При рестарте сервера в канале будет 0
Если надо инициировать переменную при старте сервера то Михаил подсказал формулу
для входного каналаGetDefaultData(20.1)для ее работы в таблицу скриптов надо добавить формулу// Установить значение уставки по умолчанию. // Для каналов типа Расчётный/выходной public CnlData GetDefaultData(double val) { return Stat() > 0 ? Data() : NewData(val, 1); }30.01.2025 в 09:07 #36574
manjey73УчастникВ таблицу скриптов вы можете добавлять много чего, по вашему усмотрению и требуемой задачи. Например для выходной формулы канала типа Output, привязанного к устройству —
Translate(1101)
Тут одновременно идет запись в выходной канал (формула выходная в канале 1105) и записывается значение в канал Расчетный с номером 1101В таблицах скриптов
public double Translate(int num) { SetData(num, CmdVal, 1); return CmdVal; }30.01.2025 в 09:13 #36575
manjey73Участник@JurasskPark на примере. Вы можете ввести номер команды 4 или 5
| 4 | DO | Relay State | Вкл | 104 | | 5 | AO | Analog Output | 10,240 | 105 |Недавние команды | Время | Описание | | 30.01.2025 09:09:05 | Num=4, Val=1,000 | | 30.01.2025 09:09:32 | Num=5, Val=10,240 |Или ввести код команды
Недавние команды | Время | Описание | | 30.01.2025 09:12:04 | Num=5, Code=DO, Val=0,000 |В драйвере соответственно проверяется как номер так и код, и в зависимости что выполняются действия
-
Ответ изменён 1 год, 7 месяцев назад пользователем
manjey73.
30.01.2025 в 10:15 #36577saprin8
УчастникТак, либо я дурак, либо лыжи не едут.
Вот есть формула SetVal(CnlNum, Cmd), в ней вместо CnlNum я подставляю номер канала, а вместо Cmd что я должен поставить, чтобы вводить нужное мне число из окна отправки команды, а не фиксированное число из администратора30.01.2025 в 10:25 #36578
manjey73УчастникCmd — это и есть то число, что вы вводите в окне команды.
Если вам надо не число, возможно надо применять CmdDatahttps://rapidscada.net/docs/ru/latest/configuration/scripts
обратите внимание Cmd и CmdVal это синонимы. То есть принимается как одно.
В примере выше у меня CmdVal в формуле Трансляции. Но используется не SetVal а SetData чтобы еще и статус каналу сразу записать.30.01.2025 в 10:29 #36582
manjey73УчастникА, если у вас канал стоит как Строка, то скорее всего вам надо обрабатывать в скрипте CmdDataStr
Например если вы укажите Формат канала как DateTime, то при вводе в окне команды у вас будет CmdDataStr
30.01.2025 в 13:07 #36583saprin8
УчастникВсе, теперь понятно, а то путаница с этими Cmd CnlVal CnlNum, иногда непонятно что имеется ввиду и что можно подставить в формулу. Спасибо
30.01.2025 в 15:14 #36589
MikhailМодераторА получается, что в 6ой версии без кода тега всё таки команда не работает.
Код тега — это свойство канала. Когда команда на канал получена Сервером, он находит для неё номер устройства и код тега и отправляет в Коммуникатор.
-
Ответ изменён 1 год, 7 месяцев назад пользователем
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.