(SDU, OI board) control of derating via CAN, from BMS
-
- Posts: 132
- Joined: Sun Oct 13, 2019 8:06 pm
- Location: Scotland
- Has thanked: 15 times
- Been thanked: 6 times
(SDU, OI board) control of derating via CAN, from BMS
Hi, creating a thread for this topic since I can't see it explained anywhere (please link if it has been)
On the SDU web interface, there is support for bmslimhigh and bmslimlow. I believe this is associated with a digital input from a BMS to give a fixed change of limits for "turtle mode" type operation, or to reduce regen. The pin seems not to be brought out to the external connector.
On the SDU board, the support exists to both send and receive some values over CAN - I am using this to send values already, based on the instructions here:
https://openinverter.org/wiki/CAN_communication
In the list of "spot values" which can be set via CAN, there is "bms" which will presumably work with the bmslimhigh and bmslimlow values above. But this is a crude method, I would prefer to change idcmax or something like that to definitively use the dynamic limit from the BMS. idcmax is not in the list.
There is discussion of "SDO" in the page above, which seems to be the way to modify other parameters not in the "spot values" list. Has anyone successfully used this method, and which values did you use to achieve it? And any other tips
I will update with my answer, assuming I find one, if no-one else does!
On the SDU web interface, there is support for bmslimhigh and bmslimlow. I believe this is associated with a digital input from a BMS to give a fixed change of limits for "turtle mode" type operation, or to reduce regen. The pin seems not to be brought out to the external connector.
On the SDU board, the support exists to both send and receive some values over CAN - I am using this to send values already, based on the instructions here:
https://openinverter.org/wiki/CAN_communication
In the list of "spot values" which can be set via CAN, there is "bms" which will presumably work with the bmslimhigh and bmslimlow values above. But this is a crude method, I would prefer to change idcmax or something like that to definitively use the dynamic limit from the BMS. idcmax is not in the list.
There is discussion of "SDO" in the page above, which seems to be the way to modify other parameters not in the "spot values" list. Has anyone successfully used this method, and which values did you use to achieve it? And any other tips
I will update with my answer, assuming I find one, if no-one else does!
-
- Posts: 132
- Joined: Sun Oct 13, 2019 8:06 pm
- Location: Scotland
- Has thanked: 15 times
- Been thanked: 6 times
Re: (SDU, OI board) control of derating via CAN, from BMS
There was actually a link to a thread on that page, I missed it:
viewtopic.php?t=1468
Will confirm...
viewtopic.php?t=1468
Will confirm...
- johu
- Site Admin
- Posts: 6256
- Joined: Thu Nov 08, 2018 10:52 pm
- Location: Kassel/Germany
- Has thanked: 236 times
- Been thanked: 1286 times
- Contact:
Re: (SDU, OI board) control of derating via CAN, from BMS
You can map idcmin and idcmax to receive via CAN. On the newer web interface this is possible via gui, on the older on you'll need a custom command like
But of course the same is possible with SDO
Code: Select all
can rx idcmax 100 0 16 1
Support R/D and forum on Patreon: https://patreon.com/openinverter - Subscribe on odysee: https://odysee.com/@openinverter:9
-
- Posts: 132
- Joined: Sun Oct 13, 2019 8:06 pm
- Location: Scotland
- Has thanked: 15 times
- Been thanked: 6 times
Re: (SDU, OI board) control of derating via CAN, from BMS
Thanks, I have tried it the "old way", but will look into updating if that's possible.
Is there any way to validate that the correct value is received, or is it only possible by mashing the accelerator and see what happens?
Is there any way to validate that the correct value is received, or is it only possible by mashing the accelerator and see what happens?
-
- Posts: 1782
- Joined: Fri Mar 01, 2019 9:15 pm
- Location: Bristol
- Has thanked: 153 times
- Been thanked: 349 times
-
- Posts: 132
- Joined: Sun Oct 13, 2019 8:06 pm
- Location: Scotland
- Has thanked: 15 times
- Been thanked: 6 times
Re: (SDU, OI board) control of derating via CAN, from BMS
idcmin and idcmax under "parameters" remain at the values I originally set, not what the BMS is transmitting. Should they reflect the received values?
The messages sent by Orion: The custom config used (copied from that post linked above):
can rx idcmax 1301 0 16 32
can rx idcmin 1300 0 16 -32
-
- Posts: 1782
- Joined: Fri Mar 01, 2019 9:15 pm
- Location: Bristol
- Has thanked: 153 times
- Been thanked: 349 times
Re: (SDU, OI board) control of derating via CAN, from BMS
The show the active current parameters in memory, not the ones loaded from flash on start. So if they are not changing they are not received correctly.
- johu
- Site Admin
- Posts: 6256
- Joined: Thu Nov 08, 2018 10:52 pm
- Location: Kassel/Germany
- Has thanked: 236 times
- Been thanked: 1286 times
- Contact:
Re: (SDU, OI board) control of derating via CAN, from BMS
Which version software? The more recent ones take 1 as a multiplier for unity gain, no longer 32
Support R/D and forum on Patreon: https://patreon.com/openinverter - Subscribe on odysee: https://odysee.com/@openinverter:9
-
- Posts: 132
- Joined: Sun Oct 13, 2019 8:06 pm
- Location: Scotland
- Has thanked: 15 times
- Been thanked: 6 times
Re: (SDU, OI board) control of derating via CAN, from BMS
OK, thanks, they do change, and the 32 was incorrect. It's a very confusing trial and error process as the wifi disconnects every 30 seconds or so, so always a lottery if it actually refreshed or accepted the command.
A working config is:
can rx idcmin 1300 0 16 -1
With Orion settings:
0x514, PACK CCL, 2 bytes field length, MSB, Little Endian, Signed value. 48ms repetition
can rx idcmax 1301 0 16 1
With Orion settiings:
0x515, PACK DCL, 2 bytes field length, MSB, Little Endian. 48ms repetition
I will see how it drives and report back.
A working config is:
can rx idcmin 1300 0 16 -1
With Orion settings:
0x514, PACK CCL, 2 bytes field length, MSB, Little Endian, Signed value. 48ms repetition
can rx idcmax 1301 0 16 1
With Orion settiings:
0x515, PACK DCL, 2 bytes field length, MSB, Little Endian. 48ms repetition
I will see how it drives and report back.
-
- Posts: 268
- Joined: Sun Jan 03, 2021 6:12 am
- Has thanked: 69 times
- Been thanked: 24 times
Re: (SDU, OI board) control of derating via CAN, from BMS
How do you find the drive performing with dynamic idcmax/idcmin at 48ms repetition?
I tried mine last night setting idcmax dynamically per BMS and I would sometimes get the drive to studder when I'd accel.
Theories:
1. Need to increase the frequency of BMS update - currently ~600ms (default BMS)
2. During discharge current derating I receive decimal values, not sure if SDU cares.
3. During discharge current derating BMS values derates almost linearly, i.e they sometimes dance +/- around the value, not sure if SDU cares.
My setup from SimpBMS on the SDU custom CAN message
Sample reading on the can bus for the BMS discharge current.
I tried mine last night setting idcmax dynamically per BMS and I would sometimes get the drive to studder when I'd accel.
Theories:
1. Need to increase the frequency of BMS update - currently ~600ms (default BMS)
2. During discharge current derating I receive decimal values, not sure if SDU cares.
3. During discharge current derating BMS values derates almost linearly, i.e they sometimes dance +/- around the value, not sure if SDU cares.
My setup from SimpBMS on the SDU custom CAN message
Code: Select all
can rx idcmax 849 32 16 0.1
- johu
- Site Admin
- Posts: 6256
- Joined: Thu Nov 08, 2018 10:52 pm
- Location: Kassel/Germany
- Has thanked: 236 times
- Been thanked: 1286 times
- Contact:
Re: (SDU, OI board) control of derating via CAN, from BMS
v5.35.R has the parameter "idcflt" that low pass filters DC current before feeding it into the derater. This should make derating smoother.
Support R/D and forum on Patreon: https://patreon.com/openinverter - Subscribe on odysee: https://odysee.com/@openinverter:9