четверг, 26 мая 2016 г.

Протокол однофазных счетчиков Меркурий. Основные команды.



Для расширения функциональности систем на базе технологий PLC требуется знание  основных команд счетчиков. В предыдущей статье я приводил выжимки из описания системы команд трехфазных счетчиков. Теперь очередь однофазных.
Команды из числа приведенных ниже можно передавать счетчикам пользуюсь специально предусмотренными возможностями в программном обеспечении BQuark, BMonitor и NetMonitor. 








Команды на установку



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


CMD = 03

CMD-mpower

CMD
mpower – значение лимита мощности xx,xx кВт
имеет длину 2 байта и диапазон значений от 0 до 9999

Пример: команда на запись лимита мощности в 15 кВт

03 15 00

Установка флага сезонного времени


CMD = 05

CMD-flag

CMD
Flag – один байт, значение от 0 до FF
0 – запрещение, любое другое заначение – разрешение.

Пример: команда разрешения перехода на сезонное время

05 11

Установка функции выходного оптрона


CMD = 07

CMD-function

CMD
function - функциональное назначение выходного ключа импульсного выхода
длина 1 байт
Возможные значения:
0 -        телеметрический выход 5000 имп/кВт.ч
1 -        телеметрический выход 10000 имп/кВт.ч
2 -        выход частоты встроенного кварца поделенной на 8
3 -        управление нагрузкой

Пример: команда на перевод импульсного выхода в режим управление нагрузкой

07 03

Установка режима индикации


CMD = 09

CMD-displ

CMD
displ -   длина один байт имеет позиционный формат:

1111 1111
           
По порядку:
1-ый бит - индикация текущего тарифа
2-ой бит - разрешает индикацию 1 тарифа
3-ий бит - разрешает индикацию 2 тарифа
4-ый бит - разрешает индикацию 3 тарифа
5-ый бит - разрешает индикацию 4 тарифа
6-ой бит - разрешает индикацию суммы
7-ой бит - разрешает индикацию мощности
8-ой бит - разрешает индикацию времени
9-ый бит - разрешает индикацию даты

Пример: команда на включение индикации 1-го, 2-го тарифов, суммы и мгновенной мощности.

байт ”disp” в двоично-позиционном формате будет иметь вид:  00110011 - в hex - 33

09 33


Установка режима  реле


CMD = 71

CMD-RELE

CMD
RELE – режим работы реле. Длина 1 байт. Возможные значения:
55 – управление по лимитам,
AA - выключено.
5A – имитация нажатия кнопок на панели счетчика
Любое другое значение - включено.

Пример: команда на включение  реле

71 FF

Ответ:

71

Примечание, в счетчиках выпущенных раньше 13 года возможно отсутствие функции дистанционного включения реле. Решить эту проблему может команда 5A – имитация нажатия кнопок на панели счетчика. Команд на дистанционное включение реле таким образом будет две:

71 FF
71 5A

В противном случае включение реле можно будет произвести только отправив команду 71 FF и нажав и удерживая в течении 5 сек.  две кнопки на панели счетчика.


Команды на чтение



Чтение тарифа


CMD = 60

CMD

CMD- Tarif
Tarif – номер действующего тарифа

Пример: команда на чтение номера действующего тарифа

60

Ответ:

60 01 – действующий тариф 1-ый

Чтение времени последнего вскрытия крышки счётчика


CMD = 61

CMD

CMD- timedate
Timedate - структура, включающая в себя поля с текущим временем и датой (см.ниже)
Длина 7 байт
Структура: dow-hh-mm-ss-dd-mon-yy

Ss - 0...59      Секунды
Mm - 0…59   Минуты
Hh - 0…23     Часы
Dd - 1…31    День месяца
Mon - 1…12   Месяц (1-январь, 2-февраль и т.д.)
Yy - 0…99     Последние 2 цифры года
Dow - 0…7    День недели (0-воскр., 1-пон. … 6-субб., 7- праздник)

Пример расшифровки параметра timedate см. выше

Чтение времени последнего закрытия крышки счётчика


CMD = 62

CMD

CMD- timedate

См выше.


Чтение  значений U,I,P


CMD = 63

CMD

CMD-V-I-P

Пример: команда запроса мгновенных значений параметров сети напряжения , тока и мощности

63

Ответ:

63 21 92 00 30 00 00 59

63 – команда

21 92 – напряжение 219,2 В

00 30 – 300 мА

00 00 59 – 59 Вт

Чтение времени последней парам. счётчика


CMD = 6B

CMD

CMD- timedate

См. описание параметра timedate выше



Чтение режима управления реле


CMD = 6D

CMD

CMD-RELE

RELE – режим работы реле. Длина 1 байт. Возможные значения:
55 – управление по лимитам,
AA - выключено.
Любое другое значение - включено.

Пример: команда чтения режима реле

6D

Ответ:

6D FF – реле включено


Чтение лимита мощности


CMD = 22

CMD

CMD-mpower
mpower – значение лимита мощности xx,xx кВт
имеет длину 2 байта и диапазон значений от 0 до 9999

Пример: запрос значения лимита

22

Ответ:  

22 15 00 – 15 00 = 15000 Вт

Чтение флага сезонного времени 


CMD = 24

CMD

CMD-flag
Flag – один байт, значение от 0 до FF
0 – запрещение, любое другое заначение – разрешение.


Пример: команда чтения активности функции перехода на сезонное время

24

Ответ:

24 FF

Чтение текущей мощности в нагрузке


CMD = 26

CMD

CMD-m
m – значение мощности
Пример: команда чтения мгновенной потребляемой мощности

26

Ответ:

26 00 00 – мгновенная потребляемая мощность = 0 Вт

Чтение содержимого тарифных аккумуляторов


CMD = 27

CMD

CMD- count*4
Count - 4-х байтовое значение потребленной эл.энергии в десятках Вт.ч Старшие разряды вперёд.

Пример: команда на чтение тарифных аккумуляторов

27

Ответ:

27  88 94 19 27   88 95 41 00   88 94 86 00   88 88 88 00

  T1 = 889419,27 кВтч
  T2 = 889541,00 кВтч
  T3 = 889486,00 кВтч
  T4 = 888888,00 кВтч

Чтение режима индикации


CMD = 2A

CMD

CMD-displ
displ -   длина один байт имеет позиционный формат:

1111 1111
           
По порядку:
1-ый бит - индикация текущего тарифа
2-ой бит - разрешает индикацию 1 тарифа
3-ий бит - разрешает индикацию 2 тарифа
4-ый бит - разрешает индикацию 3 тарифа
5-ый бит - разрешает индикацию 4 тарифа
6-ой бит - разрешает индикацию суммы
7-ой бит - разрешает индикацию мощности
8-ой бит - разрешает индикацию времени
9-ый бит - разрешает индикацию даты

Пример: команда на чтение режима индикации 

24

Ответ:

24 33

33 в двоичном формате = 0011 0011
Исходя из позиционной расшифровки получаем указанные к индикации параметры:
1-ый тариф
2-ой тариф
Сумма
Мгновенная мощность

Чтение времени последнего отключения напряжения


CMD = 2B

CMD

CMD- timedate
Timedate - структура, включающая в себя поля с текущим временем и датой (см.ниже)
Длина 7 байт
Структура: dow-hh-mm-ss-dd-mon-yy

Ss - 0...59h       Секунды
Mm - 0…59h    Минуты
Hh - 0…23h      Часы
Dd - 1…31h      День месяца
Mon - 1…12h    Месяц (1-январь, 2-февраль и т.д.)
Yy - 0…99h      Последние 2 цифры года
Dow - 0…7h     День недели (0-воскр., 1-пон. … 6-субб., 7- праздник)

Пример: команда на чтение даты/времени последнего отключения

2B

Ответ :

2B 01 10 49 50 23 05 16

2B – возврат команды
01 – понедельник
10 – 10 часов утра
49 – 49 минут
50 – 50 ссекунд
23 05 16 – 23 мая 2016 года

Чтение времени последнего включения напряжения


CMD = 2C

CMD

CMD- timedate

Аналогично предыдущей команде.


Чтение функции выходного оптрона


CMD = 2D

ADDR-CMD-CRC

ADDR-CMD- function -CRC
function - функциональное назначение выходного ключа импульсного выхода
длина 1 байт
Возможные значения:
0 -        телеметрический выход 5000 имп/кВт.ч
1 -        телеметрический выход 10000 имп/кВт.ч
2 -        выход частоты встроенного кварца поделенной на 8
3 -        управление нагрузкой

Пример: команда на чтение функции импульсного выхода

2D

Ответ:

2D 01 – импульсный выход в режиме телеметрии с передаточным числом 10000 имп. на кВт/ч

Чтение серийного номера


CMD = 2F

CMD

CMD- serial
serial – серийный номер в hex формате

Пример: команда на чтение серифного номера счетчика

2F

Ответ:

2F 00 7E 03 1B

2F – команда

00 7E 03 1B  - серийный номер 8258331

Чтение максимумов


CMD = 33

CMD-ii4

CMD-max-maxr
Ii4 – указывает тип параметра: 00 – напряжение, 01 – ток, 02 – мощность

max, maxr – не сбрасываемый и сбрасываемый параметр соответственно, длина 8 байт, формат:
V-hh-mm-ss-dd-mon-yy
I-hh-mm-ss-dd-mon-yy
m-hh-mm-ss-dd-mon-yy           

V – напряжение
I – ток
m – мощность
Ss - 0...59h       Секунды
Mm - 0…59h    Минуты
Hh - 0…23h      Часы
Dd - 1…31h      День месяца
Mon - 1…12h    Месяц (1-январь, 2-февраль и т.д.)
Yy - 0…99h      Последние 2 цифры года
Dow - 0…7h     День недели (0-воскр., 1-пон. … 6-субб., 7- праздник)

Пример: команда запроса значений сбрасываемого и не сбрасываемого значений максимумов напряжения

33 00

Ответ:

33 23 95 05 51 24 01 05 16 23 95 05 51 24 01 05 16

33 – команда

23 95  - 239,5 Вольта

05 51 24 01 05 16  - в 5:51:24  первого мая 2016 г.

23 95  - 239,5 Вольта

05 51 24 01 05 16  - в 5:51:24  первого мая 2016 г.

7 комментариев:

  1. А как должен выглядеть синтаксис любой из этих команд к счётчику, который расположен удалённо и подключен через RS485/Eth конвертер?

    ОтветитьУдалить
    Ответы
    1. Синтаксис не зависит от канала связи.

      Удалить
  2. Уточню. Имеется счётчик "Меркурий 200.02", имеется конвертер QFC-PS1A.
    Доступ на конвертер осуществляется по протоколу TCP/IP (IP,Port);
    Каким образом установить связь со счётчиком из консольного приложения?
    т.е. первое что приходит в голову - это сокет(IP,Port) и stream.write(message)
    где message - это byte[] Message = [{00}{00 00 00}{00},пустой байт,Адрес счётчика, команда]
    но эта структура не работает.

    ОтветитьУдалить
    Ответы
    1. На любой запрос, даже неверный приходит странный ответ 31 31 31 31 31 31 0d 0a

      С чем такое поведение может быть связано?

      Удалить
  3. Покажите пожалуйста пример, как будет выглядеть чтение получасовых мощностей за сутки?
    При чтении получаю записи только с 0 и 1 страниц, как правильно указать глубину архива для чтения?

    ОтветитьУдалить
    Ответы
    1. Для разных моделей счетчиков подобные запросы будут отличаться. Нет возможности все это описывать здесь. Это все описано в протоколах на счетчики. Вам надо обратиться к протоколу, или еще есть форум, который ведет непосредственно программист. На него можно попасть через его блог: http://incotex-counter.blogspot.ru Там же есть его электронный адрес.

      Удалить
  4. Проживаю в Свердловской области
    Недавно приобрел счетчик Меркурий 206 и обнаружил, что он не считает выходные дни по льготному тарифу
    хотя есть постановление РЭК Свердловской области от 23.12.2011 г. № 211-ПК в котором написано:

    6. При наличии двухтарифных приборов учета применяются тарифы, дифференцированные по зонам суток, в том числе:
    - тарифы, установленные для пиковой (дневной) зоны, применяются в будние дни с 07.00 до 23.00 часов;
    - тарифы, установленные для ночной зоны, применяются в будние дни с 23.00 до 07.00 часов, в выходные и праздничные дни – круглосуточно.

    и постановление на сегодняшний день вроде как действующее
    постановление есть на официальном сайте РЭК Свердловской области
    http://rek.midural.ru/uploads/document/434/2011_223.doc

    можно ли это исправить если да то как?

    ОтветитьУдалить