Oakim

Ответы в темах

Просмотр 15 сообщений - с 91 по 105 (из 136 всего)
  • Автор
    Записи
  • в ответ на: Измерения Pt100 #22384
    Oakim
    Участник

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

    в ответ на: Измерения Pt100 #22379
    Oakim
    Участник

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

    в ответ на: Измерения Pt100 #22378
    Oakim
    Участник

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

    в ответ на: Измерения Pt100 #22371
    Oakim
    Участник

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

    в ответ на: Измерения Pt100 #22366
    Oakim
    Участник

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

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

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

    в ответ на: Измерения Pt100 #22361
    Oakim
    Участник

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

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

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

    в ответ на: Измерения Pt100 #22357
    Oakim
    Участник

    Вот черновик функции

    public float ResToTemp(params float Resist)
    {
      float Tmp, Temp;
      float A = 3.9083E-3F;
      float B = -5.775E-5F;
      if (Resist >= 100)
      {
        Temp = (sqrt(pow(A,2)-4*(B)*(1-Resist/100))-A)/(2*B);
      }
      else
      {
        Tmp = (Resist/100)-1;
        Temp = (Tmp*255.819)+(pow(Tmp,2)*9.14550)+(pow(Tmp,3)*(-2.92363))+(pow(Tmp,4)*(1.7909));
      }
    }
    • Ответ изменён 4 года, 4 месяца назад пользователем Oakim.
    • Ответ изменён 4 года, 4 месяца назад пользователем Oakim.
    в ответ на: Измерения Pt100 #22352
    Oakim
    Участник

    Понятно спасибо сейчас поробую

    в ответ на: Измерения Pt100 #22347
    Oakim
    Участник

    Мне нужно сопротивление PT100 в Омах пересчитать в Температуру в Цельсиях.

    Как мне вот этот кусок переписать под Rapid SCADA?

    tmp:=(in/100)-1;
    
    IF in>=100 THEN 	
    	out:=(SQRT(EXPT(3.9083*EXPT(10,-3),2) - 4*(-5.775*EXPT(10,-7))*(1-in/100)) - 3.9083*EXPT(10,-3))/(2*(-5.775*EXPT(10,-7)));
    	IF in>390.48 THEN
    		error:=2;
    	ELSE error:=0;
    	END_IF
    	
    ELSE
    	out:=(tmp*255.819)+(tmp*tmp*9.14550)-(tmp*tmp*tmp*(-2.92363))-(tmp*tmp*tmp*tmp*(1.7909));	
    	IF in<18.52 THEN
    		error:=1;
    	ELSE error:=0;
    	END_IF
    	
    END_IF
    

    Вот эта математика
    Методика расчета температуры по сопротивлению термометров сопротивления

    • Ответ изменён 4 года, 4 месяца назад пользователем Oakim.
    в ответ на: Измерения Pt100 #22341
    Oakim
    Участник

    В MasterSCADA у меня была следующая функция:

    PROGRAM MAIN_PROGRAM
    
    VAR_INPUT
        in1:REAL;
        in2:REAL;
        in3:REAL;
        in4:REAL;
    END_VAR
    
    VAR_OUTPUT
        out1:REAL;
        out2:REAL;
        out3:REAL;
        out4:REAL;
        error1:INT;
        error2:INT;
        error3:INT;
        error4:INT;
    END_VAR
    
    VAR 
    	res_to_temp1:RES_TO_TEMP;
    	res_to_temp2:RES_TO_TEMP;
    	res_to_temp3:RES_TO_TEMP;
    	res_to_temp4:RES_TO_TEMP;
    
    END_VAR
    res_to_temp1(in:=in1,out=>out1,error=>error1);
    res_to_temp2(in:=in2,out=>out2,error=>error2);
    res_to_temp3(in:=in3,out=>out3,error=>error3);
    res_to_temp4(in:=in4,out=>out4,error=>error4);
    
    END_PROGRAM
    
    FUNCTION_BLOCK RES_TO_TEMP
    
    	VAR_INPUT
    	    in:REAL;
    	END_VAR
    	
    	VAR_OUTPUT
    	    out:REAL;
    	    error:INT;
    	END_VAR
    	
    	VAR
    		tmp:REAL;
    	END_VAR
    	
    	
    tmp:=(in/100)-1;
    
    IF in>=100 THEN 	
    	out:=(SQRT(EXPT(3.9083*EXPT(10,-3),2) - 4*(-5.775*EXPT(10,-7))*(1-in/100)) - 3.9083*EXPT(10,-3))/(2*(-5.775*EXPT(10,-7)));
    	IF in>390.48 THEN
    		error:=2;
    	ELSE error:=0;
    	END_IF
    	
    ELSE
    	out:=(tmp*255.819)+(tmp*tmp*9.14550)-(tmp*tmp*tmp*(-2.92363))-(tmp*tmp*tmp*tmp*(1.7909));	
    	IF in<18.52 THEN
    		error:=1;
    	ELSE error:=0;
    	END_IF
    	
    END_IF
    
    END_FUNCTION_BLOCK 
    в ответ на: Распаковка 32 бит #22321
    Oakim
    Участник

    О спасибо за подсказку, сейчас почитаю.

    в ответ на: Распаковка 32 бит #22319
    Oakim
    Участник

    В С# я нашел такие функции
    «Если требуется иметь дело с множеством битов, можно применить класс BitArray и структуру BitVector32. Класс BitArray расположен в пространстве имен System.Collections, a BitVector32 — в пространстве System.Collections.Specialized.»

    Но как их применить?

    в ответ на: Изменить в интерфейсе порядок #22298
    Oakim
    Участник

    Пытаюсь поставить 6, но пока, что то не едет.

    в ответ на: Изменить в интерфейсе порядок #22294
    Oakim
    Участник

    Проекты у меня простые, только нужно информирование при помощи СМС по аварийному сигналу с объекта.

    в ответ на: Изменить в интерфейсе порядок #22280
    Oakim
    Участник

    Переименовал и папки и файлы латиницей и пробелы по убирал, не помогло.

Просмотр 15 сообщений - с 91 по 105 (из 136 всего)