Стартовая страница › Форумы › Взаимодействие с устройствами › Измерения Pt100
- В этой теме 78 ответов, 4 участника, последнее обновление 2 года, 1 месяц назад сделано manjey73.
-
АвторСообщения
-
15.03.2022 в 14:42 #22361OakimУчастник
Это уже готовые щиты на котельных, которые некто не будет переделывать.
Я сейчас просто все перевожу с MasterSCADA 3 на Rapid SCADA.
Для этого есть ряд причин:
1. Кончились лицензии на входные каналы, а расширяться очень дорого
2. Отстойный Web-клиент, а смотреть состояние объектов нужно удаленно15.03.2022 в 15:00 #22362a80808УчастникНу тогда заказчик должен понимать, что точность может быть невысока…Либо корректирующие коэффициенты вводить…
Успеха!
15.03.2022 в 15:01 #22363MikhailМодераторВозведение в степень
Класс Math
Ключевое слово params- Этот ответ был изменен 2 года, 1 месяц назад от Mikhail.
15.03.2022 в 15:07 #22366OakimУчастникМихаил спасибо я это смотрел и на основании этой документации написал функцию.
Единственное с чем пока не разобрался это с приведением типов float к double, так как во всех мат функциях используется double.
Так же не понятно, как сделать выходной параметр Error на случай отсутствия связи с датчиком или чем то подобным.
15.03.2022 в 15:20 #22371OakimУчастникПонятно
params
в данной функции не к месту, спасибо.15.03.2022 в 16:49 #22373manjey73Участник(double)float_значение или
Convert.ToDouble(float_значение)
Михаил, вот такое как сделать и можно ли?
public double myFunc(double input_param, out int out_param)
Ну и собственно out_param передать в нужный канал ????
Очень бы полезно было иметь такой вариант в формулах(скриптах)- Этот ответ был изменен 2 года, 1 месяц назад от manjey73.
15.03.2022 в 16:53 #22375a80808Участник@oakim, а вы планируете ставить на каждом объекте свой сервер RSCADA а потом собирать (или не собирать) на общий или сразу будете транслировать сигналы датчиков в центр? Там же задержки будут неприемлемые. Надеюсь у вас там режим не ведут по этим данным? Если не секрет, через что «тащите» данные о сопротивлении ТС?
Или это чисто информационная система?16.03.2022 в 07:50 #22378OakimУчастникНа газовых модульных котельных без обслуживающего персонала своя автоматика, а это система мониторинга состояния объектов.
Раньше сами щиты собирали на базе Овена, но сейчас пошли «разношерстные» контроллеры все в одном типа CCU825, Ksital GSM-12T (дебильный протокол нужно драйвер делать), которые и данные шлют и СМС информирование делают.
Все заводили на MasterSCADA 3, но она себя показала с плохой стороны, крайне глючная, тормознутая и денег много нужно на ее обслуживание.
Решили все перевести на Rapid SCADA.
Для построения канала связи с объекта есть ряд отработанных решений:
1. Если выход с контроллера RS232 или RS485, то ставим Teleofis WRX на объект, а на сервере стоит M2M24 Desktop который принимает проброс портов и создают на сервере виртуальные порты;
2. Если интерфейс Ethernet, то ставим роутер IRZ или тот же Teleofis которые через тунель (OpenVPN, L2TP) соединяются с сетью в которой сервер диспетчеризации.16.03.2022 в 08:09 #22379OakimУчастникДа протокол ModBUS совсем не подходит для передачи по ненадежным каналам связи таким как GSM/GPRS, так при сбоях в канале связи могут приходить не корректные данные, так как у ModBUS нет механизмов проверки целостности передаваемых данных.
Если необходимо дистанционное управление, то применяем маршрутизаторы с направленными антенами и протокол МЭК 104.16.03.2022 в 09:43 #22382manjey73УчастникВообще-то у Modbus есть CRC а если используется TCP то сам TCP проверяет целостность данных.
16.03.2022 в 09:50 #22384OakimУчастникЕсли вы искренне верите в то, что CRC вас спасет от всех «бед» пусть будет так, я не буду вас в этом разубеждать 😉
16.03.2022 в 10:53 #22385OakimУчастникНаписал функцию, вроде работает!
В параметрах канала тип «Дорасчетный ТИ» ставлю галку «Исп.формулу» пишу
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; }
16.03.2022 в 11:57 #22386manjey73УчастникУ Modbus самый лучший CRC, который я видел по сравнению с другими протоколами, ИБО
Только в Modbus пакет вместе с CRC при расчете дает строгий 0. То есть можно выполнять двойную проверку. Все остальные способы, которые попадались, дадут совершенно другое число, если на расчет подать пакет вместе с контрольной суммой.
Вероятность нарушения пакета, чтобы совпала CRC настолько мала, что ее можно игнорировать.
Другой вопрос в качестве связи через Ethernet — RS485 преобразователи, типа Teleofis и т.д. уже другой вопрос. Например GSM терминалы любят кидать мусор в начале пакета в виде 0xFF то байт то два. Но к самому пакету это имеет мало отношения.
16.03.2022 в 12:00 #22387manjey73УчастникВот по вашей формуле, если нет варианта использовать out int ERROR
Ждем Михаила для ответа.Вы можете внутри формулы вместо переменной менять статус канала, посмотрите как…
И например присвоить специализированные статусы, которые потом добавить в размерности…16.03.2022 в 13:18 #22388OakimУчастникmanjey73 я вас не понимаю 🙁 Я еще плохо знаю RapidSCADA и еще C#.
-
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.