Функции (формулы) для Rapid SCADA

Стартовая страница Форумы Понять, как работает ПО Формулы Функции (формулы) для Rapid SCADA

Просмотр 15 сообщений - с 106 по 120 (из 150 всего)
  • Автор
    Сообщения
  • #33240
    Z_h_e
    Участник

    func( val(101))
    Так не работает?

    #33241
    Z_h_e
    Участник

    Upd: Val с заглавной

    #33242
    RX9COZ
    Участник

    Не работает. Да даже если бы работало, это мне для каждого устройства пришлось бы новую функцию писать. Сейчас 101 канал, в другой раз другой будет и опять новую функцию что-ли создавать.

    #33243
    Z_h_e
    Участник

    У меня рапид v6.2.
    Есть мной написанная функция у которой три параметра. Используется в расчетном канале. И как раз использую в параметрах возвращаемое значение функцией Val(n) и тоже три разных канала. Все работает.

    #33244
    manjey73
    Участник
    public bool myFunc (double par1, double par2, double par3)
    {
    bool xbool = false;
    ваши расчеты и назначение xbool true или false
    return xbool;
    }

    В данном случае вызывая функцию в расчетном канале вы должны передать значения нужных каналов

    myFunc(Val(101), Val(102), Val(103))

    Другой вариант

    public double myFunc (int cnlN1, int cnlN2, int cnlN3)
    {
    bool q = false;
    Приводим к булям значения каналов
    bool cnl1 = Val(cnlN1) > 0;
    bool cnl2 = Val(cnlN2) > 0;
    bool cnl3 = Val(cnlN3) > 0;
    ваши расчеты и назначение q true или false
    return Convert.ToDouble(q);
    }

    Вызов
    myFunc(101, 102, 103)

    Передавать номера каналов симпатичнее 🙂

    Вариантов много и разных…

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

    Собственно внутри сами выбираете с чем работать, с булями, целыми, float или double
    Главное их привести к тому типу, на чем вы будете строить логику.

    Ну и вернуть либо нужный тип, либо выбрать какой тип будет возвращать функция, а движок формул Scada сам конвертнет в double для записи в канал.

    #33247
    manjey73
    Участник

    Просто поймите концепцию.

    Данные канала хранятся в double
    Чтобы вы не возвращали функцией будет преобразовано в double для записи значения в канал при этом только 8 байт. Если работаете со строками, думайте о создании массива каналов.
    При это вы сами решаете что будет возвращать функция, даже если делаете обработку bool вы можете вернуть далеко не bool, указав что функция должна возвращать double

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

    Другой вариант

    Вот это мне нравится. Этого я и пытался добиться. Заработало ! Мне просто было непонятна структура функции. Где функция объявляется в скобках указываются номера каналов, а значения этих каналов можно присвоить в объявленную переменную выражением например var1 = Val(cnlN1), где cnlN1 тоже переменная типа int содержащая в себе номер канала, значение которого присвоится в var1.

    #33250
    manjey73
    Участник

    В документацю загляните по формулам.
    Некоторые вопросы отпадут.

    #33623
    malen
    Участник

    Здравствуйте.Подскажите, как масштабировать число?
    Получаю с ОРС сервера 35890,0 нужно вывести 3589,0 скада 5 версия.
    С написанием формул тяжело.

    #33624
    JurasskPark
    Участник

    В формуле канала пропишите формулу Cnl*0.1.

    #33625
    JurasskPark
    Участник

    Или вам именно нужно линейное масштабирование?

    #33627
    manjey73
    Участник

    тут простое деление на 10, это не масштабирование.
    или Cnl/10 что то же самое, что Cnl*0.1

    #33635
    malen
    Участник

    Спасибо.Мне деление нужно.Не грамотно выразился.

    #34253
    mr_smit
    Участник

    Как при этом оставить это масштабирование для графика?

    Например, по modbus во входной канал читается температура в виде целого числа «2536». Что означает «25,36» °С. Я пишу в формуле Cnl/100. Но когда нажимаю в Web на это число, чтобы построить график, то на графике значения «2536». Т.е. те что непосредственно считываются с устройства. А как на графике реальную температуру увидеть?

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