Стартовая страница › Форумы › Взаимодействие с устройствами › Измерения Pt100
- В этой теме 78 ответов, 4 участника, последнее обновление 4 года, 4 месяца назад сделано
manjey73.
-
АвторЗаписи
-
16.03.2022 в 13:42 #22389
manjey73УчастникCnlStat int Передаваемый Серверу статус входного канала до расчёта
Вы в качестве передачи ошибки можете использовать статус канала.
Немного приврал на счет размернойстей…
Администратор — Справочники — Типы событийВы можете создать уникальные статусы для кодов ошибок, например 1000, 10001 и т.д.
Там прописать данные ошибки. И по аналогии с error в статус канала писать эти значения.
Вы же вызываете формулу в канале, соответственно можно узнать номер текущего канала и поменять ему статус.16.03.2022 в 13:44 #22390
manjey73УчастникCnlNum int Номер канала, формула которого вычисляется
Вот, вы можете знать, для какого канала вызвана формула, соответственно и поменять ему статус при ошибке.
1 — норма
0 — недостоверные данныеИли свои значения.
16.03.2022 в 14:37 #22391
OakimУчастникТеперь понятно, буду пробовать. А в документации об этом где то есть?
А можно в Формулу передать данные входного канала до расчета и потом этому каналу присвоить результат вычисления?
А то я в СКАДЕ сделал через два канала.
16.03.2022 в 14:45 #22392
a80808УчастникКонечно. Функция Val() возвращает значение текущего канала, Val(n) — значение канала n.
Соответственно возвращаете значение в текущий канал через return(значение), либо через SetVal(номер_канала, значение).16.03.2022 в 14:52 #22393
OakimУчастник«Val() — Текущее значение входного канала вычисляемой формулы»
может я не русский, но мне это выражение не понятно, текущее значение до вычисления формулы, текущее значение после вычисления формулы.К сожалению во многих местах подобные разночтения и непонятки
16.03.2022 в 15:03 #22395
a80808УчастникНу формула же еще не возвратила значение, т.е. то, что было до ее запуска.
Т.е.
znach = Val() запишет в znach содержимое канала (текущего, из которого вызвана формула) непосредственно в момент вызова Val()16.03.2022 в 15:20 #22396
OakimУчастникТак же мне непонятно, что такое «Статус канала» в Rapid SCADA и как это выражается и на что влияет?
Например в другой СКАДЕ у меня если с объекта идут «подозрительные» данные, то на показаниях появляется «желтый треугольничек».
16.03.2022 в 15:26 #22397
manjey73Участник@Oakim статус имеет цифровое значение, если 0, то канал недостоверен и в таблице будет 3 прочерка.
Вы это увидите, если в Modbus добавите несуществующий регистр и запустите опрос.
Так же можно вернуть в канал double.NaN вместо значения.А так же, вы можете создавать свои типы событий и назначать им цвета и формулами менять цвет значения.
16.03.2022 в 15:29 #22398
OakimУчастникПонятно, спасибо, буду пробовать.
16.03.2022 в 16:50 #22400
MikhailМодераторСуществующие статусы можно посмотреть в таблице Типы событий в Администраторе.
17.03.2022 в 10:04 #22416
OakimУчастникТакой вопрос, а можно через WriteLine() организовать вывод диагностической информации при вычислении формул в консоль Сервера?
17.03.2022 в 10:15 #22417
manjey73УчастникСкорее всего доступа к этим методам из формул нет. Но это не точно, возможно и можно подключить…
Но вопрос в другом, в статистику сервера лично я заглядываю только если выползают ошибки, связанные именно с запуском сервера.
Тут больше подходит именно изменение статусов наверное. Так как ошибку ведь должен определить оператор, у которого может не быть доступа к функционалу Администратора.17.03.2022 в 10:21 #22418
a80808УчастникА что вы имеете в виду под консолью сервера? Консоль к серверу — Администратор (если можно так сказать :)), прямого вывода не предусмотрено, все через ЛОГ файлы.
Как вариант можно попробовать писать в текстовый (свой) файл.
Запись из формул в файл17.03.2022 в 10:41 #22422
OakimУчастникЭто не для оператора, а для разработчика.
Я попробовал Console.WriteLine(); компилируется, но не в одну консоль данные не выводятся.
GetBit как по мне работает некорректно, в MasterSCADA у меня приходил Int16 в OPC он преобразовывался в Int32 после чего разбирался на биты состояния ТС.
В Rapid SCADA я указываю в Коммуникатере получить данные типа short после чего разбираю формулой GetBit (в формуле входной формат double) и получаю вместо «0», что то непонятное.
17.03.2022 в 10:51 #22424
manjey73УчастникДаже если из коммуникатора приходит short, он преобразуется в double канала без изменения битов. Не должно быть проблем с GetBit в данном случае.
Тут не Console.WriteLine() должно быть, потому что тут не Console
Тут что-то аналогичное как в драйверах WriteToLog но для серверной части и как написал выше, может быть недоступно из формул, так как к формулам не подключен данный метод скорее всего.
@a80808 дал ссылку на формулы, но на всю тему, там в конце есть формула retain.
На примере записи в файл. В формулах не указан using Sistem.IO но при этом его можно вызвать явно из формул. А вот можно ли вызвать явно функцию записи в лог сервера тут вопрос. Так как может не быть доступа к части пространства имен в принципе. -
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.