Departement Industriële wetenschappen en technologie Opleiding elektronica-ICT Afstudeerrichting ICT
CAN EDI Diagnostic Tool
Eindwerk aangeboden tot het behalen van het diploma van bachelor in de elektronica-ICT door
Kristof Ryheul
o.l.v.
Kris Vanstechelman, DANA Spicer Off-Highway N.V. Tom Langeraet, Dana Spicer Off-Highway N.V. Hans Blondelle, KHBO
Academiejaar 2006 - 2007
talent@work KHBO Campus Oostende
Zeedijk 101
●
B-8400 Oostende
●
Tel. +32 59 56 90 00
●
Fax +32 59 56 90 01
●
www.khbo.be
●
CAN EDI Diagnostic Tool Het inlezen van voertuig informatie informatie via de CAN bus door Ryheul Kristof
Ryheul Kristof
CAN EDI Diagnostic Tool
Mededeling Deze eindverhandeling was een examen, de tijdens de verdediging vastgestelde fouten werden niet gecorrigeerd. Gebruik als referentie in publicaties is toegelaten na gunstig advies van de KHBO-promotor, vermeld op het titelblad.
Ryheul Kristof
CAN EDI Diagnostic Tool
Woord vooraf Dit eindwerk werd gerealiseerd in het bedrijf DANA Spicer Off-Highway te Brugge. Zowel de Stage als het eindwerk werd ter plaatste uitgevoerd. Graag had ik van deze gelegenheid gebruik gemaakt om enkele personen te bedanken die geholpen hebben om dit eindwerk tot een goed einde te brengen. Mijn ouders die het mogelijk maakten voor mij om verder te studeren. Luc Formesyn die mij in contact bracht met het bedrijf en altijd klaar stond om te helpen. Ik dank ook de mensen van de afdeling controls te DANA voor het delen van hun kennis en vaardigheden doorheen de stageperiode en mijn eindwerk. Kris Vanstechelman, mijn buiten promotor die alles in goede banen heeft geleid. Tom Langeraet, mijn stagebegeleider die mij doorheen het project geduwd heeft. Ik dank de docenten van het KHBO, voor hun inzet en gedrevenheid doorheen mijn opleiding. In het bijzonder wil ik nog mijn binnen promotor bedanken Hans Blondelle die mij geholpen heeft met zowel de theoretische en technische kanten van deze eindverhandeling en stagebegeleiding. Ook het bedrijf DANA Spicer Off-Highway Brugge wil ik bedanken voor het aanbieden van de stage en eindwerk opdracht, eveneens voor het gebruik van het nodige materiaal om mijn eindwerk tot een goed einde te brengen.
Ryheul Kristof
CAN EDI Diagnostic Tool
Abstract De opdracht van mijn eindwerk was het ontwikkelen van een programma voor het tonen van applicatiespecifieke data dat over een CAN bus moet worden verstuurd. Er bestaan verschillende commercieel verkrijgbare programma’s waarbij data kan worden opgehaald uit een CAN bus met of zonder een database. Met een database is het mogelijk de gewenste berichten met naam te benoemen, evenals de signalen die een bericht kan bevatten. Deze software en de vereiste hardware, evenals de licentie zijn duur. Mede hierdoor is het niet evident deze commercieel verkrijgbare tools in te schakelen voor gebruik in alle centra die onderhoud en interventies doen voor de producten over de hele wereld. Het zou een pluspunt zijn indien er een bedrijfseigen applicatie zou bestaan dat met een USB naar CAN interface module die reeds beschikbaar is in het bedrijf, de gewenste bedrijfsspecifieke informatie uit de CAN bus ophaalt. Naast de hoge kost dient de gebruiker een goede achtergrondkennis te hebben van het CAN protocol en moet deze weten welke berichten er op de bus voorkomen. Door de software intern in het bedrijf te ontwikkelen, kan de applicatie deze kennis overbodig maken. Hierdoor is het mogelijk om deze software beschikbaar te stellen voor klanten. Deze kunnen dan een log file (met vaste opmaak) van een foutsituatie doorsturen naar een DANA center. Via deze log files kan men dan van op afstand het probleem vaststellen en de nodige support geven. De applicatie bevat een hoofdscherm waaruit via een menu of toolbar verschillende vensters kunnen worden geopend. In het ‘ trace’ venster worden alle gelezen en verzonden berichten weergegeven. Via een dialoog venster kunnen de berichten in detail bekeken worden: dit vereist een database, gekoppeld aan de software. Via het ‘generator ’ venster kan men berichten automatisch of manueel versturen. Als het automatisch gebeurt kan men de tijd instellen in ms. Via de CAN hardware interface kunnen berichten gefilterd worden zodat enkel de berichten die van belang zijn ingelezen worden. De implementatie van een database biedt opnieuw meer geavanceerde mogelijkheden voor het weergeven en bewerken van berichten, signalen en waardetabellen. Door de mogelijkheid om een database te koppelen aan de software kunnen de berichten in het ‘ trace’ venster bij naam getoond worden. Elk bericht kan verschillende signalen bevatten met een vaste lengte aangegeven door de database. De waardetabellen maken het mogelijk om data om te zetten naar beschrijvingen die voor de mens onmiddellijk herkenbaar zijn. Ook het verzenden van berichten wordt eenvoudiger door het gebruik van deze tabellen. Hierdoor kan aan de hand van een beschrijving een waarde toegekend worden aan een signaal. De eindverhandeling bevat een omschrijving van het eindwerk, de CAN bus, de ontworpen software en de nodige achtergrondkennis.
Ryheul Kristof
CAN EDI Diagnostic Tool
Inhoudsopgave
Medede Mededelin ling g ............................................................................................................. ............................................................................................................. Woord vooraf vooraf ......................................................................................................... ......................................................................................................... Abstra Abstract ct .................................................................................................................. .................................................................................................................. Inhoudsopgav Inhoudsopgavee ....................................................................................................... ....................................................................................................... Lijst met illustraties............................................................................................... illustraties.. ............................................................................................. Lijst met afkortingen........................................................................................... afkortingen... ........................................................................................ 1. Inleiding Inleiding ............................................................................................................ ............................................................................................................ 2. Project omschrij omschrijving ving ....................................................................................... .......................................................................................
4 5 6 7 9 12 14 14
2.1 Situering...................... Situering............................................ ............................................. ............................................. ............................................ ................................... ............. 14 2.2 Doel......................... Doel............................................... ............................................. ............................................. ............................................ ....................................... ................. 14 2.3 Tools & skills:.......................... skills:................................................. .............................................. .............................................. ........................................... .................... 16
3. Stageplaats en stage beschrijving................................................................... beschrijving... ................................................................ 17 3.1 Voorstelling Voorstelling van het bedrijf bedrijf ......................... ................................................ .............................................. .............................................. ....................... 17 3.2 Bedrijfsorganigram...................... Bedrijfsorganigram............................................. ............................................. ............................................ ........................................ .................. 21 3.3 Overzicht Overzicht productiestappen productiestappen .......................... ................................................ ............................................ ............................................. ......................... 21 3.4 Algemene richtlijnen richtlijnen en veiligheidsregels veiligheidsregels ......................... ................................................ .............................................. ......................... 22
4. CAN & toebehoren toebehoren .......................................................................................... .......................................................................................... 23 4.1 Inleiding ingebouwde netwerken ........................ .............................................. ............................................. ........................................ ................. 23 4.2 Wat is CAN........................ CAN............................................... .............................................. .............................................. ............................................ ........................... ...... 25 4.3 Waarom CAN ?... ? ....................... .......................................... ............................................. ............................................. ........................................... ....................... .. 27 4.4 Waar wordt CAN CAN gebruikt ? ....................... ............................................... ............................................... .............................................. ....................... 28 4.5 Voor en nadelen van CAN....................... CAN... .......................................... ............................................. ............................................. ............................. ....... 28 4.6 CAN berichten........................ berichten.............................................. ............................................ ............................................. ............................................. ........................ .. 29 4.7 CAN fysieke lagen........................ lagen... ............................................ .............................................. .............................................. ....................................... ................ 33 4.8 CAN connectoren......................... connectoren... ............................................. .............................................. .............................................. ....................................... ................ 37 4.9 CAN foutafhande foutafhandeling ling ....................... .............................................. ............................................. ............................................ .................................... .............. 40 4.10 CAN specificatie 2.0.......................... 2.0................................................ ............................................ ............................................. .................................. ........... 43 4.11 CAN hogere hogere protocol lagen .......................... ................................................. .............................................. ........................................... .................... 45
5. Theoretische & bedrijfsspecifieke kennis...................................................... kennis... ................................................... 48 5.1 Recommended Recommended Practice Practice RP1210A ....................... ............................................. ............................................ ....................................... ................. 48 5.2 User manual APC ......................... ................................................ ............................................. ............................................ ....................................... ................. 63 5.3 SAE J1939 Recommended Practice Practice ......................... ................................................ .............................................. .................................. ........... 67 5.4 CAN messages messages APC214 APC214 ........................ .............................................. ............................................ ........................................... ................................ ........... 78 5.5 Error codes codes & description ........................ ............................................... .............................................. .............................................. .......................... ... 81 5.6 General coding rules......................... rules... ............................................. .............................................. .............................................. .................................. ........... 82
6. Werking APC200 controller........................................................................... controller........................................................................... 85 6.1 Elektronische Elektronische shift controllers .......................... ................................................. .............................................. ......................................... .................. 85 6.2 APC200 layout......................... layout............................................... ............................................. ............................................. ............................................ ...................... 86
7. Testbord & opstelling...................................................................................... opstelling... ................................................................................... 89 7.1 Werking testbord........................ testbord.............................................. ............................................. ............................................. .......................................... .................... 89 7.2 Verschillende Verschillende USB dongles (ifak en softing) ......................... ................................................ ........................................... .................... 91 7.3 Verschil Verschil met de Vector Vector CANcaseXL CANcaseXL ......................... ................................................ .............................................. ................................. .......... 93 7.4 Aansluiten APC200 controller........................ controller... ........................................... ............................................. ............................................ ..................... 94 7.5 Blokschema meetopstelling...................... meetopstelling............................................ ............................................. ............................................. ............................ ...... 95 7.6 Verschillende soorten signalen....................... signalen.............................................. .............................................. ........................................... .................... 95
8. Vector CANalyzer CANalyzer software software nader bekeken ................................................. ................................................. 96 _____________________________________ ____________________ ___________________________________ _____________________________________ _____________________________ __________ 7
Ryheul Kristof
CAN EDI Diagnostic Tool
8.1 Werking Werking CANalyze CANalyzerr ? ......................... ................................................ ............................................. ............................................ ................................. ........... 96 8.2 Werking CANdb++ ?....................... ?............................................. ........................................... ........................................... .................................... .............. 100 8.3 Werking log formaat CANalyzer ?......................... ?.... ........................................... ............................................. ................................... ............ 104 8.4 Werking database database formaat CANalyzer CANalyzer ? .......................... ................................................. .............................................. ....................... 106
9. Visual Studio, Visual SourceSafe en Office Visio....................................... Visio.... ................................... 110 9.1 Werking Visual Studio ?......................... ?.... ............................................ ............................................. ............................................ ............................ ...... 110 9.2 Werking Visual SourceSafe ?........................ ?............................................... ............................................. ........................................... ..................... 116 9.3 Werking Office Visio voor UML-diagram UML-diagram ? ......................... ................................................. .......................................... .................. 121
10. Ontwerpen van schema’s ............................................................................ ............................................................................ 125 10.1 UML Diagrammen......................... Diagrammen............................................... ............................................. ............................................. .................................. ............ 125 10.2 Software flowcharts ........................ .............................................. ............................................ ............................................. .................................. ........... 128
11. Software GUI CAN EDI Diagnostic Tool.................................................. Tool.... .............................................. 134 11.1 Het hoofdprogramma......................... hoofdprogramma............................................... ............................................. ............................................. .............................. ........ 134 11.2 De trace-window......................... trace-window.... ........................................... ............................................ ............................................. ...................................... ............... 137 11.3 Het Het generator generator venster venster ......................... ................................................ .............................................. .............................................. ............................ ..... 140 11.4 Het database venster........................ venster.... .......................................... ............................................. ............................................. ................................ .......... 141 11.5 Het venster voor de filters........................ filters.... .......................................... ............................................. ............................................. ........................ .. 145 11.6 Het configuratie venster venster voor de logger ........................... .................................................. ............................................ ..................... 146 11.7 Het venster voor grafische grafische weergave weergave van signalen ...................................................... .... ..................................................147 147 11.8 Inladen van een recent configuratie configuratie bestand ......................... .... ............................................ ....................................... ................ 147 11.9 Applicatie folder en beschrijving........................ beschrijving.............................................. ............................................. .................................... ............. 148
12. Software implementatie C#.NET ............................................................... ............................................................... 149 12.1 Big endian en little endian functies voor voor de timestamp. ............................................... ...............................................149 149 12.2 Informatie uit een signal halen halen ........................ ............................................... .............................................. ...................................... ............... 150 12.3 String formatting........................ formatting............................................... .............................................. .............................................. ..................................... .............. 151
13. CAN EDI Diagnostic Tool........................................................................... Tool.... ....................................................................... Besluiten.............................................................................................................. Besluiten.............................................................................................................. Documentatie en bijlagen.................................................................................. bijlagen.... .............................................................................. Literatuurlijst..................................................................................................... Literatuurlijst.....................................................................................................
153 155 160 166
_____________________________________ ____________________ ___________________________________ _____________________________________ _____________________________ __________ 8
Ryheul Kristof
CAN EDI Diagnostic Tool
Lijst met illustraties illustraties Fig. 1 Hoofdingang Hoofdingang kantoorgebouw te brugge ... .......................................... ................................................................ .............................. ........ 19 Fig. 2 Grondplan DANA Spicer Off-Highway Brugge ... ....................... .......................................... ....................................... ................. 20 Fig. 3 Bedrijfsorganigram DANA Spicer Off-Highway Products Division... ............................21 ............................ 21 Fig. 4 Communicatie Communicatie in de automatisering (piramide) ... ............................................................... ............................................................23 23 Fig. 5 Broadcast principe CAN bus ... ......................... ............................................ ............................................. ............................................. ...................... 26 Fig. 6 CAN 2.0A data frame (Standard CAN).......................... CAN)... ............................................. ............................................ ............................ ...... 29 Fig. 7 CAN 2.0B data frame (Extended CAN)... ............................................. ................................................................... ........................... ..... 29 Fig. 8 CAN remote remote frame frame ....................... ............................................. ............................................. ............................................. ....................................... ................. 30 Fig. 9 CAN error frame....................... frame... .......................................... ............................................ ............................................. ............................................ ..................... 30 Fig. 10 Bus arbitrage en bericht prioriteit (standaard CAN) ... ...................................................... ...................................................32 32 Fig. 11 Lengte van de CAN bus volgens de baudrate... ............................................. .............................................................. ................. 34 Fig. 12 Toevoegen van software redundantie... .............................................. ..................................................................... ............................ ..... 35 Fig. 13 Toevoegen van hardware redundantie... ............................................. .................................................................... ............................ ..... 36 Fig. 14 Toevoegen van redundantie in de bedrading... ............................................ ............................................................... ................... 36 Fig. 15 9-pin Dsub connector (CAN connector)... ........................................... ................................................................. ........................... ..... 37 Fig. 16 Multipole connector (CAN connector)........................ connector)... ........................................... ............................................. ............................. ...... 38 Fig. 17 RJ10 connector (CAN connector) ... ...................... .......................................... ............................................. ..................................... ............... 38 Fig. 18 RJ45 connector (CAN connector) ... ...................... .......................................... ............................................. ..................................... ............... 39 Fig. 19 5-pin Mini-C connector ... ....................... ........................................... ............................................. ............................................ .............................. ........ 39 Fig. 20 Structuur lagen van CAN2.0A volgens het OSI model... ............................................... ...............................................43 43 Fig. 21 Structuur lagen van CAN2.0B volgens het OSI model... ............................................... ...............................................44 44 Fig. 22 OSI 7 lagen model ... ........................ ............................................ .............................................. .............................................. .................................... ............. 45 Fig. 23 Architectural Architectural overview overview .......................... ................................................. .............................................. .............................................. ........................... .... 49 Fig. 24 Dataflow diagram voor Windows........................ Windows... ........................................... ............................................ ..................................... ............... 50 Fig. 25 J1939 bericht formaat (zenden) ... ........................ ............................................ .............................................. ....................................... ................ 52 Fig. 26 CAN bericht formaat formaat (zenden) ... ......................... ............................................. .............................................. ....................................... ................ 53 Fig. 27 J1939 bericht formaat (lezen)........................ (lezen)... ............................................ .............................................. .......................................... ................... 54 Fig. 28 CAN bericht formaat formaat (lezen) ... .......................... ............................................... ................................................ ........................................ ................ 55 Fig. 29 Filter parameter frame (command number 4 / J1939)... ................................................. .................................................56 56 Fig. 30 CAN filter frame........................ frame... ........................................... ............................................. ............................................. ........................................ .................. 57 Fig. 31 Depends DLL ifak system ... ........................ ............................................ .............................................. .............................................. ......................... 62 Fig. 32 Connector Connector layout APC (TCON) ... ...................... ........................................ ........................................... .......................................... .................... 63 Fig. 33 J1939 29 bit identifier......................... identifier... ............................................. .............................................. .............................................. .............................. ....... 68 Fig. 34 Een mogelijke implementatie van een vrachtwagen op de weg (J1939/1).... .................68 ................. 68 Fig. 35 Enkelvoudig netwerk (J1939/1).... ........................................... .................................................................. ....................................... ................ 68 Fig. 36 Meervoudig netwerk netwerk (J1939/1). ... ........................ ........................................... ............................................ ....................................... ................. 69 Fig. 37 Representatie fysieke bit........................ bit... ........................................... ............................................ ............................................ ............................. ....... 70 Fig. 38 Functionaliteit fysieke laag....................... laag... ........................................... .............................................. ............................................. .......................... 70 Fig. 39 Samenstelling van een bit....................... bit... .......................................... ............................................ ............................................ ............................ ...... 71 Fig. 40 Topologie Topologie van het bedradingsnetwerk bedradingsnetwerk (J1939/11) ... ......................................................... ......................................................71 71 Fig. 41 Un-Shielded Twisted Pair CAN kabel......................... kabel... ............................................. .............................................. ............................ ..... 72 Fig. 42 Topologie van het bedradingsnetwerk ( Type I ECU’s only )... )........................................ .....................................73 73 Fig. 43 Topologie van het bedradingsnetwerk (één Type II ECU’s geïnstalleerd )... )................. ..............73 73 Fig. 44 Topologie van het bedradingsnetwerk ( twee Type II ECU’s geïnstalleerd)... ).............. ...........73 73 Fig. 45 CAN Standard Data Frame......................... Frame... ............................................ ............................................ ............................................. ......................... 74 Fig. 46 CAN Extended Data Frame.......................... Frame... .............................................. .............................................. ........................................... .................... 74 Fig. 47 OSI model ondersteunt ondersteunt door SAE J1939 (J1939/21) (J1939/21) ... .................................................. ..................................................75 75 Fig. 48 J1939 PDU formaat (J1939/21)......................... (J1939/21)... ........................................... ........................................... ........................................ .................. 76 _____________________________________ ____________________ ___________________________________ _____________________________________ _____________________________ __________ 9
Ryheul Kristof
CAN EDI Diagnostic Tool
Fig. 49 PDU specificatie PDU1 & PDU2 (J1939/21)................................................................. 76 Fig. 50 J1939 PDU formaten (PDU1 & PDU2 J1939/21)... .......................................................76 Fig. 51 J1939 PDU1 formaat (J1939/21).................................................................................... 77 Fig. 52 J1939 PDU2 formaat (J1939/21).................................................................................... 77 Fig. 53 Transmissie model en mogelijke controller (DANA) ....................................................85 Fig. 54 Controller systeem mogelijkheden (DANA)... ............................................................... 85 Fig. 55 APC200 hardware blokschema ...................................................................................... 86 Fig. 56 APC200 hardware connectie schema ............................................................................. 87 Fig. 57 APC200 controller.......................................................................................................... 87 Fig. 58 APC200 lokaliseren in een voertuig............................................................................... 88 Fig. 59 Testbord APC voorzijde (TCT19)... ............................................................................... 89 Fig. 60 Testbord APC zijkant (TCT19) ...................................................................................... 90 Fig. 61 Ifak System USB naar CAN interface... ......................................................................... 91 Fig. 62 Softing USB naar CAN interface ................................................................................... 92 Fig. 63 Vector CAN interfaces ................................................................................................... 93 Fig. 64 APC200 voorzijde (DANA) ........................................................................................... 94 Fig. 65 APC200 achterzijde (DANA)......................................................................................... 94 Fig. 66 Snelheidssensor (DANA) ............................................................................................... 95 Fig. 67 CANalyzer measurement setup ...................................................................................... 97 Fig. 68 CANalyzer trace window configuration (Standard)... ....................................................98 Fig. 69 CANalyzer trace window configuration (Extended)... ...................................................98 Fig. 70 CANalyzer CAPL browser........................................................................................... 100 Fig. 71 CANdb++ overall view ................................................................................................ 101 Fig. 72 CANdb++ value tables ................................................................................................. 101 Fig. 73 CANdb++ change value tables.... ................................................................................. 102 Fig. 74 CANdb++ message layout............................................................................................ 102 Fig. 75 CANdb++ display settings ........................................................................................... 103 Fig. 76 CANdb++ message definition ...................................................................................... 103 Fig. 77 CANdb++ signal definition .......................................................................................... 104 Fig. 78 Ontleden van database berichten .................................................................................. 108 Fig. 79 Ontleden van database signalen.... ................................................................................ 109 Fig. 80 Ontleden van database waardetabellen......................................................................... 109 Fig. 81 Visual Studio find in files............................................................................................. 111 Fig. 82 Visual Studio find results in entire project ................................................................... 111 Fig. 83 Visual Studio replace in files........................................................................................ 112 Fig. 84 Visual Studio solution explorer Visual Studio class view.... ...................................113 Fig. 85 Visual Studio properties ............................................................................................... 113 Fig. 86 Visual Studio WYSIWYG interface............................................................................. 114 Fig. 87 Visual Studio WYWIWYG interface........................................................................... 114 Fig. 88 Gebruik maken van IntelliSense................................................................................... 115 Fig. 89 Visual SourceSafe adding an label............................................................................... 116 Fig. 90 Visual SourceSafe add comment to label.... ................................................................. 117 Fig. 91 Visual SourceSafe project differences.......................................................................... 117 Fig. 92 Visual SourceSafe add new file to the project.... ..........................................................118 Fig. 93 Visual SourceSafe show file differences...................................................................... 118 Fig. 94 Visual SourceSafe file differences ............................................................................... 119 Fig. 95 Visual SourceSafe history of file.................................................................................. 119 Fig. 96 Visual SourceSafe history details................................................................................. 120 Fig. 97 Visual SourceSafe history of project............................................................................ 120 Fig. 98 Office Visio workplace................................................................................................. 121 ____________________________________________________________________________________ 10
Ryheul Kristof
CAN EDI Diagnostic Tool
Fig. 99 Office Visio UML class properties (Class) .................................................................. 122 Fig. 100 Office Visio UML class properties (Attributes).........................................................123 Fig. 101 Office Visio UML class properties (Operations) .......................................................123 Fig. 102 Office Visio UML Operation Properties (Parameters)...............................................124 Fig. 103 Use Case diagram ‘CAN EDI Diagnostic Tool’ ........................................................125 Fig. 104 UML Class Diagram database.................................................................................... 126 Fig. 105 Flowchart logging.... ................................................................................................... 128 Fig. 106 Flowchart ‘trace’ window........................................................................................... 129 Fig. 107 Flowchart database ..................................................................................................... 130 Fig. 108 Flowchart ‘generator’ window ................................................................................... 131 Fig. 109 Flowchart messages (received and send).................................................................... 132 Fig. 110 Flowchart configuratie bestanden inladen.... .............................................................. 133 Fig. 111 CAN EDI Diagnostic Tool (Software) ....................................................................... 134 Fig. 112 Menubar (CAN EDI Diagnostic Tool) ....................................................................... 135 Fig. 113 Toolbar (CAN EDI Diagnostic Tool).... ..................................................................... 135 Fig. 114 Selecteren van MDI vensters (CAN EDI Diagnostic Tool) .......................................136 Fig. 115 Trace venster (CAN EDI Diagnostic Tool).... ............................................................137 Fig. 116 Selecteren van bericht identiteit voor meer informatie (CAN EDI Diagnostic Tool) 138 Fig. 117 Informatie van de signalen in een bericht (CAN EDI Diagnostic Tool)....................138 Fig. 118 Trace window configuratie (CAN EDI Diagnostic Tool) ..........................................139 Fig. 119 Generator venster (CAN EDI Diagnostic Tool).........................................................140 Fig. 120 Database inladen en gebruiker (CAN EDI Diagnostic Tool).....................................141 Fig. 121 Database venster bericht informatie (CAN EDI Diagnostic Tool).............................141 Fig. 122 Database venster signaal informatie (CAN EDI Diagnostic Tool) ............................142 Fig. 123 Bericht definities bewerken (CAN EDI Diagnostic Tool) .........................................142 Fig. 124 Signalen aan een bericht toevoegen of verwijderen (CAN EDI Diagnostic Tool) ....143 Fig. 125 Signaal definities bewerken (CAN EDI Diagnostic Tool) .........................................144 Fig. 126 Signaal toevoegen en verwijderen uit berichten (CAN EDI Diagnostic Tool) ..........144 Fig. 127 Signaal waardetabel (CAN EDI Diagnostic Tool) .....................................................145 Fig. 128 Filter vensters (CAN EDI Diagnostic Tool) ...............................................................145 Fig. 129 Configuratie venster voor de logger (CAN EDI Diagnostic Tool) ............................146 Fig. 130 Waarschuwing bij overschrijven log bestand .............................................................146 Fig. 131 Graphic Signal Monitor (CAN EDI Diagonstic Tool) ...............................................147 Fig. 132 Recente configuratie bestanden (CAN EDI Diagnostic Tool) ...................................147 Fig. 133 Gebruik maken van het run venster (Windows) .........................................................147 Fig. 134 Register variabelen in Windows (Registry Editor).....................................................148 Fig. 135 Applicatie folder (CAN EDI Diagnostic Tool) ..........................................................148 Fig. 136 UML Class Diagram Configuration ...........................................................................161 Fig. 137 Circuit 1 (J1939/11)....................................................................................................162 Fig. 138 Circuit 2 (J1939/11)....................................................................................................163 Fig. 139 Circuit 3 (J1939/11)....................................................................................................164 Fig. 140 MAPPING OF SAE J1939 INTO CAN’S ARBITRATION AND CONTROL FIELDS ...................................................................................................................................................165
____________________________________________________________________________________ 11
Ryheul Kristof
CAN EDI Diagnostic Tool
Lijst met afkortingen APC APC API CAPL CAPL CAN CiA CPU CRC CSMA/CA CSMA/CD CVC C# DA DB DP DPRAM DLC DLL ECU EDI EMI EOF FIFO GDE HLP IC ID IDE ISO KBPS LAN LIFO LIN LSB MBPS MCU MDI MSB MSDE NC NRZ OO OOP OSI PC PCI PCMCIA
Advanced Programmable Controller Automatic Powershift Control Application Programming Interface CANalyzer Programming Language Communication Access Programming Language Controller Area Network CAN in Automation Central Processing Unit Cyclic Redundancy Check Carrier Sense Multiple Access with Collision Avoidance Carrier Sense Multiple Access with Collision Detect Central Vehicle Controller C sharp Destination Address Database Digital Period Dual-Ported RAM Data Length Code Dynamic Link Library Electronic Control Unit Electronic Data Interchange Electro Magnetic Interference End Of Frame First In First Out Generic Data Editor Higher Layer Protocol Integrated Circuit Identifier Integrated Development Environment International Standards Organization Kilo Bit Per Second Local Area Network Last In First Out Local Interconnect Network Least Significant Bit Mega Bit Per Second MicroController Unit Multiple Document Interface Most Significant Bit Microsoft SQL Server Desktop Engine Not Connected Non Return to Zero Object Oriented Object Oriented Programming Open System Interconnect Personal Computer Peripheral Component Interconnect Personal Computer Memory Card International Association
____________________________________________________________________________________ 12
Ryheul Kristof
PDO PGN RAM RF RP RFC RS232 SA SAE SDO SOF TC TTCAN UART UML USB WYSIWYG WYWIWYG
CAN EDI Diagnostic Tool
Process Data Object Parameter Group Number Random Access Memory Radio Frequency Recommended Practice Request For Comment Recommended Standard number 232 Source Address Society of Automotive Engineers Service Data Object Start Of Frame Transmission Controller Time Triggered CAN Universal Asynchronous Receiver/Transmitter Unified Modeling Language Universal Serial Bus What You See Is What You Get What You Write Is What You Get
____________________________________________________________________________________ 13
Ryheul Kristof
CAN EDI Diagnostic Tool
1.Inleiding Het ontwikkelen van een software programma dat applicatiespecifieke gegevens uit een CAN bus kan halen en deze kan weergeven in een ‘trace’ venster. De data wordt weergegeven in een ruw formaat die aan de hand van een database moet kunnen omgezet worden naar begrijpbare tekst. Het verzenden van berichten moet zowel cyclisch als manueel kunnen gebeuren, ook hier dient er een mogelijkheid te zijn om berichten via een database aan te maken. Dit heeft als voordeel dat de softwaregebruiker een minimale kennis nodig heeft over het CAN protocol. Hierdoor kan men deze software beschikbaar stellen voor klanten, die dan bij een foutsituatie een log bestand kunnen doorsturen naar een DANA center. Verdere informatie vind je bij de project omschrijving.
2. Project omschrijving 2.1 Situering
Tegenwoordig beschikken vele Off-Highway machines over een CAN bus. Op dit moment zijn heel wat machinecomponenten aangesloten, die een schat aan informatie uitwisselen met elkaar, aan de hand van een berichten systeem. Om bepaalde problemen te kunnen vaststellen of onderzoeken is het noodzakelijk dat deze informatie kan worden ingelezen. Voor het inlezen van dergelijke CAN boodschappen met een PC is een extra CAN chip nodig die verwerkt zit in een USB dongle. Dit USB apparaat wordt aangesloten op de CAN bus. De softwaredriver van dit USB apparaat bevat heel wat functies om communicatie via de CAN bus mogelijk te maken. Elke functie is echter beschreven in een hiervoor bestemde standaard, de RP1210A standaard. Voor het interpreteren van deze CAN data maken we dan weer gebruik van een andere standaard, namelijk de J1939 standaard. Deze standaard beschrijft hoe we de CAN bus moeten gaan gebruiken om op een gestandaardiseerde manier data te definiëren en te interpreteren. Deze data beschrijft de status van heel wat machinesignalen en hun overeenkomstige waarde. 2.2 Doel
Vertrekkende vanuit een bestaande applicatie, gegevens vanuit een CAN bus halen om deze chronologisch te presenteren op naam. Deze gegevens komen van een APC controller die informatie bevat over de aangesloten motor. Er kunnen natuurlijk ook berichten op de bus verschijnen van andere controllers. De opdracht is opgesplitst in drie fases, die telkenmale op elkaar verder bouwen. •
Uitbreiden functionaliteit van bestaande modules. - Nood aan een relatieve presentatie van de ontvangen boodschappen, zodat eenzelfde bericht slechts éénmalig weergegeven wordt.
____________________________________________________________________________________ 14
Ryheul Kristof
CAN EDI Diagnostic Tool
- Alle ingelezen boodschappen moeten naar een bestand kunnen worden geschreven. Dit bestandsformaat staat vast door een reeds gebruikt en aangekocht systeem, namelijk Vector CANalyzer. - Mogelijk maken om berichten cyclisch, met een instelbare tijd automatisch te laten versturen. - Mogelijk maken om configuratie bestanden aan te maken en in te lezen. In het configuratie bestand komt informatie over de verschillende vensters die gebruikt kunnen worden (zichtbaar, locatie, lengte, breedte en andere specifieke informatie). •
Implementatie signaal database. - De ruwe data door een database kunnen omzetten naar bruikbare signalen. Het formaat van deze database ligt terug vast door een reeds gebruikt en aangekocht programma. - Een dergelijke database kunnen inlezen en gebruiken. - De database kunnen aanpassen en opslaan.
•
Nieuwe functionaliteit op basis van de database. - Waar de boodschappen gepresenteerd worden in ruw formaat, omzetten via de database zodat deze met hun naam kunnen worden weergegeven. - Een CAN boodschap wordt geïdentificeerd door een ID opgebouwd uit vier onderdelen:
De prioriteit (priority) De PGN Het destinatie adres of adres van de ontvanger (destination address) Het bron adres of adres van de zender (source address)
- Optie nodig om de prioriteit en/of het adres uit de identificatie te negeren bij opzoeken in de database. - De boodschappen die de gebruiker wil versturen voorstellen bij naam en de bevatte signalen presenteren op naam. - Signalen in een apart venster tonen, zodat de gebruiker de gewenste signalen kan bekijken gedurende het uitvoeren van een meting. - Grafische voorstelling van een selectie beschikbare signalen. •
Bijkomende functionaliteit - De hardware en software filters in een klasse apart plaatsen. De software filters zo programmeren dat deze ook kunnen filteren op data die in het bericht zit, terwijl de hardware filters enkel kunnen filteren op de identiteit.
____________________________________________________________________________________ 15
Ryheul Kristof
CAN EDI Diagnostic Tool
2.3 Tools & skills: • • • • • •
Computer met Windows besturingssysteem (XP Pro) Microsoft Visual Studio 2003 for C#.NET, .NET framework 1.1 Vector CANalyzer Ifak System isCAN USB interface, Softing CAN Usb interface RP1210A drivers Testopstelling met APC en CAN bus
____________________________________________________________________________________ 16
Ryheul Kristof
CAN EDI Diagnostic Tool
3. Stageplaats en stage beschrijving 3.1 Voorstelling van het bedrijf
3.1.1 Situering van het bedrijf binnen DANA
De Dana Corporation is een Amerikaanse multinational, met hoofdkwartier in Toledo, Ohio. Ze is één van de grootste onafhankelijke producenten van onderdelen voor de automobielindustrie. Ze is wereldleider op het vlak van engineering, onderzoek en productie van systemen en producten voor de off-highway industrie. Dana staat bekend om haar specifieke managementstijl en haar drang naar vernieuwing. Ze heeft fabrieken, ontwikkel- en ontwerpcentra verspreid over 30 landen en telt z’n 45.000 werknemers. Dana realiseert wereldwijd een omzet van meer dan 8 miljoen euro. Dana maakt onderdelen voor zowel de auto-industrie als de ‘Off-Highway’-markt. De multinational kan men opdelen in een vijftal groepen: o o o o o
Automotive Systems Automotive Aftermarket Commercial Vehicle Systems Group Engine and Fluid Management Group Off-Highway Systems and DCC.
Het bedrijf in Brugge ‘Spicer Off-Highway Belgium nv’ maakt deel uit van de Off-Highway Systems. 3.1.2 De geschiedenis van het bedrijf
De naam Clark werd in 1903 voor het eerst gebruikt toen Eugene Clark in Chicago de Clark Equipment Company oprichtte. Oorspronkelijk werden enkel heftrucks en trekkers met bijhorende assen geproduceerd. In 1927 begon men met transmissies bouwen. Het bedrijf, dat als een familiebedrijf startte, groeide door de jaren heen uit tot een multinational. In 1968 werd de vennootschap ‘Clark Automotive Europe N.V.’ opgericht. De oprichting van de vennootschap in België en de vestiging ervan in Brugge was een gevolg van een project tussen Clark Equipment Company en La Brugeoise et Nivelles N.V. om samen ‘powershift’ transmissies te produceren voor de Europese markt. Powershift transmissies zijn versnellingsbakken met een ‘natte’ platenkoppeling per versnelling. Bij dit type versnellingsbakken is de overgang tussen de ene versnelling en de andere met een minimum aan koppelverlies mogelijk. In 1971 werd de onderneming in Brugge 100% dochteronderneming van Clark Equipment Company en telde het bedrijf reeds 276 werknemers. Door de toenemende verkoop en ontwikkeling van nieuwe types transmissies was er in 1975 een eerste uitbreiding nodig van de fabriekshallen. In 1980, 1988 en 1993 volgden verdere uitbreidingen. Sindsdien bedraagt de totale bebouwde oppervlakte ruim 29000 m² en biedt onderdak aan een modern en efficiënt machinepark. Het kantoorgebouw kreeg in 1981 een tweede verdieping en werd in 1991 verder uitgebouwd om zo alle administratieve afdelingen degelijk te kunnen huisvesten. Vandaag beslaat dit 3500 m².
____________________________________________________________________________________ 17
Ryheul Kristof
CAN EDI Diagnostic Tool
Op 1 augustus 1990 werd de Noord-Italiaanse onderneming Hurth Axle door de Clark-groep overgenomen. Zo ontstond de naam Clark-Hurth Components. Het bedrijf kende zijn zwarte dagen in het begin van de jaren negentig. Er waren herstructureringen en meerdere zware afvloeiingen nodig om het bedrijf te behoeden voor een nakend faillissement. Deze periode blijft een zware bladzijde in de geschiedenis van het bedrijf, maar betekende ook het begin van een nieuwe bloei. In 1992 werd de afdeling Clark Material Handling (de constructie van de befaamde vorkheftrucks) verkocht aan Terex. De Clark Equipment Company bestond dan nog slechts uit 4 divisies. In mei 1995 werd de volledige groep Clark Equipment Company verkocht aan de Amerikaanse groep Ingersoll Rand. Op 14 februari 1997 volgde dan de uiteindelijke verkoop van de volledige Clark-Hurth Components divisie aan Dana Corporation. Sindsdien behoort het bedrijf tot de Spicer OffHighway Components Group van Dana. Nauwelijks 1 maand later werd aan Brugge de verantwoordelijkheid toevertrouwd voor de ontwikkeling van alle nieuwe transmissies voor de wereld markt en werden financiële middelen vrijgemaakt voor de uitbouw van een onderzoeks- en ontwikkelingslaboratorium voor componenten en nieuwe transmissies. Het deel Off-Highway in de naam duidt op het toepassingsgebied waarin de versnellingsbakken terechtkomen. Voertuigen die gedurende de bedrijfsomstandigheden niet op de weg rijden bijvoorbeeld kranen, bulldozers, heftrucks, graafmachines, mijnvoertuigen, tractievoertuigen. Alle onderzoek en product-ontwikkeling gebeurt te Brugge. In ons testlaboratorium voeren we testen uit op zowel onderdelen als op volledig afgewerkte producten. We hebben ook een eigen testpiste. De producten worden ingezet in machines voor wegen-, land- en mijnbouw. Daarnaast is Dana ook zeer sterk vertegenwoordigd in de markt van de goederenbehandeling. De toepassingen zijn vooral bedoeld voor machines die weinig of niet op de openbare weg rijden, vandaar ook de naam ‘Off-Highway’. Wij bieden bij onze producten ook elektronische stuursystemen aan. Dit laat de klant toe het maximale rendement uit hun voertuigen te halen, zonder echter de kwaliteit van hun uitrusting in gevaar te brengen. 3.1.3 Fabricatieprogramma
De producten die ontwikkeld en vervaardigd worden zijn bestemd voor de Off-Highway industrie. Er wordt aan de klanten een volledig gamma ‘powershift’ transmissies en koppelomvormers aangeboden. Daarnaast biedt men de klanten ook elektronische controlesystemen aan, die hen toelaten om het maximale rendement uit hun voertuigen te halen zonder dit te beschadigen. De producten zijn bestemd om ingebouwd te worden in heavy-duty off-highway-machines, zoals: o o o o
Telescopische hoogtewerkers Asfalteermachines Graafmachines Mijnbouwmachines
____________________________________________________________________________________ 18
Ryheul Kristof
o o o o
CAN EDI Diagnostic Tool
Kranen Bosontginningsmachines Vorkheftrucks …
Alle producten worden op bestelling vervaardigd en er wordt zoveel mogelijk gewerkt volgens het ‘Just In Time’-systeem (JIT), waardoor de stock tot een minimum beperkt wordt. De producten zijn meestal bestemd voor privé-ondernemingen zoals Caterpiller, Volvo, Manitou, Case New Holland, … De productie van koppelomvormers en transmissies vormt het leeuwendeel van onze activiteiten. Zowel de afwerking van de onderdelen op CNC-gestuurde machines, de warmtebehandeling als de montage tot volledig afgewerkte transmissies gebeurt in onze vestiging. Op gesofisticeerde testapparatuur, door onze eigen ingenieurs ontwikkeld, wordt elke transmissie grondig getest voor levering. Het bedrijf heeft op vandaag meer dan 700 technisch geschoolde medewerkers. De expansie op het vlak van tewerkstelling gedurende de afgelopen periode is voornamelijk te danken aan de combinatie van drie factoren. Vooreerst is er het feit dat begin 2006 het zusterbedrijf in de Verenigde Staten werd gesloten. De machines en bijbehorende productievolumes werden hierbij overgebracht naar Brugge. De succesvolle lancering van een aantal nieuwe producten gedurende de afgelopen jaren is een tweede factor. Hierbij werden de mechanica en de elektronica met elkaar gecombineerd. Daar bovenop komt nog het feit dat onze afzetmarkt een sterke heropleving kent. 3.1.4 Situering van het bedrijfscontact
Mijn stageplaats is op de tweede verdieping van het kantoorgebouw bij de afdeling controls. In het totaal werkt men met ongeveer 45-50 personen in de afdeling engineering (bovenste verdieping).
Fig. 1 Hoofdingang kantoorgebouw te brugge
____________________________________________________________________________________ 19
Ryheul Kristof
CAN EDI Diagnostic Tool
3.1.5 Grondplan van het bedrijf
Op onderstaande foto vind je het grondplan van DANA Spicer Off-Highway Brugge. Ik bevind mij in het rode gedeelte rechtsboven (‘offices’).
n o i s i v i D s t c u d o r P y a w h g i h f f O r e c i p S
s t a a e l p i t l e a u m c a a z r v e e j v i : b
a i r a t e f a c :
e n g i a b l a s p k t o i f u r e p s v : : S
- T T A A E E R H T
O B H E :
V
S E C I F F O
e i t p e c e r
B I L M R O O C O O T R &
S E R O T S
V
S
G N I K R A P
t u o y a L t n a l P
H S E G R U O O T R S
E C N A N E T N I A M
Y L B M E S S A
G N I P P I H S
G N I K R A P
. D O R P L E E T S
y l b m e s s a w e N
t s n e i d e h c s i d e M
k c a P & t n i a P S
. G N B • E A L
N W E S
1 e l e i r B n e T
3 e l e i r B n e T
0 2
Fig. 2 Grondplan DANA Spicer Off-Highway Brugge ____________________________________________________________________________________ 20
Ryheul Kristof
CAN EDI Diagnostic Tool
3.2Bedrijfsorganigram
Fig. 3 Bedrijfsorganigram DANA Spicer Off-Highway Products Division
3.3Overzicht productiestappen
Enkele productiestappen: • • • • • • •
Vertanding Normaliseren Hardingsproces Draaien/frezen Slijpen/harddraaien Wassen, drogen en schilderen van transmissie Inpakken en stockeren
In totaal zijn er 22 productiestappen.
____________________________________________________________________________________ 21
Ryheul Kristof
CAN EDI Diagnostic Tool
3.4 Algemene richtlijnen en veiligheidsregels
3.4.1 Toegang
- Uitsluitend hoofdingang gebruiken bij het betreden of verlaten van fabriek - Iedere bezoeker/contractor zal zich vrijwillig onderwerpen aan controle door bewaking, indien hierom verzocht wordt. - Personenwagens zijn niet toegelaten op het bedrijfsterrein, tenzij goedkeuring van bewaking. - De 10 regels van orde en netheid worden strikt gevolgd. 3.4.2 Veiligheid
- Er is een algemene verplichting in de werkplaatsen om een veiligheidsbril te dragen. - Veiligheidsschoenen zijn verplicht tijdens het werken in de werkplaatsen. - Er is een rookverbod van kracht binnen en buiten alle gebouwen. Roken is enkel toegelaten in de aangeduide rooklokalen. - De max. toegelaten snelheid op het bedrijf is 20 km/u. Verdere verkeersaanduidingen dienen steeds nageleefd te worden. - Betreden van werkplaatsen of installaties is verboden zonder voorafgaandelijke toelating van de desbetreffende Spicer verantwoordelijke. - Het is verboden, zonder voorafhaandelijke goedkeuring, werken te verrichten die:
een risico veroorzaken tot brand – en explosiegevaar (vuurvergunning verplicht) toegang vereisen tot enge ruimtes, tanks, … foto-, film, of videoapparatuur vereisen.
- Bij brand, ongeval of noodsituatie: blijf kalm, bel 2500 en begeef u naar een veilige plaats. - Bij hoogtewerk: veiligheidsgordel, helm en afbakening werkzone verplicht. - Er worden geen machines, gereedschappen of producten van SOH gebruikt zonder toestemming van de Spicer coördinator. 3.4.3 Milieu
- Alle geproduceerde afvalstoffen dienen te worden verwijderd volgens afspraak en ‘flowcharts’ in de afdelingen. - Er wordt niets in de riool gedumpt. - Er worden geen gechloreerde koolwaterstoffen gebruikt. - Er wordt maximaal gesorteerd. - Alle gebruikte scheikundige producten moeten goedgekeurd zijn door SOH. 3.4.4 Bijkomende info
- Extra richtlijnen steeds bij de bewaking of uw ‘Spicer Off-Highway Coördinator’.
____________________________________________________________________________________ 22
Ryheul Kristof
CAN EDI Diagnostic Tool
4.CAN & toebehoren 4.1 Inleiding ingebouwde netwerken
4.1.1 Wat is een ingebouwd netwerk ?
Sinds de introductie van de PC kregen de halfgeleider componenten vooral de CPU en het geheugen de meeste aandacht in de media. De chip fabrikanten bouwen lage prestatie microcontrollers steeds kleiner en kleiner. Dit maakt ze niet alleen goedkoper maar ook het verbruik daalt. Bijna in elk toestel zitten er één of meerde microcontrollers verwerkt. (keuken toestellen, telefoons, computers, computer toebehoren, radio’s, tv’s, auto’s, …) De trend van de meer betaalbare microcontrollers resulteert in systemen waar meerdere microcontrollers gebruikt worden. Er is dan nood aan een communicatie kanaal tussen deze controllers die in het systeem zijn verwerkt, namelijk ‘embedded networking’. Typische voorbeelden van multi-controller systemen met communicatie vereisten zijn auto’s en camions, huishoudelijke toestellen, lift systemen, en een hele rij industriële machines. 4.1.2 Communicatie in de automatisering.
Fig. 4 Communicatie in de automatisering (piramide)
De automatiseringspiramide symboliseert de verschillende controle niveaus en het aantal gecomputeriseerde systemen in een bedrijfsautomatiseringssysteem. De 3 laagste niveaus zijn deze die geïmplementeerd worden in een complexe machine. Het ‘Sensor and Actuator’ niveau ____________________________________________________________________________________ 23
Ryheul Kristof
CAN EDI Diagnostic Tool
bevat simpele sensoren (contact sensoren, afstandssensoren, temperatuur sensoren, …) en actuators gebruikt in proces. Het controller niveau implementeert onmiddellijke communicatie tussen de sensoren en actuators. Vroeger was communicatie op dit niveau niet mogelijk, wat wil zeggen dat elke sensor of actuator onmiddellijk gekoppeld moest zijn met zijn eigen draden aan het volgende niveau. Vandaag worden meer en meer sensoren en actuators ontwikkeld met een netwerk kaart. Doordat verschillende componenten in grote hoeveelheden op het laagste niveau nodig zijn, is de kost nog altijd een belangrijk punt. Het ontwerpen van sensoren die enkele gegevens doorgeven met hoge prestatie processoren en netwerk adapters zoals ethernet is geen optie. Andere technologieën gebaseerd op seriële bussen worden al jaren gebruikt, omdat ze ontvangen kunnen worden door de laagste prestatie microcontrollers en microprocessoren. CAN is één van de vele, die op het gebied van netwerk technologieën bruikbaar zijn op het laagste niveau van de automatiseringspiramide. Op controller niveau worden microcontrollers gebruikt om alle inputs te verwerken. Een soort controle algoritme wordt toegepast en verstuurd de nodige commando’s naar de actuators de outputs. Voor elk hoger niveau in de automatiseringspiramide dient de prestatie van het systeem hoger te zijn. In deze niveaus wordt hardware naar het ingebouwde netwerk enkel gebruikt als een directe link naar de laagste niveaus. Plaatsen van systemen in de automatiseringspiramide.
‘Embedded systems’ die meerdere microcontrollers gebruiken en gelijk welke soort van communicatie gebruikt kan dikwijls onmiddellijk vergeleken worden met de laagste niveaus van de automatiseringspiramide. Hoe dichter een module bij de sensoren en actuators staat, hoe meer kostgevoelig het is en hoe meer de communicatie vereisten tot de basis kunnen herleid worden.
____________________________________________________________________________________ 24
Ryheul Kristof
CAN EDI Diagnostic Tool
4.2 Wat is CAN
Het CAN protocol is een ISO standaard (ISO 11898) voor seriële datacommunicatie. Het protocol werd ontworpen gericht naar de automobiel applicaties in de begin jaren 80. Vandaag is CAN wereldwijd verspreid en wordt gebruikt in industriële automatisatie als ook in auto’s en mobiele machines. De CAN standaard bevat een fysieke laag en een datalink laag waarin een aantal verschillende types berichten beschreven staan, botsing (arbitration / collision) regels voor bus toelating en methodes voor foutdetectie en foutbeperkingen. 4.2.1 Het CAN protocol
Het is een seriële data communicatie bus voor real-time controletoepassingen. Data rates tot 1 Mbps. Het was origineel ontworpen voor gebruik in auto’s. De fysieke laag gebruikt ‘twisted pair’ draden voor transmissie (transport van gegevens) Een op bit gebaseerde arbitrage om toegang op de bus te controleren. De berichten zijn klein (max. 8 bytes) en zijn beschermd door een checksom. Er is geen expliciet adres aanwezig in het bericht, in de plaats daarvan bevat elk bericht een getal die zorgt voor de prioriteit op de bus, en ook een identificatie van de data in het bericht. Een uitgewerkte foutafhandeling schema dat het opnieuw sturen van berichten mogelijk maakt wanneer deze niet goed werd ontvangen. Er zijn efficiënte middelen om fouten te isoleren en defecte apparaten te verwijderen uit de bus. Een multi-master hiërarchie, die het mogelijk maakt om intelligente en redundante systemen te maken. (Als één controller defect is, blijft het netwerk in werking). Broadcast communicatie. Een zender stuurt naar alle controllers in het netwerk, alle controllers lezen het bericht en beslissen of het bruikbaar is voor hen.
4.2.2 Hogere protocol lagen
Het CAN protocol zegt enkel hoe kleine pakketten van data veilig getransporteerd kunnen worden van punt A naar punt B, gebruikmakend van een gedeeld communicatie medium. Het bevat niets over onderwerpen zoals ‘flow control’, transport van data groter dan 8 byte, apparaat adressering, onderneming van communicatie, enz.. Deze onderwerpen worden door een hogere protocol laag omvat (HLP). De term HLP is afgeleid van het OSI model en de zeven lagen. Hogere protocol lagen worden gebruikt voor:
Gestandaardiseerde opstart, procedures voor het regelen van de bit rate. Adressen verdelen onder deelnemende apparaten of soorten berichten. Het uitzicht van het bericht bepalen. Routines voor foutafhandeling op systeemniveau.
____________________________________________________________________________________ 25
Ryheul Kristof
CAN EDI Diagnostic Tool
4.2.3 CAN producten
Op het laagste niveau zijn er in principe twee soorten CAN producten beschikbaar op de markt, CAN chips en CAN ontwikkelingshulpmiddelen. Op een hoger niveau zijn er nog twee soort producten namelijk CAN modules en CAN ontwerp hulpmiddelen. Een groot aantal van deze zijn verkrijgbaar op de open markt. 4.2.4 De CAN bus
De CAN bus is een broadcast type bus. Dit betekent dat alle apparaten die op de bus zijn aangesloten alle transmissies kunnen “horen”. Er is geen enkele manier om een bericht te zenden naar één enkel apparaat. De CAN hardware heeft wel de mogelijkheid om lokaal filters in te stellen zodat het apparaat enkel reageert op het gewenste bericht.
Fig. 5 Broadcast principe CAN bus
CAN gebruikt NRZ encodering (met bit-stuffing) voor data communicatie op een differentiële twee draadbus. Het gebruik van NRZ codering verzekert compacte berichten met een minimumaantal overgangen en een hoge weerstand tegen externe storing. De modules worden op een telegrafen manier op de bus aangesloten (bus structuur). Als een apparaat een nul op de bus stuurt, dan is heel de bus in die status ongeacht of er een andere node een één op de bus stuurt. (de nul overheerst). De CAN standaard definieert vier verschillende types berichten. De berichten gebruiken slimme schema’s of een op bit gebaseerde arbitrage om de toegang tot de bus te controleren, het bericht bevat ook een prioriteit.
____________________________________________________________________________________ 26
Ryheul Kristof
CAN EDI Diagnostic Tool
4.3 Waarom CAN ?
Er zijn enkele goede redenen waarom het CAN protocol de goede keuze is. 4.3.1 Volwassen standaard
Het CAN protocol bestaat al meer dan 15 jaar (sinds 1986). Er zijn nu veel CAN producten en hulpmiddelen beschikbaar op de markt. 4.3.2 Hardware implementatie van het protocol
Het CAN protocol is geïmplementeerd in de hardware van allerhande IC’s. Dit maakt het mogelijk om de foutafhandeling en foutbeperkingen van CAN te combineren met een hoge transport snelheid. De methode die gebruikt wordt voor het versturen van berichten naar de juiste ontvanger draagt bij tot het bereiken van een goed gebruik van de beschikbare bandbreedte. 4.3.3 Simpel transmissie medium
Het transport medium maakt gebruik van ‘twisted pair’ draden. Een CAN systeem kan ook werken met één enkele draad. In sommige applicaties zijn andere oplossingen beter geschikt zoals optische kabels of RF (radio frequency) verbindingen. Niettegenstaande er een transport hardware standaard is (twisted pair), is het mogelijk om andere oplossingen te gebruiken afhankelijk van de systeem eisen. 4.3.4 Excellente foutafhandeling
De foutafhandeling van CAN is een van de heel sterke voordelen van het protocol. De foutdetectie systemen zijn uitgebreid, en de foutbeperkingen zijn goed ontworpen. De foutafhandeling en het opnieuw versturen van berichten wordt automatisch gedaan door de CAN hardware. 4.3.5 Goede foutbeperking
Een optredende fout in het systeem (netwerk) kan het transport van heel het systeem stil leggen (bv. door de totale bandbreedte te gebruiken). Het CAN protocol heeft een ingebouwde functie dat voorkomt dat een fout het volledige systeem blokkeert. Het apparaat dat de fout veroorzaakt heeft wordt uitgesloten voor verder verkeer op de CAN bus.
____________________________________________________________________________________ 27
Ryheul Kristof
CAN EDI Diagnostic Tool
4.4 Waar wordt CAN gebruikt ?
CAN komt voort uit de automobiel industrie waar het gebruikt wordt als het overheersende bus systeem voor ‘in-vehicle’ netwerken. Vijf of meer CAN netwerken connecteren meer dan 60 ECU’s in afgewerkte (high-end) personen auto’s. De laatste tijd ontwierp CiA open netwerken voor speciale auto’s zoals taxi’s en politie auto’s om diensten te connecteren in de auto. Bv. taximeter, printer, blauw licht, creditkaart lezer, en andere. CAN wordt niet enkel gebruikt in auto’s maar ook in gelijk welk ander applicatie veld. De meeste applicaties vereisen hoge niveau compatibiliteit. Voor deze reden zijn er hogere protocol lagen ontworpen. 4.4.1 CAN toepassingsgebieden: • • • • • • • • •
Personen auto’s Camions en bussen Off-highway en off-road voertuigen Maritieme elektronica Vliegtuig en ruimtevaart elektronica Fabrieksautomatisatie Machine besturing Gebouw automatisatie, liften en roltrappen Medisch materiaal en toestellen
4.5 Voor en nadelen van CAN
4.5.1 Voordelen van CAN: • • • • • • •
•
• • • •
Kortere installatietijd Minder gewicht, door afname van de hoeveelheid kabels Minder aansluitingen en aftakkingen en dus minder storingsoorzaken Ruimtebesparend Minder kans op variabele magnetische velden Storingen zoeken biedt meer mogelijkheden Een sensor geeft informatie aan verschillende stuureenheden door, waardoor het aantal componenten vermindert Meer comfortmogelijkheden en een beter rijgedrag door communicatie tussen de verschillende systemen Extra functies zijn mogelijk mits andere programmatuur Het systeem is gemakkelijk aan te passen per land en aan de behoeften van de klant Minder wisselstukken waardoor een eenvoudiger en goedkoper voorraadbeheer Ook kostenbesparing was één van de doorslaggevende redenen voor het invoeren van CAN. Er waren immers minder draden en sensoren nodig bij een CAN-netwerk.
____________________________________________________________________________________ 28
Ryheul Kristof
CAN EDI Diagnostic Tool
4.5.2 Er zijn echter ook enkele nadelen: •
• •
Door de ingewikkelde constructie is het nodig dat de mecaniciens in de werkplaats extra geschoold worden. Specifieke merkgebonden apparatuur dringt zich op met de daarbij horende kennis. Soms is de snelheid van de bus te traag, en gaat men voor bepaalde snelle toepassingen toch klassieke bedrading nemen
4.6 CAN berichten
4.6.1 Vier verschillende soorten CAN berichten 4.6.1.1 Data frame
Het data frame is het meest gebruikte bericht type. Het bevat de volgende belangrijke delen: o Het arbitrage veld, die de prioriteit van het bericht bepaalt wanneer twee of meer apparaten op de bus vechten (als ze tezelfdertijd een bericht sturen). Het arbitrage veld bevat: voor CAN 2.0A, een 11-bit identiteit en één bit RTR die overheersend is voor data frames. voor CAN 2.0B, een 29-bit identiteit (met twee bits extra voor SRR en IDE) en één bit RTR die overheersend is voor data frames. o Het data veld die 0 tot 8 bytes aan data bevat. o Het CRC veld die een 15-bit checksom bevat, berekend op de meeste delen van het bericht. Deze checksom wordt gebruikt voor fout detectie. o Een erkenning (acknowledgement) slot, elke CAN controller die een bericht correct ontvangt zend een erkenning bit. De verzender controleert of de erkenning bit aanwezig is, zoniet herstuurt hij het bericht opnieuw. •
•
Fig. 6 CAN 2.0A data frame (Standard CAN)
Fig. 7 CAN 2.0B data frame (Extended CAN)
____________________________________________________________________________________ 29
Ryheul Kristof
CAN EDI Diagnostic Tool
4.6.1.2 Remote frame
Het remote frame is identiek aan de data frame, met twee belangrijke verschillen: o Het is expliciet gemarkeerd als remote frame. o Er is geen data veld. Het voorgenomen doel van het remote frame is het verzoeken van transmissies van het overeenkomstige data frame. Vb. als node A een remote frame verstuurt naar B met in het arbitrage veld 234, dan kan node B een date frame versturen met ook 234 in zijn arbitrage veld. De ‘Data Length Code’ dient ingevuld te worden met de lengte van het verwachte antwoord bericht, anders werkt de arbitrage niet.
Fig. 8 CAN remote frame
4.6.1.3 Error frame
Simpel gezegd is de error frame een special bericht dat zich niet aan de frame regels houdt van een CAN bericht. Het wordt verstuurd wanneer een apparaat een fout detecteert, hierdoor zullen alle apparaten aangesloten op de bus de fout detecteren. De verzender zal automatisch het bericht opnieuw versturen. Er is een uitgewerkt schema van fout tellers zodat de node het busverkeer niet onmogelijk maakt. Het error frame bevat een fout vlag met 6 gelijke bits (overtreding van de bit-stuffing regel) en een fout afbakening van 8 bits. De fout afbakening verstrekt plaatst voor andere apparaten op de bus om ook hun fout vlagen te zenden wanneer deze de eerste fout vlag detecteert.
Fig. 9 CAN error frame ____________________________________________________________________________________ 30
Ryheul Kristof
CAN EDI Diagnostic Tool
4.6.1.4 Overload frame
Het overload frame wordt hier vermeld voor de volledigheid. Het is bijna identiek als het error frame met een gelijkaardig formaat en wordt verstuurd door een apparaat dat het te druk heeft. Het overload frame wordt niet veel gebruikt, doordat de CAN controllers vandaag slim genoeg zijn om het niet meer nodig te hebben. De enige controller die het nu nog gebruikt is de verouderde 82526 MCU. 4.6.2 Standard vs Extended CAN
Oorspronkelijk definieerde de CAN standaard de lengte van de identiteit in het arbitrage veld op elf. Later werden ze door de eisen van de kopers verplicht om de standaard uit te breiden. Het nieuwe formaat wordt Extended CAN genoemd en laat niet minder dan 29-bits toe in de identiteit. Om onderscheid te kunnen maken tussen deze twee frame types werd een gereserveerde bit gebruikt in het controle veld. De standaarden worden als volgt genoemd: • •
•
2.0A, met 11-bit identiteit. 2.0B, de uitgebreide versie met 29-bit identiteit (of 11-bit, je kan ze mixen) Een 2.0B apparaat kan: Actief zijn: Verzenden en ontvangen van uitgebreide berichten Passief zijn: Stil verwerpen van uitgebreide ontvangen berichten. 1.x, verwijst naar de oorspronkelijke specificaties en zijn revisies.
Nieuwe CAN controllers zijn meestal van het 2.0B type. Een 2.0A controller kan geen 29-bit arbitrage veld ontvangen. Sommige mensen verdedigen de standaard CAN berichten als beter dan de uitgebreide CAN berichten, omdat de bus meer belast wordt met uitgebreide CAN berichten. Dit is niet altijd zo, als je het arbitrage veld gebruikt om data te versturen kan deze voor minder busverkeer zorgen. Dan is de busbelasting kleiner dan met standaard CAN berichten. 4.6.3 Basic CAN vs Full CAN
De termen “Basic CAN” en “Full CAN” komen nog uit de kindertijd van CAN. Intel met zijn 82526 CAN controller verstrekte een DPRAM interface voor de programmeur, Philips gebruikte in zijn 82C200 een FIFO (Queue) georiënteerd programmeermodel met gelimiteerde filter mogelijkheden. Om deze twee types te onderscheiden benoemde men Intel als “Full CAN” en Philips als “Basic CAN”. Vandaag ondersteunen de meeste CAN controllers beide programmeermodellen. Er is geen compatibiliteitsprobleem tussen de twee types, dus een “Full CAN” controller kan communiceren met een “Basic CAN” en omgekeerd.
____________________________________________________________________________________ 31
Ryheul Kristof
CAN EDI Diagnostic Tool
4.6.4Bus Arbitrage en bericht Prioriteit
De bericht arbitrage (het proces waarin twee of meer CAN controllers overeenkomen wie de bus mag gebruiken) is van groot belang voor de echt bruikbare bandbreedte voor data transport.
Fig. 10 Bus arbitrage en bericht prioriteit (standaard CAN)
Elke CAN controller mag een bericht versturen als er gedetecteerd werd dat de bus niets uitvoert. Dit kan resulteren dat twee of meer controllers een bericht tezelfdertijd versturen. Het apparaat dat een bericht verstuurd bekijkt de bus tijdens het verzenden, als het apparaat een waarde op de bus ziet dat hij zelf niet heeft gestuurd dan stopt hij onmiddellijk met het versturen van zijn bericht en wordt hij een ontvanger. Dit is identiek aan de arbitrage van een I²C netwerk. De arbitrage gebeurt over het hele arbitrage veld, als dit veld verstuurd is blijft er exact één zender over. Dit apparaat gaat door met het verzenden alsof niets gebeurd is. De andere apparaten proberen hun bericht opnieuw te sturen wanneer de bus terug vrij komt. Er is geen tijdsverlies in het arbitrage proces.
Een belangrijke conditie voor deze op bit gebaseerde arbitrage is dat er geen twee apparaten hetzelfde arbitrage veld hebben. Een uitzondering hierop is wanneer een bericht geen data bevat. Dan mag elk apparaat het bericht versturen. Zoals eerder vermeld is de nul dominant bij de arbitrage. Hieruit volgt dat hoe hoger de prioriteit is, hoe kleiner het getal moet zijn. Dus als bijvoorbeeld de prioriteit één byte is, heeft FFh de kleinste prioriteit en 00h de hoogste prioriteit. 4.6.5 Bericht adressering en identificatie
Er is geen expliciet adres in een CAN bericht. Elke CAN controller neemt alle verkeer op de bus aan, door het gebruik van een combinatie van hardware filters en software filters kan er vast gesteld worden of het bericht interessant is of niet. Alle CAN controllers zullen het arbitrage veld of een deel ervan gebruiken als een sleutel in het hardware filtering proces. ____________________________________________________________________________________ 32
Ryheul Kristof
CAN EDI Diagnostic Tool
De standaard zegt niet dat het arbitrage veld gebruikt moet worden als bericht identificatie, niettegenstaande het heel veel gebruikt wordt. 4.7 CAN fysieke lagen
4.7.1 Verschillende fysieke lagen
Een fysieke laag definieert: • • • •
het elektrische niveau het signaal schema op de bus de kabelimpedantie andere
Er zijn meerdere verschillende fysieke lagen: •
•
•
• •
Het meest gebruikte type is deze die de CAN standaard definieert, ISO 11898-2, het is een tweedraad bus en gekend als “high-speed CAN”. Een ander deel van dezelfde ISO standaard, ISO 11898-3 definieert een andere tweedraad bus voor lagere bus snelheden. Het is fout tolerant, dus transport kan verder gaan zelfs als één draad kortgesloten is naar massa. Deze standaard is beter gekend als “low-speed CAN”. SAE J2411 definieert een ééndraad fysieke laag (plus massa). Het wordt voornamelijk gebruikt in auto’s (vb. GM-LAN) Er bestaan verscheidene merkgebonden fysieke lagen. De wijzigingen van RS485 werden vroeger gebruikt toen CAN drivers nog niet bestonden.
Verschillende fysieke lagen kunnen niet (is een regel) samenwerken. Sommige combinaties kunnen werken, of blijken te werken, onder zeer goede condities. 4.7.2 Maximum bus snelheid
De maximum snelheid van een CAN bus is volgens de standaard 1Mbps. Sommige CAN controllers kunnen toch sneller dan 1Mbps en worden gebruikt in speciale applicaties. Low-speed CAN werkt tot 125 kbps. Single-wire CAN werkt tot 50kbps in standaard mode, tot 100kbps in high-speed mode. Op een volledig belaste bus met een snelheid van 1Mbps kunnen er 6 à 7 berichten per milliseconde op de bus komen.
____________________________________________________________________________________ 33
Ryheul Kristof
CAN EDI Diagnostic Tool
4.7.3 Minimum bus snelheid
Sommige controllers kunnen niet lager dan een bepaalde bit snelheid. Voor de 82C250 – 82C251 is de minimum bus snelheid 10kbps. Om de echte minimale bus snelheid te weten moet je de datasheet van de fabrikant bekijken. 4.7.4 Maximum kabel lengte
Snelheid (kbps)
Kabel lengte (m)
1000 500 250 125 10
40 100 200 500 6000
Fig. 11 Lengte van de CAN bus volgens de baudrate
4.7.5 Bus afsluiting (terminator)
Een ISO 11898 CAN bus moet afgesloten worden, dit wordt gedaan met een weerstand van 120 Ohm op beide einden van de bus. De afsluiting heeft 2 doelen: Het verwijderen van signaal reflecties aan het einde van de bus. Er voor zorgen dat de bus de goede DC niveaus krijgt. • •
Een ISO 11898 CAN bus moet altijd worden afgesloten ongeacht de bus snelheid. 4.7.6 De kabel
De ISO 11898 bepaalt dat de kabel een impedantie dient te hebben van 120 ohm. Een impedantie tussen de 108 en 132 ohm is toegelaten. Er zijn niet veel kabels op de markt die aan deze eisen voldoen. Het interval waarin deze impedantie moet vallen zal waarschijnlijk nog worden verruimt. ISO 11898 is beschreven voor twisted pair kabels, shielded en unschielded.
____________________________________________________________________________________ 34
Ryheul Kristof
CAN EDI Diagnostic Tool
4.7.7 Spanningsniveaus 4.7.7.1 Low Speed CAN
Signaal CAN_H CAN_L
Recessieve toestand (rust) Min Nominaal Max 1.6 1.75 1.9 3.1 3.25 3.4
Dominante toestand (actief) Min Nominaal Max 3.85 4.0 5.0 0 1.0 1.15
Eenheid Volt Volt
4.7.7.2 High Speed CAN
Signaal CAN_H CAN_L
Recessieve toestand (rust) Min Nominaal Max 2.0 2.5 3.0 2.0 2.5 3.0
Dominante toestand (actief) Min Nominaal Max 2.75 3.5 4.5 0.5 1.5 2.25
Eenheid Volt Volt
4.7.8 Opbouwen van redundantie
Het verhogen van de veiligheid kan door het toevoegen van redundantie in verschillende niveaus. Een microcontroller communiceert met een CAN controller die gebruik maakt van een transceiver om berichten (signalen) uit te wisselen met de fysische media. Software redundanties kunnen toegevoegd worden zonder de structuur te veranderen. Berichten kunnen gekloond worden en twee maal over het netwerk verstuurd worden. Enkel wanneer beide berichten verzonden zijn wordt de transmissie als succesvol gezien. (zie fig. 12)
Fig. 12 Toevoegen van software redundantie
In sommige gevallen kunnen applicaties ook hardware redundantie vereisen. Dit is vooral om veilige en relevante communicatie op te bouwen. Hier worden twee microcontrollers en twee CAN controllers gebruikt, maar ze gebruiken beide dezelfde transceiver. Dit wordt in de eerste plaats gebruikt waar elektronische schakelingen verantwoordelijk zijn om naar een veilige ____________________________________________________________________________________ 35
Ryheul Kristof
CAN EDI Diagnostic Tool
toestand over te schakelen (bijvoorbeeld een shut-down). Zoals het uitschakelen van verschillende componenten in een bepaalde volgorde. (zie fig. 13)
Fig. 13 Toevoegen van hardware redundantie
In sommige maritieme applicaties is het nodig om veiligheid in te bouwen in het geval er iets gebeurt met de bedrading van het netwerk of met een controller aangesloten op het netwerk. Het idee is niet alleen om de bedrading naar de controller te beveiligen maar ook het hele netwerk. (zie fig. 14)
Fig. 14 Toevoegen van redundantie in de bedrading ____________________________________________________________________________________ 36
Ryheul Kristof
CAN EDI Diagnostic Tool
4.7.9 CAN connectoren
Er is geen standaard voor CAN bus connectoren. Meestal definieert elke hogere protocol laag één of enkele voorkeur connector types. • • •
9-pin DSUB, voorgesteld door CiA 5-pin Mini-C of Micro-C, gebruikt bij DeviceNet en SDS 6-pin Duitse connector, voorgesteld door CANHUG voor mobiele hydrolica
Meer info over de CAN bus connectoren vind je in het volgende deel punt 4.8. 4.8 CAN connectoren
4.8.1 9-pin DSUB
De connector layout wordt geadviseerd door CiA en is vrij wel de industriële standaard.
Fig. 15 9-pin Dsub connector (CAN connector)
Pin
1 2 3 4 5 6 7 8 9
Signaal
CAN_L CAN_GND (CAN_SHLD) (GND) CAN_H (CAN_V+)
Beschrijving
Gereserveerd CAN_L bus line (dominant low) CAN massa Gereserveerd Optioneel CAN schild Optionele massa CAN_H bus line (dominant high) Gereserveerd Optionele voeding
____________________________________________________________________________________ 37
Ryheul Kristof
CAN EDI Diagnostic Tool
4.8.2 Multipole connector
Fig. 16 Multipole connector (CAN connector)
Pin
1 2 3 4 5 6 7 8 9 10
Signaal
(GND) CAN_L CAN_H CAN_GND (CAN_V+) -
Beschrijving
Gereserveerd Optionele massa CAN_L bus line (dominant low) CAN_H bus line (dominant high) CAN massa Gereserveerd Gereserveerd Optionele voeding Gereserveerd Gereserveerd
4.8.3 RJ10 Connector
Fig. 17 RJ10 connector (CAN connector)
Pin
1 2 3 4
Signaal
(CAN_V+) CAN_H CAN_L CAN_GND
Beschrijving
Optionele voeding CAN_H bus line (dominant high) CAN_L bus line (dominant low) CAN massa
____________________________________________________________________________________ 38
Ryheul Kristof
CAN EDI Diagnostic Tool
4.8.4 RJ45 Connector Connector
Fig. 18 RJ45 connector (CAN connector)
Pin
1 2 3 4 5 6 7 8
Signaal
CAN_H CAN_H CAN_L CAN_GND (CAN_SHLD) CAN_GND (CAN_V+)
Beschrijving
CAN_H bus line (dominant high) CAN_L bus line (dominant low) CAN massa Gereserveerd Gereserveerd Optioneel CAN schild CAN massa Optionele voeding
4.8.5 5-pin Mini-C
Gebruikt bij DeviceNet en SDS en is compatible tussen deze twee protocollen.
Fig. 19 5-pin Mini-C connector
Pin
1 2 3 4 5
Signaal
CAN-SHLD (CAN_V+) CAN_GND CAN_H CAN_H CAN_L
Beschrijving
Optioneel CAN schild Optionele voeding CAN massa CAN_H bus line (dominant high) CAN_L bus line (dominant low)
Er zijn nog meer CAN connectoren maar dit zijn de meest gekende. Er is een nieuwe standaard aan het opkomen voor de automobielindustrie en deze standaard zou tegen 2008 overal moeten worden geïmplementeerd. De OBD (On Board Diagnostics) connector. _____________________________________ ____________________ ___________________________________ _____________________________________ _____________________________ __________ 39
Ryheul Kristof
CAN EDI Diagnostic Tool
4.9 CAN foutafhandeling
4.9.1 Hoe CAN fouten fouten afhandelt
Foutafhandeling is ingebouwd in het CAN protocol en is van groot belang voor de prestaties van het CAN systeem. De foutafhandeling richt zich op het detecteren van fouten in berichten die zich op de bus bevinden, zodat de zender een onjuist bericht opnieuw kan versturen. Elke CAN controller aangesloten op de bus zal proberen om fouten te ontdekken in een bericht. Als een fout gevonden is zal de controller die deze heeft gevonden een bericht versturen met een fout vlag, dit resulteert in het vernietigen van het bus verkeer. Andere controllers zullen deze fout vlag detecteren en het huidige berichten verwerpen. Elke controller bevat twee fout tellers: de Transmit Error Counter en de Receive Error Counter. Er zijn verschillende regels over hoe deze tellers verhoogd en/of verlaagd worden. In essentie zal een zender die een fout detecteert sneller zijn Transmit Error Counter verhogen dan de luisterende apparaten hun Receive Error Counter zullen verhogen. Wanneer een fout teller verhoogd wordt tot een bepaalde waarde zal het apparaat eerst in een “Error Passive” mode komen. Het zal niet actief het bus verkeer vernietigen wanneer het een fout detecteert, het komt dan in “Bus Off” mode. Dit betekent dat het apparaat niet meer deelneemt aan het bus verkeer. Door het gebruik van fouttellers kan een CAN node niet alleen fouten detecteren maar ook foutbeperking uitvoeren. 4.9.2 Fout detectie systemen
Het CAN protocol definieert niet minder dan vijf verschillende manieren om fouten te detecteren. Twee van de vijf werken op bit niveau, en de andere drie werken op bericht niveau. 4.9.2.1 Bit Monitoring
Elke zender op de CAN bus leest op het verzonden signaal niveau (verzonden signalen terug binnen lezen ter controle). Als de zender een ander bit niveau inleest dan hij heeft verzonden wordt een bit fout (Bit Error) gesignaleerd (Bit fouten worden tijdens het arbitrageproces niet opgeheven). 4.9.2.2 Bit stuffing
Wanneer vijf opeenvolgende bits met hetzelfde niveau door een controller worden verstuurt zal het een zesde bit toevoegen dat het tegenovergesteld is aan de vorige. De ontvangers zullen deze extra bit negeren. Dit wordt gedaan om bovenmatige DC componenten op de bus te voorkomen, het geeft de ontvangers ook een extra gelegenheid om fouten te detecteren. Als meer dan vijf opeenvolgende bits op de bus hetzelfde niveau hebben wordt een Stuff Error gesignaleerd.
_____________________________________ ____________________ ___________________________________ _____________________________________ _____________________________ __________ 40
Ryheul Kristof
CAN EDI Diagnostic Tool
4.9.2.3 Frame Check
Sommige delen van een CAN bericht hebben een vast formaat, de standaard bepaalt exact wanneer welk niveau moet opkomen. (Deze delen zijn de CRC afbakening, ACK afbakening, frame einde). Als een CAN controller een ongeldige waarde detecteert in een van deze vaste velden wordt een “Form Error” gesignaleerd. 4.9.2.4 Acknowledgement Check
Alle controllers aanwezig op de bus die een goed bericht ontvangen, worden verwacht een erkenning bit te versturen via het Acknowledgement veld in het bericht. Als de zender geen bericht ontvangt met een erkenning bit wordt een “Acknowledgement “Acknowledgement Error” gesignaleerd. 4.9.2.5 Cyclic Redundancy Check
Elk bericht heeft een 15-bit CRC veld, elke controller die een verschillende CRC detecteert in een bericht dan deze dat hij zelf heeft uitgerekend zal een “CRC Error” signaliseren . 4.9.3 Fout beperkingtechnieken beperkingtechnieken
Elke CAN controller aangesloten op de bus zal fouten proberen te detecteren in elk ontvangen en verzonden bericht. Als een fout gevonden is zal de controller die hem gevonden heeft een bericht zenden met een fout vlag (Error Flag), zodat alle verkeer op de bus vernietigd wordt. wordt. De andere controllers detecteren de fout gemaakt door de fout flag (als ze zelf de fout nog niet hadden gedetecteerd). Hierdoor zal elke controller het huidige bericht verwerpen. Elke controller bevat twee fouttellers: de Transmit Error Counter en de Receive Error Counter. Er zijn verschillende regels over hoe deze tellers verhoogd en/of verlaagd worden. In essentie zal een zender die een fout detecteert sneller zijn Transmit Error Counter verhogen dan de luisterende apparaten hun Receive Error Counter zullen verhogen. Wanneer een fout teller verhoogd wordt tot een bepaalde waarde zal het apparaat eerst in een “Error Passive” mode komen. Het zal niet actief het bus verkeer vernietigen wanneer het een fout detecteert, het komt dan in “Bus Off” mode. Dit betekent dat het apparaat niet meer deelneemt aan het bus verkeer. Een controller start in de “Error Active” mode. Wanneer één van de twee tellers groter wordt dan 127 zal de controller over gaan naar de “Error Passive” mode en wanneer deze nog groter wordt dan 255 zal de controller over gaan naar de “Bus Off” mode. •
Error Active : de controller verstuurt actief foutberichten wanneer een fout wordt
gedetecteerd. •
Error Passive : de controller verstuurt passieve foutberichten wanneer een fout wordt
•
gedetecteerd. Buss Off : de controller verstuurt niets meer op de bus.
_____________________________________ ____________________ ___________________________________ _____________________________________ _____________________________ __________ 41
Ryheul Kristof
CAN EDI Diagnostic Tool
De regels voor het verhogen en verlagen van de fouttellers zijn behoorlijk complex, maar het berust op het volgende principe: Verzendingsfouten geven acht foutpunten, ontvangstfouten geven één punt. Verzonden en ontvangen berichten zonder fouten verlagen de teller. De meeste CAN controllers verstrekken statusbits (en interrupt mogelijkheden) voor 2 toestanden: • •
“Error Warning” één of twee fouttellers hoger dan 96 “Bus Off” mode
Voor meer informatie over andere interrupt mogelijkheden bij deze modes, zie datasheet van de gebruikte CAN controller. De gewoonte van CAN controllers om automatisch berichten opnieuw te versturen nadat een fout voorkwam kan vervelend zijn. Er is alleszins één controller op de markt van Philips (SJA1000) die het toelaat om volledig manueel de foutafhandeling in te stellen. 4.9.4 Bus foutmodes
De ISO 11898 standaard beschrijft verschillende foutmodes van de CAN bus kabel: 1. 2. 3. 4. 5. 6. 7. 8. 9.
CAN_H onderbroken CAN_L onderbroken CAN_H kortgesloten met voeding CAN_H kortgesloten met massa CAN_L kortgesloten met voeding CAN_L kortgesloten met massa CAN_L kortgesloten met CAN_H CAN_H en CAN_L onderbroken op dezelfde plaats Verlies van verbinding door beëindigingverbinding
Er zijn fouttolerante drivers zoals de TJA1053 die alle fouten kan verwerken. Normaal betaal je voor deze fouttolerantie een beperkte maximum snelheid van 125kbps.
____________________________________________________________________________________ 42
Ryheul Kristof
CAN EDI Diagnostic Tool
4.10 CAN specificatie 2.0
4.10.1 Deel 1 (2.0A)
De fysieke laag bepaalt hoe de signalen worden overgebracht. Binnen deze specificatie wordt de fysieke laag niet bepaald om implementaties van transmissiemiddelen en signaal niveaus toe te laten in hun applicaties. De transport laag vertegenwoordigt de kern van het CAN protocol. Het legt ontvangen berichten voor aan de object laag en keurt berichten goed die van de object laag moeten worden overgebracht. De transport laag is verantwoordelijk voor bittiming en synchronisatie, bericht ontwerp, arbitrage, erkenning (acknowledge), foutdetectie en foutsignalisatie, en foutbeperking. De object laag zorgt voor het filteren van berichten evenals status- en berichtverwerking.
Fig. 20 Structuur lagen van CAN2.0A volgens het OSI model
____________________________________________________________________________________ 43
Ryheul Kristof
CAN EDI Diagnostic Tool
4.10.2 Deel 2 (2.0B)
Fig. 21 Structuur lagen van CAN2.0B volgens het OSI model
De fysieke laag bepaalt hoe de signalen worden overgebracht en daarom de beschrijving van de bittiming, synchronisatie en codering behandelt. De MAC sublaag vertegenwoordigt de kern van het CAN protocol. Het legt ontvangen berichten voor aan de LLC sublaag en keurt berichten goed die van de LLC sublaag moeten worden overgebracht. De MAC sublaag wordt gecontroleerd door een beheerseenheid ‘Fault Confinement’ genoemd. Het is een zelfcontrolerend mechanisme om korte storingen en permanente mislukkingen te onderscheiden. De LLC sublaag zorgt voor het filteren van berichten, notificatie bij overbelasting en beheer van herwinning (recovery). ____________________________________________________________________________________ 44
Ryheul Kristof
CAN EDI Diagnostic Tool
4.11 CAN hogere protocol lagen
De CAN standaard definieert de hardware en de communicatie op een basis niveau. Het CAN protocol zelf zegt enkel hoe het transport van data in kleine pakketten van punt A naar punt B moet gebeuren. Het bevat niets over onderwerpen zoals flow control, transport van data langer dan 8 byte, controller adressen, communicatie vastleggen, … Om communicatie tot stand te brengen is een hogere protocol laag (HLP) nodig. De term HLP is afgeleid van het OSI model en zijn zeven lagen. De HLP specificeert: • •
• •
Opstart gedrag Hoe de verdeling van berichtidentiteiten gebeurt onder de verschillende controllers in een systeem Hoe het vertalen van de inhoud gebeurt in een data frame Status mededeling in het systeem CAN hardware implementaties ondersteunen de twee laagste lagen van het OSI model, terwijl verschillende software oplossingen (HLP) de lagen drie tot zeven implementeren. Modellen worden gebruikt om de communicatie beter te begrijpen. Het OSI model wordt veel gebruikt om de functionaliteit van communicatie systemen te beschrijven op basis van een hiërarchisch gelaagde benadering. In de CAN wereld bestaan er verschillende gestandaardiseerde applicatie protocol lagen. Sommige zijn heel specifiek en verwant met het applicatie gebied.
Fig. 22 OSI 7 lagen model
4.11.1 Verschillende hogere protocol lagen
Er zijn veel HLP’s in het gebied van CAN. De meest gebruikte zijn: 4.11.1.1 CanKingdom
CanKingdom laat de volledige kracht van CAN los. Het geeft een systeemontwerper maximum vrijheid om zijn eigen systeem te ontwerpen. De systeemontwerper is niet verbonden aan het multi-master protocol van CAN maar kan systemen ontwikkelen gebruikmakend van vrijwel elk type busbeheer en topologie. CanKingdom opent de mogelijkheid voor een moduleontwerpen voor het ontwerpen van algemene modules zonder te weten in welk systeem zij definitief zullen geïntegreerd worden en welk type van hogere protocol laag CAN zal gebruiken. Aangezien de systeemontwerper slechts specifieke modules kan toelaten om in zijn systeem te gebruiken, kan het kostenvoordeel van een open systeem met de veiligheid van een merkgebonden systeem worden gecombineerd. Aangezien de identiteit van een CAN bericht niet alleen het bericht maar ook de bustoegang regeert is een zeer belangrijke factor de opsomming van de berichten. Een andere belangrijke factor is ervoor te zorgen dat de gegevensstructuur in het data veld hetzelfde is in zowel de ____________________________________________________________________________________ 45
Ryheul Kristof
CAN EDI Diagnostic Tool
overbrengende als ontvangende modules. Door enkele eenvoudige ontwerpregels goed te keuren kunnen deze factoren volledig worden gecontroleerd en de mededeling geoptimaliseerd voor om het even welk systeem. 4.11.1.2 CANopen
CANopen is een gestandaardiseerd protocol, dat communicatie mogelijk maakt tussen toestellen van verschillende fabrikanten en dat de uitwisselbaarheid van gegevens tussen deze toestellen garandeert. Het protocol werd ontwikkeld door CiA en werd gestandaardiseerd als CENELEC en 50325-4. CAL (CAN Application Layer) werd origineel ontworpen door CiA. CAL is gesplitst in verschillende stukken. •
•
•
CMS (CAN-based Message Specification) definieert protocollen om data te transporteren tussen CAN modules. NMT (Network Management Service) definieert de protocollen voor systeem opstarting en afsluiting, fout logging, en andere DBT (Distributor Service) definieert een protocol om identiteiten te verdelen aan de verschillende modules in een systeem.
CANopen kent een breed toepassingsgebied, vooral in Europa, waar het de toonaangevende standaard vormt voor industriële, automatiserings- en embedded systemen. CANopen is een op CAN gebaseerde hogere protocol laag. Het was ontwikkeld als een gestandaardiseerd embedded netwerk met hoge flexibele configuratie mogelijkheden. CANopen werd ontworpen voor bewegende machine controle netwerken. Nu wordt het gebruikt in verschillende toepassingsgebieden zoals medische toestellen, off-road voertuigen, maritieme elektronica, publieke transport, gebouw automatisatie, liften, … 4.11.1.3 DeviceNet
DeviceNet is ontwikkeld door de Allen Brandley divisie van Rockwell. Inmiddels is er een onafhankelijke stichting voor opgericht, de ODVA (Open DeviceNet Vendor Association). Deze doet het beheer en de marketing voor het netwerk en inmiddels is het netwerk met name in de V.S., maar ook in het verre oosten uitgegroeid tot waarschijnlijk de belangrijkste veldbus in productieomgevingen. De veldbustoepassing zit in het algemeen echter een niveau hoger dan de bij CANopen omschreven embedded omgeving. We koppelen hiermee machines en apparaten aan elkaar. Voor de gebruiker is het dan ook veel meer een plug & play netwerk, waarbij kennis van het CAN-netwerk bij de gebruiker niet vereist is. DeviceNet is speciaal ontwikkeld voor industriële automatisatie en vormt daardoor een rechtstreekse concurrent voor protocollen als Profibus-DP en Interbus. Bij deviceNet is elke deelnemer op het netwerk verantwoordelijk voor het managen van zijn eigen CAN-identiteiten. Dit betekent, dat bij uitbreiding van een netwerk, de nieuwe toegevoegde controller, zichzelf kenbaar maakt en zoekt naar identiteiten voor communicatie. Evenals bij CANopen is er bij DeviceNat ook weer sprake van toestelprofielen. Hierin staat het object volledig beschreven met klassen, instanties en attributen.
____________________________________________________________________________________ 46
Ryheul Kristof
CAN EDI Diagnostic Tool
4.11.1.4 J1939
J1939 gebruikt het CAN protocol die elke controller toelaat om berichten te versturen over een netwerk wanneer de bus niet bezig is. Elk bericht bevat een identiteit welke de bericht prioriteit beschrijft, wie hem zend, en welke data het bericht bevat. Botsingen worden vermeden door het arbitrage proces die voorkomt tijdens het verzenden van de identiteit (CSMA/CA). Dit laat toe om berichten met een hoge prioriteit door te laten met een kleine vertraging. J1939 bestaat uit verschillende delen gebaseerd op het ISO OSI model. Het OSI model definieert zeven communicatie lagen die elk een andere functie hebben. De fysieke laag beschrijft de elektrische interface naar de media. De datalink laag beschrijft de protocol regels voor het aanmaken van berichten, toegang tot de bus en detecteren van transmissie fouten. De applicatie laag bevat de specifieke data uit elk verzonden en ontvangen bericht. Meer informatie over deze standaard vind je bij hoofdstuk 5. 4.11.1.5 OSEK
De personenwagen is een embedded omgeving waarin men zich niet druk zal maken over een standaard protocol voor CAN. Toch is er hier wel sprake van enige standaardisatie onder druk van de overheden. Een van de belangrijke Europese normen die hierdoor is ontstaan is OSEK. Dit is eigenlijk een normering van de gebruikte besturingssystemen voor de elektronica in de auto. Op datalink niveau is CAN één van de opties om te communiceren. Hoewel je hier niet echt kan spreken over een applicatielaag op CAN, geeft het wel een eerste aanzet tot eventuele verdere standaardisatie in deze sector. 4.11.1.6 SDS
Dit standaard protocol is ontwikkeld door Honeywell. Deze firma voert ook zelf het beheer over dit protocol en daarom is het misschien minder open dan CANopen en DeviceNet. Er zijn overigens wel een groot aantal andere leveranciers, die het protocol ondersteunen met hun controllers. De controllers die op een SDS netwerk aangesloten worden zijn meestal sensoren of eenvoudige I/O modules. Er moet dan ook altijd een master in het netwerk zijn. Dit kan een PC of PLC zijn. Er zijn twee soorten berichten. De statusveranderingen en berichten waarmee je andere informatie uit een sensor of I/O-module kan opvragen of invoeren. Het protocol is duidelijk geoptimaliseerd voor een sensor-/actuatorbus en vindt zijn toepassingen vooral in grotere systemen, waar sensoren als foto-cellen en benaderingsschakelaars worden toegepast.
____________________________________________________________________________________ 47
Ryheul Kristof
CAN EDI Diagnostic Tool
5. Theoretische & bedrijfsspecifieke kennis 5.1 Recommended Practice RP1210A
5.1.1 Introductie
Dit document beschrijft een gestandaardiseerde interface voor PC naar ‘on-vehicle’ datalink communicatie onder Microsoft Windows. (TMC’s RP1210 Windows Communication Application Program Interface). 5.1.1.1 Doelstelling en toepassingsgebied
Deze RP vestigt een standaard tussen de fysische datalink laag (J1708, J1587, J1922, CAN, J1939 of J1850) en de Windows software applicatie voor de PC. Deze RP is verenigbaar met de RP1208 (PC Service Tool Hardware Selection Guidelines). 5.1.1.2 Waargenomen behoeften
Doorzichtig maken van hardware adapters voor de software ontwikkelaar. Geen enkele interface moet gekoppeld worden aan fabrikant specifieke methodes of hardware configuraties. Hardware verschillen van merkgebonden producten toelaten terwijl de software onveranderd blijft tussen de verschillende hardware ontwerpers. Ondersteuning van SAE J1708, SAE CAN/J1939, en SAE J1850 netwerk protocollen.
5.1.1.3 Potentiële communicatie software
Een grote variatie aan hardware toestellen kan gebruikt worden om een PC aan te sluiten op de datalink laag. In theorie kunnen deze interfaces gelijktijdig communiceren. Enkele voorbeelden: • • • • •
Een PDA aangesloten op de RS232 poort van een PC en de datalink laag. Een RS485 naar RS232 omvormer aangesloten op een PC en de datalink laag. Een PCMCIA adapter aangesloten op de PC en de datalink laag. Een PC interfacekaart aangesloten op de PC en de datalink laag. Een hardware toestel aangesloten op de PC en de datalink laag.
____________________________________________________________________________________ 48
Ryheul Kristof
CAN EDI Diagnostic Tool
Fig. 23 Architectural overview
5.1.2 Functionele specificaties 5.1.2.1 Meerdere cliënten
De API ondersteunt een minimum van 16 cliënten en een maximum van 128 cliënten. 5.1.2.2 Verzend en ontvangst buffer
Er is ondersteuning voor zowel synchrone als asynchrone communicatie. 5.1.2.3 Initialisatie en reset
In de applicatie is het mogelijk om de hardware te initialiseren en te resetten via API gebaseerde functies. 5.1.2.4 Timestamp van berichten
Omdat ontvangen berichten van de CAN bus gebufferd worden moet de tijd van ontvangst in elk bericht geplaatst worden. Dit om dubbelzinnigheid van berichten tegen te gaan, en de volgorde van de ontvangen berichten te behouden. De timestamp bestaat uit vier bytes en is in Big Endian of Motorola formaat genoteerd.
____________________________________________________________________________________ 49
Ryheul Kristof
CAN EDI Diagnostic Tool
5.1.2.5 Bericht filtering
De API ondersteunt berichtfiltering. Dit gebeurt gewoonlijk door het laagste interface niveau. Een implementatie van deze API zal enkel de berichten in zijn filter specificaties aanbieden aan een cliënt. Commando nummers 4, 5 en 7 zijn gereserveerd om deze filters in te stellen. Commando nummers 3, 17 en 18 zijn gereserveerd voor extra filter mogelijkheden. 5.1.3 High-level ontwerp
Een high-level ontwerp beschrijving van TMC’s RP1210 communicatie API is geïmplementeerd als een Windows DLL. Het hoofddoel van deze DLL, die verschillende fabrikant specifieke implementaties bevat is om veralgemeende interfaces tussen hardware specifieke besturing en applicaties werkende onder Microsoft Windows te verstrekken. Elke fabrikantimplementatie moet ingebouwde interfaces hebben met onderliggende fysieke lagen, ondersteund door deze fabrikant. Informatie over de DLL van de fabrikant als ook de protocollen en toestellen, ondersteund in elke implementatie, kan gevonden worden in INI bestanden. Zie 5.1.6 INI file format.
Fig. 24 Dataflow diagram voor Windows
____________________________________________________________________________________ 50
Ryheul Kristof
CAN EDI Diagnostic Tool
5.1.4 RP1210 API vereiste functies
Beschrijving van de vereiste functies: Voor alle vermelde foutcodes kan je kijken in tabel 5.1. 5.1.4.1 RP1210_ClientConnnect
Deze functie wordt opgeroepen door de applicatie die connectie zoekt met een DLL die correspondeert met de implementatie van deze API. In de API DLL zal de functie cliënt data structuren toewijzen en initialiseren. De functie laadt, initialiseert of activeert gelijk welke toestel sturing om te communiceren met de hardware. Als de connectie gelukt is retourneert de functie een unieke identiteit die correspondeert met de ID van het cliënt programma. De normale connectie is in Converted Mode. In Converted Mode kunnen meerdere cliënten connectie maken. Protocolnamen gebruikt in cliënt connecties Protocol String
J1708 J1850 J1939 CAN
Protocol Description
SAE J1708 network protocol SAE J1850 network protocol SAE J1939 network protocol CAN network protocol
Opmerkingen
Voor een applicatie die toekomstige transacties wil uitvoeren met de API DLL moet de applicatie eerst een succesvolle connectie hebben. In andere woorden moet de applicatie eerst een succesvolle terugkeerwaarde krijgen die lager is dan 128 voordat deze andere commando’s aanroept. In een applicatie wordt deze functie eerst opgeroepen voordat de applicatie in een bericht verwerkingscyclus terecht komt. 5.1.4.2 RP1210_ClientDisconnect
Deze functie wordt opgeroepen door de applicatie die de connectie wil verbreken met een DLL die correspondeert met de implementatie van deze API. Intern in de DLL wordt alle cliënt data verwijderd, alle actieve filters die bij de applicatie behoren worden afgezet. Als de laatst geconnecteerde cliënt deze functie aanroept zal de DLL de apparaatbesturing die communiceerde met de hardware deactiveren. Opmerkingen
Deze functie kan enkel aangeroepen worden nadat er succesvol een connectie werd gelegd met de API DLL. De parameter die als argument wordt meegegeven is de identiteit van het geconnecteerde toestel waarvan de connectie moet afgezet worden. Deze functie wordt typisch aangeroepen wanneer de applicatie afgesloten wordt. Het is aan de programmeur om alle gemaakte threads die gebruik maken van de IO af te sluiten. ____________________________________________________________________________________ 51
Ryheul Kristof
CAN EDI Diagnostic Tool
5.1.4.3 RP1210_SendMessage
Deze functie wordt opgeroepen door de applicatie om berichten te versturen naar het geselecteerde toestel. Het bericht wordt geplaatst in een buffer en wordt uitgevoerd in de orde van ontvangst (FIFO principe). Opmerkingen
De constructie van de berichten van verschillende protocollen, ondersteund door deze API moeten overeenstemmen met de specificaties hieronder beschreven. J1939
Fig. 25 J1939 bericht formaat (zenden)
De J1939 standaard bestaat uit 5 velden: Parameter Group Number Bestaat uit 3 bytes in little endian of Intel formaat. •
•
•
•
•
How To Send/Priority Bestaat uit 1 byte waarvan bit 7 het transport type bepaalt voor het data veld als deze groter is dan 8 bytes. De laagste 3 bits bepalen de prioriteit van het bericht. Source Address Bestaat uit 1 byte en bevat het adres van het zendende toestel. Destination Address Bestaat uit 1 byte en bevat het adres van het toestel naar waar het bericht verstuurd moet worden. Data Bevat alle data elementen van het bericht en kan tot 1785 bytes bevatten.
____________________________________________________________________________________ 52
Ryheul Kristof
CAN EDI Diagnostic Tool
Aanmaken van pakketten en hermontage
Doordat een CAN data frame een data lengte heeft van 8 bytes worden grote berichten in kleinere pakketten gesneden met een data lengte van 7 bytes. Omdat de individuele pakketten die uit een groot bericht bestaan individueel geïdentificeerd moeten worden zodat zij opnieuw correct kunnen samen gebracht worden wordt de eerste byte van het data frame gedefinieerd als opeenvolgingsgetal van het pakket. De nummers die toegekend worden aan deze eerste byte liggen tussen 1 en 255 dus kunnen er maximum 255 pakketten na elkaar verstuurd worden. Dit geeft een totaal van (255 * 7 bytes/pakket) 1785 bytes, dit noemt men een “Jumbo” “Jumbo” CAN frame. CAN
De eerste byte van een CAN bericht geeft aan of het een standaard of een uitgebreid CAN bericht is. Als deze byte 0 is dan is het een standaard CAN bericht, in alle andere gevallen is het een uitgebreid CAN bericht. Gebaseerd op de vorige byte zijn de volgende bytes ofwel een twee-byte standaard CAN identiteit of een vier-byte uitgebreide CAN identiteit. Het laatste fragment bevat de data met een maximum lengte van 8 bytes.
Fig. 26 CAN bericht formaat (zenden)
5.1.4.4 RP1210_ReadMessage
Deze functie wordt opgeroepen door de applicatie om berichten te lezen die zich op de CAN bus bevinden via het geselecteerde toestel. De berichten wordt geplaatst in een buffer en worden uitgevoerd in de orde van ontvangst (FIFO principe). Opmerkingen
Deze functie kan aangeroepen worden op twee manieren. - Wanneer de inkomende bericht buffer van leeg naar niet leeg overgaat zal de API DLL een event plaatsen voor de aangewezen applicatie. Als resultaat op die gebeurtenis kan de applicatie in een lus de RP1210_ReadMessage functie aanroepen tot deze een nul retourneert. - De applicatie kan op discrete intervallen deze functie aanroepen om te kijken of er een bericht ontvangen werd.
_____________________________________ ____________________ ___________________________________ _____________________________________ _____________________________ __________ 53
Ryheul Kristof
CAN EDI Diagnostic Tool
In Windows 95 en Windows NT kan gebruik gemaakt worden van dezelfde methodes maar bij deze laatste kan de nBlockOnRead gezet worden zodat deze intern zelf wacht tot er een bericht ontvangen wordt. J1939
De J1939 standaard bestaat uit zeven velden. •
•
•
•
•
•
•
Time Stamp Bestaat uit 4 bytes en geeft aan wanneer het bericht ontvangen werd door de lage niveau interface. Dit veld wordt aan het hoofd van het pakket geplaatst door de lage niveau interface. Voor berichten groter dan 8 bytes bevat het tijdsveld de tijd wanneer het laatste pakket ontvangen werd. Echo Als het commando Set Echo Transmitted Messages de API geconfigureerd heeft om verzonden berichten te echoën zal het volgende veld het echo veld zijn. Dit veld bevat een één in het geval dat het bericht verzonden werd door de API, een nul indien het bericht niet werd verzonden via de applicatie. Als het commando Set Echo Transmitted Messages niet werd uitgevoerd zal het echo veld niet aanwezig zijn in het bericht. Parameter Group Number Bestaat uit 3 bytes in little endian of Intel formaat. How To Send/Priority Bestaat uit 1 byte waarvan bit 7 het transport type bepaalt voor het data veld als deze groter is dan 8 bytes. De laagste 3 bits bepalen de prioriteit van het bericht. ber icht. Source Address Bestaat uit 1 byte en bevat het adres van het zendende toestel. Destination Address Bestaat uit 1 byte en bevat het adres van het toestel naar waar het bericht verstuurd moet worden. Data Bevat alle data elementen van het bericht en kan tot 1785 bytes bevatten.
Fig. 27 J1939 bericht formaat (lezen)
_____________________________________ ____________________ ___________________________________ _____________________________________ _____________________________ __________ 54
Ryheul Kristof
CAN EDI Diagnostic Tool
CAN
De eerste vier bytes bevatten de tijd. Als het commando Set Echo Transmitted Messages de API geconfigureerd heeft om verzonden berichten te echoën zal het volgende veld het echo veld zijn. Dit veld bevat een één in het geval dat het bericht verzonden werd door de API, een nul indien het bericht niet werd verzonden via de applicatie. Als het commando Set Echo Transmitted Messages niet werd uitgevoerd zal het echo veld niet aanwezig zijn in het bericht. De volgende byte geeft aan of het een standaard of een uitgebreid CAN bericht is. Als deze byte 0 is dan is het een standaard CAN bericht, in alle andere gevallen is het een uitgebreid CAN bericht. Gebaseerd op de vorige byte zijn de volgende bytes ofwel een twee-byte standaard CAN identiteit of een vier-byte uitgebreide CAN identiteit. Het laatste fragment bevat de data met een maximum lengte van 8 bytes. Als het bericht correct ontvangen werd zal de terugkeerwaarde gelijk zijn aan de grootte van het bericht samengeteld met de vier tijd bytes, het bericht type en de CAN identiteit.
Fig. 28 CAN bericht formaat (lezen)
5.1.4.5 RP1210_SendCommand
Deze functie wordt opgeroepen door de applicatie om commando berichten te sturen naar het geselecteerde toestel. Het commando wordt typisch onderschept door het toestel en volgens het commando getal verwerkt. Deze methode wordt in het bijzonder gebruikt om filters te plaatsen voor verschillende protocollen op apparaat niveau. Gereserveerde commando getallen
TMC heeft enkele waarden voor de nCommandNumber gereserveerd om de overwogen vereiste functionaliteit te ondersteunen. RP1210_SendCommand RP1210_SendCommand
Reset Device Set All Filter Statest o Pass Set Message Filtering for J1939 Set Message Filtering for CAN Set Message Filtering for J1708 Generic Driver Command Set J1708 Mode Set Echo Transmitted Messages
Command Number
0 3 4 5 7 14 15 16
_____________________________________ ____________________ ___________________________________ _____________________________________ _____________________________ __________ 55
Ryheul Kristof
CAN EDI Diagnostic Tool
Set All Filter States to Discard Set Message Receive Protect J1939 Address
17 18 19
nComandNumber = 0 (Reset Device)
Dit commando laat de gebruiker toe om het fysische apparaat opnieuw in te stellen. Dit commando is enkel toegelaten als er maar één cliënt aangesloten is. Als er meerdere cliënten aangesloten zijn stuurt de functie een ERR_MULTIPLE_CLIENTS_CONNECTED fout terug. Na dit commando dient de cliënt opnieuw te connecteren door de functie RP1210_ClientConnect aan te roepen. nCommandNumber = 3 (Set All Filter States To Pass)
Dit commando zet alle filters uit, de API laat alle berichten toe die voor de applicatie bestemd zijn. nCommandNumber = 4 (Set Message Filtering for J1939)
De API kan bericht filters zetten of de lage niveau componenten aan zetten. Deze ondersteuning is nodig voor alle J1939 interface implementaties van de RP1210 API. Door meerdere malen deze functie aan te roepen worden de actieve filters uitgebreid. De lage niveau lagen zullen alle binnenkomende berichten verwerpen die niet overeenstemmen met de lijst gespecificeerd door dit commando.
Fig. 29 Filter parameter frame (command number 4 / J1939)
Byte 1 bepaalt welk veld er gebruikt dient te worden voor de filtering van een bericht. Name
FILTER_PGN FILTER_PRIORITY FILTER_SOURCE FILTER_DESTINATION
Value
1 2 4 8
Comments
Gebruik de PGN waarde voor filtering Gebruik de Prioriteit voor filtering Gebruik het bron adres voor filtering Gebruik het destinatie adres voor filtering
nCommandNumber = 5 (Set Message Filtering for CAN)
De API kan bericht filters zetten of de lage niveau componenten aan zetten. Deze ondersteuning is nodig voor alle CAN interface implementaties van de RP1210 API. Door meerdere malen deze functie aan te roepen worden de actieve filters uitgebreid. De lage niveau lagen zullen alle binnenkomende berichten verwerpen die niet overeenstemmen met de lijst gespecificeerd door dit commando. De filter bestaat uit drie delen. De eerste byte vertegenwoordigt voor welk CAN formaat standaard of uitgebreid een filter gezet wordt. Nul staat voor het filteren van een standaard ____________________________________________________________________________________ 56
Ryheul Kristof
CAN EDI Diagnostic Tool
CAN bericht en een één staat voor het filteren van een uitgebreid CAN bericht. De vier volgende bytes representeren de mask. De mask geeft weer welke bits in de header moeten overeenstemmen. Een één betekent dat de waarde van de bit belangrijk is een nul betekent dat de waarde van de bit niet belangrijk is. De laatste 4 bytes representeren de header. De header geeft weer welke waarde nodig is voor elke belangrijke bit.
Fig. 30 CAN filter frame
5.1.4.6 RP1210_ReadVersion
Deze functie wordt opgeroepen door de applicatie om de versie te lezen van de API DLL. Opmerkingen
Deze functie is enkel voor informatieve doeleinden. 5.1.4.7 RP1210_GetErrorMsg
Opmerkingen
De terugkeerwaarde is afhankelijk in welke orde de functie opgeroepen wordt. De terug gestuurde string kan niet langer zijn dan 80 bytes. 5.1.4.8 RP1210_GetHardwareStatus
Deze functie wordt opgeroepen door de applicatie om de hardware interface status te bekijken en of het apparaat fysisch aangesloten is of niet. 5.1.5 Return code equivalencies
Description
Return Code
ERR_ADDRESS_LOST
153
ERR_CLIENT_ALREADY_CONNECTED
130
ERR_CLIENT_DISCONNECTED
148
ERR_COMMAND_NOT_ALLOWED
143
ERR_CONNECT_NOT_ALLOWED
149
ERR_DEVICE_IN_USE
135
ERR_DLL_NOT_INITIALIZED
128
ERR_HARDWARE_NOT_RESPONDING
142
____________________________________________________________________________________ 57
Ryheul Kristof
CAN EDI Diagnostic Tool
5.1.6 INI file format 5.1.6.1 Bestandsformaat van het RP121032.INI bestand
Elke fabrikant mag zijn eigen implementatie van de RP1210 API maken. Elke PC kan een aantal DLL’s met namen zoals VENDORX.DLL, VENDORX32.DLL, VENDORY.DLL of VENDORY32.DLL hebben. Deze DLL’s zijn implementaties van de RP1210 API standaard. Natuurlijk weet de applicatie niet welke DLL aanwezig is, daarom zou hij de mogelijkheid moeten hebben om naar een vaste bron te gaan om te kijken welke DLL’s aanwezig zijn. Het .INI bestand is te vinden in de Windows directory. De vaste bron is het RP121032.INI bestand met een minimaal formaat zoals hieronder: [ RP1210Suppor t ] API I mpl ement at i ons =[ s t r i ng] , [ s t r i ng] , [ s t r i ng] , …, [ s t r i ng]
De strings bevatten de naam van het DLL-INI koppel geassocieerd met een bepaalde fabrikant implementatie. Voorbeeld:
[ RP1210Suppor t ] API I mpl ement at i ons=is121032 , SOFTRP32
In het voorbeeld kun je zien dat er twee fabrikant implementaties aanwezig zijn, één van ifak system en één van softing. Nu weet je dat er een “is121032.INI”, een “is121032.DLL”, een “SOFTRP32.INI” en een “SOFTRP32.DLL” bestaat en mogelijk aanwezig is. Dit moet dan gecontroleerd worden in de software. Het installatie programma van een fabrikant zou deze stappen moeten ondernemen: 1. Controleren of een RP121032.INI bestand aanwezig is in de Windows directory. 2. Als deze niet bestaat moet deze gecreëerd worden. Als deze toch bestaat kan men met de functie GetPrivateProfileString onderzoeken als de fabrikant al bestaat in de lijst. Indien deze niet bestaat gewoon de fabrikant string achter de laatst ingelezen string plakken. 3. Controleren of de fabrikant INI bestand aanwezig is in de Windows directory. 4. Als deze niet bestaat moet deze aangemaakt worden. Doordat de RP1210.INI file gebruikt wordt door alle fabrikanten, moet men opletten dit bestand niet corrupt te maken door het gebruik in een applicatie. 5.1.6.2 Bestandsformaat van het door een fabrikant gemaakte INI bestand
Elke fabrikant die een API DLL implementeert van de RP1210 API zal ook een bijkomend INI bestand moeten maken. Het bestand bevat informatie over de hardware toestellen en de door de fabrikant gebruikte protocollen en dient telkens aangepast te worden wanneer een nieuw toestel wordt aangesloten op de gebruikte PC. Applicaties zullen dit bestand inlezen voor het verkrijgen van de connectie parameters. Het bestand mag ook informatie bevatten over hoe men de fabrikant kan contacteren.
____________________________________________________________________________________ 58
Ryheul Kristof
CAN EDI Diagnostic Tool
Het bestandsformaat:
[VendorInformation] Name=[string] Address1=[string] Address2=[string] City=[string] State=[string] Country=[string] Postal=[string] Telephone=[string] Fax=[string] MessageString=[string] ErrorString=[string] TimeStampWeight=[number ] Devices=[d1], [d2], … , [dn]
Protocols=[p1], [p2], … , [pn]
[DeviceInformationd1] DeviceID=[number ] DeviceDescription=[string,p]
De naam van de fabrikant Eerste adres van de fabrikant (optioneel) Tweede adres van de fabrikant (optioneel) Gemeente/stad waar de fabrikant gelegen is Staat waar de fabrikant gelegen is Land waar de fabrikant gelegen is Postcode van de fabrikant Telefoonnummer voor support Faxnummer van de fabrikant Een unieke bericht string voor de DLL Een unieke error string voor de DLL Vertegenwoordigt het gewicht, per bit, in microseconden van de tijd De d’s representeren de toestel ID’s voor de support door de fabrikant, elke d is een nummer tussen 0 en 255. De toestellen worden gescheiden door komma’s zonder spaties er tussen. De p’s representeren de protocollen ondersteunt door de fabrikant, elke protocol ID is een nummer tussen 0 en 255. De protocollen worden gescheiden door komma’s zonder spaties er tussen. Nummer tussen 0 en 255 (number == d1) De string is een beschrijving voor het toestel, dit is meestal de naam van het product. P representeert de poort waarop het toestel aangesloten is. Er kunnen verschillende waarde aan toegekend worden zoals: • • • • • • • •
COM1 COM2 COMN LPT1 LPT2 LPTN PCMCIA USB
DeviceName=[string] DeviceParameters=[string]
Toestel naam staat meestal vermeld op het toestel zelf. Fabrikant specifieke parameters.
[DeviceInformationd2] DeviceID=[number ] DeviceDescription=[string,p] DeviceName=[string] DeviceParameters=[string] .
Idem als voor d1
____________________________________________________________________________________ 59
Ryheul Kristof
. . [DeviceInformationdn] DeviceID=[number ] DeviceDescription=[string,p] DeviceName=[string] DeviceParameters=[string] [ProtocolInformationp1] ProtocolDescription=[string] ProtocolString=[string] ProtocolParameters=[string] Devices=[k1, k2, … , kn] [ProtocolInformationp2] ProtocolDescription=[string] ProtocolString=[string] ProtocolParameters=[string] Devices=[k1, k2, … , kn] . . . [ProtocolInformationpn] ProtocolDescription=[string] ProtocolString=[string] ProtocolParameters=[string] Devices=[k1, k2, … , kn]
CAN EDI Diagnostic Tool
Idem als voor d1
De string is een beschrijving voor het protocol De protocol string is deze die verwacht wordt bij het gebruik van de RP1210_ClientConnect functie. Fabrikant specifieke parameters. De lijst met toestelen die gebruik maken van dit protocol. Idem als voor p1
Idem als voor p1
Voorbeeld implementatie van INI bestand ifak system
[Vendorinformation] Name=ifak system GmbH MessageString=ISCANRP1210MESSAGE ErrorString=ISCANRP1210ERRMESSAGE TimestampWeight=1 Devices=0 Protocols=0,1 [DeviceInformation0] DeviceID=0 DeviceDescription=isCAN USB Adapter (90010001) DeviceName=isCAN USB Adapter (90010001) [ProtocolInformation0] ProtocolDescription=J1939 Link Layer Protocol ProtocolString=J1939 Devices=0
____________________________________________________________________________________ 60
Ryheul Kristof
CAN EDI Diagnostic Tool
[ProtocolInformation1] ProtocolDescription=Generic CAN ProtocolString=CAN Devices=0 Voorbeeld implementatie van INI bestand softing
[VendorInformation] Name=Noregon Systems Address1=500 Shepherd Street Address2=Suite 300 City=Winston-Salem State=NC Country=USA Postal=27103 Telephone=336-768-4337 Fax=336-760-2540 MessageString=RP1210_READ_NOTIFY_JD ErrorString=RP1210_SEND_NOTIFY_JD TimeStampWeight=1 Devices=1,2,3,4,7 Protocols=1,2 [ProtocolInformation1] ProtocolString=J1939 ProtocolDescription=J1939 ProtocolParams= Devices=1,2,3,4,7 [ProtocolInformation2] ProtocolString=CAN ProtocolDescription=CAN ProtocolParams= Devices=1,2,3,4,7 [DeviceInformation1] DeviceID=1 DeviceName=Softing GmbH CANcard PCMCIA DeviceDescription=Softing CANcard Transmit on Channel 1 DeviceParams= [DeviceInformation2] DeviceID=2 DeviceName=Softing GmbH CANcard PCMCIA DeviceDescription=Softing CANcard Transmit on Channel 2 DeviceParams= [DeviceInformation3] DeviceID=3 ____________________________________________________________________________________ 61
Ryheul Kristof
CAN EDI Diagnostic Tool
DeviceName=Softing GmbH AC2-PCI DeviceDescription=Softing AC2-PCI Transmit on Channel 1 DeviceParams= [DeviceInformation4] DeviceID=4 DeviceName=Softing GmbH AC2-PCI DeviceDescription=Softing AC2-PCI Transmit on Channel 2 DeviceParams= [DeviceInformation7] DeviceID=7 DeviceName=Softing GmbH CANusb Adapter CD-L2 DeviceDescription=Softing CANusb Adapter DeviceParams= 5.1.7 Bekijken van de DLL’s
Met dependency walker van Microsoft Corporation kun je bekijken welke functies er in een DLL gebruikt kunnen worden. Deze functies kunnen dan gebruikt worden in de applicatie om bijvoorbeeld een bericht te lezen of te versturen. Voorbeeld implementatie van DLL ifak system
Fig. 31 Depends DLL ifak system
____________________________________________________________________________________ 62
Ryheul Kristof
CAN EDI Diagnostic Tool
5.2User manual APC
5.2.1 Transmission controller (TCON) 5.2.1.1 Algemeen
De TCON APC brengt een nieuw niveau van technologie om alle powershift transmissies te dienen, waarbij minimaal een elektronische modulatie zonder enkele pedaal bediening en zonder rem door koppeling technologie. Het zorgt voor drivetrain protectie en snelheid- of laadsensor automatische verschuiving. 5.2.1.2 Externe interfaces
De APC is aangesloten aan de voertuig bedrading met een 48 polige Packard Metripack connector. De 48 polige connector bestaat uit een 30 en 18 polige component. Connector layout
Fig. 32 Connector layout APC (TCON) 5.2.1.3 Mens/Machine interface Shift lever
De hoofd interface met de bestuurder is de shift lever. Het laat de bestuurder toe de rij richting en de verschillende versnellingen te bedienen. De shift lever signaal uitgangen dienen als input voor de APC. De APC ondersteunt remote support via de CAN bus, dit is gedocumenteerd in de CAN messages APC214. Display
De display aan de voorkant van de APC bestaat uit: • • •
4 rode 7-segment LED cijfers 3 status LED’s (‘D’, ‘E’, ‘F’) 2 drukknoppen ‘M’ en ‘S’ voor display mode selectie.
De LED met het label ‘D’ is geel en wordt gebruikt om ‘Diagnostic modes’ aan te geven. De LED met het label ‘E’ is geel en wordt gebruikt om ‘Errors’ aan te geven. De LED met het label ‘F’ is rood en gaat aan wanneer de APC in de reset conditie komt door de bootstrap of ‘Fault’ mode.
____________________________________________________________________________________ 63
Ryheul Kristof
CAN EDI Diagnostic Tool
Na het opstarten komt de APC standaard in de laatste display mode geselecteerd wanneer de controller uitgeschakeld werd. Meestal zal dit de ‘gear position mode’ zijn. Er zijn 3 verschillende display groepen, de meest algemeen gebruikte laat het toe om te wisselen tussen ‘gear display’, ‘vehicle speed’ en ‘travelled distance’ display. 5.2.1.4 Operation modes • • • •
Normal driving Diagnostic mode Limp home mode Shutdown mode
5.2.1.5 Operating characteristics System
Operating temperature range Sealing Supply Voltage nominal min – max. Over voltage conditions Maximum continuous total load current @ 24V
-40°C to +80°C IP67 24V 18V-30V 5 min @ 48V 500ms @ 220V 2ms @ 300V 12 Amperes
On/Off inputs
Low input level High input level Minimum DC voltage level Maximum DC voltage level
< 0.8V > 2.3V -60V +60V
Analogue inputs
Internal pull up resistor (8V) Input voltage range Resolution Minimum voltage level Maximum voltage level
3 kOhm 0 to 5 V 10 bit -60V +60V
Speed sensor inputs
Sensor type Electrical interface Normal operating current Short circuit detect Open circuit detect Reverse polarity detect Fully protected
Inductive Unbalanced N/A Yes Yes N/A Yes
Magneto resistive Current sensing 7 / 14 mA Yes Yes Seen as short circuit Yes
____________________________________________________________________________________ 64
Ryheul Kristof
CAN EDI Diagnostic Tool
On/Off outputs
Maximum continuous load current Short circuit detect Open circuit detect Fully protected
1.5 Amperes Yes Yes Yes
Analogue outputs
Output current Resolution Short circuit detect Open circuit detect Fully protected
0mA – 1200mA 10 bit Yes Yes Yes
Communication interfaces
RS232
Bitrate Protocol Handshake
38400bps 8 bit 1 stop bit no parity xon/xoff SOH protocol
CAN
Bitrate Physical layer CAN compatibility SAE/J1939 Termination
Programmable up to 1Mbps ISO 11898 REV2.0B Yes (@ 250kbps) External 120 Ohm
____________________________________________________________________________________ 65
Ryheul Kristof
CAN EDI Diagnostic Tool
5.2.2 Functies • • • • • • •
Direction change protection Downshift protection Overspeeding control Automatic shifting Automatic shifting in neutral Declutch Engine control
5.2.3 APC200 ECM/ECI CAN EDI protocol description
Zie 5.4 CAN messages APC214 5.2.4 Fout detectie & afhandeling 5.2.4.1 Algemeen
Het veiligheidsconcept is gebaseerd op de systeem veiligheidsclassificatie volgens de ISO 1508 standaard en op de definitie van de ‘fail safe state’ voor powershift transmissie gebruikt in bewegend materiaal. 5.2.4.2 APC implementatie
De APC houdt de ingangen en uitgangen onder controle om interne of externe fouten te detecteren. Door hardware limieten is het niet altijd mogelijk om fouten te detecteren. 5.2.4.3 Considered faults • • • • • • • • •
Over voltage Under voltage Internal faults Program out of control Single faults on outputs Incorrect input patterns Intermittent power loss Speed sensor faults Analogue sensor failure
____________________________________________________________________________________ 66
Ryheul Kristof
CAN EDI Diagnostic Tool
5.3 SAE J1939 Recommended Practice
J1939 gebruikt het CAN protocol die elke controller toelaat om berichten te versturen over een netwerk wanneer de bus niet bezig is. Elk bericht bevat een identiteit welke de bericht prioriteit beschrijft, wie hem zend, en welke data het bericht bevat. Botsingen worden vermeden door het arbitrage proces die voorkomt tijdens het verzenden van de identiteit (CSMA/CA). Dit laat toe om berichten met een hoge prioriteit door te laten met een kleine vertraging. J1939 bestaat uit verschillende delen gebaseerd op het ISO OSI model. Het OSI model definieert zeven communicatie lagen die elk een andere functie hebben. De fysieke laag beschrijft de elektrische interface naar de media. De datalink laag beschrijft de protocol regels voor het aanmaken van berichten, toegang tot de bus en detecteren van transmissie fouten. De applicatie laag bevat de specifieke data uit elk verzonden en ontvangen bericht. 5.3.1 Standaarden
De SAE J1939 familie van netwerken volgt de 7 lagen van de OSI netwerk architectuur met verschillende documenten voor elke laag die gebruikt word (niet alle 7 lagen worden gebruikt). Standaard
J1939 J1939/1 J1939/11 J1939/13 J1939/15 J1939/21 J1939/31 J1939/71 J1939/73 J1939/74 J1939/75 J1939/81
Beschrijving Recommended Practice for a Serial Control and Communications Vehicle Network Recommended Practice for Control and Communications Network for On-Highway Equipment Physical Layer, 250K bits/s, Twisted Shielded Pair Off-Board Diagnostic Connector Reduced Physical Layer, 250K bits/sec, Un-Shielded Twisted Pair (UTP) DATA LINK LAYER Network Layer Vehicle Application Layer Application Layer -Diagnostics Application Layer - Configurable Messaging Application Layer - Generator Sets and Industrial NETWORK MANAGEMENT
OSI laag
Applicatie laag Presentatie laag Session laag Transport laag Netwerk laag Datalink laag Fysieke laag
Standaard
SAE J1939/71 SAE J1939/73 SAE J1939/75
SAE J1939/21 SAE J1939/31 SAE J1939/21 SAE J1939/11 SAE J1939/13 SAE J1939/15
____________________________________________________________________________________ 67
Ryheul Kristof
CAN EDI Diagnostic Tool
5.3.2 J1939
De SAE J1939 profiel reeksen is gebaseerd op de CAN datalink laag, gebruikmakend van een uitgebreid frame formaat (29-bit identiteiten). J1939 is een ‘high speed’ communicatie netwerk dat ontworpen is om real-time gesloten functies van de lijncontrole tussen ECU’s te steunen die fysisch door het voertuig kan worden verdeeld.
Fig. 33 J1939 29 bit identifier
5.3.3J1939/1
De netwerken mogen bestaan uit een enkele fysieke laag of meerdere subnetwerken aangesloten op deze laag. De op de figuur getoonde toestellen zijn informatief, de echt gebruikte toestellen kunnen verschillen van voertuig tot voertuig.
Fig. 34 Een mogelijke implementatie van een vrachtwagen op de weg (J1939/1).
Fig. 35 Enkelvoudig netwerk (J1939/1).
____________________________________________________________________________________ 68
Ryheul Kristof
CAN EDI Diagnostic Tool
Fig. 36 Meervoudig netwerk (J1939/1).
Het aantal subnetwerken en de selectie van apparaten die aan elkaar worden gesloten wordt overgelaten aan de voertuigfabrikant. Het gebruik van SAE J1939 voor om het even welk gesleept voertuig zal automatisch gebruik maken van minstens twee subnetwerken, één voor de trekker en één voor het gesleepte voertuig. De brug tussen subnetwerken kunnen berichten filteren zodat enkel de berichten die van belang zijn toegestaan worden om over de brug te gaan. 5.3.4 J1939/11 5.3.4.1 Beschrijving fysiek netwerk •
•
•
•
Fysieke laag De fysieke laag is een realisatie van een elektrische connectie van een aantal ECU’s op een netwerk. Het maximum aantal ECU’s staat vast op 30. Fysieke media Shielded twisted pair, deze twee draden hebben een karakteristieke impedantie van 120 Ohm en zijn symmetrisch aangestuurd om de elektrische stroom te respecteren. De benoeming van de individuele draden zijn CAN_H en CAN_L. De overeenkomstige pinnen van de ECU’s worden ook CAN_H en CAN_L genoemd. De derde connectie voor de beëindiging van het schild wordt aangeduid met CAN_SHLD. Voltage De voltages van CAN_H en CAN_L ten opzichte van de massa van elke individuele ECU zijn VCAN_H en VCAN_L. Het verschil tussen VCAN_H en VCAN_L wordt gedefinieerd door: Vdiff = VCAN_H VCAN_L Bus niveaus De bus lijnen kunnen één van de twee logische niveaus hebben, recessief of dominant. In het recessieve niveau, worden VCAN_H en VCAN_L bevestigd op een gemiddeld voltageniveau. Vdiff is ongeveer nul op een geëindigde bus. Dit niveau wordt verstuurd
____________________________________________________________________________________ 69
Ryheul Kristof
CAN EDI Diagnostic Tool
tijdens dat de bus niets doet (idle). Het dominante niveau wordt vertegenwoordigd door een differentieel spanning groter dan een minimumdrempel. •
Bus niveau’s tijdens arbitrage Een dominante en recessieve bit dat aan de buslijn tijdens een bepaalde bittijd door twee verschillende ECU’s wordt opgelegd zal in een dominante bit resulteren.
Fig. 37 Representatie fysieke bit •
Bus terminatie De buslijn is op elk einde elektrisch afgesloten met een weerstand beschreven door RL. RL wordt niet geplaatst in een ECU omdat de bus de beëindiging zou verliezen als één van deze ECU’s weg zou zijn.
Fig. 38 Functionaliteit fysieke laag ____________________________________________________________________________________ 70
Ryheul Kristof
•
CAN EDI Diagnostic Tool
Bittijd De bittijd wordt gedefinieerd als de nodige tijd voor één bit. Bus management functies uitgevoerd in de bittijd, zoals ECU synchronisatie, compensatie van netwerk transmissie vertraging worden gedefinieerd door de programmeerbare bittijd logica van de CAN protocol IC.
Fig. 39 Samenstelling van een bit SYNC_SEG dit stuk wordt gebruikt om de verschillende ECU’s op de bus te synchroniseren.
Een rand (edge) wordt verwacht in dit bit segment. PROP_SEG dit stuk wordt gebruikt om de fysische vertragingstijden van het netwerk te
compenseren. Deze vertragingstijden worden veroorzaakt door de propagatietijd van de buslijn en de interne vertragingstijd van de ECU’s. PHASE_SEG1, PHASE_SEG2 deze buffer segmenten worden gebruikt om fase fouten te
compenseren en kunnen langer of korter gemaakt worden door het opnieuw synchroniseren. Sample Point is het tijdspunt waar het bus niveau gelezen en geïnterpreteerd wordt als de waarde van de respectievelijke bit. De locatie is aan het einde van PHASE_SEG1. 5.3.4.2 Topologie
Fig. 40 Topologie van het bedradingsnetwerk (J1939/11)
____________________________________________________________________________________ 71
Ryheul Kristof
CAN EDI Diagnostic Tool
5.3.5J1939/13
Dit deel beschrijft de ‘Off-Board Diagnostic’ connector gebruikt op het voertuig om toegang te krijgen tot de voertuig communicatie bus. De connector zal binnen de cabine in een plaats worden opgezet die gemakkelijk toegankelijk is volgens de volgende richtlijnen: •
•
•
•
Voor op de weg komende vrachtwagens zal de connector geplaatst worden aan de kant van de bestuurder als dit mogelijk is. Toegankelijk vanaf de grond naast de cabine. Voor bussen zal de connector geplaatst worden in het bereik van de zetel van de bestuurder. Voor bussen met een achtermotor kan de connector gemonteerd worden in het compartiment van de motor die toegang vanaf de grond mogelijk maakt. Voor bouw en landbouw materiaal is het aangeraden dat de connector geplaatst wordt achter de zetel van de bestuurder of onder het dashboard aan de bestuurder zijn knieen. Deze connector moet gelabeld worden als de kenmerkende connector. De lengte van de kabel voor de kenmerkende connector wordt beschreven in het document J1939/11.
5.3.6 J1939/15
Deze standaard is net zoals de J1939/11 standaard een beschrijving van een fysiek netwerk. De meest beschreven onderwerpen zijn identiek aan deze standaard. 5.3.6.1 Beschrijving fysiek netwerk •
•
Bus terminatie De buslijn is op elk einde elektrisch afgesloten met een weerstand beschreven door RL. RL wordt niet geplaatst in een ECU omdat de bus de beëindiging zou verliezen als één van deze ECU’s weg zou zijn. De J1939/15 definieert Type I en Type II ECU’s. Type I ECU’s bevatten geen bus afsluitingsweerstand RL. Type II ECU’s bevatten een bus afsluitingsweerstand en zal geplaatst worden op één of beide uiteinden van een J1939/15 netwerk. Fysieke media
Fig. 41 Un-Shielded Twisted Pair CAN kabel
De bus bestaat uit een CAN_H en CAN_L geleider. De CAN_H geleider moet geel zijn en de CAN_L geleider groen. ____________________________________________________________________________________ 72
Ryheul Kristof
CAN EDI Diagnostic Tool
5.3.6.2 Topologie
Fig. 42 Topologie van het bedradingsnetwerk ( Type I ECU’s onl y)
Fig. 43 Topologie van het bedradingsnetwerk (één Type II ECU’s geïnstalleerd )
Fig. 44 Topologie van het bedradingsnetwerk ( twee Type II ECU’s geïnstall eerd )
5.3.7J1939/21
De datalink laag zorgt voor een betrouwbaar transport van data over een fysieke link. Dit bestaat uit het zenden van de CAN Data Frame met de nodige synchronisatie, sequentie controle, foutcontrole, en flow control. De flow control wordt bereikt door een samenhangend message/frame formaat. 5.3.7.1 Message/Frame format
Het bericht formaat stemt overeen met de CAN vereisten. De CAN specificaties doorheen dit deel zijn besproken in ‘ CAN Specification 2.0 Part B’. Als er verschillen zijn tussen de CAN specificaties en deze standaard, dan moet de standaard gevolgd worden. De CAN specificaties zeggen dat toestel adressen niet gebruikt worden. Dit is juist voor de sommige CAN applicaties, maar is niet juist voor de SAE J1939 standaard. De definitie van een SAE J1939 netwerk vereist dat toestel adressen gebruikt worden om te vermijden dat meerdere toestellen dezelfde identiteit gebruiken. ____________________________________________________________________________________ 73
Ryheul Kristof
CAN EDI Diagnostic Tool
CAN 2.0B bevat specificaties voor twee bericht formaten, de standaard en uitgebreide frames. CAN 2.0B impliceert dat berichten van beide formaten op één netwerk mogelijk zijn door het gebruik van bepaalde bit coderingen die het formaat kunnen herkennen. SAE J1939 heeft ook aanpassingen voor beide CAN data formaten. De J1939 standaard definieert enkel de volledige strategie voor gestandaardiseerde communicatie die het uitgebreide formaat gebruiken. Alle standaard frames zijn enkel voor merkgebonden gebruik die de regels volgen beschreven in deze standaard. Daarom moeten alle toestellen de uitgebreide frames gebruiken. Standaard frame toestellen reageren niet op netwerk management berichten en hebben niet de mogelijkheid om de strategie voor gestandaardiseerde berichten te ondersteunen. CAN standaard bericht kaders hebben een identiteit van 11 bits in het arbitrage veld. CAN uitgebreide bericht kaders hebben een identiteit van 29 bits in het arbitrage veld.
Fig. 45 CAN Standard Data Frame
Fig. 46 CAN Extended Data Frame SAE J1939 Message Frame Format (“CAN 2.0B” Extended Frame Format)
Het CAN uitgebreide bericht formaat omvat één PDU. Een PDU bestaat uit zeven voorgedefinieerde velden. Deze zijn achtereenvolgens prioriteit, gereserveerd, data page, PDU formaat, PDU specifiek (destinatie adres of groep uitbreiding), bron adres en data veld. Zij worden dan verpakt in één of meer CAN data kaders en verzonden over de fysieke media naar andere netwerkapparaten. Doorheen deze standaard is byte 1 MSB (bit 8) en byte 8 LSB (bit 1). SAE J1939 ondersteunt 3 lagen van het OSI model. ____________________________________________________________________________________ 74
Ryheul Kristof
CAN EDI Diagnostic Tool
Fig. 47 OSI model ondersteunt door SAE J1939 (J1939/21) Parameter Group Number (PGN)
Wanneer het nodig is om een PG te plaatsen in een CAN data frame zal deze een lengte hebben van 24 bit. De 24 bit waarde wordt ‘least significant byte’ eerst verstuurd. De PGN is een 24 bit waarde die de volgende componenten bevat: 6 bits nul, gereserveerde bit, data page bit, ‘ PDU format ’ veld (8 bit) en een ‘ Group Extensio’ veld (8 bit). De procedure voor de bit velden is als volgt: • •
•
de 6 MSB van de PGN zijn nul de gereserveerde bit, de data page bit en de ‘ PDU format’ veld worden gekopieerd in de volgende 18 bits. als de PF waarde kleiner is dan 240 ( F016) dan wordt de ‘ least significant byte’ van de PGN op nul gezet. Anders krijgt deze de waarde van de ‘ Group Extension’ veld.
In de bijlage vind je een tabel met de plaatsing van alle bits in een uitgebreid en standaard frame. 5.3.7.2 Protocol Data Unit
De toepassingen en/of de netwerklaag verstrekken informatie dat in een eenheid van protocolgegevens aangegeven is. De eenheid van protocolgegevens verstrekt een frame om de informatie te organiseren die heel belangrijk is om aan elk CAN data ontwerp toe te voegen die verzonden wordt. De SAE J1939 PDU bestaat uit zeven velden: • • • • •
Priority (P) Reserved (R) Data page (DP) PDU format (PF) PDU specific (PS)
____________________________________________________________________________________ 75
Ryheul Kristof
• •
CAN EDI Diagnostic Tool
Source address (SA) Data fields (DF)
Na het invullen van deze velden worden ze verpakt in één of meerdere CAN data frames en verzonden over de fysieke media naar een ander netwerkapparaat. Er is maar één PDU per CAN data frame. Sommige CAN data frame velden werden niet toegevoegd aan de PDU definitie omdat deze volledige beheerd worden door de CAN specificaties. Deze velden zijn ook onzichtbaar voor alle OSI lagen die hoger liggen dan de datalink laag. Ze bevatten de SOF, SRR, IDE, RTR, CRC, ACK en EOF velden.
Fig. 48 J1939 PDU formaat (J1939/21)
Fig. 49 PDU specificatie PDU1 & PDU2 (J1939/21) 5.3.7.3 Protocol Data Unit formaten
Fig. 50 J1939 PDU formaten (PDU1 & PDU2 J1939/21) ____________________________________________________________________________________ 76
Ryheul Kristof
CAN EDI Diagnostic Tool
PDU1 format
Fig. 51 J1939 PDU1 formaat (J1939/21)
Dit formaat laat het toe parameter groepen te versturen naar een specifieke of globale bestemming. Het PDU specifieke gebied bevat een destinatie adres. PDU1 formaat berichten kunnen gevraagd of ongevraagd verzonden worden. PDU1 formaat berichten worden bepaald door het PF veld. Wanneer de waarde van het PDU formaat tussen de 0 en 239 ligt is het een PDU1 formaat. (zie fig. 51) PDU2 format
Dit formaat kan slechts worden gebruikt om de parameter groepen als globale berichten versturen. PDU2 formaat berichten kunnen gevraagd of ongevraagd verzonden worden. Bij de selectie van een PDU2 formaat bericht wordt tegelijkertijd een PGN toegewezen, dit verhindert dat de PGN ooit aan een specifieke bestemming zou gekoppeld worden. PDU Specifiek (PS) bevat een uitbreiding van de groep. PDU2 formaat berichten worden bepaald door een PDU formaat waarde tussen 240 en 255. (zie fig. 52)
Fig. 52 J1939 PDU2 formaat (J1939/21) ____________________________________________________________________________________ 77
Ryheul Kristof
CAN EDI Diagnostic Tool
5.4CAN messages APC214
5.4.1 CVC_TO_TC_1: Remote Control Message
Central vehicle controller to transmission controller Message identifier: 1CFF20xx Repetition rate: 20 ms
(CAN 2.0B 29 bit identifier) DLC: 8
Bevat de volgende informatie: • • • • • • • •
Shift lever position (neutral, forward, reverse) Auto/manual shift Neutral lock Parking brake Throttle pedal position Brake pedal position Maximum speed Brake pressure
5.4.2 CVC_TO_TC_2: Setup Conversions
Central vehicle controller to transmission controller Message identifier: CFF21xx (CAN 2.0B 29 bit identifier) Repetition rate: once after powerup DLC: 8 Bevat de volgende informatie: • • • •
Axle ratio Tire size Empty vehicle weight Maximum engine speed
5.4.3 CVC_TO_TC_3: General Explanation
CVC_TO_TC_3 zijn berichten die aangevraagd worden voor het lezen en schrijven van data op een niet cyclische manier. De meeste data die bereikt kan worden via dit bericht zijn setup informatiegegevens die eigenlijk niet nodig zijn voor de werking van de machine, maar bepalen hoe de machine zal functioneren. 5.4.4 CVC_TO_TC_3: Data Request
Central vehicle controller to transmission controller Message identifier: 18FF22xx Repetition rate: as required
(CAN 2.0B 29 bit identifier) DLC: 8
Bevat de volgende informatie: • •
Controller serial number Controller part number
____________________________________________________________________________________ 78
Ryheul Kristof
• • • •
CAN EDI Diagnostic Tool
Input/output state Speed sensor rpm Traveled distance (reset able) Total traveled distance
5.4.5 CVC_TO_TC_3: Data Program
Central vehicle controller to transmission controller Message identifier: 18FF22xx Repetition rate: as required
(CAN 2.0B 29 bit identifier) DLC: 8
Bevat de volgende informatie: • •
Program type Information to program
5.4.6 CVC_TO_TC_3: Start Calibration
Central vehicle controller to transmission controller Message identifier: 18FF22xx Repetition rate: as required
(CAN 2.0B 29 bit identifier) DLC: 8
Bevat de volgende informatie: • •
Calibration type Calibration process
5.4.7 CVC_TO_TC_3: Reset Counters / Timers
Central vehicle controller to transmission controller Message identifier: 18FF22xx Repetition rate: as required
(CAN 2.0B 29 bit identifier) DLC: 8
Bevat de volgende informatie: • •
Reset type Reset process
5.4.8 CVC_TO_TC_3: APC214’s User Interface
Central vehicle controller to transmission controller Message identifier: 18FF22xx Repetition rate: as required
(CAN 2.0B 29 bit identifier) DLC: 8
Bevat de volgende informatie: • • •
User interface type 7 segment digit 1-4 Buttons and leds
____________________________________________________________________________________ 79
Ryheul Kristof
CAN EDI Diagnostic Tool
5.4.9 CVC_TO_TC_3: Display Mode Selection
Central vehicle controller to transmission controller Message identifier: 18FF22xx Repetition rate: as required
(CAN 2.0B 29 bit identifier) DLC: 8
Bevat de volgende informatie: • • • • • • •
Normal display mode Display test mode On/off input test mode Analogue input test mode Speed sensor test mode Output test mode Voltage test mode
5.4.10 CVC_TO_TC_3: Request Configuration Set Selection
Central vehicle controller to transmission controller Message identifier: 18FF22xx Repetition rate: as required
(CAN 2.0B 29 bit identifier) DLC: 8
Bevat de volgende informatie: • • •
Configuration set selection Configuration set process Configuration set index
5.4.11 TC_TO_CVC_1: Broadcasted Transmission Controller Info
Transmission controller to central vehicle controller Message identifier: 18FF2303 Repetition rate: 20 ms
(CAN 2.0B 29 bit identifier) DLC: 8
Bevat de volgende informatie: • • • • • •
Vehicle speed Transmission temperature Engine speed Auto/manual mode Warning light state Operating mode
5.4.12 TC_TO_CVC_2: Context Specific Reply – Data Request
Transmission controller to central vehicle controller Message identifier: 18FF2403 Repetition rate: on request
(CAN 2.0B 29 bit identifier) DLC: 8
____________________________________________________________________________________ 80
Ryheul Kristof
CAN EDI Diagnostic Tool
Bevat de volgende informatie: • •
Type of data (see data request) Information
5.4.13 TC_TO_CVC_2: Context Specific Reply – Calibration
Transmission controller to central vehicle controller Message identifier: 18FF2403 Repetition rate: 20 ms
(CAN 2.0B 29 bit identifier) DLC: 8
Bevat de volgende informatie: • •
Calibration type Information
5.4.14 TC_TO_CVC_3
Transmission controller to central vehicle controller Message identifier: 18FF26xx Repetition rate: on request
(CAN 2.0B 29 bit identifier) DLC: 8
Bevat de volgende informatie: • • • • •
Automatic/manual mode Warning light status Operation mode Brake pedal position Desired engine speed
5.5 Error codes & description
Fault code
Explanation
Controllers action
00.50
There is a problem related to the internal RAM There is a problem related to the system RAM
Controller reverts to “shut down” mode. Force neutral 0 Controller reverts to “shut down” mode. Force neutral 0 Controller reverts to “shut down” mode. Force neutral 0 Controller reverts to “shut down” mode. Force neutral 0 Controller reverts to “shut down” mode. Force neutral 0 Controller reverts to “shut down” mode. Force neutral 0 Controller reverts to “shut down” mode. Force neutral 0 Controller reverts to “shut down” mode. Force neutral 0
00.51 00.52
21.00
There is a problem related to the external RAM There is a problem related to the Flash program memory Pressure on sensor 1 too low for command
21.01
Pressure on sensor 1 too high for command
22.00
Pressure on sensor 2 too low for command
22.01
Pressure on sensor 2 too high for command
00.53
____________________________________________________________________________________ 81
Ryheul Kristof
CAN EDI Diagnostic Tool
5.6General coding rules
5.6.1 General
This document is intended to help developers to create more readable code. Certainly do not expect you will find an air-tight solution for every case! It is up to every developer to judge any situation to find the most suitable solution. Try to be consequent! For more details about design guidelines for developing class libraries, visit http://msdn2.microsoft.com/en-us/library/ms229042.aspx. 5.6.2 Capitalization Conventions
Many of the naming conventions pertain to the casing of identifiers. It is important to note that the common language runtime (CLR) supports case-sensitive and case-insensitive languages. The capitalization conventions described in this topic make it easy for developers to understand and work with a library 5.6.2.1 Casing styles Pascal casing
The first letter in the identifier and the first letter of each subsequent concatenated word are capitalized. You can use Pascal case for identifiers of three or more characters. For example: BackColor Camel casing
The first letter of an identifier is lowercase and the first letter of each subsequent concatenated word is capitalized. For example: backColor
Identifier
Class Enumeration type Enumeration values Event Exception class Read-only static field Interface Method Namespace Parameter Property
Case
Pascal Pascal Pascal Pascal Pascal Pascal Pascal Pascal Pascal Camel Pascal
Example
AppDomain ErrorLevel FatalError ValueChanged WebException RedValue IDisposable ToString System.Drawing typeName BackColor
Uppercase
All letters in the identifier are capitalized. For example: IO
____________________________________________________________________________________ 82
Ryheul Kristof
CAN EDI Diagnostic Tool
5.6.3 Data structures 5.6.3.1 Classes
Every class has its own source file;
Every class has a fixed prefix, reflecting its type/purpose, e.g.: “Class” source class “Form” form class, for GUI purposes “I” interface class “Object” user defined GUI object … Exceptions can be made, for example to make it easier to locate the starting point of the application (e.g. “MainForm”).
The name of the class is chosen wisely and describes the object it is meant for. Favor readability over brevity;
Do not use underscores, hyphens or any other non alphanumeric characters;
Avoid using identifiers that conflict with keywords;
If a class name contains more then one word, each word is written with a capital e.g. “ThisIsAClassName.cs”;
If you define an object, which is a part of another object, the name of its class should repeat the name of the main object, e.g. “ClassConfiguration”, “ClassConfigurationFile”, ClassConfigurationConstants”, …
5.6.4 Functions 5.6.4.1 Properties
A property is a special type of get and set accessor, which can be used to make a private data member available outside its scope. 5.6.5 Variables 5.6.5.1 Using prefixes
Persistent use of fixed prefixes will create readable code and a prefixed variable can immediately tell you some important information about its type, accessibility … Type
bool byte char decimal double float int uint long ulong short
Preferred prefix
bool byte char dec dbl fl int uint l ul short
____________________________________________________________________________________ 83
Ryheul Kristof
ushort string
CAN EDI Diagnostic Tool
uschort str
5.6.5.2 Class data members (module variables)
It is strongly recommended to define all class data members as a private member. Never use public variables! If you do have to access a certain variable outside its class scope, create a public get or set function or create a property. Add an “m” to the prefix of each class data member to distinguish a class data member from any function data member. The keyword “this” can also be used here! 5.6.5.3 Function data members (local variables)
Always try to define all your local variables on top of the function. 5.6.6 Programming structures 5.6.6.1 Using an if-else-then comparison
An if-then or if-then-else comparison always uses curly brackets for every block of statements, even if there is only one statement. The if statement, which defines your comparison, always compares one value to another. Never use “if (variable)”, but use “if (variable == true)”
5.6.6.2 Using a loop
Avoid using a “break” statement to exit your loop (for, while). The stop condition of every loop structure must be complete. Rather create an extra local variable to add to your stop condition the putting a “break” statement somewhere in your loop! 5.6.6.3 Casting
You can cast an (undefined) object to an object of another type by putting the new data type between parentheses, in front of the object you want to cast. Do not put a space between the casting type and the object to cast.
5.6.6.4 Incrementing values
Never increment a variable when you are using the variables as indexer or in a comparison. Code as “baData[i++] = 8” or “if (a++>0)” is never used!
____________________________________________________________________________________ 84
Ryheul Kristof
CAN EDI Diagnostic Tool
6. Werking APC200 controller 6.1 Elektronische shift controllers
6.1.1 APC – Automatic Powershift Control
Spicer’s automatische powershift controllers verbeteren de voertuigprestaties, zodat de bestuurder vrij is om zich te concentreren op de machine taken i.p.v. de machine functies. De APC werkt met elke dashboard gemonteerde shiftlever
Fig. 53 Transmissie model en mogelijke controller (DANA)
Fig. 54 Controller systeem mogelijkheden (DANA) ____________________________________________________________________________________ 85
Ryheul Kristof
CAN EDI Diagnostic Tool
6.1.2 Voordelen van elektronische sturing • • • • • • • •
Verhoogt voertuig prestaties, productiviteit en efficiëntie Verhoogt de levensduur van aandrijf componenten Verlaagt slechte operaties van het voertuig Verlaagt stuurfouten Verlaagt training voor bestuurders Geïntegreerde display Integratie van bestaande voertuignetwerken (CAN) Ingebouwde probleemoplossingstool.
6.2 APC200 layout
6.2.1 APC200 hardware blokschema
Fig. 55 APC200 hardware blokschema
____________________________________________________________________________________ 86
Ryheul Kristof
CAN EDI Diagnostic Tool
6.2.2 APC200 hardware connectie schema
Fig. 56 APC200 hardware connectie schema
6.2.3 APC200 controller
Fig. 57 APC200 controller ____________________________________________________________________________________ 87
Ryheul Kristof
CAN EDI Diagnostic Tool
6.2.4 APC200 lokaliseren in een voertuig
Fig. 58 APC200 lokaliseren in een voertuig ____________________________________________________________________________________ 88
Ryheul Kristof
CAN EDI Diagnostic Tool
7.Testbord & opstelling 7.1 Werking testbord
Fig. 59 Testbord APC voorzijde (TCT19)
Freq0-3 Ain0-3 Do0-3 Ao0-6
Di0-9
Speed regulators (Voertuigsnelheid, motorsnelheid, ..). Temperatuur, gaspedaal, rempedaal, … Waarschuwingslampje Variable flow solenoid (VFS) Drukregelaar Regelbare contactoren Gasklep regelaar handrem aan/uit, schakelpatroon, sensor in zetel
____________________________________________________________________________________ 89
Ryheul Kristof
CAN EDI Diagnostic Tool
Fig. 60 Testbord APC zijkant (TCT19)
Parallelle poort (lpt1)
Automatiseren van manuele inputs op het testbord. Kan dan bijvoorbeeld via een programma geschreven worden.
2 CAN connectoren
CAN connector om een CAN interface op aan te sluiten.
RS232 connector
Mogelijkheid om de APC instellingen te configureren (aanpassen van applicatie parameters) dit gebeurd dan met een software programma (GDE). Deze interface wordt ook gebruikt voor firmware upgrades.
Voedingsaansluiting
12V of 24V al naar gelang de controller die aan het testbord hangt.
____________________________________________________________________________________ 90
Ryheul Kristof
CAN EDI Diagnostic Tool
7.2 Verschillende USB dongles (ifak en softing)
Er zijn tal van bedrijven die verschillende soorten hardware interfaces maken voor de CAN bus. Hardware interfaces van USB, PCMCIA, PCI of UTP naar CAN zijn de meest gebruikte. De software die ontwikkeld werd dient gebruik te maken van een USB naar CAN interface module. Van dit model zijn er twee types in het bedrijf, een Ifak System en een Softing USB dongle. Het is de bedoeling dat het programma werkt voor alle USB interfaces en niet alleen voor Ifak System of voor Softing. Dit is natuurlijk geen gemakkelijke klus om compatibel te zijn met verschillende bedrijven. De RP1210 standaard legt nochtans een standaard op die elke fabrikant moet opvolgen, maar er zijn natuurlijk altijd bedrijven die een uitzondering maken. 7.2.1 Informatie ifak system
De mobiele opstelling evenals het monitoren wordt ondersteund. Computers en laptops kunnen zonder geïnstalleerde CAN adapter in werking gesteld worden waar men zich ook bevindt. Door de USB plug & play module kan een connectie met een CAN netwerk gelegd worden in enkele seconden. Het apparaat krijgt rechtstreeks voeding van de USB er is geen externe voeding nodig.
Fig. 61 Ifak System USB naar CAN i nterface
Hardware
CAN Asic
SJA 1000
USB Snelheid
Connector
1 Sub-D 9 pin
Werking
Snelheid
10kbps tot 1Mbps
Fullspeed: 12Mbps Highspeed: 480Mbps Tot 16 interfaces parallel
Software
Interfaces
DLL
OS
Window 9x, ME, 2000, XP, CE 3.0
____________________________________________________________________________________ 91
Ryheul Kristof
CAN EDI Diagnostic Tool
7.2.2 Informatie softing
Actieve één kanaal CAN bus USB interface om een PC op een CAN netwerk aan te sluiten. De interface is geschikt voor zowel visualisatietaken, parameterbepaling en analysetoepassingen. Functies: • • • • • •
Actieve interface met ingebouwde microcontroller CAN-API Lokale buffer en preprocessor Hoge prestaties, neemt tijdskritieke taken over van de PC. Snelheid tot 1Mbps Statische object opslag mode
Fig. 62 Softing USB naar CAN interface
7.2.3 Waargenomen verschillen tussen de twee fabrikanten tijdens het meten
Nochtans legt de RP1210 standaard regels op over hoe de functies noemen, hoe ze gebruikt kunnen worden en hoe het bericht formaat er dient uit te zien. Er is toch een verschil in het bericht formaat tussen Ifak System en Softing. Er is een duidelijk verschil in de timestamp van Ifak System en Softing. Een eerste verschil is de nauwkeurigheid van de timestamp. Ifak System gebruikt intern de tickCount functie van Windows. Deze heeft een nauwkeurigheid tot op één milliseconde. Softing gebruikt een interne timer functie voor de timestamp en deze heeft een nauwkeurigheid tot op één microseconde. Dit levert een probleem op als je de software compatibel wil maken met zowel Ifak System en Softing. Bij Ifak System zou je de tijd moeten delen door duizend om aan de seconden te komen en bij Softing door een miljoen. Op zich levert dit geen problemen op maar deze zijn er wel als je kijkt naar de berichten die binnen komen. Doordat de CAN bus een maximum snelheid heeft van 1Mbps kunnen er zich tot 6700 uitgebreide berichten per seconde op de bus bevinden. Dit betekent dat er ongeveer 6 berichten per milliseconde op de bus kunnen komen. Het probleem bij Ifak System is dus dat er bij 100% busload 6 tot 7 berichten dezelfde timestamp zullen hebben. Dit is dus een groot probleem als je deze tool wil gebruiken om real-time informatie van de bus te plukken. Een tweede verschil is de manier van het coderen. De RP1210 standaard legt vast dat de timestamp in Big Endian of Motorola formaat moet gecodeerd zijn. Dit wil dus zeggen dat de MSB bit helemaal vooraan staat. De timestamp is 4 bytes groot dus dit wil zeggen dat de eerste byte eigenlijk laatst moet staan als je er een getal wil van maken. ____________________________________________________________________________________ 92
Ryheul Kristof
CAN EDI Diagnostic Tool
Softing gebruikt Big Endian zoals de standaard voorlegt en Ifak System gebruikt Little Endian of Intel formaat. Dit wil dus zeggen dat voor Ifak System een andere methode moet gebruikt worden om de timestamp om te zetten naar een tijd. Dit levert natuurlijk weer een probleem op als je een software applicatie wil ontwerpen die overweg kan met Softing en met Ifak System. Een voorbeeld van hoe het Motorola en Intel formaat werkt. Getal 2489 binair uitgeschreven in 4 byte: 00000000
00000000
00001001
10111001
Byte
Big Endian
Litlle Endian
00 01 10 11
00000000 00000000 00001001 10111001
10111001 00001001 00000000 00000000
En als laatste is er nog een onverklaarbaar probleem bij de Ifak System interface. Bij het inlezen van de berichten die zich op de CAN bus bevinden komen soms 10 verschillende berichten binnen met dezelfde tijd. Dit kan niet als er maar om de 10 milliseconden en 20 milliseconden een bericht op de bus komt. 7.3 Verschil met de Vector CANcaseXL
Fig. 63 Vector CAN interfaces
De Vector CAN interfaces kunnen niet aangesproken worden via een RP1210 DLL. Vector biedt hun eigen software aan die speciaal ontworpen is voor hun hardware. Zonder hardware kan het programma niet gebruikt worden en visa versa. ____________________________________________________________________________________ 93
Ryheul Kristof
CAN EDI Diagnostic Tool
7.4 Aansluiten APC200 controller
Fig. 64 APC200 voorzijde (DANA)
Fig. 65 APC200 achterzijde (DANA)
____________________________________________________________________________________ 94
Ryheul Kristof
CAN EDI Diagnostic Tool
7.5 Blokschema meetopstelling
7.6 Verschillende soorten signalen • • •
Snelheidssensoren Druksensoren Temperatuursensoren
Fig. 66 Snelheidssensor (DANA) ____________________________________________________________________________________ 95
Ryheul Kristof
CAN EDI Diagnostic Tool
8. Vector CANalyzer software nader bekeken 8.1 Werking CANalyzer ?
CANalyzer is een universeel ontwerp middel voor CAN bus systemen, het is software die gebruikt wordt om berichten aanwezig op de bus op het scherm te zetten. Doormiddel van krachtige functies en programmeerbaarheid van de gebruiker zijn alle behoeften behandeld. Dit gaat van test signalen tot het problemen oplossen van complexe systemen. De basis functie van CANanalyzer is het representeren en analyseren van data aanwezig op de bus. Deze basis functies bevatten: • • • • •
Weergeven van data aanwezig op de bus in een trace-window. Weergeven van segmenten van bepaalde berichten Statistieken op de frequentie van berichten Opslaan van alle informatie voor offline evaluatie Het plaatsen van gemaakte blokken zoals filters in het data flow-diagram.
De gebruiker kan extra functionaliteit toevoegen door gebruik te maken van CANalyzer programmeerbaarheid. Functieblokken door de gebruiker geprogrammeerd kunnen geplaatst worden op willekeurige punten in de CANalyzer data flow-diagram. De op C gebaseerde taal CAPL doet dienst als programmeertaal. De CAPL browser is inbegrepen in CANalyzer voor gemakkelijke verwezenlijking, wijziging en compilatie van CAPL programma’s. Door de programmeerbaarheid biedt het vele mogelijke toepassingen: • • • •
Emulatie van een busstation Emulatie van de systeem omgeving voor het testen van het busstation. Onderlinge verbinding tussen twee bussen Test generator voor het bestuderen van de fysieke laag.
CANalyzer vereist wel dat men de hardware van Vector gebruikt, dit is tevens de fabrikant van het software pakket. 8.1.1 CANalyzer vensters
CANanalyzer bevat zeven verschillende standaard vensters om informatie over de data weer te geven. 8.1.1.1 Measurement Setup
De data flowchart wordt grafisch voorgesteld in de measurement setup window.
____________________________________________________________________________________ 96
Ryheul Kristof
CAN EDI Diagnostic Tool
Fig. 67 CANalyzer measurement setup
8.1.1.2 Graphics Window
De data segmenten van de berichten worden weergegeven in functie van de tijd in een X-Y diagram. 8.1.1.3 Trace Window
Dient om alle busactiviteiten te tonen tijdens het meten.
____________________________________________________________________________________ 97
Ryheul Kristof
CAN EDI Diagnostic Tool
Fig. 68 CANalyzer trace window configuration (Standard)
Fig. 69 CANalyzer trace window configuration (Extended)
____________________________________________________________________________________ 98
Ryheul Kristof
CAN EDI Diagnostic Tool
8.1.1.4 Write Window
Informatie over de vooruitgang van de meting wordt hier getoond. Schrijf instructies van CAPL programma’s verschijnen in dit venster. 8.1.1.5 Bus Statistics Window
Dient als een numerieke display van frequenties van data, fouten, overbelasting en bus verkeer.
Fig. 8.4 CANalyzer bus statistics 8.1.1.6 Statistics Window
De gemiddelde berichtfrequentie of gemiddelde berichtperiode van transmissies wordt grafisch voorgesteld. 8.1.1.7 Data Window
Het data venster wordt gebruikt om signaal waarden te tonen als een fysieke waarde, als een ruwe waarde of standaard met een staaf (progress bar). 8.1.2 Venster types 8.1.2.1 MDI window
Dit type venster is verwerkt in het programma venster en kan geminimaliseerd worden. 8.1.2.2 Docking window
Dit type vensters staan altijd op de voorgrond. En het programma is terug actief nadat het venster gesloten wordt. 8.1.2.3 Floating window
Deze vensters verschijnen niet op de taakbalk, ze kunnen niet overlapt worden door andere programma’s. Als het programma venster wordt geminimaliseerd worden deze ook geminimaliseerd. Ze kunnen niet bereikt worden door de toetsen combinatie
-. ____________________________________________________________________________________ 99
Ryheul Kristof
CAN EDI Diagnostic Tool
8.1.2.4 Standard window
Actieve programma’s kunnen deze vensters overlappen, ze zijn zichtbaar in de taakbalk en via de toetsen combinatie -. Dit venster blijft open staan wanneer het programma wordt geminimaliseerd. 8.1.3 CAPL browser
Fig. 70 CANalyzer CAPL browser
8.2 Werking CANdb++ ?
CANdb++ is een alleenstaand programma die bij de CANalyzer tool geleverd wordt, dit programma kan gebruikt worden om databases aan te maken, om deze later dan toe te voegen aan het CANanalyzer software programma. Als een database toegevoegd werd en er komt een bericht binnen op de bus die gekend is in de database wordt er een naam gegeven aan het bericht en worden er verschillende signalen aan toegekend. Al naar gelang hoeveel bytes deze in beslag neemt, krijg je een representatie van het ontvangen bericht.
____________________________________________________________________________________ 100
Ryheul Kristof
CAN EDI Diagnostic Tool
Fig. 71 CANdb++ overall view
In bovenstaande figuur staat een overzicht van alle signalen die aanwezig zijn in de database. Door dubbel te klikken op een signaal kan deze bewerkt worden.
Fig. 72 CANdb++ value tables
Aan elk signaal kan een waardetabel gekoppeld worden. Alle waardetabellen die gemaakt zijn worden weergegeven in een venster zoals hierboven. Hier kun je ook door dubbel te klikken de waardetabellen aanpassen.
____________________________________________________________________________________ 101
Ryheul Kristof
CAN EDI Diagnostic Tool
De volgende screenshots tonen enkele functies van het programma aan, deze hebben verder geen uitleg nodig de figuurnaam zegt al meer dan genoeg.
Fig. 73 CANdb++ change value tables
Fig. 74 CANdb++ message layout ____________________________________________________________________________________ 102
Ryheul Kristof
CAN EDI Diagnostic Tool
Fig. 75 CANdb++ display settings
Fig. 76 CANdb++ message definition
____________________________________________________________________________________ 103
Ryheul Kristof
CAN EDI Diagnostic Tool
Fig. 77 CANdb++ signal definition
8.3 Werking log formaat CANalyzer ?
Vector heeft een eigen log formaat ingebouwd in hun CANalyzer software, deze is gemakkelijk te ontleden en zelf samen te stellen. Het is de bedoeling dat de ontworpen software dit log formaat behoud zodat er ook nog altijd met CANalyzer kan gewerkt worden. CANalyzer biedt namelijk nog een aantal opties die niet onmiddellijk zullen worden geïmplementeerd in CANlogger. De extensie van het bestand waarin de berichten opgeslagen worden is ‘.asc’ ook dit wordt gebruikt in CANlogger om een log file aan te maken. 8.3.1 Log formaat voorbeeld
date di apr 24 12:2:36 am 2007 base hex timestamp absolute internal events logged Begin Triggerblock date di apr 24 12:2:36 am 2007 0.000000 Start of measurement . . . . . . . C 000003x Rx d 8 39 A8 16 00 00 00 00 00 0.203000 1 C000003x 0.203000 1 C000003x C0000 03x Rx d 8 39 A8 16 00 00 00 00 00 0.203000 1 CFF2303x Rx d 8 00 30 00 00 40 FF 3E 54 Rx d 8 39 A8 16 00 00 00 00 00 0.218000 1 C000003x 0.312000 1 C000003x Rx d 8 39 A8 16 00 00 00 00 00 0.312000 1 CFF2303x Rx d 8 00 30 00 00 40 FF 3E 54 0.312000 1 C000003x C 000003x Rx d 8 39 A8 16 00 00 00 00 00 0.390000 1 C000003x C 000003x Rx d 8 39 A8 16 00 00 00 00 00 0.390000 1 CFF2303x Rx d 8 00 30 00 00 40 FF 3E 54 0.390000 1 C000003x C 000003x Rx d 8 39 A8 16 00 00 00 00 00 0.390000 1 C000003x C 000003x Rx d 8 39 A8 16 00 00 00 00 00 _____________________________________ ____________________ ___________________________________ _____________________________________ _____________________________ __________ 104
Ryheul Kristof
0.390000 1 CFF2303x 0.406000 1 C000003x C 000003x 0.422000 1 C000003x C 000003x 0.437000 1 CFF2303x 0.437000 1 C000003x C 000003x 0.453000 1 C000003x C 000003x 0.453000 1 CFF2303x 0.468000 1 C000003x C 000003x 0.468000 1 C000003x C 000003x 0.484000 1 CFF2303x 0.484000 1 C000003x C 000003x 0.500000 1 C000003x C 000003x 0.500000 1 CFF2303x . . 24.765000 1 CFF2303x CF F2303x 24.781000 1 C000003x C0 00003x 24.797000 1 C000003x C0 00003x 24.797000 1 CFF2303x CF F2303x 24.812000 1 C000003x C0 00003x 24.812000 1 CFF2303x CF F2303x 24.828000 1 C000003x C0 00003x End Triggerblock
CAN EDI Diagnostic Tool
Rx d 8 00 30 00 00 40 FF 3E 54 Rx d 8 39 A8 16 00 00 00 00 00 Rx d 8 39 A8 16 00 00 00 00 00 Rx d 8 00 30 00 00 40 FF 3E 54 Rx d 8 39 A8 16 00 00 00 00 00 Rx d 8 39 A8 16 00 00 00 00 00 Rx d 8 00 30 00 00 40 FF 3E 54 Rx d 8 39 A8 16 00 00 00 00 00 Rx d 8 39 A8 16 00 00 00 00 00 Rx d 8 00 30 00 00 40 FF 3E 54 Rx d 8 39 A8 16 00 00 00 00 00 Rx d 8 39 A8 16 00 00 00 00 00 Rx d 8 00 30 00 00 40 FF 3E 54 . . . . . Rx d 8 00 30 00 00 40 FF 3E 54 Rx d 8 39 A8 16 00 00 00 00 00 Rx d 8 39 A8 16 00 00 00 00 00 Rx d 8 00 30 00 00 40 FF 3E 54 Rx d 8 39 A8 16 00 00 00 00 00 Rx d 8 00 30 00 00 40 FF 3E 54 Rx d 8 39 A8 16 00 00 00 00 00
8.3.2Log formaat ontleden
Het eerste blok geeft wat informatie over het formaat, de start van de meting en de datum en het uur van de meeting. De opmerkelijkste zijn in het vet gedrukt (hex, absolute en begin). Na deze header krijg je de echte start van de meeting bij 0.000000. In de meeting kun je 6 verschillende kolommen onderscheiden, er is telkens één aangeduid op de 6 eerste regels. Van links naar rechts vind je er de volgende informatie: • • • • • •
Timestamp CAN channel Identiteit (4bytes) Type (Rx of Tx) DLC meestal 8 Data (8bytes)
Zowel de data als de identiteit zijn weergegeven in hex. Als er gebruik zou gemaakt worden van het decimale stelsel zouden de kolommen niet mooi onder elkaar staan en wordt het geheel veel onduidelijker. Op het einde van de meeting dient nog een End te komen zodat het zeker is dat de meeting gestopt is.
_____________________________________ ____________________ ___________________________________ _____________________________________ _____________________________ __________ 105
Ryheul Kristof
CAN EDI Diagnostic Tool
8.4 Werking database formaat CANalyzer ?
Net zoals bij het log formaat heeft CANalyzer ook zijn eigen database formaat, dat wat meer kennis vergt over de werking van CAN. De extensie van de file waarin de database wordt opgeslagen is ‘.dbc’ om compatibiliteitsredenen wordt dit bestandsformaat ook gebruikt. Zo is het heel erg handig om bestaande database ontwerpen zonder enige aanpassing te implementeren in de ontwikkelde software, en visa versa. 8.4.1 Database formaat voorbeeld
VERSION "" NS_ :
NS_DESC_ CM_ BA_DEF_ BA_ VAL_ CAT_DEF_ CAT_ FILTER BA_DEF_DEF_ EV_DATA_ ENVVAR_DATA_ SGTYPE_ SGTYPE_VAL_ BA_DEF_SGTYPE_ BA_SGTYPE_ SIG_TYPE_REF_ VAL_TABLE_ SIG_GROUP_ SIG_VALTYPE_ SIGTYPE_VALTYPE_ BO_TX_BU_ BA_DEF_REL_ BA_REL_ BA_DEF_DEF_REL_ BU_SG_REL_ BU_EV_REL_ BU_BO_REL_ BS_: BU_: VAL_TABLE_ TC_TO_CVC_1_OldFaultState 1 "There has been a fault" 0 "No inactive fault is
present" ; VAL_TABLE_ TC_TO_CVC_1_FaultState 1 "There is a fault active" 0 "No fault is currently present"
; VAL_TABLE_ TC_TO_CVC_1_ShiftInProgress 1 " A shift is currently in progress " 0 "Steady state"
; _____________________________________ ____________________ ___________________________________ _____________________________________ _____________________________ __________ 106
Ryheul Kristof
CAN EDI Diagnostic Tool
VAL_TABLE_ TC_TO_CVC_1_WarningLightState 1 "Warning" 0 "Normal Driving" ; VAL_TABLE_ TC_TO_CVC_1_AutoMode 1 "Automatic Mode" 0 "Manual Mode" ; VAL_TABLE_ TC_TO_CVC_1_TransmissionPosition 66 "R4" 65 "F4" 64 "N4" 50 "R3" 49 "F3" 48
"N3" 34 "R2" 33 "F2" 32 "N2" 18 "R1" 17 "F1" 16 "N1" ; VAL_TABLE_ TC_TO_CVC_1_ShiftLeverPosition 66 "R4" 65 "F4" 64 "N4" 50 "R3" 49 "F3" 34 "R2" 33 "F2" 18 "R1" 17 "F1" 16 "N1" 32 "N2" 48 "N3" ; BO_ 2365530873 CVC_TO_TC_3: 8 Vector__XXX SG_ CVC_TO_TC_3_DataRequest : 0|8@1- (1,0) [0|0] "CVC_TO_TC_3" Vector__XXX BO_ 2365531651 TC_TO_CVC_3: 8 Vector__XXX SG_ TC_TO_CVC_3_FunctionLimiting : 56| 8@1- (1,56) [0|0] "TC_TO_CVC_3" Vector__XXX SG_ TC_TO_CVC_3_DesEngineSpeed : 40|16@ 1- (1,40) [0|0] "TC_TO_CVC_3" Vector__XXX SG_ TC_TO_CVC_3_DesEngineSpeedLimit : 24|16@1 - (1,24) [0|0] "TC_TO_CVC_3"
Vector__XXX SG_ TC_TO_CVC_3_BrakePedalPosition : 16|8@1- ( 1,16) [0|0] "TC_TO_CVC_3" Vector__XXX SG_ TC_TO_CVC_3_ShiftInProgress : 8|8@1- (1, 8) [0|0] "TC_TO_CVC_3" Vector__XXX SG_ TC_TO_CVC_3_OperationMode : 4|4@1- (1,4) [ 0|0] "TC_TO_CVC_3" Vector__XXX SG_ TC_TO_CVC_3_WarningLightStatus : 2|2@1- (1,2) [0| 0] "TC_TO_CVC_3" Vector__XXX SG_ TC_TO_CVC_3_AutoMode : 0|2@1- (1,0) [0|0] " TC_TO_CVC_3" Vector__XXX BO_ 2365531139 TC_TO_CVC_2: 8 Vector__XXX SG_ TC_TO_CVC_2_Information : 8|56@1- (1,8) [0|0] "TC_TO_CVC_2" Vector__XXX SG_ TC_TO_CVC_2_TypeOfData : 0|8@1- (1,0) [0|0] "TC_TO_CVC_2" Vector__XXX BO_ 2365530883 TC_TO_CVC_1: 8 Vector__XXX SG_ TC_TO_CVC_1_OldFaultState : 63|1@1- (1,63) [0|0] "TC_TO_CVC_1" Vector__XXX SG_ TC_TO_CVC_1_FaultState : 62|1@1- (1,62) [0|0] "TC_TO_CVC_1" Vector__XXX SG_ TC_TO_CVC_1_ShiftInProgress : 61|1@1- (1,61) [0|0] "TC_TO_CVC_1" Vector__XXX SG_ TC_TO_CVC_1_OperatingMode : 58|3@1- (1,58) [0|0] "TC_TO_CVC_1" Vector__XXX SG_ TC_TO_CVC_1_WarningLightState : 57|1@1- (1,57) [0|0] "TC_TO_CVC_1" Vector__XXX SG_ TC_TO_CVC_1_AutoMode : 56|1@1- (1,56) [0|0] "TC_TO_CVC_1" Vector__XXX SG_ TC_TO_CVC_1_EngineSpeed : 40|16@1- (1,40) [0|0] "TC_TO_CVC_1" Vector__XXX SG_ TC_TO_CVC_1_TransmissionTemp : 32|8@1- (1,32) [0|0] "TC_TO_CVC_1" Vector__XXX SG_ TC_TO_CVC_1_VehicleSpeed : 16|16@1- (1,16) [0|0] "TC_TO_CVC_1" Vector__XXX SG_ TC_TO_CVC_1_ShiftLeverPosition : 8|8@1- (1,8) [0|0] "TC_TO_CVC_1" Vector__XXX SG_ TC_TO_CVC_1_TransmissionPosition : 0|8@1- (1,0) [0|0] "TC_TO_CVC_1" Vector__XXX CM_ BO_ 3221225472 "This is a message for not used signals, created by Vector CANdb++ DBC
OLE DB Provider."; CM_ BO_ 2365531139 "Context specific reply - Data request Context specific reply - Calibration"; CM_ BO_ 2365530883 "Broadcasted transmission controller info"; VAL_ 2365531651 TC_TO_CVC_3_OperationMode 7 "Limp home interlock" 6 "Calibration mode" 5 "Transmission shutdown" 4 "Limp home mode" 3 "Reserved" 2 "Automatic/std inching" 1 "Automatic/manual" 0 "Manual only" ; VAL_ 2365531651 TC_TO_CVC_3_WarningLightStatus 3 "Not available" 2 "Error" 1 "Driver request not granted" 0 "Normal driving" ; VAL_ 2365531651 TC_TO_CVC_3_AutoMode 3 "Not available" 2 "Error" 1 "Automatic mode" 0 "Manual mode" ; ____________________________________________________________________________________ 107
Ryheul Kristof
CAN EDI Diagnostic Tool
VAL_ 2365530883 TC_TO_CVC_1_OldFaultState 1 "There has been a fault" 0 "No inactive fault is
present" ; VAL_ 2365530883 TC_TO_CVC_1_FaultState 1 "There is a fault active" 0 "No fault is currently present" ; VAL_ 2365530883 TC_TO_CVC_1_ShiftInProgress 1 "A shift is currently in progress" 0 "Steady state" ; VAL_ 2365530883 TC_TO_CVC_1_OperatingMode 7 "Limphome interlock mode" 6 "Calibration mode" 5 "Transmission shutdown" 4 "Limphome mode" 3 "reserved" 2 "Automatic & std inching mode" 1 "Automatic/manual mode" 0 "Manual mode only" ; VAL_ 2365530883 TC_TO_CVC_1_WarningLightState 1 "Warning" 0 "Normal Driving" ; VAL_ 2365530883 TC_TO_CVC_1_AutoMode 1 "Automatic Mode" 0 "Manual Mode" ; VAL_ 2365530883 TC_TO_CVC_1_ShiftLeverPosition 66 "R4" 65 "F4" 64 "N4" 50 "R3" 49 "F3" 34 "R2" 33 "F2" 18 "R1" 17 "F1" 16 "N1" 32 "N2" 48 "N3" ; VAL_ 2365530883 TC_TO_CVC_1_TransmissionPosition 66 "R4" 65 "F4" 64 "N4" 50 "R3" 49 "F3" 48 "N3" 34 "R2" 33 "F2" 32 "N2" 18 "R1" 17 "F1" 16 "N1" ; 8.4.2 Database formaat ontleden
Het database formaat gebruikt enkele vast gekende parameters zoals: Parameter
BU_: BO_ SG_ VAL_TABLE_ VAL_ CM_BO_ NS_:
Beschrijving
Toont het begin van de database aan (berichten, signalen en waardetabellen) Bericht informatie Signaal informatie Waardetabellen die niet gekoppeld zijn aan een signaal Waardetabellen die gekoppeld zijn aan een signaal Commentaar bij een bericht Beschrijft een aantal parameters
8.4.2.1 Berichten ontleden
Fig. 78 Ontleden van database berichten
____________________________________________________________________________________ 108
Ryheul Kristof
CAN EDI Diagnostic Tool
8.4.2.2 Signalen ontleden
Fig. 79 Ontleden van database signalen
8.4.2.3 Waardetabellen ontleden
Fig. 80 Ontleden van database waardetabellen
____________________________________________________________________________________ 109
Ryheul Kristof
CAN EDI Diagnostic Tool
9.Visual Studio, Visual SourceSafe en Office Visio 9.1 Werking Visual Studio ?
9.1.1 Hoe maak je een macro aan ?
Via de Macro Explorer kun je alle toegevoegde macro’s terug vinden. De macro’s zijn geschreven in VB, en kunnen gemakkelijk geopend worden door dubbel op de module te klikken. Dubbel klikken op de subroutine zal ervoor zorgen dat het geen die in de macro wordt afgedrukt aan het document wordt toegevoegd. Subroutine InsertTryCatchBlockForDebugClass() Imports EnvDTE Imports System.Diagnostics Public Module Module1 Sub InsertTryCatchBlockForDebugClass() Dim objectTextSelection As TextSelection objectTextSelection = CType(DTE.ActiveDocument.Selection(), EnvDTE.TextSelection)
objectTextSelection.Text = “try” + vbCrLf + “{“ + vbCrLf + “}” + vbCrLf + “catch(Exeption ex)” + vbCrLf + “{“ + vbCrLf + “ ClassMyDebug.MyDebug(ex);” + vbCrLf + “ throw(ex);” +vbCrLf + “}” End Sub End Module
Dit geeft het volgende resultaat: try
{ } catch(Exception ex)
{ ClassMyDebug.MyDebug(ex); trow(ex); }
____________________________________________________________________________________ 110
Ryheul Kristof
CAN EDI Diagnostic Tool
9.1.2 Zoeken naar variabelen, functies, objecten en andere stukken code
Fig. 81 Visual Studio find in files
Na een aantal maanden programmeren kan je programma zo gigantisch groot worden dat je niet meer weet in welke klassen je een variabele, functie, object of andere toegekend of gebruikt hebt. Hierdoor wordt het zeer moeilijk om fouten op te sporen. Visual Studio heeft hiervoor een handig hulpmiddel “de zoekfunctie”. Deze zoekt in elke klasse van heel het project of solution waar een bepaalde zoekterm gebruikt wordt.
Fig. 82 Visual Studio find results in entire project
Het vervangen van een bepaalde naam is handig als het blijkt dat de naam die je gekozen had voor een variabele, functie of object niet goed was voor het geen het doet.
____________________________________________________________________________________ 111
Ryheul Kristof
CAN EDI Diagnostic Tool
Fig. 83 Visual Studio replace in files
9.1.3 Gemakkelijkheid van debuggen
Het gebeurt heel vaak dat je ergens een functie schrijft, die niet doet wat je verwachtte. Door de ingebouwde debugger functie is het zeer gemakkelijk doorheen lussen, functies en klassen te navigeren, de waarde van variabelen te bekijken en zo het probleem op te lossen. Zonder deze debugger zou je uren moeten zoeken op de kleinste programmeerfouten. Als je ergens een verkeerd argument doorgeeft aan een functie kan deze een fout generen op een plaats waar je niets fouts opmerkt. Door de opgebouwde programmeerervaring verleer je deze fouten wel. 9.1.4 Werken met solution explorer, class view, properties
Alle gemaakte klassen in een solution worden weergegeven in de solution explorer. Hierdoor wordt het gemakkelijk om snel naar een andere klasse over te gaan door dubbel te klikken op zijn naam. In de class view kun je alle functies, variabelen en accessors bekijken die gedefinieerd zijn in een klasse. Als je in de grafische omgeving programmeert kan je gebruik maken van het properties venster. Dit venster maakt het mogelijk om de instellingen van bijvoorbeeld knoppen, tekstvakken, tabellen, labels en andere gemakkelijk aan te passen. Al de instellingen die niet standaard zijn worden dan in de ‘ Windows Form Designer generated code’ regio geplaatst hier dient de programmeur niets in te veranderen.
____________________________________________________________________________________ 112
Ryheul Kristof
Fig. 84 Visual Studio solution explorer
CAN EDI Diagnostic Tool
Visual Studio class view
Fig. 85 Visual Studio properties ____________________________________________________________________________________ 113
Ryheul Kristof
CAN EDI Diagnostic Tool
9.1.5 De WYSIWYG en WYWIWYG IDE (Visual Studio)
Fig. 86 Visual Studio WYSIWYG interface
Fig. 87 Visual Studio WYWIWYG interface
____________________________________________________________________________________ 114
Ryheul Kristof
CAN EDI Diagnostic Tool
9.1.6 Converteren van commentaar naar API in webvorm
In Visual Studio kun je door uitgebreide commentaar te schrijven bij variabelen, functies en klassen via één klik op de knop een soort web API creëren. Dit is vooral handig als je niet alleen aan een project werkt, zo kunnen andere programmeurs kijken welke functie ze nodig hebben om een bepaalde waarde terug te krijgen die ze op dat moment nodig hebben. Niet alleen is het handig om uitgebreide commentaar te schrijven voor een API of voor andere gebruikers. Door deze commentaar toe te voegen aan alle functies, klassen en variabelen kun je binnen hetzelfde project met de IntelliSense zien welke beschrijving een bepaalde functie, klasse of variabele heeft. 9.1.7 Werken met IntelliSense
Het meest gebruikte en handigste hulpmiddel in Visual Studio is wellicht de IntelliSense. Het maakt het de programmeur mogelijk om zeer snel bepaalde functies, klassen of variabelen te gebruiken. De IntelliSense toont een lijst van de leden die voor een klasse of voorwerp beschikbaar zijn na het typen een klasse of object gevolgd door een punt. IntelliSense werkt via een automatisch geproduceerd intern geheugen die klassen, variabelen en andere concepten bevat.
Fig. 88 Gebruik maken van IntelliSense
9.1.8 Werken met objectbrowser, index, msdn library
Er bestaan duizenden functies en klassen in de object bibliotheek van .NET het is onmogelijk om ze allemaal weer te geven laat staan ze te gebruiken of te kennen. Doordat er zoveel zijn werd een handige objectbrowser ontwikkeld die het mogelijk maakt om alle functies, variabelen en accessors binnen een klasse weer te geven. Voor meer details en voorbeelden kan je gebruik maken van het index venster of de msdn library die zowel online als offline kan worden gebruikt. ____________________________________________________________________________________ 115
Ryheul Kristof
CAN EDI Diagnostic Tool
9.2 Werking Visual SourceSafe ?
Bij grote projecten werkt men meestal met meerdere programmeurs tegelijk aan een oplossing (project). Het is zeer moeilijk als deze programmeurs code veranderen in dezelfde klassen. Dit is waar SourceSafe te hulp komt om te voorkomen dat programmeurs elkaars code overschrijven. Programmeurs kunnen via SourceSafe inloggen op een server via het interne netwerk en de verschillende klassen bekijken. Lokaal op de pc dient een folder aangemaakt te worden waar het project zal geplaatst worden. De programmeur kan dan via SourceSafe een werkfolder aanmaken op het pad waar het project geplaatst wordt. Eenmaal dit gebeurd is kunnen bestanden geopend en gesloten worden al naar gelang of de programmeur deze nodig heeft. Een andere programmeur moet dan wachten tot de ene gedaan heeft met zijn/haar bewerkingen voordat hij code kan aanpassen. Met dit systeem creëer je een veilige werkomgeving om meerdere programmeurs op één project te laten werken. 9.2.1 Aanmaken van een label
Na een paar aanpassingen doorgevoerd te hebben kan een programmeur een “label” plaatsen om aan te tonen welke aanpassingen hij/zij heeft veranderd sinds het laatste label. Zo wordt het gemakkelijk om bij plotse problemen terug te kijken wat er op dat moment in een bepaalde klasse veranderd werd. Zo kunnen problemen sneller opgelost worden, als het heel erg is kan zelfs een vroegere label lokaal ingeladen worden om vanaf dat moment opnieuw te beginnen.
Fig. 89 Visual SourceSafe adding an label ____________________________________________________________________________________ 116
Ryheul Kristof
CAN EDI Diagnostic Tool
Fig. 90 Visual SourceSafe add comment to label
9.2.2 Bestanden toevoegen, bewerken, uit- en in checken, verwijderen, vergelijken
In dit venster kun je zien welke bestanden er veranderd werden (rood) en welke bestanden er toegevoegd werden aan de werkfolder (groen). De rest van de bestanden (wit) zijn onveranderd gebleven. Je kan ook bekijken welke veranderingen er werden aangebracht aan één bepaald bestand.
Fig. 91 Visual SourceSafe project differences
____________________________________________________________________________________ 117
Ryheul Kristof
CAN EDI Diagnostic Tool
Fig. 92 Visual SourceSafe add new file to the project
Fig. 93 Visual SourceSafe show file differences ____________________________________________________________________________________ 118
Ryheul Kristof
CAN EDI Diagnostic Tool
Via een handig venster die de veranderde code weergeeft met een grijze tint is het gemakkelijke om aanpassingen te bekijken. Vooral voor het debuggen is dit een handig hulpmiddel.
Fig. 94 Visual SourceSafe file differences
9.2.3 Project geschiedenis, commentaar, pad
Fig. 95 Visual SourceSafe history of file ____________________________________________________________________________________ 119
Ryheul Kristof
CAN EDI Diagnostic Tool
Via de geschiedenis en de commentaar kunnen alle veranderingen bijgehouden worden. Zodat het enkel een kwestie van zoeken wordt om te weten wanneer een functie toegevoegd werd. Dit kan handig zijn als er bijvoorbeeld een fout veroorzaakt werd door een andere functie toe te voegen. Dan kan deze functie herzien worden en indien nodig bewerkt worden.
Fig. 96 Visual SourceSafe history details
Fig. 97 Visual SourceSafe history of project
____________________________________________________________________________________ 120
Ryheul Kristof
CAN EDI Diagnostic Tool
9.3 Werking Office Visio voor UML-diagram ?
Naast het echte programmeerwerk is het ook nodig om een compleet overzicht te krijgen van het ontwikkelde project vanuit een ander opzicht. De theoretische achtergrond van hoe een UML diagram samengesteld wordt, is beschreven in het volgende hoofdstuk. Met Microsoft Office Visio kunnen alle mogelijke UML diagrammen ontworpen worden. De voornaamste en meest gebruikte is het UML klassen diagram. Hierbij worden alle functies, variabelen en accessors weergegeven binnen een klasse met hun bijbehorende access modifiers. 9.3.1 Ontwerpen van een UML-diagram met visio
Fig. 98 Office Visio workplace
____________________________________________________________________________________ 121
Ryheul Kristof
CAN EDI Diagnostic Tool
9.3.2 Toevoegen van variabelen, methoden, klassen en argumenten
Eerst geef je de klasse een naam:
Fig. 99 Office Visio UML class properties (Class)
Daarna kun je alle attributen toevoegen (variabelen):
____________________________________________________________________________________ 122
Ryheul Kristof
CAN EDI Diagnostic Tool
Fig. 100 Office Visio UML class properties (Attributes)
Tenslotte kunnen ook de operaties (functies) toegevoegd worden:
Fig. 101 Office Visio UML class properties (Operations) ____________________________________________________________________________________ 123
Ryheul Kristof
CAN EDI Diagnostic Tool
Er is natuurlijk nog altijd het probleem met het overladen van methoden (methoden met dezelfde naam). Deze worden onderscheiden door hun argumenten die verschillend zijn. Deze kan je bij de eigenschappen van een functie instellen.
Fig. 102 Office Visio UML Operation Properties (Parameters)
____________________________________________________________________________________ 124
Ryheul Kristof
CAN EDI Diagnostic Tool
10. Ontwerpen van schema’s 10.1UML Diagrammen
10.1.1 ‘CAN EDI diagnostic tool’ UML Use Case Diagram
Fig. 103 Use Case diagram ‘CAN EDI Diagnostic Tool’ ____________________________________________________________________________________ 125
Ryheul Kristof
CAN EDI Diagnostic Tool
10.1.2 ‘Database’ UML Class Diagram
Fig. 104 UML Class Diagram database ____________________________________________________________________________________ 126
Ryheul Kristof
CAN EDI Diagnostic Tool
10.1.3 ‘Configuration’ UML Class Diagram
Zie A3 blad in bijlage.
____________________________________________________________________________________ 127
Ryheul Kristof
CAN EDI Diagnostic Tool
10.2 Software flowcharts
10.2.1 ‘Logger’ flowchart
Fig. 105 Flowchart logging ____________________________________________________________________________________ 128
Ryheul Kristof
CAN EDI Diagnostic Tool
10.2.2 ‘Trace’ window flowchart
Fig. 106 Flowchart ‘trace’ window ____________________________________________________________________________________ 129
Ryheul Kristof
CAN EDI Diagnostic Tool
10.2.3 Database flowchart
Fig. 107 Flowchart database ____________________________________________________________________________________ 130
Ryheul Kristof
CAN EDI Diagnostic Tool
10.2.4 ‘Generator’ window flowchart
Fig. 108 Flowchart ‘generator’ window ____________________________________________________________________________________ 131
Ryheul Kristof
CAN EDI Diagnostic Tool
10.2.5 Messages flowchart
Fig. 109 Flowchart messages (received and send) ____________________________________________________________________________________ 132
Ryheul Kristof
CAN EDI Diagnostic Tool
10.2.6 Inladen van laatste configuratie bestand via parameters in het register
Fig. 110 Flowchart configuratie bestanden inladen ____________________________________________________________________________________ 133
Ryheul Kristof
CAN EDI Diagnostic Tool
11. Software GUI CAN EDI Diagnostic Tool 11.1 Het hoofdprogramma
11.1.1 CAN EDI Diagnistoc Tool
Fig. 111 CAN EDI Diagnostic Tool (Software)
In de bovenstaande figuur zie je de software applicatie met het ‘trace’ venster, de filter vensters en het venster voor bericht informatie geopend. De software biedt een visueel mooi ontwikkelde interface aan voor het bekijken van berichten die aanwezig zijn op de bus. Je kan zowel de bericht identiteit als de naam van het signaal zien. Ook het type bericht als de data aanwezig in het bericht wordt weergegeven. Het biedt ook de mogelijkheid om filters in te stellen om enkel de gewenste berichten te ontvangen. Signalen aanwezig in een bericht kunnen voorgesteld worden met hun eenheid of beschrijving uit een database. De data die een bericht bevat wordt decimaal weergegeven in het veld ‘Value’ van het venster voor bericht informatie. Na het opstarten van de applicatie wordt het laatst gebruikte configuratiebestand ingeladen. Dit wordt onthouden via een variabele in het register van de computer. Deze variabele zit onder de CURRENT_USERS hive, dit wil zeggen dat bij een andere gebruiker een ander configuratiebestand zal ingeladen worden.
____________________________________________________________________________________ 134
Ryheul Kristof
CAN EDI Diagnostic Tool
11.1.2 De menubar
Fig. 112 Menubar (CAN EDI Diagnostic Tool)
De menubar bevat de meest gekende en gebruikte menu’s: • • • • • • •
File menu Edit menu View menu Measurement menu Options menu Window menu Help Menu
Er zijn nog 2 extra menu’s die zichtbaar worden als het ‘trace’ venster of het database venster actief wordt. Deze respectievelijke menu’s kunnen dus alleen gebruikt worden wanneer één van de twee vensters geopend en actief zijn. 11.1.3 De toolbar
Fig. 113 Toolbar (CAN EDI Diagnostic Tool)
Via de toolbar kun je bijna alle functies doen als met de menubar: • • • • • • • •
Openen/sluiten van filter vensters Openen van ‘trace’ venster Openen van generator venster Openen van ‘signal monitor’ venster (numeric & graphic) Openen van database venster Starten/stoppen van log functie Inladen/opslaan van configuratie bestanden Starte/pauzeren/stoppen van de meeting
____________________________________________________________________________________ 135
Ryheul Kristof
CAN EDI Diagnostic Tool
11.1.4 Venster selecteren
Fig. 114 Selecteren van MDI vensters (CAN EDI Diagnostic Tool)
De vensters die opgeroepen kunnen worden en vast zitten in het hoofdprogramma (MDI windows) worden weergegeven in het menu Window. Als één van deze vensters geselecteerd wordt zal deze actief worden en de focus krijgen. 11.1.5 Starten, pauzeren en stoppen van een meeting
In de toolbar kun je gemakkelijk de meeting starten, pauzeren en stoppen met de bovenstaande iconen. Door op de startknop te drukken wordt er connectie gelegd met de USB naar CAN interface module en wordt de thread gestart die ontvangen boodschappen verwerkt en opslaat in de buffer. Via de pauzeknop wordt hardwarematig het ontvangen van berichten geblokkeerd. Door op de stopknop te drukken wordt hardware matig de connectie met de USB naar CAN interface module afgesloten en de thread stil gelegd. 11.1.6 Starten en stoppen van de log functie
Het starten en het stoppen van de log functie kan op verschillende manieren. Starten: Door op de startknop te drukken terwijl de logging actief staat. Door op de logknop te drukken terwijl de meeting loopt. • •
Stoppen: Door op de stopknop te drukken terwijl de logging actief staat. Door op de logknop te drukken terwijl de meeting loopt. • •
Om een compleet overzicht te krijgen van hoe dit werkt verwijs ik naar de flowchart van de logger.
____________________________________________________________________________________ 136
Ryheul Kristof
CAN EDI Diagnostic Tool
11.2 De trace-window
11.2.1 Het trace venster
Fig. 115 Trace venster (CAN EDI Diagnostic Tool)
Dit venster toont alle informatie die een bericht bevat. De lijst heeft de volgende velden: • •
• • • •
Number Time ID Name Type Data
Het aantal berichten die ontvangen werd (toegevoegd via software). De tijd waarop een bericht ontvangen werd door de interface module. (4 bytes). De identiteit van het bericht (4 bytes). De naam van het bericht aan de hand van een database. Het type bericht ontvangen of verzonden (Rx of Tx). De data die het bericht bevat (8 bytes).
____________________________________________________________________________________ 137
Ryheul Kristof
CAN EDI Diagnostic Tool
11.2.2 Het venster voor het weergeven van bericht informatie
Fig. 116 Selecteren van bericht identiteit voor meer informatie (CAN EDI Diagnostic Tool)
Als het ‘trace’ venster open staat en de meeting loopt kun je aan de hand van het bovenstaande venster de gewenste berichten selecteren waarvan je meer informatie wil zien. Deze informatie wordt automatisch up-to-date gehouden wanneer er een nieuw bericht met dezelfde identiteit ontvangen of verzonden wordt.
Fig. 117 Informatie van de signalen in een bericht (CAN EDI Diagnostic Tool)
Bovenstaande figuur toont het venster waar specifieke bericht informatie weergegeven wordt. Je kan er alle signalen vinden die tot het bericht behoren als ook hun waarde, beschrijving en eenheid.
____________________________________________________________________________________ 138
Ryheul Kristof
CAN EDI Diagnostic Tool
11.2.3 Trace venster instellingen
Fig. 118 Trace window configuratie (CAN EDI Diagnostic Tool) 11.2.3.1 Chronologische en vaste weergave
Het is mogelijk om at-runtime deze instelling te veranderen zodat je berichten chronologisch of vast kunt weergeven. Als berichten chronologisch weergegeven worden kan dit een zeer snel aangroeiende lijst van berichten worden. Deze lijst wordt telkens uitgebreid naarmate er berichten ontvangen of verzonden worden. Als berichten vast weergegeven worden zal deze lijst enkel de berichten bevatten met verschillende identiteit. Deze berichten worden dan telkens upgedate wanneer een bericht met dezelfde identiteit ontvangen wordt, zodat het meest recente bericht, met de meest recente waardes getoond wordt. 11.2.3.2 Decimaal en hexadecimale weergave
Het is mogelijk om at-runtime deze instelling te veranderen zodat je de data in een bericht decimaal of hexadecimaal kan weergeven. Dit is vooral gemakkelijk voor mensen die niet veel ervaring hebben in het lezen van hexadecimale getallen of die niet bekend zijn met dit getalstelsel. Het kan natuurlijk ook gemakkelijk zijn om dan zelf te gaan uitzoeken met welke waarde de data overeenstemt in een datasheet. Dit wordt dan weer overbodig door een database in te laden die dit automatisch doet voor de gebruiker. 11.2.3.3 Absolute en relatieve weergave
Het is mogelijk om at-runtime deze instelling te veranderen zodat je de tijd van ontvangen of verzonden berichten absolute of relatief kan weergeven. In absolute weergave loopt de tijd op aan de hand van de ontvangen of verzonden berichten. In relatieve weergave krijg je telkens te zien wanneer een bericht ontvangen of verzonden wordt ten opzichte van het laatst ontvangen of verzonden bericht.
____________________________________________________________________________________ 139
Ryheul Kristof
CAN EDI Diagnostic Tool
11.3 Het generator venster
Fig. 119 Generator venster (CAN EDI Diagnostic Tool)
Via het ‘generator’ venster kun je berichten versturen aan de hand van zelf ingevulde data of aan de hand van een database. Als er geen database ingeladen werd is de lijst met berichten niet beschikbaar. Dan moet je zelf de identiteit, dlc en data invullen. Dit vraagt natuurlijk een behoorlijke kennis van de mogelijke CAN berichten. Als er wel een database ingeladen werd kan er een bericht geselecteerd worden. Door het selecteren van een bericht worden alle signalen die dat bericht bevat helemaal onderaan weergegeven. Door de waarden van de signalen te veranderen wordt automatisch de data in het bericht aangepast. Er is ook een mogelijkheid om berichten toe te voegen, te verwijderen of te klonen. Het klonen van berichten is handig omdat je dan niet telkens opnieuw alle data hoeft in te vullen.
____________________________________________________________________________________ 140
Ryheul Kristof
CAN EDI Diagnostic Tool
11.4 Het database venster
11.4.1 Het venster om databases in te laden en te gebruiken
Fig. 120 Database inladen en gebruiker (CAN EDI D iagnostic Tool)
Wanneer het database venster geopend wordt zal automatisch het ‘load database’ venster geopend worden die het mogelijk maakt om een database aan de lijst toe te voegen, te gebruiken, te openen of te verwijderen uit de lijst. 11.4.2 Het database venster
Fig. 121 Database venster bericht informatie (CAN EDI Di agnostic Tool) ____________________________________________________________________________________ 141
Ryheul Kristof
CAN EDI Diagnostic Tool
Als er een database geopend werd zal deze in het database venster zichtbaar worden. Zowel de berichten, signalen als waardetabellen worden weergegeven. Het is ook mogelijk om berichten en signalen te bewerken en later terug op te slaan.
Fig. 122 Database venster signaal informatie (CAN EDI Diagnostic Tool)
11.4.3 Het venster om berichten te bewerken
Fig. 123 Bericht definities bewerken (CAN EDI Diagnostic Tool) ____________________________________________________________________________________ 142
Ryheul Kristof
CAN EDI Diagnostic Tool
Een bericht bevat vier instellingen die aangepast kunnen worden: • • • •
De naam van het bericht. Het type bericht (Standaard of uitgebreid CAN bericht). De identiteit van het bericht (4 bytes). Het aantal data bytes die het bericht bevat (max. 8 bytes).
Fig. 124 Signalen aan een bericht toevoegen of verwijderen (CAN EDI Diagnostic Tool)
Als de tab ‘Signals’ geselecteerd is worden alle signalen die tot het bericht behoren weergegeven. Hier is het mogelijk om signalen aan een bericht toe te voegen of te verwijderen. Door het selecteren van een signaal wordt de ‘Remove’ en ‘View’ knop actief. De ‘Apply’ knop wordt pas actief als er een aanpassing is gebeurt aan het bericht. 11.4.4 Het venster om signalen te bewerken
Een signaal bevat 11 instellingen die aangepast kunnen worden. • • • • • • • • • •
De naam van het signaal. Het aantal bit (bit lengte). Het code formaat (Intel of Motorola). Waarde type (Signed of Unsigned). De factor waarmee vermenigvuldigd moet worden. Minimum en maximum waarde van het signaal. De eenheid van het signaal. De start positie van het signaal (start bit). De offset die opgeteld moet worden met de signaal waarde. Selecteren van een waardetabel.
____________________________________________________________________________________ 143
Ryheul Kristof
CAN EDI Diagnostic Tool
Fig. 125 Signaal definities bewerken (CAN EDI Diagnostic Tool)
Als de tab ‘Messages’ geselecteerd is worden alle berichten weergegeven waartoe het signaal behoort. Het is mogelijk om berichten toe te voegen of te verwijderen. Door het selecteren van een bericht wordt de ‘Remove’ en ‘View’ knop actief. De ‘Apply’ knop wordt pas actief als er een aanpassing is gebeurt aan het signaal.
Fig. 126 Signaal toevoegen en verwijderen uit berichten (CAN EDI Diagnostic Tool)
____________________________________________________________________________________ 144
Ryheul Kristof
CAN EDI Diagnostic Tool
Fig. 127 Signaal waardetabel (CAN EDI Diagnostic Tool)
In het tabblad ‘Value Description’ wordt de waardetabel weergegeven die tot het signaal behoort. Bewerken van de waardetabel in dit venster is onmogelijk. Het dient enkel om te tonen welke waardetabel aan het signaal gekoppeld is. 11.5 Het venster voor de filters
Fig. 128 Filter vensters (CAN EDI Diagnostic Tool) ____________________________________________________________________________________ 145
Ryheul Kristof
CAN EDI Diagnostic Tool
De filter vensters kunnen via een docking manager overal in het applicatie venster geplaatst worden zoals de gebruiker het zelf wil. Alleen de hardware filters kunnen gebruikt worden om berichten te filteren via de USB naar CAN interface module. De software filters zijn nog niet geïmplementeerd in het programma, maar hiermee zou je op data die in het bericht aanwezig is moeten kunnen filteren. Als er een hardware filter toegevoegd wordt komt deze in de lijst van filters terecht waar je nogmaals kan selecteren of de filter gebruikt wordt of niet. 11.6 Het configuratie venster voor de logger
Fig. 129 Configuratie venster voor de logger (CAN EDI Diagnostic Tool)
In dit venster kun je een log bestand selecteren om te gebruiken tijdens het loggen. Als je een nieuwe log start en het gebruikte log bestand bestaat al krijg je een melding of je het bestand wil overschrijven, een nieuw bestand wil selecteren of stoppen met loggen. Als je de optie ‘nieuw bestand selecteren’ selecteert krijg je het bovenstaande venster waar je een nieuw log bestand kan selecteren of aanmaken. Er staat ook informatie over het geselecteerde log bestand zoals de naam, de extensie en de datum wanneer deze het laatst bewerkt werd. De optie ‘Warn on overwrite file’ staat standaard aan en kan niet afgezet worden.
Fig. 130 Waarschuwing bij overschrijven log bestand
____________________________________________________________________________________ 146
Ryheul Kristof
CAN EDI Diagnostic Tool
11.7 Het venster voor grafische weergave van signalen
Fig. 131 Graphic Signal Monitor (CAN EDI Diagonstic Tool)
Hier kunnen geselecteerde signalen grafisch weergegeven worden. Deze functie werd niet verder afgewerkt. 11.8 Inladen van een recent configuratie bestand
Fig. 132 Recente configuratie bestanden (CAN EDI Diagnostic Tool)
Het is mogelijk om de laatst gebruikte configuratie bestanden in te laden via het File menu. De 5 laatst gebruikte configuratie bestanden worden opgeslagen in het register. Dit kun je bekijken met de ‘Regitry Editor’ van Windows.
Fig. 133 Gebruik maken van het run venster (Windows) ____________________________________________________________________________________ 147
Ryheul Kristof
CAN EDI Diagnostic Tool
Fig. 134 Register variabelen in Windows (Registry Editor)
11.9 Applicatie folder en beschrijving
Fig. 135 Applicatie folder (CAN EDI Diagnostic Tool)
Dit is de werkfolder van het programma waar je het programma terug vind samen met de gebruikte mappen configurations, databases, filters, generator en traces. Ook de nodig DLL bestanden bevinden zich in deze directory.
____________________________________________________________________________________ 148
Ryheul Kristof
CAN EDI Diagnostic Tool
12. Software implementatie C#.NET “A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools.” Douglas Adams 12.1Big endian en little endian functies voor de timestamp.
12.1.1 Big Endian / / / / / / The t i mest amp recei ved f r om t he CAN bus i s i n Bi g Endi an f or mat . / / / Bi g Endi an or Motor ol a For mat => Most s i gni f i cant Bi t Fi r st ! / / / summar y> pr i vat e ui nt r eadBi gEndi an( byt e[ ] r eadByte) { try { ui nt accum = 0; i nt i = 0; f or ( i nt shi f t By=24; shi f t By>=0; shi f t By- =8) { accum | = ( ui nt ) ( r eadByte[ i ] & 0xf f ) << shi f t By; i ++; } r e t u r n acc um; } cat ch( Except i on ex) { Cl ass MyDebug. MyDebug( ex) ; throw( e x) ; } }
12.1.2 Little Endian / / / / / / The t i mest amp r ecei ved f r om t he CAN Bus i s i n Bi g Endi an f or mat / / / but wi t h i f ak i t s Li t t l e Endi an. / / / Li t t l e Endi an or I nt el For mat => Least Si gni f i cant Bi t Fi r st ! / / / summar y> pr i vat e ui nt r eadLi t t l eEndi an( byt e[ ] r eadByte) { try { ui nt accum = 0; i nt i = 0; f or ( i nt s hi f t By=0; shi f t By<32; shi f t By+=8) { accum | = ( ui nt ) ( r eadByte[ i ] & 0xf f ) << shi f t By; i ++; } r e t u r n acc um; } cat ch( Except i on ex) { Cl ass MyDebug. MyDebug( ex) ; throw( e x) ; } }
____________________________________________________________________________________ 149
Ryheul Kristof
CAN EDI Diagnostic Tool
12.2 Informatie uit een signal halen
Een bericht kan uit verschillende signalen bestaan, deze worden in het venster voor berichtinformatie weergegeven met hun decimale waarde en beschrijving. Aan de hand van een voorbeeld geef ik de uitwerking van hoe dit gebeurd. Het ontvangen bericht: ID
Data
0x0CFF2303
00 30 34 FC 41 FF 3E D4
Aan de hand van de ingeladen database kan je het bericht met naam benoemen. De naam die bij dit bericht behoort is TC2CVC1. Dit bericht bevat volgens de database 15 signalen waarvan ik er 2 als voorbeeld geef. Signaal naam
Start bit
sOperatingState_abiDrivin 58 gMode wVehicleSpeed 16
Bit lengte
Factor Offset
Minimum
Maximum
3
1
0
0
7
16
0,0039 0625
0
0
30
Nu kunnen we per signaal de decimale waarde weergeven. sOperatingState_abiDrivingMode
Startbit = 58 dit wil zeggen dat het signaal start in byte (58 / 8)+1 = 8. Hieruit kunnen we dan ook afleiden op welke plaats het signaal begint in byte 8. 8*7 = 56 en startbit = 58 krijg je een rest van 2 . Dit is de plaats waar het signaal echt begint. Als je nu byte 8 van dichterbij bekijkt heeft hij de volgende waarde : D4 Dit kun je binair uitschrijven als : 1101 0100 De start positie is op bit 2 en de lengte van het signaal is 3 bit dus krijg je 010 als waarde. Dit is decimaal gelijk aan 2. Als je nu kijkt in de database dan kun je deze waarde gelijkstellen aan de beschrijving Automatic_and_StandardInching. wVehicleSpeed
Startbit = 16 dit wil zeggen dat het signaal start in byte (16 / 8)+1 = 3. Hieruit kunnen we dan ook afleiden op welke plaats het signaal begint in byte 3. 8*2 = 16 en startbit = 16 krijg je een rest van 0 . Het signaal begint dus aan het begin. De lengte van het signaal is 2 bytes dus moeten we byte 3 & 4 bekijken. Deze hebben de volgende waarde: 34 FC Dit kun je binair uitschrijven als 0011 0100 1111 1100 , decimaal is dit gelijk aan 13564. Dit getal wordt dan vermenigvuldigd met de factor. Dit komt op 53 km/h In dit voorbeeld is de maximum grens van 30 dus overschreden.
____________________________________________________________________________________ 150
Ryheul Kristof
CAN EDI Diagnostic Tool
12.3 String formatting
12.3.1 Formateren van getallen
Specifier
Type
c d e f g n
Currency Decimal Scientific Fixed point General Numver with commas for thousands Round trippable Hexadecimal
f x
Specifier
Format
Output (double 2.89)
{0:c} {0:d} {0:e} {0:f} {0:g} {0:n}
$2.89 System.FormatException 2.890000e+000 2.89 2.89 2.89
{0:r} {0:x4}
2.89 System.FormatException System.FormatException db28
Type
Format
{0:00.0000} {0(#).##} {0:0.0} {0:0,0}
2100.6700 (2100).67 2100.67 2,100
,.
Zero placeholder Digit placeholder Decimal point Thousand separator Number scaling
{0:0,.}
2
%
Percent
{0:0%}
210067%
e
Exponent placeholder
{0:00e+0}
21e+2
0 # . ,
Output (integer -9432)
Output (double 2100.67)
-$94,32 -9432 -9.4320000e+004 -9432.00 -9432 -9,432
Note
Pads with zeroes
Must be between two zeroes Comma adjacent to period scales by 1000 Multiplies by 100, adds % sign Many exponent formats available
____________________________________________________________________________________ 151
Ryheul Kristof
CAN EDI Diagnostic Tool
12.3.2 Formateren van datums
Specifier
d D t T f F g G M r s u U Y
Type
Short date Long date Short time Long time Full data & time Full date & time (long) Default date & time Default date & time (long) Month day pattern RFC1123 date string Sortable date string Universal sortable, local time Universal sortable, GMT Year month pattern
Specifier
dd ddd dddd f, ff, … gg, … hh HH mm MM MMM MMMM ss tt yy yyyy zz zzzz : /
Type
Day Day name Full day name Second fractions Era 2 digit hour 2 digit hour, 24hr format Minute 00-59 Month 01-12 Month abbreviation Full month name Seconds 00-59 AM or PM Year, 2 digits Year Timezone offset, 2 digits Full timezone offset Separator Separator
Examle (Passed System.DateTime.Now)
26/04/2007 April 26, 2007 11:23 AM 11:23:23 AM April 26, 2007 11:23 AM April 26, 2007 11:23:23 AM 26/04/2007 11:23 AM 26/04/2007 11:23:23 AM April 26 Thu, 26 Apr 2007 11:23:23 GMT 2007-04-26T11:23:23 2007-04-26 11:23:23Z April 26, 2007 11:23:23 AM April, 2007
Example
Example output
{0:dd} {0:ddd} {0:dddd} {0:fff} {0:gg} {0:hh} {0:HH}
26 Thu Thursday 932 A.D. 11 11
{0:mm} {0:MM} {0:MMM} {0:MMMM} {0:ss} {0:tt} {0:yy} {0:yyyy} {0:zz}
23 04 Apr April 23 AM 07 2007 +01
{0:zzz} {0:hh:mm:ss} {0:dd/MM/yyyy}
+01:00 11:23:23 26/04/2007
____________________________________________________________________________________ 152
Ryheul Kristof
CAN EDI Diagnostic Tool
13. CAN EDI Diagnostic Tool Enkele aandachtspunten van de gerealiseerde software en wat nog kan worden gerealiseerd. ‘Trace’ venster
Relatieve representatie van ontvangen boodschappen. Boodschappen kunnen bij naam getoond worden. De vertaling van data naar signalen die in een boodschap vervat zitten kunnen gevisualiseerd worden. Configuratie venster voor relatieve of absolute tijden, hexadecimaal of decimale notatie Prioriteit en/of adres uit de identiteit negeren bij het opzoeken in de database.
Logger
Logging in CANalyzer formaat. Loggen gebeurd automatisch als de buffer vol is. Interface om log bestand te specifiëren..
‘Interactive message generator’ venster
Berichten kunnen verstuurd worden via een druk op de knop of cyclisch (periode instelbaar in milliseconden). Boodschappen die de gebruiker wil versturen voorstellen bij naam. Mogelijkheid om via waardetabellen signalen een waarde te geven. Mogelijkheid tot het klonen van berichten, verwijderen,…
‘Message filter’ vensters
Splitsing van filters klasse en mainform. Implementatie van softwarefilters. Verwijderen van toegevoegde filters.
Configuratie bestanden
Van alle vensters de locatie, grote en zichtbaarheid bijhouden (trace venster, generator venster, database venster, filter vensters). Opslaan van bericht gegevens die in het generator venster aanwezig zijn. Terugzetten van berichten in het generator venster via een configuratie bestand. Opslaan van database gegevens en opnieuw inlezen van database gegevens. Opslaan van filter gegevens. Toevoegen van software filters Configuratie voor logging niet af (pad naar log bestand, aan bestand toevoegen of niet). Configuratie voor traceform niet af (Hex./dec. , relatief/absolute , chronologisch/vast). Configuratie voor bericht informatie vensters.
____________________________________________________________________________________ 153
Ryheul Kristof
CAN EDI Diagnostic Tool
‘Database’ venster
Inlezen van CANalyzer (CANdb++) database bestand (.dbc). Weergeven van berichten, signalen en waardetabellen. Bewerken van berichten e signalen. Onmiddelijke toepassing van de veranderingen Terug wegschrijven van database in CANdb++ formaat. Inlezen van commentaar van zowel berichten en signalen gebeurd niet. Bewerken van waardetabellen niet mogelijk. Layout database venster aanpassen. Bericht layout in het venster om berichten te bewerken nog niet geïmplementeerd. Verwijderen van databases lukt nog niet.
‘Signal monitor’ vensters
Vensters voor het bekijken van signalen zowel grafisch als in tekstvorm. Tekenpaneel om de signalen op te tekenen. Weergeven van signalen die de gebruiker kan selecteren (numeric). Weergeven welke signalen er getoond worden (grafisch). Welke kleur hoort bij welk signaal en deze ook kunnen aanpassen (grafisch). Tekenen van signalen op een paneel (grafisch). Keuze uit verschillende grafieken, in en uitzomen, lopen doorheen de tijd, signalen toevoegen en verwijderen, …
____________________________________________________________________________________ 154
Ryheul Kristof
CAN EDI Diagnostic Tool
Besluiten Reeds uitgevoerde werk •
Begrip van: - recommended practice RP1210A - J1939 standaard - CAN standaard - CAN messages APC214
•
Broncode van September opnieuw bekijken
•
Broncode van CANlogger analyseren
•
Uittekenen testbord (labview)
•
Uitzoeken werking Vector CANalyzer logging
•
Uitzoeken werking Vector CANalyzer database
•
•
•
•
•
•
Berichten op de CAN bus bekijken met Vector CANalyzer en CANlogger Bij CANlogger is dit nog met ruwe data, in Vector CANalyzer kun je spelen met databases om zo de berichten te onderscheiden en op naam te kunnen weergeven. Bekijken werking configuratie bestanden CANlogger Dit is in een XML formaat, dit kan nog verder uitgebreid worden om nog meer functionaliteit toe te voegen aan de applicatie. Probleem met het opstart scherm opgelost. Ontwerp database voorstelling - Inlezen database file (.dbc) - Gegevens van de berichten en signalen in een boomstructuur weergeven. Start ontwerp van UML-diagram voor CANlogger programma. Werken in meerdere bestanden om de duidelijkheid te behouden is wel nodig. Bekijken van aangekochte boeken: - Embedded networking with CAN and CANopen - C# murach, C# for developers.
•
Toepassen van de coding rules
•
Overbodige code weggewerkt
•
Implementeren van log functie in CANlogger
____________________________________________________________________________________ 155
Ryheul Kristof
•
•
•
•
•
•
•
•
•
•
•
•
•
CAN EDI Diagnostic Tool
Testen nieuwe USB dongle van Softing Verschil bekijken tussen de dongle van ifak system en die van Softing Zorgen dat de gegevens in de ‘trace’ venster leesbaar zijn. Implementatie van nieuwe buffer (object array) met een vaste grote van bv. 10000. Event creëren als er een buffer overflow is. Werken met een thread in de traceform om de berichten om de zoveel ms op het scherm te zetten De UpdateThread van de TraceWindow kan zowel verzonden als ontvangen berichten onderscheiden en weergeven in de traceForm. Starten met Visual SourceSafe om de software op te slaan op de server, zodat er mogelijkheid is om labels te plaatsen waardoor het gemakkelijker wordt om het ontwerp van het programma te volgen. Aan de hand van een Microsoft artikel de AutoResetEvent’s omvormen naar een array van WaitHandle’s. Cyclische boodschappen versturen met instelbare periode werkt. De ontvangen en gelezen boodschappen worden in het formaat van CANalyzer opgeslagen in een log bestand. Relatieve representatie van de ontvagen boodschappen werkt. Het verplaatsen van chronologisch naar vaste weergave en omgekeerd kan terwijl de berichten ingelezen worden. De berichten die al op het ‘trace’ venster werden weergegeven voor er veranderd werd naar chronologisch of vast worden niet opnieuw getoond. De logger kan aan en af gezet worden zonder dat het ‘trace’ venster zichtbaar is. Telkens als er een bufferoverflow gedetecteerd wordt zal de logger een event krijgen om de gegevens naar een bestand weg te schrijven. Zowel verzonden als ontvangen berichten kunnen worden opgeslagen in het log bestand. Aanpassen van de layout van verschillende formulieren. Aanmaken van verschillende formulieren voor zowel database, logger, ‘trace’ venster configuratie, … Het mogelijk maken om berichten die in het ‘ generator ’ venster aanwezig zijn te klonen of te verwijderen. Mogelijk maken om berichten aan te maken via beschrijvingen uit de database.
____________________________________________________________________________________ 156
Ryheul Kristof
•
•
•
•
•
•
•
•
CAN EDI Diagnostic Tool
Bewerken van de configuratie file (.xml document) DatabaseForm configuration informatie over de grote, locatie, zichtbaarheid en of de database in gebruik is implementeren. Gegevens over de GeneratorFormItems verwerken in het configuratie bestand. Log informatie zoals het pad naar waar hij moet schrijven ook verwerken in de configuratie file. Het terug inlezen van de configuratie file (.xml document) De grote, locatie en zichtbaarheid van alle vensters terug inlezen. Database informatie terug schrijven naar het formulier om een database te laden of te gebruiken. Bericht gegevens terug in het ‘ generator ’ venster plaatsen Werking van een datagrid leren kennen. Formulier componenten proberen toe te voegen aan een datagrid cel. Dit blijkt dus zeer moeilijk te gaan, de componenten blijven steeds onzichtbaar. Met het .NET framework 2.0 bestaan er speciale componenten om in z’n cel te gebruiken, waardoor het werken met een datagrid veel gemakkelijker gaat. Database voorstelling: Representeren van waardetabellen, signaal waardetabellen. Aanmaken van een hash tabel om de waarde en beschrijving die tot een waardetabel behoren op te slaan. Gegevens van database opslaan in verschillende klassen zodat het geheel overzichtelijk blijft en gemakkelijk aanpasbaar is. Aanmaken van formulieren om signalen en berichten te kunnen bewerken. De berichten in het ‘trace’ venster op naam weergeven aan de hand van de ingeladen database. Mogelijk maken om een database aan het ‘trace’ venster te koppelen zonder dat deze geopend is. MessageInfoForm enkel openen als er een waardetabel aanwezig is voor minstens één signaal die zich in het bericht bevindt die bekeken wordt. Mogelijk maken om extra specifieke informatie van een bericht weer te geven in een apart venster opgesplitst in verschillende signalen. Meerdere berichten tegelijkertijd kunnen bekijken terwijl de meeting nog loopt. Verschillende fouten opgelost veroorzaakt door nieuwe code toe te voegen die de nauwkeurigheid en juistheid verhoogd, waar er vroeger geen problemen waren.
____________________________________________________________________________________ 157
Ryheul Kristof
CAN EDI Diagnostic Tool
Bespreking implementatie van fases
- Bij het terug keren van relatieve naar chronologische presentatie, de lijst bijhouden of niet ? (Slim of dom ‘trace’ venster ?) Implementatie al naargelang of er voldoende tijd is. - De filters voor de berichten in een aparte klasse implementeren. Mogelijkheid om ook de filter eigenschappen op te slaan in de configuratie file. - Implementeren van bericht informatie formulieren in het configuratie bestand. - Mogelijk maken om database bestand weg te schrijven en opnieuw te kunnen openen. Ook testen of dit bestand geopend kan worden via CANalyzer. - Mogelijk maken om berichten aan te maken via beschrijvingen uit de database waarde tabellen. Aan de hand van een beschrijving de waarde uit een waardetabel halen om zo deze waarde in de juiste data byte te plaatsen. - Ervoor zorgen dat de vermenigvuldigingsfactor van een signaal waarde automatisch gebeurd in zowel de ontvagen als de verzonden boodschappen. - De hardware en software filters in een nieuwe klasse schrijven, de software filters implementeren zodat er ook op data kan gefilterd worden. - Configuratie bestand verder bewerken zodanig dat alle gegevens over de vensters opgeslagen wordt. - Bericht informatie formulieren toevoegen aan het configuratie bestand, opslaan van de bericht identiteit, bericht naam, locatie en grote. - Implementeren van een grafische voorstelling van een selectie beschikbare signalen. - Mogelijk maken om bij ontvangen boodschappen die in het ‘trace’ venster komen te staan enkel te controleren of de PGN van het bericht in de database bestaat. Hierdoor creëer je een meerwaarde, omdat je dan geen rekening meer dient te houden met de prioriteit, het destinatie adres of het bron adres. Dit is uitermate belangrijk omdat elke controller een andere prioriteit, destinatie adres of bron adres kan hebben. - Nog enkele layout bewerkingen doorvoeren zodat het geheel visueel mooier wordt.
____________________________________________________________________________________ 158
Ryheul Kristof
CAN EDI Diagnostic Tool
Algemene ervaringen: •
•
•
•
•
•
•
•
•
Oude programmeergewoontes proberen af te leren, nieuwe ontwikkelen, waaronder de ‘coding rules’ die in een apart bestand beschreven staan. Leren om programma’s te ontwerpen die de mogelijkheid bieden om later geïmplementeerd te worden in een ander programma. Om team gericht te kunnen werken dienen er afspraken gemaakt te worden, onder andere om dezelfde stijl van code te behouden zodat deze later gemakkelijk kan worden aangepast. De ontworpen code voldoende aan commentaar voorzien zodat het na een paar maanden nog altijd begrijpbaar is. Tijdig back-ups nemen om geen gegevensverlies te hebben bij een crash. Via Visual SourceSafe kan alle ontwikkelde software op de intranet server bewaart worden. Het grafische aspect is minder belangrijk dan het functionele aspect. In het maken van de layout kruipt het meeste tijd, het .NET framework 2.0 heeft veel meer opties en mogelijkheden dan het .NET framework 1.1. Jammer genoeg wordt de software nog geschreven op het platform 1.1. Door dagelijks of wekelijks een korte stand van zaken te melden, kan je op nieuwe ideeën komen. Ook de opvolging van het project wordt gemakkelijker. Kort overleg kan heel wat duidelijkheid brengen op het geheel.
____________________________________________________________________________________ 159
Ryheul Kristof
CAN EDI Diagnostic Tool
Documentatie en bijlagen Hexadecimale, decimale en binaire getallen
Hexadecimaal (0x)
0 1 2 3 4 5 6 7 8 9 A B C D E F
Decimaal
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Binair
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
De conversies tussen deze 3 soorten notaties dienen goed gekend te zijn, in alle richtingen.
____________________________________________________________________________________ 160
Ryheul Kristof
CAN EDI Diagnostic Tool
Fig. 136 UML Class Diagram Configuration
____________________________________________________________________________________ 161
Ryheul Kristof
CAN EDI Diagnostic Tool
CAN fysieke laag circuits
Fig. 137 Circuit 1 (J1939/11). The circuit has a special short-circuit protection for the CAN_L path. Therefore it uses only low power components but withstands voltages up to +50 V on the bus lines (e.g., load dump). R7, R8, R9, R10 form the biasing network for the recessive state; R5, R6, C1, C2 together with the biasing network form an input filter with a corner frequency of about 1.2 MHz. R3, R4, R15, and R16 provide the drive impedance for Q1, Q2; they should be chosen so that the switching waveforms of CAN_H and CAN_L are symmetrical during transitions. R1 and R2, together with the on-resistance of Q1 and Q2, set the output impedance of the link for the dominant state; D1 and D2 are used for common mode decoupling. R12, R13, D3, Z1, and Q3 switch Q2 off if voltage levels at CAN_L exceed +10V (Q1 is decoupled by D1 in this case). D3 isolates the capacitance of Z1 from the bus line. L1 is used to reduce the amount of high-frequency microprocessor switching noise coupled on the bus. Testing has shown this component to reduce radiated emissions over the test range of 10 KHz to 200 MHz, but particularly below 30 MHz. While this component improves radiated emissions performance, its use is not essential to meeting the requirements of SAE J1939-11 and therefore not required. The radiated emissions performance of ECU must be addressed on an individual basis.
____________________________________________________________________________________ 162
Ryheul Kristof
CAN EDI Diagnostic Tool
Fig. 138 Circuit 2 (J1939/11). This circuit is designed for surface mount components. The resistors R7, R8, and R9 form a biasing network which determines the voltages on the link in the recessive state. The network R5, R6, C1, and C2 form a common mode filter with corner frequency of about 1.5 MHz. The resistors R3, R4, R15, R16 provide the drive impedance for the output transistors Q1 and Q2. To achieve balancing on the link, these components should be adjusted so that drive voltages are symmetrical during transitions from dominant to recessive and recessive to dominant. The resistors R1 and R2 are located so that a natural link current limit of about 100 mA is achieved. This reduces the overall power dissipation in the driver when a short to battery occurs. The dissipation in R1 and R2 during current limit is about 0.25 W. The dissipation in Q1 during a short of CAN_H to ground is also about 0.25 W. The dissipation in Q2 during a short of CAN_L to 32 V is 2.95 W but is limited in time. L1 is used to reduce the amount of high-frequency microprocessor switching noise coupled on the bus. Testing has shown this component to reduce radiated emissions over the test range of 10 KHz to 200 MHz, but particularly below 30 MHz. While this component improves radiated emissions performance, its use is not essential to meeting the requirements of SAE J1939-11 and therefore not required. The radiated emissions performance of ECU must be addressed on an individual basis.
____________________________________________________________________________________ 163
Ryheul Kristof
CAN EDI Diagnostic Tool
Fig. 139 Circuit 3 (J1939/11). This circuit provides a solution utilizing surface mount components and an integrated circuit, U1, instead of the discrete topologies shown in examples A1 and A2. Capacitor C1 provides power supply decoupling for U1 and is typically between 0.01 UF and 0.1 UF. Resistor R1 determines the slope (rise and fall times) of CAN_H and CAN_L while the IC is transmitting. The VREF output, pin 5 of U1, provides a voltage of approximately VCC/2. VREF is required by some CAN protocol controllers for proper operation. Refer to Philips Semiconductor’s Application Note, AN96116, “PCA82C250/251 CAN Transceiver” for additional information regarding the features and use of U1. L1 is used to reduce the amount of high-frequency microprocessor switching noise coupled on the bus. Testing has shown this component to reduce radiated emissions over the test range of 10 KHz to 200 MHz, but particularly below 30 MHz. While this component improves radiated emissions performance, its use is not essential to meeting the requirements of SAE J1939-11 and therefore not required. The radiated emissions performance of ECU must be addressed on an individual basis
____________________________________________________________________________________ 164
Ryheul Kristof
CAN EDI Diagnostic Tool
Plaatsing van alle bits in een uitgebreid en standaard frame
Fig. 140 MAPPING OF SAE J1939 INTO CAN’S ARBITRATION AND CONTROL FIELDS ____________________________________________________________________________________ 165
Ryheul Kristof
CAN EDI Diagnostic Tool
Literatuurlijst Online geraadpleegde bronnen:
Kvaser AB (2005). CAN (Controller Area Network). http://www.kvaser.com (01-05-2007). CAN in Automation CiA (2006). Controller Area Network (CAN). http://www.can-cia.org (01-05-2007). M J Schofield (2006). Controller Area Network (CAN bus). http://www.mjschofield.com/index.htm (01-05-2007). Tibbett, Steve (2005). String Formatting in C#. http://blog.stevex.net/index.php/stringformatting-in-csharp (01-05-2007). ifak system GmbH (2007). Is CAN USB – USB Interface for CAN/CANopen Networks. http://www.ifak-system.com/fbk/can/index.php?level=isCANUSB (01-05-2007). Can-cursus ontwikkeld in het kader van het HOBUCAN-project, Ontwikkeling van een intelligente interface voor analyse en verificatie van datacommunicatie in moderne voertuigen. http://project.iwt-kdg.be/hobucan/HobuFilesDir/OnzeCursus/MyMainPage.html (01-05-2007). Braun David, Silvis Jeff, Shapiro Alex (2001). Unified Modeling Language (UML) Tutorial. http://pigseye.kennesaw.edu/~dbraun/csis4650/A&D/UML_tutorial (01-05-2007). Mayo Joe. Writing C# Expressions. http://www.csharphelp.com/archives/archive169.html (01-05-2007). DANA Corporation (2004). Off-Highway Solutions. http://www.dana.com (01-05-2007). Intranet website DANA Spicer Off-Highway. Geraadpleegde e-books:
SAE International (2005). SAE J1939 standard. http://www.sae.org TMC/ATA (2003). RP1210A recommended practice (Windows Communication API). DANA Spicer Off-Highway (09/2006). User manuel Tcon.H. DANA Spicer Off-Highway (01/2003). APC214 CAN EDI Byte/bit description. DANA Spicer Off-Highway (09/2006) APC214 ERROR CODES & DESCRIPTION.
____________________________________________________________________________________ 166
Ryheul Kristof
CAN EDI Diagnostic Tool
Geraadpleegde boeken:
Pfeiffer, Ayne, Keydel (2003). Embedded networking with CAN and CANopen. San Clemente, RTC Books. ISBN 0-929392-78-7. Murach, Lowe (2004). Murach’s C#. Fresno, Mike Murach & Associates. ISBN 1-890774-22-7. Gebruikte help-functies in programma’s: • • • • • •
Microsoft Visual Studio 2003 professional Microsoft msdn library Microsoft Visual SourceSafe Microsoft Office Visio (UML-diagram) Vector CANalyzer Vector CANdb++
____________________________________________________________________________________ 167