Чтение энергии за месяц: не совпала сумма CRC !

237 views
Skip to first unread message

Вася

unread,
Sep 2, 2014, 10:27:14 AM9/2/14
to VladR...@googlegroups.com
Универсальный конфигуратор счётчиков Меркурий 
v.1.7.50 
Чтение профиля или энергии ошибка:
Чтение энергии за месяц: не совпала сумма CRC !

Если где-то решение проблемы описано - дайте ссылку.

Читал описание протокола:
Описание протокола взаимодействия со счётчиком Меркурий 236 версия ПО 8.0.0 M234 версия ПО 9.0.0 v. 131211.pdf
Счетчик должен возвращать по 4 байта на каждый канал, всего 16 байт
, а мой возвращает 12.
Наверное потому что учитывает в одном направлении. 

дамп обмена
<•• 65 01 02 02 02 02 02 02 02 27 55
--> 65 00 2A E0
<•• 65 08 12 E6 12
--> 65 60 E0 C1 97 06 00 29 C0
<•• 65 05 31 00 1B 79
--> 65 00 00 00 00 FF FF 00 00 00 00 FF FF 5E AE
<•• 65 05 31 00 1B 79
--> 65 00 00 00 00 FF FF 00 00 00 00 FF FF 5E AE
<•• 65 05 31 00 1B 79
--> 65 00 00 00 00 FF FF 00 00 00 00 FF FF 5E AE

Серийный номер 02561101 
Дата изготовления 18.07.08 
Версия ПО 02.02.84 
Сетевой адрес 101 
Класс энергии A+ 0.5 
Класс энергии R+ 1.0 
Номинальное напряжение 57.7 В 
Номинальный ток 5 A 
Число направлений 1 
Температурный диапазон -40 гр. Цельсия 
Учет профиля сред. мощностей есть 
Число фаз 3 
Постоянная счетчика 5000 Имп/кВтч 
Суммирование фаз по модулю 
Тарификатор внутренний 
Тип счетчика AR (активная и реактивная) 
Вариант исполнения 1 
Объем энергонезавис. памяти 131x8 
Встроенный модем PLM нет 
Встроенный модем GSM нет 
Оптопорт есть 
Тип интерфейса RS485 
Внешнее питание есть 
Элект. пломба верх. крышки есть 
Встроен. реле отключ. нагруз. нет 
Подсветка ЖКИ нет 
Потариф. учет макс. мощности нет 
Элект. пломба защит. крышки нет 
Интерфейс2 нет 
Встроен. питания интерфейса1 есть 
Контроль ПКЭ есть 
Пофазный учет энергии A+ нет 
Встроенный модем PLC-2 нет 
Профиль2 нет 
Элект. пломба модульного отсека нет 
Перекл. тарифов внеш. напряжением нет 
Коэф. трансформации по напряжению 1 
Коэф. трансформации по току 1 

Vlad Rusanov

unread,
Sep 3, 2014, 12:44:50 AM9/3/14
to VladR...@googlegroups.com
Ошибка CRC возникает либо из-за Эхо ответов (но по логу у тебя этого нет), либо из-за нарушений таймаутов
Проверь для проводных интерфейсов или оптопорта:
Время ожидания ответа 200
Системный таймаут 25
Множитель 4



вторник, 2 сентября 2014 г., 18:27:14 UTC+4 пользователь Вася написал:

Вася

unread,
Sep 3, 2014, 8:46:02 AM9/3/14
to VladR...@googlegroups.com
Связь со счетчиком через виртуальный порт HW Virtual Serial Port

перебирал таймауты - не помогает
были такие 
Время ожидания ответа 500
Системный таймаут 25
Множитель 4

пробовал эти
Время ожидания ответа 200
Системный таймаут 25
Множитель 4

сейчас такие 
Время ожидания ответа 3000
Системный таймаут 40
Множитель 6

Ответ на чтение профиля последние 2 байта не CRC - пересчитывал 
, а начало ответа (дата/время, период) правильное

Ответ на чтение мгновенных зафиксированных значений параметров
длиннее, чем при чтении профиля и прием всегда без ошибок.

Возможно счетчик древний и поэтому глючит.
Дата изготовления 18.07.08 
Версия ПО 02.02.84 


вот дамп обмена

09.03 16:08:33.283 | MES | <•• 65 00 2A E0
09.03 16:08:33.484 | MES | --> 65 00 2A E0
09.03 16:08:36.300 | MES | <•• 65 01 02 02 02 02 02 02 02 27 55
09.03 16:08:36.600 | MES | --> 65 00 2A E0
09.03 16:08:39.235 | MES | <•• 65 08 12 E6 12
09.03 16:08:39.435 | MES | --> 65 60 E0 C1 97 06 00 29 C0
09.03 16:08:42.255 | MES | <•• 65 08 00 66 1F
09.03 16:08:42.556 | MES | --> 65 02 38 0B 01 12 07 08 A6 AA
09.03 16:08:45.309 | MES | <•• 65 08 03 26 1E
09.03 16:08:45.612 | MES | --> 65 02 02 54 BF B7
09.03 16:08:48.316 | MES | <•• 65 08 05 A6 1C
09.03 16:08:48.416 | MES | --> 65 00 65 A1 F4
09.03 16:08:51.329 | MES | <•• 65 08 02 E7 DE
09.03 16:08:51.529 | MES | --> 65 00 01 00 01 F8 08
09.03 16:09:16.975 | MES | <•• 65 01 02 02 02 02 02 02 02 27 55
09.03 16:09:17.177 | MES | --> 65 00 2A E0
09.03 16:09:19.979 | MES | <•• 65 01 02 02 02 02 02 02 02 27 55
09.03 16:09:20.280 | MES | --> 65 00 2A E0

чтение профиля

09.03 16:09:23.037 | MES | <•• 65 08 13 27 D2
09.03 16:09:23.337 | MES | --> 65 08 90 00 16 00 03 09 14 1E 50 BD
09.03 16:09:26.056 | MES | <•• 65 06 03 08 90 0F 2C 6C
09.03 16:09:26.258 | MES | --> 65 00 16 00 03 09 14 1E 00 00 FF 00 00 FF A8 8E
09.03 16:09:29.062 | MES | <•• 65 06 03 08 90 0F 2C 6C
09.03 16:09:29.362 | MES | --> 65 00 16 00 03 09 14 1E 00 00 FF 00 00 FF A8 8E
09.03 16:09:32.068 | MES | <•• 65 06 03 08 90 0F 2C 6C
09.03 16:09:32.369 | MES | --> 65 00 16 00 03 09 14 1E 00 00 FF 00 00 FF A8 8E

чтенее мгновенных зафиксированных значений

09.03 16:09:37.592 | MES | <•• 65 08 1E E6 17
09.03 16:09:37.906 | MES | --> 65 80 00 00 1F
09.03 16:09:40.645 | MES | <•• 65 08 02 E7 DE
09.03 16:09:40.946 | MES | --> 65 00 01 00 01 F8 08
09.03 16:09:49.177 | MES | <•• 65 01 02 02 02 02 02 02 02 27 55
09.03 16:09:49.378 | MES | --> 65 00 2A E0
09.03 16:09:52.182 | MES | <•• 65 03 08 60 E9
09.03 16:09:52.582 | MES | --> 65 00 2A E0
09.03 16:09:55.123 | MES | <•• 65 08 14 00 90 2A
09.03 16:09:55.423 | MES | --> 65 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 4B 3F
09.03 16:09:58.144 | MES | <•• 65 08 14 04 91 E9
09.03 16:09:58.345 | MES | --> 65 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 4B 3F
09.03 16:10:01.156 | MES | <•• 65 08 14 08 91 EC
09.03 16:10:01.456 | MES | --> 65 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 4B 3F
09.03 16:10:04.201 | MES | <•• 65 08 14 30 90 3E
09.03 16:10:04.503 | MES | --> 65 00 00 00 00 00 00 00 00 00 00 00 00 8E 4E
09.03 16:10:07.221 | MES | <•• 65 08 14 10 91 E6
09.03 16:10:07.422 | MES | --> 65 00 C8 04 00 00 00 00 55 15 D5 00
09.03 16:10:10.168 | MES | <•• 65 08 14 20 91 F2
09.03 16:10:10.468 | MES | --> 65 00 00 00 00 00 00 00 00 00 63 A9
09.03 16:10:13.179 | MES | <•• 65 08 11 40 92 8A
09.03 16:10:13.379 | MES | --> 65 00 86 13 3D 45
Message has been deleted
Message has been deleted

Вася

unread,
Sep 15, 2014, 7:17:38 AM9/15/14
to VladR...@googlegroups.com
Проблему в топике решил  - исключил из связи виртуальный порт HW Virtual Serial Port.
Когда он используется почему-то два байта FF FF передаются как один FF.

Не могу создать новую тему.
Поэтому пишу в старой.

Здравствуйте.

Не удается считать показания запросом 5.
Описание протокола
Описание протокола взаимодействия со счётчиком Меркурий 236 версия ПО 8.0.0 M234 версия ПО 9.0.0 v. 131211.pdf
пункт
2.2 Запросы на чтение массивов регистров накопленной энергии.

нормальный ответ 19 байт для номеров массива
0h От сброса.
1h За текущий год.
2h За предыдущий год.
3h За месяц.
4h За текущие сутки
5h За предыдущие сутки

не отвечает
9h На начало текущего года.
65 05 90 00 62 E9

Ah На начало предыдущего года.
65 05 A0 00 76 E9

Bh На начало месяца.
65 05 B8 00 7C E9

Ch На начало текущих суток
65 05 C0 00 5E E9

Dh На начало предыдущих суток
65 05 D0 00 53 29

Универсальный конфигуратор счётчиков Меркурий умеет читать запросом 6.

Можно читать запросом 6 читать память №2.
Как эта память организована ?
В описании протокола я не нашел.

ООО "Байт-Энерго"

unread,
Sep 17, 2014, 5:30:30 AM9/17/14
to VladR...@googlegroups.com
Здравствуйте!

9h - Чтение программируемых флагов     

Ah - Чтение байт состояния.

Bh - Чтение местоположения прибора.

Ch - Чтение расписания утренних и вечерних максимумов мощности

Dh - Чтение значений утренних и вечерних максимумов мощности 


Искомые значения т.е. на начало периодов (года, месяца, суток) это расчетные величины:

На начало текущего года вычитаем показания "за текущий год" из "от сброса";
На начало текущего месяца вычитаем показания "за месяц" (текущий) из "от сброса";
На начало текущих суток вычитаем показания "за текущие сутки" из "от сброса";

На начало не текущих (года, месяца, суток) математика не намного сложнее;

Удачи.

понедельник, 15 сентября 2014 г., 15:17:38 UTC+4 пользователь Вася написал:

ООО "Байт-Энерго"

unread,
Sep 17, 2014, 5:43:55 AM9/17/14
to VladR...@googlegroups.com
> Можно читать запросом 6 читать память №2.
Можно.

>Как эта память организована?

Формат ответа при чтении записи средних мощностей приведен на рис. 40. Адрес расположения любой записи в памяти №3 кратен 00х10h.

Формат ответа при чтении записи средних мощностей 

Сетевой адрес

(1 байт)

Байт состояния ответа

Часы

(1 байт)

Минуты

(1 байт)

Число

(1 байт)

Месяц

(1 байт)

Год

(1 байт)

Длительность периода интегрирования

(1 байт)

P+

(2 байта)

P-

(2 байта)

Q+

(2 байта)

Q-

(2 байта)

CRC

(2 байта)

Рис. 40.

> В описании протокола я не нашел.

Ищите другое описание.

Удачи.

понедельник, 15 сентября 2014 г., 15:17:38 UTC+4 пользователь Вася написал:
Универсальный конфигуратор счётчиков Меркурий умеет читать запросом 6.

ООО "Байт-Энерго"

unread,
Sep 17, 2014, 6:05:55 AM9/17/14
to VladR...@googlegroups.com
Извиняюсь. 

Вопрос был про память № 2 (тарифное расписание), а в описании протокола про неё ни чего нет. 

Зато есть порт монитор и тому подобные утилиты с помощью которых можно посмотреть какие запросы посылает родной конфигуратор в счётчик и что на них получает в ответ.

Не знаю как всё устроено для трехфазников меркурий но для СЭТ-4ТМ (а у них протоколы во многом схожи) актуально следующее:

Запись расписания праздничных дней

Расписание праздничных дней составляется на каждый месяц текущего года. Месячное расписание праздничных дней содержит 4 байта (32 бита). Каждый бит соответствует календарной дате (левый бит 1-го байта - 1-е число месяца, правый бит 4-го байта - 32-е число месяца). Для задания праздничного дня необходимо установить бит в позиции, соответствующий дате праздничного дня.

Ниже приведена структура и распределение памяти массива расписания праздничных дней.

Месяц

Адрес массива

1-й байт

(числа 1...8)

2-й байт

(числа 9...16)

3-й байт

(числа 17...24)

4-й байт

(числа 25...32)

Январь

2000h

 

 

 

 

Февраль

2004h

 

 

 

 

Март

2008h

 

 

 

 

Апрель

200Ch

 

 

 

 

Май

2010h

 

 

 

 

Июнь

2014h

 

 

 

 

Июль

2018h

 

 

 

 

Август

201Ch

 

 

 

 

Сентябрь

2020h

 

 

 

 

Октябрь

2024h

 

 

 

 

Ноябрь

2028h

 

 

 

 

Декабрь

202Ch

 

 

 

 

КС

2030h

 

 

 

 

            Размер массива расписания праздничных дней составляет 48 байт. 49-м байтом записывается байт контрольной суммы массива. КС массива считается простым суммированием всех байт массива (без учета переноса из старшего разряда).

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

По одному запросу на запись по физическому адресу может быть записано максимум 16 байт. В ответ на запрос счетчик отвечает последовательностью из трех байт, как описано выше.

Запись тарифного расписания

            Тарифное расписание составляется на каждый день недели каждого месяца: понедельник, вторник, среда, четверг, пятница, суббота, воскресенье, праздничный день. Каждый день делится на 144 10-ти минутных суточных тарифных интервала. Это позволяет изменять тарифы с шагом 10 минут. Каждому суточному тарифному интервалу может быть поставлен в соответствие один из 8-и тарифов (в диапазоне чисел 0…7, где 0 – 1-й тариф…7 – 8-й тариф). Номер тарифа занимает размер один полубайт в массиве тарифного расписания. Суточное тарифное расписание занимает объем 72 байта. Месячное тарифное расписание занимает объем 576 байта. Тарифное расписание на год занимает объем 6912 байт. Массив тарифного расписания имеет контрольную сумму, определяемую простым суммированием всех байт массива, аналогично КС массива расписания праздничных дней.

           


На рисунке 8 приведен пример суточного тарифного расписания на два часа. В примере:

·         “А” - базовый адрес массива суточного тарифного расписания;

·         первому тарифу соответствует код 0, второму – код 1… восьмому – код 7;

·         в интервале времени от 00:00 до 00:30 действует тариф 1 (код 0);

·         в интервале времени от 00:30 до 00:50 действует тариф 3 (код 2);

·         в интервале времени от 00:50 до 01:00 действует тариф 6 (код 5);

·         в интервале времени от 01:00 до 01:50 действует тариф 2 (код 1);

·         в интервале времени от 01:50 до 02:00 действует тариф 8 (код 7).

 

Адрес

A+0

A+1

A+2

A+3

A+4

A+5

№ тарифа

0

0

0

2

2

5

1

1

1

1

1

7

Время

00:00

00:10

00:20

00:30

00:40

00:50

01:00

01:10

01:20

01:30

01:40

01:50

Рисунок 8 – Пример тарифного расписания на два часа (с 00:00 по 02:00)

Чтобы счетчик стал одно-тарифным, код требуемого тарифа нужно записать в каждый полубайт всего массива тарифного расписания.

В таблице 3 приведена структура и пример распределение памяти массива тарифного расписания на январь месяц. Старший полубайт по адресу 2040h должен иметь код номера тарифа, который будет действовать в период времени от 00:00 до 00:10.  Младший полубайт по адресу 2087h  должен иметь код номера тарифа, который будет действовать в период времени от 23:50 до 00:00 в январе месяце в понедельник.

Распределение  памяти  всего  массива  тарифного расписания приведено в таблице 4.

Таблица 3 – Распределение памяти массива тарифного расписания на январь месяц

 

Месяц

Адрес массива

Номера тарифов 10-ти минутных зон

 

2040h

Понедельник, 144 интервала (полубайта), 72 байта

 

2088h

Вторник,          144 интервала (полубайта), 72 байта

 

20D0h

Среда,               144 интервала (полубайта), 72 байта

Январь

2118h

Четверг,            144 интервала (полубайта), 72 байта

 

2160h

Пятница,           144 интервала (полубайта), 72 байта

 

21A8h

Суббота,            144 интервала (полубайта), 72 байта

 

21F0h

Воскресенье,   144 интервала (полубайта), 72 байта

 

2238h

Праздники,      144 интервала (полубайта), 72 байта

 


Таблица 4 – Распределение памяти массива тарифного расписания

 

Месяц

Начальные адреса массивов суточных тарифных расписаний

 

Пон.

Вт.

Среда

Четверг

Пятн.

Суб.

Воскр.

Праздн.

 

 

 

 

 

 

 

 

 

Январь

2040h

2088h

20D0h

2160h

21A8h

21F0h

21F0h

2238h

Февраль

2280h

22C8h

2310h

2310h

23A0h

23E8h

2430h

2478h

Март

24C0h

2508h

2550h

2598h

25E0h

2628h

2670h

26B8h

Апрель

2700h

2748h

2790h

27D8h

2820h

2868h

28B0h

28B0h

Май

2940h

2988h

29D0h

2A18h

2A60h

2AA8h

2AF0h

2B38h

Июнь

2B80h

2BC8h

2C10h

2C58h

2CA0h

2CE8h

2D30h

2D78h

Июль

2DC0h

2E08h

2E50h

2E98h

2EE0h

2F28h

2F70h

2FB8h

Август

3000h

3048h

3090h

30D8h

3120h

3168h

31B0h

31F8h

Сентябрь

3240h

3288h

32D0h

3318h

3360h

33A8h

33F0h

3438h

Октябрь

3480h

34C8h

3510h

3558h

35A0h

35E8h

3630h

3678h

Ноябрь

36C0h

3708h

3750h

3798h

37E0h

3828h

3870h

38B8h

Декабрь

3900h

3948h

3990h

39D8h

3A20h

3A68h

3AB0h

3AF8h

КС

3B40

 

 

 

 

 

 

 

Контрольная сумма массива тарифного расписания должна считаться и записываться управляющей программой верхнего уровня при формировании массива тарифного расписания. Если меняется не все тарифное расписание, а только его часть, например на один день, то можно произвести замену информации по соответствующим адресам, а контрольную сумму доверить посчитать и записать счетчику, пользуясь командой  03h\21h.

 

Вася

unread,
Sep 17, 2014, 11:33:16 AM9/17/14
to VladR...@googlegroups.com
Спасибо за ответ и совет анализировать дамп обмена.
Уже так и сделал.
Плохо что нет описания памяти №2.
В описании  протокола описано ну все, что надо и не надо.
А вот как читать самый главный параметр ( показания ) не написано )).
Прям заговор какой-то. Секрет фирмы ))


 
Reply all
Reply to author
Forward
0 new messages