1
\$\begingroup\$

I am currently working on a system using C# for a windows GUI with an Ixxat USB-to-CAN and an STM32F303K8 that runs CANopen, The system itself is running fine I can send and receive messages to and from the GUI and STM via the specialized cabling and using the STM I can display the information in a separate terminal via UART.

The problem lies in the specific purpose of this system which is to control a CANopen motor. I have controlled this motor before and had to power it with a separtate 24v supply through the cabling, now for whatever reason its causing some sort of interference on the CAN lines causing it to hang. The three entities are connected via a T-block made for the cables and the Ixxat and STM are powered via the computer. The power supply lines have been connected both in twisted and non-twisted pair fashion. Also the CAN lines resistance when I checked is 40 ohms, which I know it should be 60 but ive checked it with and without the motor connected and its the same, implying it was working just fine at 40 ohms.

Any theories as to what this issue could be?

Edit: This is something I forgot to include before, I am running the C# GUI in visual studio in debug mode. When I turn on the power supply the Process Memory and CPU usage increase a lot. Dont know if that will help.

Edit:General overview

T-block

Ixxat

Setup

enter image description here

This right here is the CAN message that gets repeatedly sent and clogs up the CAN lines. My system is running at 1 Mbit/s, and this message is being sent every 574 us.

\$\endgroup\$
9
  • \$\begingroup\$ thunderbootyclap - Hi, You said that you have controlled the motor before, using a separate 24 V supply, but I don't see info about what is different between that & what you are doing now. How do you know the motor is causing interference on the CAN signals (rather than interfering with operation in some other way)? Perhaps others won't need more info, but IMHO the question would benefit from you adding photos of the h/w & cabling, relevant schematics, oscilloscope traces, your analysis about why this is a power supply problem and clear explanations of what is different from when it worked. \$\endgroup\$ – SamGibson Jun 5 at 19:05
  • \$\begingroup\$ Since single termination is 120 ohms, having properly terminated bus with two terminations would show 60 ohms, and triply terminated bus 40 ohms. Have you checked for extra terminations? \$\endgroup\$ – Justme Jun 5 at 21:42
  • \$\begingroup\$ What connectors are you using and on which pins did you put 24V? Where did you put the terminating resistors? The IXXAT adapters come in two flavours (or used to, at least), those with galvanic isolation and those without. In case they are using galvanic isolation then the V+ pin could be reserved for that purpose. \$\endgroup\$ – Lundin Jun 7 at 11:59
  • \$\begingroup\$ @SamGibson Thats just it there is no difference, im using the same cables and ixxat and power supply. Also im not saying the motor is whats causing the interference im saying the power supply might be and after reading the other comments it might be present now and not before due to a possible extra termination resistor from the CAN module im using for the STM. The only difference is the STM is now also in the system. Before it was just the ixxat and motor. \$\endgroup\$ – thunderbootyclap Jun 8 at 20:00
  • \$\begingroup\$ @Justme Theres only supposed to be the two termination resistors correct? Could the extra one cause more interference since the line resistance drops? \$\endgroup\$ – thunderbootyclap Jun 8 at 20:03
0
\$\begingroup\$

Here is your troubleshooting check list:

  1. All connected CAN devices must have common ground. Use shield from the CAN cable to achieve that on each CAN device.
  2. T-block short CAN cables should not exceed 30cm.
  3. 120ohm terminating resistors should be put only on each side of the CAN cable. That's 2 in total, and only on the ending sides. In between CAN devices must not have terminating resistors (you must take them off if they are external or deactivate them if they are internal). You must check if any of the CAN devices already has some internal terminating resistor activated via some jumper pin or jumper wire.
  4. Double check your cabling and measure resistance when all devices are powered off. If not 60ohms between CANHI and CANLO then unplug one by one device until you find which one is causing disturbance. Check all connectors and screw all terminals well. Use only twisted pair shielded cable. Your communication cables should not pass near power lines (at least 30cm away), especially not in parallel. If there is no way to avoid power lines, then make crossing at 90 degree angle.
  5. Lower baud rates are more robust for bad termination, so if possible try lower CAN speed (speed must be the same on all devices). Also, the faster the speed the shorter the cable length. For example, with 1MBps speed total cable length should not exceed 40m.
  6. If possible change power supply on each device for testing purpose - one by one, then see if anomaly is gone. You can also monitor power supplies for voltage drops when motor is starting to run. If you find a device where power drop is significant then you need to buy better power supply.
  7. If everything else fails, try galvanic isolation for all CAN devices.
  8. Your GUI app CPU usage can probably be lowered. Try to use bigger message receive and transmit buffers, and use separate communication thread.
\$\endgroup\$
5
  • \$\begingroup\$ While this is all good advise, it's essentially saying the same things as What are the most common causes of CAN bus communication errors?, it doesn't really answer the question. And I don't think the question can be answered since there's too few details still. We need CAN logs, signal pinouts and so on. \$\endgroup\$ – Lundin Jun 11 at 11:55
  • \$\begingroup\$ @Lundin: The question was "Any theories as to what this issue could be?", and I think more then one was given in my list. So I think that my list does answer the question. However we still have to wait and see if I was right and one of the items helped to solve the issue. Only in such case my answer should be accepted. \$\endgroup\$ – avra Jun 11 at 12:09
  • \$\begingroup\$ @Lundin: Ah, yes... While your link has nicely listed many general things that are also in my list, both lists have differences mentioned only in one or the other, so topic starter should read them both. \$\endgroup\$ – avra Jun 11 at 12:22
  • \$\begingroup\$ I have added more to the original post @Lundin \$\endgroup\$ – thunderbootyclap 18 hours ago
  • \$\begingroup\$ @thunderbootyclap That doesn't say much. Which signal is which? Where are you measuring? It seems like several transceivers trying to drive certain bits at the same time and they have quite different voltage levels. Not necessarily a fault, but it looks strange. Do you have several nodes sending the same CAN identifier but with different data? \$\endgroup\$ – Lundin 4 hours ago

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.