Электросчетчики Энергомеры

inspectorcot
Offline
Зарегистрирован: 21.02.2018

Вообще, если я правильно понял, то String тормозит контроллер, возможно что большое количество обработки, не дает ему нормально работать. Ну это  я предполагаю всеголишь.

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Со стрингами вы намутили, конечно. Попробую вам подмогнуть.

Какой у вас формат ответа устройства? Как определяется конец пакета, какие разделители строк?

Сделайте вывод с Serial.print("'"); Serial.print((char) inChar);  Serial.print("' => 0x ");  Serial.println((byte) inChar, HEX) для всего входящего пакета и спрячьте под коврик (как сворачивающийся код)

inspectorcot
Offline
Зарегистрирован: 21.02.2018

запрос на снятие показаний электроэнергии в ASCII выглядит так:

/EKT5CE301v7
P0(777777) ET0PE(21289.6077754)
ET0PE(13880.1965646)
ET0PE(4313.440324)
ET0PE(3095.9708868)
ET0PE(0.0)
ET0PE(0.0)
9

в HEX :

2F
45
4B
54
35
43
45
33
30
31
76
37
D
A
1
50
30
2
28
37
37
37
37
37
37
29
3
20
2
45
54
30
50
45
28
32
31
32
38
39
2E
36
30
37
37
37
35
34
29
D
A
45
54
30
50
45
28
31
33
38
38
30
2E
31
39
36
35
36
34
36
29
D
A
45
54
30
50
45
28
34
33
31
33
2E
34
34
30
33
32
34
29
D
A
45
54
30
50
45
28
33
30
39
35
2E
39
37
30
38
38
36
38
29
D
A
45
54
30
50
45
28
30
2E
30
29
D
A
45
54
30
50
45
28
30
2E
30
29
D
A
3
39

 

 

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Эх... просил же со стрелочкой... Символ => код символа. Я же не компутер, чтобы прям в ASCII-кодах читать. 

Но я вот вижу, что есть 0x0D 0x0A - это CRLF. А вот это 0x03, 0x02 - они постоянно лезут? Пакет всегда заканчивается одинаково?

inspectorcot
Offline
Зарегистрирован: 21.02.2018

извиняюсь

все что есть в порту

'/' => 0x 2F
'E' => 0x 45
'K' => 0x 4B
'T' => 0x 54
'5' => 0x 35
'C' => 0x 43
'E' => 0x 45
'3' => 0x 33
'0' => 0x 30
'1' => 0x 31
'v' => 0x 76
'7' => 0x 37
'
' => 0x D
'
' => 0x A
'' => 0x 1
'P' => 0x 50
'0' => 0x 30
'' => 0x 2
'(' => 0x 28
'7' => 0x 37
'7' => 0x 37
'7' => 0x 37
'7' => 0x 37
'7' => 0x 37
'7' => 0x 37
')' => 0x 29
'' => 0x 3
' ' => 0x 20
'' => 0x 2
'E' => 0x 45
'T' => 0x 54
'0' => 0x 30
'P' => 0x 50
'E' => 0x 45
'(' => 0x 28
'2' => 0x 32
'1' => 0x 31
'2' => 0x 32
'8' => 0x 38
'9' => 0x 39
'.' => 0x 2E
'6' => 0x 36
'0' => 0x 30
'7' => 0x 37
'7' => 0x 37
'7' => 0x 37
'5' => 0x 35
'4' => 0x 34
')' => 0x 29
'
' => 0x D
'
' => 0x A
'E' => 0x 45
'T' => 0x 54
'0' => 0x 30
'P' => 0x 50
'E' => 0x 45
'(' => 0x 28
'1' => 0x 31
'3' => 0x 33
'8' => 0x 38
'8' => 0x 38
'0' => 0x 30
'.' => 0x 2E
'1' => 0x 31
'9' => 0x 39
'6' => 0x 36
'5' => 0x 35
'6' => 0x 36
'4' => 0x 34
'6' => 0x 36
')' => 0x 29
'
' => 0x D
'
' => 0x A
'E' => 0x 45
'T' => 0x 54
'0' => 0x 30
'P' => 0x 50
'E' => 0x 45
'(' => 0x 28
'4' => 0x 34
'3' => 0x 33
'1' => 0x 31
'3' => 0x 33
'.' => 0x 2E
'4' => 0x 34
'4' => 0x 34
'0' => 0x 30
'3' => 0x 33
'2' => 0x 32
'4' => 0x 34
')' => 0x 29
'
' => 0x D
'
' => 0x A
'E' => 0x 45
'T' => 0x 54
'0' => 0x 30
'P' => 0x 50
'E' => 0x 45
'(' => 0x 28
'3' => 0x 33
'0' => 0x 30
'9' => 0x 39
'5' => 0x 35
'T' => 0x 54
'
' => 0x A
')' => 0x 29

 

inspectorcot
Offline
Зарегистрирован: 21.02.2018

0x03, 0x02 - вроде как постоянно

а на счет заканчивается точно не знаю, возможно это <BCC>

сейчас посмотрю в протоколе

можно сократить ответ, если использовать другой режим чтения

 

'' => 0x 2
'E' => 0x 45
'T' => 0x 54
'0' => 0x 30
'P' => 0x 50
'E' => 0x 45
'(' => 0x 28
'2' => 0x 32
'1' => 0x 31
'2' => 0x 32
'8' => 0x 38
'9' => 0x 39
'.' => 0x 2E
'6' => 0x 36
'0' => 0x 30
'7' => 0x 37
'7' => 0x 37
'7' => 0x 37
'5' => 0x 35
'4' => 0x 34
')' => 0x 29
'
' => 0x D
'
' => 0x A
'E' => 0x 45
'T' => 0x 54
'0' => 0x 30
'P' => 0x 50
'E' => 0x 45
'(' => 0x 28
'1' => 0x 31
'3' => 0x 33
'8' => 0x 38
'8' => 0x 38
'0' => 0x 30
'.' => 0x 2E
'1' => 0x 31
'9' => 0x 39
'6' => 0x 36
'5' => 0x 35
'6' => 0x 36
'4' => 0x 34
'6' => 0x 36
')' => 0x 29
'
' => 0x D
'
' => 0x A
'E' => 0x 45
'T' => 0x 54
'0' => 0x 30
'P' => 0x 50
'E' => 0x 45
'(' => 0x 28
'4' => 0x 34
'3' => 0x 33
'1' => 0x 31
'3' => 0x 33
'.' => 0x 2E
'4' => 0x 34
'4' => 0x 34
'0' => 0x 30
'3' => 0x 33
'2' => 0x 32
'4' => 0x 34
')' => 0x 29
'
' => 0x D
'
' => 0x A
'E' => 0x 45
'T' => 0x 54
'0' => 0x 30
'P' => 0x 50
'E' => 0x 45
'(' => 0x 28
'3' => 0x 33
'0' => 0x 30
'9' => 0x 39
'5' => 0x 35
'T' => 0x 54
'
' => 0x A
')' => 0x 29

он же только  полностью

2
45
54
30
50
45
28
32
31
32
38
39
2E
36
30
37
37
37
35
34
29
D
A
45
54
30
50
45
28
31
33
38
38
30
2E
31
39
36
35
36
34
36
29
D
A
45
54
30
50
45
28
34
33
31
33
2E
34
34
30
33
32
34
29
D
A
45
54
30
50
45
28
33
30
39
35
2E
39
37
30
38
38
36
38
29
D
A
45
54
30
50
45
28
30
2E
30
29
D
A
45
54
30
50
45
28
30
2E
30
29
D
A
3
39

он же в ASCII полностью

ET0PE(21289.6077754)
ET0PE(13880.1965646)
ET0PE(4313.440324)
ET0PE(3095.9708868)
ET0PE(0.0)
ET0PE(0.0)
9

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Т.е. я правильно понимаю, что нужно выдрать числа в ET0PE() и, в зависимости от того, каким пришел этот параметр, рассматривать его, как вольты, амперы или киловатты (например) ? Т.е. они всегда приходят в одном и том же порядке?

inspectorcot
Offline
Зарегистрирован: 21.02.2018

 

вот так выглядит ответ о напряжении:

VOLTA(235.158)
VOLTA(0.516)
VOLTA(0.096)
*

'' => 0x 2
'V' => 0x 56
'O' => 0x 4F
'L' => 0x 4C
'T' => 0x 54
'A' => 0x 41
'(' => 0x 28
'2' => 0x 32
'2' => 0x 32
'8' => 0x 38
'.' => 0x 2E
'0' => 0x 30
'0' => 0x 30
'7' => 0x 37
')' => 0x 29
'
' => 0x D
'
' => 0x A
'V' => 0x 56
'O' => 0x 4F
'L' => 0x 4C
'T' => 0x 54
'A' => 0x 41
'(' => 0x 28
'0' => 0x 30
'.' => 0x 2E
'4' => 0x 34
'9' => 0x 39
'9' => 0x 39
')' => 0x 29
'
' => 0x D
'
' => 0x A
'V' => 0x 56
'O' => 0x 4F
'L' => 0x 4C
'T' => 0x 54
'A' => 0x 41
'(' => 0x 28
'0' => 0x 30
'.' => 0x 2E
'0' => 0x 30
'9' => 0x 39
'6' => 0x 36
')' => 0x 29
'
' => 0x D
'
' => 0x A
'' => 0x 3
'/' => 0x 2F

а вот так о мощности

POWPP(0.0)
POWPP(0.0)
POWPP(0.0)
'

'' => 0x 2
'P' => 0x 50
'O' => 0x 4F
'W' => 0x 57
'P' => 0x 50
'P' => 0x 50
'(' => 0x 28
'0' => 0x 30
'.' => 0x 2E
'0' => 0x 30
')' => 0x 29
'
' => 0x D
'
' => 0x A
'P' => 0x 50
'O' => 0x 4F
'W' => 0x 57
'P' => 0x 50
'P' => 0x 50
'(' => 0x 28
'0' => 0x 30
'.' => 0x 2E
'0' => 0x 30
')' => 0x 29
'
' => 0x D
'
' => 0x A
'P' => 0x 50
'O' => 0x 4F
'W' => 0x 57
'P' => 0x 50
'P' => 0x 50
'(' => 0x 28
'0' => 0x 30
'.' => 0x 2E
'0' => 0x 30
')' => 0x 29
'
' => 0x D
'
' => 0x A
'' => 0x 3
''' => 0x 27

ну к примеру мне нужно вытащить только то что находится в первых скобках после ETOPE, все остальное мне не нужно

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Какую-то хе...ту придумали в этой энергомере.

--------------------

5.1.3.2 Формат ответа:

<STX>данные<ETX><BCC>, где данные – значения запрашиваемых параметров в формате группового чтения.

Значения параметра выдаются в скобках после имени параметра. Однотипные поля значения разделяются запятой или имеют «жесткий» формат, разнотипные – выдаются без разделителей.

Например: 0001(значение1)0020(значение1)201A(значение1)(значение2)(значение3)(значение4).

Сообщения об ошибках выдаются вместо значения параметра в формате Enn, где nn – номер ошибки. Например: 0005(E12).

-----------

Но я же вижу, что там CRLF летит. Что имеется в виду под 0001, 201A?..

 

inspectorcot
Offline
Зарегистрирован: 21.02.2018

это груповой опрос наверное вы смотрели?

а то что я кидал в предыдущем посте, это режим быстрого чтения

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Да я вообще пытался понять по какому принципу у них пакет построен и что надо ловить, чтобы понять - принят он или нет.

Вобщем, сообразил примерно. Завтра что-нить накидаю.

inspectorcot
Offline
Зарегистрирован: 21.02.2018

а если использовать опрос в режиме програмирования

как в посте №103, то такие кодом

if (RS485.available())
    {
    char response = RS485.read();
    response &= 0x7F;// convert 8N1 to 7E1
    

      char inChar = response;

      inString += inChar;
      if (inString.lastIndexOf('/')>0) 
      {
      int first = inString.indexOf('(');
      int second  = inString.indexOf('(', first + 1 );
       second = second + 1; 
      int first_2 = inString.indexOf(')');
      int second_2 = inString.indexOf(')', first_2 + 1 );
      inString2 = inString.substring(second,second_2);
      
    
intVar=inString2.toInt();
       
      
       

        
 
         

         
        
        
          
        
          
          
      inString = "";
     inString2 = " ";
        }
        
   
    }

то я вынимаю, то что в скобках.

но может как-то оптимизировать.

inspectorcot
Offline
Зарегистрирован: 21.02.2018

спасибо, будем ждать

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Да там оптимизировать надо примерно так: поймали 0x02 - начинаем читать до появления скобки, скобку задетектили - начинаем писать в буфер до появления закрывающей скобки. Скобку заловили - буфер затерминировали нулем и скормили его atof(), результат записали в массив значений. CRLF попалось - позицию в массиве значений заинкрементировали. 0x03 выловили - конец работы. 

Параллельно можно контрольную сумму считать.

inspectorcot
Offline
Зарегистрирован: 21.02.2018

а для чего контрольную сумму считатть?

для проверки полученных данных?

sadman41
Онлайн
Зарегистрирован: 19.10.2016

inspectorcot пишет:
а для чего контрольную сумму считатть? для проверки полученных данных?

Типа того. Решать - доверять полученным данным или нет. Вдруг вы по итогам считывания будете обесточивать дом.

Вот такой код я накидал. Особо не старался, конечно, но суть, надеюсь, передал. К RS485.read() прикрутите, думаю.

char serialBuffer[] = "\x02""ET0PE(21289.6077754)\x0D\x0A""ET0PE(13880.1965646)\x0D\x0A""ET0PE(4313.440324)\x0D\x0A""ET0PE(3095.9708868)\x0D\x0A""ET0PE(123.456)\x0D\x0A""ET0PE(0.0)\x0D\x0A\x03\x39";
float values[10];
char strBuffer[20];
uint8_t valueIdx = 0, strBufferPos = 0, incomingCharPos = 0, packetProcessing = false, catchedCR = false;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  Serial.println("Let's begin \n");
}

void loop() {
   // it like if (RS485.available() > 0)
  if (incomingCharPos < sizeof(serialBuffer)) {
    char inChar = serialBuffer[incomingCharPos];
    //Serial.print("'"); Serial.print((char) inChar); Serial.print("' => 0x"); Serial.println((byte) inChar);
    incomingCharPos++;
    
    switch (inChar) {
      // STX
      case 0x02:
        // put floats to value array from item #0
        valueIdx = 0;
        // packet processing is started
        packetProcessing = true;
        break;

      // ETX
      case 0x03:
        // packet processing is finished
        packetProcessing = false;
        // show all floats
        for (uint8_t i = 0; i < valueIdx; i++) {
          Serial.print("Value["); Serial.print(i); Serial.print("]="); Serial.println(values[i]);
        }
        break;

      // CR
      case 0x0D:
        catchedCR = true;
        break;

      // LF followed by CR
      case 0x0A:
        if (packetProcessing && catchedCR) {
          catchedCR = false;
          // next float will be written to next array item
          valueIdx++;
        }
        break;

      // Start the value
      case '(':
        if (packetProcessing) {
          // write string-representation of float to the temporary buffer
          strBufferPos = 0;
        }
        break;

      // End the value
      case ')':
        if (packetProcessing) {
          // terminate string-representation of float and convert it to real float number, which will be stored to the array
          strBuffer[strBufferPos] = 0x00;
          Serial.print("strBuffer: "); Serial.println(strBuffer);
          values[valueIdx] = atof(strBuffer);
        }
        break;

      // all other symbols
      default:
        if (!packetProcessing) {
          break;
        }
        // all chars recieved between ( and ) will be written to the temporary buffer while its end not reached
        strBuffer[strBufferPos] = inChar;
        if (strBufferPos < sizeof(strBuffer)) {
          strBufferPos++;
        }
    }
  }
}

 

Serzh251
Offline
Зарегистрирован: 15.11.2017

к слову сказать, пока я въезжаю в ваш код (отдельное спасибо за него Вам), решил проверить свой код со стрингами на ардуино мега, работает,считывает все параметры сразу..получается нано не справляется со стрингами в таком количестве?

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

Мошт, потому что у наны памяти в 4 раза меньше?

inspectorcot
Offline
Зарегистрирован: 21.02.2018

спасибо, работает

осталось в нем разобраться полностью)

Serzh251
Offline
Зарегистрирован: 15.11.2017

inspectorcot пишет:

спасибо, работает

осталось в нем разобраться полностью)

разобраться эт да

вы со счетчиком проверили уже?

inspectorcot
Offline
Зарегистрирован: 21.02.2018

ага, работает

inspectorcot
Offline
Зарегистрирован: 21.02.2018

проверял через быстрый запрос

 

{0xaf,0x3f,0x21,0x81,0xd2,0xb1,0x82,0xc5,0xd4,0x30,0x50,0xc5,0x28,0xa9,0x03,0xb7};

 

sadman41
Онлайн
Зарегистрирован: 19.10.2016

inspectorcot пишет:

{0xaf,0x3f,0x21,0x81,0xd2,0xb1,0x82,0xc5,0xd4,0x30,0x50,0xc5,0x28,0xa9,0x03,0xb7};

Такие штуки удобней писать по-человечески, через char req[] = "..." - там же вроде как в запросе слова обычные.  То, что буквы - пишете буквами, то, что не буквы - через \xHH, где HH - hex-код. У меня во фрагменте кода входящий пакет так имитирован.

Serzh251
Offline
Зарегистрирован: 15.11.2017

вот так у меня выглядят параметры в блютуз мониторе. но это смоим кодом с кучей стрингов, на меге заработал сразу, но при внедрении в код умного дома пришлось еще потанцевать..

как разберусь с нормальным кодом, перейду на него..

можно считать что в общем то задача решена, долго я искал инфу в интернете

inspectorcot
Offline
Зарегистрирован: 21.02.2018

проблема в том, что счетчик работает в формате 7e1 а порт ардуино в 8n1

и поэтому приходится считать бит четности в ручную, в оригинале запрос выглядит примерно так:

2f 3f 21 01 52 31 02 45 54 30 50 45 28 29 03 37

inspectorcot
Offline
Зарегистрирован: 21.02.2018

я передаю в OPC-сервер, и почему-то данные перестают обновлятся, счетчик видно что опрашивается, индикация на нем горит, а данные в OPC не обновляются, если рестартануть контроллер, то все норм, думал, что проблема в обработке строк, проверим

sadman41
Онлайн
Зарегистрирован: 19.10.2016

На форумах энергомеры что-то про паузы между опросами писали. 

А писать в 7E1 можно посимвольно, конвертируя перед write(). Впрочем, вам виднее, как правильней - у меня счетчик просто моргает лампочкой, интерфейсов не имеет, поэтому данный вопрос неактуален.

inspectorcot
Offline
Зарегистрирован: 21.02.2018

оно то может и можно, просто я не так хорошо разбираюсь в данном вопросе, новичок вообщем-то говоря.

Вот изучаю.

char response = RS485.read();
    response &= 0x7F;// convert 8N1 to 7E1

примерно так же организовать запить с конвертированием?

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Ну, как-то так: for (i=0; i < sizeof(байтовый_массив); i++) { RS485.write(байтовый_массив[i] & ...); }

Впрочем, согласен - способ спорный. Хранить данные в подготовленном виде или конвертить на лету - это уже вопрос эстетических пристрастий.

inspectorcot
Offline
Зарегистрирован: 21.02.2018

ну да, преобразовать в ручную не долго, да и код выглядит проще.

LogStas
Offline
Зарегистрирован: 07.05.2018

Доброго всем дня. Подскажите, со счетчиком никаких манипуляций предварительно делать не нужно? Имею СЕ301, пытаюсь соединиться с ним уже несколько дней - безуспешно. Счетчик не отвечает ни на что. Пробовал и конвертером USB-RS485 на FTDI и самодельным шилдом для ардуины - тишина. Скорость в счетчике проверял - 9600, порт ардуины настроил на 7N1 - в терминалках проверено, все в норме, напряжение на интерфейсный модуль счетчика 13 В (Не много ли? Может он умер уже?) и никакой реакции. Осциллом наблюдаю сигнал на контактах А и В счетчика - все четко и красиво. В чем же дело? 

inspectorcot
Offline
Зарегистрирован: 21.02.2018

попробуйте этот код

#include <SoftwareSerial.h>
long Previous = 0; 
int val = 0;
int Time_1 = 1;         
int Time_2 = 2;          
int Time_3 = 3;
int Time_4 = 4;
int Time_5 = 15; 

// открываем сессию
byte cmd1[] = {0xaF,0x3F,0x21,0x8D,0x0A};
// читаем тип счетчика
byte cmd2[] = {0x06,0x30,0x35,0xb1,0x8d,0x0a};
// снимаем показания
byte cmd3[] = {0x81,0xd2,0xb1,0x82,0xc5,0xd4,0x30,0x50,0xc5,0x28,0xa9,0x03,0xb7};
// напряжения на фазах
byte cmd4[] = {0x81,0xd2,0xb1,0x82,0x56,0xcf,0xcc,0xd4,0x41,0x28,0xa9,0x03,0x5f};

#define DIR 8 // пин управления прием/передача
 
SoftwareSerial RS485 (7, 6); // RX, TX

void setup()
{
  Serial.begin(9600);
  RS485.begin(9600);
  pinMode(DIR, OUTPUT);
  digitalWrite(DIR, HIGH);
}
void loop()
{ 
   if (RS485.available())
    {
    char response = RS485.read();
    response &= 0x7F;// convert 8N1 to 7E1
    Serial.print(response);
    }
    if (millis() - Previous > 1000)
  {
    Previous = millis();        
    val ++;
          
       if (val == Time_1)
       {
         digitalWrite(DIR, HIGH);
         RS485.write (cmd1,5);
         digitalWrite(DIR, LOW);
       }
       if (val == Time_2)
       {
        digitalWrite(DIR, HIGH);
         RS485.write (cmd2,6);
        digitalWrite(DIR, LOW); 
       }
       if (val == Time_3)
       {
         digitalWrite(DIR, HIGH);
         RS485.write (cmd3,13);
         digitalWrite(DIR, LOW);
       }
       if (val == Time_4)
       {
         digitalWrite(DIR, HIGH);
         RS485.write (cmd4,13);
         digitalWrite(DIR, LOW);
       }
       if (val == Time_5)
       {
         val = 0;
         
         
       }
 
  }
}
   
LogStas
Offline
Зарегистрирован: 07.05.2018

Код пробовал. Реакции нет. До AdminTools еще правда не добрался, но пробовал OPC сервер от компании InSat - тоже безрезультатно. Сервер посылает запрос на открытие сессии и вываливается с таймаутом, т.к. ответа нет. Т.е. со счетчиком ничего делать не нужно??? Отвечать должен сразу, без манипуляций с настройками кнопками на морде?

inspectorcot
Offline
Зарегистрирован: 21.02.2018

да, ничего не нужно настраивать.

inspectorcot
Offline
Зарегистрирован: 21.02.2018

а конвертер rs485- ttl используете?

если в теримналке все работает, то и тут должно

LogStas
Offline
Зарегистрирован: 07.05.2018
inspectorcot
Offline
Зарегистрирован: 21.02.2018

мне кажется, что через него не будет работать, но это не точно

если есть возможность попробуйте такой

https://www.google.com/search?q=rs485+ttl&tbm=isch&source=iu&ictx=1&fir=...

 

inspectorcot
Offline
Зарегистрирован: 21.02.2018

по крайней мере тот код не будет работать с этим конвертером

LogStas
Offline
Зарегистрирован: 07.05.2018

Сомневался насчет того, что правильно будет управаляться микруха SP485, но FTDI справляется с этим без проблем. Т.е. включение передачи/приема осуществляется адекватно. Плюс пробовал свой шилд совместно с ардуиной, подключал все это дело к промышленному конвертеру rs485 - rs232 и на ПК в терминалке наблюдал правильные посылки с ардуины... Т.е. за канал RS485 я уверен, по долгу службы приходится с ним часто работать... Но счетчик молчит. (((

LogStas
Offline
Зарегистрирован: 07.05.2018

Настораживает малый ток потребления интерфейсным модулем счетчика. В доках указано, что источник должен отдавать ток до 100 мА, а у меня даже и 5 мА не потребляет. Может он накрылся от 13-14 вольт?

inspectorcot
Offline
Зарегистрирован: 21.02.2018

не знаю может накрыться или нет. А через AdminTools попробуйте

LogStas
Offline
Зарегистрирован: 07.05.2018

Я конечно попробую чуть позже, но думаю, что результат будет отрицательным, так как OPC сервер, что я пробовал, в своих запросах полностью копирует запросы AdminTools. Спасибо за ответы.

LogStas
Offline
Зарегистрирован: 07.05.2018

А Вы от чего запитывали интерфейс счетчика?

Serzh251
Offline
Зарегистрирован: 15.11.2017

LogStas пишет:

А Вы от чего запитывали интерфейс счетчика?

а какой сигнал вы наблюдаете осциллом на счетчике?

лично у меня счетчик СЕ 102М, там запитывать ничего не надо..

все таки попробуйте с Admin tools, главное настройки правильные сделать

inspectorcot
Offline
Зарегистрирован: 21.02.2018

12в 1а бп

LogStas
Offline
Зарегистрирован: 07.05.2018

Serzh251 пишет:

а какой сигнал вы наблюдаете осциллом на счетчике?

Ну красивый дифференциальный сигнал RS485, соответствующий посылкам с ардуины (или с конвертера USB-RS485).

hmarik
Offline
Зарегистрирован: 27.08.2018

А может ли кто либо поделиться быстрыми командами для чтения напряжения и тока?

pasha413
Offline
Зарегистрирован: 27.11.2016

А кто-нибудь отправлял данные со счётчика "энергомера 301" на сервер по GPRS?

inspectorcot
Offline
Зарегистрирован: 21.02.2018

да

pasha413
Offline
Зарегистрирован: 27.11.2016

А есть для примера, какие параметры, и какой интервал опроса счётчика. Можно код глянуть?