PDA

Просмотр полной версии : Управление устройствами по RS485 при отсутствии протокола Mod bus в них.



Diogen
06.08.2026, 11:02
Уважаемые коллеги! Вопрос к имеющим опыт в организации связи ПР200 по RS485 с устройствами, у которых нет стандартных протоколов типа Mod bus RTU.
Задача состоит в том, чтобы подружить ПР200 с платой BMS управления аккумулятором, китайской фирмы Jikong
JK_B2A8S20P , V5.12.0.
На борту у неё имеютс интерфейсы :
Bluetooth, UART1, RS485/CAN.
Планируется собирать информацию от 2х батарей и отдавать им команды на включение/отключение заряда и взаимное резервирование по мере разряда. Цель : организовать очерёдность заряда и разряда 2х батарей, соединённых в одну сеть по связи, и в одну точку по силе средствами ПР200 в среде Owen Logic.

Вопрос: возможна ли практическая реализация данной задачи? Если да, то что для этого необходимо?

EFrol
06.08.2026, 11:23
ИИ ответил :

2. Включение Modbus RTU в приложении JK BMS
По умолчанию порт может вещать в проприетарном текстовом или бинарном протоколе JK.
Чтобы активировать Modbus RTU:
Подключитесь к BMS через приложение на смартфоне.
Откройте Settings (Настройки).
Найдите параметр Protocol Type (Тип протокола / Изменение UART).
Выберите один из вариантов:
001 - JK BMS RS485 Modbus V1.0 (для работы на скорости 115200).
013 - (9600) JK BMS RS485 Modbus V1.0 (если вашему внешнему контроллеру нужна скорость 9600).
3. Особенности чтения регистровКоманды Modbus:
Чтение основных параметров (напряжение, ток, температура) выполняется стандартной функцией 0x03 (Read Holding Registers) или 0x04 (Read Input Registers).
Формат данных:
Значения отдаются в виде 16-битных целых чисел (целое со знаком int16 или без знака uint16) в формате Big-Endian (старший байт идет первым).
Множители:
Большинство физических величин передаются без плавающей запятой, поэтому полученное значение нужно делить на коэффициент (например, напряжение /100 или /1000).
4. Примеры базовых регистров данных
Внимание:
Адресация может незначительно отличаться в зависимости от аппаратной версии прошивки платы (основная карта регистров базируется на спецификации JK Modbus V1.0).

Ещё можно изготовить конвертор протоколов.

Diogen
06.08.2026, 12:04
Благодарю за ответ. Задачи решаются по мере поступления, и исходя из наличия устройств. Сначала такая задача не стояла, и ПР была как управляющий элемент для управления АВР питания длмашней сети. Пока был 1 акб задача решалась, теперь она усложняется, приходится искать способы решения .

Diogen
06.08.2026, 13:42
Добрый день. Благодарю за ответ! Я, интересовался на эту тему у интеллекта:
"а можно к пр 200 соедениться по UART1 протоколу чтобы исключить конвертор? в jk похоже такой имееется"
На что он ответил следующее:

"Нет, подключить платы JK BMS напрямую к Овен ПР200 по протоколу UART (TTL) не получится, и на это есть две критические причины — аппаратная и топологическая.Исключить конвертер в данной схеме физически невозможно по следующим причинам:1. Электрическая несовместимость (Главная опасность)ПР200: На борту ПР200 вообще нет открытых выводов UART с уровнями TTL (0–5В или 0–3.3В). У него есть только USB (для прошивки) и слоты для интерфейсных плат расширения (ПР-ИП485). На выходе этих плат всегда присутствуют промышленные дифференциальные сигналы RS-485 (с напряжением до 5–12В).JK BMS: Порт GPS/UART на плате BMS выдает логические уровни TTL (3.3В).Результат прямой связи: Если вы соедините контакты ПР-ИП485 от ПР200 напрямую с выводами UART на JK BMS, микропроцессор платы BMS мгновенно сгорит из-за критического перенапряжения.2. Ограничение топологии шины («Один к одному»)Интерфейс UART (TTL) по своей природе является соединением типа Point-to-Point (Точка-Точка).По UART можно связать строго одно управляющее устройство с одним подчиненным.Поскольку у вас две платы JK BMS, соединить их параллельно по UART физически невозможно (сигналы TX от двух плат начнут «коротить» друг друга, и передача данных заблокируется).Чтобы опрашивать несколько устройств по одной паре проводов, необходима сетевая шина, которой и является RS-485."

Почему я спросил у него за UART? Потому что в меню программного интерфейса , в графе UART1 предлагаются следующие протоколы:( на фото)
Почему в разделе UART 1 не понятно, но в разделе CAN только CAN пртоколы разных устройств.

EFrol
06.08.2026, 15:06
Т.е. придется приобрести конвертер UART - RS485 и подключить к ПР, если выберите Modbus.

Сергей0308
06.08.2026, 15:26
Т.е. придется приобрести конвертер UART - RS485 и подключить к ПР, если выберите Modbus.

Кажется подобная лабуда шла к ПР114 и называлась ПР-МИ485:
https://owen.ru/product/pr_mi485

melky
06.08.2026, 18:30
Пр-ми я бы не стал брать, там на разъеме ещё и +24v присутствует. Попалит нафик порт ещё.
А так, rs485-ttl покупать, только обязательно с авто определением приема передачи, а не вариант для arduino, где ещё лапой дрыгать надо программно.

melky
06.08.2026, 18:32
Вообще-то странно, при выборе указано rs485, возможно какие-то выводы там именно rs485 становятся. Иначе бы просто оставили название uart.
Хотя это китайцы.....

Diogen
08.08.2026, 12:24
Ознакомился с мануалом на данную "лабуду" как вы выразились )). Суть её, перевести то что выдаёт ПР11х с программного выхода (там заявлен UART) в RS485, ели более точно то " Прибор преобразует сигнал, поступающий по интерфейсу
программирования реле ПР11х в сигнал промышленного
интерфейса RS-485.
После подачи напряжения питания на програмируемое реле
ПР11х, оно автоматически распознает подключенный модуль
ПР-МИ485 и активирует обмен по протоколу Modbus (Slave) ". Более точно
про протокол ничего не сказано (Mod bus RTU это или какой-то другой не ясно). Из приведенных здесь сообщений, ПР200 понимает только RTU.
По идее если так, то мне нужно приобрести 2 таких балалайки, и соеденить их в одну сеть по RS485, слэйвами и ПР200 как мастер, а выход с RJ12 распаять соответственно UART платы JK BMS . Только нужно ещё решить вопрос с питанием этих конертеров,, потому как ПР11х рядом не будет, и по кабелю программирования оно туда не подастся.

Diogen
08.08.2026, 12:45
Согласен, логика тут сомнительная, поэтому и вопрошаю с какого края к этому чуду подойти, чтобы оно выжило и при этом была связь )). Продавец этой аккумуляторной сборки сетовал на то, что платы с таким интерфейсом они не берут в разработку, потому что их постоянно палят через них разные умельцы не подумавши
Просто я думаю, если плата может общаться через uart то возможно попробовать китайскую приблуду uart -rs485 , только вот неизвестно какой там протокол, а от китайцев добиться толком сложно что там и как, потому что эти продаваны на алике сами не знают что продают . Попался мне мануал :
https://jkbms-ess.com/blogs/news/how-to-connect-jkbms-to-solar-assistant-complete-guide-rs485-can?srsltid=AfmBOopvNI6z0yT7cmw48sgJDUGxWEBuT4D-2jKgw3TnHAhIdnJFxEHX

Так вот там указывается, что :
"Важно: порт UART на JKBMS предназначен только для подключения ЖК-дисплея — его нельзя использовать для Solar Assistant. Необходимо использовать порт RS485 или CAN (доступен на сериях HC, HCRPB и PB). ".
Ну и как с этим быть? Даже не знаю .По железу установлен RS485 , а программно в UART интерфейсе Mod bus протокол.

Сергей0308
08.08.2026, 15:00
Ознакомился с мануалом на данную "лабуду" как вы выразились )). Суть её, перевести то что выдаёт ПР11х с программного выхода (там заявлен UART) в RS485, ели более точно то " Прибор преобразует сигнал, поступающий по интерфейсу
программирования реле ПР11х в сигнал промышленного
интерфейса RS-485.
После подачи напряжения питания на програмируемое реле
ПР11х, оно автоматически распознает подключенный модуль
ПР-МИ485 и активирует обмен по протоколу Modbus (Slave) ". Более точно
про протокол ничего не сказано (Mod bus RTU это или какой-то другой не ясно). Из приведенных здесь сообщений, ПР200 понимает только RTU.
По идее если так, то мне нужно приобрести 2 таких балалайки, и соеденить их в одну сеть по RS485, слэйвами и ПР200 как мастер, а выход с RJ12 распаять соответственно UART платы JK BMS . Только нужно ещё решить вопрос с питанием этих конертеров,, потому как ПР11х рядом не будет, и по кабелю программирования оно туда не подастся.

Это Вы серьёзно про протокол?
Помните что пил Моцарт, что ему Сальери наливал, то он и пил, здесь "лабуда" преобразует уровни сигнала, если Вам нужен преобразователь протоколов это как бы помягче сказать, совсем разные вещи, короче, никакого протокола у этой лабуды никогда не было и не должно было быть!

Diogen
08.08.2026, 16:30
Вон оно как? )) С Моцартом , мы конечно не выпивали, не при Сальери будет сказано, но похоже или я или вы что-то не правильно понялт. Проясним ? Ведь тут такая картина получается, что и Вангог ушёл бы в запой )) .
Если грубо, то rs - это сколько проводов , какие уровни напряжений и структура линии.
А модбас - это последовательность , с которой по этой линии передаются сигналы, чтобы оба общающихся понимали друг друга..
Так что мне нужно и то и то, потому что если даже мне удастся привести связь между платами и ПР к общему знаменателю , они всё равно не поймут друг друга общаясь на разных протоколах .

melky
08.08.2026, 17:26
Для начала, попросите через продаванов карту регистров на данное устройство, раз там есть Modbus.
Возможно там всё-таки UART. Но там так же уровни ttl.

Преобразователей в ttl полно usb-ttl, по крайней мере вы ничего не должны спалить.
ПР-МИ вам и не нужен. Есть у китайцев rs485-ttl с авто определением передачи. Даже тут на них ссылки давали часто.

Чуть позже посмотрю доку, что вы дали.
З.ы. у самого солнечный сетевой инвертор стоит, но без панелей, просто работает в режиме ИПБ так сказать. И вроде тоже порт какой-то был. Да руки до него не доходят.

Diogen
08.08.2026, 17:55
Да, видел много разных приблуд, в основном uart-rs485(usb), только на сколько я понимаю, это передача в одну сторону ( типа как подключение к экрану ) обратно он ничего не передаёт. А тут же нужно замутить так чтобы и туда и обратно)). Получается нужно совокупить два преобразователя, из которых один передаёт из rs в ttl, а другой передаёт в обратном из ttl в rs. Но это конечно даже звучит смешно, а выглядит безнадёжно.
Панелей у меня нет, инвертор самый обычный эфчайник, порт у него только для экрана, но он мне и не нужен. У меня организован АВР на базе ПР200, который и переключениями заведует и зарядом и авариями, дискретными командами. Ток заряда и напряжение на батарее, я беру с преобразователей 4-20 мА на аналоговые входы ПР, состояние сети и резерва передаю через реле, так же включается инвертор и зарядное , всё по программе Овенлоджик. Пока была одна батарея - вопрос общения между ней , зарядным, и инвертором строго не стоял. Но выяснилось, что 2.7 кВт не достаточно при длитеных отключениях, и терь нужно добавить ёмкости. А поскольку включены они буду в параллель - нужно организовать очерёдность заряда и разряда для каждой, вот я и озаботился этой связью. Хочу поженить ПР и эти платы по связи и перестроить алгоритм на 2 батареи .

Diogen
08.08.2026, 18:00
А что касается ПР МИ, то его и найти то сложно, не то чтобы прирастить к этим платам. Но, дорогу осилит идущий ))

melky
08.08.2026, 18:12
Да не нужен вам никакой пр-ми. Развод на деньги оно по большей части. Недоразумение от Овен.

Ещё раз, есть платки rs485-ttl (uart) с авто определением направления передачи. Стоят рублей 100, где-то в этих пределах. Работают без проблем.

melky
08.08.2026, 18:17
Тю блин, кто вам мешает заряжать их одновременно?
Или вы думаете ИБП, с подключением нескольких массивов работают иначе?

Ток заряда Х2 и всех делов. Ну или заряжаться будут дольше. Все.

Заряжать раздельно батареи в параллельном массиве? Так не делается.

EFrol
09.08.2026, 08:00
Попробуйте аналог "лабуды" из Ozon:
89999

но только, если Ваши руки прямые и дружат с паяльником:cool:
и ещё разберитесь для себя в чём разница между интерфейсами (UART, RS485, RS232, CAN, Ethetnet, I2C, SPI и т.д.)
и протоколами (ModbusRTU, ModbusASC, ModbusTCP, OWEN, TCP/IP и т.д.)

Diogen
09.08.2026, 08:19
Как у вас всё просто )). Было бы так - кто бы голову ломал ?)) Суть затеи в том, чтобы второй акб, был подстраховочным элементом , на случай длительного отключения. Такое случается ( пока не часто) но впереди зима, и учитывая прошлую , ничего радужного не предвидится . Уеличить ток не позволяет зарядное, а заряжать два одновременно это увеличить время заряда х2 , а не факт что оно будет. Так при разряде обеих батарей на 80% вместе они заряжаться будут дольше , чем предполагаеме время подачи электроэнергии, при этом на 100% не зарядится ни один.А если заряжать по очереди, то один зарядится точно, а второй как резервный по мере возможности. Разумеется если отключения будут длительными (по 15-20ч) постоянно , то смысла в этом нет, но в основном перерывы были в графике 6/2, 8/4 примерно так .
На данный момент, отключения кратковременные , типа вкл/выкл или на полчаса, час каждый день. Для этого не нужно гонять 2 акб чтобы заряжать их до максимального уровня обое, так и электроэнергия экономится и ресурс резервной батареи.
При возможности управлять зарядом раздельно, можно в любое время перестроить его на актуальный график. Передавать команды charg on / charg of каждому слэйву исходя из условий алгоритма, и всё будет работать как нужно. Возможно такого оыта ещё не было, но пусть я, буду первый кто его опробует с вашей помощью ). И практика интересная и дело полезное.

Diogen
09.08.2026, 08:31
Благодарю за предложение. Руки всё держат , приходилось и ноут ремонтировать самостоятельно и дрова колоть )). Делается это всё не от хорошей жизни, и учиться приходится новому по мере поступления задач.
Нечто подобное , мне предлагал собрать ии:
" Поскольку оригинальный кабель от JiKong найти сложно, проще и дешевле всего отказаться от его поиска. Возьмите обычные копеечные модули TTL-RS485 (например, плата HW-97 или XY-017 на чипе MAX485, которые продаются в любом радиомагазине).Купите 2 стандартных модуля TTL в RS485 с автоматическим определением направления передачи (они стоят около 1-2 долларов).Подключите UART-выходы каждой BMS к TTL-стороне этих модулей (cross-соединением: TX от BMS к RX модуля, RX к TX, и обязательно общий GND).Подайте на эти модули внешнее питание 5В (например, от любого блока питания автоматики).Выходы А и В с обоих модулей объедините в общую сеть RS-485 и заведите на ПР200.Это полностью рабочая промышленная схема, которая решит задачу без использования дефицитных аксессуаров JiKong.Если вы решите собирать схему на сторонних модулях TTL-RS485, подскажите: нужна ли вам точная схема распиновки 4-контактного разъема вашей платы JK BMS, чтобы не перепутать контакты питания и данных? "
Но как известно, этот парень может ошибаться, чего он и не скрывает, поэтому я и обратился к знающим коллегам.

EFrol
09.08.2026, 08:50
Я подключаю к этому китайцу Bluetooth HC-06
90000
+ питание от любого Power-банка
получаю мобильный RS485-порт к Android-приложению
и работаю с любым прибором (с любым протоколом какой может быть для RS485)
с BMS не пробовал, но если его приложение может переключить UART в режим RS485 c Modbus, то грех не попробовать:rolleyes:

Diogen
09.08.2026, 09:04
Для BMS есть своё приложение, через которое она и настраивается. А как эту штуковину подключить к ней? У неё своё приложение наверное должно быть, которым она управляется? Я не очень соображу как всё это можно соеденить в одну сеть и управлять им с ПР 🤔

EFrol
09.08.2026, 11:31
Вот здесь любопытная статья https://github.com/Louisvdw/dbus-serialbattery/discussions/250

Если разобраться с таблицей регистров, то подключение к ПР - вопрос времени.

melky
09.08.2026, 12:46
Главное, чтобы там была адресация, а не по умолчанию всегда один адрес для панели. Иначе в одну сеть подключить не получится. Придется раскидывать на разные порты RS ПРки.

Если вы будете подключать к рабочему АКБ в параллель более свежий резервный, толку не будет, убьете быстро оба. Химия у них такая, ничего не попишешь.

Diogen
09.08.2026, 16:40
Вот здесь любопытная статья https://github.com/Louisvdw/dbus-serialbattery/discussions/250

Если разобраться с таблицей регистров, то подключение к ПР - вопрос времени.

БЛАГОДАРЮ !!! Даже не знаю какой радостью оценить эти файлы ! Особенно старания доброго человека, перевёвшего PDF с китайского :o. С этим уже определённо можно работать!
Осталось определиться с приблудой для обмена и можно пробовать подключаться и писать код.

Diogen
09.08.2026, 16:52
Главное, чтобы там была адресация, а не по умолчанию всегда один адрес для панели. Иначе в одну сеть подключить не получится. Придется раскидывать на разные порты RS ПРки.

Если вы будете подключать к рабочему АКБ в параллель более свежий резервный, толку не будет, убьете быстро оба. Химия у них такая, ничего не попишешь.

Поэтому и ведётся работа для реализации управления зарядом-разрядом раздельно именно по связи.Типа каскада резервирования : к примеру адр1 - заряд до 100% при этом адр2 заряд стоп., когда заряд по адр.1 достиг 100 % - адр.2 заряд до 100% адр.1 стоп заряд.. Так же и с разрядом : адр.2 старт разряд когда адр.1 ёмк< 5%, при этом адр1 стоп разряд... Ну и так примерно всё остальное.

Сергей0308
11.08.2026, 09:51
Какая то выдуманная проблема, в смысле, развяжите аккумуляторные батареи диодами и все "проблемы" исчезнут, можно будет одновременно заряжать, не будет выравнивающих токов и других возможных проблем, в смысле, даже если одна из батарей "коротнёт", от другой можно будет работать!

Diogen
11.08.2026, 10:23
Пожалуй вот это оно.
на AliExpress:
Модуль преобразования TTL в RS485/RS485 в UART (1-5 шт.), аппаратное обеспечение для автоматического управления питанием, 3.3В/5В
https://a.aliexpress.com/_EumJviq

melky
11.08.2026, 10:57
Diogen да, эти платки с авто определением передачи.

Diogen
15.08.2026, 21:15
Diogen да, эти платки с авто определением передачи.

Нашёл даже лучше, изолированный модуль. https://a.aliexpress.com/_EzJBjhu. Остаётся дождаться прибытия и попробовать его в деле. План такой :
1) Соединить сторону TTL трансмиттера с портом UART (GPS) платы JK BMS, так сделать на обеих АКБ.
2) Стороны RS485 витой парой подать на порт 1 RS485 ПР200.
3) В настройках BMS UART Protocol установить протокол JK BMS RS485 ModBus V1.0, назначить разные адреса каждому АКБ.
4) В ПР200 создать Master интерфейс и добавить 2 устройства, озаглавив их по разному и дав им разные адреса.
Если я, правильно понимаю, когда физически сеть будет собрана , то по нажатию кнопки "Прочитать" мастер попробует связаться с подчинённым устройством, и выдаст либо ошибку либо установит связь.
5) Если связь будет установлена, то в списке переменных каждого Slev(а) создать переменные из карты регистров любезно предоставленной EFrol, и попробовать для начала опросить (только считать) несколько регистров. Для этого, вероятно в программу нужно добавить пару сетевых переменных, чтобы убедиться что связь налажена верно. Никогда этого не делал, только учусь, так что тапками прошу не бросать )).