Понял. Возможно, я где-то ошибся. То, что у меня считалось, мне тоже показалось странноватым, не должно там быть так много кубов намотано. Ваши показания больше на правду похожи. Сегодня обязательно дойду до счётчика и посмотрю, что у него на дисплее отображается.
Разобрался. Каким-то образом подключился не к тому счетчику, скорее всего неверно был выбран COM порт, а серийник в ответе от счетчика я не проверил. Сейчас подключился точно к правильному, s/n совпадает, и вот что получилось:
вход №2 - 0,323 (байты 43 01 00 00)
вход №3 - 0,277 (байты 15 01 00 00)
У них не только сетевые адреса разные, но и серийные номера. Фабричный номер один и тот же, а серийный номер (он же адрес 2-го типа) разный. Грубо говоря, это несколько разных приборов, физически находящиеся в одном корпусе. Но логически это абсолютно никак между собой не связанные устройства, со своими адресами и серийниками.
У нас возникла проблема с подключением к устройству. Порт по предоставленному адресу закрыт.
Не могли бы вы уточнить:
К прибору можно подключиться указав серийный номер и использовав второй тип адресации (по серийному номеру). Для подключения к импульсным входам, необходимо указать серийный номер и сетевой адрес.
Можно ли настроить в приборе тип подключения к импульсным входам только по серийному номеру или для подключения к импульсным входам всегда используется сетевой адрес?
Мы не нашли данной информации в ни описании протокола обмена, ни в руководстве по эксплуатации.
С портом всё нормально, это просто я видимо в этот момент подключался, чтобы сверить запрошенные показания. На моксе стоит настройка только 1 соединение на порт (и это в данном случае правильно), поэтому если кто-то уже подключен, второе соединение не устанавливается.
Попробуйте сейчас, всё должно работать. А я больше не планирую подключаться к этому порту (если только Вы не попросите что-нибудь проверить), так что мешать вашим соединениям больше не буду.
На остальные вопросы отпишусь позже. Только у нас время MSK+4, так что наверное Вы получите ответы только завтра.
В данный момент порт закрыт и подключится к нему нельзя.
Как выяснилось, данные по импульсному входу хранятся в том же блоке, что и данные по накопленному значению по прибору. Исходя из этих данных, оказалось, что можно считать данные с импульсных входов прибора следующим образом: создайте в справочнике оборудования прибор Minocal Combi и укажите для него серийный номер и сетевой адрес импульсного входа, который вам необходим. Создайте объект учета и укажите в нем использовать данный прибор. В качестве подающего канала укажите первый канал. Произведите чтение текущих данных и сообщите результат нам.
Сообщите, получилось ли у вас считать данные с импульсных входов?
Я попробовал сейчас со внешнего IP (с телефона) - у меня всё подключается и отключается. На данный момент порт свободен - я проверил из монитора линий в моксе - никто не подключен. Попробуйте, пожалуйста, еще раз подключиться, уже 200% сейчас всё должно работать.
На данный момент доступ появился.
Выполните мои рекомендации и сообщите результат:
Так стоп. Давайте по-порядку. Что-то много у Вас вопросов/сообщений, я за ними не успеваю.
- Показания на дисплее прибора.
Эти вопросы еще актуальны?
Как будет время, обязательно попробуем. Прямо сейчас некогда этим заниматься. Есть более критичные проблемы, над которыми ломаем голову, т.к. Ваши специалисты не спешат ими заниматься: Невозможно задать индивидуальные параметры автоопроса после изменения в ЛЭРС структуры работы с сетевыми устр...[5586] - Опрос - ЛЭРС УЧЁТ
- Показания мы сверили и они сходятся с теми, что получили мы.
- Да вопрос актуален.
- Ожидаем от вас результат.
Получилось вот что. Во-первых, неправильно читается номер прибора:
В данном случае номер всегда 8 цифр, и правильный номер будет 02073906, а никак не 2073906.
Ладно, нам же важно проверить читает данные или нет. Исправил номер в ЛЭРС на неправильный 2073906. Опрос заработал:
А вот что считалось:

И это не совсем текущее значение интегратора. Вернее совсем не текущее. Это на какаю-то дату, может на начало месяца. Реальное текущее значение - 3,498.
В общем читает, но данные не из того места в блоке.
Что касается номера прибора, то это значение хранится в приборе в числовом виде, поэтому при преобразовании массива байт в число, ноль в начале номера прибора получить нельзя. В ЛЭРС УЧЕТ значение хранится в текстовом виде, поэтому при сравнении и возникает ошибка. При задании номер прибора, вам можно ноль, в начале номера прибора, не указывать. Как правило полный номер прибора с нулями в начале указывается для приборов, который хранят свой номер в текстовом виде.
Насколько мы поняли из протокола обмена, необходимо для импульсного входа указать значение сетевого адреса равное номеру входа. Например: для второго импульсного входа указывается сетевой адрес 2, а для третьего импульсного входа указывается сетевой адрес 3.
В вашем случае необходимо было создать устройство Minocal Combi с серийным номером 2073906 и сетевым адресом 2.
Не могу с Вами согласиться. Номер в приборе хранится не в числовом формате, а в виде кода BCD. А формат серийного номера в данных счётчиках имеет однозначную трактовку - 8 знаков. Поэтому использование номера из 7 знаков некорректно.
При задании номер прибора, вам можно ноль, в начале номера прибора, не указывать. Как правило полный номер прибора с нулями в начале указывается для приборов, который хранят свой номер в текстовом виде.
Я ведь так и сделал, о чем и написал в предыдущем сообщении. И что это сработало. Но, конечно, это баг, а не фича.
Насколько мы поняли из протокола обмена, необходимо для импульсного входа указать значение сетевого адреса равное номеру входа. Например: для второго импульсного входа указывается сетевой адрес 2, а для третьего импульсного входа указывается сетевой адрес 3.
Адрес 2 для 2-го входа - это всего лишь заводская установка. Если используется несколько счётчиков в одной сети, адреса нужно менять, чтобы они не повторялись, это же очевидно.
В вашем случае необходимо было создать устройство Minocal Combi с серийным номером 2073906 и сетевым адресом 2.
В нашем случае я всё сделал правильно, адрес 2-го входа на этом счетчике =49. К тому же сетевой адрес от другого входа никак не подойдёт, потому что у другого входа будет другой серийный номер и опрос выдаст ошибку. В нашем примере у 3-го входа серийный номер будет 03073906(ну или 3073906 по ЛЭРСу).
Поэтому повторю свой вывод. Да, действительно, предложенный Вами способ действительно работает, хоть и с оговорками(некорректный формат серийного номера). Данные считываются действительно по нужному каналу(в нашем случае 2), но немножко не из того места. То есть вместо текущих считываются какие-то зафиксированные значения на какую-то дату.
Что касается серийного номера, да у нас производится преобразование BCD формата в число, и поэтому происходит потеря начального нуля. К сожалению на данный момент мы не можем исправить это недочет, поскольку у пользователей перестанут опрашиваться прибору, которые были заведены по нашим правилом, без указания нуля в начале строки.
Что качается некорректного чтения данных, то нам необходим доступ к прибору, у которого будет изменяться значения на импульсных входах. Кроме того требуется штатное ПО, в котором можно будет проверить считанное значение. Прибор к которому предоставлен доступ всегда возвращает одно и тоже значение.
С серийным номером вообще универсальное решение невозможно. К примеру Пульсары так же используют формат BCD для серийного номера, но у них используется пока только 5 знаков из 8. У них вот так как раз правильно, без начальных нулей. И таких приборов большинство. Minol и подобные скорее исключение. Так что тут все индивидуально и зависит от фирмы производителя. Поэтому тут Вы правы, исправлять правила для всех не надо, тем более в большинстве как раз всё правильно. Лучше уж отдельные виды типа Minol-а вводить с оговорками. Или сделать для них индивидуальное правило. Ну это уж если чтоб совсем красиво было.
Доступ к прибору, стоящем на реальном учете, пока даже не представляю как сделать - ведь будут конфликты между вашими работами и нашим регулярным опросом. Со штатным ПО - это не к нам, тут надо производителя трясти. Но насколько я знаю ситуация там не очень. Вроде бы они перестали его раздавать бесплатно (информация от дилеров). Мы успели еще себе поставить программу(давно дело было). Передать ее мы не можем, потому что она привязана конкретно к нашему компу, ключи нам высылали конкретно под нас. На другом ПК она запустится только в демо-режиме. И мы ее, честно говоря, не используем. Она кривая до ужаса. Лучше бы такого ПО вообще не было.
Позволю себе вопрос, Вы вообще что хотите сделать с Minol, чтение каких данных? Если текущих, то там всё просто, как 3 копейки, мы весь ответ счетчика расшифровали вообще безо всякой документации, просто карандашом на бумаге. Использую только логику и стандарты протокола M-Bus. Там нет ничего сложного. Этим могу поделиться.
А вот по архивным данным информации у нас нет, т.к. эти данные в том виде нам не нужны. Там ведь нет часовых или даже дневных архивов, а есть только месячный.
Наш модуль, который организовывает работу по MBus, тоже без проблем считывает данные и расшифровывает их. Проблема находится в драйвере, а конкретнее при сохранении данных с импульсных входов. При чтении данных с импульсных входов, считывается 9 блоков данных. Если рассмотреть блоки, которые возвращает устройства, к которому вы предоставили доступ, то в этих блоках нет архивных данных. Также среди этих блоков присутствует 4 (что странно. поскольку для хранения значения достаточно одного), которые являются накопленным объемом по импульсному входу. У устройства, к которому вы дали доступ, два из этих блока пусты, а оставшиеся 2 блока имею одинаковое значение. Драйвер сохраняет одно из этих значений. Вероятнее всего, на самом деле, текущим значение является второй блок данных.
Для того что бы разобраться в этом вопросе, необходим прибор с подключенным имитатором расхода и ПО для проверки считанных данных. Если с ПО возникает проблема, тогда потребуется, что бы вы сообщили нам значения.
Мы нашли, предположительно, в чем заключалась ошибка сохранения данных с импульсного входа, однако нам нужен доступ к прибору, который будет регистрировать импульсы. Есть ли возможность подключить к приборку, к которому вы дали доступ, имитатор расхода?
Ну, выходит, что не до конца расшифровывает, раз Вы не можете разобраться, что за значения передаёт счётчик. Какие тут могут быть “Вероятнее всего”, когда в самих же данных содержится исчерпывающее их описание? Всё чётко по стандарту/протоколу M-Bus. Там однозначно сказано “the storage number 0 stands for the actual value”. Расшифровывает ли Ваш модуль такой важный параметр, как Storage Number? А дату он расшифровывает? Видимо нет, раз Вы считаете, что архивных данных здесь нет. А ведь на самом деле их там 3 штуки.
Привожу расшифровку блоков со счётчика(имп.вход №2), с которым Вы работаете:
№ блока / Описание / Формат / Значение
01 / Fabrication No / 8 digit BCD / 44077296
02 / Storage No.0 / 32 bit integer / 0,323 м3
03 / Storage No.8 / Compound CP16:Date / 01.01.16
04 / Storage No.9 / Compound CP16:Date / 01.01.15
05 / Storage No.8 / 32 bit integer / 0,000 м3
06 / Storage No.9 / 32 bit integer / 0,000 м3
07 / Storage No.20 / Compound CP16:Date / 01.09.16
08 / Storage No.20 / 32 bit integer / 0,323 м3
09 / MDH / — / —
Что мы здесь видим? Одно актуальное (текущее) значение и три архивных - на начало текущего года, на начало предыдущего года и на начало текущего месяца.
Всё это следует из самих же данных, нужно только правильно и полностью дешифровать байты DIF, DIFE и VIF, с которых начинается каждый блок.
Наш драйвер прекрасно расшифровывает данные. Со Storage No.0, все понятно.
А откуда вы взяли описание Storage No.8, 9, 20? Если возможно, приложите документ.
Вам не кажется, что Вы себе противоречите? Упираетесь, что драйвер “прекрасно” расшифровывает, однако Storage No он не расшифровывает. Если бы расшифровывал, Вы бы не меня спрашивали, а сами всё увидели, что я Вам тут уже расписал подробнее некуда.
Еще раз, нет никакого описания Storage No.8, 9, 20 в каких-то мифических документах. Всё это следует из самих же данных, нужно только правильно и полностью дешифровать байты DIF, DIFE и VIF, с которых начинается каждый блок.
Или Вы имеете ввиду документ, где написано, как расшифровывать данные M-Bus? Так это написано в официальном описании стандарта http://www.m-bus.com/mbusdoc/default.php. Неужели Вам такой документ незнаком?