Handboek UNICANNER Versie 1.0 Universeel CAN-gereedschap voor: - Logging - Analyse - Emulatie - Visualisatie - Remote diagnostiek
Ondersteuning voor hardware en software van: - i+ME Actia - Janz AG - Port GmbH - EMS Wuensche - Interay Solutions - Anderen op aanvraag
Een product van: SI-Kwadraat B.V. Gulberg 31 5674 TE NUENEN Nederland
[email protected]
Disclaimer SI-Kwadraat streeft ernaar de UNICANNER software correct, volledig en up-to-date te houden. Wij behouden ons het recht voor op elk moment UNICANNER software te wijzigen, aan te vullen of van de markt terug te trekken. SI-Kwadraat is niet aansprakelijk voor directe, indirecte of gevolgschade die voortvloeit uit het gebruik van of de onmogelijkheid om gebruik te maken van UNICANNER software. Op de UNICANNER software en deze disclaimer is het Nederlands recht van toepassing.
© Copyright Alle rechten van de UNICANNER software zijn in handen van SI-Kwadraat B.V. Niets van de software, noch van de gebruikte functionaliteit mag gekopieerd worden voor commercieel gebruik, zonder de toestemming van SI-Kwadraat B.V.
SI-Kwadraat B.V. Gulberg 31 NL-5674 TE NUENEN
[email protected]
2
INHOUD
0. INHOUD ............................................................................................................. 3 1. UNICANNER algemene beschrijving functionaliteit............................................ 4 2. Ondersteunde hardware.........................................................................................5 3. Instellingen.............................................................................................................6 4. Berichtformaten, universeel, specifiek, hex- en dec. string....................................7 5. Filtering van berichten (hardware en software)....................................................8 6. Logging...................................................................................................................9 7. Berichten in tabel.................................................................................................10 8. Formatering van tabeldata...................................................................................11 9. On-line visualisatie vanuit tabel..........................................................................12 10. Zenden van vooraf gedefinieerde berichten en variabele berichten...................14 11. Playback van logfiles..........................................................................................15 12. Triggering op event.............................................................................................16 13. Remote besturing.................................................................................................17 14. Foutdetectie.........................................................................................................18 15. Busloadmeting.....................................................................................................19 16. Projectfile............................................................................................................20
Appendix 1: Commando's voor display functies.............................................................21 Appendix 2: Remote commando's...................................................................................22 Appendix 3: Bitrate calculator........................................................................................23 Appendix 4: Tabel met hardware en ondersteunde functies...........................................24 Appendix 5: Hardware specifieke codes.........................................................................25
3
1. UNICANNER, algemene beschrijving functionaliteit
UNICANNER is een door SI-Kwadraat gebundeld pakket van CAN tooling. Ervaringen uit eerdere projecten zijn uitgebreid met nieuwere functies om te komen tot een universeel PC-georiënteerd software product voor metingen aan elke CANbus, zowel gedurende ontwikkeling en in bedrijfstelling als tijdens bedrijf voor service doeleinden. De doelmarkt is zowel industrieel als automotive gebruik van de CANbus. De verschillende markten hebben behoefte aan verschillende hardware benaderingen, echter de software op CAN datalink niveau is identiek. Daarom is er een uniform CAN databericht gecreeerd, vanuit de verschillende hardware platforms. Er is gekozen voor een formaat met weinig overhead, zodat op hoge snelheid van de bus en tevens een hoge busbelasting toch nog real-time data gelogd kan worden. Ook is er voor gekozen om een onbekende CANbus doeltreffend te analyseren door automatisch de bitrate te laten bepalen en de berichten automatisch te laten rangschikken. Dit alles gebeurt on-line tijdens analyse. Er is gestreefd om zoveel mogelijk gebruik te maken van de extra faciliteiten, die beschikbaar zijn binnen de NXP SJA1000 CAN controller. Deze wordt binnen bijna alle PC-interfaces gebruikt en afhankelijk van de ondersteuning van de fabrikant in de driver software worden hierbij de automatische bitrate detectie, passief meekijken op de bus, uitgebreide filter mogelijkheden en flexibele foutdetectie mogelijkheden ondersteund. Er is getracht zo efficiënt mogelijk de data te manipuleren, zodat er ook on-line in realtime data zichtbaar gemaakt kan worden. Hierbij moet men echter wel in ogenschouw nemen, dat bijvoorbeeld bij visualisatie van data in een grafiek een behoorlijke rekenkracht van de computer in beslag wordt genomen en dat daardoor misschien wel enige filtering van data nodig is om de juiste resultaten correct te verkrijgen. Er is gestreefd naar een zo vriendelijk mogelijk gebruikersinterface. Daarvoor kunnen vooraf gedefinieerde projecten geladen worden en diegene die de meting moet uitvoeren hoeft alleen nog de START en STOP knop te bedienen. Twee LEDS geven aan of alles nog correct verloopt.
4
2. Ondersteunde hardware Zoals beschreven bij de algemene functionaliteit in hoofdstuk 1 worden meerdere hardware platforms ondersteund. Algemeen geldt dat hierbij wel een streven is geweest naar hardware, waarbij in ieder geval gebruik is gemaakt van de NXP SJA1000 CAN controller, vanwege de uitgebreide functionaliteit. Bovendien hebben we gestreefd zoveel mogelijk in te spelen op de verschillende toepassingsgebieden met producten, die daarvoor met name geëigend zijn. Zo kennen we de automotive markt met haar eigen implementaties en de industriële markt met bijvoorbeeld de CANopen wereld. Daar tussenin hebben we nog de markt voor vrachtwagens, bussen, landbouwvoertuigen, schepen, etc. Ook voor deze markt kennen we weer specifieke eisen. Hierbij een overzicht van de momenteel ondersteunde hardware producten : i+ME Actia Deze firma is met name actief in de automobielindustrie. Zij levert PC-interfaces in de vorm van PCI-kaarten, USB en RS232 interfaces. Deze interfaces hebben een universeel interface naar de applicatie middels een z.g. level-X driver. Voor analyse is vooral de BASIC +XS interessant. Aan de PC zijde heeft hij zowel een USB als RS232 interface en aan de CAN zijde zowel een CAN high-speed (ISO11898-2) als een CAN low-speed (ISO11898-3) interface. Dit betekent, dat we alle CAN netwerken in een voertuig hiermee aankunnen. Omschakelen gebeurt in software en dit wordt ook door UNICANNER ondersteund. Janz Deze firma richt zich met name op de industriële toepassingen van CAN. Een zeer breed platform wordt hierbij ondersteund. PCI, PCI-Express, compactPCI, PCMCIA, USB, VME, PC104 en niet te vergeten complete embedded PC-platformen zijn beschikbaar. De low-cost CAN-USB is met name interessant, omdat hij toch nog wel een hoge doorvoersnelheid kent en tevens de mogelijkheid heeft om softwarematig ook nog een afsluitweerstand in te schakelen. Ook deze functie wordt door UNICANNER ondersteund. Port / EMS Wuensche Deze twee firma's worden hier onder één noemer geschaard, omdat het hier ook met name om de ondersteuning van één product gaat, te weten de EtherCAN. Deze gateway van CAN naar Ethernet is een hardware product van EMS, ondersteund met software van Port. Op het low-cost platform draait Embedded Linux als operating systeem en een basis conversie monitor. UNICANNER ontvangt via een TCP/IP poort de pakketten en haalt hier de CAN data weer uit. UNICANNER licentie wordt hierbij aangeschaft voor de EtherCAN en dit betekent, dat in feite op elke PC in het netwerk nu de analyse kan plaatsvinden. Met name ideaal als meerdere ontwerpers tegelijkertijd met het CAN netwerk bezig zijn. Interay Solutions Deze Nederlandse firma heeft een embedded PC met 1 of 2 CAN poorten. Ook deze embedded PC wordt 100% ondersteund door UNICANNER. Met name projecten met WLAN besturing aan een voertuig zijn uitermate geschikt voor dit platform.
5
3. Instellingen Vanuit het hoofdvenster van de UNICANNER kan een subvenster geopend worden met alle instellingen. Dit begint met de driver (CANDLL). Deze kan met de Search knop ook gezocht worden op het systeem. Enkele speciale entries zijn mogelijk zoals demo voor het starten van de demo. Prod. ID is een sleutel, die meegeleverd is om de software te kunnen draaien met specifieke hardware. Heeft de hardware meerdere poorten, dan kan bij Port het poortnummer ingevuld worden. Het volgende invoerveld heeft alleen een functie bij de i+ME Actia Basic-XS (het omschakelen naar CAN low-speed) en bij de Janz CAN-USB (het inschakelen van de afsluitweerstand. Tenslotte kan bij de hardware specifieke zaken de bitrate nog ingevuld worden. Standaard is dit de waarde in kbit/sec. Het is ook mogelijk om in hex de waarden van de bittiming registers (BTR) in te vullen, bijv. 0xC349. Kent men de bitrate niet, dan kan men ook een ? invullen, waarna bij de meeste hardware direct een scanning zal starten van de standaard bitrates in z.g. listen-only mode. D.w.z. de bus wordt hierdoor niet beïnvloed. Het is ook mogelijk een # in te vullen. Nu wordt een nieuw venster geopend, waarin een bitrate calculator. Allerlei waarden kunnen geprobeerd worden. Appendix 3 beschrijft de bitrate calculator in detail. De Listen Only kan ook gekozen worden als men in geen geval de bus waaraan men meet wil beïnvloeden. Zie SJA1000 datasheet voor details. De naam van de log file kan men opgeven met eventueel pad, bijv. C:\logfiles\log1.txt. Door Include date aan te vinken wordt automatisch de datum aan de logfile naam toegevoegd. Vult men bij max. lines een waarde >0 in, dan wordt deze waarde gebruikt als maximum aantal lijnen voor de logfile en krijgen alle logfiles een extra volgnummer. zo kan men bijvoorbeeld langere logsessies automatisch opdelen. Naast de Max. lines entry vindt men de functie die men heeft gekozen. Dit is een kopie van het functie selectie van het menu in het hoofdvenster. Ook de Help en Info knoppen zijn kopieën van de functies uit het hoofdmenu. Afhankelijk van welke functie men heeft gekozen, kan men nu een aantal specifieke vensters ook openen. Deze kan men ook weer besturen vanuit View van het hoofdmenu. Linksonder kunnen we nog het formaat kiezen (geldt alleen voor loggen op disk of op het scherm). Daarna kunnen we nog de remote poort eventueel wijzigen en de timeout voor de verbinding. Als men bijvoorbeeld remote een TELNET client aansluit, kan men hier 23 kiezen, de default poort voor telnet.
6
4. Berichtformaten, universeel, specifiek, hex- en dec. string Een CAN bericht kenmerkt zich met 10 getallen, te weten de identifier, een control byte en 8 databytes. Helaas worden deze waarden door de verschillende DLL's bij de diverse hardware producten op verschillende wijzen doorgegeven. In UNICANNER is in principe voor elke achterliggende toepassing wel uitgegaan van deze 10 waarden. Per bericht zijn daar nog drie waarden aan toegevoegd, te weten een code die aangeeft welke hardware gebruikt is, een volgnummer en een tijdstempel. Dit tijdstempel wordt ook door de driver van de hardware gegenereerd, de andere twee door de applicatie toegevoegd. Elk bericht wordt derhalve gerepresenteerd door een vector met 13 elementen: hwspec;volgnr;ctrl;id;data1;data2;data3;data4;data5;data6;data7;data8;tijdstempel Standaard wordt zo ook in een logfile of in een logvenster weggeschreven. Natuurlijk bestaat niet elk CAN bericht uit 8 databytes, echter het is handiger om de informatie wel in een universeel formaat weg te schrijven. De achterliggende software kan aan de hand van de control byte wel achterhalen welke bytes relevant zijn en welke niet. De hwspec is terug te vinden in appendix 5. Globaal is het als volgt gedefinieerd: -1: demo 0 of 10: ontvangen bericht met level X software 1 of 11: level X bericht, echter geen CAN informatie (lees level X manual) 100, 110 of 120: ontvangen bericht met Janz DLL 101-104, 111-114, 121-124: foutmelding/afhandeling afkomstig van Janz DLL 500: ontvangen bericht van proteus DLL 501-504: foutmelding/afhandeling afkomstig van Interay DLL 600, 610: ontvangen bericht EtherCAN 601-604, 611-614: foutmelding EtherCAN Om tot deze structuur te komen, moet er bij de meeste hardware drivers nog wel enigszins gerekend worden aan met name de identifier en de tijdstempel, omdat deze uit meerdere bytes bestaan. Voor zeer kritische toepassingen is derhalve ook de mogelijkheid geschapen om de data direct in het door de hardware DLL gegenereerde formaat weg te schrijven. Dit is het spec formaat. Hieraan is dan nog wel het volgnummer toegevoegd: volgnr;bericht volgens DLL specificatie Lees hiervoor de handboeken van de level X software van I+ME Actia, de SDK manual van Janz, de Interay DLL manual, Horch manual van Port of de SDK manual van EMS. Voor logfile en logscherm kunnen ook de dataformaten in hex of decimale vorm gebruikt worden. Deze formaten kunnen niet gebruikt worden in combinatie met een trigger en kennen ook geen verdere errorspecificatie. Het formaat is dan: volgnr. tijdstempel
ID
fmt
data
fmt bestaat uit 3 karakters, waarbij karakter 1 een S (standaard) of een X (extended) kan zijn, karakter 2 een D (data) of een R (RTR) en tenslotte karakter 3 getal van 0-8 (DLC).
7
5. Filtering van berichten (hardware en software) Omdat praktisch alle hardware gebruik maakt van de SJA1000 CAN controller, is in UNICANNER hardware filtering mogelijk met de uitgebreide Code en Mask registers. Het subvenster Hardware onder menu optie Filter geeft alle mogelijke combinaties van identifiers en instellingen van de registers. Men kan het formaat kiezen tussen decimaal, hexadecimaal en binair. Tijdens rekenen wordt altijd gebruik gemaakt van binaire interpretatie. Zowel de enkele als dubbele identifier mode (zie SJA1000 datasheet) wordt ondersteund. De werkwijze is als volgt: Selecteer eerst het formaat dat gebruikt dient te worden; daarna met Active of 1 of 2 ID's relevant zijn en met Ext. of het om standaard of extended identifiers gaat. Nu kan men aan de hand van de voorgaande keuzes de ID1, ID2, DB1, DB2 en RTR's invullen. Het is mogelijk om ook een bereik op te geven in de vorm van
- . Als men alles ingevuld heeft, drukt men op de knop Calc. code/mask. Er wordt nu getracht deze combinatie uit te voeren. Lukt dit niet, dan zal in ieder geval geprobeerd worden zo dicht mogelijk in de buurt te komen. Vanuit de waarden van Code en Mask register worden ook weer de daadwerkelijke ID's etc. berekend. Men kan ook Code en Mask in Hex ingeven. Drukt men dan op de knop calc. ID's dan krijgt men de waarden hiervoor. Is men tevreden met de instellingen, dan drukt men op de knop Activate en de waarden worden op dat moment overgenomen in de SJA1000.
Lukt het niet te filteren in hardware, dan is er nog een software optie. In één regel kan men alle ID's opgeven, die men wil ontvangen. Alle overige worden uitgefilterd. De ID's worden gescheiden door een komma en ook hierbij kan een bereik opgegeven worden met een -. Een druk op de Default knop geeft weer het volledige bereik. Er kan in software filtering alleen op ID's gefilterd worden, niet op databytes. Advies: Als het mogelijk is, verdient hardware filtering duidelijk de voorkeur. In dat geval besluit de CAN-controller het bericht al niet door te geven als het niet relevant is. Bij software filtering moet eerste de driver het bericht nog verwerken en daarna de UNICANNER software ook nog detecteren, dat er niets mee gedaan dient te worden.
8
6. Logging
Logging kan gedaan worden in een file, maar ook op het scherm in een subvenster. Dit laatste is vooral interessant om in eerste instantie te kijken of men inderdaad de berichten wel ontvangt en hoe e.e.a. globaal eruit ziet. Loggen op het scherm vergt echter wel enorm veel CPU tijd, vanwege het scrollen in het venster. Bovendien is de ruimte in het venster slechts 32 kbytes. Het loggen in een of meerdere files kan met moderne PC's en de juiste hardware hierbij wel tot zo'n 1000 berichten per seconde. De duur van het loggen wordt verder alleen beperkt tot de diskgrootte. Om uiteindelijk tot verwerkbare logfiles te komen, dient er natuurlijk wel een maximum aantal lijnen in een file te staan. Om ze later bijvoorbeeld nog in Excel te kunnen verwerken, is het een goed streven om Max. lines in te stellen op 60.000. Elke logfile wordt gestart met de begintijd en datum en ook weer beëindigd met de eindtijd. Dit is de computertijd en is onafhankelijk van het berekende tijdstempel. Natuurlijk zal hier geen grote afwijking in mogen zitten. Het tijdstempel in seconden is afgerond op 4 cijfers achter de komma, dus een resolutie van 0.1 ms. Dit is niet een gegarandeerde nauwkeurigheid. Zeker bij niet-intelligente interfaces, waarbij de host CPU dit tijdstempel dient vast te leggen, kan hierbij geen garantie voor nauwkeurigheid afgegeven worden. Het tijdstempel wordt gereset door de Hardware Reset. Bij niet al te hoge busbelastingen kan natuurlijk ook gekozen worden voor loggen van data direct in hexadecimale of decimale notatie. Bij zeer hoge busbelasting verdient het aanbeveling om in het speciale formaat te loggen. Hierbij dient achteraf natuurlijk nog wel het nodige gerekend te worden om de juiste berichten te achterhalen.
9
7. Berichten in tabel
UNICANNER kan zelf berichten rangschikken in een tabel. Dit betekent dat ook bij een volledig onbekend berichtenverkeer, automatisch een tabel opgesteld kan worden. Standaard worden de berichten alleen gekenmerkt door hun identifier. Deze kolom wordt dan ook normaal "gelocked". Dit wil zeggen, zodra een nieuwe identifier op de bus gedetecteerd wordt, het bericht op een nieuwe regel komt. Bij een bestaand bericht wordt alleen de data overschreven, No. met 1 opgehoogd en Last tijdstempel ingevuld. Het is ook mogelijk meerdere kolommen te locken. Met name de CTRL byte en de databytes. Als bij een bericht met identifier X bijvoorbeeld D1 0 of 1 kan zijn en we hebben zowel ID als D1 gelocked, dan krijgen we 2 regels in de tabel. De laatste kolommen van de standaard tabel geven het aantal berichten en de eerste en de laatste tijdstempel. De minimum tabel kent alleen de ID, het aantal en de tijdstempels. Ook bij druk busverkeer kunnen we deze nog redelijk goed inzetten. De maximum tabel voegt t.o.v. de standaard tabel nog de intervaltijd tussen identieke berichten toe. Tevens houdt hij on-line de minimum en maximum intervaltijd bij. Tabellen kunnen opgeslagen en weer geladen worden. Tevens kan de tabel handmatig ingevuld worden als de bus niet draait. Reset zet de tellers en de tijdstempels weer op 0. Reset All maakt de hele tabel weer leeg. Negatieve waarden betekent dat de waarden niet aanwezig zijn. De laatste regel (met -1 en -2) is noodzakelijk om het eind te weten. Op elke kolom kan gesorteerd worden met de knoppen onder (Bij I. actief ook invers). Op Configure row en Copy to: wordt in de vervolgparagrafen ingegaan.
10
8. Formatering van tabeldata
De UNICANNER standaard tabel is wat lastig on-line uit te lezen, vanwege de negatieve waarden en het decimale formaat. Dit is echter noodzakelijk om het ook daadwerkelijk in real-time te kunnen verwerken. Op elk willekeurig moment kan men echter een "statische" kopie opvragen in decimaal, hexadecimaal of binair formaat. De kopie komt in een nieuw venster en kan vanuit dit venster ook weer vernieuwd worden van de Refresh in het menu van dit venster. Dit kan ook weer in alle formaten. Vanuit Project kan men deze gemodificeerde tabel ook opslaan en uitprinten. Bij een update is gepland om deze gemodificeerde informatie ook direct aan standaard protocollen te linken, zoals CANopen en J1939.
11
9. On-line visualisatie vanuit tabel
Hoewel visualisatie van data in het algemeen een klantspecifiek probleem is, dat derhalve ook als zodanig opgelost dient te worden, hebben we toch gemeend de mogelijkheid te moeten creëren om enigszins data op een vriendelijke manier te kunnen manipuleren en weer te geven. Dit gebeurt vanuit de tabel en daarvoor moet men in de settings of vanuit view in het hoofdvenster ook Disp. aanzetten. In dit venster treffen we 4 displays, 2 grafieken en 4 knoppen aan, alle ook met twee regels waar tekst ingevoerd kan worden. De configuratie vanuit de tabel geschiedt als volgt: Stap 1: Kies in Configure row het CAN-bericht waarvan een visualisatie plaats dient te vinden, d.m.v. het ingeven van het nummer van de rij. Stap 2: Er verschijnt nu een tweede invoerveld met keuzes. De eerste 2 waarden zijn disable en enable. Disable resulteert in het niet langer updaten van deze rij. Enable in het wel updaten, zoals standaard staat ingesteld. De items daaronder kunnen gekozen worden om dit specifiek bericht ook nader te visualiseren in een display of grafiek of het bericht te gebruiken om een knop te laten bedienen. Stap 3: Een derde invoerveld verschijnt nu met Formula. Hier wordt de specifieke formule ingegeven. Men kan hierbij gebruik maken van de volgende variabelen: ID (identifier), CT (controlbyte), D1, D2, D3, D4, D5, D6, D7, D8 (databytes), TS (tijdstempel) en IN (intervaltijd tussen twee opeenvolgende berichten van deze rij), FT (eerste tijdstempel) en PR (de vorige berekende waarde). 12
Verder kan men gebruik maken van de standaard bewerkingen, zoals +, -, *, /. Volledig overzicht in appendix 1. Krachtig is ook het if-then-else commando dat gebruikt kan worden in de vorm if(conditie,als-waar,als niet waar). Voorbeeld: we willen graag de maximale waarde weten van D2 over langere tijd. De formule wordt dan als volgt: if(D2>PR,D2,PR) In de formule van knop kan men op dezelfde parameters gebruiken om een bericht te verzenden. Alleen de bericht parameters zijn hier geldig, dus ID, CT en D1 t/m D8. Om een standaard CAN bericht met ID 100 en databytes 1,2,3,4,5,6,7,8 te verzenden moet men derhalve als volgt de formule invullen: ID=100 CT=8 D1=1 D2=2 D3=3 D4=4 D5=5 D6=6 D7=7 D8=8 De parameters die men niet invult, worden op 0 gezet. Dus als er helemaal niets ingevuld is, krijgt men een bericht met ID=0 en 0 databytes. De visualisatie moet nu draaien. Standaard staat in de bovenste lijn van het gekozen element nu de conditie (de vast ingestelde waarden in de tabel) en in de lijn daaronder de formule. In het displayvenster zelf kan men on-line nu ook zaken wijzigen of toevoegen. Verandering van de formule zal direct het gedrag op display of grafiek aanpassen. Het is eveneens mogelijk om de naam/beschrijving aan te passen. Kiest men hiervoor een willekeurige tekst, bijv. toerental, dan blijft het element gewoon doordraaien. Zo kan men in ieder geval ook daadwerkelijk aangeven wat het display of de grafiek weergeeft. Het is ook mogelijk hier een getal in te geven. Is dit een getal vanaf 0 tot het aantal rijen in de tabel, dat in gebruik is, dan zal de huidige rij gereset worden en de nieuwe ingegeven rij actief. Met het menu in het het displayvenster kan men afmetingen van elementen wijzigen. Dit gaat ten koste van andere aangrenzende elementen. Met reset PR kan men de vorige berekende waarde wissen. Bij de displays kan men verder nog de font grootte wijzigen en bij de grafieken het soort grafiek. Bij de knoppen kan men aangeven wanneer het ingestelde bericht verzonden dient te worden. Alleen als men op de knop drukt of alleen als het bericht waaraan dit bericht is gekoppeld wordt ontvangen of beide. Tevens kan men aangeven of het bericht alleen verstuurd wordt op het moment dat de knop bediend wordt of dat het bericht continue verstuurd wordt met herhalingsfrequentie van 1 of 0.1 sec. Dit gebeurt dan net zolang totdat de knop weer bediend wordt. Men kan verder de conditie en formule regels enabled of disabled maken. Zijn ze disabled dan ziet men ze nog wel, echter ze kunnen niet meer gewijzigd worden. Men kan ze ook volledig onzichtbaar maken. De configuratie van het display kan opgeslagen worden om later ook weer opnieuw ingelezen te worden. Het is wel gekoppeld aan de structuur binnen de tabel. Het is mogelijk de condities en formules te linken aan een nieuwe tabel d.m.v. Table lookup.
13
10. Zenden van vooraf gedefinieerde berichten en variabele berichten
Bij de functie Tx gen kunnen alleen nog berichten verstuurd worden, echter nu wel met een hogere en variabele frequentie. Hiervoor moet de bus wel gestart zijn. De berichten 1 t/m 8 hebben een vast karakter en kunnen ook weer ingevuld worden met de variabelen CT, ID, D1 t/m D8. Bovendien kennen ze nu ook de variabele IN voor het interval. Standaard staat alles weer op 0, hetgeen betekent, dat iedere keer dat op de schakelaar links gedrukt wordt, het standaard bericht met ID=0 en verder geen data verstuurd wordt. Voor het versturen van een extended bericht (CT=128+DLC) met ID=100 en 2 databytes (1 en 2) met een herhalingsfrequentie van 100 ms geldt: IN=0.1 ID=100 CT=130 D1=1 D2=2 Dit bericht wordt nu net zolang gezonden, totdat de schakelaar weer uitgezet wordt. Berichten 1 t/m 8 kunnen op deze manier met vrij hoge snelheid verzonden worden, afhankelijk van hardware tot een maximale herhalingsfrequentie van 100/seconde. De twee variabele berichten dienen elke keer weer opnieuw berekend te worden en kunnen derhalve alleen op lagere frequenties gebruikt worden (max. 10/seconde). Er zijn hierbij een aantal additionele variabelen beschikbaar, te weten V1 en V2 de variabelen, die met de potmeters ingesteld kunnen worden, P1 t/m P8 de vorige waarden van D1 t/m D8 en TM, de tijd in seconden na middernacht. Deze variabelen kunnen alleen achter het = teken gebruikt worden. Hiermee kan men een bericht samenstellen zoals: ID=101 CT=3 D1=V1 D2=P2+1 D3=255*sin(2*pi()*TM/60) Het bericht dat nu verstuurd wordt als op de knop gedrukt wordt, heeft de ID 101 en 3 databytes: byte 1 is de waarde van potmeter 1, byte 2 wordt iedere keer met 1 verhoogd en byte 3 vormt een sinusvormig patroon tussen 0 en 255 met periodetijd van 1 minuut.
14
11. Playback van logfiles
Logfiles, die in het standaard (std) formaat zijn opgenomen, kunnen in een later stadium ook weer op een CANbus opnieuw gegenereerd worden vanuit UNICANNER. Hierbij wordt de timing ook zo goed als mogelijk aangehouden. De logfile kan geladen worden door de juiste filenaam in te vullen of met de Search knop op het systeem op te zoeken. De velden Start log en Stop log worden nu automatisch ingevuld. Omdat we de file eerst moeten converteren naar de juiste hardware, hebben we de knop Record. Standaard worden nu alle lijnen omgezet naar de juiste codes om later weer uit te kunnen sturen. We kunnen echter filteren. De Filter schakelaar opent het Software filter zoals eerder beschreven. Let wel: als bijv. 100 uitgefilterd dient te worden, dan moet men ingeven: "- 99, 101 -". Natuurlijk kunnen ook de te zenden ID's ingegeven worden. Nadat de Record voltooid is, kan men op Play drukken om de file af te spelen. De bus moet hiervoor aan staan. Standaard wordt de file eenmalig afgespeeld. Wordt Repeat geselecteerd dan wordt hij in een loop geplaatst. Bij Fast worden de wachttijden tussen de berichten weggelaten. Repeat is hierbij niet mogelijk. Tijdens afspelen kan men alleen nog de Pause en de Stop knop bedienen. Stop betekent vroegtijdig afbreken, Pause last een wachttijd in van de onder de knop ingestelde tijd in seconden. De knoppen << en >> hebben momenteel nog geen functie. Tijdens het afspelen loopt rechtsonder een secondeteller en elke seconde wordt daarboven het aantal nog uit te sturen berichten weergegeven.
15
12. Triggering op event
Om te voorkomen, dat onnodige informatie geregistreerd wordt, heeft UNICANNER de mogelijkheid om de registratie pas te starten als er een gebeurtenis heeft plaatsgevonden. Op dit moment werkt deze triggering alleen nog bij het loggen in een file of op het scherm. Het loggen dient in het standaard formaat te geschieden. Ook remote on-line logging is mogelijk, zoals in het volgende hoofdstuk beschreven. In een later stadium zullen daar ook de tabellen en de remote log bijkomen. Het Trigger venster kan gestart worden vanaf het menu. Aan het vinkje zien we of er een of meerdere triggers operationeel zijn. Als er een trigger Enabled staat, wordt de data lokaal opgeslagen en wel maximaal zoveel berichten als in Pre is ingegeven. Als de trigger komt, wordt dit buffer bevroren en wordt het Post buffer gevuld. Als dit ook gevuld is, wordt alles weggeschreven. Daarna begint het proces opnieuw. De triggers die mogelijk zijn en die separaat of tegelijkertijd gebruikt kunnen worden zijn: - De Trigger Knop. Deze zal normaal alleen voor testdoeleinden gebruikt worden. - De DDE trigger. Deze wordt bediend vanuit een andere toepassing op de PC. Deze is al wel voorbereid, echter nog niet operationeel. - Een CAN message. Het bericht kan ingegeven worden in het standaard formaat, dus CT,ID,D1,D2,D3,D4,D5,D6,D7,D8. Niet alle parameters hoeven ingevuld te worden. 8,100,0 betekent, dat alle standaard CAN berichten met ID=100 en D1=0 de trigger veroorzaken. - Error triggering. Nog niet operationeel - Remote triggering. Als een andere toepassing remote contact maakt (Enable start de server), kan deze met trg en een return de trigger genereren. Dit kan gemakkelijk getest worden met 'Telnet 127.0.0.1 20000' op dezelfde computer te starten. Als men nu trg gevolgd door een Return ingeeft, vindt de trigger plaats.
16
13. Remote besturing
In een volgende versie van UNICANNER zal alles ook remote te besturen zijn. Voorlopig is in deze versie een start gemaakt. Remote besturing kan geselecteerd worden onder Function. Hiermee wordt standaard een TCP/IP socket server gestart op poort 20000. Deze poort kan gewijzigd worden in de settings, evenals de timeout, die standaard op 30 seconden staat. Twee remote commando's zijn momenteel geïmplementeerd, te weten het starten en stoppen van een lokale logsessie en het on-line opvragen van de log via de socket verbinding. Als de server draait, kan een willekeurige remote applicatie gestart worden, bijvoorbeeld bovenstaande Telnet sessie. De volgende commando's zijn nu ter beschikking: ol1: on-line aan. Nu zien we de CAN-berichten in onze remote toepassing. ol0: on-line uit. Dit stopt het verzenden van de berichten over de socket. lo1: locaal loggen aan. De data wordt vanaf nu standaard in een logfile opgeslagen lo0: locaal loggen uit. De logfile wordt afgesloten. trg: trigger. Dit commando is alleen beschikbaar als ook de remote trigger enabled is. Als on-line aan staat, zien we nu na enige tijd de pre- en post trigger berichten in onze remote toepassing. De volledige lijst met remote commando's komt beschikbaar in appendix 2.
17
14. Foutdetectie Deze functie maakt optimaal gebruik van de SJA1000 foutdetectie faciliteiten. Bij normaal gebruik zal de CAN-controller een interrupt genereren als het z.g. Error Warning Limit (EWL) register de waarde 96 bereikt. Dit kan echter in de SJA1000 gewijzigd worden en door het selecteren van "EWL on first error" wordt, de waarde 1 in dit register geschreven. Zodra nu de eerste fout op de CANbus optreedt, wordt dit doorge-geven aan de applicatie. Bij logging in een file of op het scherm zien we dit bericht terug. Door het selecteren van "RxC+ECC in log" genereren we nu een extra commando, waarmee we de waar-den van RxC (de error ontvangst teller) en de ECC (Error Code Capture) uitlezen. Door "Extended Error log" te selecteren, plaatsen we deze waarden in het onderliggende venster. RxC geeft normaal gesproken aan hoeveel pogingen gedaan zijn voor het bericht daadwerkelijk door gekomen is. Aan de hand van ECC kunnen we zien wat voor soort fout er op getreden is (Bit, Form, Stuff, CRC of ACK). Zie SJA1000 datasheet voor meer details. Deze foutregistratie werkt alleen bij het std of spec dataformaat. Als er een fout opgetreden is, gaat de rechter LED op het hoofdscherm rood branden. Deze zal normaal gesproken ook blijven branden, zolang de bus AAN blijft. Men ziet dan niet of de foutenteller ook weer terug naar 0 gaat. Daarom kan men er ook voor kiezen deze LED direct weer naar groen te laten springen, zodra RxC weer 0 is, door "Auto clear Error" te selecteren. Hoewel "EWL on first error" de voorkeur geniet, is er ook een tweede methode ingebouwd om fouten te kunnen detecteren. Deze werkt op polling basis. Door "Period ECC" te selecteren, wordt standaard elke 10 seconden de RxC+ECC uitgelezen. Deze methode moet men gebruiken als men de "Listen-only" in de settings aangezet heeft. Nu wordt nl. de RxC niet meer bijgehouden in de SJA1000. Echter ECC wordt wel aangepast bij elke gedetec-teerde fout. Het tijdstempel wordt nu van de PC-tijd berekend. Zodra er een fout is opgetreden, wordt dit geregistreerd. Een nadeel hierbij is wel, dat er een hardware reset plaatsvindt om de ECC op 0 te zetten. De log gaat hierbij enkele seconden uit. "Copy ext. log in file" registreert alle fouten ook in de file errorlog.txt. 18
15. Busload Deze functie is in de eerste versie van de software nog niet beschikbaar. In de volgende versie zal hiermee aan de hand van het ontvangen berichten verkeer de busbelasting gemeten worden. Dit zal ook direct grafisch in de tijd beschikbaar komen.
19
16. Projectfile Dit is een tekstfile met standaard de extensie .ini. Hierin kan het volledige project beschreven worden. Voorlopig is dit beperkt tot alle settings, zoals in de bijgeleverde unican.ini. Deze file wordt overigens ook altijd bij start-up geladen als hij beschikbaar is. In de file mag allerlei additionele tekst gezet worden als commentaar. Alleen de specifieke commando's bestaan uit het formaat: parameter=waarde. De huidige parameters zijn: CANDLL HWcode CANport CANbitrate CANspec listenonly Logname Date Lines function log table disp txgen lowlevel
20
Appendix 1: Commando's voor Display Functies Basis functies: + - * / ^: standaard rekentekens < <+ > >= + <>: voor vergelijking mod sqr: modulus, wortel round(), ceil(), floor(): afronding standaard, naar boven en beneden not and or xor: logische vergelijkingen rnd(): een willekeurig floating point getal tussen 0 en 1 Trigonometrie en logaritme: sin cos tan asin acos atan atan2 sinh cosh tanh exp log ln log10 factorial (faculteit) String functies: &: verbindt strings met elkaar asc, chr conversie tussen ASCII en karakters length: de lengte van een string substr, instr Diversen: pi e: gedefinieerde constanten if: if-then-else statement in de vorm van if(conditie,waar,onwaar)
21
Appendix 2: Remote commando's Momenteel alleen nog maar beschikbaar: ol0: on-line uit ol1: on-line aan lo0: logging uit lo1: logging aan trg: remote trigger
22
Appendix 3: Bitrate calculator
De bitrate calculator wordt getoond als in Settings bij bitrate de optie # gekozen wordt. In de linker kolom kan men eenvoudig BTR0 en BTR1 invullen en men krijgt op het display het resultaat BPS in kbit/sec. De Clock staat bij alle hardware op 16 MHz. Men krijgt de waarden voor BRP, TSEG1, TSEG2, SJW en SAM (zie SJA1000 datasheet voor details). Hier kan men ook wijzigingen in aanbrengen. De gegevens links passen zich hierop aan. Heeft men een gewenste bitrate en wil men de daarbij behorende registerwaarden uitrekenen, dan kan men kolom drie gebruiken. Men vult eenvoudig de gewenste bitrate in en eventueel of men 1 of 3 maal wil sampelen en men ziet links de bijbehorende resultaten. Standaard wordt gekozen voor een samplepunt op 2/3 van de periodetijd. Dit is het eenvoudigste bij het berekenen. Wil men dit later dan drukt men op > en eventueel vroeger dan op < (dit laatste niet aanbevolen). In de volgende kolom kan men selecteren welke range van bitrate men wil proberen, binnen welke grenzen het samplepunt moet liggen en hoe groot de stapgrootte. Laat men de stapgrootte op auto staan, dan zullen alle mogelijkheden geprobeerd worden, bij hoge bitrates in grotere stappen, bij lage bitrates in kleine stappen. Als men op Check All BTR's drukt, worden de combinaties uitgeprobeerd en als berichten gezien worden, wordt de combinatie toegevoegd aan de BTR selector rechts. Rechts kan men ook de sampletijd per bitrate nog aanpassen (standaard 1 sec). Tevens kan men elke bitrate ook specifiek testen. Als men de check vanuit de vorige stap uitgevoerd heeft, heeft de bitrate selector ook een of meerdere bitrates gekregen, die men kan selecteren. Als men een acceptabele bitrate gevonden heeft op het netwerk kan men op Accept drukken en wordt de bitrate overgenomen in de bitrate settings. Als men het venster afsluit kan men verder de juiste toepassing kiezen.
23
Appendix 4: i+ME Actia
Janz
EtherCAN
Proteus
Demo
TBD TBD TBD TBD TBD TBD
Y Y Y Y Y Y
Y Y Y N Y Y
N N
TBD TBD
Y Y
Y Y
TBD
N
TBD
Y
Y
Y Y N N
TBD TBD TBD TBD
Y N N N
TBD TBD TBD TBD
Y Y Y Y
Y Y N N
Y Y
N N
TBD TBD
N Y
TBD TBD
Y Y
N Y
Y Y Y Y Y
Y Y Y Y Y
Y Y Y Y Y
TBD TBD TBD TBD TBD
Y Y Y Y Y
TBD TBD TBD TBD TBD
Y Y Y Y Y
Y Y Y Y Y
Y Y
Y Y
Y Y
Y Y
TBD TBD
N N
TBD TBD
Y Y
Y Y
Y Y TBD Y Y
Y Y TBD Y N
Y Y TBD Y Y
Y Y TBD Y N
TBD TBD TBD TBD TBD
N N TBD N N
TBD TBD TBD TBD TBD
TBD TBD
Y Y TBD Y TBD
Y Y
Y Y
Y Y
Y Y
TBD TBD
Y Y
TBD TBD
Y Y
Y Y
Y
Y
Y
Y
TBD
Y
TBD
Y
Y
TBD TBD TBD
TBD TBD TBD
TBD TBD TBD
TBD TBD TBD
TBD TBD TBD
TBD TBD TBD
TBD TBD TBD
TBD TBD TBD
TBD TBD TBD
SJA1k
No SJA1k
Non Int.
Intelligent
EMPC
Horch
CANSRV
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
Y Y Y Y Y Y
TBD TBD TBD TBD TBD TBD
Y Y Y Y N N
Y Y
N N
Y Y
N N
TBD TBD
Listen only
Y
N
Y
N
Std. bitrates
Y Y Y Y
Y Y N N
Y Y Y Y
Y Y
N Y
Y Y Y Y Y
Logging in file Screen logging Std. format Spec. format Dec. format Hex. format Error event Error poll
BTR0/BTR1 Autobaud std. Autobaud ext. HW filter SW filter Table log Format table Displays Graphs Tx on Rx Remote control Remote log Trig. user Trig. remote Trig. DDE Trig. on mess. Trig. on error Std. Tx Var. Tx Playback Busload read Busload write Busload error
24
Appendix 5:
25