Having said all this, there’s another potential problem about the Cerbo CANbus ports – see here…
This says that on the Cerbo, even though they appear the same on the remote console menu (see picture) the BMS-CAN port uses 11 bit CAN data and the VE-CAN port uses 29 bit CAN data. My BMS is currently plugged into the VE-CAN port, and I assume it uses 29b data, which means it can’t be plugged into the BMS-CAN port, so the VE-CAN port (the only one which supports the Oceanvolt driver) can’t be used for the motor drive.
Thanks for the advice. Annoying though, since the boat (<2 years old!) already has a Cerbo Mk1 and Touch 50 fitted…
(an Ekrano GX won’t fit in the Touch50 hole, and anyway would need all the cables to the Cerbo rerouting/extending which is a massive job because they’re not close to each other…)
Still, I suppose £180 isn’t that much in the big picture of things.
P.S. Maybe Victron should offer trade-ins for cases like this…
Are these two ports internally separated or simply hardwired to a single can transceiver? I ask because I see only one VE.CAN port in our Multiplus II 5000 GX
If this can all be made to work then I’ll ask him – but given that he might also have to come out to the boat to reprogram the Sevcon, that might be asking a bit much, unless he can also get a (partial?) refund from Victron which seems unlikely…
He’s also gone well beyond what was expected – and without any arguments! – as far as post-delivery customer support is concerned, so I don’t want to p*ss him off by asking him to pay for what is effectively an upgrade/new feature since the boat was delivered.
Yes, if you have access to the CAN bus with Node RED, you can theoretically configure all the parameters. In Node RED, you would then only need to implement a small intermediate layer that maps a minimal CANopen function(SDO,NMT,PDO,Heartbeat), since node-red-contrib-socketcan only maps CAN Layer 2 functions.
I’d have thought that if you’re going to use Node-RED, rather than having to program the Sevcon to send out the desired data at fixed intervals (as a master) and then using Node-RED to watch for and catch it, it would be easier and probably less CPU load to read whatever data is needed from the Sevcon (default slave config) under Node-RED control at the desired interval, so the Node-RED code sets what is read and the time between samples?
There are essentially two options.
Either the Node-RED program cyclically polls the individual values from the Sevcon via CANopen SDO, or the Node-RED program configures the Sevcon’s CANopen TX PDO values (also via SDO) during boot-up, thereby also setting the transmit cycle rate. After that, the Node-RED program sends the NMT operational command once, and then the Sevcon begins cyclically sending the values via PDO. In this case, the Node-RED program no longer needs to poll the values via SDO.
A Multiplus-II GX has one can transceiver. (with two RJ-45 sockets wired in parallel to it). In the menu you’ll also find only one entry to set the profile.
A Cerbo GX has two can transceivers, each with two RJ-45 sockets wired in parallel to it, total of 4 RJ45 sockets. And one of those can transceivers is connected to a good can controller. The other one is connected to a cancontroller/can solution that does not work 100% in all situations - but works OK for the CAN-BMS protocol, hence has a different name and is not configurable.
hey @iand , this is what it is I’m afraid. Cerbo GX has been sold as is for a long time; and a newer model has improvements. We don’t have trade ins for that.
For anyone else that wants to know more about these ports and what is what and what is isolated and what is not, and so forth: all the answers are in here: Victron GX product range [Victron Energy].
Slowly but surely I come to the realization I should have listened better to my (great) supplier when I was advised to buy a non-GX MPII and a separate Cerbo. Not that that is true for everybody, but he probably assessed me to be enough a nerd/tweaker/hacker to appreciate the difference soon enough.
Like I said, when the boat was built the Cerbo Mk1 was current, as was the V1 GUI with no virtual motor drive in Node-RED or “Boat” page to display the results to the steerer, which can also now be displayed on a dedicated Android tablet – that’s 5 new things altogether.
Now all this has emerged (thank you Victron, V2 is far better than V1!) the Cerbo V2 is needed to take advantage of it – so if I want to do this, I’m going to have to swap it out. And pay, but OTOH the cost of a new Cerbo and tablet is a fraction of the cost of an installed touchscreen display for the motor drive (more than £1000 IIRC) so I can’t really complain…
I also read that plans to make GUI V2 customisable (the equivalent of GUI-Mods for V1) may need more CPU power then the current dual-core Cerbo has, such as the quad-core Ekrano. There will be a new faster Cerbo out at some point but this is maybe a year or so away, probably too long for me to wait…
I got some time today to test connecting the sevcon controller directly to Cerbo’s VE.Can port.
Good news, it works out of the box.
Take an RJ45 cable:
pin 7 (White/Brown) to CAN High on controller
pin 8 (Brown) to CAN Low on controller
As simple as that.
You can use candump can0 on the Cerbo and you should see frames from the Sevcon controller.
I’ve started writing the driver, it works without the need for SignalK or NodeRED which is great, much more efficient.
Here is a working draft for those interested: Draft: dbus sevcon driver · GitHub
I’m not going to provide much instructions for now, if you want the draft to run:
Put the file somewhere in Cerbo
Put the velib_python library next to it
Install the dependencies
Run python dbus_sevcon.py
It will report a motor drive in your devices, poll the controller and write those values on the dbus.
There is still quite some work for it to be ready to use and easily installable.
It needs to be a proper service and needs some scripts to install the dependencies.
Also I would like it to be configurable with some working defaults, but the ability to change things like CAN node ID, Device instance ID, if the throttle is flipped, perhaps a polling or TPDO mode, etc…
@mpvader Would it be possible to get access to the C library for velib? Or at least products.h? I wonder what Product ID should be reported for the Sevcon, if an ID for it already exists? Thanks
Did you try the 250kbps Oceanvolt driver first since this is already installed, or did it not work with the Sevcon?
Since it doesn’t need SignalK or NodeRED (which is good news for those like me who don’t have either installed) I guess this should get moved back off the Node-RED page then…
That is yet another step down the rabbit hole for me: making actual modifications to Venus OS on the Cerbo itself. Can’t that be prevented via a Node-RED only route?