Ответы в темах
-
АвторЗаписи
-
OakimУчастникЕсли через Modbus Pool отправляю строку
01 04 01 00 00 01 30 36
то получаю такой же ответ01 04 02 00 00 B9 30
OakimУчастникТак что то не то после коммуникатора, а это может быть только формула GetBit
OakimУчастникАдрес МодБас правильный, тип short тоже, так как если меняю хоть один параметр на что то другое, то сразу получаю ошибку «02 Неправильный адрес данных»
OakimУчастникЭто для примера, с номерами бита от 0 до 7.
я тут в другой ветке нашел инструкцию по настройке канала под мой случай
Считывание битовой маски с Овен МВ110А может ли Тип входного Канала влиять на GetBit?
OakimУчастникПонял попробую
OakimУчастникЗапрос к Контроллеру
Формат short перестановка бит 10325476 (такая же была в InSAT OPC)
Запрос значений группы элементов "Diskret Inputs" Отправка (8): 01 04 01 00 00 01 30 36 Приём (5/5): 01 04 02 00 00 Приём (2/2): B9 30 OK!Modbus Parser
Part of Data Package Description Value 01 Slave address 0x01 (1) 04 Function code 0x04 (4) - Read Input Registers 02 Byte count 0x02 (2) 00 00 Register value 0x0000 (0) B9 30 CRC 0xB930 (47408)То есть приходит 00 00 два байта равных нулю
но после GetBit(Вх.канал,0-7) я получаю — 10101001
OakimУчастникВозможно проблема в перестановке битов и еще в чем не знаю, для этого и хочу вывести промежуточные данные что бы разобрать что к чему.
Вывод в файл меня тоже вполне устроит. Буду пробовать.
OakimУчастникЭто не для оператора, а для разработчика.
Я попробовал Console.WriteLine(); компилируется, но не в одну консоль данные не выводятся.
GetBit как по мне работает некорректно, в MasterSCADA у меня приходил Int16 в OPC он преобразовывался в Int32 после чего разбирался на биты состояния ТС.
В Rapid SCADA я указываю в Коммуникатере получить данные типа short после чего разбираю формулой GetBit (в формуле входной формат double) и получаю вместо «0», что то непонятное.
OakimУчастникТакой вопрос, а можно через WriteLine() организовать вывод диагностической информации при вычислении формул в консоль Сервера?
OakimУчастникПонятно, спасибо, буду пробовать.
OakimУчастникТак же мне непонятно, что такое «Статус канала» в Rapid SCADA и как это выражается и на что влияет?
Например в другой СКАДЕ у меня если с объекта идут «подозрительные» данные, то на показаниях появляется «желтый треугольничек».
OakimУчастник«Val() — Текущее значение входного канала вычисляемой формулы»
может я не русский, но мне это выражение не понятно, текущее значение до вычисления формулы, текущее значение после вычисления формулы.К сожалению во многих местах подобные разночтения и непонятки
OakimУчастникТеперь понятно, буду пробовать. А в документации об этом где то есть?
А можно в Формулу передать данные входного канала до расчета и потом этому каналу присвоить результат вычисления?
А то я в СКАДЕ сделал через два канала.
OakimУчастникmanjey73 я вас не понимаю 🙁 Я еще плохо знаю RapidSCADA и еще C#.
OakimУчастникНаписал функцию, вроде работает!
В параметрах канала тип «Дорасчетный ТИ» ставлю галку «Исп.формулу» пишу
ResToTemp(Val(401))public double ResToTemp(double Resist) { //Пересчет сопротивления в температура для Pt100 double Tmp, Temp; double A = 3.9083E-3; double B = -5.775E-7; if (Resist >= 100.0) { Temp=(Math.Sqrt(Math.Pow(A,2)-(4*B*(1.0-(Resist/100.0))))-A)/(2.0*B); } else { Tmp = (Resist/100.0)-1; Temp = (Tmp*255.819)+(Math.Pow(Tmp,2)*9.14550)+(Math.Pow(Tmp,3)*(-2.92363))+(Math.Pow(Tmp,4)*(1.7909)); } return Temp; } -
АвторЗаписи