DIY Electric Car Forums banner

EVnetics Soliton software version 1.2

4090 Views 12 Replies 7 Participants Last post by  Tesseract
2
Yep, we're closing in to a new software release despite that 1.1 just came out. Reasons for that is mainly that Junior is on it's way and the 1.1-release doesn't support it. However, it's a bit boring to do a new release without adding any fun feature I decided to add some logger information about what's limiting the motor current (if anything, of course) so you don't have to guess anymore. Here's a run on my test setup which, btw, is a huge mock-up. There not a motor in sight on my work bench so you don't think it's a dyno run.



The controller starts up at 6 seconds rather than the normal 1 seconds, otherwise the network wouldn't have time to connect before precharge starts. Here's some interesting excerpts from the logger.txt-file that's the base for the graph above, the columns are:


  1. Running time (milliseconds)
  2. CPU-load (%)
  3. Throttle (A)
  4. Motor current (A)
  5. Pulse width (%)
  6. Pack voltage
  7. Controller temp (C)
  8. RPM
  9. Input 1 (V)
  10. Input 2 (V)
  11. Input 3 (V)
  12. 12 Volt supply (V)
  13. Mode (numeric code)
  14. Mode (text)

1600 26.703125 0 2042 0.000000 0 40.000000 0 2.351044 0.000000 0.000000 11.499191 0 Starting up

6000 26.390625 0 2042 0.000000 0 42.800000 0 2.350963 0.000000 0.000000 11.506973 0 Starting up
6010 26.390625 0 900 0.000000 0 42.800000 0 2.350882 0.000000 0.000000 11.505157 1 Precharge phase

8730 28.156250 0 1 0.000000 180 42.800000 0 2.350882 0.000000 0.000000 11.492706 1 Precharge phase
8740 28.156250 0 1 0.000000 180 42.800000 0 2.350963 0.000000 0.000000 11.491150 2 Engaging contactors

9330 28.257812 0 1 0.000000 199 42.800000 0 2.350882 0.000000 0.000000 11.464172 2 Engaging contactors
9340 28.257812 0 1 0.000000 199 42.800000 100 2.350882 0.000000 0.000000 11.464172 3 Waiting for startsignal
9350 28.257812 0 1 0.000000 199 42.800000 100 2.350882 0.000000 0.000000 11.464432 5 Running

10110 31.437500 0 1 0.000000 199 42.800000 100 2.350963 0.000000 0.000000 11.467026 5 Running
10120 32.375000 6 5 1.500000 199 42.800000 100 2.350882 0.000000 0.000000 11.467285 133 Running, Slewrate active
10130 32.375000 17 8 0.600000 199 42.800000 100 2.350882 0.000000 0.000000 11.467026 133 Running, Slewrate active
10140 32.375000 25 11 1.000000 199 42.800000 100 2.350882 0.000000 0.000000 11.467026 133 Running, Slewrate active
10150 32.375000 34 17 1.400000 199 42.800000 100 2.350882 0.000000 0.000000 11.467026 133 Running, Slewrate active
10160 32.375000 42 23 2.100000 199 42.800000 100 2.350882 0.000000 0.000000 11.467285 133 Running, Slewrate active
10170 32.375000 50 25 1.800000 199 42.800000 100 2.350882 0.000000 0.000000 11.467026 133 Running, Slewrate active

10470 40.187500 188 175 5.800000 199 42.800000 100 2.350882 0.000000 0.000000 11.467026 133 Running, Slewrate active
10480 40.187500 189 180 5.900000 199 42.800000 100 2.350882 0.000000 0.000000 11.467285 133 Running, Slewrate active
10490 40.187500 191 186 5.800000 199 42.800000 100 2.350882 0.000000 0.000000 11.467544 133 Running, Slewrate active
10500 40.187500 192 189 5.500000 199 42.800000 100 2.350882 0.000000 0.000000 11.467285 5 Running
10510 40.187500 195 191 6.100000 199 42.800000 100 2.350963 0.000000 0.000000 11.467285 5 Running
10520 40.187500 196 194 6.300000 199 42.800000 100 2.350882 0.000000 0.000000 11.467285 5 Running

16630 41.960938 550 548 20.300000 199 42.800000 5034 2.350882 0.000000 0.000000 11.467026 5 Running
16640 41.960938 550 263 0.000000 199 42.800000 5070 2.350882 0.000000 0.000000 11.467026 4101 Running, RPM high
16650 41.960938 550 105 0.000000 199 42.800000 5097 2.350882 0.000000 0.000000 11.467026 4229 Running, RPM high, Slewrate active
16660 41.960938 552 42 0.000000 199 42.800000 5142 2.350882 0.000000 0.000000 11.466507 4229 Running, RPM high, Slewrate active
16670 41.960938 553 17 0.000000 199 42.800000 5142 2.350882 0.000000 0.000000 11.467026 4229 Running, RPM high, Slewrate active
16680 37.382812 555 6 0.000000 199 42.800000 5142 2.350882 0.000000 0.000000 11.467026 4229 Running, RPM high, Slewrate active
16690 37.382812 557 2 0.000000 199 42.800000 5142 2.350963 0.000000 0.000000 11.467026 4229 Running, RPM high, Slewrate active
16700 37.382812 557 1 0.000000 199 42.800000 5142 2.350882 0.000000 0.000000 11.467026 4229 Running, RPM high, Slewrate active
16710 37.382812 557 1 0.000000 199 42.800000 5115 2.350963 0.000000 0.000000 11.467026 4229 Running, RPM high, Slewrate active
16720 37.382812 558 1 0.000000 199 42.800000 5088 2.350882 0.000000 0.000000 11.467285 4229 Running, RPM high, Slewrate active
16730 37.382812 558 1 0.000000 199 42.800000 5088 2.350882 0.000000 0.000000 11.467285 4229 Running, RPM high, Slewrate active
16740 37.382812 560 1 0.000000 199 42.800000 5061 2.350882 0.000000 0.000000 11.467026 4229 Running, RPM high, Slewrate active
16750 34.593750 561 1 0.000000 199 42.800000 5061 2.350882 0.000000 0.000000 11.467026 4229 Running, RPM high, Slewrate active
16760 34.593750 563 1 0.000000 199 42.800000 5034 2.350882 0.000000 0.000000 11.466247 4229 Running, RPM high, Slewrate active
16770 34.593750 564 1 0.000000 199 42.800000 5000 2.350882 0.000000 0.000000 11.466247 4229 Running, RPM high, Slewrate active
16780 34.593750 565 1 5.000000 199 42.800000 5000 2.350963 0.000000 0.000000 11.466247 133 Running, Slewrate active
16790 34.593750 567 7 6.500000 199 42.800000 5000 2.350882 0.000000 0.000000 11.466247 133 Running, Slewrate active
16800 34.593750 566 10 7.300000 199 42.800000 4965 2.350963 0.000000 0.000000 11.466507 133 Running, Slewrate active
16810 38.351562 566 15 7.500000 199 42.800000 4931 2.350963 0.000000 0.000000 11.466507 133 Running, Slewrate active
16820 38.351562 567 20 7.300000 199 42.800000 4897 2.350882 0.000000 0.000000 11.467026 133 Running, Slewrate active

29000 43.796875 584 309 13.800000 199 82.000000 4615 2.350882 0.000000 0.000000 11.467285 133 Running, Slewrate active
29020 43.796875 584 320 14.200000 199 82.500000 4615 2.350963 0.000000 0.000000 11.467285 133 Running, Slewrate active
29040 43.796875 583 314 13.800000 199 82.500000 4615 2.350882 0.000000 0.000000 11.467026 389 Running, Controller temp high, Slewrate active
29060 43.320312 583 314 14.200000 199 82.500000 4615 2.350882 0.000000 0.000000 11.467285 389 Running, Controller temp high, Slewrate active
29080 43.320312 584 313 14.100000 199 82.500000 4615 2.350963 0.000000 0.000000 11.467285 389 Running, Controller temp high, Slewrate active
29100 43.320312 583 314 14.200000 199 83.000000 4615 2.350882 0.000000 0.000000 11.467804 389 Running, Controller temp high, Slewrate active
29120 44.242188 584 305 13.400000 199 83.000000 4615 2.350882 0.000000 0.000000 11.467285 389 Running, Controller temp high, Slewrate active

40880 32.171875 0 1 0.000000 100 48.200000 298 2.350882 0.000000 0.000000 11.467285 5 Running
40890 32.171875 0 1 0.000000 98 48.200000 298 2.350882 0.000000 0.000000 11.467285 5 Running
40900 32.171875 0 1 0.000000 96 48.200000 298 2.350882 0.000000 0.000000 11.467285 2053 Running, Low pack volt
40910 32.171875 0 1 0.000000 94 48.200000 298 2.350963 0.000000 0.000000 11.467026 2053 Running, Low pack volt
40920 32.171875 0 1 0.000000 92 48.200000 298 2.350963 0.000000 0.000000 11.467285 2053 Running, Low pack volt
40930 32.171875 0 1 0.000000 89 48.200000 298 2.350882 0.000000 0.000000 11.467026 2053 Running, Low pack volt
40950 30.125000 0 1 0.000000 84 48.200000 298 2.350882 0.000000 0.000000 11.476623 27 Error: Pack voltage too low
40960 30.125000 0 1 0.000000 81 48.200000 298 2.350882 0.000000 0.000000 11.481033 27 Error: Pack voltage too low

So there'll be a new software release within a few days unless something unexpected happens. :D

Attachments

See less See more
1 - 13 of 13 Posts
Hey Qer,

Is there an ETA on Junior yet?

Shane
Yeah, "soon". :D

No, there's not a specific date (unless Tesseract has forgotten to tell me), it'll simply be released when it's done and we're satisfied with the test results etc. 1.2 is the first software release that support Junior (Junior and S1 run exactly the same software to make my life easier) and I think Tesseract has, or soon will have, all the hardware for being able to start testing things.

From testing to producing will of course not happen over night but since it's pretty much a downscaled Soliton 1 and things are coming together fairly nice I don't think it will be even half as tedious as all the last "small fixes" we had to do to the Soliton 1...

But, well, soon. :rolleyes:
...it'll simply be released when it's done...
"Planung ist das Ersetzen des Zufalls durch den Irrtum."
"Planung ist das Ersetzen des Zufalls durch den Irrtum."
Hm. Maybe I should print that out and put up in the office at my day time job...
Hey Qer,

Is there an ETA on Junior yet?

Shane
What about "Big Sol" are they also on their way?
What about "Big Sol" are they also on their way?
Uhm. Well, we're planning it but don't expect that one quite as soon... :rolleyes:
We don't really have an official timetable or schedule. We do have a priority list, but even that seems to get changed on a daily basis. That said, our first priority is satisfying demand for the Soliton1 - something which has been a bit of a challenge over the last month to six weeks both because of the hardware revisions I've had to make to accommodate the expanding product line and a weird uptick in orders.

Anyway, I received the 4th revision of the pc boards for Junior a couple weeks ago but I just haven't had the chance to test them yet. That's partially because we need to machine a new enclosure. Once that gets done I can start the destructive testing to determine the safe operating area, then the non-destructive testing to confirm it, then it will more or less be ready for release because the hardware is a known quantity and the software is more or less the same as in the Soliton1 (just different current limits and temperature scaling).

Big Sol... well... it's still on the schedule, it just isn't a high priority. We are pretty much working in tandem with toddshotrods on this, and he, like us, is very much afflicted with the tinkering/perfectionist genes ;)
See less See more
...Big Sol... well... it's still on the schedule, it just isn't a high priority. We are pretty much working in tandem with toddshotrods on this, and he, like us, is very much afflicted with the tinkering/perfectionist genes ;)
Yup. ;) Sorry guys, I'm on their side. :p:D EV racing is still gestating right now, and there isn't exactly a lot of need/demand for it yet anyway. The current crop hasn't even exceeded the limits of the Zilla 2K-HV yet.
Hi Qer,

Has the data stream format from Solition1 changed since v1.0 ?

Cheers,
Pete

www.rad.co.nz
Hi Qer,

Has the data stream format from Solition1 changed since v1.0 ?
Yes, but not drastically so. The UDP-package contained 14 16-bit words (most of them unsigned) in 1.0, in 1.1 it was extended to 16 words and 1.2 has also 16 words but one has a slightly altered function. So this is the complete format:


  1. 2 NUL-bytes
  2. Running time (0-59999 ms)
  3. Running time (0-65535 s)
  4. 12 Volt supply (see comment below)
  5. Pack voltage (V)
  6. Motor current (A)
  7. Tempreature (C * 10, signed)
  8. Input 3 (see comment below)
  9. Input 2 (-"-)
  10. Input 1 (-"-)
  11. Throttle (A)
  12. CPU-load (divide by 128 for percent)
  13. Pulse width (divide by 10 for percent)
  14. RPM (not that it works very well in 1.0, but it's reported anyway)
  15. Debug word (ie ignore, introduced in 1.1)
  16. Mode (see comment below, introduced in 1.1)

So, some of those values are dumped raw from the internal format rather than converted, that's why they're a bit awkward to use. The actual 12 Volt supply voltage can be calculated by taking the 4:th word, multiply by 0.00025939941 and adding 1. The actual input voltages can be calculated by multiplying by 0.000080645.

The mode word has changed format between 1.1 and 1.2. In 1.1 it only reported errors as a signed byte (high byte was always 0) where negative values indicated errors. In 1.2 the word has been changed to a bit field with the following functions:


  • 15: High motor voltage
  • 14: High motor power
  • 13: High motor temp (snap switch input)
  • 12: Over REV
  • 11: Low pack voltage (or LVC BMS input active)
  • 10: High pack current
  • 9: High voltage high current (ie if pack voltage is above 310 Volt AND motor current hit 900 Ampere)
  • 8: High controller temp (this will ONLY indicate if the current is detoriated due to high temperature, not that the temperature itself is high)
  • 7: Slewrate active
  • 6: Throttle blocked (for example when shifting reverse-forward)
  • 5: (not used)
  • 4-0: Status/error codes

The status/error codes are:


  • 0: Starting up (software initializing etc)
  • 1: Precharge phase (precharge relay active)
  • 2: Engaging contactors (the two contactors are activated sequencially to avoid a too big current rush on 12 Volt)
  • 3: Wating for start signal (if that's enabled as an input)
  • 4: Throttle not in zero position
  • 5: Running
  • 6-20: (not used)
  • 21: Zero voltage after precharge (did you connect that Anderson connector)
  • 22: Pack voltage too low after precharge (might indicate a shorted IGBT)
  • 23: Faulty throttle signal (either unconnected or short circuited)
  • 24: 12 Volt too high
  • 25: 12 Volt too low (a DC/DC is a good thing...)
  • 26: Pack voltage too high (ie above 342 Volt)
  • 27: Pack voltage too low (which probably will only show if you blew a fuse or something)
  • 28: Motor terminals short circuited (or your motor just went up in a plasma ball)
  • 29: Out of memory (I hope to never see this in a log...)
  • 30: Software error (ditto)
  • 31: Controller shut down by user (either in web interface or by turning off ignition)

If you mask the status/error word with 0x1f (or 31, 00000000 00011111 in binary, for those of you that are hexadecimally impaired :D ) the codes will be the same in both 1.1 and 1.2.

Please note that there's an extra debug feature in the log format! If the first byte isn't NUL the controller hasn't sent a log package but a clear text NUL-terminated ASCII-string of arbitrary length! Most (all?) of these are removed in 1.2 since the mode bit field satisfy the same need in a more elegant fashion, but it's still worth to make sure the code can handle it if they appear since many versions of the software actually does transmit them every now and then.
See less See more
Finally! Soliton software version 1.2! Not even remotely as huge as 1.1 though:

Bug fixes:


  • Fixed a web bug that made it impossible to select LVC BMS.

Features:


  • Added logging of active limits that makes it possible to see why actual motor current isn't the same as throttle demand.
  • Adaptations for Junior.

So without any further small talk, here it is!

Attachments

See less See more
This probably goes without saying, but, well... if you have a Soliton1 you really ought to upgrade to v1.2 of the code. Download it from here for now as who knows what's on the website (it's such a pain to manage that thing we have hired someone to redo it on Drupal or Wordpress or the like).
1 - 13 of 13 Posts
This is an older thread, you may not receive a response, and could be reviving an old thread. Please consider creating a new thread.
Top