Опрос счетчиков по RS-485

Модели:
Меркурий 230 АRT, 231 AT, Меркурий 231 АRT, Меркурий 234 ART, 234 ARTM, 236 АRT, 238 LF
Ответить
Аватара пользователя
yante
Сообщения: 47
Зарегистрирован: 30 июл 2019, 17:22

Опрос счетчиков по RS-485

Сообщение yante »

Пишу опрос счетчиков, все отлично считывается и расшифровывается...
Однако, если несколько точек, по которым у меня есть вопросы...

Код: Выделить всё

 
Adr = "90", --- проверка канала... ---
input  -> "5A 00 3B 10",  output -> "5A 80 02 B1 D2"
input  -> "5A 01 01 01 01 01 01 01 01 F5 22",  output -> "5A 81 02 B0 42"
input  -> "5A 08 01 97 D3",  output -> "5A 88 02 B6 12"
Adr = "100", --- проверка канала... ---
input  -> "64 00 2B 70",  output -> "64 80 01 90 1F"
input  -> "64 01 01 01 01 01 01 01 01 ED 43",  output -> "64 81 01 91 8F"
input  -> "64 08 01 F6 1F",  output -> "64 88 01 97 DF"
СерНомер = 13601151223, ДатаВып = 00/00/00, ВерсияПО = 00.00.00, ВарИсполнения = "..."
Adr = "103", --- проверка канала... ---
input  -> "67 00 2B 80",  output -> "67 80 01 60 1F"
input  -> "67 01 01 01 01 01 01 01 01 F9 B3",  output -> "67 81 01 61 8F"
input  -> "67 08 01 06 1F",  output -> "67 88 01 67 DF"
СерНомер = 13601103223, ДатаВып = 00/00/00, ВерсияПО = 00.00.00, ВарИсполнения = "..."
Adr = "104", --- проверка канала... ---
input  -> "68 00 2E 70",  output -> "68 80 01 50 1C"
input  -> "68 01 01 01 01 01 01 01 01 B8 43",  output -> "68 81 01 51 8C"
input  -> "68 08 01 36 1C",  output -> "68 88 01 57 DC"
СерНомер = 1360187220, ДатаВып = 00/00/00, ВерсияПО = 00.00.00, ВарИсполнения = "..."
Adr = "105", --- проверка канала... ---
input  -> "69 00 2F E0",  output -> "69 00 2F E0"
input  -> "69 01 01 01 01 01 01 01 01 B5 D3",  output -> "69 00 2F E0"
input  -> "69 08 01 67 DC",  output -> "69 1F 06 3F 05 04 08 11 08 00 00 B4 E5 C3 95 57 40 DA C9"
СерНомер = 31066305, ДатаВып = 04/08/01, ВерсияПО = 08.00.00, ВарИсполнения = "4 .5 .3 .5 "
Счетчик по адресу=105 - отлично все считывается, а по адресам 90, 100, 103 и 104 на запрос Адр+00+CRC(2), возвращает не 4 полученных байта, а 5 байт
Что это может быть, с чем может быть связано?
По этой же причине "обнулены" ДатаВыпуска, ВерсияПО и ВариантИсполнения, хотя, для сч.105 - все отлично считывается...
Аватара пользователя
yante
Сообщения: 47
Зарегистрирован: 30 июл 2019, 17:22

Re: Опрос счетчиков по RS-485

Сообщение yante »

Или вот, по другому счетчику:

Код: Выделить всё

Adr = "22", --- проверка канала... ---
input  -> "16 00 0F D0",  output -> "16 00 0F D0"
input  -> "16 01 01 01 01 01 01 01 01 91 E1",  output -> ""
input  -> "16 08 01 56 04",  output -> "16 05 CF D3"
Канал, вроде, есть, судя по ответу.
А вот на пароль счетчик не среагировал, следовательно, и считать что-то не дает ( ошибка 05 - не открыт канал )
Аватара пользователя
rodionov_uv
Сообщения: 31
Зарегистрирован: 06 фев 2019, 13:05

Re: Опрос счетчиков по RS-485

Сообщение rodionov_uv »

А вы опрос ведете по RS485 или GSM?
Там по раз ному надо настраивать СОМ порт, разные таймауты выставляются.
Аватара пользователя
yante
Сообщения: 47
Зарегистрирован: 30 июл 2019, 17:22

Re: Опрос счетчиков по RS-485

Сообщение yante »

rodionov_uv писал(а): 18 май 2020, 13:51 А вы опрос ведете по RS485 или GSM?
Там по раз ному надо настраивать СОМ порт, разные таймауты выставляются.
В том-то и дело, что по RS-485, но на одной ветке висит много счетчиков. И вот одни отлично опрашиваются, а другие - вот такое выдают...
Так что, судя по тому, что те, "первые", отзываются, с настройкой COM-порта проблем нет...
Аватара пользователя
rodionov_uv
Сообщения: 31
Зарегистрирован: 06 фев 2019, 13:05

Re: Опрос счетчиков по RS-485

Сообщение rodionov_uv »

А какой марки счетчики. Просто в некоторых пароль в ansi кодировке, а другие в hex. Поэтому канал видит, а открыть не может. Сам долго еба...ся с этим. Ansi передаешь stringom, а hex bitами. Поэтому сразу на всех учетах пароль ставлю в hex.
И еще массив буфера приема и передачи должен иметь точный размер запроса и ответа иначе у меня тоже был мусор в ответах. Пишу на Delphi. Вот пример

WritteBuffer: array[1..4] of Byte;
ReadBuffer: array[1..4] of Byte;
Вот так на проверку канала

WritteBuffer: array[1..11] of Byte;
ReadBuffer: array[1..4] of Byte;
Вот так на открытие канала

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

Таймауты:

ReadIntervalTimeout = 25
ReadTotalTimeoutConstant = 200
ReadTotalTimeoutMultiplier = 4
WriteTotalTimeoutConstant = 100
WriteTotalTimeoutMultiplier = 1
Это для RS485

ReadIntervalTimeout = 100
ReadTotalTimeoutConstant = 5000
ReadTotalTimeoutMultiplier = 10
WriteTotalTimeoutConstant = 1
WriteTotalTimeoutMultiplier = 100
Это для GSM
Аватара пользователя
yante
Сообщения: 47
Зарегистрирован: 30 июл 2019, 17:22

Re: Опрос счетчиков по RS-485

Сообщение yante »

Прошу прощения, давно сюда не заглядывал...
У меня ( моя ) программа отлично опрашивает счетчики, если больше по этому каналу никто никого не опрашивает. А если еще кто-то ведет опрос, то "чужие" данные воспринимаются как мусор, и требуется повторно слать запросы, получить ответы и опять анализировать их.
Я написал ф-ю опроса адресов, с 001 по 240, и анализируя ответы, я либо иду к следующему адресу ( если нет ответа ), либо продолжаю работать с этим адресом ( если ответ равен запросу ).
А тут на паре адресов я получаю ответы, но они не только НЕ равны запросу, но и даже чуть длиннее его. Вот я и думаю, а кто это у меня в линии может отправлять "неправильные" ответы? :)
Ответить

Вернуться в «Трехфазные многотарифные счётчики электроэнергии»