Nieuwe mogelijkheden voor CAN-analyzer: Nu CAN al zo’n 30 jaar op de markt is, zou gedacht kunnen worden dat alle mogelijke CAN-netwerkanalyzers al lang te koop zouden zijn.
CAN-expert Kees Zagers heeft echter in 2016 een nieuw soort analyzer bedacht waarmee verrassend veel méér kan dan bij reeds bestaande producten.
Ik (Rob Hulsebos) gebruik zelf al meer dan 20 jaar CAN in allerlei soorten producten en dan komt het wel eens voor dat netwerken slecht functioneren. Dan is goede meetapparatuur noodzakelijk om achter de bron van de fout te komen. Heel vaak zijn dat bekabelingsproblemen: verkeerd aangelegd, ont- brekende afsluitweerstand, slijtage of corrosie, en bij nieuwe producten zit- ten vaak nog wat kinderziektes in de elektronica. Soms kom ik ook wel eens op locatie, maar dan blijkt er totaal geen documentatie te zijn over hoe het netwerk is opgebouwd, waar de kabel loopt, hoeveel deelnemers er zijn, etc. Dit zijn de moeilijkste klussen. Diverse merken netwerkanalyzers, o.a. die van Vector, Gemac, Softing en Warwick zijn (al heel lang) te koop om CAN op elektrisch niveau te kunnen analyseren, maar volgens Kees Zagers van SI-Kwadraat (afbeelding 1) zouden CAN netwerk-analyzers nog veel meer kunnen meten. Ik sprak met hem daarover in zijn R&D lab in Nuenen.
Wie is de zender? Kees Zagers is al meer dan 25 jaar actief met CAN in alle mogelijke varianten, zowel de elektrische aspecten, de CAN-controller chips, de werking van het protocol zelf en de verschillende toepassingsgebieden zoals in de machine- bouw, voertuigtechniek, avionica, landbouw, etc. Hij heeft sinds de introductie van CAN in Nederland ook veel aandacht gegeven aan de promotie van CAN, geeft cursussen erover bij Mikrocentrum Eindhoven en publiceert ook regelmatig in de Nederlandse vakpers over actuele ontwikkelingen rondom CAN. Hij is dus wel zeer bedreven in de werking van CAN en weet waar in de dagelijkse praktijk de pijnpunten zitten.
Kees Zagers: “Begin 2016 was ik bij een CAN-dag bij ABTronix (Breda) en raakte daar in gesprek met een andere bezoeker. Hij vroeg me of het ook mogelijk was om op een CAN- netwerk op basis van het elektrische spanningsniveau van een netwerkbericht te kunnen herkennen welk apparaat de zender is. In eerste instantie zei ik dat dit niet kon, maar later bedacht ik dat er toch wel een mogelijkheid is. Dit idee heb ik het afgelopen jaar verder uitgewerkt in een prototype en praktijkmetingen laten zien dat het een levensvatbaar idee is. Ik heb het uitgewerkt tot een product dat wordt geleverd door ABTronix”. Waarom is bij CAN niet te achterhalen wie de zender van een netwerkbericht is? Dit komt omdat de interne werking van CAN nogal anders is dan dat van de gebruikelijke industriële netwerkprotocollen. Deze protocollen sturen altijd een afzender-ID mee in hun netwerkbericht. Dan is het voor een netwerkanalyzer ook niet moeilijk om uit te vinden wie de afzender is: gewoon kijken naar de juiste bits en hieruit volgt het afzender-ID. Bij CAN wordt echter heel vaak gewerkt met protocollen volgens het producent/consument principe en dan staat in het netwerkbericht aangegeven wat voor soort data er in staat. Het is dus onduidelijk wie dat netwerkbericht stuurt. De vraag tijdens het seminar was daarom: kan indirect, via het span- ningsniveau van het CAN bericht, misschien tóch afgeleid worden wie de zender is? Kees Zagers: “Er zijn netwerkanalyzers op de markt die in staat zijn om CAN-berichten elektrisch te meten, bijvoorbeeld die van Gemac. Met een AD-converter wordt het spannings- verschil tussen beide netwerkaders gemeten. Echter, dit gaat met 50 mV resolutie vanwege het werkingsprincipe van de AD-converter (parallel, met 6 bit resolutie). Dit is goed genoeg voor algemene netwerkanalyses, maar op een maximum spanningsverschil van circa 2 V is dit veel te grof om conclusies uit te trekken over wie de zender is van dat netwerkbericht. Ik heb nog verder rondgezocht naar apparatuur met AD-converters met hogere resolutie én CAN-kennis, maar die leken niet te bestaan. Niet zo vreemd ook, want netwerkanalyzers zijn specialistische producten en de markt ervoor is niet zo groot. Daarnaast zijn ze vrij duur, tot ca. 3000 Euro. Een oscilloscoop die uitbreid baar is met een CAN-frontend kost dan maar 1500 Euro, maar die kan weer niet meten zoals ik het wil”. PIC32 als basis: Kees Zagers: “Toen ik met een Microchip PIC32 controller aan het werken was voor een ander project, zag ik opeens dat deze, naast de standaard CAN-controller die daarop zat, óók nog de mogelijkheid had om een CAN-controller op de vrije (user) I/O pinnen te configure- ren. Dat was precies wat ik nodig had en met wat elektronica erbij (afbeelding 2) bleek het mogelijk te zijn om de spanningsniveaus met de door mij gewenste hoge resolutie te kunnen lezen. De PIC32 heeft een AD-converter met 10 bit resolutie. Helaas is hij wel langzaam (1 microseconde per sample) zodat ik niet elk CAN-bericht op 1 Mbit/s meerdere keren per bit kan bemonsteren. Toen bedacht ik dat één sample per µsec precies goed was.” “Ook kon ik bij elke signaalovergang (recessief->dominant of omgekeerd) een interrupt krijgen. Daarmee is een CAN-bericht bit-voor-bit elektrisch te samplen. Ik speel in software als het ware zelf voor CAN-controller. Dankzij die software is er ook meer flexibiliteit en die heb je in een CAN-controller zelf natuurlijk niet, want daarin ligt alles in silicium vast. Dankzij deze flexibiliteit is het mogelijk om extra diagnostische informatie te genereren” (zie verderop). CAN-technisch is de PIC32 ook interessant, omdat zijn eigen CAN-controller 32 berichten in een FIFO op kan slaan met tijdstempel van ontvangst. Het sturen van CAN-berichten is ook mogelijk met 100% netwerkbelasting, zodat ook getest kan worden of een ontvanger snel genoeg is om zulke belastingen zonder problemen af te kunnen handelen (vaak stopt die software dan).
En meer Zagers: “Diegene die me op het idee bracht tijdens het ABTronix-seminar is nu de ‘launching customer’ van dit product. We hebben testen uitgevoerd op zijn CAN-netwerken en het principe bleek te werken zoals verwacht. Eén miljoen interrupts per seconde bleek voor de PIC32 geen probleem te zijn! De afgelopen maanden ben ik bezig geweest met het verdeverfijnen van de bijbehorende software. Metingen met allerlei soorten apparaten leveren soms ook interessante feiten. Zo zag ik dat de CAN-transceivers van Microchip het netwerksignaal met een lagere spanning uitsturen dan de transceivers van NXP. Dat kunnen net de kritische millivolts zijn in langere netwerken. Daarnaast zie ik ook nieuwe toepassingen: het kan ook als kabeltester gebruikt worden. De eerste CAN-poort kan een netwerkbericht sturen, via de kabel komt dit dan binnen op de tweede CAN-poort, waar we met een elektrische meting dan de kabelkwaliteit kunnen meten”.“De bediening van de analyzer geschiedt via een RS232-verbinding over USB. Op een PC kunnen dan met terminalsoftware (zoals TeraTerm) meetcommando’s naar de analyzer
gestuurd worden (afbeelding 3). Dit lijkt wel primitief, maar is erg goedkoop (TeraTerm is gratis) en de analyzer zelf kan op grote afstand van de bedienende PC geplaatst worden. Uitgebreide meetrapporten worden niet op de PIC32 gegenereerd, want daarvoor is deze te langzaam, is er onvoldoende RAM en zijn er geen grafische uitvoermogelijkheden. Het is op een PC immers veel gemakkelijker om analyses te maken die veel rekenkracht vereisen. Daarom genereren we op een SD-kaart een CSV-bestand (Comma Separated Values). Dit is een bestandsformaat dat door elke spreadsheet ingelezen kan worden. De SD-kaart is beschikbaar als externe disk voor een PC (dus omsteken hoeft niet). In het bestand staan de volgende meetgegevens:
• Tijdstempels van alle flanken, geijkt in bitperiodes (bijv. 4 μsec voor 250 Kbit/s)
• Bitpatroon als beide flanken beschikbaar zijn (eventueel zonder stuffbits)
• Analoge meetwaardes (in 10 bit resolutie)
• Statistische gegevens (min, max, gemiddelde en standaard deviatie)
• Kalibratie meetwaardes
• Aantal flanken, bits, stuffbits en aantal analoge meetwaardes
• CAN bericht ID, besturingsbit en databits (optioneel)
• De CRC bits (optioneel)
• Databits omgerekend naar FLOAT’s voor gebruik in BASIC script (optioneel)
• CAN error bericht, tot het moment dat de fout optreedt (optioneel)
“De PIC32 zelf zit op een single-board computer en heeft Arduino uitbreidingsmogelijkheden (afbeelding 4). Een gebruiker kan zelf ook meetroutines programmeren. Dit gaat via de gemakkelijk te leren programmeertaal BASIC, waaraan ik zelf uitbreidingen heb toegevoegd: statements zoals CANOPEN, CANSEND, CANREPLAY, CANSCRIPT, etc. Verder heeft de processor digitale I/O,
zodat met schakelaars en LED’s een eenvoudige bediening mogelijk is, of eventueel gestuurd door een externe processor. Zo kan CAN-apparatuur dan geheel automatisch getest worden, een interessante mogelijkheid voor leveranciers van elektronica. Bestaande netwerkanalyzers op laptops vereisen vaak altijd menselijke interactie, dat is nepraktisch in serieproductie.“Tijdens de implementatie van deze software viel me nog een idee te binnen. Op de CPU is per CAN-controller ook een timer beschikbaar. Ik had in eerste instantie geen doel voor de tweede timer, maar bedacht toen dat deze op 0,1 microseconde resolutie ingesteld kan worden. Ik kan nu erg nauwkeurig de totale transmissietijd van inkomende CAN-berichten meten. De afwijking hiervan ten opzichte van de gecalculeerde tijd is een maat voor de afwijking in de timing van verschillende CAN-controllers. Dus nu kunnen we een netwerkbericht niet alleen in ‘verticale’ richting
(de spanningsniveaus) meten, maar ook in ‘horizontale’ richting (bittiming). Dit is ook prachtig te zien als de elektronica van een zender warmer wordt; het kristal warmt ook op en zijn frequentie wijzigt iets, waardoor de CAN-berichten wat sneller gestuurd worden. Normaal zie je daar in CAN niets van omdat het door elke ontvangende CAN-controller wordt opgevangen, maar omdat ik zelf
voor CAN-controller speel, zie ik het gebeuren en kan er meetgegevens van maken”. Wanneer is de nieuwe analyzer leverbaar? Zagers: “Vanaf april, via ABTronix is de allernieuwste versie (zie kopfoto leverbaar. Op dit moment worden nog de laatste praktijktesten uitgevoerd, fine-tuning van de software en het op orde brengen van de documentatie”. • Voor meer informatie zie www.etotaal.nl/achtergrond. Artikel “Nieuw soort CAN-analyzer”. www.abtronix.com Auteur: R.A. Hulsebos