Измерения Pt100

Просмотр 15 сообщений - с 31 по 45 (из 79 всего)
  • Автор
    Записи
  • #22389
    manjey73
    Участник

    Формулы

    CnlStat int Передаваемый Серверу статус входного канала до расчёта

    Вы в качестве передачи ошибки можете использовать статус канала.
    Немного приврал на счет размернойстей…
    Администратор — Справочники — Типы событий

    Вы можете создать уникальные статусы для кодов ошибок, например 1000, 10001 и т.д.
    Там прописать данные ошибки. И по аналогии с error в статус канала писать эти значения.
    Вы же вызываете формулу в канале, соответственно можно узнать номер текущего канала и поменять ему статус.

    #22390
    manjey73
    Участник

    CnlNum int Номер канала, формула которого вычисляется

    Вот, вы можете знать, для какого канала вызвана формула, соответственно и поменять ему статус при ошибке.
    1 — норма
    0 — недостоверные данные

    Или свои значения.

    #22391
    Oakim
    Участник

    Теперь понятно, буду пробовать. А в документации об этом где то есть?

    А можно в Формулу передать данные входного канала до расчета и потом этому каналу присвоить результат вычисления?

    А то я в СКАДЕ сделал через два канала.

    #22392
    a80808
    Участник

    Конечно. Функция Val() возвращает значение текущего канала, Val(n) — значение канала n.
    Соответственно возвращаете значение в текущий канал через return(значение), либо через SetVal(номер_канала, значение).

    Это все здесь

    #22393
    Oakim
    Участник

    «Val() — Текущее значение входного канала вычисляемой формулы»
    может я не русский, но мне это выражение не понятно, текущее значение до вычисления формулы, текущее значение после вычисления формулы.

    К сожалению во многих местах подобные разночтения и непонятки

    #22395
    a80808
    Участник

    Ну формула же еще не возвратила значение, т.е. то, что было до ее запуска.

    Т.е.
    znach = Val() запишет в znach содержимое канала (текущего, из которого вызвана формула) непосредственно в момент вызова Val()

    #22396
    Oakim
    Участник

    Так же мне непонятно, что такое «Статус канала» в Rapid SCADA и как это выражается и на что влияет?

    Например в другой СКАДЕ у меня если с объекта идут «подозрительные» данные, то на показаниях появляется «желтый треугольничек».

    #22397
    manjey73
    Участник

    @Oakim статус имеет цифровое значение, если 0, то канал недостоверен и в таблице будет 3 прочерка.
    Вы это увидите, если в Modbus добавите несуществующий регистр и запустите опрос.
    Так же можно вернуть в канал double.NaN вместо значения.

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

    #22398
    Oakim
    Участник

    Понятно, спасибо, буду пробовать.

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

    Существующие статусы можно посмотреть в таблице Типы событий в Администраторе.

    #22416
    Oakim
    Участник

    Такой вопрос, а можно через WriteLine() организовать вывод диагностической информации при вычислении формул в консоль Сервера?

    #22417
    manjey73
    Участник

    Скорее всего доступа к этим методам из формул нет. Но это не точно, возможно и можно подключить…

    Но вопрос в другом, в статистику сервера лично я заглядываю только если выползают ошибки, связанные именно с запуском сервера.
    Тут больше подходит именно изменение статусов наверное. Так как ошибку ведь должен определить оператор, у которого может не быть доступа к функционалу Администратора.

    #22418
    a80808
    Участник

    А что вы имеете в виду под консолью сервера? Консоль к серверу — Администратор (если можно так сказать :)), прямого вывода не предусмотрено, все через ЛОГ файлы.
    Как вариант можно попробовать писать в текстовый (свой) файл.
    Запись из формул в файл

    #22422
    Oakim
    Участник

    Это не для оператора, а для разработчика.

    Я попробовал Console.WriteLine(); компилируется, но не в одну консоль данные не выводятся.

    GetBit как по мне работает некорректно, в MasterSCADA у меня приходил Int16 в OPC он преобразовывался в Int32 после чего разбирался на биты состояния ТС.

    В Rapid SCADA я указываю в Коммуникатере получить данные типа short после чего разбираю формулой GetBit (в формуле входной формат double) и получаю вместо «0», что то непонятное.

    #22424
    manjey73
    Участник

    Даже если из коммуникатора приходит short, он преобразуется в double канала без изменения битов. Не должно быть проблем с GetBit в данном случае.

    Тут не Console.WriteLine() должно быть, потому что тут не Console
    Тут что-то аналогичное как в драйверах WriteToLog но для серверной части и как написал выше, может быть недоступно из формул, так как к формулам не подключен данный метод скорее всего.


    @a80808
    дал ссылку на формулы, но на всю тему, там в конце есть формула retain.
    На примере записи в файл. В формулах не указан using Sistem.IO но при этом его можно вызвать явно из формул. А вот можно ли вызвать явно функцию записи в лог сервера тут вопрос. Так как может не быть доступа к части пространства имен в принципе.

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