Byte order for this PylontechCANBatteryLimitsFrameStruct #22
paulsteigel
started this conversation in
General
Replies: 1 comment 1 reply
-
You are right, but what is wrong with this? |
Beta Was this translation helpful? Give feedback.
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment

Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Hi Armin,

It's Ngoc again, I have check your struct on Pylontech_CAN.h
struct PylontechCANBatteryLimitsFrameStruct { struct PylontechCANFrameInfoStruct PylontechCANFrameInfo = { PYLON_CAN_BATTERY_LIMITS_FRAME_ID, 8 }; // 0x351 struct { int16_t BatteryChargeOvervoltage100Millivolt; // 0 to 750 int16_t BatteryChargeCurrentLimit100Milliampere; // 0 to 5000 int16_t BatteryDischargeCurrentLimit100Milliampere; // -5000 to 0 int16_t BatteryDischarge100Millivolt; // 0 to 65535 // not in documentation } FrameData;and referring to this https://www.photovoltaikforum.com/core/attachment/77135-pylon-bms-protocol-can-can-20161103-pdf/
According to the datasheet, Data0,1 should be charging voltage and Data 3,4 are for current. Following your code, I could not quite understand and I would believe you would go with charge voltage, current then Discharge voltage, current. Am I wrong, please advice.
I revised this code to check and start linear charging at 80% SOC (or above) using voltage. Can you advice me on this code with thanks.
The function above will start to gradually reduce charging voltage to the floating level following the increasing of SOC.
I tried your code with modifyCANData and it helped to avoid additional charging at 100% but it will tell the Inverter to update the current limit to a number of other than defined in JKBMS app (which is not quite nice).
I added with IsCharging variable to detect charging status at the getCurrent procedure as below:
Many thanks for your attention,
Ngoc
Beta Was this translation helpful? Give feedback.
All reactions