Professional Documents
Culture Documents
Opleiding elektronica-ICT
Afstudeerrichting ICT
Kristof Ryheul
o.l.v.
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
Ryheul Kristof
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
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
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 programmas 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
Inhoudsopgave
Mededeling .............................................................................................................4
Woord vooraf .........................................................................................................5
Abstract ..................................................................................................................6
Inhoudsopgave .......................................................................................................7
Lijst met illustraties...............................................................................................9
Lijst met afkortingen...........................................................................................12
1. Inleiding ............................................................................................................14
2. Project omschrijving .......................................................................................14
2.1 Situering............................................................................................................................14
2.2 Doel...................................................................................................................................14
2.3 Tools & skills: ...................................................................................................................16
Ryheul Kristof
____________________________________________________________________________________
8
Ryheul Kristof
Ryheul Kristof
Ryheul Kristof
____________________________________________________________________________________
11
Ryheul Kristof
____________________________________________________________________________________
12
Ryheul Kristof
PDO
PGN
RAM
RF
RP
RFC
RS232
SA
SAE
SDO
SOF
TC
TTCAN
UART
UML
USB
WYSIWYG
WYWIWYG
____________________________________________________________________________________
13
Ryheul Kristof
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 definiren 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.
____________________________________________________________________________________
14
Ryheul Kristof
- 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).
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
____________________________________________________________________________________
16
Ryheul Kristof
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.
____________________________________________________________________________________
17
Ryheul Kristof
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
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.
____________________________________________________________________________________
19
Ryheul Kristof
STEEL PROD.
ASSEMBLY
V
New assembly
Medische dienst
S
ROUGH
STORES
PARKING
PARKING
MAINTENANCE
HEATTREAT
TOOLROOM
& CRIB
STORES
OFFICES
SHIPPING
receptie
: verfopslag
V
: EHBO
: spuitkabine
S
: cafetaria
: verzamelplaats
bij evacuatie
Op onderstaande foto vind je het grondplan van DANA Spicer Off-Highway Brugge.
Ik bevind mij in het rode gedeelte rechtsboven (offices).
ENG
.
L AB
N
W
E
20
Ten Briele 3
Ten Briele 1
Ryheul Kristof
3.2Bedrijfsorganigram
3.3Overzicht productiestappen
Enkele productiestappen:
Vertanding
Normaliseren
Hardingsproces
Draaien/frezen
Slijpen/harddraaien
Wassen, drogen en schilderen van transmissie
Inpakken en stockeren
____________________________________________________________________________________
21
Ryheul Kristof
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:
- 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 cordinator.
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.
____________________________________________________________________________________
22
Ryheul Kristof
Ryheul Kristof
____________________________________________________________________________________
24
Ryheul Kristof
____________________________________________________________________________________
25
Ryheul Kristof
CAN gebruikt NRZ encodering (met bit-stuffing) voor data communicatie op een differentile
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 schemas of een op bit gebaseerde arbitrage om de toegang tot de bus te controleren,
het bericht bevat ook een prioriteit.
____________________________________________________________________________________
26
Ryheul Kristof
____________________________________________________________________________________
27
Ryheul Kristof
Personen autos
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
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
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.
____________________________________________________________________________________
29
Ryheul Kristof
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.
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.
Ryheul Kristof
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:
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.
____________________________________________________________________________________
31
Ryheul Kristof
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
IC 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.
Ryheul Kristof
De standaard zegt niet dat het arbitrage veld gebruikt moet worden als bericht identificatie,
niettegenstaande het heel veel gebruikt wordt.
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 autos (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.
____________________________________________________________________________________
33
Ryheul Kristof
Snelheid (kbps)
1000
500
250
125
10
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
4.7.7 Spanningsniveaus
4.7.7.1 Low Speed CAN
Signaal
CAN_H
CAN_L
Eenheid
Eenheid
Volt
Volt
Signaal
CAN_H
CAN_L
Volt
Volt
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
toestand over te schakelen (bijvoorbeeld een shut-down). Zoals het uitschakelen van
verschillende componenten in een bepaalde volgorde. (zie fig. 13)
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)
Ryheul Kristof
Meer info over de CAN bus connectoren vind je in het volgende deel punt 4.8.
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
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
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
Pin
1
2
3
4
5
6
7
8
Signaal
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
Pin
1
2
3
4
5
Signaal
CAN-SHLD
(CAN_V+)
CAN_GND
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 gemplementeerd. De OBD (On Board Diagnostics)
connector.
____________________________________________________________________________________
39
Ryheul Kristof
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
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.
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 Error gesignaleerd.
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 .
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
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:
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.
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 beindigingverbinding
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
____________________________________________________________________________________
43
Ryheul Kristof
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
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 hirarchisch
gelaagde benadering.
In de CAN wereld bestaan er verschillende gestandaardiseerde
applicatie protocol lagen. Sommige zijn heel specifiek en verwant
met het applicatie gebied.
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 gentegreerd 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
CANopen kent een breed toepassingsgebied, vooral in Europa, waar het de toonaangevende
standaard vormt voor industrile, 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 industrile 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
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
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
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:
____________________________________________________________________________________
48
Ryheul Kristof
De API ondersteunt een minimum van 16 clinten en een maximum van 128 clinten.
5.1.2.2 Verzend en ontvangst buffer
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
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 clint. 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 TMCs RP1210 communicatie API is
gemplementeerd 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.
____________________________________________________________________________________
50
Ryheul Kristof
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 clint 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 clint programma.
De normale connectie is in Converted Mode. In Converted Mode kunnen meerdere clinten
connectie maken.
Protocolnamen gebruikt in clint 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 commandos
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 clint data
verwijderd, alle actieve filters die bij de applicatie behoren worden afgezet.
Als de laatst geconnecteerde clint 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
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
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
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 gedentificeerd 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 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.
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
____________________________________________________________________________________
53
Ryheul Kristof
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
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 echon 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.
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.
____________________________________________________________________________________
54
Ryheul Kristof
CAN
De eerste vier bytes bevatten de tijd. Als het commando Set Echo Transmitted Messages de
API geconfigureerd heeft om verzonden berichten te echon 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.
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
Command Number
0
3
4
5
7
14
15
16
____________________________________________________________________________________
55
Ryheul Kristof
17
18
19
Dit commando laat de gebruiker toe om het fysische apparaat opnieuw in te stellen. Dit
commando is enkel toegelaten als er maar n clint aangesloten is. Als er meerdere clinten
aangesloten zijn stuurt de functie een ERR_MULTIPLE_CLIENTS_CONNECTED fout terug.
Na dit commando dient de clint 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.
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
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 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.
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 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
Elke fabrikant mag zijn eigen implementatie van de RP1210 API maken. Elke PC kan een
aantal DLLs met namen zoals VENDORX.DLL, VENDORX32.DLL, VENDORY.DLL of
VENDORY32.DLL hebben. Deze DLLs 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 DLLs 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:
[RP1210Support]
APIImplementations=[string],[string],[string],,[string]
De strings bevatten de naam van het DLL-INI koppel geassocieerd met een bepaalde fabrikant
implementatie.
Voorbeeld:
[RP1210Support]
APIImplementations=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 gecreerd 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
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]
[DeviceInformationd1]
DeviceID=[number]
DeviceDescription=[string,p]
COM1
COM2
COMN
LPT1
LPT2
LPTN
PCMCIA
USB
DeviceName=[string]
DeviceParameters=[string]
[DeviceInformationd2]
DeviceID=[number]
DeviceDescription=[string,p]
DeviceName=[string]
DeviceParameters=[string]
.
____________________________________________________________________________________
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]
[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
[ProtocolInformation1]
ProtocolDescription=Generic CAN
ProtocolString=CAN
Devices=0
[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
____________________________________________________________________________________
62
Ryheul Kristof
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
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 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
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
-40C to +80C
IP67
24V
18V-30V
5 min @ 48V
500ms @ 220V
2ms @ 300V
12 Amperes
On/Off inputs
< 0.8V
> 2.3V
-60V
+60V
Analogue inputs
3 kOhm
0 to 5 V
10 bit
-60V
+60V
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
On/Off outputs
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
5.2.2 Functies
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
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
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 ECUs te steunen die
fysisch door het voertuig kan worden verdeeld.
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.
____________________________________________________________________________________
68
Ryheul Kristof
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 ECUs op
een netwerk. Het maximum aantal ECUs 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 ECUs worden ook CAN_H en CAN_L genoemd. De derde connectie
voor de beindiging 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 geindigde bus. Dit niveau wordt verstuurd
____________________________________________________________________________________
69
Ryheul Kristof
tijdens dat de bus niets doet (idle). Het dominante niveau wordt vertegenwoordigd door
een differentieel spanning groter dan een minimumdrempel.
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 beindiging zou verliezen als n
van deze ECUs weg zou zijn.
Ryheul Kristof
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.
compenseren en kunnen langer of korter gemaakt worden door het opnieuw synchroniseren.
Sample Point is het tijdspunt waar het bus niveau gelezen en genterpreteerd wordt als de
waarde van de respectievelijke bit. De locatie is aan het einde van PHASE_SEG1.
5.3.4.2 Topologie
____________________________________________________________________________________
71
Ryheul Kristof
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 beindiging zou verliezen als n
van deze ECUs weg zou zijn.
De J1939/15 definieert Type I en Type II ECUs. Type I ECUs bevatten geen bus
afsluitingsweerstand RL. Type II ECUs bevatten een bus afsluitingsweerstand en zal
geplaatst worden op n of beide uiteinden van een J1939/15 netwerk.
Fysieke media
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
5.3.6.2 Topologie
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 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.
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
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:
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
Priority (P)
Reserved (R)
Data page (DP)
PDU format (PF)
PDU specific (PS)
____________________________________________________________________________________
75
Ryheul Kristof
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.
Ryheul Kristof
PDU1 format
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)
Ryheul Kristof
Axle ratio
Tire size
Empty vehicle weight
Maximum engine speed
____________________________________________________________________________________
78
Ryheul Kristof
Input/output state
Speed sensor rpm
Traveled distance (reset able)
Total traveled distance
Program type
Information to program
Calibration type
Calibration process
Reset type
Reset process
____________________________________________________________________________________
79
Ryheul Kristof
Vehicle speed
Transmission temperature
Engine speed
Auto/manual mode
Warning light state
Operating mode
____________________________________________________________________________________
80
Ryheul Kristof
Calibration type
Information
5.4.14 TC_TO_CVC_3
Transmission controller to central vehicle controller
Message identifier: 18FF26xx
Repetition rate: on request
Automatic/manual mode
Warning light status
Operation mode
Brake pedal position
Desired engine speed
Explanation
There is a problem related to the internal
RAM
There is a problem related to the system RAM
21.00
21.01
22.00
22.01
00.53
Controllers action
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
____________________________________________________________________________________
81
Ryheul Kristof
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
____________________________________________________________________________________
82
Ryheul Kristof
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;
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
uschort
str
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)
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.
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
Ryheul Kristof
____________________________________________________________________________________
86
Ryheul Kristof
Ryheul Kristof
Ryheul Kristof
Freq0-3
Ain0-3
Do0-3
Ao0-6
Di0-9
____________________________________________________________________________________
89
Ryheul Kristof
2 CAN connectoren
RS232 connector
Voedingsaansluiting
____________________________________________________________________________________
90
Ryheul Kristof
Hardware
USB
Snelheid
CAN
Asic
SJA 1000
Connector
1 Sub-D 9 pin
Snelheid
Interfaces
DLL
Werking
Software
OS
Fullspeed: 12Mbps
Highspeed: 480Mbps
Tot 16 interfaces
parallel
____________________________________________________________________________________
91
Ryheul Kristof
Ryheul Kristof
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
00
01
10
11
Big Endian
00000000
00000000
00001001
10111001
Litlle Endian
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
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
____________________________________________________________________________________
94
Ryheul Kristof
Snelheidssensoren
Druksensoren
Temperatuursensoren
Ryheul Kristof
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 programmas.
Door de programmeerbaarheid biedt het vele mogelijke toepassingen:
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
____________________________________________________________________________________
96
Ryheul Kristof
De data segmenten van de berichten worden weergegeven in functie van de tijd in een X-Y
diagram.
8.1.1.3 Trace Window
____________________________________________________________________________________
97
Ryheul Kristof
____________________________________________________________________________________
98
Ryheul Kristof
Informatie over de vooruitgang van de meting wordt hier getoond. Schrijf instructies van
CAPL programmas 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.
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).
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
programmas. Als het programma venster wordt geminimaliseerd worden deze ook
geminimaliseerd. Ze kunnen niet bereikt worden door de toetsen combinatie <alt>-<tab>.
____________________________________________________________________________________
99
Ryheul Kristof
Actieve programmas kunnen deze vensters overlappen, ze zijn zichtbaar in de taakbalk en via
de toetsen combinatie <alt>-<tab>. Dit venster blijft open staan wanneer het programma wordt
geminimaliseerd.
8.1.3 CAPL browser
____________________________________________________________________________________
100
Ryheul Kristof
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.
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
De volgende screenshots tonen enkele functies van het programma aan, deze hebben verder
geen uitleg nodig de figuurnaam zegt al meer dan genoeg.
Ryheul Kristof
____________________________________________________________________________________
103
Ryheul Kristof
Ryheul Kristof
0.390000 1 CFF2303x
0.406000 1 C000003x
0.422000 1 C000003x
0.437000 1 CFF2303x
0.437000 1 C000003x
0.453000 1 C000003x
0.453000 1 CFF2303x
0.468000 1 C000003x
0.468000 1 C000003x
0.484000 1 CFF2303x
0.484000 1 C000003x
0.500000 1 C000003x
0.500000 1 CFF2303x
.
.
24.765000 1 CFF2303x
24.781000 1 C000003x
24.797000 1 C000003x
24.797000 1 CFF2303x
24.812000 1 C000003x
24.812000 1 CFF2303x
24.828000 1 C000003x
End Triggerblock
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
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
Ryheul Kristof
Ryheul Kristof
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" ;
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
____________________________________________________________________________________
108
Ryheul Kristof
____________________________________________________________________________________
109
Ryheul Kristof
____________________________________________________________________________________
110
Ryheul Kristof
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.
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
____________________________________________________________________________________
112
Ryheul Kristof
Ryheul Kristof
____________________________________________________________________________________
114
Ryheul Kristof
Ryheul Kristof
Ryheul Kristof
____________________________________________________________________________________
117
Ryheul Kristof
Ryheul Kristof
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.
Ryheul Kristof
____________________________________________________________________________________
120
Ryheul Kristof
____________________________________________________________________________________
121
Ryheul Kristof
____________________________________________________________________________________
122
Ryheul Kristof
Ryheul Kristof
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.
____________________________________________________________________________________
124
Ryheul Kristof
Ryheul Kristof
Ryheul Kristof
____________________________________________________________________________________
127
Ryheul Kristof
Ryheul Kristof
Ryheul Kristof
Ryheul Kristof
Ryheul Kristof
Ryheul Kristof
10.2.6 Inladen van laatste configuratie bestand via parameters in het register
Ryheul Kristof
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
11.1.2 De menubar
File menu
Edit menu
View menu
Measurement menu
Options menu
Window menu
Help Menu
Er zijn nog 2 extra menus die zichtbaar worden als het trace venster of het database venster
actief wordt. Deze respectievelijke menus kunnen dus alleen gebruikt worden wanneer n van
de twee vensters geopend en actief zijn.
11.1.3 De toolbar
Via de toolbar kun je bijna alle functies doen als met de menubar:
____________________________________________________________________________________
135
Ryheul Kristof
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.
____________________________________________________________________________________
136
Ryheul Kristof
11.2 De trace-window
11.2.1 Het trace venster
Dit venster toont alle informatie die een bericht bevat. De lijst heeft de volgende velden:
Number
Time
ID
Name
Type
Data
____________________________________________________________________________________
137
Ryheul Kristof
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
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
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
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 Diagnostic Tool)
____________________________________________________________________________________
141
Ryheul Kristof
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)
Ryheul Kristof
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.
____________________________________________________________________________________
143
Ryheul Kristof
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
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
Ryheul Kristof
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
gemplementeerd 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.
____________________________________________________________________________________
146
Ryheul Kristof
Hier kunnen geselecteerde signalen grafisch weergegeven worden. Deze functie werd niet
verder afgewerkt.
11.8 Inladen van een recent configuratie bestand
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.
Ryheul Kristof
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
____________________________________________________________________________________
149
Ryheul Kristof
Data
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
3
Factor Offset
1
0
Minimum Maximum
0
7
16
0,0039 0
0625
30
____________________________________________________________________________________
150
Ryheul Kristof
f
x
Specifier
Type
Currency
Decimal
Scientific
Fixed point
General
Numver with
commas for
thousands
Round trippable
Hexadecimal
Format
{0:c}
{0:d}
{0:e}
{0:f}
{0:g}
{0:n}
{0:r}
{0:x4}
2.89
System.FormatException
System.FormatException db28
Type
Format
{0:00.0000}
{0(#).##}
{0:0.0}
{0:0,0}
,.
Zero placeholder
Digit placeholder
Decimal point
Thousand
separator
Number scaling
Output
(double 2100.67)
2100.6700
(2100).67
2100.67
2,100
{0:0,.}
Percent
{0:0%}
210067%
Exponent
placeholder
{0:00e+0}
21e+2
0
#
.
,
Note
Pads with zeroes
____________________________________________________________________________________
151
Ryheul Kristof
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
Example
{0:dd}
{0:ddd}
{0:dddd}
{0:fff}
{0:gg}
{0:hh}
{0:HH}
Example output
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
____________________________________________________________________________________
153
Ryheul Kristof
Database venster
9
9
9
9
9
8
8
8
8
8
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
Besluiten
Reeds uitgevoerde werk
Begrip van:
- recommended practice RP1210A
- J1939 standaard
- CAN standaard
- CAN messages APC214
____________________________________________________________________________________
155
Ryheul Kristof
Aan de hand van een Microsoft artikel de AutoResetEvents omvormen naar een array
van WaitHandles.
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.
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
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 zn
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.
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
____________________________________________________________________________________
158
Ryheul Kristof
Algemene ervaringen:
De ontworpen code voldoende aan commentaar voorzien zodat het na een paar
maanden nog altijd begrijpbaar is.
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
ideen komen. Ook de opvolging van het project wordt gemakkelijker.
____________________________________________________________________________________
159
Ryheul Kristof
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
____________________________________________________________________________________
161
Ryheul Kristof
____________________________________________________________________________________
162
Ryheul Kristof
____________________________________________________________________________________
163
Ryheul Kristof
____________________________________________________________________________________
164
Ryheul Kristof
Fig. 140 MAPPING OF SAE J1939 INTO CANS ARBITRATION AND CONTROL FIELDS
____________________________________________________________________________________
165
Ryheul Kristof
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
Geraadpleegde boeken:
Pfeiffer, Ayne, Keydel (2003). Embedded networking with CAN and CANopen.
San Clemente, RTC Books. ISBN 0-929392-78-7.
Murach, Lowe (2004). Murachs C#. Fresno, Mike Murach & Associates.
ISBN 1-890774-22-7.
____________________________________________________________________________________
167