Показано с 1 по 8 из 8

Тема: ПЛК110 и Энергомера СЕ301

  1. #1

    По умолчанию ПЛК110 и Энергомера СЕ301

    Приветствую.
    Нужно прочитать контроллером ПЛК110 значение накопленной энергии из счетчика Энергомера СЕ301.
    Может кто-нибудь уже делал подобное?
    Спасибо.

  2. #2
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    7,754

    По умолчанию

    Если в примерах нет, то сами. Работа с портом и нестандартными протоколами. Такую тему ещё ищите.

  3. #3
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    7,754

    По умолчанию

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

  4. #4

    По умолчанию

    Пытаюсь из ПЛК110 прочитать счетчик Энергомера СЕ301 с помощью быстрого чтения.
    Счетчик подключен к RS485-1. Использую SysLibCom.
    Пытаюсь выполнить команду /?!<SOH>R1<STX>NAME()<ETX><BCC>

    Код:

    VAR
    step, _step, count: DINT;
    rx_buffer, tx_buffer: ARRAY [0..16] OF BYTE;
    timeout: TON := (PT := T#2000ms);
    BCCW: WORD;
    BCCI: WORD;
    BCC: WORD;
    END_VAR

    VAR CONSTANT
    port: COMSETTINGS := (Port := 0, dwBaudRate := 9600, byStopBits:=1, byParity:=0);
    END_VAR



    CASE step OF

    0: (* открвываем порт *)
    IF SysComOpen(port.Port) = 0 THEN
    step := step + 1;
    END_IF

    1: (* соединяемся *)
    IF SysComSetSettings(port.Port, ADR(port)) = 0 THEN
    step := step + 1;
    END_IF

    2: (* формируем строку запроса *)
    tx_buffer[0] := 47; (*'/';*)
    tx_buffer[1] := 63; (*'?';*)
    tx_buffer[2] := 33; (*'!';*)
    tx_buffer[3] := 1; (*SOH*)
    tx_buffer[4] := 82; (*'R';*)
    tx_buffer[5] := 49; (* '1'; *)
    tx_buffer[6] := 2; (*STX*)

    tx_buffer[7] := 49; (* '1'; *)
    tx_buffer[8] := 48; (* '0'; *)
    tx_buffer[9] := 48; (* '0'; *)
    tx_buffer[10] := 49; (* '1'; *)
    tx_buffer[11] := 40; (* '('; *)
    tx_buffer[12] := 48; (* '0'; *)
    tx_buffer[13] := 49; (* '1'; *)
    tx_buffer[14] := 41; (* ')';*)

    tx_buffer[15] := 3; (*ETX*)

    (*считаем BCC*)
    BCCW := 0;
    FOR BCCI := 4 TO 15 BY 1 DO
    BCCW := BCCW + tx_buffer[BCCI];
    END_FOR;
    BCC := BCCW MOD 128;
    BCC.7 := 0;

    tx_buffer[16] :=WORD_TO_BYTE(BCC);

    count := 0;
    step := step + 1;

    3: (* отправляем запрос *)
    count := count + SysComWrite(port.Port, ADR(tx_buffer) + count, 17 - count, 0);
    IF count >= 17 THEN
    count := 0;
    step := step + 1;
    END_IF

    4: (*читаем ответ *)
    count := count + SysComRead(port.Port, ADR(rx_buffer) + count, 17 - count, 0);
    IF count >= 17 THEN
    ;
    END_IF

    END_CASE

    При этом при первом включении счетчика и запуске программы выполняются шаги 0,1,2,3, а в 4-м ничего не читается count всегда = 0. Если остановить программу и запустить заново, не выключая счетчик, то зависает на шаге 0 (открытии порта).
    В чем может быть проблема?

  5. #5
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    7,754

    По умолчанию

    Логер на порт ставили ? У них есть нюансик, параметр порта должен быть 7E1 и он немножечко у них программный
    И у вас счетчик на линии единственный ?

    Мне немного сложновато понимать ST, но вы нифига не прочтете этим кодом...

    Код:
    Отправка (5): /?!<0D><0A>                   // безадресный запрос
    Приём (16): /EKT5CE102Mv01<0D><0A>           // ответ счетчика
    
    Отправка (6): <06>051<0D><0A>                    // запрос на чтение Режим С протокола МЭК61107
    Приём (17): <01>P0<02>(145605366)<03>*    // Ответ, что счетчик готов
    
    Отправка (14): <01>P1<02>(777777)<03>!     // Отправка пароля счетчика по умолчанию
    Приём (1): <06>                                              // подтверждающий ответ
    
    Отправка (13): <01>R1<02>VOLTA()<03>_      // запросы параметров
    Приём (18): <02>VOLTA(217.72)<0D><0A><03>"
    
    Отправка (13): <01>R1<02>CURRE()<03>Z
    Приём (17): <02>CURRE(0.042)<0D><0A><03>`
    
    Отправка (13): <01>R1<02>POWEP()<03>d
    Приём (20): <02>POWEP(0.006305)<0D><0A><03><02>
    
    Отправка (13): <01>R1<02>COS_f()<03><03>
    Приём (17): <02>COS_f(0.769)<0D><0A><03><19>
    
    Отправка (13): <01>R1<02>FREQU()<03>\
    Приём (17): <02>FREQU(50.00)<0D><0A><03>a
    
    Отправка (13): <01>R1<02>ET0PE()<03>7
    Приём (57): <02>ET0PE(11.65)<0D><0A>(7.88)<0D><0A>(3.77)<0D><0A>(0.00)<0D><0A>(0.00)<0D><0A>(0.00)<0D><0A><03>*
    
    Отправка (13): <01>R1<02>WATCH()<03>P
    Приём (34): <02>WATCH(16:00:04,03.20.05.20,0)<0D><0A><03><1F>
    
    Отправка (13): <01>R1<02>STAT_()<03>t
    Приём (20): <02>STAT_(03000001)<0D><0A><03><0A>
    
    Отправка (5): <01>B0<03>u    // закрытие сеанса, иногда он требуется еще если прибор выдает ошибку.
    Вот пример запросов и ответов на однофазнике (на 3-х фазном будут просто ответы с большим количеством переменных)
    Да, если пароль введете неправильно, счетчик заткнется на какое-то время и будет выдавать ошибку...

    И еще, не все подряд требует наличие BCC, читайте протокол.
    Последний раз редактировалось melky; 20.05.2020 в 16:13.

  6. #6
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    7,754

    По умолчанию

    Хм, почитал про быстрое чтение...
    1. Необходимо убедиться, что параметр доступен для чтения пользователю беспарольным методом. (какая то настройка в счетчике)
    2. /?!<SOH>R1<STX>NAME()<ETX><BCC> - тут ввести не 1001(01) как вы вводите, а VOLTA() - ответит что нибудь ?

    Администратор может читать и программировать все параметры счетчика. Пользователю
    доступны для чтения и программирования либо все параметры, либо параметры в соответствии со
    списком соответственно чтения (LISTR) и программирования (LISTW). Причем выборочное чтение для пользователя может быть парольным или беспарольным. Режим работы пользователя
    (CONDI) и списки параметров задаются администратором или самим пользователем, если ему это
    разрешено администратором.
    из какого-то документа по CE303

    список имен – список имен запрашиваемых параметров в формате группового чтения, не
    соответствующем стандарту ГОСТ Р МЭК 61107-2001.
    Список имен в групповом запросе передается без разделителей с дополнительными аргументами в скобках или пустыми скобками. Имя параметра состоит из 4-х символов цифр, представленных в 16-ричном формате. У однотипных параметров первые два символа определяют тип
    параметра, последние 2 символа – уточнение однотипного параметра. Аргументы, при необходимости, уточняют тип, дату, номер, количество запрашиваемых параметров.
    Например: 0001()0020(0B010B)…200A(0B010B,3,2).
    Как говорится там же, групповое чтение не соответствует протоколу... а очень жаль...
    Последний раз редактировалось melky; 21.05.2020 в 00:34.

  7. #7

    По умолчанию

    Подскажите, у вас получилось что нибудь реализовать?

  8. #8
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    7,754

    По умолчанию

    pixiemosty это наверное больше вопрос к автору топика. Овен реализует опрос данных счетчиков но для CDS 3.5

Похожие темы

  1. Опрос электросчетчика энергомера CE301
    от migsharp в разделе Телемеханика ЛАЙТ
    Ответов: 27
    Последнее сообщение: 13.10.2017, 14:46
  2. Ответов: 3
    Последнее сообщение: 30.03.2017, 17:34
  3. Ekon134 и счетчик энергомера
    от sergeys в разделе Сервисное обслуживание приборов ОВЕН
    Ответов: 13
    Последнее сообщение: 06.05.2016, 12:48
  4. Как подключить 80 электросчетчиков СЕ301 к ПК ?
    от KRUPSKIY в разделе Подбор Оборудования
    Ответов: 10
    Последнее сообщение: 01.09.2015, 11:03
  5. ПЛК и счетчики Энергомера
    от Kostic77 в разделе ПЛК1хх
    Ответов: 8
    Последнее сообщение: 04.05.2015, 16:22

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •