Комунікація інвертора Anenji 6.2kw і батареї Dyness B4850

Capone

Tier3
Реєстрування
13 Вер 2024
Дописи
14
Бали
3
Із коробки підключення по RS-485 не запрацювало. Як і усі хто намагався, я також пробував різні комбінаціі і шнурки, але марно. Тому майже відразу перейшов до плану "Б". Наразі накопичилося вже чимало інформації і хотілося її кудись викласти щоб не загубилась і можливо допомогла комусь просунутися далі. Отже...

День 1
Для початку треба було зїясувати, які данні взагалі-то може віддати Dyness b4850 по RS-485 і протоколу PYLON. Після невеликого гугління натрапив на цікавий проєкт: https://github.com/Frankkkkk/python-pylontech. Автор стверджував, що йому вдалося витягнути багато цікавої інфи з акумів Pylontech, зокрема напруги по коміркам і SOC. Напруги по коміркам захотілося побачити і мені, особливо, щоб зрозуміти стан акума 2023 року випуску і розбаланс по коміркам. Замовив донгл на Алі...
 
День 2
Адаптер USB to RS-485 приїхав доволі швидко і я зразу почав експерименти. По перше, треба було зробити шнурок для з'еднання і виставити комбінацію перемикачів на самій батареї. Зробив шнурок користуючись мануалом, все як на картинці: PIN1 до A на адаптері, PIN3 до B. Землю не підключав, можливо то на велікі відстані треба.

1732271941293.png

Далі методом перебору знайшов комбінацію на батареї. Саме така комбінація має бути для того щоб актівізувати Pylon протокол на швидкості 9600, інші комбінації не спрацювали. Ще один момент - після вибору комбінації обовїяково треба вимкнути/ввімкнути батарею, налаштуваня підхоплюються на старті.

1732272219062.png

Ну і після усіх маніпуляцій вичитав компом таку інфу. Є і інші набори данних із протоколу Pylon, але це мабуть найцікавіші. І здається їх достатньо для будь якого інвертора. Далі буде...

get_values
Код:
Container:
    NumberOfModules = 2
    Module = ListContainer:
        Container:
            NumberOfCells = 15
            CellVoltages = ListContainer:
                3.332
                3.333
                3.333
                3.333
                3.332
                3.332
                3.332
                3.333
                3.332
                3.332
                3.332
                3.332
                3.331
                3.331
                3.331
            NumberOfTemperatures = 5
            AverageBMSTemperature = 25.4
            GroupedCellsTemperatures = ListContainer:
                25.4
                25.1
                25.1
                25.1
            Current = 0.0
            Voltage = 49.97
            Power = 0.0
            CycleNumber = 12
            RemainingCapacity = 39.0
            TotalCapacity = 50.0
    TotalPower = 0.0
    StateOfCharge = 0.78

get_manufacturer_info
Код:
Container:
    CellHighVoltageLimit = 3.6
    CellLowVoltageLimit = 2.85
    CellUnderVoltageLimit = 2.9
    ChargeHighTemperatureLimit = 65.0
    ChargeLowTemperatureLimit = 0.0
    ChargeCurrentLimit = -1553.6
    ModuleHighVoltageLimit = 54.75
    ModuleLowVoltageLimit = 42.0
    ModuleUnderVoltageLimit = 45.0
    DischargeHighTemperatureLimit = 65.0
    DischargeLowTemperatureLimit = 0.0
    DischargeCurrentLimit = 1553.6
 
День 3
Продовжив аналізувати Pylon протокол. Виглядає так, що Dyness реалізував його доволі криво і я помітив декілька помилок.

По перше, "NumberOfModules = 2" це неправда, у мене був підключений тільки один модуль. А коли я притягнув другий, то ця цифра не змінилася. Скоріше за все, 2 там прибита гвіздками і на будь-яку кільксть модулів буде видавати як 2.

По друге, протокол Pylon спроєктований так, що може вичитувати напруги и температури по коміркам будь якого модуля під'еднаного до Master модуля або для усих з'єднаних модулів одночасно. Таким чином можна було б вирахувати "середні по палаті" значення, але не в випадку с Dyness, там завжди повертаються напруги тільки Master модуля. Тобто, по цій логіці, для Dyness нема сенсу з`єднувати модулі перемичками, так як BMS-ки якщо і спілкуються між собою, то на відповідь інвертору це не впливає.

Хоча для загальної напруги це не так важливо, так як модулі з'єднані в пралель і напруга буде однакова, але з іншого боку це свідчить про якість тестування програмного забезпечення цих модулів...
 
День 4
Далі настала черга інвертора. Треба було розібратися, що посилає інвертор по RS485, і чи посилає взагалі. Згідно інструкції до інвертора в налаштуваннях можна вибрати 2 типи батарей з підтримкою комунікації - це Li2 та Li4. Я аналізував обидва типи, але зараз зосередимось на Li2, так як саме він заявлений як "Support PYLON US2000 Protocol 3.5 Version", то я з нього і почав.

Написав невеличку програмку яка слухає порт 485, але на цей раз підключив адаптер "USB to RS485" до інвертора. RJ45 обжав згідно інструкціі тільки 1 та 2 пін (інші дублюючі).
1732980463096.png
До речі, якби все працювало з самого початку, то ідеально підійшов би Гроватівський шнурок із комплекта, піни на інверторі та на батареї з'єднані відповідно. Після того як все підключив, вибрав на інверторі Li2 і побачив наступні логи (одна команда приблизно раз в секунду надходить). Скопіював перших 10, так як потім, все повторюється по циклу.

Код:
~200246610000FDAB
~201246610000FDAA
~202246610000FDA9
~203246610000FDA8
~204246610000FDA7
~200246630000FDA9
~201246630000FDA8
~202246630000FDA7
~203246630000FDA6
~204246630000FDA5

Тобто інвертор таки намагаеться комунікувати - це добре! Але ці команди були не знайомі і відрізнялись від тих, які я відправляв батареї раніше, і на які отримував відповідь. Пішов шукати документацію на v3.5 протоколу PYLON...
 
Как успехи? Получилось подружить батарею и инвертор?
 
Как успехи? Получилось подружить батарею и инвертор?
Поки що ні, там звичайним патч-кордом не обійтися. Треба робити конвертор протоколів PYLON з v2.8 яку підтримує батарея на v3.5 з яку розуміє інвертор. Я над цим працюю, але то буде не бистро. Вже є проміжні результати, буду публікувати їх тут.
 
Красава, будем з нетерпінням чекати!
 
В мене втік покупець на анжея, також хотів поміняти, але дивлюсь з блекаутами справляється і тим більше на алі по 12к анжеї, можна поставити і батькам і тещі
 
Поки що ні, там звичайним патч-кордом не обійтися. Треба робити конвертор протоколів PYLON з v2.8 яку підтримує батарея на v3.5 з яку розуміє інвертор. Я над цим працюю, але то буде не бистро. Вже є проміжні результати, буду публікувати їх тут.
як казав Леонід Данилович
так це вже було!)))

на GitHub вже є конвертер.
 
Останнє редагування:
як казав Леонід Данилович
так це вже було!)))

та GitHub вже є конвертер.
Але під НА. Треба дещо переробити
пропоную обʼєднати зусилля
роблю універсальний конвертер
якщо цікаво - пишіть на пошту
в профілі
Ну це для мене типу як хоббі, і я маю чисто спортивний інтерес. Та і вільного часу не дуже багато, так шо самому цікаво виде щось з цього, чи ні.
 
День 5
Продовжую розбирати протокол PYLON v3.5. Можна помітити що в серіі запросів від інвертора міняються адрес модуля (перша колонка) і код команди (друга). Адресація модулів на разі не так важлива, в Пілоні вони стартують з 2 і якщо би батарея відповіла на перший та шостий запрос (для одного адреса), то гадаю інвертору було б цього достатньо для успішного з'єднання.

1733597819339.png

Згідно скріну інвертор посилає команду 61h (Get System analog data) 5 разів в надії отримати відповідь, а потім 63h (Get system charge discharge management info). Це цікаво, так як v2.8 теж має схожу інвормацію, яку я витягував з батареї у другому пості, але коди команд і формати інші. Це доречі пояснює, що батарея не відповідає на ці команди інвертора саме тому, що вона не підтримує v3.5. Щоб переконатися в цьому, я написав іншу програмку, яка посилає ці ж самі команди, але вже з компа і слухає батарею - в результаті тиша - що і треба було довести. Питання навіщо китайцям було придумувати нові команди, якщо старі пряцюють не гірше залишаеться без відповіді. Копаю далі...
 
Останнє редагування:
День 6
Перед тим як вигадувати велосипед, виникла ідея обдурити інвертор і підсунути йому фейкові відповіді на команди 61h і 63h. В теоріі це повинно змусити інвертор показати підключення до батареї, тобто такий собі емулятор. Сказано - зроблено! Розширив програмку з першого посту двома новими командами, підключив комп до інвертора, виставив режимі Li2 і, - це спрацювало! Інвертор відразу перестав пищати що нема батареї і з'явилися такі 2 скріни:

Правда чомусь показало 250А, хоча в ємуляторі я передавав 25, мабудь десь помилився з коефіцієнтом.
IMG_20241129_174552.jpg

Тут все чудово, передав SOC як 99%, так і відбразилося.
IMG_20241129_174601.jpg

В принципі, це відповідае скрінам з інструкціі і далі там копати немає куди.
1734192313006.png 1734192348100.png

Тепер можна рухатись далі і писати адаптер для батареї...
 
День 6
Перед тим як вигадувати велосипед, виникла ідея обдурити інвертор і підсунути йому фейкові відповіді на команди 61h і 63h. В теоріі це повинно змусити інвертор показати підключення до батареї, тобто такий собі емулятор. Сказано - зроблено! Розширив програмку з першого посту двома новими командами, підключив комп до інвертора, виставив режимі Li2 і, - це спрацювало! Інвертор відразу перестав пищати що нема батареї і з'явилися такі 2 скріни:

Правда чомусь показало 250А, хоча в ємуляторі я передавав 25, мабудь десь помилився з коефіцієнтом.
Переглянути вкладення 5798

Тут все чудово, передав SOC як 99%, так і відбразилося.
Переглянути вкладення 5799

В принципі, це відповідае скрінам з інструкціі і далі там копати немає куди.
Переглянути вкладення 5800 Переглянути вкладення 5801

Тепер можна рухатись далі і писати адаптер для батареї...
слідкую за Вашими успіхами, готовий купити тестовий зразок адаптера
 
Pylon
 

Вкладення

  • Sunsynk_BatteryCompatibility_v12_English-1.pdf
    736,7 Кб · Перегляди: 18
Вчора налаштовував EASUN 11KW в звязці з бмс 100balance (той же daly) - то в режимі Li2 на інверторі та PYLON на бмс - нічого не вдавалось, щоб запрацювало. Зате в режимі GROWATT та Li4 - звязок вдалось нормально налаштувати
Можливо виставте в себе теж на батареї щоб протокол був на GROWATT RS485 та спробуйте з режимом Li4
 
Назад
Угорі