Измерения Pt100

Просмотр 15 сообщений - с 16 по 30 (из 79 всего)
  • Автор
    Сообщения
  • #22361
    Oakim
    Участник

    Это уже готовые щиты на котельных, которые некто не будет переделывать.

    Я сейчас просто все перевожу с MasterSCADA 3 на Rapid SCADA.

    Для этого есть ряд причин:
    1. Кончились лицензии на входные каналы, а расширяться очень дорого
    2. Отстойный Web-клиент, а смотреть состояние объектов нужно удаленно

    #22362
    a80808
    Участник

    Ну тогда заказчик должен понимать, что точность может быть невысока…Либо корректирующие коэффициенты вводить…

    Успеха!

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

    Возведение в степень
    Класс Math
    Ключевое слово params

    • Этот ответ был изменен 2 года, 1 месяц назад от Mikhail.
    #22366
    Oakim
    Участник

    Михаил спасибо я это смотрел и на основании этой документации написал функцию.

    Единственное с чем пока не разобрался это с приведением типов float к double, так как во всех мат функциях используется double.

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

    #22371
    Oakim
    Участник

    Понятно params в данной функции не к месту, спасибо.

    #22373
    manjey73
    Участник

    (double)float_значение или

    Convert.ToDouble(float_значение)

    Михаил, вот такое как сделать и можно ли?

    public double myFunc(double input_param, out int out_param)

    Ну и собственно out_param передать в нужный канал ????
    Очень бы полезно было иметь такой вариант в формулах(скриптах)

    • Этот ответ был изменен 2 года, 1 месяц назад от manjey73.
    #22375
    a80808
    Участник

    @oakim, а вы планируете ставить на каждом объекте свой сервер RSCADA а потом собирать (или не собирать) на общий или сразу будете транслировать сигналы датчиков в центр? Там же задержки будут неприемлемые. Надеюсь у вас там режим не ведут по этим данным? Если не секрет, через что «тащите» данные о сопротивлении ТС?
    Или это чисто информационная система?

    #22378
    Oakim
    Участник

    На газовых модульных котельных без обслуживающего персонала своя автоматика, а это система мониторинга состояния объектов.
    Раньше сами щиты собирали на базе Овена, но сейчас пошли «разношерстные» контроллеры все в одном типа CCU825, Ksital GSM-12T (дебильный протокол нужно драйвер делать), которые и данные шлют и СМС информирование делают.
    Все заводили на MasterSCADA 3, но она себя показала с плохой стороны, крайне глючная, тормознутая и денег много нужно на ее обслуживание.
    Решили все перевести на Rapid SCADA.
    Для построения канала связи с объекта есть ряд отработанных решений:
    1. Если выход с контроллера RS232 или RS485, то ставим Teleofis WRX на объект, а на сервере стоит M2M24 Desktop который принимает проброс портов и создают на сервере виртуальные порты;
    2. Если интерфейс Ethernet, то ставим роутер IRZ или тот же Teleofis которые через тунель (OpenVPN, L2TP) соединяются с сетью в которой сервер диспетчеризации.

    #22379
    Oakim
    Участник

    Да протокол ModBUS совсем не подходит для передачи по ненадежным каналам связи таким как GSM/GPRS, так при сбоях в канале связи могут приходить не корректные данные, так как у ModBUS нет механизмов проверки целостности передаваемых данных.
    Если необходимо дистанционное управление, то применяем маршрутизаторы с направленными антенами и протокол МЭК 104.

    #22382
    manjey73
    Участник

    Вообще-то у Modbus есть CRC а если используется TCP то сам TCP проверяет целостность данных.

    #22384
    Oakim
    Участник

    Если вы искренне верите в то, что CRC вас спасет от всех «бед» пусть будет так, я не буду вас в этом разубеждать 😉

    #22385
    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;
    }
    #22386
    manjey73
    Участник

    У Modbus самый лучший CRC, который я видел по сравнению с другими протоколами, ИБО

    Только в Modbus пакет вместе с CRC при расчете дает строгий 0. То есть можно выполнять двойную проверку. Все остальные способы, которые попадались, дадут совершенно другое число, если на расчет подать пакет вместе с контрольной суммой.

    Вероятность нарушения пакета, чтобы совпала CRC настолько мала, что ее можно игнорировать.

    Другой вопрос в качестве связи через Ethernet — RS485 преобразователи, типа Teleofis и т.д. уже другой вопрос. Например GSM терминалы любят кидать мусор в начале пакета в виде 0xFF то байт то два. Но к самому пакету это имеет мало отношения.

    #22387
    manjey73
    Участник

    Вот по вашей формуле, если нет варианта использовать out int ERROR
    Ждем Михаила для ответа.

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

    #22388
    Oakim
    Участник

    manjey73 я вас не понимаю 🙁 Я еще плохо знаю RapidSCADA и еще C#.

Просмотр 15 сообщений - с 16 по 30 (из 79 всего)
  • Вы должны авторизироваться для ответа в этой теме.