Стартовая страница › Форумы › Понять, как работает ПО › Использование формулы для данных SNMP
- В этой теме 18 ответов, 4 участника, последнее обновление 6 месяцев назад сделано
Vitaly_Zhidkov.
-
АвторСообщения
-
04.06.2025 в 10:30 #38680
Vitaly_Zhidkov
УчастникНужно сделать простой дорасчёт для принимаемого значения тега в RapidSCADA.
Принимаю значение напряжения батареи от контроллера в виде 271.0. Соответственно, для его использования в системе, вывода на схему нужно это значение умножать на 0.1, чтобы было 27,1 В.Изучил документацию по формулам.
Во входной канал тега поставил галочку «Формула вкл.», в поле «Входная формула» прописал Cnl/10. Вывел значение тега на схему.
Применил изменения, но ничего не произошло. Формула не сработала.
Добавил в формулу прибавление: Cnl/10 + 10.
В этом случае на схеме вместо преобразования тега отображается только то, что я прибавляю, то есть 10.Данные от этого контроллера принимаю по SNMP протоколу.
Решил проверить все те же действия для тега, принимаемого от другого контроллера по протоколу Modbus. В этом случае срабатывают все действия в формуле.
Для контроллера с протоколом SNMP создал отдельный дорасчётный канал, в который прописал Val(10615)/10+100; Stat(10615). И опять на схему выводится только 100, то есть то, что прибавляю.
Ни само значение исходного тега, ни его деление на 10 не выводится.Почему не до конца работает формула для тега входного значения, принимаемого по SNMP?
Как это можно исправить или обойти?
Может быть, я что-то не настроил или требуется лицензия?04.06.2025 в 10:35 #38681
manjey73УчастникПредположительно там строка, а не значение. Возможно по этому ?
тег в SNMP может быть представлен как строковой со всеми вытекающими.Каких-то лицензий тут не требуется.
-
Ответ изменён 6 месяцев, 1 неделя назад пользователем
manjey73.
04.06.2025 в 10:38 #38683
manjey73Участниккак вариант, если это Ascii.
DecodeAscii(Cnl)/10 но может не сработать 🙂
-
Ответ изменён 6 месяцев, 1 неделя назад пользователем
manjey73.
04.06.2025 в 10:58 #38685
a80808УчастникТам точка как десятичный разделитель.
04.06.2025 в 11:01 #38686
manjey73Участникну может у человека английский вариант?
Если русский и точка, то скорее всего строка.
Ее надо преобразовать в число правильно и потом поделить на 10.04.06.2025 в 11:08 #38687
a80808УчастникТам еще и SNMP…
04.06.2025 в 11:10 #38688Vitaly_Zhidkov
УчастникОт устройства все данные передаются как Integer. Это можно увидеть в таблице MIB и при опросе по SNMPWalk в командной строке.
При приёме в шаблоне устройства SNMP указываю тип данных Integer, точнее Int64.
При создании каналов в таблице также для всех для них указываю тип Integer.
Передача данных от устройства выполняется стабильно.04.06.2025 в 11:15 #38689Vitaly_Zhidkov
УчастникКак принтскрины здесь на форуме прикреплять?
04.06.2025 в 11:16 #38690Vitaly_Zhidkov
УчастникВыложил на файлообменник. Принтскрины по поводу типа данных.
https://transfiles.ru/gla1i04.06.2025 в 11:22 #38691Vitaly_Zhidkov
УчастникИспользование формулы DecodeAscii(Cnl)/10 приводит к тому, что веб-интерфейс системы перестает загружаться. То есть система считает, что это ошибка.
04.06.2025 в 11:24 #38692Vitaly_Zhidkov
УчастникПо возможности протестируйте у себя прием данных по SNMP и применение формул к ним. Может быть, это связано именно с типом данных?
04.06.2025 в 11:40 #38693
manjey73УчастникЕсли Integer то должно работать деление штатно вроде Cnl/10
04.06.2025 в 11:42 #38694
manjey73УчастникА уберите Integer, просто пусто оставьте. И в Драйвере SNMP выбрать double
Интересно, как мы у себя протестируем?-
Ответ изменён 6 месяцев, 1 неделя назад пользователем
manjey73.
04.06.2025 в 11:44 #38696
manjey73УчастникРасход Топлива и Температура двигателя, че у вас там ?
04.06.2025 в 12:01 #38697
a80808УчастникМожет там Integer на входе в драйвер, а после него? Вариант
(double)Cnl/10 не проходит? -
Ответ изменён 6 месяцев, 1 неделя назад пользователем
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.