Masterproef CANopen in mobiele automatisatie
Studiegebied Industriële wetenschappen en technologie Opleiding Master of Science in de industriële wetenschappen: elektromechanica Academiejaar 2011-2012
Jens Vandamme
Academische bachelor- en masteropleidingen, Graaf Karel de Goedelaan 5, 8500 Kortrijk
Voorwoord Naar aanleiding van de masterproef die in het laatste jaar master elektromechanica aan bod komt kreeg ik de opdracht een onderwerp te kiezen. Doordat ik reeds een bacheloropleiding autotechnologie in het VHTI te KATHO Kortrijk achter de rug had en mijn interesse in de mobiele wereld nog altijd zeer groot is leek het me dan ook evident om een onderwerp in deze branche te zoeken. Via het onderzoekscentrum Netwerken in voertuigen van het KATHO werd het me mogelijk gemaakt om mee te helpen aan het onderzoek “CANopen in de mobiele automatisering”. Daar ik niet de richting automatisering noch elektrotechniek volg maar echter elektromechanica leek deze automatiseringsgetinte opdracht niet een evidente keuze. Door mijn voorkennis van het CAN verhaal in voertuigen die ik reeds in mijn bacheloropleiding meegekregen heb samen met de cluster factory and process automation uit het schakeljaar en een hoop leergierigheid zag ik deze kans echter wel zitten. Het principe van CAN is dan ook enorm belangrijk geworden in de mobiele wereld. Verschillende netwerken zijn hieraan verwant of werken op hetzelfde principe. Daar CANopen relatief nieuw is in dit verhaal en mijn kennis en interesse omtrent deze materie aan uitbreiding toe was bleek de keuze voor een studie inzake CANopen in mobiele toepassingen hier een logisch gevolg uit. Ook is het de bedoeling dat dit verhaal niet louter theoretisch maar praktisch zal geïmplementeerd worden naar een mobiele toepassing verwezenlijkt door enkele studenten van het VHTI. Tijdens de periode van mijn masterproef is het dus ook de bedoeling dat ik deze studenten help of ondersteun in hun zoektocht naar dit CANopen verhaal. Ik hoop dus via deze masterproef anderen zoals u te overtuigen van het nut van een open, gestructureerd en gestandaardiseerde CANopen verhaal. Graag had ik ook nog enkele mensen bedankt zoals mijn beide promotoren Frans Devolder en Henk Capoen. Dit voor hun steun en enthousiasme die in dit project werden gestopt samen met het nodige werk en kopzorgen die ermee teweeg gebracht werden. Hiernaast wil, de bachelor studenten autotechnologie, Dries Pottevijn en Sean Dejonghe bedanken voor de inzet en het harde werk gedurende het jaar door. Samen met Sander Leys, Niels Liefooghe en Frederique Tranoy hebben beiden ook tijdens hun geïntegreerde groepswerk periode veel werk verricht in het bouwen van de opstelling, hierdoor kon deze masterproef dan ook zonder problemen verlopen waarvoor dank. Als laatste wil ik zeker ook mijn ouders bedanken om me de mogelijkheid te geven ongestoord verder te studeren. Zonder hun harde werk en inzet zou deze kans immers niet mogelijk zijn. Samen met mijn broer en vrienden waren zij ook een steun op de mindere momenten. Jens Vandamme
i
Abstract CAN networks are widely used in different types of communication systems for automatisation purposes or automotive engineering. The advantages of these systems are already been proven, this can be seen in frequent use of these systems on trucks and agriculture vehicles. These systems mostly use the SAE J1939 norm on the application level. CANopen is relatively new in this and makes a new protocol on this layer. All other layers underneath this protocol are copied from other CAN networks like the SAE J1939. CANopen uses a so called object dictionary with inside the configuration en mapping of the node. This interpretation is bases on the CiA 301 norm developed by CiA (CAN in Automation). In short, CANopen tries to fill in a CAN network on the application layer to make it uniform en logical in its usage and building. By doing this it becomes possible to develop a network than can work with different types of parts. In other words when a parts brakes down, you can replace this part by a different one of a different manufacturer without changing anything in the program. The purpose of this thesis is to implement the theoretical knowledge which has been gathered throughout the year in an educational application. This application will be built by several student of the course automotive technology of the KATHO department VHTI and tries to simulate an equipment that would be built on a truck. There will be two networks implemented in this application. One of these networks works with the SAE J1939 norm and the other one works merely with the CANopen protocol. In reality mostly there will be a combination of these two networks, therefore this application is a perfect option to try and copy such thing. The application will be a wagon with four hydraulic cylinders attached to it and can self-level itself or can be controlled by hardware or by software. A joystick will be mounted together with two displays and a GPRS module. With this GPRS module it will be possible to monitor the application from distance. The two displays are used to image several values whom are measured or to transmit several messages. By example it is possible with one of the displays to control the other nodes like a master and to change their states. In a further stage it will be possible to expand this application or to let the application send a SMS message to a cell phone when there’s an error.
ii
Deze masterproef werd gerealiseerd met de ondersteuning van het “Laagdrempelig Expertise- en Dienstverleningscentrum” “Netwerken in voertuigen” van de bachelor opleiding autotechnologie, departement technologie en informatica (VHTI) van het KATHO te Kortrijk. Via een netwerk van Laagdrempelige Expertise- en Dienstverleningscentra (afgekort LED) wil de Provincie West-Vlaanderen de kennis en expertise die binnen de drie West-Vlaamse hogescholen HOWEST, KATHO en KHBO aanwezig is vlot ter beschikking stellen van ondernemingen en non-profit organisaties. Het LED netwerk wordt gesteund door de provincie West-Vlaanderen, de Europese Unie, het Europees Fonds voor Regionale Ontwikkeling en de Vlaamse overheid. http://www.lednetwerk.be Het laagdrempelig expertise- en dienstverleningscentrum (LED) “Netwerken in voertuigen” bestudeert en onderzoekt netwerken in personenwagens, bedrijfsvoertuigen, landbouwvoertuigen en –machines. Bedrijven en organisaties kunnen beroep doen op dit expertisecentrum voor advies, opleidingen, probleemoplossing, onderzoek, metingen, begeleiding van eindwerken, enzovoort.
Contact : Frans Devolder, docent autotechnologie.
[email protected] http://netwerken-in-voertuigen.katho.be
iii
Lijst met afkortingen ACK CAN CAN_H CAN_L CCD CCS CiA COB ID CONST CPU CRC DCF DLC EDS EMCY EOF FB I/O ID IDE ISO NMT OB OSI PDO PLC POU RO R_PDO RTR RW SAE SDO SOF SRR SYNC T_PDO WO Xbin / Xb Xdec / Xd Xhex / Xh
Acknowledgement Controller Area Network CAN High CAN Low Command Code Client Command Specifier CAN in Automation Communication Object Identifier Constante Central Processing Unit Cyclic Redundancy Check Device Configuration File Data Length Code Electronic Data Sheet Emergency End Of Frame Function Blok Input/Output Identifier Identifier Extension International Organization for Standardization Network Management Object Dictionary Open Systems Interconnection Process Data Object Programmable Logic Controller Program Organization Unit Read Only Receive Process Data Object Remote Transmission Request Read Write Society of Automotive Engineers Service Data Object Start Of Frame Substitue Remote Request Synchronisation Transmit Process Data Object Write Only Getal X is binair Getal X is decimaal Getal X is hexadecimaal
iv
Inhoudsopgave 1
2
Inleiding _______________________________________________________________ 1 1.1
Doelstellingen_____________________________________________________________ 1
1.2
Verloop __________________________________________________________________ 1
1.3
Voorstelling bedrijf_________________________________________________________ 1
CoDeSys _______________________________________________________________ 3 2.1
Algemene indeling _________________________________________________________ 3
2.2
Target settings ____________________________________________________________ 3
2.3
Program Organization Unit (POU) _____________________________________________ 4
2.4
Data types________________________________________________________________ 4
2.5
Visualizations _____________________________________________________________ 5
2.6
Resources ________________________________________________________________ 6
2.6.1 2.6.2
3
Library Manager ________________________________________________________________ 6 PLC Configuration _______________________________________________________________ 7
CANopen _______________________________________________________________ 8 3.1
Hiërarchische communicatieverhoudingen van de netwerkmodules _________________ 9
3.1.1 3.1.2 3.1.3
Master/slave ___________________________________________________________________ 9 Server/cliënt ___________________________________________________________________ 9 Producer/consumer _____________________________________________________________ 9
3.2
Samenstelling van een CANopen bericht _______________________________________ 9
3.3
Identifiers (adressen) in CANopen ____________________________________________ 10
3.3.1 3.3.2 3.3.3 3.3.4
COB ID _______________________________________________________________________ 10 CAN-ID _______________________________________________________________________ 10 Download ID __________________________________________________________________ 10 Node ID ______________________________________________________________________ 10
3.4
Object Dictionary/EDS file __________________________________________________ 11
3.5
Communicatie objecten in de COB ID _________________________________________ 13
3.5.1
3.6
PDO communicatie objecten (Process Data Objects) _____________________________ 15
3.6.1 3.6.2 3.6.3 3.6.4 3.6.5 3.6.6 3.6.7
3.7
Functie codes in de COB ID _______________________________________________________ 14
PDO algemeen _________________________________________________________________ 15 PDO transmissie modes _________________________________________________________ 16 T_PDO/R_PDO _________________________________________________________________ 16 PDO activeren _________________________________________________________________ 17 PDO transmissie types___________________________________________________________ 18 PDO communicatie parameters ___________________________________________________ 19 PDO mapping parameters ________________________________________________________ 21
SDO communicatie objecten (Service Data Objects) _____________________________ 22 v
3.7.1 3.7.2 3.7.3
SDO data uitwisseling ___________________________________________________________ 22 Structuur van een SDO bericht ____________________________________________________ 23 SDO read data: de master voert een lees operatie uit _________________________________ 24
3.8
Synchronisation (SYNC 80hex - 100dec) ________________________________________ 25
3.9
Emergency service ( EMCY 80hex + node ID) ____________________________________ 25
3.10
Network management (NMT) _____________________________________________ 27
3.10.1 3.10.2 3.10.3 3.10.4 3.10.5
3.11
4
Samenstelling van een NMT bericht ________________________________________________ 28 NMT error service control (700hex) – NodeGuarding of Heartbeat ________________________ 28 Samenstelling NMT error control ‘Node guarding/ Life guarding ‘ bericht _________________ 29 Connection Error _______________________________________________________________ 30 Samenstelling NMT error control ‘Heartbeat’ bericht _________________________________ 30
TIME object (TIME 100hex – 256dec) _________________________________________ 31
Praktische opstelling ____________________________________________________ 32 4.1
CAN netwerken __________________________________________________________ 32
4.2
Opstelling _______________________________________________________________ 33
4.3
Componenten ____________________________________________________________ 33
4.3.1 4.3.2 4.3.3 4.3.4 4.3.5 4.3.6 4.3.7
5
IFM CR0421 Fuse/Relay en IFM CR0403 Controller ____________________________________ 33 IFM CR0451 Display _____________________________________________________________ 34 IFM CR2032 I/O Module _________________________________________________________ 34 IFM CR2102 Inclinometer ________________________________________________________ 34 IFM CR3106 GPRS module _______________________________________________________ 35 Sauer-Danfoss J7000 Joystick _____________________________________________________ 35 Sauer-Danfoss PVG 32 PVED-CC Ventielen __________________________________________ 35
Praktische implementatie ________________________________________________ 36 5.1
Berichten op bus _________________________________________________________ 36
5.2
Opbouw standaard CANopen project met CoDeSys ______________________________ 37
5.2.1 5.2.2
5.3
Met CANopen configurator in CoDeSys _____________________________________________ 38 CANopen programmacode schrijven _______________________________________________ 49
NMT berichten opstellen ___________________________________________________ 50
6
Programmatie _________________________________________________________ 55
7
Volledige uitwerking logging bestand ______________________________________ 59
8
Besluit ________________________________________________________________ 67
A.
Bijlage 1: Voorbeeld EDS file ____________________________________________ 69
B.
Bijlage 2: Random logging bestand _______________________________________ 74
C.
Bijlage 3: Logging reset I/O module ______________________________________ 78
vi
Lijst van tabellen Tabel 1: een uittreksel uit de structuur van de object dictionary ......................................................................... 11 Tabel 2: voorbeelden van objecten uit de object dictionary ................................................................................ 12 Tabel 3: tabel met functie codes ........................................................................................................................... 14 Tabel 4: subindexen voor de PDO (communicatie) parameters ........................................................................... 20 Tabel 5: Voorbeelden van enkele CCD's................................................................................................................ 23 Tabel 6: verklarende lijst van CCD's uit figuur 27 .................................................................................................. 24 Tabel 7: invulling databytes EMCY bericht ............................................................................................................ 26 Tabel 8: lijst met statussen ................................................................................................................................... 27 Tabel 9: invulling command specifier.................................................................................................................... 28 Tabel 10: samenstelling databyte 05h .................................................................................................................. 29 Tabel 11: samenstelling databyte 85h .................................................................................................................. 29 Tabel 12: NMT service van enkele databytes........................................................................................................ 30 Tabel 13: informatie in verband met het bericht 000h ......................................................................................... 37 Tabel 14: informatie in verband met het bericht 603h ......................................................................................... 37 Tabel 15: verduidelijking node ID.......................................................................................................................... 48 Tabel 16: verklaring berichten uit logging bestand ............................................................................................... 49 Tabel 17: deel van logging bestand uit bijlage C: reset I/O module + verklaringen berichten ............................ 52 Tabel 18: bericht met read-request(40) op index 1003(D1 D2) subindex 01(D3) aan module met node ID = 3 .. 57 Tabel 19: bericht met antwoord van module 3 op read-request van index 1003 subindex 01 ............................ 57 Tabel 20: volledige uitwerking van een logging bestand ...................................................................................... 59
vii
Lijst van figuren Figuur 1: algemene indeling CoDeSys ..................................................................................................................... 3 Figuur 2: target settings .......................................................................................................................................... 3 Figuur 3: functiebalk 3S CoDeSys SP PLCWinNT V2.4 ............................................................................................. 4 Figuur 4: new POU .................................................................................................................................................. 4 Figuur 5: tabblad Visualizations .............................................................................................................................. 5 Figuur 6: tabblad Resources .................................................................................................................................... 6 Figuur 7: library Manager ........................................................................................................................................ 6 Figuur 8: PLC Configuration..................................................................................................................................... 7 Figuur 9: verschillende protocollen op applicatieniveau ........................................................................................ 8 Figuur 10: CANopen Protocol Layer Interactions [1] .............................................................................................. 8 Figuur 11: samenstelling CANopen bericht ............................................................................................................. 9 Figuur 12: complete CANopen bericht [1] ............................................................................................................ 10 Figuur 13: object dictionary IFM CR0232 module via Vector CANeds .................................................................. 11 Figuur 14: communicatie objecten in de COB ID .................................................................................................. 13 Figuur 15: algemene opbouw CANnetwerken met PDO's .................................................................................... 15 Figuur 16: voorbeeld PDO omschrijving object dictionary.................................................................................... 16 Figuur 17: communicatie objecten voor PDO's ..................................................................................................... 16 Figuur 18: invulling dataframe .............................................................................................................................. 17 Figuur 19: principeschets PDO transmissie types ................................................................................................. 18 Figuur 20: principeschets synchrone/asynchrone PDO communicatie ................................................................ 19 Figuur 21: principeschets cyclische en acyclische synchrone PDO's ..................................................................... 19 Figuur 22: standaard communicatie objecten voor PDO's (CR2032 I/O module) ................................................. 19 Figuur 23: screenshot CoDeSys PDO properties - transmissie type ...................................................................... 20 Figuur 24: structurele opbouw parameters in datavelden (mapping) .................................................................. 21 Figuur 25: principeschets SDO data uitwisseling .................................................................................................. 22 Figuur 26: opbouwstructuur van een SDO bericht ............................................................................................... 23 Figuur 27: voorbeeld read request/response ....................................................................................................... 24 Figuur 28: algemene opbouw CAN netwerk tijdens synchronisatie ..................................................................... 25 Figuur 29: algemene opbouw EMCY bericht ......................................................................................................... 25 Figuur 30: stappenplan NMT service .................................................................................................................... 27 Figuur 31: algemeen gebruik NMT bericht ........................................................................................................... 28 Figuur 32: samenstelling node guarding/life guarding bericht ............................................................................. 29 Figuur 33: connection error .................................................................................................................................. 30 Figuur 34: samenstelling heartbeat bericht .......................................................................................................... 30 Figuur 35: algemeen gebruik TIME object/TIME stamp [1] .................................................................................. 31 Figuur 36: schema van de CAN netwerken in de opstelling .................................................................................. 32 Figuur 37: afbeelding van de volledige opstelling ................................................................................................. 33 Figuur 38: IFM CR0421 Fuse/Relay (links) en IFM CR0403 Controller [4] ............................................................. 33 Figuur 39: IFM CR0451 Basic Display [4] ............................................................................................................... 34 Figuur 40: IFM CR2032 I/O module [4] ................................................................................................................. 34 Figuur 41: IFM CR2102 Inclinometer [4] ............................................................................................................... 34 Figuur 42: IFM CR3106 GPRS module [4] .............................................................................................................. 35 Figuur 43: Sauer-Danfoss JS7000 [5] ..................................................................................................................... 35 Figuur 44: Sauer-Danfoss PVG32 PVED-CC ventielblok ......................................................................................... 35 Figuur 45: berichten uitgelezen op de bus met behulp van PCAN-View .............................................................. 36 Figuur 46: target settings ...................................................................................................................................... 38 viii
Figuur 47: tabblad network functionality ............................................................................................................. 38 Figuur 48: new POU .............................................................................................................................................. 39 Figuur 49: tabblad resources................................................................................................................................. 39 Figuur 50: instellen controller als CANopen master ............................................................................................. 40 Figuur 51: CAN parameters CR0403 CANopen master controller ......................................................................... 40 Figuur 52: toevoegen slave module CR2032 ......................................................................................................... 41 Figuur 53: in- en outputs CR2032 slave module ................................................................................................... 42 Figuur 54: nieuw tabblad CR2032_IN_OUT .......................................................................................................... 43 Figuur 55: invulling tabblad CR2032_IN_OUT ....................................................................................................... 43 Figuur 56: CAN parameters CR2032 slave module ............................................................................................... 43 Figuur 57: properties Send PDO-Mapping CR2032 slave module ......................................................................... 44 Figuur 58: service data objects CR2032 slave module .......................................................................................... 45 Figuur 59: libraries CANopen netwerk met CR0403 controller ............................................................................. 46 Figuur 60: network management implicit variables CAN (CONSTANT) ................................................................ 46 Figuur 52: tabblad online - communication parameters ...................................................................................... 47 Figuur 62: communication parameters ................................................................................................................. 48 Figuur 63: voorbeeld aansturen CR2032 ............................................................................................................... 49 e Figuur 64: tabblad network management 2 display ............................................................................................ 50 e Figuur 65: programmacode tabblad network management 2 display ................................................................ 51 Figuur 66: berichten op bus VOOR reset I/O module ........................................................................................... 51 Figuur 67: berichten op bus NA reset I/O module ................................................................................................ 51 Figuur 68: PLC configuration + map global variables ............................................................................................ 55 Figuur 69: POU's programma controller + CAN_SETTING ..................................................................................... 55 e Figuur 70: POU's 1 CR0451 display + stuk programma Transmit_KEY_VALVE(PRG) ........................................... 56 Figuur 71: PLC configuratie beide displays ............................................................................................................ 56 e Figuur 72: POU's 2 CR0451 display module + deel programma EMCY(PRG) ....................................................... 57
ix
1 Inleiding 1.1 Doelstellingen Er wordt een didactische opstelling gebouwd die een simulatie moet voorstellen van een opbouwsysteem voor vrachtwagens, voorzien van een aantal CANopen devices zoals een controller, display, I/O module, joystick en inclinometer. Deze modules worden geprogrammeerd met het programma CoDeSys.
1.2 Verloop Eerst en vooral wordt er een studie gemaakt van de programmeertaal gebruikt in het programma CoDeSys. Dit gebeurt aan de hand van voorgemaakte oefeningen en het bestuderen van enkele voorgemaakte basisprogramma’s. Via deze voorbeelden kan ontcijferd worden hoe er gemakkelijk en snel kan gewerkt worden met dit programma. Vervolgens volgt er een studie van de hardware componenten aangeboden door IFM. Enkele vragen die hierbij onderzocht werden zijn: • • • • •
Welke functies zijn reeds aanwezig? Hoe kunnen deze functies opgeroepen worden? Kunnen deze functies aangepast of verbeterd worden? Hoe wordt de module zelf ingesteld? Kunnen hier aanpassingen aan gebeuren?
Als laatste onderdeel van de theoretische studie volgt er een stuk over het eigenlijke onderwerp van deze masterproef namelijk CANopen, meer specifiek toegepast in mobiele toepassingen. In een tweede stadium van de masterproef zullen enkele studenten uit het VHTI een testopstelling bouwen waarin getracht wordt een werkelijke situatie na te bootsen. Bijgevolg zal zoals in de werkelijkheid dikwijls voorkomt een combinatie van CAN met CANopen toegepast worden. Tijdens deze periode zal er dus in teamverband gewerkt worden. Enkele studenten staan in voor de elektrische en mechanische opbouw terwijl een andere groep zich bezig houdt met de programmatie. Een onderdeel van deze masterproef bestaat er dan ook in deze laatste groep studenten hiermee te helpen. In een laatste stadium zal aan deze opstelling nog enkele functies toegevoegd worden. Opnieuw zijn er drie groepen bezig met verschillende taken. Een eerste groep zal zich bezig houden met de opstelling volautomatisch te maken. Hierbij zullen druksensoren of hoogtemetingen nodig worden. Een volgende groep houdt zich bezig met eerst en vooral de CoDeSys taal aan te leren om later via een GPRS verbinding een diagnose uit te kunnen voeren. Deze masterproef bevat elementen van de laatste groep waarin het CANopen gedeelte verder uitgewerkt zal worden met een joystick en tweede scherm indien mogelijk. Naar het programma toe zal alles getracht programmeerbaar gemaakt worden indien nodig. Hierdoor zouden aanpassingen voor de programmeur duidelijker worden. Anders geformuleerd, deze masterproef heeft tot doel de standaard communicatie objecten van de CANopen specificaties CiA DS301, in de praktijk op de testopstelling toe te passen.
1.3 Voorstelling bedrijf Deze masterproef wordt in samenwerking gemaakt met het onderzoek/expertise centrum LED Netwerken in voertuigen. LED staat voor Laagdrempelige Expertise- en Dienstverleningscentra. De bacheloropleiding Autotechnologie van het departement Technologie en Informatica – VHTI van KATHO Kortrijk heeft de laatste jaren heel wat expertise inzake CAN opgebouwd en stelt deze nu via deze LED Netwerken in voertuigen ter beschikking van bedrijven die op de een of andere manier met CAN netwerken te maken krijgen. Iedereen die professioneel met CAN Netwerken in voertuigen te maken heeft, kan beroep doen op deze LED:
1
•
Herstelling- en diagnosewerkplaatsen: De technici die instaan voor herstelling en diagnose zijn meestal ‘mechanisch-elektrisch’ geschoold. De massale en snelle toepassing van de elektronica en netwerktechnologie vraagt echter een totaal nieuwe aanpak. De LED Netwerken in voertuigen kan hier een oplossing bieden.
•
Constructiebedrijven (ombouw en/of volledige constructie): Heel wat West-Vlaamse KMO’s zijn actief op vlak van constructie in de truck- en landbouwsector. In beide sectoren wordt een doorgedreven kennis van voertuignetwerken hoe langer hoe meer noodzakelijk, bijvoorbeeld voor het configureren van opbouwsystemen of in de nieuwste evolutie van de precisielandbouw.
•
ICT-bedrijven die logistieke diensten voor voertuigen ontwikkelen: Beheerders van wagenparken zijn tegenwoordig ook geïnteresseerd in rijstijl, remgedrag, verbruik, etc. De parameters die het mogelijk maken om deze aspecten te analyseren zijn beschikbaar op de CAN netwerken. De LED Netwerken in voertuigen bestudeert deze parameters en stelt de opgedane kennis ter beschikking van bedrijven die geavanceerde FMS (Fleet Management System) ontwikkelen en op de markt willen brengen.
•
Scholen en opleidingscentra voertuigtechnologie: Onderhoud- en herstellingsbedrijven van voertuigen hebben nood aan technici die de werking van Netwerken in voertuigen begrijpen en een efficiënte diagnose kunnen stellen. De LED Netwerken in voertuigen ontwikkelt daarom onder meer een didactische tool en Low-Cost software die de CAN-bus signalen visualiseert.
2
2 CoDeSys In dit hoofdstuk wordt de werking van het programma CoDeSys uitgelegd. De verschillende indelingen samen met een kleine handleiding hoe het programma te gebruiken, zullen aan bod komen. Er bestaat niet echt een handleiding voor dit programma maar op de site van CoDeSys of op de bijgeleverde cd’s van IFM zijn verschillende oefeningen te vinden om de werking beter te begrijpen. Ook bestaat er een forum waarin vele vragen kunnen beantwoord worden.
2.1 Algemene indeling
Figuur 1: algemene indeling CoDeSys
A. Functiebalk met verschillende sneltoetsen B. Inhoud tabblad, hier: hiërarchische lijst met programma’s, functies en functieblokken C. Hier komt de eigenlijke inhoud van de verschillende programma’s om aan te passen of in te vullen samen met de andere informatie geselecteerd D. Tabbladen (POU, Data types, visualizations en resources)
2.2 Target settings Bij het aanmaken van een nieuw project moet eerst en vooral de Target settings gekozen worden. Er wordt dus met andere woorden gekozen naar welke module dit gehele programma zal geschreven worden. Zoals in Figuur 2 te zien worden de geïnstalleerde IFM controller modules voorgesteld samen met de target onder de naam “3S CoDeSys SP PLCWinNT V2.4”. Met deze laatste target kan de werking van het programma met de PC gesimuleerd worden.
Figuur 2: target settings
3
Naar gelang de keuze van een target verschijnen er meer of minder sneltoetsen in de functiebalk. Dit doordat er in de verschillende modules niet altijd dezelfde functies ingebouwd zijn. (Figuur 3)
Figuur 3: functiebalk 3S CoDeSys SP PLCWinNT V2.4
2.3 Program Organization Unit (POU) Na de keuze van een target moet een nieuwe POU geselecteerd worden. Deze nieuwe POU is dus eigenlijk het basisprogramma waar alle andere afgeleide programma’s, functies of functieblokken zullen moeten in voorkomen. Er kan gekozen worden voor het aanmaken van een programma, een functieblok of een functie. Bij keuze van een functie zijn de courante types om terug te sturen voorzien zoals een boolean, real of integer. Voor de invulling van deze programma’s, functies en functieblokken zijn er zes mogelijke talen mogelijk namelijk: • • • • • •
IL: LD: FBD: SFC: ST: CFC:
Instruction List Ladder Diagram Function Block Diagram Sequential Function Chart Structured Text Continuous Function Chart
Bij deze masterproef werden alle programma’s, functies of functieblokken aan de hand van ST of FBD opgebouwd. De naam voor het basisprogramma PLC_PRG mag niet gewijzigd worden.
Figuur 4: new POU
2.4 Data types Zoals in de meeste programma’s kunnen de gebruikelijke datatypes toegepast worden. In CoDeSys kunnen dus onder andere gevonden worden: • • •
BOOL REAL LREAL
8 bit 32 bit 64 bit
TRUE/FALSE 1.175494351e-38 tot 3.402823466e+38 2.2250738585072014e-308 tot 1.7976931348623158e+308 4
• • • • • • • • • • •
STRING no limit TIME 32 bit BYTE 8 bit WORD 16 bit DWORD 32 bit SINT 8 bit USINT 8 bit INT 16 bit UINT 16 bit DINT 32 bit UDINT 32 bit
default 80 karakters (eigenlijk maximaal 1-255 door limiet lengte in functieblokken) Intern zoals een DWORD 0 tot 255 0 tot 65535 0 tot 4294967295 -128 tot 127 0 tot 255 -32768 tot 32767 0 tot 65535 -2147483648 tot 2147483647 0 tot 4294967295
2.5 Visualizations In dit tabblad worden de verschillende beeldschermen in een hiërarchische volgorde voorgesteld (Figuur 5). Iedere andere pagina die op het scherm moet verschijnen kan hier dus aangepast worden. De mogelijkheden voor de voorstellingen zijn beperkt naargelang de controller dit aankan.
Figuur 5: tabblad Visualizations
A. Hiërarchische volgorde aangemaakt schermvoorstellingen B. Werkruimte om schermvoorstelling aan te passen
5
2.6 Resources In het tabblad resources worden alle globale variabelen, instellingen of configuraties gebundeld. Alle verschillende variabelen of ingebouwde functies die in de controller zijn ingebouwd moeten hier dus te vinden zijn. De belangrijkste en meest gebruikte van deze mogelijkheden worden nog wat verder besproken.
Figuur 6: tabblad Resources
2.6.1 Library Manager Via de Library Manager kunnen zogenaamde libraries geraadpleegd of toegevoegd worden. Deze libraries bevatten een reeks van voorgeprogrammeerde functies. Deze libraries kunnen dus niet aangepast worden. De inhoud van deze libraries wordt hier dus enkel getoond in de vorm van functies of functieblokken.
Figuur 7: library Manager
A. Lijst met toegevoegde libraries 6
B. Inhoud van de geselecteerde library C. Geselecteerde functie of functieblok voorgesteld als ST D. Geselecteerde functie of functieblok voorgesteld als FBD Zoals te zien in figuur 7 kan de inhoud van deze functies of functieblokken niet gelezen worden op deze manier. Om de inhoud van deze libraries te bekijken en dus de inhoud van deze functies kunnen deze libraries apart geopend worden vanuit een nieuw CoDeSys project. Sommige van deze libraries zijn echter geheim of beschermd door een paswoord waardoor deze niet gelezen kunnen worden. 2.6.2 PLC Configuration Bij de PLC Configuration wordt de informatie die in de EDS file van het toestel staat gelezen. Hierin kunnen dus alle functionaliteiten gevonden worden zoals bijvoorbeeld de verschillende inputs of outputs. In figuur 8 worden de configuratie opties van een CR0451 controller voorgesteld. Dit is een display module van IFM met enkele drukknoppen onder het scherm. Zoals uit deze informatie af te leiden kan deze module werken met zowel een CAN als CANopen invulling.
Figuur 8: PLC Configuration
7
3 CANopen CAN netwerken worden al vele jaren toegepast als communicatiesysteem in automatiseringstoepassingen en in de mobiele wereld. Het voordeell en gemak van deze systemen is dus reeds bewezen. Veelvuldige toepassingen van deze systemen in onder andere vrachtwagens en landbouwvoertuigen zijn hier een logisch gevolg van. v Als invulling op applicatieniveau niveau wordt hiervoor meestal de SAE J1939 norm gehanteerd. CANopen CANop is hier relatief nieuw in dit verhaal en zorgt voor een andere invulling op dit niveau.
CANopen
SAE J1939
DeviceNet
ISOBUS
...
CANBUS Figuur 9: verschillende protocollen op applicatieniveau
Figuur 10: CANopen Protocol Layer Interactions [1]
Figuur 10 geeft aan op welk vlak CANopen verschilt van de gekende CAN netwerken gebaseerd op bijvoorbeeld de SAE J1939 norm. CANopen gebruikt, net zoals SAE J1939 de fysische laag en de data dat link laag van de CAN standaard ISO11898, maar geeft een andere and invulling op het applicatieniveau. niveau. Dit door gebruik te maken van een zogenaamde Object Dictionary. Hierin staat onder andere een beschrijving beschrijving van de configuratie en mogelijkheden van de node. Deze invulling is volgens een standaard DS301 ontwikkeld door CiA (CAN in Automation). Zo bestaan er verschillende standaarden voor verschillende sectoren zoals automobiel, chemie, geneeskunde, et cetera. Deze standaard kan dus vergeleken vergeleken worden met bijvoorbeeld een ISO norm maar dan ontwikkeld door CiA. CiA is een non-profit non organisatie van verschillende bedrijven. In dit hoofdstuk zal de theorie met betrekking tot CANopen samengevat worden. Meer gespecialiseerde apparaten hebben hun eigen specificaties bovenop de CiA 301 bijvoorbeeld CANopen I/O modules CiA 401 of CANopen truck gateways CiA 413. CANopen probeert een CAN netwerk zodanig in te vullen volgens een bepaalde standaard dat er een uniform unifor en logische opbouw ontstaat. Dit in tegenstelling tot ander protocollen die meer merkgebonden zijn. 8
3.1 Hiërarchische communicatieverhoudingen van de netwerkmodules 3.1.1 Master/slave Bij het master/slave model is één node de master en die vraagt data aan de slaves of zal er zelf verzenden. Het NMT protocol (Network ManagemenT zie hoofdstuk 3.10) gebruikt dit communicatiemodel. [2] 3.1.2 Server/cliënt Een server/cliënt relatie wordt gebruikt bij het SDO protocol. De SDO cliënt vraagt de data aan een SDO server. Dit gebeurt via een bericht waarin de index en subindex alsook de node ID van de server vervat zit. De server zoekt de data op en zendt één of meer pakketten terug met de gevraagde data. Deze data bevat de inhoud van de gevraagde index in zijn object dictionary (zie hoofdstuk 3.4). [2] 3.1.3 Producer/consumer Het producer/consumer model wordt gebruikt bij de heartbeat en node guarding protocollen. Wanneer het push model gebruikt wordt, zendt de producer data naar de consumer zonder dat hiervoor een request werd verzonden. Bij het pull model moet de consumer aan de producer naar de data in kwestie vragen. [2]
3.2 Samenstelling van een CANopen bericht
Figuur 11: samenstelling CANopen bericht
De voornaamste onderdelen van een CANopen bericht: • •
11 bits of 29 bits (extended) COB ID (Communication OBject IDentifier) 0…8 databytes
De ondersteunende velden van het complete CANopen bericht (DLC, CRC, ACK, etc.) worden hier achterwege gelaten. Deze zijn terug te vinden in de ISO11898 standaard.
9
Figuur 12: complete CANopen bericht [1]
De 11bit COB ID bestaat uit twee delen: • •
4 bits: functie code 7 bits: adres es van de netwerkmodule (node ID) ID
De 4 bits functiecode identificeert de verschillende soorten communicatie objecten die bij CANopen kunnen voorkomen. In de functie code zit meteen ook de prioriteit (busarbitrage) van de berichten vervat. Het bericht met de kleinste COB ID heeft hierbij dus du voorrang. Iedere module heeft een uniek adres in het netwerk. Adres 0 is voorbehouden voor broadcast transmissie. De adressen 1 tot en met 127 (01hex tot en met 7Fhex) zijn ter beschikking van de netwerk modules.
3.3 Identifiers (adressen) in CANopen In CANopen pen komen verschillende types Identifiers (adressen) voor. voor 3.3.1 COB ID De Communication Object IDentifier identificeert het soort communicatie bericht: • • • • •
PDO (Process Data Object) = een bericht beri met proces data SDO (Service Data Object) = een bericht met service data EMCY (EMergenCY) TIME Error Control Message
3.3.2 CAN-ID Een 11 of 29 bit identificatie van een n CAN dataframe. 3.3.3 Download ID Dit adres wordt gebruikt om service data van en naar een module te sturen (via een SDO). Bijvoorbeeld om een applicatieprogramma te downloaden naar een controller. Waarschuwing: gebruik nooit de download ID van een controller als CANopen node ID. De download ID van IFM controllers kan met een service tool (Maintenance tool)) gewijzigd of ingesteld worden. 3.3.4 Node ID Een uniek netwerk adres die elke netwerkmodule (CANopen apparaat) moet hebben (1-127). (1 127). 10
3.4 Object Dictionary/EDS file De object parameters worden beschreven in de object dictionary. De object dictionary is een soort van kast waarin via een index en subindex naar een object op zoek wordt gegaan. De waarde waarnaar op zoek wordt gegaan staat dus eerst gekenmerkt volgens een bepaalde index (welke lade met deze index overeenkomt). In deze lade bevinden zich nu mogelijks verschillende compartimenten (subindex). Indien er zich in de “lade” maar één waarde bevindt dan zal deze waarde zich onder de subindex 00hex bevinden. Indien er meerdere waarden in de “lade” te vinden zijn dan zal onder de subindex 00hex het aantal aanwezige waarden in deze “lade” bevinden. Om al deze informatie te kunnen lezen wordt een EDS file aangemaakt. Een EDS file is dus met andere woorden een leesbare versie van de object dictionary specificatie. Voorbeeld EDS file zie bijlage 1.
Figuur 13: object dictionary IFM CR0232 module via Vector CANeds
A. Algemene communicatie gegevens in de object dictionary, dit is de standaard die vastligt. B. Communicatie gegevens object dictionary van de IFM module CR0232, hier zijn verschillende indexen niet aanwezig zoals bijvoorbeeld index 1002 die uiteraard in de standaard (A) wel beschreven wordt. Tabel 1: een uittreksel uit de structuur van de object dictionary
Index (hexadecimaal) 0000 001-001F … 1000-1FFF 2000-5FFF 6000-67FF
Object Niet gebruikt Statische data types … Communicatie profielen Producent gebonden profielen Gestandaardiseerde profielen
11
Het belangrijkste onderdeel van een CANopen apparaat is de object dictionary. Het bevat alle eigenschappen van het apparaat en de manier waarop het, via het netwerk, communiceert met andere modules. Ieder object wordt door een unieke 16 bit index gekenmerkt (bijvoorbeeld 1000hex=Device type) die op zijn beurt verschillende 8 bit subindexen bevat. De object dictionary van een CANopen apparaat kan bijgevolg theoretisch gezien maximaal 65536 (16 bit index) objecten bevatten met op hun beurt maximaal 256 subindexen (8 bit subindex). Een object dictionary (of eigenschappen of parameters ervan) kan aangesproken worden door een andere module via deze index en subindex. Dit wil zeggen dat de waarden van deze objecten kunnen gelezen worden door andere modules en eventueel ook aangepast kunnen worden. Tabel 2: voorbeelden van objecten uit de object dictionary
Index (hexadecimaal) 1005 1800
2000
Type bericht SYNC T_PDO1 Parameters T_PDO1 Mapping R_PDO1 Parameters R_PDO1 Mapping …
6000
…
1A00 1400 1601
Omschrijving Beschrijft het synchronisatie bericht Beschrijft de parameters COB ID (subindex 1) en transmissie type (subindex 2) van een bericht om proces data (PDO) te versturen. Beschrijft hoe de proces data wordt ondergebracht in de data velden van een bericht om te versturen. Beschrijft de parameters COB ID (subindex 1) en transmissie type (subindex 2) van een bericht om proces data te ontvangen. Beschrijft hoe de proces data wordt ondergebracht in de data velden van een bericht om te ontvangen. Bijvoorbeeld: producent gebonden beschrijving van de inputs en outputs van een CANopen device. Bijvoorbeeld: de gestandaardiseerde beschrijving van de inputs en outputs van een CANopen device.
12
3.5 Communicatie objecten in de COB ID
Figuur 14: communicatie objecten in de COB ID
De CANopen specificatie DS301 definieert vier groepen van communicatie objecten waarmee een CAN bericht, samen met de 7 bits node identificatie, wordt geïdentificeerd. Process Data Objecten (PDO) •
PDO’s worden gebruikt om real-time process data te versturen
Service Data Objecten (SDO) •
SDO’s worden gebruikt om toegang te krijgen tot de object dictionary van een device
Speciale Objecten • • •
SYNC object: EMCY object: TIME-STAMP object:
om netwerkmodules te synchroniseren met elkaar om fouten te melden synchroniseren modules op basis van tijd vanaf een bepaald begin bijvoorbeeld middernacht. Dit is nauwkeurig tot op microseconden maar wordt enkel toegepast bij grote netwerken waar verschillende modules exact gelijk moeten lopen ongeacht de afstand van elkaar.
Network Management •
NMT services:
om netwerkmodules te initialiseren (start, stop, etc.) 13
•
NMT Node Guarding:
•
NMT Heartbeat:
3.5.1
om netwerkmodules te controleren op aanwezigheid, cyclisch door hogere orde instantie (NMT-master dus) [3] om netwerkmodules te controleren op aanwezigheid, automatische transmissie door netwerk nodes. [3]
Functie codes in de COB ID
Peer-to-peer
broad cast
Tabel 3: tabel met functie codes
Communicatie object
Functiecode (bin) 4 bits
Node ID (bin) 7 bits
NMT SYNC TIME STAMP EMCY T_PDO1 R_PDO1 T_PDO2 R_PDO2 T_PDO3 R_PDO4 T_SDO R_SDO NMT error control
0000 0001 0010 0001 0011 0100 0101 0110 0111 1010 1011 1100 1110
0000000 0000000 0000000 XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX XXXXXXX
COB ID + Node ID 1..127 (dec) 0 128 256 128 + 1…127 384 + 1…127 512 + 1…127 640 + 1…127 768 + 1…127 896 + 1…127 1280 + 1…127 1408 + 1…127 1536 + 1…127 1792 + 1…127
COB ID Node 1..127 (hex) 80 100 80 180 200 280 300 380 500 580 600 700
+ 1…1F + 1…1F + 1…1F + 1…1F + 1…1F + 1…1F + 1…1F + 1…1F + 1…1F + 1…1F
+ ID
Object parameters (hex) … 1005…1007 1012 1014…1015 1800 1400 1800 1401 1802 1403 1804 1404 …
Voorbeelden COB ID: T_PDO1 wordt verstuurd door een node met ID3 • • •
Functiecode: 0011 Node ID: 0000011 11 bit COB ID = 0011 0000011 = 183hex = 387dec
T_PDO1 wordt verstuurd door een node met ID127 • • •
Functiecode: 0011 Node ID: 1111111 11 bit COB ID = 0011 1111111 = 1FFhex = 511dec
14
3.6 PDO communicatie objecten (Process Data Objects) 3.6.1
PDO algemeen
Figuur 15: algemene opbouw CANnetwerken met PDO's
Process data objects (PDO’s) worden gebruikt om real-time proces data, zoals actuele waarden of proces toestanden van een apparaat, uit te wisselen. Met een PDO worden geen bijkomende “administratieve” data verzonden. De gebruiker van de data hoeft ook geen ontvangstbevestiging te geven. De flexibele data lengte (maximaal 8 data bytes) is tevens bevorderlijk voor een snellere ontvangst. Als er alleen maar 2 data bytes toegewezen zijn aan een bericht, worden alleen maar 2 data bytes verstuurd. De lengte van het PDO bericht en de toewijzing van de data velden worden gespecificeerd in de PDO MAPPING. PDO berichten worden uitgewisseld tussen apparaten die effectief proces data voortbrengen of verwerken. De data-uitwisseling via PDO’s verloopt volgens een producer-consumer (producent-gebruiker) relatie. Er zijn 2 soorten PDO: • •
Transmit PDO (T_PDO) om data te versturen Receive PDO (R_PDO) om data te ontvangen
Zo zullen CANopen sensoren enkel proces data versturen (T_PDO) terwijl een CANopen I/O module zowel proces data zal sturen (T_PDO) als ontvangen (R_PDO). CANopen apparaten die T_PDO ondersteunen noemt men PDO producer, diegene die R_PDO ondersteunen noemt men PDO consumer.
15
3.6.2 PDO transmissie modes PDO wordt in de object dictionary omschreven door: • PDO communication parameter • PDO mapping parameter Figuur 16 toont één receive en één transmit PDO met daarvan de communication en mapping parameter. e • 1400: 1 R_PDO parameter e • 1600: 1 R_PDO mapping e • 1800: 1 T_PDO parameter e • 1A00: 1 T_PDO mapping In de subindexen worden dan specifieke parameters omschreven zoals bijvoorbeeld het transmissie type (1400sub2).
Figuur 16: voorbeeld PDO omschrijving object dictionary
3.6.3 T_PDO/R_PDO Elke PDO is beschikbaar voor het zenden en voor het ontvangen van een PDO bericht: • T_PDO om een PDO bericht te verzenden • R_PDO om een PDO bericht te ontvangen Hier (Figuur 17) bij dit apparaat (CR2032 I/O module) zijn er default twee receive PDO’s en twee transmit PDO’s. Figuur 17: communicatie objecten voor PDO's
16
3.6.4 PDO activeren Een PDO kan ‘geactiveerd’ worden via een SDO bericht. De invulling van de 32 bits in dit SDO bericht om een PDO te activeren is te zien in figuur 18.
Figuur 18: invulling dataframe
Voorbeeld: settings voor R_PDO3 in object 1402hex Subindex 01hex = 1 Subindex 01hex = 0
1000000000000000 0800hex 0000000000000000 000hex
00010000000000 04xxhex 00010000000000 04xxhex
Soms zijn R_PDO1 en T_PDO1 default geactiveerd. De anderen moeten dan nog geactiveerd worden. Een PDO wordt geactiveerd door bit 31 in subindex 01hex (valid bit) op 0 te zetten.
17
3.6.5
PDO transmissie types
Figuur 19: principeschets PDO transmissie types
PDO’s kunnen op twee manieren verstuurd worden (transmission type): • •
Synchroon: Asynchroon:
Bij elk SYNC bericht dat door een SYNC master, cyclisch, op de bus wordt geplaatst. Event-driven
Bijkomend zijn er drie manieren om de transmissie te triggeren: •
•
•
Synchronously triggered: De transmissie van een bericht wordt getriggerd door een SYNC bericht dat door een SYNC master, cyclisch wordt verstuurd. Met andere woorden, het PDO bericht wordt verstuurd onmiddellijk na elk SYNC bericht. Event-and timer-driven: De transmissie van een bericht kan getriggerd worden door een gebeurtenis die bepaald wordt door de applicatie of kan specifiek zijn aan het apparaat (device profile) of aan de fabrikant (manufacturer specific profile). Het kan ook zo ingesteld worden dat een bericht wordt verstuurd nadat een zekere tijd (event-time) is verstreken (zonder specifieke gebeurtenis). Remotely requested: Een PDO consumer kan een RTR bericht sturen om een PDO bericht te ontvangen.
Het transmissie type kan gespecificeerd worden voor elke PDO afzonderlijk met subindex 02hex (=transmission type) van de PDO communicatie parameter (1800hex, 1801hex,…). Er zijn twee tijdsintervallen betrokken bij het beheer van synchrone data transmissie: • •
De Communication Cycle Period: Is het tijdsinterval tussen twee SYNC berichten (in object dictionary: Communication cycle period 1006hex). De Synchronous Window Length: Bepaalt het tijdsinterval waarbinnen een synchroon PDO bericht moet ontvangen of verstuurd worden (in object dictionary: Synchronous window length 1007hex).
18
3.6.5.1
Synchrone PDO
Figuur 20: principeschets synchrone/asynchrone PDO communicatie
Synchrone PDO’s worden verstuurd binnen de synchronous window onmiddellijk na elk SYNC bericht. Asynchrone PDO’s (en SDO’s) worden op “willekeurige” momenten verstuurd op basis van een trigger of tijdsinterval die door de applicatie wordt bepaald en moeten rekening houden met de prioriteitsregels van het CAN protocol. Asynchrone PDO’s kunnen dus toevallig in een synchronous window terechtkomen. 3.6.5.2
Cyclisch en acyclische synchrone PDO’s
Figuur 21: principeschets cyclische en acyclische synchrone PDO's
Synchrone PDO’s kunnen op hun beurt onderverdeeld worden in twee soorten transmissie methodes: •
Cyclische synchrone:
•
Acyclische synchrone:
3.6.6
Worden in het synchrone venster verstuurd. Het getal van het transmissie type (1-240) specificeert hoeveel SYNC berichten er zitten tussen twee cyclische synchrone PDO’s. Worden getriggerd door een gebeurtenis die bepaald wordt door de applicatie. Bovendien wordt dit verstuurd binnen het synchrone venster maar dus niet periodiek.
PDO communicatie parameters
Figuur 22: standaard communicatie objecten voor PDO's (CR2032 I/O module)
19
Tabel 4: subindexen voor de PDO (communicatie) parameters
Index Xxxxhex
Subindex 0hex 1hex 2hex 3hex 4hex 5hex
Beschrijving Aantal entries COB ID Transmissie type Inhibit time Reserved Event timer
Data type Unsigned 8 Unsigned 32 Unsigned 8 Unsigned 16 Unsigned 8 Unsigned 16
De voornaamste PDO parameters zijn COB ID (bijvoorbeeld: T_PDO1=180hex, T_PDO2=280hex, R_PDO1=200hex en R_PDO2=300hex ) en transmissie type.
Figuur 23: screenshot CoDeSys PDO properties - transmissie type
20
3.6.7
PDO mapping parameters
Figuur 24: structurele opbouw parameters in datavelden (mapping)
De PDO mapping parameters bepalen hoe de data in de datavelden worden geschikt (mapped). In figuur 24 is een voorbeeld te zien hoe drie objecten (2xxxh, 2yyyh en 2zzzh), bijvoorbeeld drie inputs van een I/O module, gemapped worden door object 1A00hex T_PDO1 mapping. Onderaan is te zien hoe het CAN bericht (T_PDO bericht) waarmee de drie objecten (input values) worden verstuurd in vier databytes zal opgesteld worden. Normaal gezien wordt in de CANopen device profile een standaard (default) PDO mapping voorzien. Optioneel kan een variabele PDO mapping ondersteund worden. Als een CANopen apparaat een variabele PDO mapping ondersteunt, kan een geoptimaliseerde PDO transfer voorzien worden in de applicatie programmatuur.
21
3.7 SDO communicatie objecten (Service Data Objects) 3.7.1
SDO data uitwisseling
Figuur 25: principeschets SDO data uitwisseling
SDO berichten worden door de master module van het CANopen netwerk gebruikt om toegang te krijgen tot de object dictionary (OD) van de andere CANopen slave module (via index en subindex). Met toegang krijgen wordt bedoeld data uit de object dictionary lezen (read SDO) of aan te passen (write SDO). Bijvoorbeeld de transmissie mode (cyclisch, event driven, …) van een PDO object wijzigen of instellen. Verschillende opties in verband met bereikbaarheid van objecten uit de object dictionary: • • • •
RO WO RW CONST
Read Only Write Only Read and Write Read only acces, value is constant
Een SDO communicatie is altijd peer-to-peer. De master module (cliënt) stuurt een request (COB ID 600hex + node ID) en de server (een slave module) geeft een antwoord (COB ID 580hex + node ID). Indien de communicatie correct verloopt zijn er altijd twee berichten aanwezig, een vraag en een antwoord. De node ID in de COB ID is de node ID van de module die aangesproken wordt. De datalengte van een SDO bericht is 8 bytes maar niet alle 8 databytes worden altijd benut.
22
3.7.2
Structuur van een SDO bericht
Figuur 26: opbouwstructuur van een SDO bericht
Een SDO CAN bericht bevat een COB ID en 8 data bytes: •
COB ID
•
Data bytes
580hex (Tx) of 600hex (Rx) + ID van de node waarvan de object dictionary wordt aangesproken door de cliënt (master). 4 zogenaamde administratieve bytes: − CCD 1 byte Command Code, geeft aan welke type SDO bericht het is en hoeveel databytes er gebruikt worden om de waarden uit de object dictionary te lezen (of te schrijven). − Index 2 bytes Bepaalt samen met subindex welk object van de object dictionary wordt aangesproken. − Subindex 1 byte Alsook 4 bytes met de feitelijke data (values) van de object dictionary.
Bemerk tevens de Intel byte volgorde van de bytes in de datavelden. Tabel 5: Voorbeelden van enkele CCD's
SDO operation by master Master reads from slave Master writes to slave (4 databytes)
CCD value 40hex 23hex
SDO answer from slave Succesfull read response (4 databytes) Succesfull write response Abort operation
CCD value 43hex 60hex 80hex
23
3.7.3
SDO read data: de master voert een lees operatie uit
Figuur 27: voorbeeld read request/response Tabel 6: verklarende lijst van CCD's uit figuur 27
CCD (hexadecimaal) 40 43 47 4B 4F
Beschrijving Master (request) reads data from slave Slave sends (response) data to master Slave sends (response) data to master Slave sends (response) data to master Slave sends (response) data to master
Aantal bytes data van object dictionary 0 data bytes 4 data bytes 3 data bytes 2 data bytes 1 data byte
Met een SDO read bericht kan een master (cliënt) data uit een object dictionary van een slave (server) (uit)lezen. De COB ID bestaat uit 600hex + node ID van de node die wordt aangesproken. Met een CCD van 40hex en met vermelding van de index en subindex van de object dictionary vraagt de master (cliënt) aan de slave (server) de data (waarden) die horen bij de index en subindex. De slave zendt als antwoord een bericht (met COB ID 580hex + eigen node ID) met de gevraagde data (1,2,3 of 4 databytes). Met behulp van de CCD (42hex,43hex,47hex,4Bhex of 4Fhex) in dit respons bericht wordt aangeduid dat het een antwoord is op een vraag en hoeveel databytes aan effectieve waarden er meegestuurd worden. De niet gebruikte datavelden uit figuur 27 worden aangeduid met schuine streep in de figuren.
24
3.8 Synchronisation (SYNC 80hex - 100dec)
Figuur 28: algemene opbouw CAN netwerk tijdens synchronisatie
Het SYNC object (80hex of 128dec) wordt door de SYNC producer cyclisch verstuurd (gebroadcast). Meestal zal de master module aangesteld worden om een SYNC bericht te laten produceren maar in principe kan elke CANopen module als SYNC producer optreden (als die functie ondersteund wordt). Voorwaarde is dat er maar één module in een CANopen netwerk SYNC producer mag zijn. Met behulp van het synchronisatie object SYNC kan synchrone uitwisseling van berichten (het ontvangen of versturen van proces data) tussen netwerkmodules gerealiseerd worden. Dit om bijvoorbeeld de simultane opstart van drives te beheren. De SYNC communicatie verloopt volgens een producer-consumer verhouding. Alle modules die dit SYNC bericht op de bus herkennen en ondersteunen, reageren hierop en versturen of ontvangen berichten met proces data onmiddellijk na ieder SYNC bericht (binnen een vastgestelde tijd). Bemerk dat het SYNC object een zeer hoge prioriteit heeft ( de op één na hoogste, na het NMT object). De volledige COB ID= 0001 0000000 = 80hex (er wordt geen bron adres vermeld). Een SYNC bericht bevat geen datavelden.
3.9 Emergency service ( EMCY 80hex + node ID)
Figuur 29: algemene opbouw EMCY bericht
Merk op: reverse byte order (intel byte order) 25
Emergency objecten worden getriggerd wanneer interne defecten voorkomen in een CANopen apparaat. Ze worden op de bus verstuurd door de emergency producer van een CANopen apparaat. Een EMCY bericht wordt slechts eenmalig per optredende fout verstuurd. Geen of meerdere emergency consumers kunnen dit emergency object ontvangen. De reactie van deze emergency consumers op de melding van een fout van één of andere module is niet gespecificeerd in de CANopen standaard. Tabel 7: invulling databytes EMCY bericht
Databytes 0 1 2 3 4 5 6 7
Inhoud Error Code Error Code Error Register (zie object dictionary 1001hex) Gereserveerd Gereserveerd PDO nummer Constructeur gebonden error code Constructeur gebonden error code
Object 1003hex vormt een error geheugen van een CANopen apparaat. De subindex verwijst naar de fout die laatst gemeld werd via een EMCY bericht. Als een nieuwe fout voorkomt wordt die opgeslagen onder subindex 1. De vroegere fouten worden 1 plaats opgeschoven (hun subindex wordt met 1 vermeerderd). Als alle subindexen bezet zijn wordt de oudste fout gewist. Er moet een onderscheid gemaakt worden tussen de volgende soorten fouten die kunnen gemeld worden via een EMCY bericht: • •
Communicatie fout: Applicatie fout:
CAN communicatie fout, Heartbeat monitoring fout, SYNC fout, … Een kortsluiting of onderbreking van een draad, een te hoge temperatuur, …
26
3.10 Network management (NMT)
Figuur 30: stappenplan NMT service
CANopen modules kennen vier verschillende operationele toestanden: • • • •
Initialisatie status Pre-operationele status Operationele status Stopped status
Na het inschakelen van de voeding (power on) gaan de slave modules automatisch over naar een initialisatie fase (default instelling maar wel instelbaar). Aan het einde van deze initialisatie fase verzenden de slaves een boot-up bericht met daarin een COB ID (=700hex + node ID) en 1 databyte met waarde 0 om aan de master bekend te maken dat ze zich in pre-operationele fase bevinden. Vanaf nu kan de master de slave(s) doen overschakelen naar operationele fase, doen stoppen of indien nodig terug naar pre-operationeel schakelen. Zie hiervoor de transities A,B en C uit figuur 30 of tabel 8. De master kan de slaves, indien nodig, ook resetten: reset communication (E) of reset application (D). Beide resets leiden tot het opnieuw verzenden van een bootup bericht. De master beheert de toestand van de slave(s) door een bericht te sturen met COB ID 0hex + 2 databytes (het commando voor de transitie + de ID van de node voor wie het commando bedoeld is). Tabel 8: lijst met statussen
NMT service START STOP
Transitie A B
PRE -PERATIONEEL
C
RESET MODULE
D
RESET COMMUNICATIE
E
Betekenis Transitie naar de operationele fase OPERATIONEEL Transitie naar de operationele fase STOP. Er is geen communicatie meer met de betrokken module. Connectie monitor kan actief blijven indien deze actief was. De terugkeer naar de pre-operationele fase maakt dat er geen PDO communicatie meer is. Er is wel configuratie van de module mogelijk via SDO: • PDO mapping • Start van synchronisatie • Start van connectie monitor Gestockeerde data wordt herladen, de opstartprocedure vanaf boot-up fase tot operationele fase wordt automatisch doorlopen. De node keert terug naar pre-operationele fase en gaat automatisch terug naar operationele fase 27
3.10.1 Samenstelling van een NMT bericht
Figuur 31: algemeen gebruik NMT bericht
NMT services verlopen in een master-slave verhouding tot de netwerk modules. Een NMT bericht dat verstuurd wordt door de NMT master bestaat uit: • • •
COB ID: Databyte D0: Databyte D1:
0000 bevat de command specifier die de NMT service (transitie) nader bepaalt bevat het adres (1…127) van de slave die bevolen wordt om een andere toestand aan te nemen. Een 0 geeft aan dat het commando bedoeld is voor alle bereikbare NMT slaves.
Tabel 9: invulling command specifier
Command specifier (dec) 1 2 128 129 130
Command specifier (hex) 01 02 80 81 82
NMT service Start remote node Stop remote node Enter pre-operational mode Reset node Reset communication
Transitie A B C D E
Een NMT bericht heeft de hoogste prioriteit (COB ID + node ID = 0). NMT service berichten voor controle van de netwerk modules worden verstuurd als niet bevestigde berichten met een COB ID = 0 (0000 0000000bin). NMT services worden onderverdeeld in twee groepen: • •
Services om de operationele toestanden van slaves te wijzigen. Services om de modules te bewaken op hun aanwezigheid (zie Heartbeat of Life guarding).
3.10.2 NMT error service control (700hex) – NodeGuarding of Heartbeat COB ID = 700hex + node ID De controle op aanwezigheid van slave modules (operationele toestand) kan op twee manieren gebeuren: •
•
Guarding − Node Guarding: De NMT master controleert de connectie met een NMT slave − Life Guarding: De NMT slave controleert de connectie met de NMT master Heartbeat: Onbevestigde connectie berichten van netwerkmodules
28
De guarding wordt gerealiseerd door de NMT master die daarvoor een guarding request stuurt (node guarding control). Als de NMT slave geen antwoord geeft binnen een vooraf bepaalde tijd (node life time), of als de NMT status van een NMT slave gewijzigd is, zal de NMT master zijn eigen applicatie daarvan op de hoogte brengen. Alsook life guarding (de NMT slave bewaakt de NMT master) wordt ondersteund, zal de NMT slave de guard time en life time factor uit zijn object dictionary gebruiken om zijn node life time te bepalen. Als de NMT slave niet gecontroleerd wordt binnen deze life time dan zal hij zijn eigen applicatie daarvan op de hoogte brengen. Als guard time en life time factor gelijk zijn aan 0, betekent dit dat de NMT slave de NMT master niet controleert op dit gebied. Het heartbeat mechanisme bestaat er in dat er cyclisch een heart beat message wordt verstuurd (door de heartbeat producer). Het gebruik van heartbeat is maar half zo belastend voor de bus communicatie dan node guarding omdat het een niet bevestigde communicatie is. 3.10.3 Samenstelling NMT error control ‘Node guarding/ Life guarding ‘ bericht
Figuur 32: samenstelling node guarding/life guarding bericht Tabel 10: samenstelling databyte 05h
Tabel 11: samenstelling databyte 85h
Databyte 05hex Bit
Databyte 85hex Bit
7 0
6 0
5 0
4 0
3 0
2 1
1 0
0 1
7 0
6 0
5 0
4 0
3 0
2 1
1 0
0 1
Het communicatie object met functie code NMT error control (700hex) wordt gebruikt om de connectie controle uit te voeren. De NMT master ondervraagt (stuurt een RTR naar) iedere NMT slave afzonderlijk met regelmatige tijdsintervallen. Dit tijdsinterval wordt guard time genoemd en kan verschillend zijn voor iedere NMT slave. De node life time is gelijk aan de guard time (object dictionary 100Chex) vermenigvuldigd met de life time factor (object dictionary 100Dhex). Deze node life time kan ook voor iedere NMT slave verschillend zijn. De COB ID van dit bericht bestaat uit: functie code (700hex) + netwerk ID van de module (in het voorbeeld uit figuur 32 is dit dus 41hex). Bits 0 tot en met 6 in de databyte identificeren de NMT toestand van de slave: • • •
4 (04hex): 5 (05hex): 127 (7Fhex):
STOPPED OPERATIONEEL PRE-OPERATIONEEL
Na iedere guard time interval zal bit 7 toggelen tussen 0 en 1. Op die manier kan de NMT master een tweede respons binnen hetzelfde guard time interval detecteren en negeren. Bij de eerste request is bit 7 = 0. De status van bit 7 wordt gereset bij een NMT status “reset communication”. De connectie controle is niet actief tijdens
29
de initialisatie fase. Node guarding/life guarding wordt, zoals eerder vermeld, geconfigureerd in de object dictionary: • •
Guard Time: 100Chex Life Time Factor: 100Dhex
3.10.4 Connection Error
Figuur 33: connection error
De NMT master meldt een connection error aan het master programma als: • •
De slave binnen de voorziene guard time geen antwoord geeft. De NMT toestand van de slave is veranderd zonder dat de master er om gevraagd had.
3.10.5 Samenstelling NMT error control ‘Heartbeat’ bericht
Figuur 34: samenstelling heartbeat bericht Tabel 12: NMT service van enkele databytes
Databyte (dec) 0 4 5 127
Databyte (hex) 00 04 05 7F
NMT service Boot-up Stopped Operationeel Pre-operationeel
30
Het optionele heartbeat protocol vervangt eventueel het node guarding/life guarding protocol. IFM raadt aan om te werken met de heartbeat functie bij huidige onderdelen omdat dan de busbelasting lager is. Een heartbeat producer verzendt heartbeat berichten cyclisch met een frequentie die gedefinieerd wordt in het object producer heartbeat time (1017hex).. Eén of meerder consumers ontvangen dit bericht (COB ID 700hex + node ID). De relatie producer-consumer consumer kan geconfigureerd worden met objecten. Als de consumer consu geen signaal ontvangt binnen de periode die door het object consumer heartbeat (1016hex) werd bepaald, zal deze een error bericht (heartbeat event) genereren. Het object consumer heartbeat time (1016hex) = 0 deactiveert de heartbeat monitoring door de consumer. De intervaltijden zijn veelvouden van 1ms. De consumer heartbeat time moet hoger zijn dan de overeenstemmende producer heartbeat time. Modules kunnen dus elkaars status controleren via heartbeat berichten. Zij vervullen tegelijkertijd de taak van producer en consumer. Heartbeat monitor treedt in werking van zodra het tijdsinterval van de heartbeat producer time groter wordt dan 0. Als de heartbeat monitor reeds actief is tijdens de transitie naar pre-operationele pre operationele fase, zal de heartbeat monitor reeds ds starten met het verzenden van een boot-up boot bericht.
3.11 TIME object (TIME 100hex – 256dec)
Figuur 35: algemeen gebruik TIME object/TIME stamp [1]
Het TIME object, ook wel time stamp genaamd, genaamd bevat meestal een absolute tijd in milliseconden vanaf middernacht gemeten samen met het aantal dagen sinds 1 Januari 1984. Dit bericht heeft een lengte van 48 bits oftewel 6 bytes. Sommige applicaties kunnen tijdsgebonden zijn en deze tijd moet in de applicaties appl correct zijn over het gehele netwerk. Dit kan voor problemen zorgen in vooral grotere netwerken. In zulke situaties kan het TIME object gebruikt worden, hiermee worden de interne klokken van de modules gesynchroniseerd met een nauwkeurigheid van enkele kele microseconden.
31
4 Praktische opstelling 4.1 CAN netwerken Zoals in figuur 36 te zien is de opstelling zelf opgebouwd op basis van twee verschillende CAN netwerken. De beide netwerken worden verbonden door middel van een CR0403 controller die als gateway fungeert. In het eerste netwerk CAN2 (CANopen) zit een joystick om de opstelling te kunnen bedienen. bedienen. Samen met deze joystick kunnen ook via het scherm verschillende NMT berichten gesimuleerd worden. worden. Hiernaast kan ook de hellingshoek opgemeten worden via de inclinometer en uitbreidingen toegevoegd worden voor later gebruik via een I/O module. Later kan hier dan zoals gepland een hoogtewerker, kraan of andere opbouw voorzien worden. Dit netwerk werkt volgens het CANopen protocol, protocol, waarin de controller CR0403 de master is. De joystick, inclinometer en I/O module zijn slaves. Er wordt gecommuniceerd naar een tweede netwerk CAN1 waarop zowel gestandaardiseerde CAN SAE J1939 berichten als eigen samengestelde berichten voorkomen. voorkomen In dit tweede netwerk staat een display om alles mooi te kunnen uitlezen en/of bedienen samen met de ventielen om de hydraulische cilinders te kunnen aansturen. Deze ventielen werken met een extended SAE J1939 CAN protocol en kunnen niet via het CANopen protocol werken. Doordat deze situatie situatie zich meestal wel eens zal voordoen in de praktijk is dit dan ook een mooie test.
Figuur 36: schema van de CAN netwerken in de opstelling
32
4.2 Opstelling Figuur 37 toont de volledige opstelling inclusief druksensoren, hydraulische cilinders en schakelaars.
Figuur 37: afbeelding van de volledige opstelling
4.3 Componenten Een deel van de componenten zijn op basis van de EC0400 starterset ecomatmobil basic van IFM. Hierin zitten al de fuse/relay, een controller en een display module. Voor gedetailleerde uitleg of beschrijvingen van de verschillende componenten, elektrische en hydraulische schema’s wordt verwezen naar de site van IFM en Sauer-Danfoss of het eindwerk van de studenten Autotechnologie. De bouw van deze opstelling was namelijk een deel van hun opdracht. Hier wordt enkel kort besproken wat aanwezig is op de opstelling samen met de programmacodes die werden ingeladen. 4.3.1 IFM CR0421 Fuse/Relay en IFM CR0403 Controller Samen met de standaard beginners set van IFM wordt een fuse/relay module en een controller meegeleverd. Enkele relais dienen zeker aanwezig te zijn om ondermeer de motor van de hydraulische groep aan te sturen. Op de controller kunnen de verschillende schakelaars aangesloten worden alsook de twee CAN netwerken. In deze controller wordt ook het hoofdprogramma ingeladen waarin deze module als master fungeert op beide Figuur 38: IFM CR0421 Fuse/Relay (links) en IFM CR0403 Controller [4] netwerken.
33
4.3.2 IFM CR0451 Display In beide netwerken zal er een display aanwezig zijn. Er wordt gekozen voor de IFM CR0451 basic display omdat deze ook in de starterset wordt meegeleverd en de functionaliteiten voor deze opstelling voldoende zijn. Het display zelf kan afzonderlijk geprogrammeerd worden en dus eveneens als de IFM CR0403 controller als master ingesteld worden in een netwerk. Beide displays worden als afzonderlijke module geïntegreerd, hierdoor is deze module geen slave noch master maar kan deze toch berichten lezen afkomstig van het netwerk of is de module in staat berichten op de bus te plaatsen.
Figuur 39: IFM CR0451 Basic Display [4]
4.3.3
IFM CR2032 I/O Module
Figuur 40: IFM CR2032 I/O module [4]
Omdat de basis controller CR0403 slechts een beperkt aantal inputs en outputs heeft wordt een bijkomende CANopen I/O module toegevoegd. Hier wordt gekozen om gebruik te maken van een andere module van IFM namelijk de CR2032 I/O module. Hiermee kunnen ingangen op verschillende manieren binnen genomen worden. De vier analoge ingangen voor de drukmetingen in de leidingen worden op deze manier binnengebracht. De module voorziet vier ingangen en vier uitgangen. Deze uitgangen kunnen handig zijn om in een volgend stadium een verdere opbouw aan te sturen zoals een hoogtewerker. 4.3.4 IFM CR2102 Inclinometer De CANopen inclinometer wordt toegevoegd om een automatische vlakstelling van het chassis te kunnen realiseren of om een waarschuwing te geven als het chassis dreigt schuin te staan. Hiervoor moet de hoek waaronder de opstelling staat opgemeten kunnen worden. IFM heeft in zijn productengamma een inclinometer opgenomen, namelijk de CR2102. Hiermee kan de hoek opgemeten worden in twee asrichtingen. De baudrate van deze module samen met het node ID nummer ligt echter vast. Hierdoor wordt gekozen om e het 2 CAN netwerk op een baudrate van 125 bits/s te laten werken.
Figuur 41: IFM CR2102 Inclinometer [4]
34
4.3.5 IFM CR3106 GPRS module Een van de doelen van de andere studenten die bij deze opstelling betrokken zijn is om van op afstand de opstelling te kunnen monitoren. Hiervoor is uiteraard een verbinding nodig via bijvoorbeeld GSM zoals hier het geval. IFM voorziet hiervoor ook een module in zijn gamma namelijk de CR3106.
Figuur 42: IFM CR3106 GPRS module [4]
4.3.6 Sauer-Danfoss J7000 Joystick Om de hydraulische cilinders te kunnen bewegen wordt gekozen om een joystick aan de applicatie toe te voegen. Hiermee kan gekozen worden welke cilinders er moeten uitschuiven en in welke richting deze al dan niet moeten bewegen. Hierdoor kan de opstelling vrij manoeuvreren door deze joystick te bewegen. Er is gekozen voor een CANopen type joystick van het merk Sauer-Danfoss namelijk de JS7000.
Figuur 43: Sauer-Danfoss JS7000 [5]
4.3.7 Sauer-Danfoss PVG 32 PVED-CC Ventielen Voor de aansturing van de hydraulische cilinders is uiteraard een ventielblok nodig. Hiervoor wordt een ventielblok gekozen dat volledig kan aangestuurd worden via CAN berichten. Het is echter tot op heden niet mogelijk om deze ventielen aan te sturen volgens een CANopen protocol. Een ventiel met deze gewenste functionaliteiten kan gevonden worden in het productengamma van Sauer-Danfoss. Figuur 44: Sauer-Danfoss PVG32 PVED-CC ventielblok
35
5 Praktische implementatie In onderstaand hoofdstuk worden enkele gevallen of situaties beschreven over hoe de informatie op de bus nu kan geïmplementeerd worden of hoe verschillende berichten kunnen toegepast worden. Verschillende situaties die tijdens deze masterproef aan bod kwamen worden dan ook beschreven of nader toegelicht.
5.1 Berichten op bus
Figuur 45: berichten uitgelezen op de bus met behulp van PCAN-View
Door gebruik te maken van een programma zoals PCAN-View kan de informatie die op de bus geplaatst wordt uitgelezen worden. In Figuur 45 worden alle berichten alfabetisch geordend zo kan hetgeen aanwezig is of was van berichten snel gezien worden. Sommige van deze berichten kunnen echter overschreven worden door bijvoorbeeld data van een temperatuur die veranderd is maar wel nog altijd hetzelfde doeladres bevat. Enkele van deze berichten worden onderstaand wat verder onderzocht. Hierdoor kan meer bruikbare informatie achterhaald worden.
36
Tabel 13: informatie in verband met het bericht 000h
Onderdeel Message DLC Data
Inhoud 000h 2 01 02
Verklaring COB ID 000hex dit slaat op een NMT bericht dat werd verstuurd door de master. Aantal bytes die in het bericht zullen volgen. 01: De command specifier (CCS) die het NMT bericht nader bepaald, hier “Start Remote Node” 02: bevat het adres van de node die bevolen wordt een andere status aan te nemen hier dus node ID = 2dec Uit deze informatie volgt dat dit een bericht is van de master naar slave met ID nummer 2 die als opdracht heeft de node van pre-operationele naar operationele fase over te laten gaan. Tabel 14: informatie in verband met het bericht 603h
Onderdeel Message
Inhoud 603h
Verklaring COB ID + node ID = 600hex + 3hex 600hex: een Receive SDO 3hex: Node ID DLC 8 Aantal bytes die in het bericht zullen volgen Data 2F 00 20 0F 0A 00 00 00 CCD (1 byte) +Index (2 bytes) +Subindex (1 byte) +Data (4bytes) 2Fhex = 47dec : de slave stuurt 3 databytes als antwoord naar master 00 20intel byte order = 20 00motorola byte order :hexadecimale index in de object dictionary 0Fhex = 15dec : subindex 0A 00 00 00intel byte order = 00 00 00 0Amotorola byte order = 10dec : data zelf In dit bericht staat een antwoord van een node aan de master met daarin de inhoud van op plaats 2000hex en op subindex 15dec. Hierin zit er als inhoud 10dec. Met dit programma kunnen ook alle coderegels chronologisch afgebeeld worden waardoor berichten die overschreven worden toch zichtbaar zullen blijven. Een voorbeeld hiervan kan gevonden worden in de bijlagen achteraan. Zo wordt een logging bestand opgesteld waardoor alles kan gecontroleerd worden. Zo kan gezien worden of de instellingen wel degelijk zijn doorgevoerd bijvoorbeeld. Een andere manier om de berichten die op de bus komen snel en gemakkelijk uit te kunnen lezen is gebruik te maken van een CANalyzer. Hiermee kunnen alle berichten uitgelezen worden samen met de inhoud ervan en niet meer in codetaal maar in verklarende tekst. Dit gebeurt door gebruik te maken van de eds bestanden van de verschillende nodes. Zo kan alle informatie die in deze bestanden reeds is opgesteld vertaald worden met behulp van het bericht en de CANalyzer software. Ook kan deze informatie aangevuld worden door eigen invullingen. Het uitlezen van deze berichten via deze methode was echter nog in het beginstadium op het einde van deze masterproef, hierdoor wordt verder onderzoek met deze methode niet verder besproken.
5.2 Opbouw standaard CANopen project met CoDeSys In onderstaand hoofdstuk zal besproken worden hoe een CANopen project met het programma CoDeSys aangemaakt dient te worden. De gebruikte IFM controllers ondersteunen in ruime mate de DS301 CANopen protocol stack. Met behulp van de CANopen configurator in CoDeSys en de aangepaste CANopen libraries kunnen CANopen netwerken vrij eenvoudig worden opgezet. Dit betekent dat de programmeur zelf geen specifieke CANopen code hoeft te schrijven. Eerst en vooral zal de methode met de CANopen configurator besproken worden. Daarna worden een aantal CANopen functies in de applicatie geprogrammeerd. Door zelf programmacode met CANopen functies te
37
programmeren volgt dikwijls een beter inzicht in het CANopen protocol. Dit is echter omslachtig en er is meer kans op fouten dan wanneer de instellingen volgens de traditionele manier worden aangepast. 5.2.1 Met CANopen configurator in CoDeSys Onderstaand volgt een soort stappenplan om een CANopen project op te starten met CoDeSys versie 2.3. 5.2.1.1 Target settings Open een nieuw project. Hier kan gekozen worden naar waar dit programma zal geladen moeten worden. Hier wordt gekozen voor de CR0403 Basic controller van IFM. Deze controller zal alle programmatuur bevatten en als master fungeren in het netwerk.
Figuur 46: target settings
Na keuze van een controller worden er enkele tabbladen zichtbaar. Hier dient onder het tabblad Network functionality Support network variables aangevinkt te worden en type in de onderstaande balk met Names of supported network interfaces: CAN. Dit is nodig om Network Management berichten te ondersteunen en om een CANopen netwerk op te starten. Al de rest mag op de default instellingen blijven staan.
Figuur 47: tabblad network functionality
38
5.2.1.2 New POU In een volgende stap kan gekozen worden om het basisprogramma op te stellen. De naam van de eerste POU (Program Organization Unit) waar van gestart wordt moet altijd PLC_PRG zijn. Vervolgens kan een programmeertaal gekozen worden naargelang de voorkeur van de programmeur.
Figuur 48: new POU
5.2.1.3 PLC Configuration Voor de code zelf geschreven wordt dient nog duidelijk gemaakt te worden aan deze controller hoe het netwerk er zal uitzien. Ga hiervoor naar het tabblad Resources en open PLC Configuration. Hieronder kunnen alle modules die meedoen in het CANopen netwerk geconfigureerd worden.
Figuur 49: tabblad resources
39
Zoals te zien in figuur 50 heeft deze CR0403 twee CAN interfaces. Bij deze opstellingen wordt ervoor gekozen om CAN 1 in te stellen als een CANopen netwerk. Eerst een vooral dient de CR0403 controller als master ingesteld te worden, klik hiervoor met de rechter muistoets op CANopen interface en kies bij de optie Append Subelement voor de optie CANopen Master.
Figuur 50: instellen controller als CANopen master
Door deze master module nu te selecteren kunnen enkele instellingen aangepast worden. Deze instellingen zijn uiteraard naar eigen keuze. Let echter op dat Support DSP301, V4.01 and DSP306 aangevinkt staat.
Figuur 51: CAN parameters CR0403 CANopen master controller
40
Bij wijze van voorbeeld wordt nu een I/O module van IFM als slave toegevoegd namelijk de CR2032. Klik hiervoor rechts op CANopen Master(VAR), kies voor de optie Append Subelement en neem de CR2032 module.
Figuur 52: toevoegen slave module CR2032
Na toevoeging van de CR2032 worden alle in- en uitgangen zichtbaar die deze module kan gebruiken.
41
Figuur 53: in- en outputs CR2032 slave module
Hierbij stellen %QW de uitgangen voor en %IW de ingangen. Onderstaande volgorde wordt dan ook aangenomen: Digital_out_ch2_pin4%QW7 Digital_out_ch4_pin4%QW8 Digital_out_ch6_pin4%QW9 Digital_out_ch8_pin4%QW10 Digital_in_ch1_pin4%IW11 Digital_in_ch3_pin4%IW12 Digital_in_ch5_pin4%IW13 Digital_in_ch7_pin4%IW15 Analog_in_ch1_pin2%IW15 Analog_in_ch3_pin2%IW16 Analog_in_ch5_pin2%IW17 Analog_in_ch7_pin2%IW18 Om deze codes een logische naam te geven kunnen globale variabelen aangemaakt worden met de overeenkomende in- en uitgangen. Dit kan door middel van een tabblad aan te maken onder de map Global Variables in het tabblad Resources. Zoals in figuur 54 te zien is de naam hiervan dus CR2032_IN_OUT. In dit tabblad kunnen de variabelen dan benoemd worden.
42
Figuur 54: nieuw tabblad CR2032_IN_OUT
Figuur 55: invulling tabblad CR2032_IN_OUT
Controleer vervolgens of de node ID op de correcte unieke waarde staat. De CR2032 module heeft echter ook de mogelijkheid om de node ID hardwarematig vast in te stellen door middel van microswitches onder het afneembaar paneel. Dit kan dus vast ingesteld worden op 3 in dit geval. Schakel tevens bij de CAN parameters van de CR2032 module de nodeguarding uit. Beter is gebruik te maken van heartbeat, zo zal de node zijn status direct meesturen in het antwoord wat niet het geval is bij nodeguarding. Hiervoor wordt gekozen om iedere 1000ms een heartbeat bericht op de bus te plaatsen. Als laatste werd ook gekozen om de optie Emergency Telegram in te schakelen. Hiermee plaatst de CR2032 module een EMCY (Emergency) bericht op de bus als er iets misloopt.
Figuur 56: CAN parameters CR2032 slave module
43
In het tabblad Send PDO-Mapping kunnen de properties aangepast worden. Het transmissie type wordt in deze toepassing geplaatst op cyclic-synchronous. Ook kunnen de Number of Syncs aangepast worden.
Figuur 57: properties Send PDO-Mapping CR2032 slave module
Vervolgens kunnen bij de Service Data Objects enkele stukken van de configuratie aangepast worden. De verschillende subindexen van index 2000hex stellen de in- en outputs voor. Door het aanpassen van de Value kunnen de respectievelijke in- of outputs geconfigureerd worden. Wat deze getallen zoals 0xA of 0x2 betekenen kan in de overeenkomende datasheet van deze module gevonden worden. Zo kan 0xA bijvoorbeeld de aanduiding zijn om deze in- of output als analoge in- of output in te stellen terwijl 0x6 dan weer kan betekenen dat deze input ratiometrisch (0-1000‰) wordt binnengenomen. Ook de baudrate en de node ID kunnen via deze SDO’s ingesteld worden bij deze module. Bij sommige modules is niet zo veel instelbaar als bij deze module het geval is, in deze gevallen is de gebruiker gebonden aan hetgeen reeds ingesteld is. Zo kan de baudrate en/of node ID van een module vastliggen waardoor bij de opbouw van een netwerk hiermee rekening gehouden moet worden zodanig dat er zich geen conflicten voordoen.
44
Figuur 58: service data objects CR2032 slave module
5.2.1.4 Library manager Om de goede werking van het programma te verzekeren en alle configuraties in verband met onder andere de modules en CANopen door te laten voeren moeten alle nodige libraries aanwezig zijn. Hierin zitten verschillende functies en instellingen/variabelen reeds verwerkt om een bepaalde module te kunnen gebruiken of om bijvoorbeeld CANopen te ondersteunen. Om een CANopen netwerk te starten met de CR0403 controller van IFM moeten de libraries uit figuur 59 zeker aanwezig zijn.
45
Figuur 59: libraries CANopen netwerk met CR0403 controller
Bij compileren van het programma worden door het toevoegen van enkele van deze libraries een tabblad (tabbladen) toegevoegd onder Global Variables (Figuur 54) met hierin verschillende variabelen.
Figuur 60: network management implicit variables CAN (CONSTANT)
5.2.1.5 Communication parameters Indien vervolgens gekozen wordt voor communication parameters onder het tabblad online uit het hoofdmenu bovenaan (Figuur 61) dan kan gekozen worden voor het juiste kanaal (CAN1 of CAN2 voor de CR0403 controller) waarmee verbonden moet worden.
46
Figuur 61: tabblad online - communication parameters
Aangezien CAN2 op een baudrate van 125 bits/s werkt moeten de instellingen aangepast worden. Maak hiervoor eerst een nieuw kanaal aan en zorg ervoor dat de node ID overeenkomt met de node download ID (in te stellen met het service programma Maintenance van IFM) naar waar zal geschreven worden. Let op dat deze download node ID niet gelijk is aan de node ID van een andere module uit het CANopen netwerk en bijgevolg dus ook niet aan de node ID van de master module. De node ID dient steeds uniek te blijven, default staat de download node ID (van het display CR0451) waar naartoe geschreven moet worden meestal op 127. In deze opstelling is dit aangepast naar 126. Tabel 15 verduidelijkt nog eens de CANopen node ID’s en de download ID’s.
47
Tabel 15: verduidelijking node ID
Module CR0403
Netwerk CAN1 netwerk
Baudrate 250
Node ID 126
Verklaring node ID Hier wordt het programma voor de controller naartoe geschreven vanuit CoDeSys via het CAN1 netwerk. De node ID fungeert dus als download ID. CR0403 CANopen netwerk 125 127 Hier wordt het programma voor de controller (CAN2) naartoe geschreven vanuit CoDeSys via het CANopen netwerk. De node ID fungeert dus als download ID. e CR0451 CAN1 netwerk 250 127 Hier wordt het programma voor de 1 display naartoe geschreven vanuit CoDeSys via het CAN1 netwerk. De node ID fungeert dus als download ID. e CR0451 CANopen netwerk 125 126 Hier wordt het programma voor de 2 display (CAN2) naartoe geschreven vanuit CoDeSys via het CANopen netwerk. De node ID fungeert dus als download ID. CR0403 CANopen netwerk 125 1 Dit is de node ID in het CANopen netwerk om de (CAN2) CR0403 controller (master module) te herkennen. Hier mag absoluut niet naartoe geschreven worden want dit is geen download ID. CR2032 CANopen netwerk 125 3 Dit is de node ID in het CANopen netwerk om de (CAN2) CR2032 module (I/O module) te herkennen. Hier kan en mag geen programma naartoe geschreven worden. Naast een correct node ID dient de baudrate gecontroleerd te worden en op 125 geplaatst te worden bij dit voorbeeld. Ook wordt als CAN card driver een Sie_usb gebruikt.
Figuur 62: communication parameters
Het CANopen netwerk is nu klaar voor gebruik. Vanaf nu kan het programma zelf opgesteld worden, zo kunnen bijvoorbeeld commando’s verstuurd worden naar de CR2032 om een uitgang aan te sturen (Figuur 63).
48
Figuur 63: voorbeeld aansturen CR2032
5.2.2 CANopen programmacode schrijven Door gebruik te maken van de CANopen configurator worden bij de power-up, via SDO’s de nodige objecten in de object dictionairy van de CANopen slaves aangesproken en geconfigureerd. Een loggin (alleen de eerste berichten) van deze opstart wordt hieronder getoond: ; Message Number ; | Time Offset (ms) ; | | Type ; | | | ID (hex) ; | | | | Data Length Code ; | | | | | Data Bytes (hex) ... ; | | | | | | ;---+-- ----+---- --+-- ----+--- + -+ -- -- -- -- -- -- -1) 4633.5 Rx 0703 1 00 2) 5639.0 Rx 0703 1 7F 3) 5827.8 Rx 0603 8 40 00 10 00 00 00 00 00 4) 5830.9 Rx 0583 8 43 00 10 00 91 01 0F 00 5) 5836.0 Rx 0603 8 2B 17 10 00 E8 03 00 00 6) 5845.0 Rx 0583 8 60 17 10 00 00 00 00 00 Tabel 16: verklaring berichten uit logging bestand
Bericht COB ID DLC Data Verklaring 1 703 1 00 Node guarding masterslave 3 2 703 1 7F Life guarding slave 3master (7F = Pre-operationeel) 3 603 8 40 00 10 00 00 00 00 00 Read request index 1000 (device type) van node 3 4 583 8 43 00 10 00 91 01 0F 00 Read response device type = 0x000F0191 5 603 8 2B 17 10 00 E8 03 00 00 Write request producer heartbeat time 1000ms 6 583 8 60 17 10 00 00 00 00 00 Data transfer OK from server Er kan gezien worden dat wanneer de node in pre-operationele mode is de aanpassingen doorgevoerd zullen worden en zoals in tabel 16 te zien de heartbeat time op 1000ms zal ingesteld worden. Default is deze waarde dus verschillend van 1000ms of is deze zelfs uitgeschakeld (Figuur 56) . Een aantal CANopen services, zoals NMT, SDO, Heartbeat, Emergency worden in zelf geschreven programmacode uitgetest. Daarvoor wordt een display in het CANopen netwerk geïntegreerd. Het display fungeert als “onafhankelijke” controller (geen master noch slave) waarin de CANopen programmacode wordt geschreven. Het display doet meteen dienst om bijvoorbeeld de toestand van de CANopen slaves te visualiseren.
49
5.3 NMT berichten opstellen Een toepassing waarbij NMT (Network Management) berichten gebruikt worden is bij het veranderen van de status van de modules. De master kan de opdracht geven aan een slave module om zijn status aan te passen e (Figuur 30). In deze opstelling is één van de functionaliteiten van de 2 display gemonteerd op het CANopen netwerk het simuleren van deze berichten. Hierbij stuurt de display berichten waarin de opdracht staat om bijvoorbeeld de status van een module aan te passen.
e
Figuur 64: tabblad network management 2 display
Indien nu gekozen wordt om de I/O module in het netwerk te resetten dan zal de display een bericht op de bus plaatsen waarmee de opdracht wordt gegeven aan de I/O module terug te gaan naar zijn initialisatie fase. Dit wordt uitgevoerd na het eerste heartbeat bericht volgend op het commando om te resetten. Automatisch zal deze module zichzelf naar de pre-operationele fase brengen. Daarna alle PDO’s opnieuw versturen zoals bij de opstart van het systeem en als laatste zichzelf terug in operationele fase plaatsen.
50
e
Figuur 65: programmacode tabblad network management 2 display
Figuur 66: berichten op bus VOOR reset I/O module
Figuur 67: berichten op bus NA reset I/O module
Figuur 66 en figuur 67 tonen een voorstelling van de berichten die op de bus zijn gekomen. Berichten met dezelfde identifier worden overschreven dus enkel het laatste bericht hiervan is nog zichtbaar. Hiermee kan wel snel en duidelijk gezien worden dat de verschillende stappen zijn uitgevoerd. Deze manier is echter niet sluitend, er kunnen nog steeds fouten bij het resetten gebeurd zijn die overschreven worden in deze voorstelling. Om zekerheid te verkrijgen kan een logging bestand opgesteld worden over een bepaalde tijd. Voor het gehele logging bestand zie bijlage C achteraan. Tabel 17 toont een deel van dit logging bestand, de berichten die voor dit voorbeeld belangrijk zijn worden nader toegelicht. Berichten afkomstig van of bedoeld voor de I/O module van node ID = 3 worden benadrukt in kleur.
51
COB ID
0.7 5.7 14.6 21.2 21.7 22.7 23.7 24.6 28.2 28.8 29.5 30.1 31.1 34.7 42.8 44.8 48.6 56.1 56.8
01A0 390 01A0 80 203 303 183 283 01A0 02A0 03A0 720 490 710 01A0 190 290 390 01A0
289.2 298.0
01A0 190
298.8 301.8 302.7
703 290 01A0
359.7 371.9
390 01A0
375.8 384.9
0 490
995.8 996.5
02A0 03A0
1002.7 1005.9
703 190
1008.4
603
DLC
Absolute tijd
Tabel 17: deel van logging bestand uit bijlage C: reset I/O module + verklaringen berichten
D0 D1 D2 D3 D4 D5 D6 D7 Verklaringen 4 FC FF FE FF 8 0 0 0 0 0 0 0 0 4 FC FF FF FF 0 1 0 8 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 8 2A 3 51 3 2A 3 6E 3 4 FC FF 0 0 2 FC FF 2 0 0 1 5 8 0 0 0 0 0 0 0 0 1 5 4 FC FF FE FF 8 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 4 FD FF 0 0 … 4 FB FF 0 0 8 0 0 0 0 0 0 0 0 Heartbeat node 3 = I/O, nog steeds 1 5 operationeel 8 0 0 0 0 0 0 0 0 4 FD FF 0 0 … 8 0 0 0 0 0 0 0 0 4 FC FF FE FF Bericht met opdracht aan node 3 om te 2 81 3 resetten (81hex=129dec=Reset module) 8 0 0 0 0 0 0 0 0 … 2 FC FF 2 0 0 Heartbeat node 3 = I/O, 0 = boot-up fase 1 0 (initialisatie) 8 0 0 0 0 0 0 0 0 Start opnieuw met PDO's te versturen (na 8 40 0 10 0 0 0 0 0 eerste heartbeat na het 52
opdrachtcommando) 1009.7 1013.7 1017.6 1018.6 1023.0 1107.2 1108.2 1111.4
290 583 390 603 01A0 603 190 290
8 8 8 8 4 8 8 8
0 0 0 43 0 10 0 0 0 2B 17 10 FB FF FE 23 0 14 0 0 0 0 0 0
1111.8 1118.7 1119.7 1122.2 1128.4 1133.5
703 390 01A0 583 603 01A0
1 8 4 8 8 4
7F 0 FC 60 23 FD
0 0 0 91 0 0 0 64 FF 1 3 0 0 0 0
0 0 1 0F 0 0 0 0
0 0 0 0
2 0 0
0 0 0
0 0 0
Heartbeat node 3 7F = pre-operationele fase 0 0 FF 0 0 14 1 14 FF FD
0 0 1 1 FF
0
0
0
0 3
0 3
0 0 0 80
=
I/O,
=
I/O,
0
… 1248.3 1249.3 1254.0 1257.2
710 603 583 01A0
1320.9
390
1324.0 1326.2
1333.4 1340.1 1346.2 1349.9 1353.3 1360.2 1364.0 1367.0 1371.2 1380.9 1381.6 1382.1 1383.1 1384.1 1385.0 1394.4 1395.1 1396.6
703 01A0
0 01A0 490 710 720 190 290 01A0 390 01A0 80 203 303 183 283 02A0 03A0 490
1 5 8 23 8 60 4 FB 8
0
1 7F 4 FC
2 4 8 1 1 8 8 4 8 4 0 1 8 8 8 2 2 8
1 FB 0 5 5 0 0 FC 0 FD 0 0 0 33 FD 0 0
1 18 1 18 FF FF 0
0
1 83 2 0 1 1 16 34 FF … 0 0 0 0
0 2 laatste PDO bericht
0 Heartbeat node 3 7F = pre-operationele fase
FF FE
FF Bericht met opdracht aan node 3 om te starten (1hex=1dec=Start module), node 3 werkt dus opnieuw normaal vanaf hier.
3 FF FF 0 0
FF 0
0 0 0 0 FF FF 0 0 FF 0
0 0 FF 0 0
0 0 0 0 3 47 FF 0 0 0
0
0
0
0
0 0
0 0
0 0
0 0
0
0
0
0
0 0 0 0 3 2A
0 0 0 0 3 6E
0 0 3
0
0
0
0
0
53
1408.7 1410.8 1414.6 1422.0 1422.7
01A0 190 290 390 01A0
4 FC 8 0 8 0 8 0 4 FC
1424.0 1435.4 1447.4 1449.3 1450.8 1461.5 1462.0 1462.4 1463.4 1464.4 1465.1 1466.1 1467.0 1467.6 1468.2
703 01A0 490 01A0 710 190 80 203 303 183 01A0 283 290 02A0 03A0
1 4 8 4 1 8 0 1 8 8 4 8 8 2 2
5 FD 0 FC 5 0 0 0 0 FD 33 0 FD 0
FF FF 0 0 0 0 0 0 FF FD
FF 0 0 0 FF
0 0 0
0 0 0
0 0 0
0 0 0 Heartbeat node 3 = I/O, 5 = operationele fase
FF FE 0 0 FF FF 0
0
0 0 0 0 FF 0 3 47 0 0 FF 0
FF 0 FF
0
0
0
0
0
0
0
0
0
0 0 0 0 0 3 2A 0 0
0 0
0 0
0 0
3 6E 0 0
3 0
54
6 Programmatie Voor de programmatie van de controller CR0403 en de eerste display CR0451 aangesloten op het CAN1 netwerk wordt verwezen naar het eindwerk CANopen in mobiele automatisering gemaakt door de studenten e autotechnologie van het KATHO departement VHTI. De programmatie van de 2 display zal in dit hoofdstuk kort omschreven worden doch niet volledig. Hiervoor wordt verwezen naar het programma zelf te vinden in het VHTI, de volledige publicatie hiervan is niet mogelijk.
Figuur 68: PLC configuration + map global variables
Figuur 68 geeft een voorstelling van hoe de PLC configuratie is opgesteld via het programma CoDeSys voor de CR0403 controller. Er wordt dus een CANopen master toegevoegd (de CR0403 controller) met onderliggend drie verschillende modules. De eds file van een van deze modules namelijk de joystick is aangepast naar eigen keuze via het programma CANeds. Ook is er links te zien hoe een verschillend tabblad is aangemaakt voor iedere module met hierin de in- en/of outputs van de overeenkomstige module. Zo kunnen deze in- en uitgangen direct aangestuurd worden op basis van een variabele (zie ook Figuur 54 en Figuur 55 in hoofdstuk 5.2.1.3 ).
Figuur 69: POU's programma controller + CAN_SETTING
55
Figuur 69 toont links de verschillende programma’s die in de controller worden ingeladen. Ook wordt één van deze programma’s rechts afgebeeld namelijk CAN_SETTING(PRG). Zoals te zien in het programma moet er bij de opstart eerst en vooral een CAN netwerk gecreëerd worden om de CAN functies te kunnen toepassen, hier wordt dit dus op kanaal 2 een netwerk met een baudrate van 250 bits/s. Als tweede wordt het knipperen van de led ook ingesteld.
e
Figuur 70: POU's 1 CR0451 display + stuk programma Transmit_KEY_VALVE(PRG)
Samen met de controller moet er ook een programma in beide displays geladen worden. Het programma voor e in de 1 display bestaat uit grotendeels versturen van commando’s (Figuur 70) of ontvangen van de verschillende berichten op de bus om de waarden van bijvoorbeeld de drukken hieruit te halen en voor te stellen op het scherm. Beide displays hebben overigens dezelfde PLC configuratie (Figuur 71), bij aanmaken van de programma’s moet dus enkel de juiste module geselecteerd worden waar het programma naar toe geschreven zal worden en zijn er hier verder geen aanpassingen nodig.
Figuur 71: PLC configuratie beide displays
56
e
Figuur 72: POU's 2 CR0451 display module + deel programma EMCY(PRG)
Figuur 72 toont een deel van het programma dat geschreven is om EMCY (Emergency) berichten na te bootsen op het netwerk. Hiervoor wordt gekozen om via een functie een CAN bericht aan te maken waarvan de ID zelf gekozen kan worden en waarvan de inhoud van de data ook aangepast kan worden. Op deze manier kunnen de berichten die door de master zouden verstuurt worden gesimuleerd worden. In dit voorbeeld is het de bedoeling om het error register van een module op te vragen, dit staat op index 1003 met op subindex 1 tot en met 4 de verschillende error codes die werden opgeslagen. Het opvragen van de inhoud uit het register van node 3 gebeurt aan de hand van een SDO bericht dat zelf wordt opgesteld. Tabel 18: bericht met read-request(40) op index 1003(D1 D2) subindex 01(D3) aan module met node ID = 3
COB ID DLC D0 D1 D2 D3 603 4 40 03 10 01 e Telkens wordt het getal op de 5 databyte van het antwoord uitgelezen, hierin staat namelijk de error code. Het bericht dat teruggestuurd wordt van deze module is te vinden in tabel 19. Tabel 19: bericht met antwoord van module 3 op read-request van index 1003 subindex 01
COB ID DLC D0 D1 D2 D3 D4 D5 D6 D7 583 8 41 03 10 01 08 00 00 00 Indien het read-request bericht opgesteld moet worden in CoDeSys alsook het antwoord hierop uitgelezen moet worden dan volgt onderstaande code: (* I/O module ID=3hex *) Error_IO_Request_1( ENABLE:=KEY_F1 , CHANNEL:=1 , ID:=1539(* =603hex *) , Extended:=FALSE , DataLengthCode:=4 , DATA:= , RESULT=> ); Error_IO_Request_1.DATA[0]:=64; Error_IO_Request_1.DATA[1]:=3; Error_IO_Request_1.DATA[2]:=16; Error_IO_Request_1.DATA[3]:=1;
57
Error_IO_Answer_1(
ENABLE:=Error_IO_Request_1.RESULT=1 , CHANNEL:=1 , ID:=1411(* =583hex *) , DATA=> , RESULT=> ); Indien deze coderegels nu gevolgd worden dan wordt er eerst een read request verstuurt (data[0]=64dec=40hex) wanneer er een commando volgt meer bepaald drukken op de key F1. Onmiddellijk hierna wordt het antwoord uitgelezen indien het resultaat van de eerste bewerking gelijk is aan 1. In de datasheets of via de helpfunctie in CoDeSys kan gevonden worden dat wanneer het resultaat van deze functie gelijk is aan 1, de functie correct is uitgevoerd en bijgevolg het bericht op de bus is geplaatst en de vraag verstuurt is. Het antwoord kan direct uitgelezen worden doordat deze module hierop zo snel mogelijk een antwoord geeft en de overige programmacoderegels maar worden doorlopen als dit antwoord opnieuw correct is verlopen. Het programma staat echter niet stil maar blijft doorlopen, dit gebeurd dus niet noodzakelijk allemaal tijdens één cyclus van het programma. Zo wordt de cyclustijd van het programma kort genoeg gehouden.
58
7 Volledige uitwerking logging bestand In tabel 20 volgt een volledige uitwerking van een logging bestand zoals te vinden in de bijlagen achteraan. De logging toont in chronologische volgorde de CANopen berichten bij de opstart van een CANopen netwerk vanaf de start van het netwerk tot de spanning van de bus wordt gehaald. De controller CR0403 is de master met node ID 1. Er zijn twee slave modules opgenomen in het netwerk. De CR2032 I/O module waarvan enkele in- en outputs worden ingesteld vooraleer operationeel geplaatst te worden, deze module draagt de node ID gelijk aan 3. Daarnaast is een inclinometer voorzien met node ID gelijk aan 2. Deze module is echter niet aangesloten wat dan ook voor enkele foutberichten hieromtrent zorgt. Tabel 20: volledige uitwerking van een logging bestand
D7
D6
D5
D4
D3
D0 0
1 7F
D2
DLC 1
703
D1
COB ID 703
Verklaringen Node Guarding master-->slave 3 Life Guarding slave 3-->master
SubIndex
Index
DLC
8 40
0 10
0
583
8 43
0 10
0 91
1 0F
0 Read response Device type=0x000F0191
603
8 2B 17 10
0 E8
3
0
0 Write request producer heartbeat time 1000ms
583
8 60 17 10
0
0
0
0
0 Data transfer OK from server
603
8 23 16 10
1 DC
5
1
0 Write request consumer heartbeat time 1500ms to node 1
583
8 60 16 10
1
0
0
0
0 Data transfer OK from server
603
8 23 14 10
0 83
0
0 80 Write request COB ID Emergency, EMCY is not valid
583
8 60 14 10
0
0
0
0
0 Data transfer OK from server
603
8 23 14 10
0 83
0
0
0 Write request COD ID Emergency, EMCY is valid
583
8 60 14 10
0
0
0
0
0 Data transfer OK from server
603
8 23
0 14
1
3
2
0 80 Write request COB ID PDO 1, PDO not valid
583
8 60
0 14
1
0
0
0
0 Data transfer OK from server
603
8 23
0 14
1
3
2
0
0 Write request COB ID PDO 1, PDO valid, CAN ID of 1st R_PDOs
583
8 60
0 14
1
0
0
0
0 Data transfer OK from server
603
8 23
1 14
1
3
3
0 80 Write request COB ID PDO 2, PDO not valid
583
8 60
1 14
1
0
0
0
0 Data transfer OK from server
603
8 23
1 14
1
3
3
0
0 Write request COB ID PDO 2, PDO valid, CAN ID of 2nd R_PDOs
583
8 60
1 14
1
0
0
0
0 Data transfer OK from server
603
8 23
0 18
1 83
1
0 80 Write request COB ID PDO 1, PDO not valid
583
8 60
0 18
1
603
8 23
0 18
1 83
583
8 60
0 18
1 E0 B9 17
603
8 23
1 18
1 83
583
8 60
1 18
1
603
8 23
1 18
1 83
583
8 60
1 18
1
Ccd
COB ID 603
Data 0
0
Verklaringen 0
1 16 34 1 2
0
2 Data transfer OK from server 0 Write request COB ID PDO 1, PDO valid, CAN ID of 1st T_PDOs FE Data transfer OK from server
0 80 Write request COB ID PDO 2, PDO not valid
1 16 34 2
0 Read request Device type van node 3
0
1 16 34
2 Data transfer OK from server 0 Write request COB ID PDO 2, PDO valid, CAN ID of 2nd T_PDOs 2 Data transfer OK from server 59
603
8 2F
0 20
2
0
0
0
0 Write request Configuartion Output channel 2, pin 4 --> OFF
583
8 60
0 20
2
0
0
0
0 Data transfer OK from server
603
8 2F
0 20
5
0
0
0
0 Write request Configuration Input channel 5, pin 4 --> OFF
583
8 60
0 20
5
0
0
0
0 Data transfer OK from server
603
8 2F
0 20
7
0
0
0
0 Write request Configuration Input channel 7, pin 4 --> OFF
583
8 60
0 20
7
0
0
0
0 Data transfer OK from server
603
8 2F
0 20
9
0
0
0
0 Write request configuration Input channel 1, pin 2 --> OFF
583
8 60
0 20
9
0
0
0
0 Data transfer OK from server
603
8 2F
0 20 0A
0
0
0
0 Write request configuration Output channel 2, pin 2 --> OFF
583
8 60
0 20 0A
0
0
0
0 Data transfer OK from server
603
8 2F
0 20 0B
0
0
0
0 Write request configuration Input channel 3, pin 2 --> OFF
583
8 60
0 20 0B
0
0
0
0 Data transfer OK from server
603
8 2F
0 20 0C
0
0
0
0 Write request configuration Output channel 4, pin 2 --> OFF
583
8 60
0 20 0C
0
0
0
0 Data transfer OK from server
603
8 2F
0 20 0D
6
0
0
0 Write request configuration Input channel 5, pin 2 --> OFF
8 60
0 20 0D
0
0
0
0 Data transfer OK from server
8 2F
0 20 0E
0
0
0
0 Write request configuration Output channel 6, pin 2 --> OFF
583
8 60
0 20 0E
0
0
0
0 Data transfer OK from server
603
8 2F
0 20 0F
0
0
0
0 Write request configuration Input channel 7, pin 2 --> OFF
COB ID
DLC
Error register
83
Error code
583 603
8 30 81 11
Device specific 0
0
0
0
Verklaringen 0 Monitoring ID=3, te lang geen guard object ontvangen
SubIndex
0 20 0F
0
0
0
0 Data transfer OK from server
603
8 2F
0 20 10
0
0
0
0 Write request configuration Output channel 8, pin 2 --> OFF
583
8 60
0 20 10
0
0
0
0 Data transfer OK from server
602
8 40
0 10
0
0
0
0
0 Read request Device type van node 2
703
1 7F
602
8 80
0 10
0
0
0
4
5 Data transfer failed from server
COB ID
Index
DLC
8 60
Ccd
COB ID 583
Data
Verklaringen
Life Guarding slave 3-->master
DLC
Ccs
Node ID
0
2
1
3
Start remote node 3
0
2
1
2
Start remote node 2
701
1
5
COB ID
DLC
Error code
8
0
Verklaringen
Heartbeat bericht --> node 1 is operationeel (iedere 1000ms) Error register
83
Empty
0
0
Device specific 0
0
0
0
Verklaringen 0 Reset or no error
60
DLC COB ID 80
Geen datavelden
Verklaringen
0
Synchronisation (SYNC)
COB ID
DLC
203
1
0
303
8
0
0
0
0
0
0
0
0 R_PDO2 van node 3 (binnen 100ms na SYNC, hier 1.6ms)
283
8
0
0
0
0
0
0
0
0 T_PDO2 van node 3 (binnen 100ms na SYNC, hier 2.6ms)
80
0
203
1
0
303
8
0
0
0
0
0
0
0
0 R_PDO2 van node 3 (binnen 100ms na SYNC, hier 1.5ms)
283
8
0
0
0
0
0
0
0
0 T_PDO2 van node 3 (binnen 100ms na SYNC, hier 2.5ms)
80
0
203
1
0
303
8
0
0
0
0
0
0
0
0 R_PDO2 van node 3
283
8
0
0
0
0
0
0
0
0 T_PDO2 van node 3
80
0
203
1
0
303
8
0
0
0
0
0
0
0
0 R_PDO2 van node 3
283
8
0
0
0
0
0
0
0
0 T_PDO2 van node 3
80
0
203
1
0
303
8
0
0
0
0
0
0
0
0 R_PDO2 van node 3
283
8
0
0
0
0
0
0
0
0 T_PDO2 van node 3
80
0
203
1
0
303
8
0
0
0
0
0
0
0
0 R_PDO2 van node 3
283
8
0
0
0
0
0
0
0
0 T_PDO2 van node 3
80
0
203
1
0
303
8
0
0
0
0
0
0
0
0 R_PDO2 van node 3
283
8
0
0
0
0
0
0
0
0 T_PDO2 van node 3
80
0
203
1
0
283
8
0
0
0
0
0
0
0
0 T_PDO2 van node 3
303
8
0
0
0
0
0
0
0
0 R_PDO2 van node 3
80
0
203
1
0
303
8
0
0
0
0
0
0
0
0 R_PDO2 van node 3
283
8
0
0
0
0
0
0
0
0 T_PDO2 van node 3
80
0
203
1
Data
Verklaringen R_PDO1 van node 3 (binnen 100ms na SYNC, hier 0.5ms)
SYNC R_PDO1 van node 3 (binnen 100ms na SYNC, hier 0.5ms)
SYNC R_PDO1 van node 3
SYNC R_PDO1 van node 3
SYNC R_PDO1 van node 3
SYNC R_PDO1 van node 3
SYNC R_PDO1 van node 3
SYNC R_PDO1 van node 3
SYNC R_PDO1 van node 3
SYNC 0
R_PDO1 van node 3 (binnen 100ms na SYNC, hier 0.5ms)
61
183
8
0
0
0
0
0
0
0
0 T_PDO1 van node 3 (iedere 10e SYNC maar meesturen)
303
8
0
0
0
0
0
0
0
0 R_PDO2 van node 3
283
8
0
0
0
0
0
0
0
0 T_PDO2 van node 3
80
0
203
1
0
SYNC
283
8
0
0
0
0
0
0
0
0 T_PDO2 van node 3
303
8
0
0
0
0
0
0
0
0 R_PDO2 van node 3
R_PDO1 van node 3
80
0
203
1
0
SYNC
283
8
0
0
0
0
0
0
0
0 T_PDO2 van node 3
303
8
0
0
0
0
0
0
0
0 R_PDO2 van node 3
R_PDO1 van node 3
80
0
203
1
0
SYNC
303
8
0
0
0
0
0
0
0
0 R_PDO2 van node 3
283
8
0
0
0
0
0
0
0
0 T_PDO2 van node 3
R_PDO1 van node 3
80
0
203
1
0
SYNC
303
8
0
0
0
0
0
0
0
0 R_PDO2 van node 3
283
8
0
0
0
0
0
0
0
0 T_PDO2 van node 3
R_PDO1 van node 3
80
0
203
1
0
SYNC
303
8
0
0
0
0
0
0
0
0 R_PDO2 van node 3
283
8
0
0
0
0
0
0
0
0 T_PDO2 van node 3
R_PDO1 van node 3
80
0
203
1
0
SYNC
303
8
0
0
0
0
0
0
0
0 R_PDO2 van node 3
283
8
0
0
0
0
0
0
0
0 T_PDO2 van node 3
R_PDO1 van node 3
80
0
203
1
0
SYNC
283
8
0
0
0
0
0
0
0
0 T_PDO2 van node 3
303
8
0
0
0
0
0
0
0
0 R_PDO2 van node 3
R_PDO1 van node 3
80
0
203
1
0
SYNC
303
8
0
0
0
0
0
0
0
0 R_PDO2 van node 3
283
8
0
0
0
0
0
0
0
0 T_PDO2 van node 3
R_PDO1 van node 3
80
0
203
1
0
SYNC
303
8
0
0
0
0
0
0
0
0 R_PDO2 van node 3
283
8
0
0
0
0
0
0
0
0 T_PDO2 van node 3
R_PDO1 van node 3
80
0
203
1
0
SYNC
303
8
0
0
0
0
0
0
0
0 R_PDO2 van node 3
183
8
0
0
0
0
0
0
0
0 T_PDO1 van node 3 (iedere 10e SYNC maar meesturen)
283
8
0
0
0
0
0
0
0
0 T_PDO2 van node 3
80
0
203
1
R_PDO1 van node 3
SYNC 0
R_PDO1 van node 3 62
303
8
0
0
0
0
0
0
0
0 R_PDO2 van node 3
283
8
0
0
0
0
0
0
0
0 T_PDO2 van node 3
80
0
203
1
0
303
8
0
0
0
0
0
0
0
0 R_PDO2 van node 3
283
8
0
0
0
0
0
0
0
0 T_PDO2 van node 3
703
1
5
80
0
SYNC R_PDO1 van node 3
Heartbeat bericht --> node 3 is operationeel (iedere 1000ms) SYNC
203
1
0
303
8
0
0
0
0
0
0
0
0 R_PDO2 van node 3
R_PDO1 van node 3
283
8
0
0
0
0
0
0
0
0 T_PDO2 van node 3
80
0
203
1
0
303
8
0
0
0
0
0
0
0
0 R_PDO2 van node 3
283
8
0
0
0
0
0
0
0
0 T_PDO2 van node 3
80
0
203
1
0
303
8
0
0
0
0
0
0
0
0 R_PDO2 van node 3
283
8
0
0
0
0
0
0
0
0 T_PDO2 van node 3
80
0
203
1
0
303
8
0
0
0
0
0
0
0
0 R_PDO2 van node 3
283
8
0
0
0
0
0
0
0
0 T_PDO2 van node 3
80
0
203
1
0
303
8
0
0
0
0
0
0
0
0 R_PDO2 van node 3
283
8
0
0
0
0
0
0
0
0 T_PDO2 van node 3
80
0
283
8
0
203
1
0
303
8
0
80
0
203
1
0
303
8
0
0
0
0
0
0
0
0 R_PDO2 van node 3
283
8
0
0
0
0
0
0
0
0 T_PDO2 van node 3
80
0
203
1
0
303
8
0
0
0
0
0
0
0
0 R_PDO2 van node 3
183
8
0
0
0
0
0
0
0
0 T_PDO1 van node 3 (iedere 10e SYNC maar meesturen)
283
8
0
0
0
0
0
0
0
0 T_PDO2 van node 3
SYNC R_PDO1 van node 3
SYNC R_PDO1 van node 3
SYNC R_PDO1 van node 3
SYNC R_PDO1 van node 3
SYNC 0
0
0
0
0
0
0 T_PDO2 van node 3 R_PDO1 van node 3
0
0
0
0
0
0
0 R_PDO2 van node 3 SYNC R_PDO1 van node 3
SYNC R_PDO1 van node 3
80
0
203
1
0
SYNC
283
8
0
0
0
0
0
0
0
0 T_PDO2 van node 3
303
8
0
0
0
0
0
0
0
0 R_PDO2 van node 3
80
0
203
1
R_PDO1 van node 3
SYNC 0
R_PDO1 van node 3 63
303
8
0
0
0
0
0
0
0
0 R_PDO2 van node 3
283
8
0
0
0
0
0
0
0
0 T_PDO2 van node 3
80
0
203
1
0
303
8
0
0
0
0
0
0
0
0 R_PDO2 van node 3
283
8
0
0
0
0
0
0
0
0 T_PDO2 van node 3
80
0
203
1
0
303
8
0
0
0
0
0
0
0
0 R_PDO2 van node 3
283
8
0
0
0
0
0
0
0
0 T_PDO2 van node 3
80
0
203
1
0
303
8
0
0
0
0
0
0
0
0 R_PDO2 van node 3
283
8
0
0
0
0
0
0
0
0 T_PDO2 van node 3
80
0
203
1
0
303
8
0
0
0
0
0
0
0
0 R_PDO2 van node 3
283
8
0
0
0
0
0
0
0
0 T_PDO2 van node 3
80
0
203
1
0
303
8
0
0
0
0
0
0
0
0 R_PDO2 van node 3
283
8
0
0
0
0
0
0
0
0 T_PDO2 van node 3
80
0
203
1
0
303
8
0
0
0
0
0
0
0
0 R_PDO2 van node 3
283
8
0
0
0
0
0
0
0
0 T_PDO2 van node 3
80
0
203
1
0
303
8
0
0
0
0
0
0
0
0 R_PDO2 van node 3
283
8
0
0
0
0
0
0
0
0 T_PDO2 van node 3
80
0
203
1
0
303
8
0
0
0
0
0
0
0
0 R_PDO2 van node 3
183
8
0
0
0
0
0
0
0
0 T_PDO1 van node 3 (iedere 10e SYNC maar meesturen)
283
8
0
0
0
0
0
0
0
0 T_PDO2 van node 3
SYNC R_PDO1 van node 3
SYNC R_PDO1 van node 3
SYNC R_PDO1 van node 3
SYNC R_PDO1 van node 3
SYNC R_PDO1 van node 3
SYNC R_PDO1 van node 3
SYNC R_PDO1 van node 3
SYNC R_PDO1 van node 3
80
0
203
1
0
SYNC
303
8
0
0
0
0
0
0
0
0 R_PDO2 van node 3
283
8
0
0
0
0
0
0
0
0 T_PDO2 van node 3
R_PDO1 van node 3
80
0
203
1
0
SYNC
303
8
0
0
0
0
0
0
0
0 R_PDO2 van node 3
283
8
0
0
0
0
0
0
0
0 T_PDO2 van node 3
80
0
203
1
0
303
8
0
R_PDO1 van node 3
SYNC R_PDO1 van node 3 0
0
0
0
0
0
0 R_PDO2 van node 3 64
283
8
0
0
0
0
0
0
0
0 T_PDO2 van node 3
80
0
203
1
0
283
8
0
0
0
0
0
0
0
0 T_PDO2 van node 3
303
8
0
0
0
0
0
0
0
0 R_PDO2 van node 3
80
0
203
1
0
303
8
0
0
0
0
0
0
0
0 R_PDO2 van node 3
283
8
0
0
0
0
0
0
0
0 T_PDO2 van node 3
80
0
203
1
0
303
8
0
0
0
0
0
0
0
0 R_PDO2 van node 3
283
8
0
0
0
0
0
0
0
0 T_PDO2 van node 3
80
0
203
1
0
303
8
0
0
0
0
0
0
0
0 R_PDO2 van node 3
283
8
0
0
0
0
0
0
0
0 T_PDO2 van node 3
80
0
203
1
0
303
8
0
0
0
0
0
0
0
0 R_PDO2 van node 3
283
8
0
0
0
0
0
0
0
0 T_PDO2 van node 3
80
0
203
1
0
283
8
0
0
0
0
0
0
0
0 T_PDO2 van node 3
303
8
0
0
0
0
0
0
0
0 R_PDO2 van node 3
80
0
203
1
0
303
8
0
0
0
0
0
0
0
0 R_PDO2 van node 3
183
8
0
0
0
0
0
0
0
0 T_PDO1 van node 3 (iedere 10e SYNC maar meesturen)
283
8
0
0
0
0
0
0
0
0 T_PDO2 van node 3
701
1
5
80
0
SYNC R_PDO1 van node 3
SYNC R_PDO1 van node 3
SYNC R_PDO1 van node 3
SYNC R_PDO1 van node 3
SYNC R_PDO1 van node 3
SYNC R_PDO1 van node 3
SYNC R_PDO1 van node 3
Heartbeat bericht --> node 1 is operationeel (iedere 1000ms) SYNC
203
1
0
303
8
0
0
0
0
0
0
0
0 R_PDO2 van node 3
R_PDO1 van node 3
283
8
0
0
0
0
0
0
0
0 T_PDO2 van node 3
80
0
203
1
0
303
8
0
0
0
0
0
0
0
0 R_PDO2 van node 3
283
8
0
0
0
0
0
0
0
0 T_PDO2 van node 3
80
0
203
1
0
303
8
0
0
0
0
0
0
0
0 R_PDO2 van node 3
283
8
0
0
0
0
0
0
0
0 T_PDO2 van node 3
80
0
203
1
0
303
8
0
SYNC R_PDO1 van node 3
SYNC R_PDO1 van node 3
SYNC R_PDO1 van node 3 0
0
0
0
0
0
0 R_PDO2 van node 3 65
283
8
80
0
203
1
0
283
8
0
0
0
0
0
0
0
0 T_PDO2 van node 3
303
8
0
0
0
0
0
0
0
0 R_PDO2 van node 3
COB ID
DLC
Error code
8
0
0
0
0
0
0 T_PDO2 van node 3 SYNC R_PDO1 van node 3
0 33
5
Device specific 0
0
0
0
Verklaringen 0 Supply voltage of the outputs is missing
DLC
COB ID
Data
80
0
203
1
0
303
8
0
80
0
203
1
0
303
8
0
80
0
203
1
0
303
8
0
80
0
203
1
0
303
8
0
Verklaringen SYNC R_PDO1 van node 3
0
0
0
0
0
0
0 R_PDO2 van node 3 SYNC R_PDO1 van node 3
0
0
0
0
0
0
0 R_PDO2 van node 3 SYNC R_PDO1 van node 3
0
0
0
0
0
0
0 R_PDO2 van node 3 SYNC R_PDO1 van node 3
0
80
0
203
1
0
303
8
0
0
COB ID
DLC
Ccs
Node ID
2 81
3
0
0
Error register
83
0
0
0
0
0
0
0 R_PDO2 van node 3 SYNC
0
0
0
0
0
0 R_PDO2 van node 3
Empty
Verklaringen Reset node 3
SubIndex
Index
DLC
8 2F
Ccd
COB ID 603
R_PDO1 van node 3
0 20 0D
Data 0
0
Verklaringen 0
0
80
0
SYNC
80
0
SYNC
80
0
SYNC
80
0
SYNC
80
0
SYNC
66
8 Besluit Het CANopen protocol uitspitten aan de hand van een praktische opstelling, dit was de opdracht gedurende het jaar bij deze masterproef. Alle geheimen van het CANopen protocol doorgronden was hierbij praktisch niet mogelijk maar naar mijn bescheiden mening ben ik, samen met de andere studenten en Dhr. Devolder hier voldoende in geslaagd. Het doel was immers om de kennis die de afdeling autotechnologie van het KATHO departement VHTI omtrent netwerken reeds bezit uit te breiden met dit CANopen protocol. Na een boeiende tocht zijn we hier dan ook zeker in geslaagd. CANopen wordt immers al langer gebruikt in de automatisatiewereld maar is relatief nieuw in de mobiele wereld. Vele constructeurs zien namelijk al langer het nut van dit protocol in en willen dit dan ook al langer dan vandaag toepassen in hun applicaties. De kennis omtrent CANopen of onwetendheid bij de klanten ontbreekt echter soms waardoor men eerder op safe speelt en hun huidige installaties behouden. Ik hoop dan ook dat dit eindwerk hierbij een steentje kan bijdragen om de twijfelaars over de streep te trekken. De opstelling die gebouwd werd bewijst de vermoedens dat dit CANopen protocol grote voordelen met zich mee kan brengen. Opstellingen kunnen van op afstand bediend worden en met een simpele druk op de knop kan een netwerk dat wat problemen vertoont opnieuw perfect functioneren. Een belangrijk voordeel is ook de betrouwbaarheid van dit systeem ten opzichte van andere protocollen die nu veel gebruikt worden zoals de SAE J1939 norm of ISOBUS. Transmissie van berichten wordt bij CANopen namelijk veel meer opgevolgd dan voorheen. Bij een andere norm plaatst men berichten op de bus en kijkt men hier in principe niet meer naar, of dit bericht nu goed of slecht aankomt doet hier minder ter zake. Bij CANopen is dit echter niet het geval, de statussen van de verschillende nodes worden constant in de gaten gehouden samen met het correct aankomen en/of verwerken van de berichten. Dit kan van belang zijn in kritische toepassingen zoals safety opstellingen. Indien de opdracht gegeven wordt om te remmen en dit niet gebeurd maar de opstelling hier geen rekening mee houdt dan kan dit wel eens voor lastige situaties zorgen. Tevens wordt ook de betrouwbaarheid vergroot door de lage busbelasting bij gebruik van het CANopen protocol, dit doordat berichten meestal enkel op de bus geplaatst worden indien hier om gevraagd wordt of dus op commando. Door een nauwe samenwerking met de studenten autotechnologie van het KATHO departement VHTI was de realisatie van de opstelling al snel een feit. Hierdoor kon tijdens het tweede semester al wat verder gedacht worden aan een uitbreiding voor deze opstelling. In een volgend stadium kan er ook een opbouw voorzien worden zoals bijvoorbeeld een hoogtewerker. Het werken in teamverband en verdelen van de taken was hierbij dan ook een leerrijke ervaring. Persoonlijk ben ik dus zeker overtuigd van de voordelen van een systeem met CANopen in vergelijking tot een systeem dat werkt op bijvoorbeeld de SAE J1939 norm. Het gebruik van dit protocol kan immers in het begin nog wat onwennig aanvoelen maar naarmate dit meer toegepast wordt, worden de voordelen al snel duidelijk. Door het gebruik van een standaard kan iemand met weinig kennis dan ook al snel de afkomst of bestemming van berichten achterhalen of zelfs de inhoud ervan. Dit in tegenstelling tot andere systemen waar dikwijls een handleiding erbij genomen moet worden om de eigenlijke boodschap te achterhalen. Hopelijk kan de afdeling autotechnologie, met de kennis inzake CANopen die doorheen dit jaar werd verworven, verschillende bedrijven of geïnteresseerden dan ook aansporen hun toepassingen te voorzien van dit systeem. In de overtuiging dat indien men de overstap maakt naar het gebruik hiervan, men overtuigd zal zijn van de voordelen en niet meer terug zal grijpen naar hun oude systeem.
67
Bibliografie [ Softing, „info over CANopen,” Softing, [Online]. Available: http://www.softing.com/home/en/industrial1 automation/products/can-bus/more-can-open/index.php?navanchor=3010572. [Geopend 15 December ] 2011]. [ S. Putseys, Bosch, Juni 2011. [Online]. Available: 2 https://doks.khlim.be/do/files/FiSe40288a22303f4b240130413d687d0655/Scriptie%20Sven.pdf;jsessionid=E ] 18DC6943DE16C5F5A97AD91BA4733E4?recordId=SIWT40288a22303f4b240130413d684e0654. [Geopend 17 Februari 2012]. „info over CANopen,” IXXAT, [Online]. Available: [ IXXAT, 3 http://www.canopensolutions.com/english/about_canopen/about_canopen.shtml. [Geopend 15 December ] 2011]. [ IFM Electronic, IFM Electronic, [Online]. Available: http://www.ifm.com/ifmbenl/web/home.htm. [Geopend 4 Mei 2012]. ] [ Sauer Danfoss, [Online]. Available: http://www.sauer-danfoss.com/Products/MobileElectronics/Joysticks/. 5 [Geopend Mei 2012]. ] [ H. Capoen, W. Vantomme en S. Derammelaere, CANopen Protocolstudie en praktische implementatie, 6 Kortrijk: PIH (HOWEST), 2006. ]
68
A. Bijlage 1: Voorbeeld EDS file [Comments] Lines=1 Line1=Mandatory Comment. [FileInfo] FileName=C:\Users\Jens\Documents\Display.EDS FileVersion=1 FileRevision=1 Description=EDS for CoDeSys-Project: C:\Users\Jens\Documents\Display.pro CreationTime=04:53PM CreationDate=03-29-2012 CreatedBy=CoDeSys ModificationTime=04:53PM ModificationDate=03-29-2012 ModifiedBy=CoDeSys EDSVersion=4.0 [DeviceInfo] VendorName=3S Smart Software Solutions GmbH ProductName=Display ProductNumber=0x33535F44 ProductVersion=1 ProductRevision=1 OrderCode=xxxx.yyyy.zzzz LMT_ManufacturerName=3S GmbH LMT_ProductName=3S_Dev BaudRate_10=1 BaudRate_20=1 BaudRate_50=1 BaudRate_100=1 BaudRate_125=1 BaudRate_250=1 BaudRate_500=1 BaudRate_800=1 BaudRate_1000=1 SimpleBootUpMaster=1 SimpleBootUpSlave=0 ExtendedBootUpMaster=1 ExtendedBootUpSlave=0 VendorNumber=0x33535F44 DynamicChannelsSupported=0 Granularity=8 LSS_Supported=0 GroupMessaging=0 NrOfRXPDO=0 NrOfTXPDO=0 [DummyUsage] Dummy0001=0 Dummy0002=0 Dummy0003=0 Dummy0004=0 Dummy0005=0 Dummy0006=0 Dummy0007=0
69
[MandatoryObjects] SupportedObjects=3 1=0x1000 2=0x1001 3=0x1018 [1000] ParameterName=Device Type ObjectType=0x7 DataType=0x7 AccessType=ro DefaultValue=0x191 PDOMapping=0 [1001] ParameterName=Error Register ObjectType=0x7 DataType=0x5 AccessType=ro DefaultValue= PDOMapping=0 [OptionalObjects] SupportedObjects=7 1=0x1003 2=0x1005 3=0x100C 4=0x100D 5=0x1014 6=0x1016 7=0x1017 [ManufacturerObjects] SupportedObjects=0 [1003] SubNumber=6 ParameterName=Predefined error field ObjectType=0x8 [1003sub0] ParameterName=Number of entries ObjectType=0x7 DataType=0x5 AccessType=rw DefaultValue=4 PDOMapping=0 [1003sub1] ParameterName=Predefined Error field ObjectType=0x7 DataType=0x7 AccessType=rw DefaultValue=0x0 PDOMapping=0
70
[1003sub2] ParameterName=Predefined Error field ObjectType=0x7 DataType=0x7 AccessType=rw DefaultValue=0x0 PDOMapping=0 [1003sub3] ParameterName=Predefined Error field ObjectType=0x7 DataType=0x7 AccessType=rw DefaultValue=0x0 PDOMapping=0 [1003sub4] ParameterName=Predefined Error field ObjectType=0x7 DataType=0x7 AccessType=rw DefaultValue=0x0 PDOMapping=0 [1003sub5] ParameterName=Predefined Error field ObjectType=0x7 DataType=0x7 AccessType=rw DefaultValue=0x0 PDOMapping=0 [1005] ParameterName=COBID Synch Message ObjectType=0x7 DataType=0x7 AccessType=rw DefaultValue=0x80 PDOMapping=0 [100C] ParameterName=Guard Time ObjectType=0x7 DataType=0x6 AccessType=rw DefaultValue=200 PDOMapping=0 [100D] ParameterName=Lifetime Factor ObjectType=0x7 DataType=0x5 AccessType=rw DefaultValue=2 PDOMapping=0 [1014] 71
ParameterName=COBId Emergency ObjectType=0x7 DataType=0x7 AccessType=rw DefaultValue=0x80+$NodeId PDOMapping=0 [1016] SubNumber=2 ParameterName=Consumer heartbeat times ObjectType=0x8 [1016sub0] ParameterName=Nums consumer heartbeat time ObjectType=0x7 DataType=0x5 AccessType=rw DefaultValue=1 PDOMapping=0 [1016sub1] ParameterName=Consumer heartbeat time ObjectType=0x7 DataType=0x7 AccessType=rw DefaultValue=0x0 PDOMapping=0 [1017] ParameterName=Producer heartbeat time ObjectType=0x7 DataType=0x6 AccessType=rw DefaultValue=0 PDOMapping=0 [1018] SubNumber=3 ParameterName=Receive PDO Communication Parameter ObjectType=0x8 [1018sub0] ParameterName=Number of entries ObjectType=0x7 DataType=0x5 AccessType=ro DefaultValue=2 PDOMapping=0 [1018sub1] ParameterName=VendorID ObjectType=0x7 DataType=0x7 AccessType=ro DefaultValue=0x33535F44 PDOMapping=0
72
[1018sub2] ParameterName=Product Code ObjectType=0x7 DataType=0x7 AccessType=ro DefaultValue=0x33535F44 PDOMapping=0
73
B. Bijlage 2: Random logging bestand ;$FILEVERSION=1.1 ;$STARTTIME=40953.5301520475 ; ; C:\Users\CNU1042SWQ\Desktop\log emcy berichten.trc ; ; Start time: 14/02/2012 12:43:25.137.x ; ; Message Number ; | Time Offset (ms) ; | | Type ; | | | ID (hex) ; | | | | Data Length Code ; | | | | | Data Bytes (hex) ... ; | | | | | | ;---+-- ----+---- --+-- ----+--- + -+ -- -- -- -- -- -- -1) 2.9 Rx 0080 0 2) 3.1 Rx 0203 1 00 3) 3.6 Rx 0303 8 00 00 00 00 00 00 00 00 4) 4.1 Rx 0283 8 00 00 00 00 00 00 00 00 5) 4.6 Rx 0083 8 00 00 00 00 00 00 00 00 6) 5.5 Rx 0083 8 00 FF 81 00 00 5A 00 00 7) 15.4 Rx 0083 8 00 80 91 00 00 00 00 00 8) 23.0 Rx 0080 0 9) 23.8 Rx 0203 1 00 10) 24.3 Rx 0183 8 00 00 00 00 00 00 00 00 11) 24.8 Rx 0303 8 00 00 00 00 00 00 00 00 12) 25.3 Rx 0283 8 00 00 00 00 00 00 00 00 13) 25.8 Rx 0083 8 00 00 00 00 00 00 00 00 14) 26.4 Rx 0083 8 00 FF 81 00 00 5A 00 00 15) 35.8 Rx 0083 8 00 80 91 00 00 00 00 00 16) 42.9 Rx 0080 0 17) 43.2 Rx 0203 1 00 18) 43.6 Rx 0303 8 00 00 00 00 00 00 00 00 19) 44.1 Rx 0283 8 00 00 00 00 00 00 00 00 20) 44.7 Rx 0083 8 00 00 00 00 00 00 00 00 21) 45.5 Rx 0083 8 00 FF 81 00 00 5A 00 00 22) 55.5 Rx 0083 8 00 80 91 00 00 00 00 00 23) 63.3 Rx 0080 0 24) 63.5 Rx 0203 1 00 25) 64.0 Rx 0303 8 00 00 00 00 00 00 00 00 26) 64.5 Rx 0283 8 00 00 00 00 00 00 00 00 27) 65.1 Rx 0083 8 00 00 00 00 00 00 00 00 28) 65.7 Rx 0083 8 00 FF 81 00 00 5A 00 00 29) 75.6 Rx 0083 8 00 80 91 00 00 00 00 00 30) 83.2 Rx 0080 0 31) 83.4 Rx 0203 1 00 32) 84.0 Rx 0303 8 00 00 00 00 00 00 00 00 33) 84.6 Rx 0283 8 00 00 00 00 00 00 00 00 34) 85.1 Rx 0083 8 00 00 00 00 00 00 00 00 35) 85.9 Rx 0083 8 00 FF 81 00 00 5A 00 00 36) 95.9 Rx 0083 8 00 80 91 00 00 00 00 00 37) 103.1 Rx 0080 0 38) 103.4 Rx 0203 1 00 39) 103.8 Rx 0303 8 00 00 00 00 00 00 00 00
74
40) 41) 42) 43) 44) 45) 46) 47) 48) 49) 50) 51) 52) 53) 54) 55) 56) 57) 58) 59) 60) 61) 62) 63) 64) 65) 66) 67) 68) 69) 70) 71) 72) 73) 74) 75) 76) 77) 78) 79) 80) 81) 82) 83) 84) 85) 86) 87) 88) 89) 90) 91) 92) 93) 94) 95) 96)
104.3 104.9 105.6 115.6 123.0 123.3 124.1 124.6 125.1 125.8 135.7 143.0 143.3 143.8 144.6 145.1 146.0 155.9 163.0 163.3 163.8 164.2 164.8 165.7 175.6 183.1 183.3 183.8 184.5 185.0 185.8 195.8 203.0 203.2 203.8 204.3 204.8 205.6 215.5 223.0 223.3 223.8 224.4 225.0 225.5 226.0 235.9 243.2 243.5 243.9 244.4 245.0 245.7 255.6 263.1 263.4 263.9
Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx
0283 0083 0083 0083 0080 0203 0303 0283 0083 0083 0083 0080 0203 0303 0283 0083 0083 0083 0080 0203 0303 0283 0083 0083 0083 0080 0203 0303 0283 0083 0083 0083 0080 0203 0303 0283 0083 0083 0083 0080 0203 0303 0183 0283 0083 0083 0083 0080 0203 0303 0283 0083 0083 0083 0080 0203 0303
8 8 8 8 0 1 8 8 8 8 8 0 1 8 8 8 8 8 0 1 8 8 8 8 8 0 1 8 8 8 8 8 0 1 8 8 8 8 8 0 1 8 8 8 8 8 8 0 1 8 8 8 8 8 0 1 8
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF 81 00 00 5A 00 00 00 80 91 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF 81 00 00 5A 00 00 00 80 91 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF 81 00 00 5A 00 00 00 80 91 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF 81 00 00 5A 00 00 00 80 91 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF 81 00 00 5A 00 00 00 80 91 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF 81 00 00 5A 00 00 00 80 91 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF 81 00 00 5A 00 00 00 80 91 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF 81 00 00 5A 00 00 00 80 91 00 00 00 00 00 00 00 00 00 00 00 00 00 00 75
97) 98) 99) 100) 101) 102) 103) 104) 105) 106) 107) 108) 109) 110) 111) 112) 113) 114) 115) 116) 117) 118) 119) 120) 121) 122) 123) 124) 125) 126) 127) 128) 129) 130) 131) 132) 133) 134) 135) 136) 137) 138) 139) 140) 141) 142) 143) 144) 145) 146) 147) 148) 149) 150) 151) 152) 153)
264.5 Rx 265.0 Rx 265.9 Rx 275.8 Rx 282.9 Rx 283.2 Rx 283.7 Rx 284.2 Rx 284.7 Rx 285.6 Rx 294.5 Rx 303.0 Rx 303.3 Rx 303.5 Rx 304.0 Rx 304.5 Rx 305.0 Rx 305.7 Rx 315.6 Rx 322.9 Rx 323.2 Rx 323.7 Rx 324.2 Rx 324.7 Rx 325.5 Rx 335.4 Rx 343.0 Rx 343.8 Rx 344.4 Rx 344.8 Rx 345.3 Rx 345.9 Rx 354.5 Rx 356.2 Rx 362.9 Rx 363.2 Rx 363.7 Rx 364.5 Rx 365.0 Rx 365.8 Rx 375.8 Rx 383.1 Rx 383.4 Rx 383.9 Rx 384.7 Rx 385.2 Rx 386.0 Rx 395.9 Rx 403.1 Rx 403.4 Rx 403.8 Rx 404.3 Rx 404.9 Rx 405.8 Rx 415.7 Rx 423.1 Rx 423.3 Rx
0283 8 00 00 00 00 00 00 00 00 0083 8 00 00 00 00 00 00 00 00 0083 8 00 FF 81 00 00 5A 00 00 0083 8 00 80 91 00 00 00 00 00 0080 0 0203 1 00 0303 8 00 00 00 00 00 00 00 00 0283 8 00 00 00 00 00 00 00 00 0083 8 00 00 00 00 00 00 00 00 0083 8 00 FF 81 00 00 5A 00 00 0083 8 00 80 91 00 00 00 00 00 0703 1 05 0080 0 0203 1 00 0303 8 00 00 00 00 00 00 00 00 0283 8 00 00 00 00 00 00 00 00 0083 8 00 00 00 00 00 00 00 00 0083 8 00 FF 81 00 00 5A 00 00 0083 8 00 80 91 00 00 00 00 00 0080 0 0203 1 00 0303 8 00 00 00 00 00 00 00 00 0283 8 00 00 00 00 00 00 00 00 0083 8 00 00 00 00 00 00 00 00 0083 8 00 FF 81 00 00 5A 00 00 0083 8 00 80 91 00 00 00 00 00 0080 0 0203 1 00 0283 8 00 00 00 00 00 00 00 00 0303 8 00 00 00 00 00 00 00 00 0083 8 00 00 00 00 00 00 00 00 0083 8 00 FF 81 00 00 5A 00 00 0083 8 00 80 91 00 00 00 00 00 0701 1 05 0080 0 0203 1 00 0303 8 00 00 00 00 00 00 00 00 0283 8 00 00 00 00 00 00 00 00 0083 8 00 00 00 00 00 00 00 00 0083 8 00 FF 81 00 00 5A 00 00 0083 8 00 80 91 00 00 00 00 00 0080 0 0203 1 00 0303 8 00 00 00 00 00 00 00 00 0283 8 00 00 00 00 00 00 00 00 0083 8 00 00 00 00 00 00 00 00 0083 8 00 FF 81 00 00 5A 00 00 0083 8 00 80 91 00 00 00 00 00 0080 0 0203 1 00 0303 8 00 00 00 00 00 00 00 00 0283 8 00 00 00 00 00 00 00 00 0083 8 00 00 00 00 00 00 00 00 0083 8 00 FF 81 00 00 5A 00 00 0083 8 00 80 91 00 00 00 00 00 0080 0 0203 1 00 76
154) 155) 156) 157) 158) 159) 160) 161) 162) 163) 164) 165) 166) 167) 168) 169) 170) 171) 172) 173) 174) 175) 176) 177) 178) 179) 180) 181) 182) 183) 184) 185) 186) 187) 188) 189) 190) 191) 192) 193) 194) 195) 196) 197) 198) 199) 200)
423.8 424.6 425.1 425.6 426.1 436.0 443.1 444.0 444.5 445.0 445.5 446.0 454.7 463.0 463.3 463.7 464.5 465.1 465.9 475.8 482.9 483.1 483.7 484.2 484.7 485.6 495.5 503.2 503.4 503.9 504.4 504.9 505.8 515.7 523.1 523.3 523.8 524.6 525.1 525.9 535.9 543.1 543.3 544.2 544.7 545.2 545.7
Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx
0303 0183 0283 0083 0083 0083 0080 0203 0283 0303 0083 0083 0083 0080 0203 0303 0283 0083 0083 0083 0080 0203 0303 0283 0083 0083 0083 0080 0203 0303 0283 0083 0083 0083 0080 0203 0303 0283 0083 0083 0083 0080 0203 0303 0283 0083 0083
8 8 8 8 8 8 0 1 8 8 8 8 8 0 1 8 8 8 8 8 0 1 8 8 8 8 8 0 1 8 8 8 8 8 0 1 8 8 8 8 8 0 1 8 8 8 8
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF 81 00 00 5A 00 00 00 80 91 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF 81 00 00 5A 00 00 00 80 91 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF 81 00 00 5A 00 00 00 80 91 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF 81 00 00 5A 00 00 00 80 91 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF 81 00 00 5A 00 00 00 80 91 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF 81 00 00 5A 00 00 00 80 91 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF 81 00 00 5A 00 00
77
C. Bijlage 3: Logging reset I/O module ;$FILEVERSION=1.1 ;$STARTTIME=41039.6639368519 ; ; C:\Users\Jens\Desktop\logging_resetIO.trc ; ; Start time: 10/05/2012 15:56:04.144.x ; ; Message Number ; | Time Offset (ms) ; | | Type ; | | | ID (hex) ; | | | | Data Length Code ; | | | | | Data Bytes (hex) ... ; | | | | | | ;---+-- ----+---- --+-- ----+--- + -+ -- -- -- -- -- -- -1) 0.7 Rx 01A0 4 FC FF FE FF 2) 5.7 Rx 0390 8 00 00 00 00 00 00 00 00 3) 14.6 Rx 01A0 4 FC FF FF FF 4) 21.2 Rx 0080 0 5) 21.7 Rx 0203 1 00 6) 22.7 Rx 0303 8 00 00 00 00 00 00 00 00 7) 23.7 Rx 0183 8 00 00 00 00 00 00 00 00 8) 24.6 Rx 0283 8 2A 03 51 03 2A 03 6E 03 9) 28.2 Rx 01A0 4 FC FF 00 00 10) 28.8 Rx 02A0 2 FC FF 11) 29.5 Rx 03A0 2 00 00 12) 30.1 Rx 0720 1 05 13) 31.1 Rx 0490 8 00 00 00 00 00 00 00 00 14) 34.7 Rx 0710 1 05 15) 42.8 Rx 01A0 4 FC FF FE FF 16) 44.8 Rx 0190 8 00 00 00 00 00 00 00 00 17) 48.6 Rx 0290 8 00 00 00 00 00 00 00 00 18) 56.1 Rx 0390 8 00 00 00 00 00 00 00 00 19) 56.8 Rx 01A0 4 FD FF 00 00 20) 70.1 Rx 01A0 4 FB FF FF FF 21) 81.4 Rx 0490 8 00 00 00 00 00 00 00 00 22) 95.7 Rx 0190 8 00 00 00 00 00 00 00 00 23) 98.8 Rx 0703 1 05 24) 99.8 Rx 0290 8 00 00 00 00 00 00 00 00 25) 101.3 Rx 0080 0 26) 101.7 Rx 0203 1 00 27) 102.8 Rx 0303 8 00 00 00 00 00 00 00 00 28) 103.7 Rx 0183 8 00 00 00 00 00 00 00 00 29) 104.7 Rx 0283 8 33 03 47 03 33 03 6E 03 30) 107.0 Rx 0390 8 00 00 00 00 00 00 00 00 31) 110.4 Rx 01A0 4 FA FF FE FF 32) 110.9 Rx 02A0 2 FA FF 33) 111.5 Rx 03A0 2 FE FF 34) 125.2 Rx 01A0 4 FB FF FD FF 35) 132.2 Rx 0490 8 00 00 00 00 00 00 00 00 36) 135.9 Rx 0710 1 05 37) 138.7 Rx 01A0 4 FB FF FF FF 38) 139.2 Rx 0720 1 05 39) 146.1 Rx 0190 8 00 00 00 00 00 00 00 00
78
40) 41) 42) 43) 44) 45) 46) 47) 48) 49) 50) 51) 52) 53) 54) 55) 56) 57) 58) 59) 60) 61) 62) 63) 64) 65) 66) 67) 68) 69) 70) 71) 72) 73) 74) 75) 76) 77) 78) 79) 80) 81) 82) 83) 84) 85) 86) 87) 88) 89) 90) 91) 92) 93) 94) 95) 96)
149.8 157.3 165.3 178.8 181.8 182.3 183.3 184.3 185.3 186.2 192.5 193.3 196.9 198.4 200.7 206.6 208.2 220.2 233.3 234.0 237.0 247.3 247.9 248.5 251.0 258.5 261.1 261.5 262.1 263.1 264.1 265.0 274.8 275.4 276.2 284.3 289.2 298.0 298.8 301.8 302.7 309.2 316.2 330.0 334.5 338.2 341.8 342.3 343.3 344.3 345.0 345.9 346.5 347.1 348.3 352.1 358.1
Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx
0290 0390 01A0 01A0 0080 0203 0303 0183 0490 0283 02A0 03A0 0190 0703 0290 01A0 0390 01A0 0490 01A0 0710 0190 01A0 0720 0290 0390 01A0 0080 0203 0183 0303 0283 01A0 02A0 03A0 0490 01A0 0190 0703 0290 01A0 0390 01A0 01A0 0490 0710 0080 0203 0303 0183 01A0 0283 02A0 03A0 0190 0290 01A0
8 8 4 4 0 1 8 8 8 8 2 2 8 1 8 4 8 4 8 4 1 8 4 1 8 8 4 0 1 8 8 8 4 2 2 8 4 8 1 8 4 8 4 4 8 1 0 1 8 8 4 8 2 2 8 8 4
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FC FF 00 00 FD FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 33 03 51 03 2A 03 6E 03 FD FF 00 00 00 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 00 FC FF 00 00 00 00 00 00 00 00 00 00 FD FF FF FF 00 00 00 00 00 00 00 00 FC FF FE FF 05 00 00 00 00 00 00 00 00 FC FF FF FF 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FC FF FE FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 33 03 47 03 2A 03 6E 03 FC FF 00 00 FC FF 00 00 00 00 00 00 00 00 00 00 FB FF 00 00 00 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 00 FD FF 00 00 00 00 00 00 00 00 00 00 FB FF 00 00 FB FF FF FF 00 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FE FF FF FF 33 03 47 03 20 03 6E 03 FE FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FB FF FF FF 79
97) 98) 99) 100) 101) 102) 103) 104) 105) 106) 107) 108) 109) 110) 111) 112) 113) 114) 115) 116) 117) 118) 119) 120) 121) 122) 123) 124) 125) 126) 127) 128) 129) 130) 131) 132) 133) 134) 135) 136) 137) 138) 139) 140) 141) 142) 143) 144) 145) 146) 147) 148) 149) 150) 151) 152) 153)
358.7 Rx 359.7 Rx 371.9 Rx 375.8 Rx 384.9 Rx 387.0 Rx 397.6 Rx 399.1 Rx 402.9 Rx 408.9 Rx 410.3 Rx 412.8 Rx 420.0 Rx 421.8 Rx 422.3 Rx 423.3 Rx 427.0 Rx 430.8 Rx 435.8 Rx 439.4 Rx 441.0 Rx 442.1 Rx 449.5 Rx 453.3 Rx 453.9 Rx 455.3 Rx 455.9 Rx 456.5 Rx 460.7 Rx 464.0 Rx 470.2 Rx 470.7 Rx 475.8 Rx 484.6 Rx 486.0 Rx 498.4 Rx 500.3 Rx 501.2 Rx 501.7 Rx 502.7 Rx 504.1 Rx 511.5 Rx 512.6 Rx 526.4 Rx 536.8 Rx 539.8 Rx 540.3 Rx 540.8 Rx 551.0 Rx 554.2 Rx 555.3 Rx 562.3 Rx 567.8 Rx 581.5 Rx 581.9 Rx 582.4 Rx 583.4 Rx
0720 1 05 0390 8 00 00 00 00 00 00 00 00 01A0 4 FC FF FE FF 0000 2 81 03 0490 8 00 00 00 00 00 00 00 00 0000 2 81 03 0000 2 81 03 0190 8 00 00 00 00 00 00 00 00 0290 8 00 00 00 00 00 00 00 00 0000 2 81 03 0390 8 00 00 00 00 00 00 00 00 01A0 4 FD FF FE FF 0000 2 81 03 0080 0 0203 1 00 0303 8 00 00 00 00 00 00 00 00 01A0 4 FC FF FF FF 0000 2 81 03 0490 8 00 00 00 00 00 00 00 00 0710 1 05 01A0 4 FC FF 00 00 0000 2 81 03 0190 8 00 00 00 00 00 00 00 00 0290 8 00 00 00 00 00 00 00 00 0000 2 81 03 01A0 4 FB FF FF FF 02A0 2 FB FF 03A0 2 FF FF 0390 8 00 00 00 00 00 00 00 00 0000 2 81 03 01A0 4 FA FF FE FF 0720 1 05 0000 2 81 03 01A0 4 FB FF FD FF 0490 8 00 00 00 00 00 00 00 00 01A0 4 FB FF FF FF 0190 8 00 00 00 00 00 00 00 00 0080 0 0203 1 00 0303 8 00 00 00 00 00 00 00 00 0290 8 00 00 00 00 00 00 00 00 0390 8 00 00 00 00 00 00 00 00 01A0 4 FD FF FF FF 01A0 4 FD FF 01 00 0490 8 00 00 00 00 00 00 00 00 02A0 2 FD FF 0710 1 05 03A0 2 01 00 0190 8 00 00 00 00 00 00 00 00 01A0 4 FF FF 02 00 0290 8 00 00 00 00 00 00 00 00 0390 8 00 00 00 00 00 00 00 00 01A0 4 FD FF 02 00 01A0 4 FB FF FF FF 0080 0 0203 1 00 0303 8 00 00 00 00 00 00 00 00 80
154) 155) 156) 157) 158) 159) 160) 161) 162) 163) 164) 165) 166) 167) 168) 169) 170) 171) 172) 173) 174) 175) 176) 177) 178) 179) 180) 181) 182) 183) 184) 185) 186) 187) 188) 189) 190) 191) 192) 193) 194) 195) 196) 197) 198) 199) 200) 201) 202) 203) 204) 205) 206) 207) 208) 209) 210)
583.8 587.8 595.5 596.1 596.8 601.2 605.0 610.0 612.5 623.6 637.1 638.1 641.7 651.0 652.0 655.6 661.8 662.3 663.4 664.4 665.1 665.7 666.5 679.4 688.9 692.8 693.4 702.6 706.4 707.1 713.6 720.3 739.0 741.3 741.8 742.8 743.2 747.0 747.6 748.2 753.6 757.4 761.6 764.6 775.3 788.9 790.0 802.4 802.9 803.9 807.4 814.8 816.2 821.5 822.0 823.0 829.9
Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx
0720 0490 01A0 02A0 03A0 0190 0290 01A0 0390 01A0 01A0 0490 0710 01A0 0190 0290 0080 0203 0390 0303 01A0 02A0 03A0 01A0 0490 01A0 0720 0190 0290 01A0 0390 01A0 0490 0080 0203 0303 0710 01A0 02A0 03A0 0190 0290 01A0 0390 01A0 01A0 0490 01A0 0720 0190 0290 0390 01A0 0080 0203 0303 01A0
1 8 4 2 2 8 8 4 8 4 4 8 1 4 8 8 0 1 8 8 4 2 2 4 8 4 1 8 8 4 8 4 8 0 1 8 1 4 2 2 8 8 4 8 4 4 8 4 1 8 8 8 4 0 1 8 4
05 00 00 00 00 00 00 00 00 FA FF FB FF FA FF FB FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 F9 FF FB FF 00 00 00 00 00 00 00 00 F9 FF FA FF FE FF FE FF 00 00 00 00 00 00 00 00 05 FC FF 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FD FF 05 00 FD FF 05 00 FE FF 04 00 00 00 00 00 00 00 00 00 FE FF 01 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FC FF FD FF 00 00 00 00 00 00 00 00 FB FF FB FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 05 FC FF FD FF FC FF FD FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FC FF FE FF 00 00 00 00 00 00 00 00 FC FF 01 00 FD FF 01 00 00 00 00 00 00 00 00 00 FB FF 03 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FB FF 02 00 00 00 00 00 00 00 00 00 00 FA FF 00 00 81
211) 212) 213) 214) 215) 216) 217) 218) 219) 220) 221) 222) 223) 224) 225) 226) 227) 228) 229) 230) 231) 232) 233) 234) 235) 236) 237) 238) 239) 240) 241) 242) 243) 244) 245) 246) 247) 248) 249) 250) 251) 252) 253) 254) 255) 256) 257) 258) 259) 260) 261) 262) 263) 264) 265) 266) 267)
830.5 Rx 831.1 Rx 840.2 Rx 843.6 Rx 844.5 Rx 854.3 Rx 858.2 Rx 858.8 Rx 865.6 Rx 871.8 Rx 885.6 Rx 891.1 Rx 899.4 Rx 901.6 Rx 902.1 Rx 903.1 Rx 905.2 Rx 909.0 Rx 913.4 Rx 914.0 Rx 914.7 Rx 915.4 Rx 916.5 Rx 928.1 Rx 941.3 Rx 942.0 Rx 945.0 Rx 955.1 Rx 956.1 Rx 959.3 Rx 966.8 Rx 981.3 Rx 981.7 Rx 982.7 Rx 992.3 Rx 995.2 Rx 995.8 Rx 996.5 Rx 1002.7 Rx 1005.9 Rx 1008.4 Rx 1009.7 Rx 1013.7 Rx 1017.6 Rx 1018.6 Rx 1023.0 Rx 1023.5 Rx 1028.1 Rx 1034.5 Rx 1036.9 Rx 1042.9 Rx 1046.0 Rx 1049.1 Rx 1055.2 Rx 1056.9 Rx 1060.7 Rx 1061.4 Rx
02A0 2 FA FF 03A0 2 00 00 0490 8 00 00 00 00 00 00 00 00 0710 1 05 01A0 4 FB FF FE FF 0190 8 00 00 00 00 00 00 00 00 0290 8 00 00 00 00 00 00 00 00 01A0 4 F7 FF FA FF 0390 8 00 00 00 00 00 00 00 00 01A0 4 FB FF FC FF 01A0 4 FC FF FE FF 0490 8 00 00 00 00 00 00 00 00 01A0 4 FD FF FF FF 0080 0 0203 1 00 0303 8 00 00 00 00 00 00 00 00 0190 8 00 00 00 00 00 00 00 00 0290 8 00 00 00 00 00 00 00 00 01A0 4 FC FF FF FF 02A0 2 FC FF 03A0 2 FF FF 0720 1 05 0390 8 00 00 00 00 00 00 00 00 01A0 4 FD FF 00 00 0490 8 00 00 00 00 00 00 00 00 01A0 4 FA FF FE FF 0710 1 05 01A0 4 FC FF FF FF 0190 8 00 00 00 00 00 00 00 00 0290 8 00 00 00 00 00 00 00 00 0390 8 00 00 00 00 00 00 00 00 0080 0 0203 1 00 0303 8 00 00 00 00 00 00 00 00 0490 8 00 00 00 00 00 00 00 00 01A0 4 FC FF 00 00 02A0 2 FC FF 03A0 2 00 00 0703 1 00 0190 8 00 00 00 00 00 00 00 00 0603 8 40 00 10 00 00 00 00 00 0290 8 00 00 00 00 00 00 00 00 0583 8 43 00 10 00 91 01 0F 00 0390 8 00 00 00 00 00 00 00 00 0603 8 2B 17 10 00 64 00 00 00 01A0 4 FB FF FE FF 0720 1 05 0583 8 60 17 10 00 00 00 00 00 0603 8 23 14 10 00 83 00 00 80 01A0 4 FC FF 00 00 0490 8 00 00 00 00 00 00 00 00 0710 1 05 0583 8 60 14 10 00 00 00 00 00 0603 8 23 14 10 00 83 00 00 00 0190 8 00 00 00 00 00 00 00 00 0290 8 00 00 00 00 00 00 00 00 0080 0 82
268) 269) 270) 271) 272) 273) 274) 275) 276) 277) 278) 279) 280) 281) 282) 283) 284) 285) 286) 287) 288) 289) 290) 291) 292) 293) 294) 295) 296) 297) 298) 299) 300) 301) 302) 303) 304) 305) 306) 307) 308) 309) 310) 311) 312) 313) 314) 315) 316) 317) 318) 319) 320) 321) 322) 323) 324)
1064.2 1064.9 1065.4 1067.9 1070.0 1076.5 1078.7 1092.6 1093.6 1101.1 1106.1 1107.2 1108.2 1111.4 1111.8 1118.7 1119.7 1122.2 1128.4 1133.5 1134.1 1141.7 1143.3 1144.3 1147.7 1148.2 1148.7 1149.7 1150.2 1157.7 1161.5 1169.0 1174.5 1175.5 1180.1 1185.3 1189.0 1191.5 1194.4 1196.6 1203.6 1208.5 1211.3 1212.3 1217.1 1219.8 1221.0 1221.4 1222.4 1228.3 1229.1 1229.7 1230.4 1243.1 1243.8 1244.3 1245.4
Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx
01A0 02A0 03A0 0390 0583 0603 01A0 01A0 0490 0583 01A0 0603 0190 0290 0703 0390 01A0 0583 0603 01A0 0720 0080 0583 0490 01A0 0710 02A0 0603 03A0 0190 0290 0390 0583 01A0 0603 0583 01A0 0603 0490 0583 0603 0190 0583 0290 0603 0390 0703 0080 0583 0603 01A0 02A0 03A0 0583 01A0 0720 0490
4 2 2 8 8 8 4 4 8 8 4 8 8 8 1 8 4 8 8 4 1 0 8 8 4 1 2 8 2 8 8 8 8 4 8 8 4 8 8 8 8 8 8 8 8 8 1 0 8 8 4 2 2 8 4 1 8
FB FF FF FF FB FF FF FF 00 00 00 00 00 00 00 00 60 14 10 00 00 00 00 00 23 00 14 01 03 02 00 80 FC FF FF FF FB FF 00 00 00 00 00 00 00 00 00 00 60 00 14 01 00 00 00 00 FC FF FF FF 23 00 14 01 03 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 7F 00 00 00 00 00 00 00 00 FC FF 00 00 60 00 14 01 00 00 00 00 23 01 14 01 03 03 00 80 FD FF FD FF 05 60 01 14 01 00 00 00 00 00 00 00 00 00 00 00 00 FD FF FF FF 05 FD FF 23 01 14 01 03 03 00 00 FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 60 01 14 01 00 00 00 00 FB FF FD FF 23 00 18 01 83 01 00 80 60 00 18 01 01 16 34 02 FC FF FE FF 2F 00 18 02 01 00 00 00 00 00 00 00 00 00 00 00 60 00 18 02 00 00 00 00 2B 00 18 05 0A 00 00 00 00 00 00 00 00 00 00 00 60 00 18 05 00 00 00 00 00 00 00 00 00 00 00 00 23 00 18 01 83 01 00 00 00 00 00 00 00 00 00 00 7F 60 00 18 01 07 00 00 01 23 01 18 01 83 02 00 80 FB FF FF FF FB FF FF FF 60 01 18 01 01 16 34 02 FC FF 00 00 05 00 00 00 00 00 00 00 00 83
325) 326) 327) 328) 329) 330) 331) 332) 333) 334) 335) 336) 337) 338) 339) 340) 341) 342) 343) 344) 345) 346) 347) 348) 349) 350) 351) 352) 353) 354) 355) 356) 357) 358) 359) 360) 361) 362) 363) 364) 365) 366) 367) 368) 369) 370) 371) 372) 373) 374) 375) 376) 377) 378) 379) 380) 381)
1248.3 1249.3 1254.0 1257.2 1258.8 1262.6 1270.1 1270.8 1284.3 1295.6 1297.8 1301.8 1309.7 1311.6 1312.2 1312.9 1313.9 1320.9 1324.0 1326.2 1333.4 1340.1 1346.2 1349.9 1353.3 1360.2 1364.0 1367.0 1371.2 1380.9 1381.6 1382.1 1383.1 1384.1 1385.0 1394.4 1395.1 1396.6 1408.7 1410.8 1414.6 1422.0 1422.7 1424.0 1435.4 1447.4 1449.3 1450.8 1461.5 1462.0 1462.4 1463.4 1464.4 1465.1 1466.1 1467.0 1467.6
Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx
0710 0603 0583 01A0 0190 0290 0390 01A0 01A0 0490 01A0 0080 0190 01A0 02A0 03A0 0290 0390 0703 01A0 0000 01A0 0490 0710 0720 0190 0290 01A0 0390 01A0 0080 0203 0303 0183 0283 02A0 03A0 0490 01A0 0190 0290 0390 01A0 0703 01A0 0490 01A0 0710 0190 0080 0203 0303 0183 01A0 0283 0290 02A0
1 8 8 4 8 8 8 4 4 8 4 0 8 4 2 2 8 8 1 4 2 4 8 1 1 8 8 4 8 4 0 1 8 8 8 2 2 8 4 8 8 8 4 1 4 8 4 1 8 0 1 8 8 4 8 8 2
05 23 01 18 01 83 02 00 00 60 01 18 01 01 16 34 02 FB FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FB FF 00 00 FC FF 00 00 00 00 00 00 00 00 00 00 FB FF 00 00 00 00 00 00 00 00 00 00 FB FF FE FF FB FF FE FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 7F FC FF FE FF 01 03 FB FF FF FF 00 00 00 00 00 00 00 00 05 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FC FF FF FF 00 00 00 00 00 00 00 00 FD FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 33 03 47 03 2A 03 6E 03 FD FF 00 00 00 00 00 00 00 00 00 00 FC FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FC FF FD FF 05 FD FF FE FF 00 00 00 00 00 00 00 00 FC FF FF FF 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FD FF 00 00 33 03 47 03 2A 03 6E 03 00 00 00 00 00 00 00 00 FD FF 84
382) 383) 384) 385) 386) 387) 388) 389) 390) 391) 392) 393) 394) 395) 396) 397) 398) 399) 400) 401) 402) 403) 404) 405) 406) 407) 408) 409) 410) 411) 412) 413) 414) 415) 416) 417) 418) 419) 420) 421) 422) 423) 424) 425) 426) 427) 428) 429) 430) 431) 432) 433) 434) 435) 436) 437) 438)
1468.2 1468.8 1472.8 1478.4 1492.1 1498.3 1511.8 1515.6 1519.0 1523.0 1523.6 1532.5 1541.6 1542.1 1543.1 1544.1 1545.1 1546.1 1546.9 1548.5 1552.2 1560.5 1562.3 1566.1 1573.9 1574.6 1575.3 1588.3 1599.4 1601.8 1613.1 1615.6 1616.9 1621.7 1622.3 1623.2 1624.2 1625.2 1626.2 1626.7 1629.1 1629.8 1643.5 1650.1 1653.1 1657.0 1664.0 1667.8 1670.8 1675.0 1683.7 1684.2 1700.4 1701.5 1702.0 1703.0 1704.0
Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx
03A0 0720 0390 01A0 01A0 0490 0190 0290 01A0 0390 0703 01A0 0080 0203 0303 0183 0283 02A0 03A0 0490 0710 01A0 0190 0290 0390 01A0 0720 01A0 0490 01A0 0190 01A0 0290 0080 0203 0303 0183 0390 0283 0703 02A0 03A0 01A0 0490 0710 01A0 0190 0290 01A0 0390 01A0 0720 0490 0080 0203 0303 0183
2 1 8 4 4 8 8 8 4 8 1 4 0 1 8 8 8 2 2 8 1 4 8 8 8 4 1 4 8 4 8 4 8 0 1 8 8 8 8 1 2 2 4 8 1 4 8 8 4 8 4 1 8 0 1 8 8
00 00 05 00 00 00 00 00 00 00 00 FC FF FF FF FB FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FE FF 00 00 00 00 00 00 00 00 00 00 05 FC FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2A 03 51 03 2A 03 6E 03 FC FF 00 00 00 00 00 00 00 00 00 00 05 FB FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FC FF FF FF 05 FC FF 00 00 00 00 00 00 00 00 00 00 FC FF FF FF 00 00 00 00 00 00 00 00 FD FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2A 03 47 03 2A 03 6E 03 05 FD FF FF FF FD FF FE FF 00 00 00 00 00 00 00 00 05 FC FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FD FF FF FF 00 00 00 00 00 00 00 00 FD FF 00 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 85
439) 440) 441) 442) 443) 444) 445) 446) 447) 448) 449) 450) 451) 452) 453) 454) 455) 456) 457) 458) 459) 460) 461) 462) 463) 464) 465) 466) 467) 468) 469) 470) 471) 472) 473) 474) 475) 476) 477) 478) 479) 480) 481) 482) 483) 484) 485) 486) 487) 488) 489) 490) 491) 492) 493) 494) 495)
1705.0 1710.9 1711.5 1714.0 1717.8 1725.2 1725.9 1726.4 1751.2 1751.9 1754.0 1764.8 1765.6 1768.6 1776.0 1779.1 1781.9 1782.8 1783.8 1784.8 1785.7 1793.2 1793.7 1794.4 1795.0 1801.5 1808.1 1815.6 1819.4 1825.9 1826.9 1847.7 1852.3 1855.4 1861.4 1861.7 1862.3 1863.2 1864.3 1865.2 1866.2 1869.7 1875.1 1875.7 1876.5 1877.4 1889.5 1902.6 1903.3 1903.9 1916.7 1917.4 1920.5 1925.5 1927.9 1941.4 1941.9
Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx
0283 02A0 03A0 0190 0290 0390 01A0 0703 0490 01A0 0710 0190 01A0 0290 0390 01A0 0080 0203 0183 0303 0283 01A0 02A0 03A0 0720 0490 01A0 0190 0290 0703 0390 01A0 0490 0710 01A0 0080 0203 0303 0183 0283 0190 0290 01A0 02A0 03A0 0390 01A0 0490 01A0 0720 0190 01A0 0290 0703 0390 0080 0203
8 2 2 8 8 8 4 1 8 4 1 8 4 8 8 4 0 1 8 8 8 4 2 2 1 8 4 8 8 1 8 4 8 1 4 0 1 8 8 8 8 8 4 2 2 8 4 8 4 1 8 4 8 1 8 0 1
33 03 51 03 2A 03 64 03 FD FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FB FF FF FF 05 00 00 00 00 00 00 00 00 FC FF FF FF 05 00 00 00 00 00 00 00 00 FC FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FB FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 33 03 47 03 33 03 64 03 FD FF 00 00 FD FF 00 00 05 00 00 00 00 00 00 00 00 FC FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 00 FC FF FE FF 00 00 00 00 00 00 00 00 05 FC FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2A 03 51 03 20 03 6E 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FD FF FF FF FD FF FF FF 00 00 00 00 00 00 00 00 FC FF FF FF 00 00 00 00 00 00 00 00 FC FF 00 00 05 00 00 00 00 00 00 00 00 FC FF FE FF 00 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 00 00 86
496) 497) 498) 499) 500) 501) 502) 503) 504) 505) 506) 507) 508) 509) 510) 511) 512) 513) 514) 515) 516) 517) 518) 519) 520) 521) 522) 523) 524) 525) 526) 527) 528) 529) 530) 531) 532) 533) 534) 535) 536) 537) 538) 539) 540) 541) 542) 543) 544) 545) 546) 547) 548) 549) 550) 551) 552)
1942.9 1943.9 1944.6 1945.5 1946.0 1946.6 1953.3 1956.3 1958.3 1967.2 1971.0 1971.8 1978.2 1985.3 1998.9 2003.6 2012.5 2013.0 2017.8 2021.6 2022.0 2022.5 2023.5 2024.5 2025.5 2026.0 2026.7 2027.3 2027.9 2029.1 2054.4 2057.9 2067.6 2068.6 2072.4 2079.2 2081.1 2101.8 2102.3 2103.3 2104.3 2105.3 2106.2 2108.3 2108.9 2109.7 2118.8 2122.5 2123.2 2123.8 2126.5 2130.1 2136.8 2150.7 2155.5 2159.0 2169.7
Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx
0303 0183 01A0 0283 02A0 03A0 0490 0710 01A0 0190 0290 01A0 0390 01A0 01A0 0490 01A0 0720 0190 0290 0080 0203 0303 0183 0283 0703 01A0 02A0 03A0 0390 0490 0710 01A0 0190 0290 0390 01A0 0080 0203 0303 0183 0490 0283 01A0 02A0 03A0 0190 0290 01A0 0720 0703 0390 01A0 01A0 0490 0710 0190
8 8 4 8 2 2 8 1 4 8 8 4 8 4 4 8 4 1 8 8 0 1 8 8 8 1 4 2 2 8 8 1 4 8 8 8 4 0 1 8 8 8 8 4 2 2 8 8 4 1 1 8 4 4 8 1 8
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FD FF 00 00 2A 03 47 03 2A 03 64 03 FD FF 00 00 00 00 00 00 00 00 00 00 05 FB FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FB FF FF FF 00 00 00 00 00 00 00 00 FB FF 00 00 FA FF FF FF 00 00 00 00 00 00 00 00 FC FF FF FF 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 33 03 51 03 2A 03 64 03 05 FB FF FF FF FB FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 05 FD FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FC FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 33 03 47 03 2A 03 64 03 FB FF FF FF FB FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FC FF FE FF 05 05 00 00 00 00 00 00 00 00 FB FF FE FF FB FF FF FF 00 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 00 87
553) 554) 555) 556) 557) 558) 559) 560) 561) 562) 563) 564) 565) 566) 567) 568) 569) 570) 571) 572) 573) 574) 575) 576) 577) 578) 579) 580) 581) 582) 583) 584) 585) 586) 587) 588) 589) 590) 591) 592) 593) 594) 595) 596) 597) 598) 599) 600) 601) 602) 603) 604) 605) 606) 607) 608) 609)
2173.5 2177.4 2181.0 2181.7 2182.2 2183.6 2184.6 2185.6 2191.3 2191.9 2192.6 2205.9 2206.9 2219.9 2220.6 2223.7 2226.0 2231.1 2232.6 2246.1 2256.5 2259.5 2260.1 2261.6 2262.1 2263.1 2264.1 2265.0 2270.4 2273.7 2274.7 2275.2 2275.8 2282.1 2288.3 2301.8 2307.2 2315.4 2321.1 2324.9 2326.5 2328.9 2332.2 2341.3 2341.8 2342.8 2343.8 2344.2 2345.2 2356.2 2356.8 2357.8 2358.3 2361.1 2370.8 2371.8 2375.6
Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx
0290 01A0 0390 0080 0203 0183 0303 0283 01A0 02A0 03A0 01A0 0490 0190 01A0 0290 0703 0390 0720 01A0 0490 01A0 0710 0080 0203 0303 0183 0283 0190 01A0 0290 02A0 03A0 0390 01A0 01A0 0490 01A0 0190 0290 0703 01A0 0390 0080 0203 0303 0183 0720 0283 01A0 02A0 0490 03A0 0710 01A0 0190 0290
8 4 8 0 1 8 8 8 4 2 2 4 8 8 4 8 1 8 1 4 8 4 1 0 1 8 8 8 8 4 8 2 2 8 4 4 8 4 8 8 1 4 8 0 1 8 8 1 8 4 2 8 2 1 4 8 8
00 00 00 00 00 00 00 00 FC FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 33 03 47 03 2A 03 6E 03 FB FF FF FF FB FF FF FF FB FF FE FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FB FF FF FF 00 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 00 05 FB FF FE FF 00 00 00 00 00 00 00 00 FC FF FF FF 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 33 03 51 03 2A 03 6E 03 00 00 00 00 00 00 00 00 FC FF 00 00 00 00 00 00 00 00 00 00 FC FF 00 00 00 00 00 00 00 00 00 00 FD FF 00 00 FC FF 00 00 00 00 00 00 00 00 00 00 FC FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 05 FB FF FE FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 05 33 03 47 03 2A 03 64 03 FC FF FF FF FC FF 00 00 00 00 00 00 00 00 FF FF 05 FC FF FE FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 88
610) 611) 612) 613) 614) 615) 616) 617) 618) 619) 620) 621) 622) 623) 624) 625) 626) 627) 628) 629) 630) 631) 632) 633) 634) 635) 636) 637) 638) 639) 640) 641) 642) 643) 644) 645) 646) 647) 648) 649) 650) 651) 652)
2383.1 2384.2 2398.1 2408.6 2411.8 2421.4 2422.0 2422.9 2424.0 2424.9 2425.6 2426.6 2427.6 2428.1 2428.6 2429.1 2433.9 2440.1 2454.0 2454.6 2458.7 2462.2 2467.9 2472.9 2476.7 2481.5 2484.2 2501.6 2502.1 2503.1 2504.1 2505.1 2508.5 2509.1 2510.1 2510.7 2523.0 2524.1 2526.6 2527.6 2535.0 2536.6 2550.4
Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx Rx
0390 01A0 01A0 0490 01A0 0080 0203 0190 0183 0303 01A0 0283 0290 02A0 0703 03A0 0390 01A0 01A0 0720 0490 0710 01A0 0190 0290 01A0 0390 0080 0203 0303 0183 0283 01A0 02A0 0490 03A0 01A0 0190 0703 0290 0390 01A0 01A0
8 4 4 8 4 0 1 8 8 8 4 8 8 2 1 2 8 4 4 1 8 1 4 8 8 4 8 0 1 8 8 8 4 2 8 2 4 8 1 8 8 4 4
00 00 00 00 00 00 00 00 FB FF FF FF FC FF FE FF 00 00 00 00 00 00 00 00 FC FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FD FF 00 00 33 03 51 03 2A 03 6E 03 00 00 00 00 00 00 00 00 FD FF 05 00 00 00 00 00 00 00 00 00 00 FC FF 00 00 FB FF 00 00 05 00 00 00 00 00 00 00 00 05 FC FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FB FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 33 03 47 03 2A 03 64 03 FD FF 00 00 FD FF 00 00 00 00 00 00 00 00 00 00 FC FF FF FF 00 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FC FF 00 00 FB FF 00 00
89