Стартовая страница › Форумы › Разработка и интеграция › Драйвер протокола M-Bus
- В этой теме 52 ответа, 4 участника, последнее обновление 2 года, 7 месяцев назад сделано manjey73.
-
АвторСообщения
-
22.08.2019 в 15:30 #13367manjey73Участник
з.ы. на вскидку. Не реализовано while (RequestNeeded(ref tryNum)) при опросе и получении ошибки. Тогда еще не понимал как это работает
Нет формирования каналов в Администраторе (аналогично)
Нет графической настройки, тут у меня вообще проблема, многого не понимаю как делать. Всякие окна, поля ввода со списками и т.д. Это все надо добавлять, чтобы как раз было удобно формировать примеры запросов. Например выбрали из списка команду, в следующем списке только те переменные, которые относятся к этой команде и т.д. в том же духе.
Ну, реализована только часть протокола, как выше писал. Покупать за свои M-Bus приборчики и искать среди них дополнительный функционал как-то дорого. Просто у меня один был, а электрический счетчик покупал себе домой целенаправлено с M-Bus
22.08.2019 в 17:32 #13368MikhailМодераторни разу никто не написал на почту с просьбой предоставить ключ
Добавил ссылку на драйвер на эту страницу, надеюсь, её будет легче найти.
Покупать за свои M-Bus приборчики и искать среди них дополнительный функционал как-то дорого.
Да, нужно под конкретную систему дорабатывать драйвер.
Если проект стартует, то я напишу. Пока трудно сказать.
04.09.2021 в 11:04 #20734dimasina71УчастникДобрый день.
Разбираюсь с подключением к рапидскаде счетчика Zenner Celsius с помощью вашего решения.
Но, то ли я что-то не то делаю, то ли счетчик выдает не те данные — а есть у меня проблема с его опросом.
Не могли бы вы меня просветить по нескольким вопросам и мб наставить на путь так сказать.схема подключения
счетчик подключен к компу с рапидой через СОМ1. опросы через программы типа Mbus sheet и пр. показывают, что он откликается по адресу <mbus sheet.png> и даже выдает данные в виде телеграммы <log2.txt>.
у меня нет никакого даташита на счетчик, есть только сторонние программы с помощью которых я могу получать какие-то данные с него.реализация в скаде
в качестве донора для конфигурационного файла был выбран weserhm.xml, измененный до неузнаваемости. сделано это было в попытке заставить его работать, а именно — выдавать нужный сигнал инициализации линии мбас.
в итоге нужный сигнал так и не был достигнут (10 40 FD 3D 16) вместо него получился (10 40 03 43 16), так же и сигнал опроса на который отвечает прибор (10 5B 03 5E 16) тоже у меня не получился (10 58 03 5B 16).
я завел линию связи в коммуникаторе (и больше нигде) задал ей параметры ком порта
завел КП (тоже не привязанный более нигде) задал драйвер, адрес и командную строку <scada.png>
скопировал в /config файл конфигурации и получил вот такой результат <log.txt>.
причем при первом после копирования конфигурации запуске линии файл конфигурации пропадает из локального каталога, после его водворения на место происходит опрос с вот таки результатом.
таймаут происходит всегда, не зависимо от параметра 500 или 5000мс. драйвер как будто что-то получает от устройства — но не понимает что это.теперь собственно вопросы:
что я делаю не так?
надо ли прописывать секцию с телеграммой или драйвер ее пропишет сам после опроса?
если предположить, что драйвер увидел счетчик и все заработало — как получить данные в представлении интерфейса ведь ни линия, ни КП, ни каналы в конфигурации не прописаны.
Собственно мой заказчик готов заплатить за драйвер мбас, но для дальнейшей работы нужно понимать — правильный ли это путь.Буду признателен за помощь
04.09.2021 в 11:05 #20735dimasina71Участниквот лог вашего драйвера <?xml version=»1.0″ encoding=»utf-8″?>
<DevTemplate Name=»ZennerCS» Init=»true» Address=»true» EFBCD_onprotocol=»true» Bus_Timeout=»5000″>
<SndGroups>
<SndGroup SndActive=»true» SndCnt=»1″ SndName=»Heat: Outlet» SndType=»SND_UD» SndFrame=»Short» SndCField=»58″ SndAField=»5E» SndCIField=»5E» />
</SndGroups>
</DevTemplate>———————————————————————————
2021-09-04 10:06:00 Инициализация линии связи 1 «heat meter»Computer code: =8D8CF157A1014951-AF20C1A73893694B-23718B84C18BC091-E4B9A24E5523624F-9F22609F96D843B7-30B8C4C8EBC04EE0-69F89B4AE344BB81-9C12145D9D26DD81=
saved to file: C:\SCADA\ScadaComm\Config\KpMbus_Reg.xml
Время полнофункциональной работы в демонстрационном режиме 10 мин.
Ошибка: Файл ‘C:\SCADA\ScadaComm\Config\ZennerCS.xml’ не найден.
2021-09-04 10:06:01 Запуск линии связи 1 «heat meter»2021-09-04 10:06:01 Открытие последовательного порта COM1
2021-09-04 10:06:01 Сеанс связи с КП 10 «ZennerCS», тип: KpMbus, адрес: 3
2021-09-04 10:06:01 Ошибка при выполнении сеанса опроса КП 10 «ZennerCS»: Ссылка на объект не указывает на экземпляр объекта.———————————————————————————
2021-09-04 10:07:22 Инициализация линии связи 1 «heat meter»2021-09-04 10:07:22 Запуск линии связи 1 «heat meter»
2021-09-04 10:07:22 Открытие последовательного порта COM1
2021-09-04 10:07:22 Сеанс связи с КП 10 «ZennerCS», тип: KpMbus, адрес: 3
Отправка (5): 10 40 03 43 16
Приём (0/1):
Отправка (5): 10 58 03 5B 16
Приём (0/262):
2021-09-04 10:07:25 Ошибка: Bus Timeout КП 10 «ZennerCS»
2021-09-04 10:07:25 Ошибка при выполнении сеанса опроса КП 10 «ZennerCS»: Последовательность не содержит соответствующий элемент04.09.2021 в 11:06 #20736dimasina71Участниквот ответы устройства с помощью утилит
init_slaves: debug: sending init frame #1
[2021-09-04 07:12:06] SEND (zu): 10 40 FD 3D 16
init_slaves: debug: sending init frame #2
[2021-09-04 07:12:08] SEND (zu): 10 40 FD 3D 16
[2021-09-04 07:12:10] SEND (zu): 10 5B 03 5E 16
[2021-09-04 07:12:11] RECV (zu): 68 71 71 68 08 03 72 44 28 60 10 49 6A 88 04 8C 00 00 00 0C 78 44 28 60 10 04 06 00 00 00 00 82 04 6C A1 21 C2 84 00 6C FF FF 84 04 06 00 00 00 00 C4 84 00 06 00 00 00 80 82 0A 6C A1 29 84 0A 06 00 00 00 00 04 13 23 00 00 00 02 59 AB 08 02 5D AB 08 02 61 00 00 04 2D 00 00 00 00 04 3B 00 00 00 00 04 6D 3A 07 A4 29 04 26 57 00 00 00 02 FD 17 00 00 1F 06 16
mbus_frame_print: Dumping M-Bus frame [type 4, 119 bytes]: 68 71 71 68 08 03 72 44 28 60 10 49 6A 88 04 8C 00 00 00 0C 78 44 28 60 10 04 06 00 00 00 00 82 04 6C A1 21 C2 84 00 6C FF FF 84 04 06 00 00 00 00 C4 84 00 06 00 00 00 80 82 0A 6C A1 29 84 0A 06 00 00 00 00 04 13 23 00 00 00 02 59 AB 08 02 5D AB 08 02 61 00 00 04 2D 00 00 00 00 04 3B 00 00 00 00 04 6D 3A 07 A4 29 04 26 57 00 00 00 02 FD 17 00 00 1F 06 16
<?xml version=»1.0″ encoding=»ISO-8859-1″?>
<MBusData><SlaveInformation>
<Id>10602844</Id>
<Manufacturer>ZRI</Manufacturer>
<Version>136</Version>
<ProductName></ProductName>
<Medium>Heat: Outlet</Medium>
<AccessNumber>140</AccessNumber>
<Status>00</Status>
<Signature>0000</Signature>
</SlaveInformation><DataRecord id=»0″>
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Fabrication number</Unit>
<Value>10602844</Value>
<Timestamp>2021-09-04T07:12:11</Timestamp>
</DataRecord><DataRecord id=»1″>
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Energy (kWh)</Unit>
<Value>0</Value>
<Timestamp>2021-09-04T07:12:11</Timestamp>
</DataRecord><DataRecord id=»2″>
<Function>Instantaneous value</Function>
<StorageNumber>8</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Time Point (date)</Unit>
<Value>2021-01-01</Value>
<Timestamp>2021-09-04T07:12:11</Timestamp>
</DataRecord><DataRecord id=»3″>
<Function>Instantaneous value</Function>
<StorageNumber>9</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Time Point (date)</Unit>
<Value>2127-15-31</Value>
<Timestamp>2021-09-04T07:12:11</Timestamp>
</DataRecord><DataRecord id=»4″>
<Function>Instantaneous value</Function>
<StorageNumber>8</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Energy (kWh)</Unit>
<Value>0</Value>
<Timestamp>2021-09-04T07:12:11</Timestamp>
</DataRecord><DataRecord id=»5″>
<Function>Instantaneous value</Function>
<StorageNumber>9</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Energy (kWh)</Unit>
<Value>-2147483648</Value>
<Timestamp>2021-09-04T07:12:11</Timestamp>
</DataRecord><DataRecord id=»6″>
<Function>Instantaneous value</Function>
<StorageNumber>20</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Time Point (date)</Unit>
<Value>2021-09-01</Value>
<Timestamp>2021-09-04T07:12:11</Timestamp>
</DataRecord><DataRecord id=»7″>
<Function>Instantaneous value</Function>
<StorageNumber>20</StorageNumber>
<Tariff>0</Tariff>
<Device>0</Device>
<Unit>Energy (kWh)</Unit>
<Value>0</Value>
<Timestamp>2021-09-04T07:12:11</Timestamp>
</DataRecord><DataRecord id=»8″>
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Volume (m m^3)</Unit>
<Value>35</Value>
<Timestamp>2021-09-04T07:12:11</Timestamp>
</DataRecord><DataRecord id=»9″>
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Flow temperature (1e-2 deg C)</Unit>
<Value>2219</Value>
<Timestamp>2021-09-04T07:12:11</Timestamp>
</DataRecord><DataRecord id=»10″>
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Return temperature (1e-2 deg C)</Unit>
<Value>2219</Value>
<Timestamp>2021-09-04T07:12:11</Timestamp>
</DataRecord><DataRecord id=»11″>
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Temperature Difference (1e-2 deg C)</Unit>
<Value>0</Value>
<Timestamp>2021-09-04T07:12:11</Timestamp>
</DataRecord><DataRecord id=»12″>
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Power (100 W)</Unit>
<Value>0</Value>
<Timestamp>2021-09-04T07:12:11</Timestamp>
</DataRecord><DataRecord id=»13″>
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Volume flow (m m^3/h)</Unit>
<Value>0</Value>
<Timestamp>2021-09-04T07:12:11</Timestamp>
</DataRecord><DataRecord id=»14″>
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Time Point (time & date)</Unit>
<Value>2021-09-04T07:58:00</Value>
<Timestamp>2021-09-04T07:12:11</Timestamp>
</DataRecord><DataRecord id=»15″>
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Operating time (hours)</Unit>
<Value>87</Value>
<Timestamp>2021-09-04T07:12:11</Timestamp>
</DataRecord><DataRecord id=»16″>
<Function>Instantaneous value</Function>
<StorageNumber>0</StorageNumber>
<Unit>Error flags</Unit>
<Value>0</Value>
<Timestamp>2021-09-04T07:12:11</Timestamp>
</DataRecord><DataRecord id=»17″>
<Function>More records follow</Function>
<Value></Value>
<Timestamp>2021-09-04T07:12:11</Timestamp>
</DataRecord></MBusData>
04.09.2021 в 11:59 #20737manjey73УчастникТаймаут в драйвере косячный, неправильная реализация, руки не доходят поправить.
Всю секцию telegram надо удалить, при правильном первоначальном запросе и выставленном параметре init = true секция создастся сама и будет запрос на перезапуск линии связи.Чтобы конфиг не пропадал, надо его положить в Instance проекта, просто его там нет. Ну или настраивать без передачи данных серверу, просто остановкой линии, изменением конфига в папке Scada/ScadaComm/Config
И когда добьетесь результата, тогда уже окончательно правильный конфиг переносить в папку Project/InstanceЕсть логи с прибора со сторонних программ? Например сделанные каким нибудь монитором порта?
Есть возможность сделать удаленное подключение к прибору чтобы можно было виртуальный порт создать у меня и попробовать опросить прибор?Вечером посмотрю подробнее, а то опять надо доки на протокол открывать и вспоминать. К сожалению не очень пока дружу с кодом оконных интерфейсов, чтобы сделать настройку более простой, а не руками.
Ну еще не реализованы в драйвере текстовые поля, мои оба прибора их не имеют.04.09.2021 в 12:01 #20738manjey73Участникз.ы. надо бы его в бесплатный вариант перевести и допиливать за донаты 🙂
Может кто и графику прикрутит 🙂04.09.2021 в 19:20 #20739dimasina71Участникдобрый день
спасибо за отклик.я честно говоря думал, что обмен по порту и есть вот эти байты:
init_slaves: debug: sending init frame #1
[2021-09-04 07:12:06] SEND (zu): 10 40 FD 3D 16
init_slaves: debug: sending init frame #2
[2021-09-04 07:12:08] SEND (zu): 10 40 FD 3D 16
[2021-09-04 07:12:10] SEND (zu): 10 5B 03 5E 16
[2021-09-04 07:12:11] RECV (zu): 68 71 71 68 08 03 72 44 28 60 10 49 6A 88 04 8C 00 00 00 0C 78 44 28 60 10 04 06 00 00 00 00 82 04 6C A1 21 C2 84 00 6C FF FF 84 04 06 00 00 00 00 C4 84 00 06 00 00 00 80 82 0A 6C A1 29 84 0A 06 00 00 00 00 04 13 23 00 00 00 02 59 AB 08 02 5D AB 08 02 61 00 00 04 2D 00 00 00 00 04 3B 00 00 00 00 04 6D 3A 07 A4 29 04 26 57 00 00 00 02 FD 17 00 00 1F 06 16
mbus_frame_print: Dumping M-Bus frame [type 4, 119 bytes]: 68 71 71 68 08 03 72 44 28 60 10 49 6A 88 04 8C 00 00 00 0C 78 44 28 60 10 04 06 00 00 00 00 82 04 6C A1 21 C2 84 00 6C FF FF 84 04 06 00 00 00 00 C4 84 00 06 00 00 00 80 82 0A 6C A1 29 84 0A 06 00 00 00 00 04 13 23 00 00 00 02 59 AB 08 02 5D AB 08 02 61 00 00 04 2D 00 00 00 00 04 3B 00 00 00 00 04 6D 3A 07 A4 29 04 26 57 00 00 00 02 FD 17 00 00 1F 06 16«Есть возможность сделать удаленное подключение к прибору чтобы можно было виртуальный порт создать у меня и попробовать опросить прибор?» — возможность есть. как реализовать?
05.09.2021 в 07:34 #20740manjey73УчастникДа, это и есть ответ прибора на запрос, одна телеграма, в которой все переменные.
Какой у счетчика Адрес и какой ID ?Если у вас счетчик с физикой MBus, и подключаете через конвертер к ПК, то нужен TCP C Сервер для COM порта по вашу операционку. Вроде и для Windows такие есть.
Ну и потом в Брендмауэре и на роутере открыть порт и сделать проброс.05.09.2021 в 11:37 #20741manjey73Участник10 5B 03 5E 16 Если читать сторонней программой всегда здесь 5B ?
05.09.2021 в 11:44 #20742manjey73Участник<?xml version="1.0" encoding="utf-8"?> <DevTemplate Name="Zenner Celsius" Init="true" Address="true" EFBCD_onprotocol="true" Bus_Timeout="500"> <SndGroups> <SndGroup SndActive="true" SndCnt="1" SndName="Information" SndType="REQ_UD2" SndFrame="Short" SndCField="5B" SndAField="" SndCIField="" /> </SndGroups> </DevTemplate>
Попробуйте запустить с таким xml
Файл необходимо расположить в Instance проекта в папке ScadaComm/Config
Если он создаст телеграму, скопировать из Scada/ScadaComm/Config в папку инстанса проекта чтобы при передачи серверу не перетирался пустым.- Этот ответ был изменен 2 года, 7 месяцев назад от manjey73.
05.09.2021 в 22:53 #20744dimasina71Участникадрес mbus у счетчика 3
ID 10602844
на этом счетчике (слава чему-то-там) есть интерфейс и кнопка — поэтому мы прошили туда адрес mbus. ID судя по-всему жестко забит внутри и называется Fabrication number.05.09.2021 в 22:54 #20745dimasina71Участникне у всех
иногда вот такой 10 7B FD 78 1605.09.2021 в 23:00 #20746dimasina71Участникпопробовал с вашим xml:
2021-09-05 22:55:54 Инициализация линии связи 1 «heat meter»
2021-09-05 22:55:54 Запуск линии связи 1 «heat meter»
2021-09-05 22:55:54 Открытие последовательного порта COM1
2021-09-05 22:55:54 Сеанс связи с КП 10 «ZennerCS», тип: KpMbus, адрес: 3
Отправка (5): 10 40 03 43 16
Приём (0/1):
Отправка (5): 10 5B 03 5E 16
Приём (0/262):
2021-09-05 22:55:57 Ошибка: Bus Timeout КП 10 «ZennerCS»
2021-09-05 22:55:57 Ошибка при выполнении сеанса опроса КП 10 «ZennerCS»: Последовательность не содержит соответствующий элементхотя размещение в instance помогло — файл перестал пропадать.
раздел с телеграммой не создал ни там, ни там05.09.2021 в 23:02 #20747dimasina71Участникв понедельник попробуем прокинуть порт. сегодня нет никого
-
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.