Смена уставок

Просмотр 11 сообщений - с 16 по 26 (из 26 всего)
  • Автор
    Записи
  • #36568
    JurasskPark
    Участник

    Надо указать код тега ессно для отправки

    ОООоооооооооо!!! А я когда спрашивал у Михаила, почему команда без кода тега выдает ошибку DrvDbImportPlus, меня он отправил отлавливать ошибку в коде! 😀
    А получается, что в 6ой версии без кода тега всё таки команда не работает.

    #36569
    manjey73
    Участник

    Можно номер команды ввести а не код.
    Номер только не помню как смотреть

    #36572
    saprin8
    Участник

    Мне хотя бы в пустой канал что-то передать, без тега, чисто поменять в свободном канале значение

    #36573
    manjey73
    Участник

    если канал расчетный/выходной и вы хотите в него же задавать значения, например некую уставку для других каналов.
    Самый простой пример
    входная формула Val()
    Выходная формула SetVal(CnlNum, Cmd)

    При рестарте сервера в канале будет 0
    Если надо инициировать переменную при старте сервера то Михаил подсказал формулу
    для входного канала GetDefaultData(20.1) для ее работы в таблицу скриптов надо добавить формулу

    // Установить значение уставки по умолчанию. 
    // Для каналов типа Расчётный/выходной
    public CnlData GetDefaultData(double val)
    {
      return Stat() > 0 ? Data() : NewData(val, 1);
    }
    #36574
    manjey73
    Участник

    В таблицу скриптов вы можете добавлять много чего, по вашему усмотрению и требуемой задачи. Например для выходной формулы канала типа Output, привязанного к устройству — Translate(1101)
    Тут одновременно идет запись в выходной канал (формула выходная в канале 1105) и записывается значение в канал Расчетный с номером 1101

    В таблицах скриптов

    public double Translate(int num)
    {
    SetData(num, CmdVal, 1);
    return CmdVal;
    }
    #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.
    #36577
    saprin8
    Участник

    Так, либо я дурак, либо лыжи не едут.
    Вот есть формула SetVal(CnlNum, Cmd), в ней вместо CnlNum я подставляю номер канала, а вместо Cmd что я должен поставить, чтобы вводить нужное мне число из окна отправки команды, а не фиксированное число из администратора

    #36578
    manjey73
    Участник

    Cmd — это и есть то число, что вы вводите в окне команды.
    Если вам надо не число, возможно надо применять CmdData

    https://rapidscada.net/docs/ru/latest/configuration/scripts

    обратите внимание Cmd и CmdVal это синонимы. То есть принимается как одно.
    В примере выше у меня CmdVal в формуле Трансляции. Но используется не SetVal а SetData чтобы еще и статус каналу сразу записать.

    • Ответ изменён 1 год, 7 месяцев назад пользователем manjey73.
    • Ответ изменён 1 год, 7 месяцев назад пользователем manjey73.
    • Ответ изменён 1 год, 7 месяцев назад пользователем manjey73.
    #36582
    manjey73
    Участник

    А, если у вас канал стоит как Строка, то скорее всего вам надо обрабатывать в скрипте CmdDataStr

    Например если вы укажите Формат канала как DateTime, то при вводе в окне команды у вас будет CmdDataStr

    #36583
    saprin8
    Участник

    Все, теперь понятно, а то путаница с этими Cmd CnlVal CnlNum, иногда непонятно что имеется ввиду и что можно подставить в формулу. Спасибо

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

    А получается, что в 6ой версии без кода тега всё таки команда не работает.

    Код тега — это свойство канала. Когда команда на канал получена Сервером, он находит для неё номер устройства и код тега и отправляет в Коммуникатор.

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