JVM-407 - Jetter
Transcrição
JVM-407 - Jetter
JVM-407 Bediengerät Vorspann Variante: Jetter Artikel-Nr.: 60877111 Version 1.17.4 November 2011 / Printed in Germany Die Firma Jetter AG behält sich das Recht vor, Änderungen an Ihren Produkten vorzunehmen, die der technischen Weiterentwicklung dienen. Diese Änderungen werden nicht notwendigerweise in jedem Einzelfall dokumentiert. Diese Betriebsanleitung und die darin enthaltenen Informationen wurden mit der gebotenen Sorgfalt zusammengestellt. Die Firma Jetter AG übernimmt jedoch keine Gewähr für Druckfehler oder andere Fehler oder daraus entstehende Schäden. Die in diesem Buch genannten Marken und Produktnamen sind Warenzeichen oder eingetragene Warenzeichen der jeweiligen Titelhalter. 2 Jetter AG JVM-407 Adresse Vorspann So können Sie uns erreichen: Jetter AG Gräterstraße 2 D-71642 Ludwigsburg Germany Zugehörigkeit Telefon - Zentrale: +49 7141 2550-0 Telefon - Vertrieb: +49 7141 2550-433 Telefon - Technische Hotline: +49 7141 2550-444 Telefax - Vertrieb: +49 7141 2550-484 E-Mail - Vertrieb: [email protected] E-Mail - Technische Hotline: [email protected] Diese Betriebsanleitung gehört zum JVM-407: Typ: Serien-Nr.: Baujahr: Auftrags-Nr.: Vom Kunden einzutragen: Inventar-Nr.: Ort der Aufstellung: Jetter AG 3 Vorspann Bedeutung Bedeutung der Betriebsanleitung Die Betriebsanleitung ist Bestandteil des JVM-407: Bewahren Sie die Betriebsanleitung immer, also bis zur Entsorgung des JVM-407, griffbereit auf. Geben Sie die Betriebsanleitung bei Verkauf, Veräußerung oder Verleih des JVM-407 weiter. Wenden Sie sich unbedingt an den Hersteller, wenn Sie etwas aus der Betriebsanleitung nicht eindeutig verstehen. Wir sind dankbar für jede Art von Anregung und Kritik von Ihrer Seite und bitten Sie, diese uns unter der E-Mail-Adresse [email protected] mitzuteilen bzw. zu schreiben. Dieses hilft uns, die Handbücher noch anwenderfreundlicher zu gestalten und auf Ihre Wünsche und Erfordernisse einzugehen. Diese Betriebsanleitung enthält wichtige Informationen, wenn Sie das JVM-407 transportieren, aufstellen, installieren, bedienen, warten und reparieren wollen. Deshalb müssen Sie die Betriebsanleitung und besonders die Sicherheitshinweise sorgfältig lesen, verstehen und beachten. Fehlende oder unzureichende Kenntnisse der Betriebsanleitung führen zum Verlust jeglicher Haftungsansprüche gegen die Firma Jetter AG. Dem Betreiber wird deshalb empfohlen, sich die Einweisung der Personen schriftlich bestätigen zu lassen. 4 Jetter AG JVM-407 Inhaltsverzeichnis Inhaltsverzeichnis 1 Sicherheitshinweise 11 Grundlegende Sicherheitshinweise ............................................................................................. 12 Hinweise zur EMV ........................................................................................................................ 14 2 Produktbeschreibung und Geräteaufbau 17 Produktbeschreibung JVM-407.................................................................................................... 18 Teile und Schnittstellen ................................................................................................................ 19 Bestellbezeichnung / Optionen .................................................................................................... 23 Mechanische Abmessungen ........................................................................................................ 24 3 Identifikation des JVM-407 3.1 3.2 4 Identifikation über das Typenschild ......................................................................................... 28 Typenschild .................................................................................................................................. 29 Versionsregister ......................................................................................................................... 30 Software-Versionen ...................................................................................................................... 31 Montage und Installation des JVM-407 4.1 4.2 4.3 4.4 5 27 33 Schnittstellen .............................................................................................................................. 34 Beispiel einer Verdrahtung ........................................................................................................... 35 Anschluss Spannungsversorgung................................................................................................ 36 Anschluss digitale Ein- und Ausgänge ......................................................................................... 38 Ausschaltverzögerung des Bediengeräts .................................................................................... 41 Ethernet-Schnittstelle ................................................................................................................... 43 CAN-Schnittstelle ......................................................................................................................... 45 Spezifikation - CAN-Buskabel ...................................................................................................... 49 Anschluss Video........................................................................................................................... 51 Schnittstellen an der Mittelkonsole bei montiertem Tragarm ............................................... 54 Verbindungskabel Spannungsversorgung ................................................................................... 55 Verbindungskabel Ein- und Ausgänge ......................................................................................... 57 Verbindungskabel CANopen® ..................................................................................................... 59 Verbindungskabel Video .............................................................................................................. 61 Montage des JVM-407................................................................................................................ 62 Montage des Bediengeräts .......................................................................................................... 63 Montage des Tragarms ................................................................................................................ 66 IP-Konfiguration ......................................................................................................................... 68 Auslieferungszustand ................................................................................................................... 69 Der Konfigurations-Speicher ........................................................................................................ 70 Konfigurations-Datei cfgvar.ini ..................................................................................................... 71 Konfigurations-Register ............................................................................................................... 75 IP-Adresse der Steuerung ändern ............................................................................................... 76 IP-Adresse über die Datei cfgvar.ini einstellen ............................................................................ 77 IP-Adresse zur Laufzeit einstellen ............................................................................................... 78 Namen für IP-Adressen verwenden ............................................................................................. 79 Erstinbetriebnahme 81 Vorbereitungen zur Erstinbetriebnahme ...................................................................................... 82 Jetter AG 5 Inhaltsverzeichnis Erstinbetriebnahme in JetViewSoft ............................................................................................. 83 Erstinbetriebnahme in JetSym .................................................................................................... 86 6 CANopen®-STX-API 93 STX-Funktion CanOpenInit ......................................................................................................... 94 STX-Funktion CanOpenSetCommand ........................................................................................ 96 STX-Funktion CanOpenUploadSDO ........................................................................................... 98 STX-Funktion CanOpenDownloadSDO .................................................................................... 103 STX-Funktion CanOpenAddPDORx ......................................................................................... 108 STX-Funktion CanOpenAddPDOTx ........................................................................................... 114 CANopen®-Objektverzeichnis des JVM-407 ............................................................................ 120 7 SAE J1939-STX-API 123 Aufbau einer J1939-Nachricht ................................................................................................... 124 STX-Funktion SAEJ1939Init...................................................................................................... 126 STX-Funktion SAEJ1939SetSA ................................................................................................ 128 STX-Funktion SAEJ1939GetSA ................................................................................................ 129 STX-Funktion SAEJ1939AddRx ............................................................................................... 130 STX-Funktion SAEJ1939AddTx ................................................................................................ 133 STX-Funktion SAEJ1939RequestPGN ..................................................................................... 136 STX-Funktion SAEJ1939GetDM1 ............................................................................................. 139 STX-Funktion SAEJ1939GetDM2 ............................................................................................. 142 STX-Funktion SAEJ1939SetSPNConversion ........................................................................... 145 STX-Funktion SAEJ1939GetSPNConversion ........................................................................... 147 8 Dateisystem 8.1 8.2 8.3 8.4 8.5 9 149 Eigenschaften .......................................................................................................................... 150 Eigenschaften der Flash-Disk ................................................................................................... 151 Eigenschaften der SD-Karte...................................................................................................... 152 Eigenschaften des USB-Sticks .................................................................................................. 153 Benutzerverwaltung ................................................................................................................ 154 Benutzer verwalten .................................................................................................................... 156 Auslieferungszustand / Vordefinierte Benutzer und Schlüssel .................................................. 158 Schloss anbringen ..................................................................................................................... 159 Namen einrichten für Schlüssel/Schlösser................................................................................ 161 Belegung der Flash-Disk einsehen ....................................................................................... 163 Belegung der Flash-Disk ........................................................................................................... 164 Betriebssystem-Update und Anwenderprogramm .............................................................. 167 Formatieren und Prüfen.......................................................................................................... 168 Flash-Disk formatieren .............................................................................................................. 169 SD-Karte formatieren ................................................................................................................ 170 USB-Stick formatieren ............................................................................................................... 171 SD-Karte überprüfen ................................................................................................................. 172 USB-Stick überprüfen ................................................................................................................ 173 FTP-Server 175 Anmeldung ................................................................................................................................ 176 Unterstützte Kommandos .......................................................................................................... 177 Beispiel: Windows FTP-Client ................................................................................................... 178 6 Jetter AG JVM-407 10 Inhaltsverzeichnis HTTP-Server 10.1 11 Server Side Includes ................................................................................................................ 180 Name Space Tag ........................................................................................................................ 181 Einfügen von Echtzeit-Steuerungswerten .................................................................................. 182 Beispiel einer HTML-Seite ......................................................................................................... 187 Programmierung 11.1 11.2 11.3 11.4 11.5 11.6 11.6.1 11.6.2 11.6.3 11.6.4 11.7 11.7.1 Jetter AG 179 189 Abkürzungen, Modulregister-Eigenschaften und Formatierungen ............................................ 190 Speicherübersicht .................................................................................................................... 191 Speicher des Betriebssystems ................................................................................................... 192 Speicher des Dateisystems........................................................................................................ 193 Speicher des Anwenderprogramms ........................................................................................... 194 Speicher für flüchtige Variablen des Anwenderprogramms ....................................................... 195 Speicher für nichtflüchtige Register des Anwenderprogramms ................................................. 196 Speicher für nichtflüchtige Variablen des Anwenderprogramms ............................................... 197 Spezialregister............................................................................................................................ 199 Ein- und Ausgänge ..................................................................................................................... 200 Merker ........................................................................................................................................ 201 Ein- und Ausgabe ..................................................................................................................... 203 Funktionstasten .......................................................................................................................... 204 Digipot ........................................................................................................................................ 205 Digitale Ein- und Ausgänge ........................................................................................................ 206 Zündung und Ausschaltverzögerung ......................................................................................... 207 Echtzeituhr................................................................................................................................ 209 Technische Daten....................................................................................................................... 210 Beispielprogramm Echtzeituhr ................................................................................................... 211 Laufzeitregister ........................................................................................................................ 213 Beschreibung der Laufzeitregister ............................................................................................. 214 Beispielprogramm Laufzeitregister ............................................................................................ 216 Überwachung der Schnittstellenaktivität .............................................................................. 217 Funktionsweise .......................................................................................................................... 218 Programmierung ........................................................................................................................ 220 E-Mail......................................................................................................................................... 222 Konfigurieren der E-Mail-Funktion ......................................................................................... 223 Die Konfigurations-Datei "/EMAIL/email.ini" .............................................................................. 224 Sektion [SMTP] .......................................................................................................................... 225 Sektion [POP3]........................................................................................................................... 227 Sektion [DEFAULT] .................................................................................................................... 229 Beispiele für eine Konfigurations-Datei ...................................................................................... 230 Erstellen von E-Mails ............................................................................................................... 231 Name der E-Mail-Vorlagendatei ................................................................................................. 232 Struktur der E-Mail-Vorlagendatei .............................................................................................. 233 Einfügen von Echtzeit-Steuerungswerten .................................................................................. 235 Versenden einer E-Mail............................................................................................................ 238 Versenden mittels Systemfunktion ............................................................................................. 239 Beispielprogramm ...................................................................................................................... 240 Register ..................................................................................................................................... 242 Registerübersicht ....................................................................................................................... 243 Registerbeschreibung ................................................................................................................ 244 Modbus/TCP ............................................................................................................................. 247 Modbus/TCP-Server ................................................................................................................. 248 Adressierung .............................................................................................................................. 249 Unterstützte Kommandos - Class 0 ........................................................................................... 250 Unterstützte Kommandos - Class 1 ........................................................................................... 251 7 Inhaltsverzeichnis 11.7.2 11.8 11.8.1 11.8.2 11.8.3 11.9 12 Automatisches Kopieren von Steuerungsdaten 12.1 12.2 12.3 12.4 13 310 Funktionsweise ....................................................................................................................... 312 AutoCopy-Funktion starten........................................................................................................ 313 AutoCopy-Funktion ausführen .................................................................................................. 314 Betriebsart AutoCopy beenden ................................................................................................. 315 Die Datei "autocopy.ini" .......................................................................................................... 316 Die Sektion [OPTIONS] ............................................................................................................. 317 Die Kommandosektionen .......................................................................................................... 318 Beispiel für eine Kommandodatei ............................................................................................. 326 Protokolldatei .......................................................................................................................... 328 Dateiinhalt ................................................................................................................................. 329 Datendateien ............................................................................................................................ 330 Dateiformat ................................................................................................................................ 331 Betriebssystem-Update 13.1 14 Unterstützte Kommandos - Class 2 .......................................................................................... 252 Modbus/TCP-Client ................................................................................................................. 253 Systemfunktion 65: Azyklisch Register lesen ............................................................................ 255 Systemfunktion 67: Azyklisch Register lesen ............................................................................ 257 Systemfunktion 66: Azyklisch Register schreiben ..................................................................... 259 Systemfunktion 68: Azyklisch Register schreiben ..................................................................... 261 Applikationsbeispiel ................................................................................................................... 263 Freiprogrammierbare IP-Schnittstelle ................................................................................... 266 Programmierung ..................................................................................................................... 268 Initialisieren der freiprogrammierbaren IP-Schnittstelle ............................................................ 269 Verbindung öffnen ..................................................................................................................... 270 Daten senden ............................................................................................................................ 274 Daten empfangen ...................................................................................................................... 276 Verbindung schließen ................................................................................................................ 279 Register .................................................................................................................................... 280 Registernummern ...................................................................................................................... 281 Registerbeschreibung ............................................................................................................... 282 Programmbeispiele ................................................................................................................. 285 Server ........................................................................................................................................ 286 Client ......................................................................................................................................... 290 Freiprogrammierbare CAN-PRIM-Schnittstelle .................................................................... 294 Funktion der CAN-PRIM-Schnittstelle ....................................................................................... 295 Einschränkungen der CAN-PRIM-Schnittstelle ......................................................................... 296 Programmierung der CAN-PRIM-Schnittstelle .......................................................................... 297 Interne Prozesse der CAN-PRIM-Schnittstelle ......................................................................... 300 Registerbeschreibung der CAN-PRIM-Schnittstelle.................................................................. 301 Beispiel zur CAN-PRIM-Schnittstelle ........................................................................................ 307 333 Update des Betriebssystems des Bediengeräts .................................................................. 334 Betriebssystem-Update mit JetSym .......................................................................................... 335 Betriebssystem-Update über FTP ............................................................................................. 336 Automatisches Betriebssystem-Update von SD-Karte und USB-Stick ..................................... 337 Betriebssystem-Update aus dem Anwenderprogramm ............................................................ 338 Anwenderprogramm 341 Anwenderprogramm laden ........................................................................................................ 342 Standardablage des Anwenderprogramms ............................................................................... 343 Anwenderprogramm auf der SD-Karte ablegen ........................................................................ 344 8 Jetter AG JVM-407 15 Inhaltsverzeichnis Kurz-Referenz JVM-407 Anhang A: B: Jetter AG 347 351 Technische Daten ..................................................................................................................... 352 Technische Daten....................................................................................................................... 353 Mechanische Abmessungen ...................................................................................................... 355 Betriebsparameter Umwelt und Mechanik ................................................................................. 358 Betriebsparameter EMV ............................................................................................................. 359 Index .......................................................................................................................................... 360 9 JVM-407 1 Sicherheitshinweise Sicherheitshinweise Einleitung Dieses Kapitel enthält die allgemeinen Sicherheitshinweise und warnt, wenn erforderlich, vor Restgefahren. Außerdem enthält es auch Hinweise zur EMV. Inhalt Thema Seite Grundlegende Sicherheitshinweise .............................................................. 12 Hinweise zur EMV ........................................................................................ 14 Jetter AG 11 1 Sicherheitshinweise Grundlegende Sicherheitshinweise Einleitung Das Gerät erfüllt die geltenden Sicherheitsbestimmungen und Normen. Auf die Sicherheit der Anwender wurde besonderer Wert gelegt. Für den Anwender gelten zusätzlich die folgenden Vorschriften: einschlägigen Unfallverhütungsvorschriften allgemein anerkannten sicherheitstechnischen Regeln EG-Richtlinien oder sonstigen länderspezifischen Bestimmungen Bestimmungsgemäße Verwendung Die bestimmungsgemäße Verwendung beinhaltet das Vorgehen gemäß dieser Betriebsanleitung. Das Gerät ist zum Einbau in Nutzfahrzeugen und mobilen Arbeitsmaschinen bestimmt. Das Gerät JVM-407 ist ein Bediengerät mit integrierter Steuerung zum Datenaustausch mit Peripheriegeräten. Das Bediengerät JVM-407 erfüllt die Anforderungen der KFZ-Richtlinie für elektrische/elektronische Unterbaugruppen. Das Bediengerät JVM-407 darf nur innerhalb der angegebenen Grenzen der technischen Daten betrieben werden. Aufgrund der niedrigen Betriebsspannung des Bediengeräts JVM-407 fällt dieses unter die Kategorie SELV (Safety Extra Low Voltage). Das Bediengerät JVM-407 fällt also nicht unter die EG-Niederspannungsrichtlinie. Nicht bestimmungsgemäße Verwendung Verwenden Sie das Gerät nicht in technischen Systemen, für die eine hohe Ausfallsicherheit vorgeschrieben ist, wie z. B. bei Seilbahnen und Flugzeugen. Das Gerät JVM-407 ist kein Sicherheitsbauteil gemäß Maschinenrichtlinie 2006/42/EG. Deshalb ist der Einsatz des Geräts für sicherheitsrelevante Aufgaben im Sinne des Personenschutzes ungeeignet und unzulässig. Soll das Gerät bei Umgebungsbedingungen betrieben werden, die von den zulässigen Betriebsbedingungen abweichen, ist mit der Jetter AG vorher Rücksprache zu halten. Personalqualifikation Je nach Produktlebenszyklus ergeben sich andere Anforderungen an das Personal. Diese müssen erfüllt sein, um einen sicheren Umgang mit dem Gerät in den jeweiligen Produktlebensphasen gewährleisten zu können. 12 Produktlebensphase Mindestanforderung an das Personal Transport / Lagerung: Geschultes und eingewiesenes Personal mit Kenntnissen im richtigen Umgang mit elektrostatisch gefährdeten Bauelementen. Montage / Installation: Geschultes Fachpersonal mit elektrotechnischer Ausbildung im Bereich Fahrzeugtechnik wie z. B. KFZ-Mechatroniker/in. Inbetriebnahme / Programmierung: Geschultes und eingewiesenes Fachpersonal mit weit reichenden Kenntnissen und Erfahrung in den Bereichen Fahrzeugtechnik / Automatisierung wie z. B. Fahrzeugtechniker/in für Arbeitsmaschinen. Betrieb: Geschultes, eingewiesenes und beauftragtes Personal mit Kenntnissen im richtigen Umgang mit elektronischen Geräten für Arbeitsmaschinen. Jetter AG JVM-407 Sicherheitshinweise Produktlebensphase Mindestanforderung an das Personal Außerbetriebnahme / Stilllegung: Geschultes Fachpersonal mit elektrotechnischer Ausbildung im Bereich Fahrzeugtechnik wie z. B. KFZ-Mechatroniker/in. Umbauten und Veränderungen am Gerät Aus Sicherheitsgründen sind keine Umbauten und Veränderungen am Gerät und dessen Funktion gestattet. Nicht ausdrücklich durch die Jetter AG genehmigte Umbauten am Gerät führen zum Verlust jeglicher Haftungsansprüche gegen die Firma Jetter AG. Die Originalteile sind speziell für das Gerät konzipiert. Teile und Ausstattungen anderer Hersteller sind von uns nicht geprüft und deshalb auch nicht freigegeben. Ihr An- und Einbau kann die Sicherheit und einwandfreie Funktion des Geräts beeinträchtigen. Für Schäden, die durch die Verwendung von nicht originalen Teilen und Ausstattungen entstehen, ist jegliche Haftung durch die Firma Jetter AG ausgeschlossen. Transport Das Gerät JVM-407 enthält elektrostatisch gefährdete Bauelemente, die durch unsachgemäße Behandlung beschädigt werden können. Der Transport des Geräts JVM-407, insbesondere auf dem Postweg, sollte daher nur in Original-Verpackung bzw. geeigneter elektrostatischer Schutzverpackung erfolgen. Schützen Sie das Gerät JVM-407 vor äußeren Schlag- und Stoßeinwir kungen durch geeignete Umverpackung. Prüfen Sie bei beschädigter Verpackung das Gerät auf sichtbare Schäden. Informieren Sie den Transporteur und gegebenenfalls den Hersteller. Einlagerung Beachten Sie bei der Einlagerung des Geräts JVM-407 die klimatischen Bedingungen aus den technischen Daten. Reparatur und Wartung Reparaturen an dem Gerät dürfen nicht vom Betreiber selbst durchgeführt werden. Das Gerät enthält keine vom Betreiber reparierbaren Teile. Das Gerät ist zur Reparatur an die Firma Jetter AG einzuschicken. Entsorgung Für die Entsorgung des Gerätes gelten für den Standort der Betreiberfirma die Umweltrichtlinien des jeweiligen Landes. Jetter AG 13 1 Sicherheitshinweise Hinweise zur EMV Verdrahtungsvorschrift CAN-Kabel Um die Anforderungen an die EMV zu erfüllen, muss die Abschirmung des CAN-Kabels mit dem Modulgehäuse verbunden werden. Der alleinige Anschluss des Pins 16 (Abschirmung) ist für eine wirkungsvolle Abschirmung nicht geeignet. Verbinden Sie die Abschirmung des CAN-Kabels mit dem Gewindebolzen des Modulgehäuses: Es bedeutet: Nummer Verdrahtungsvorschrift Videokabel 14 Teil 1 Gewindebolzen des Modulgehäuses 2 Unterlegscheibe 3 Kabelschuh 4 Sicherungsscheibe 5 Mutter Um die Anforderungen an die EMV zu erfüllen, muss die Abschirmung des Videokabels mit dem Modulgehäuse verbunden werden. Die Masseanschlüsse (Pin 4 und Pin 7) sind für eine wirkungsvolle Abschirmung nicht geeignet. Verbinden Sie die Abschirmung des Videokabels mit dem Gewindebolzen des Modulgehäuses: Jetter AG JVM-407 Sicherheitshinweise Es bedeutet: Nummer Jetter AG Teil 1 Gewindebolzen des Modulgehäuses 2 Unterlegscheibe 3 Kabelschuh 4 Sicherungsscheibe 5 Mutter 15 JVM-407 2 Produktbeschreibung und Geräteaufbau Produktbeschreibung und Geräteaufbau Einleitung Dieses Kapitel beschreibt den Geräteaufbau und den Aufbau der Bestellbezeichnung mit ihren Optionen. Inhalt Thema Seite Produktbeschreibung JVM-407 .................................................................... 18 Teile und Schnittstellen ................................................................................. 19 Bestellbezeichnung / Optionen ..................................................................... 23 Mechanische Abmessungen......................................................................... 24 Jetter AG 17 2 Produktbeschreibung und Geräteaufbau Produktbeschreibung JVM-407 Das Bediengerät JVM-407 Das Bediengerät JVM-407 ist aufgrund seiner kompakten Bauform und der integrierten Steuerung vielseitig einsetzbar. Bei Bedarf kann auch ein komplettes Kombiinstrument durch das JVM-407 ersetzt werden. Das JVM-407 wurde speziell für den rauen Einsatz in Nutzfahrzeugen und mobilen Arbeitsmaschinen entwickelt. Produkteigenschaften In folgender Liste sind die Produkteigenschaften dargestellt: 18 Display: 7"-TFT mit LED-Backlight Nachtbeleuchtung einstellbar nicht flüchtige Register: 6.000 1 digitaler und gesicherter Ausgang mit 3 A Auflösung: WVGA (800 x 480 Pixel) 4 Funktionstasten 1 Digipot 10 Zustands-LEDs ansteuerbar über 10 digitale Eingänge, ausgelegt auf die Spannungsversorgung 12 V und 24 V am Fahrzeug Buzzer (93 dB) Leistungsfähige Programmiersprache JetSym STX RAM-Speicher: 16 MByte Flash-Speicher: 64 MByte 1 Ethernet-Schnittstelle 3 CAN-2.0B-Schnittstellen Weitere 5 digitale Eingänge zur freien Verfügung, ausgelegt auf die Spannungsversorgung 12 V und 24 V am Fahrzeug 1 FBAS-Videoeingang für die Rückfahrkamera 1 USB-Schnittstelle SD-Karten-Slot für SD-Karten bis 8 GByte Batteriegepufferte Echtzeituhr Integrierter Webserver / E-Mail versenden Modbus/TCP Jetter AG JVM-407 Produktbeschreibung und Geräteaufbau Teile und Schnittstellen Einleitung Dieses Kapitel beschreibt die Teile und Schnittstellen des JVM-407. Bedienelemente Die Abbildung zeigt die Bedienelemente auf der Frontseite. 1 2 3 Nummer Jetter AG 6 4 5 Bedienelement 1 USB-Buchse hinter Abdeckkappe 2 Funktionstaste F1 3 Funktionstaste F2 4 Funktionstaste F3 5 Funktionstaste F4 6 Digipot (Drehregler und Taster) Die Funktionen des Digipots und der Funktionstasten werden kundenseitig im Programm definiert. 19 2 Produktbeschreibung und Geräteaufbau Anzeigen Die Abbildung zeigt die Anzeigen auf der Frontseite. 1 2 7 11 3 8 4 9 5 10 Nummer 20 6 Bedienelement bzw. Anzeige 1 LED 1 2 LED 2 3 LED 3 4 LED 4 5 LED 5 6 LED 6 7 LED 7 8 LED 8 9 LED 9 10 LED 10 11 Display Die LEDs durchleuchten die Piktogramme auf der Display-Fläche. Jetter AG JVM-407 Anschlüsse und Teile auf der Rückseite Produktbeschreibung und Geräteaufbau Die Abbildung zeigt die Anschlüsse und Teile auf der Rückseite. Nummer Anschlüsse und Teile auf der Unterseite Jetter AG Anschluss bzw. Teil 1 Anschlussstecker CANopen® 2 Typenschild 3 Anschlussstecker Video 4 Anschlussstecker Spannungsversorgung, Ein- und Ausgänge 5 4 Gewindebolzen für Montageblech 6 Pufferbatterie auf der Platine 7 Summer Die Abbildung zeigt die Anschlüsse und Teile auf der Unterseite. 21 2 Produktbeschreibung und Geräteaufbau Nummer LEDs auf der Unterseite 1 Anschlussbuchse für das Ethernet-Kabel 2 Einschub für SD-Karte Die Abbildung zeigt die LEDs der Anschlussbuchse für das Ethernet-Kabel. Nummer 22 Anschluss bzw. Teil Farbe Bedeutung 1 gelb blinkt bei Aktivität (Datentransfer) 2 grün leuchtet bei hergestellter Verbindung Jetter AG JVM-407 Produktbeschreibung und Geräteaufbau Bestellbezeichnung / Optionen Bestellbezeichnung Vom JVM-407 gibt es die folgenden Varianten. Sie sind unter folgenden Teilenummern bei der Jetter AG bestellbar. Teilenummer Jetter AG Bestellbezeichnung Name 10000821 JVM-407-K00-O01 Terminal auf Tragarm 10000822 JVM-407-K00-O12 Terminal zum Einbau 23 2 Produktbeschreibung und Geräteaufbau Mechanische Abmessungen Einleitung Dieses Kapitel beschreibt die mechanischen Abmessungen des JVM-407 und die Bedingungen für den Einbau. Mechanische Abmessungen Die Abbildung zeigt die Abmessungen des JVM-407. Zulässige Einbaulagen Die Abbildung zeigt die zulässigen Einbaulagen. 24 Jetter AG JVM-407 Produktbeschreibung und Geräteaufbau Es bedeutet: Nummer Verbotene Einbaulagen Zulässige Einbaulage 1 waagerecht oder geneigt 2 senkrecht oder geneigt Die Abbildung zeigt die verbotene Einbaulage. Das Bediengerät JVM-407 ist rückseitig nicht gegen Feuchtigkeit, insbesondere Spritz- oder Tropfwasser, geschützt. Sollte am Einbauort Feuchtigkeit nicht auszuschließen sein, ist diese Einbauart (siehe Bild oben) nicht zulässig. Die Ansammlung von Feuchtigkeit und Tropfwasser im Gerät kann zu Kriechströmen und Korrosion führen. Platzbedarf für Einbau und Service Die Abbildung zeigt den Platzbedarf für das Bediengerät JVM-407. Halten Sie den Raum um das Gehäuse für den Servicefall frei. Die Stecker müssen sich jederzeit abziehen lassen. Die SD-Karte muss sich jederzeit austauschen lassen. Die Flügelmutter der SD-Karten-Sicherung muss sich leicht lösen lassen. Es bedeutet: Jetter AG 25 2 Produktbeschreibung und Geräteaufbau Nummer Platzbedarf für Überhitzungsschutz Beschreibung 1 Stecker für CANopen®, Video, Spannungsversorgung, Ein- und Ausgänge 2 Flügelmutter zur Sicherung der SD-Karte 3 Netzwerkstecker 4 SD-Karte Die Abbildung deutet den Sicherheitsabstand für den Überhitzungsschutz an. Beachten Sie: Das JVM-407 erhöht die Umgebungstemperatur durch Wärmeabstrahlung unter Last. Die Leistungsaufnahme beträgt 7,8 W. Das JVM-407 arbeitet störungsfrei bei einer Umgebungstemperatur bis +65 °C. Bedenken Sie die Wärmeabstrahlung des Geräts insbesondere beim Einbau in kritischer Umgebung: Einbauort 26 In der Nähe des Kraftstofftanks In der Nähe der Kraftstoffleitung In der Nähe brennbarer Fahrzeugteile In der Nähe thermisch verformbarer Fahrzeugteile Das JVM-407 ist in der Fahrerkabine einzubauen. Jetter AG JVM-407 3 Identifikation des JVM-407 Identifikation des JVM-407 Zweck des Kapitels Dieses Kapitel unterstützt die Identifikation des JVM-407 in folgenden Punkten: Bestimmung der Hardware-Revision. Auslesen des elektronischen Typenschilds EDS. Im EDS sind zahlreiche fertigungsrelevante Daten abgelegt. Bestimmung der Betriebssystem-Version der Steuerung und der Software-Komponenten. Voraussetzungen Zur Identifikation des Bediengeräts JVM-407 müssen folgende Voraussetzungen erfüllt sein: Die Steuerung ist mit einem PC verbunden. Auf dem PC ist die Programmier-Software JetSym ab der Version 4.1.2 installiert. Infos für die Hotline Falls Sie sich wegen eines Problems an die Hotline der Jetter AG wenden müssen, halten Sie folgende Informationen des Bediengeräts JVM-407 bereit: Seriennummer Betriebssystem-Version des Bediengeräts Hardware-Revision Inhalt Thema Seite Identifikation über das Typenschild .............................................................. 28 Versionsregister ............................................................................................ 30 Jetter AG 27 3 Identifikation des JVM-407 3.1 Identifikation über das Typenschild Einleitung Jedes Bediengerät JVM-407 identifiziert sich über das Typenschild am Gehäuse. Sie benötigen die Daten der Hardware-Revision und die Seriennummer, falls Sie sich wegen eines Problems an die Hotline der Jetter AG wenden müssen. Inhalt Thema Seite Typenschild ................................................................................................... 29 28 Jetter AG JVM-407 Identifikation des JVM-407 Typenschild Typenschild Das Typenschild eines Bediengeräts JVM-407 beinhaltet folgende Informationen: Nummer Jetter AG Beschreibung 1 Seriennummer 2 Hardware-Revision 3 Bediengerätename 4 Teilenummer 29 3 Identifikation des JVM-407 3.2 Versionsregister Einleitung Das Betriebssystem des JVM-407 stellt einige Register zur Verfügung, über welche die Versionsnummern des Betriebssystems und seiner Komponenten gelesen werden können. Sie benötigen diese Angaben, falls Sie sich wegen eines technischen Problems an die Hotline der Jetter AG wenden. Inhalt Thema Seite Software-Versionen ....................................................................................... 31 30 Jetter AG JVM-407 Identifikation des JVM-407 Software-Versionen Einleitung Das Bediengerät JVM-407 beinhaltet Software mit eindeutigen Versionsnummern, die über Spezialregister lesbar sind. Format von SoftwareVersionsnummern Die Software-Versionsnummern des JVM-407 werden durch vier Zahlen dargestellt. 1 . 2 . 3 . 4 Teil Funktion 1 Major- bzw. Hauptversionsnummer 2 Minor- bzw. Nebenversionsnummer 3 Branch- bzw. Zwischenversionsnummer 4 Build-Versionsnummer Freigegebene Version Bei einer freigegebenen Version haben die Branch- und die Build-Versionsnummer den Wert 0. Registerübersicht Zum Auslesen der Software-Versionen werden folgende Register verwendet: Register Versionsnummern im JetSym Setup 200168 Version des Bootloaders 200169 Version des Betriebssystems 210001 Version der Ausführungseinheit für das STX-Anwenderprogramm (JetVM-Version) Die folgende Grafik zeigt ein Setup-Fenster in JetSym, das die Versionsregister darstellt. Wählen Sie zur Anzeige einer Versionsnummer im JetSym Setup das Format "IP-Adresse" aus. Nummer 1 Jetter AG Beschreibung Teil V 1.15.01.00 Funktion Betriebssystem-Version des Bediengeräts. Wird von JetSym in der Titelzeile eines jeden Setup-Fensters angezeigt. 31 JVM-407 4 Montage und Installation des JVM-407 Montage und Installation des JVM-407 Zweck des Kapitels Dieses Kapitel unterstützt die Installation des Bediengeräts JVM-407 im Fahrzeug in folgenden Punkten: Planung der Verdrahtung des JVM-407 Montage Konfiguration der IP-Schnittstelle des JVM-407 Inhalt Thema Seite Schnittstellen ................................................................................................ 34 Schnittstellen an der Mittelkonsole bei montiertem Tragarm ....................... 54 Montage des JVM-407.................................................................................. 62 IP-Konfiguration ............................................................................................ 68 Jetter AG 33 4 Montage und Installation des JVM-407 4.1 Schnittstellen Stecker für Spannungsversorgung und digitale Ein-/Ausgänge Ethernet-Schnittstelle Der Stecker hat folgende Funktion: Spannungsversorgung des JVM-407 Digitale Ein-/Ausgänge Die RJ45-Buchse hat folgende Funktion: Ethernet-Schnittstelle zu einem PC Drei CAN-Schnittstellen Die CAN-Schnittstellen haben die folgende Funktion: Schnittstelle CAN 0: Konfigurierbar als CAN-PRIM-Schnittstelle Schnittstelle CAN 0 bis CAN 2: Konfigurierbar als CANopen®-Busschnittstelle Stecker für Videokamera Der Stecker hat folgende Funktion: Anschlussmöglichkeit einer Videokamera, z. B. einer Rückfahrkamera, mit einer Betriebsspannung von 12 VDC. Inhalt Thema Seite Beispiel einer Verdrahtung ............................................................................ 35 Anschluss Spannungsversorgung ................................................................ 36 Anschluss digitale Ein- und Ausgänge .......................................................... 38 Ausschaltverzögerung des Bediengeräts ..................................................... 41 Ethernet-Schnittstelle .................................................................................... 43 CAN-Schnittstelle .......................................................................................... 45 Spezifikation - CAN-Buskabel ....................................................................... 49 Anschluss Video ........................................................................................... 51 34 Jetter AG JVM-407 Montage und Installation des JVM-407 Beispiel einer Verdrahtung Einleitung Dieses Kapitel beschreibt anhand eines Beispiels, wie das JVM-407 angeschlossen wird. Beispiel Die Abbildung zeigt ein Beispiel für eine Verdrahtung. Es bedeutet: Jetter AG 1 CANopen®-Bus 2 Videokamera 3 Spannungsversorgung (Batterie) 4 Zündschloss 5 Eingang zur Ansteuerung der Display-LEDs 6 Ausgang, z. B. zur Ansteuerung eines Bypass-Relais 35 4 Montage und Installation des JVM-407 Anschluss Spannungsversorgung Einleitung Dieses Kapitel beschreibt die Pinbelegung des Anschlusssteckers für die Spannungsversorgung des JVM-407. Steckertyp ist der 22-polige Stecker Molex Micro-Fit 3.0 (Hersteller-Artikel-Nr. 43045-2218). Verwendung des Steckers Dieser Stecker wird auch für die digitalen Ein- und Ausgänge benutzt. Spannungsversorgung Die Abbildung zeigt die Pinbelegung des Anschlusssteckers für die Spannungsversorgung (Blick auf die Kabelseite): Die Pinbelegung ist wie folgt: Pin Funktion Klemmenbezeichnung in KFZ 1 Versorgungsspannung +U BATT (+12 VDC bzw. +24 VDC) KL 30 2 Zündung (+) KL 15 11 GND KL 31 12 Versorgungsspannung U BATT (+12 VDC bzw. +24 VDC) KL 30 22 GND KL 31 Wichtiger Hinweis zur Versorgungsspannung Um die Strombelastung der Pins 1 und 12 sowie der Pins 11 und 22 zu halbieren, sind alle der vier Pins entsprechend obiger Pinbelegung an die Versorgungsspannung anzuschließen. Hinweis zur Zündung Zum Starten des JVM-407 muss Pin 2 (Zündung +) mit Pin 1 oder Pin 12 verbunden sein. Das Steuersignal Zündung (+) wird mit der Schlüsselstellung "Zündung EIN" verbunden. In Schlüsselstellung "Zündung AUS" kann sich das JVM-407 selbstständig im eingeschalteten Zustand halten. 36 Jetter AG JVM-407 Montage und Installation des JVM-407 Technische Daten Parameter Beschreibung Nennspannung DC 12 V bzw. DC 24 V Zulässiger Spannungsbereich 9 ... 32 VDC Eingangsstrom ohne Kamera typ. 650 mA bei DC 12 V Eingangsstrom ohne Kamera typ. 320 mA bei DC 24 V Leistungsaufnahme ohne Kamera 7,8 W Hinweis zur Stromaufnahme Die Stromaufnahme beim Einschalten des JVM-407 ist kurzzeitig höher. Es sollte mindestens das 3-fache des benötigten typischen Stromes bereitgestellt werden, um einen Start des JVM-407 zu gewährleisten. Gegenstücke Kompatible Gegenstücke des 22-poligen Steckers Molex Micro-Fit 3.0 sind die folgenden Komponenten: Jetter AG Hersteller Molex Hersteller-Artikel-Nr. Gehäuse 43025-2200 Hersteller-Artikel-Nr. Crimpkontakt (Buchse) 43030-0007 Anschließbarer Adernquerschnitt 0,2 ... 0,5 mm (AWG 24 ... 20) Hersteller Würth Hersteller-Artikel-Nr. Gehäuse 662 022 113 322 Hersteller-Artikel-Nr. Crimpkontakt (Buchse) 662 001 137 22 Anschließbarer Adernquerschnitt 0,2 ... 0,5 mm (AWG 24 ... 20) 2 2 37 4 Montage und Installation des JVM-407 Anschluss digitale Ein- und Ausgänge Einleitung Dieses Kapitel beschreibt die Pinbelegung des Anschlusssteckers für die Einund Ausgänge am JVM-407. Steckertyp ist der 22-polige Stecker Molex Micro-Fit 3.0 (Hersteller-Artikel-Nr. 43045-2218). Verwendung des Steckers Dieser Stecker wird auch für die Spannungsversorgung benutzt. Pinbelegung Ein- und Ausgänge Die Abbildung zeigt die Pinbelegung des Anschlusssteckers für Ein- und Ausgänge (Blick auf die Kabelseite): Die Pinbelegung ist wie folgt: Pin 38 Funktion 3 Ausgang 1 4 Eingang 2 5 Eingang 4 6 Eingang 6 7 Eingang 8 8 Eingang 10 9 Eingang 12 10 Eingang 14 11 GND 12 Versorgungsspannung (+12 VDC bzw. +24 VDC) 13 Ausgang 1 14 Eingang 1 15 Eingang 3 16 Eingang 5 17 Eingang 7 18 Eingang 9 Jetter AG JVM-407 Montage und Installation des JVM-407 Pin Funktion 19 Eingang 11 20 Eingang 13 21 Eingang 15 Hinweis zum Ausgang 1 Weil über den Ausgang 1 ein Strom bis zu 3 A gezogen werden kann, ist der Ausgang 1 auf die Pins 3 und 13 gelegt worden. Dies dient zur Halbierung der Strombelastung des einzelnen Pins. Deshalb sind beide Pins anzuschließen. Hinweis zu den LEDs Weil die Eingänge 1 bis 10 direkt mit LEDs verbunden sind, ermöglicht das eine Anzeige des Fahrzeugstatus selbst bei abgeschaltetem Display. Ein möglicher Fahrzeugstatus kann z. B. Fernlicht, Blinker, Störung, etc. sein. Technische Daten digitale Eingänge Technische Daten digitale Ausgänge Jetter AG Parameter Beschreibung Art der Eingänge Transistor, npn Nennspannung DC 9 ... 32 V Schaltschwelle AUS ~ 8,5 V, 10 mA Schaltschwelle EIN ~ 8,3 V, min. 50 mA Potentialtrennung keine Parameter Beschreibung Art der Ausgänge Transistor, pnp Nennspannung Versorgungsspannung Signalspannung AUS < 1,0 V Signalspannung EIN UVersorgung - 0,025 V Laststrom max. 3,0 A 39 4 Montage und Installation des JVM-407 Gegenstücke 40 Kompatible Gegenstücke des 22-poligen Steckers Molex Micro-Fit 3.0 sind die folgenden Komponenten: Hersteller Molex Hersteller-Artikel-Nr. Gehäuse 43025-2200 Hersteller-Artikel-Nr. Crimpkontakt (Buchse) 43030-0007 Anschließbarer Adernquerschnitt 0,2 ... 0,5 mm (AWG 24 ... 20) Hersteller Würth Hersteller-Artikel-Nr. Gehäuse 662 022 113 322 Hersteller-Artikel-Nr. Crimpkontakt (Buchse) 662 001 137 22 Anschließbarer Adernquerschnitt 0,2 ... 0,5 mm (AWG 24 ... 20) 2 2 Jetter AG JVM-407 Montage und Installation des JVM-407 Ausschaltverzögerung des Bediengeräts Einleitung Dieses Kapitel beschreibt, wie die Ausschaltverzögerung des Bediengeräts JVM-407 realisiert wird. Ziel Nach dem Ausschalten der Zündung soll das Bediengerät noch eine bestimmte Zeit lang eingeschaltet bleiben. Erst nach Ablauf dieser Zeit soll es sich selbsttätig ausschalten. Dauer der Ausschaltverzögerung Die Dauer der Ausschaltverzögerung wird im Programm des JVM-407 definiert. Verdrahtung Die Abbildung zeigt die Verdrahtung für die Ausschaltverzögerung (Blick auf die Kabelseite der Buchse): 2 3 4 1 Es bedeutet: Jetter AG 1 Batterie 2 Zündschloss 3 Bypass-Relais 4 Fahrzeug 41 4 Montage und Installation des JVM-407 Pinbelegung Die Pinbelegung ist wie folgt: Pin 42 Funktion Klemmenbezeichnung in KFZ 1 Versorgungsspannung +U BATT (+12 VDC bzw. +24 VDC) KL 30 2 Zündung (+) KL 15 3 Bypass-Relais - 11 GND KL 31 12 Versorgungsspannung +U BATT (+12 VDC bzw. +24 VDC) KL 30 22 GND KL 31 Jetter AG JVM-407 Montage und Installation des JVM-407 Ethernet-Schnittstelle Einleitung Dieses Kapitel beschreibt die Pinbelegung der Anschlussbuchse für das Ethernet-Kabel am Bediengerät JVM-407. Pinbelegung EthernetSchnittstelle Die Abbildung zeigt die Pinbelegung der Anschlussbuchse für das Ethernet-Kabel: Die Pinbelegung ist wie folgt: Pin Funktion 1 TX+ 2 TX- 3 RX+ 6 RX- Technische Daten Kabel für EthernetSchnittstelle Parameter Klemmenart RJ45-Buchse Anzahl Ports 1 Übertragungsrate 10 MBit/s, 100 MBit/s auto cross over ja Zum Anschluss von Geräten an die Ethernet-Schnittstelle können Sie folgende Kabel separat bei der Jetter AG bestellen: Artikel-Nr. Jetter AG Beschreibung Artikel 60537500 Patchkabel 1:1, 1 m grau Hirose, Cat 5e, geschirmt 60854512 Patchkabel 1:1, 2 m grau Hirose, Cat 5e, geschirmt 60854514 Patchkabel 1:1, 5 m grau Hirose, Cat 5e, geschirmt 60854515 Patchkabel 1:1, 10 m grau Hirose, Cat 5e, geschirmt 60854078 Patchkabel Cross over, 1 m grau Hirose, Cat 5e, geschirmt 43 4 Montage und Installation des JVM-407 Artikel-Nr. 44 Artikel 60851216 Patchkabel Cross over, 3 m blau Hirose, Cat 5e, geschirmt 60854079 Patchkabel Cross over, 5 m grau Hirose, Cat 5e, geschirmt Jetter AG JVM-407 Montage und Installation des JVM-407 CAN-Schnittstelle Einleitung Dieses Kapitel beschreibt die Pinbelegung des Anschlusssteckers für den CANopen®-Bus am JVM-407. Steckertyp ist der 16-polige Stecker Molex Micro-Fit 3.0 (Hersteller-Artikel-Nr. 43045-1618). Pinbelegung CANopen® 0 Die Abbildung zeigt die Pinbelegung des Anschlusssteckers für den CANopen®-Bus 0 (Blick auf die Kabelseite): Die Pinbelegung ist wie folgt: Pin Jetter AG Funktion 1 IN_CAN_0_H 2 TERM_CAN_0 3 OUT_CAN_0_L 9 IN_CAN_0_L 10 OUT_CAN_0_H 16 Abschirmung 45 4 Montage und Installation des JVM-407 Pinbelegung CANopen® 1 Die Abbildung zeigt die Pinbelegung des Anschlusssteckers für den CANopen®-Bus 1 (Blick auf die Kabelseite): Die Pinbelegung ist wie folgt: Pin Pinbelegung CANopen® 2 46 Funktion 11 IN_CAN_1_H 4 IN_CAN_1_L 12 TERM_CAN_1 5 OUT_CAN_1_H 13 OUT_CAN_1_L 16 Abschirmung Die Abbildung zeigt die Pinbelegung des Anschlusssteckers für den CANopen®-Bus 2 (Blick auf die Kabelseite): Jetter AG JVM-407 Montage und Installation des JVM-407 Die Pinbelegung ist wie folgt: Pin Funktion 6 IN_CAN_2_H 7 TERM_CAN_2 8 OUT_CAN_2_L 14 IN_CAN_2_L 15 OUT_CAN_2_H 16 Abschirmung Busabschlusswiderstand hinzuschalten Um den im JVM-407 befindlichen Widerstand als Busabschlusswiderstand hinzuzuschalten, ist der Pin TERM_CAN_x mit Pin OUT_CAN_x_H zu verbinden. Abschirmung Um die Anforderungen an die EMV zu erfüllen, muss die Abschirmung des CAN-Kabels mit dem Modulgehäuse verbunden werden. Der alleinige Anschluss des Pins 16 (Abschirmung) ist für eine wirkungsvolle Abschirmung nicht geeignet. Verbinden Sie die Abschirmung des CAN-Kabels mit dem Gewindebolzen des Modulgehäuses: Es bedeutet: Nummer Jetter AG Teil 1 Gewindebolzen des Modulgehäuses 2 Unterlegscheibe 3 Kabelschuh 4 Sicherungsscheibe 5 Mutter 47 4 Montage und Installation des JVM-407 Gegenstücke 48 Kompatible Gegenstücke des 16-poligen Steckers Molex Micro-Fit 3.0 sind die folgenden Komponenten: Hersteller Molex Hersteller-Artikel-Nr. Gehäuse 43025-1600 Hersteller-Artikel-Nr. Crimpkontakt (Buchse) 43030-0007 Anschließbarer Adernquerschnitt 0,2 ... 0,5 mm (AWG 24 ... 20) Hersteller Würth Hersteller-Artikel-Nr. Gehäuse 662 016 113 322 Hersteller-Artikel-Nr. Crimpkontakt (Buchse) 662 001 137 22 Anschließbarer Adernquerschnitt 0,2 ... 0,5 mm (AWG 24 ... 20) 2 2 Jetter AG JVM-407 Montage und Installation des JVM-407 Spezifikation - CAN-Buskabel Schema der CAN-Busverdrahtung Die CANopen®-Geräte der Jetter AG werden entsprechend der folgenden Abbildung verdrahtet. IN_CAN_L OUT_CAN_L CAN_H CAN_H 120 Ohm 120 Ohm CAN_L Nummer IN_CAN_H OUT_CAN_H IN_CAN_L OUT_CAN_L IN_CAN_H OUT_CAN_H IN_CAN_L IN_CAN_H 1 OUT_CAN_L OUT_CAN_H 2 CAN_L Beschreibung 1 CAN-Bus 2 CANopen®-Geräte der Jetter AG Als Busabschlusswiderstand von 120 Ohm kann wahlweise ein im Gerät befindlicher Widerstand hinzugeschaltet werden. Die Stichleitungslänge ist bei dieser Art von Verdrahtung praktisch Null. Die Leitungen CAN_L und CAN_H müssen miteinander verdrillt sein. Jetter AG 49 4 Montage und Installation des JVM-407 Spezifikation CAN-Buskabel Parameter Beschreibung Querschnitt 1000 kBaud: 0,25 ... 0,34 mm 2 500 kBaud: 0,34 ... 0,50 mm 2 250 kBaud: 0,34 ... 0,60 mm 2 125 kBaud: 0,50 ... 0,60 mm Kapazität des Kabels max. 60 pF/m Spezifischer Widerstand 1000 kBaud: max. 70 Ω/km 2 500 kBaud: max. 60 Ω/km 250 kBaud: max. 60 Ω/km 125 kBaud: max. 60 Ω/km Leitungslängen 50 Adernzahl 2 Schirmung Gesamt, nicht paarig Drillung Adernpaar CAN_L und CAN_H verdrillt Die maximal zulässige Leitungslänge ist abhängig von der verwendeten Baudrate und der Anzahl der angeschlossenen CANopen®-Geräte. Baudrate Leitungslänge Stichleitungslänge GesamtStichleitungslänge 1000 kBaud max. 25 m max. 0,3 m 3m 500 kBaud max. 100 m max. 1,0 m 39 m 250 kBaud max. 200 m max. 3,0 m 78 m 125 kBaud max. 200 m - - Jetter AG JVM-407 Montage und Installation des JVM-407 Anschluss Video Einleitung Dieses Kapitel beschreibt die Pinbelegung des Anschlusssteckers für die Videokamera am JVM-407. Steckertyp ist der 8-polige Stecker Molex Micro-Fit 3.0 (Hersteller-Artikel-Nr. 43045-0818). Pinbelegung Video Die Abbildung zeigt die Pinbelegung des Anschlusssteckers für die Videokamera (Blick auf die Kabelseite): Die Pinbelegung ist wie folgt: Pin Funktion 1 Versorgungsspannung (+12 VDC) z. B. für eine Kamera 2 Videosignal (+) 3 Abschirmung 4 Masse (GND) 5 Videosignal (-) 6 Masse (GND) 7 Videosignal (-) 8 Reserviert (nicht anschließen!) Hinweis zum Videosignal Wird kein differentielles Videosignal verwendet, so sind Videosignal (-) (Pin 7) und GND (Pin 6) zu verbinden. Abschirmung Um die Anforderungen an die EMV zu erfüllen, muss die Abschirmung des Videokabels mit dem Modulgehäuse verbunden werden. Die Masseanschlüsse (Pin 4 und Pin 7) sind für eine wirkungsvolle Abschirmung nicht geeignet. Verbinden Sie die Abschirmung des Videokabels mit dem Gewindebolzen des Modulgehäuses: Jetter AG 51 4 Montage und Installation des JVM-407 Es bedeutet: Nummer Technische Daten Gegenstücke 52 Teil 1 Gewindebolzen des Modulgehäuses 2 Unterlegscheibe 3 Kabelschuh 4 Sicherungsscheibe 5 Mutter Parameter Beschreibung Spannungsversorgung für eine Kamera DC 12 V, max. 1 A Art des Videoeingangs analoger, differentieller FBAS-Videoeingang mit PAL-Signal oder NTSC-Signal Kompatible Gegenstücke des 8-poligen Steckers Molex Micro-Fit 3.0 sind die folgenden Komponenten: Hersteller Molex Hersteller-Artikel-Nr. Gehäuse 43025-0800 Hersteller-Artikel-Nr. Crimpkontakt (Buchse) 43030-0007 Anschließbarer Adernquerschnitt 0,2 ... 0,5 mm (AWG 24 ... 20) 2 Jetter AG JVM-407 Jetter AG Montage und Installation des JVM-407 Hersteller Würth Hersteller-Artikel-Nr. Gehäuse 662 008 113 322 Hersteller-Artikel-Nr. Crimpkontakt (Buchse) 662 001 137 22 Anschließbarer Adernquerschnitt 0,2 ... 0,5 mm (AWG 24 ... 20) 2 53 4 Montage und Installation des JVM-407 4.2 Schnittstellen an der Mittelkonsole bei montiertem Tragarm Verbindungskabel zur Mittelkonsole In diesem Kapitel ist der Aufbau der Verbindungskabel beschrieben, die schon innerhalb des Tragarms verlegt sind, wenn das Bediengerät JVM-407 auf dem Tragarm montiert ist. Auch werden die Steckertypen beschrieben, die benötigt werden, um das JVM-407 an der Mittelkonsole anzuschließen. Für folgende Zwecke sind Verbindungskabel im Tragarm verlegt: Spannungsversorgung Digitale Ein-/Ausgänge CANopen®-Schnittstellen Video Inhalt Thema Seite Verbindungskabel Spannungsversorgung .................................................... 55 Verbindungskabel Ein- und Ausgänge .......................................................... 57 Verbindungskabel CANopen® ...................................................................... 59 Verbindungskabel Video ............................................................................... 61 54 Jetter AG JVM-407 Montage und Installation des JVM-407 Verbindungskabel Spannungsversorgung Verdrahtung Die Abbildung zeigt die Verdrahtung der Spannungsversorgung im Tragarm (Blick jeweils auf die Kabelseite): Es bedeutet: Pinbelegung A Anschlussstecker für das Bediengerät JVM-407 B Anschlussstecker für die Mittelkonsole Die Pinbelegung ist wie folgt: Pin (A) Verwendung Anschlussstecker B Spezifikation Anschlussstecker B Jetter AG Funktion Klemmenbezeichnung in KFZ Pin (B) 1 +U BATT KL 30 1 2 Zündung (+) KL 15 3 11 GND KL 31 21 12 +U BATT KL 30 2 22 GND KL 31 22 Dieser Stecker wird auch für die digitalen Ein- und Ausgänge benutzt. Typ AMP Junior Power Timer (male) Anzahl der Pole 22 55 4 Montage und Installation des JVM-407 Gegenstück 56 Kompatibles Gegenstück des 22-poligen Steckers AMP Junior Power Timer ist der folgende: Hersteller AMP Hersteller-Artikel-Nr. Buchsengehäuse 929504-7 Hersteller-Artikel-Nr. Crimpkontakt (Buchse) 927771 (Bandware) 927779 (einzeln) Anschließbarer Adernquerschnitt 0,5 ... 1,0 mm (AWG 20 ... 16) 2 Jetter AG JVM-407 Montage und Installation des JVM-407 Verbindungskabel Ein- und Ausgänge Verdrahtung Die Abbildung zeigt die Verdrahtung der digitalen Eingänge und des digitalen Ausgangs im Tragarm (Blick jeweils auf die Kabelseite): Es bedeutet: Pinbelegung A Anschlussstecker für das Bediengerät JVM-407 B Anschlussstecker für die Mittelkonsole Die Pinbelegung ist wie folgt: Pin (A) Jetter AG Funktion Pin (B) 3 Ausgang 1 4 4 Eingang 2 7 5 Eingang 4 6 Eingang 6 7 Eingang 8 8 Eingang 10 9 Eingang 12 10 Eingang 14 11 GND 21 13 Ausgang 1 5 14 Eingang 1 6 15 Eingang 3 16 Eingang 5 17 Eingang 7 18 Eingang 9 Zur Ansteuerung der LEDs für die Piktogramm-Durchleuchtung auf der Display-Fläche 9 11 13 15 Zur freien Verwendung Zur Ansteuerung der LEDs für die Piktogramm-Durchleuchtung auf der Display-Fläche 17 19 8 10 12 14 57 4 Montage und Installation des JVM-407 Pin (A) Funktion 19 Eingang 11 20 Eingang 13 21 Eingang 15 Pin (B) 16 18 Zur freien Verwendung 20 Hinweis zum Ausgang 1 Weil über den Ausgang 1 die Zündspule angesteuert wird, die sehr viel Strom zieht, ist der Ausgang 1 auf die Pins 3 und 13 (A) bzw. 4 und 5 (B) gelegt worden. Dies dient zur Halbierung der Strombelastung des einzelnen Pins. Deshalb sind beide Pins anzuschließen. Verwendung Anschlussstecker B Dieser Stecker wird auch für die Spannungsversorgung benutzt. Spezifikation Anschlussstecker B Gegenstück 58 Typ AMP Junior Power Timer (male) Anzahl der Pole 22 Kompatibles Gegenstück des 22-poligen Steckers AMP Junior Power Timer ist der folgende: Hersteller AMP Hersteller-Artikel-Nr. Buchsengehäuse 929504-7 Hersteller-Artikel-Nr. Crimpkontakt (Buchse) 927771 (Bandware) 927779 (einzeln) Anschließbarer Adernquerschnitt 0,5 ... 1,0 mm (AWG 20 ... 16) 2 Jetter AG JVM-407 Montage und Installation des JVM-407 Verbindungskabel CANopen® Verdrahtung Die Abbildung zeigt die Verdrahtung des CAN-Kabels im Tragarm (Blick jeweils auf die Kabelseite): CAN_0_H muss mit CAN_0_L verdrillt sein. CAN_1_H muss mit CAN_1_L verdrillt sein. Es bedeutet: Pinbelegung A Anschlussstecker für das Bediengerät JVM-407 B Anschlussstecker für die Mittelkonsole Die Pinbelegung ist wie folgt: Pin (A) Jetter AG Funktion Pin (B) 1 IN_CAN_0_H 1 2 TERM_CAN_0 3 OUT_CAN_0_L 4 4 IN_CAN_1_L 6 5 OUT_CAN_1_H 6 IN_CAN_2_H 7 TERM_CAN_2 8 OUT_CAN_2_L 9 IN_CAN_0_L 2 10 OUT_CAN_0_H 3 11 IN_CAN_1_H 5 12 TERM_CAN_1 13 OUT_CAN_1_L 14 IN_CAN_2_L 59 4 Montage und Installation des JVM-407 Pin (A) Funktion 15 OUT_CAN_2_H 16 Abschirmung Pin (B) 9 10 CAN 1 wird am Anschlussstecker für JVM-407 terminiert (Brücke zwischen Pin 6 und 8). Spezifikation Anschlussstecker B Gegenstück 60 Typ AMP Junior Power Timer (male) Anzahl der Pole 10 Kompatibles Gegenstück des 10-poligen Steckers AMP Junior Power Timer ist der folgende: Hersteller AMP Hersteller-Artikel-Nr. Buchsengehäuse 929504-4 Hersteller-Artikel-Nr. Crimpkontakt (Buchse) 927771 (Bandware) 927779 (einzeln) Anschließbarer Adernquerschnitt 0,5 ... 1,0 mm (AWG 20 ... 16) 2 Jetter AG JVM-407 Montage und Installation des JVM-407 Verbindungskabel Video Verdrahtung Die Abbildung zeigt die Verdrahtung des Videokabels im Tragarm (Blick jeweils auf die Kabelseite): Es bedeutet: Pinbelegung A Anschlussstecker für das Bediengerät JVM-407 B Anschlussstecker für die Mittelkonsole Die Pinbelegung ist wie folgt: Pin (A) Hinweis zum Videosignal Funktion 1 Versorgungsspannung +12 V 2 2 Videosignal (+) 4 3 Abschirmung 1 4 Masse 3 5 Videosignal (-) 5 6 Masse 3 7 Videosignal (-) 5 8 Reserviert (nicht anschließen!) Beim im Tragarm verlegten Kabel sind an A Pin 6 und 7 standardmäßig verbunden, d.h. es wird kein differentielles Videosignal verwendet. Spezifikation Anschlussstecker B Typ Buchse M12 Anzahl der Pole 5 Gegenstück Kompatibles Gegenstück ist der 5-polige Steckertyp M12. Jetter AG Pin (B) 61 4 Montage und Installation des JVM-407 4.3 Montage des JVM-407 Einleitung Dieses Kapitel beschreibt die Montage des JVM-407. Inhalt Thema Seite Montage des Bediengeräts ........................................................................... 63 Montage des Tragarms ................................................................................. 66 62 Jetter AG JVM-407 Montage und Installation des JVM-407 Montage des Bediengeräts Einleitung Dieses Kapitel beschreibt, wie das Bediengerät JVM-407 montiert wird. Einbauort wählen Wählen Sie einen geeigneten Einbauort. Ein Einbauort ist geeignet, wenn er folgende Bedingungen erfüllt: Die Montagefläche muss aus einem der folgenden Materialien bestehen: Aluminiumblech verzinktes Stahlblech lackiertes Stahlblech Kunststoff Die Montagefläche muss eben sein. Die Montagefläche darf maximal 5 mm dick sein. Der Einbauort muss Luftzirkulation erlauben. Der Einbauort muss für den Servicefall zugänglich sein. Der Einbauort muss ausreichend groß sein. Ungeeignete Einbauorte meiden Meiden Sie ungeeignete Einbauorte. Folgende Einbauorte sind für die Montage des Bediengeräts ungeeignet: Ungeeigneter Einbauort Ergonomische Grundsätze beachten Grund Einbauort im Freien Das Bediengerät darf nicht Regen bzw. einem Wasserstrahl ausgesetzt sein. Deswegen darf das Bediengerät nicht mit einem Dampfstrahler oder ähnlichem gereinigt werden. Unbelüfteter Einbauort Das Bediengerät kann bei Wärmestau überhitzen. Einbauort in der Nähe hitzeempfindlicher Materialien Die Materialien können sich durch die Wärmeentwicklung des Bediengeräts verformen. Unebene Montagefläche mit Sicken und Erhebungen Die Montagefläche kann sich beim Festschrauben des Bediengeräts verformen. Die Befestigung ist instabil und unsicher. Beachten Sie ergonomische Grundsätze. Wählen Sie einen benutzerfreundlichen Einbauort: Die Bedienelemente müssen leicht erreichbar sein. Das Bediengerät muss leicht ablesbar sein. Vermeiden Sie ergonomisch ungünstige Einbauorte: Extreme Winkel, die das Ablesen des Bediengeräts erschweren Ungünstige Lichtverhältnisse mit Spiegelung und Blendwirkung Verdeckte Einbauorte, die dem Benutzer schwer zugänglich sind Jetter AG 63 4 Montage und Installation des JVM-407 Montage vorbereiten Stellen Sie eine rechteckige Öffnung her. Die Abbildung zeigt die Maße: Es bedeutet: Bediengerät montieren 1 Öffnung 2 Umriss der Frontplatte Die Abbildung zeigt die Montage: Es bedeutet: 1 64 Gewindebolzen am Gehäuse des JVM-407 Jetter AG JVM-407 Montage und Installation des JVM-407 2 Öffnung 3 Montageblech 5 Haltebügel für SD-Karte 6 4 x Flügelmutter Schritt Zugentlastung montieren Jetter AG Vorgehen 1 Stecken Sie das Bediengerät von vorne in die Öffnung. 2 Stecken Sie das Montageblech von hinten auf. Achten Sie auf die richtige Position: Loch über dem Summer. 3 Stecken Sie den Haltebügel für die SD-Karte auf den Gewindebolzen beim SD-Karteneinschub. 4 Schrauben Sie den Haltebügel mit einer Flügelmutter fest. 5 Schrauben Sie das Montageblech mit den restlichen drei Flügelmuttern fest. Montieren Sie Zugentlastungen für die Anschlusskabel. Achten Sie auf ausreichenden Abstand zu den Steckern. Die Stecker müssen sich im Servicefall ungehindert abziehen lassen. 65 4 Montage und Installation des JVM-407 Montage des Tragarms Einleitung Dieses Kapitel beschreibt, wie der Tragarm für das Bediengerät JVM-407 montiert wird. Einbauort wählen Wählen Sie einen geeigneten Einbauort. Ein Einbauort ist geeignet, wenn er folgende Bedingungen erfüllt: Die Montagefläche muss eben sein. Sie darf keine Sicken und Erhebungen Ergonomische Grundsätze beachten aufweisen. Die Montagefläche muss biegesteif sein, um Hebelkräften des Tragarms standhalten zu können. Unter der Montagefläche muss Freiraum für die Kabelführung vorhanden sein. Der Einbauort muss für das Eindrehen der Schrauben zugänglich sein. Beachten Sie ergonomische Grundsätze. Wählen Sie einen benutzerfreundlichen Einbauort: Die Bedienelemente müssen leicht erreichbar sein. Das Bediengerät muss leicht ablesbar sein. Vermeiden Sie ergonomisch ungünstige Einbauorte: Extreme Winkel, die das Ablesen des Bediengeräts erschweren Ungünstige Lichtverhältnisse mit Spiegelung und Blendwirkung Verdeckte Einbauorte, die dem Benutzer schwer zugänglich sind Montage vorbereiten Stellen Sie Bohrungen her. Die Abbildung zeigt die Maße: 35 35 5,5 Entgraten Sie die Bohrungen. 66 Jetter AG JVM-407 Montage und Installation des JVM-407 Es bedeutet: Tragarmfuß montieren 1 Bohrungen für die Schrauben und den Kabeldurchlass 2 Umriss des Tragarmfußes Die Abbildung zeigt die Montage: Es bedeutet: 1 4 x Schraube M 5 x 14 mm + Stärke der Montagefläche (Zulässig ist z. B. eine Schraube mit Inbus-Zylinderkopf DIN 912) 2 4 x Sicherungsscheibe 3 4 x Bohrung für Schraube 5 Tragarmfuß 6 Tragarm Schritt Jetter AG Vorgehen 1 Stellen Sie den Tragarmfuß auf die Montagefläche. 2 Schrauben Sie den Tragarmfuß von unten mit 4 Schrauben und 4 Sicherungsscheiben fest. 3 Führen Sie das Kabel durch den Tragarmfuß. 4 Stecken Sie den Tragarm auf den Tragarmfuß. Er muss einrasten. 5 Lösen Sie den Arretierhebel. 6 Stellen Sie die Neigung des Bediengeräts bedienerfreundlich ein. 7 Arretieren Sie die Einstellung durch Festziehen des Arretierhebels. 67 4 Montage und Installation des JVM-407 4.4 IP-Konfiguration Einleitung Dieses Kapitel beschreibt, wie die IP-Konfiguration des Bediengeräts JVM-407 durchgeführt wird. Dabei können folgende Parameter eingestellt werden: Voraussetzungen an den Projektierer IP-Adresse des Bediengeräts Subnetzmaske IP-Adresse des Default Gateway IP-Adresse des DNS-Servers Name des Bediengeräts IP-Portnummer für den Debugger von JetSym IP-Basisportnummer für die JetIP Kommunikation Voraussetzung für die IP-Konfiguration des Bediengeräts JVM-407 sind Kenntnisse über IP-Netzwerke wie zum Beispiel: IP-Adressierung (z. B. IP-Adresse, Portnummer, Subnetzmaske, usw.) FTP (Verbindungsaufbau, Dateiübertragung, usw.) Inhalt Thema Seite Auslieferungszustand .................................................................................... 69 Der Konfigurations-Speicher ......................................................................... 70 Konfigurations-Datei cfgvar.ini ...................................................................... 71 Konfigurations-Register ................................................................................ 75 IP-Adresse der Steuerung ändern ................................................................ 76 IP-Adresse über die Datei cfgvar.ini einstellen ............................................. 77 IP-Adresse zur Laufzeit einstellen ................................................................ 78 Namen für IP-Adressen verwenden .............................................................. 79 68 Jetter AG JVM-407 Montage und Installation des JVM-407 Auslieferungszustand Einleitung Vor der Auslieferung werden auf dem Bediengerät JVM-407 verschiedene Parameter auf einen bestimmten Wert eingestellt. Die Parameter können vom Anwender geändert werden. Auslieferungszustand Jetter AG Parameter Wert IP-Adresse der Steuerung 192.168.10.15 Subnetzmaske 255.255.255.0 IP-Adresse des Default Gateway 0.0.0.0 IP-Adresse des DNS-Servers 0.0.0.0 Name der Steuerung JVM-4xx IP-Portnummer für den Debugger 52000 IP-Portnummer für JetIP 50000 Admin-Passwort admin System-Passwort system 69 4 Montage und Installation des JVM-407 Der Konfigurations-Speicher Einleitung Die Parameter für die Initialisierung der IP-Schnittstelle, werden vom Bediengerät während der Bootphase aus dem Konfigurations-Speicher gelesen. Auf die Daten des Konfigurations-Speichers kann auf folgende Arten zugegriffen werden: Über eine Datei im Systemverzeichnis des Dateisystems können die Daten ausgelesen und geändert werden. Über Register können die Daten ausgelesen werden. Wirksamkeit Das Bediengerät liest die Daten im Konfigurations-Speicher nur während der Bootphase aus. Wenn Änderungen im Konfigurations-Speicher gemacht werden, so muss das Bediengerät anschließend neu gebootet werden, damit diese Änderungen wirksam werden. Standardwerte Bevor die Daten aus dem Konfigurations-Speicher verwendet werden, prüft das Bediengerät sie auf Plausibilität. Bei ungültigen oder nicht vorhandenen Einträgen, werden folgende Standardwerte verwendet: Parameter Standardwert IP-Adresse der Steuerung 192.168.10.15 Subnetzmaske 255.255.255.0 IP-Adresse des Default Gateway 0.0.0.0 IP-Adresse des DNS-Servers 0.0.0.0 Name der Steuerung JVM-4xx Suffixtyp des Namens 0 IP-Portnummer für den Debugger 52000 IP-Portnummer für JetIP 50000 Verwandte Topics Konfigurations-Datei cfgvar.ini auf Seite 71 Konfigurations-Register auf Seite 75 70 Jetter AG JVM-407 Montage und Installation des JVM-407 Konfigurations-Datei cfgvar.ini Einleitung Über die Konfigurations-Datei cfgvar.ini kann auf den Konfigurations-Speicher des JVM-407 zugegriffen werden. Eigenschaften Die Datei ist über das Dateisystem des Bediengeräts erreichbar. Bei einer FTP-Verbindung muss der User Administrator- oder System-Rechte haben. Die Datei befindet sich im Unterverzeichnis "/System". Die Datei kann nicht gelöscht, sondern nur überschrieben werden. Die Datei wird durch das Formatieren der Flash-Disk nicht beeinflusst. Aufbau der Datei Die Konfigurations-Datei ist eine Textdatei, deren Einträge in verschiedenen Sektionen gruppiert sind. Parameter der IP-Konfiguration, für welche kein Eintrag in der Datei vorhanden ist, werden mit den Standardwerten besetzt. Beispiel für cfgvar.ini Dies ist ein Beispiel für eine Konfigurations-Datei cfgvar.ini: ;JVM-407 System Configuration ;Copyright (c) 2009 by Jetter AG, Ludwigsburg, Germany [IP] Address SubnetMask DefGateway DNSServer = = = = 192.168. 50. 1 255.255.255. 0 192.168. 50. 11 192.168. 1. 44 [HOSTNAME] SuffixType = 0 Name = JVM-4xx [PORTS] JetIPBase = 50000 JVMDebug = 52000 Jetter AG 71 4 Montage und Installation des JVM-407 Sektion [IP] In der Sektion [IP] werden die benötigten IP-Adressen und die Subnetzmaske angegeben. Address im Beispiel 192.168.50.1 Funktion IP-Adresse des Bediengeräts gültige Werte nicht gültige Werte bei ungültigem Wert > 1.0.0.0 < 223.255.255.255 Netzwerkadresse Broadcast-Adresse alle 4 Werte werden vom Bediengerät auf ihre Default-Werte gesetzt SubnetMask im Beispiel 255.255.255.0 Funktion Legt die Subnetzmaske fest gültige Werte nicht gültige Werte bei ungültigem Wert >= 128.0.0.0 1 und 0 gemischt alle 4 Werte werden vom Bediengerät auf ihre Default-Werte gesetzt DefGateWay im Beispiel 192.168.50.11 Funktion IP-Adresse des Gateways in andere Subnetze; muss vom Bediengerät (Address/SubnetMask) erreichbar sein, sonst wird sie vom Bediengerät auf 0.0.0.0 gesetzt. gültige Werte > 1.0.0.0 und Wert von Address nicht gültige Werte bei ungültigem Wert < 223.255.255.255 Netzwerkadresse Broadcast-Adresse vom Bediengerät nicht erreichbar (Address/SubnetMask) wird von der Steuerung auf 0.0.0.0 gesetzt DNSServer 72 im Beispiel 192.168.1.44 Funktion IP-Adresse des Servers für das Domain Name System gültige Werte bei ungültigem Wert wird vom Bediengerät auf 0.0.0.0 gesetzt 1.0.0.0 223.255.255.255 Jetter AG JVM-407 Sektion [HOSTNAME] Montage und Installation des JVM-407 In der Sektion [HOSTNAME] wird der Name des Bediengeräts angegeben. Dabei kann vom Bediengerät ein individueller Name automatisch generiert werden. Dieser Hostname wird zurzeit nicht verwendet. SuffixType im Beispiel 0 Funktion Typ des automatisch generierten Anhangs an den Namen des Bediengeräts gültige Werte 0: kein Anhang 2: niederwertiges Byte der IP-Adresse in Hexadezimal-Darstellung bei ungültigem Wert 1: niederwertiges Byte der IP-Adresse in Dezimal-Darstellung 0 Name im Beispiel JVM-4xx Funktion legt den Namen des Bediengeräts fest gültige Werte bei ungültigem Wert Sektion [PORTS] erstes Zeichen: 'A' ... 'Z', 'a' ... 'z' nächste Zeichen: 'A' ... 'Z', 'a' ... 'z', '0' ... '9', '-' JVM-4xx In der Sektion [PORTS] werden die IP-Portnummern der Daten- und Debug-Server innerhalb des Bediengeräts angegeben. Diese müssen mit den z. B. in JetSym eingestellten Portnummern übereinstimmen. JetIPBase im Beispiel 50000 Funktion IP-Port für den Betriebssystem-Update und die Kommunikation mit dem PC gültige Werte bei ungültigem Wert 50000 1024 ... 65535 JVMDebug Jetter AG im Beispiel 52000 Funktion IP-Port für Debugger/Setup in JetSym gültige Werte bei ungültigem Wert 52000 1024 ... 65535 73 4 Montage und Installation des JVM-407 IP-Konfiguration ändern Schritt Vorgehen 1 Erstellen Sie mit einem Texteditor auf dem PC eine Konfigurations-Datei cfgvar.ini mit dem gewünschten Inhalt. 2 Öffnen Sie eine FTP-Verbindung vom PC zum JVM-407. 3 Melden Sie sich als User an, der über Administrator- oder System-Rechte verfügt. Standard: User: admin; Passwort: admin 4 Verzweigen Sie in das Unterverzeichnis "/System" des JVM-407. 5 Kopieren Sie die von Ihnen erstellte Konfigurations-Datei cfgvar.ini auf das JVM-407. 6 Schließen Sie die FTP-Verbindung. 7 Booten Sie das Gerät neu. Ergebnis: Die neue Konfiguration ist aktiv. Verwandte Topics Der Konfigurations-Speicher auf Seite 70 Konfigurations-Register auf Seite 75 74 Jetter AG JVM-407 Montage und Installation des JVM-407 Konfigurations-Register Einleitung Über die Konfigurations-Register können die Parameter der IP-Konfiguration gelesen werden. Ein Bereich von Registern enthält die Daten im Konfigurations-Speicher. Ein weiterer Bereich enthält die tatsächlich zur Initialisierung der IP-Schnittstelle verwendeten Parameter. Registernummern Die Basisregisternummern der beiden Bereiche sind geräteabhängig. Die Registernummer ergibt sich aus der Addition der Modulregister-Nummer (MR) zur Basisregisternummer. Bediengerät Datenbereich JVM-407 Konfigurations-Register Basisregisternummer Registernummern Konfigurations-Speicher 101100 101100 ... 101165 verwendete Parameter 101200 101200 ... 101265 Die nachfolgende Tabelle zeigt eine Übersicht über die Register der beiden Bereiche und ihren Zusammenhang zu den Einträgen in der Konfigurations-Datei '/System/cfgvar.ini': Register Sektion in config.ini MR 0 IP Name in config.ini Funktion Address IP-Adresse der Steuerung MR 1 SubnetMask Legt die Subnetzmaske fest MR 2 DefGateway IP-Adresse des Gateways in andere Subnetze MR 3 DNSServer IP-Adresse des Servers für das Domain Name System SuffixType Typ des automatisch generierten Anhangs an den Namen der Steuerung Name Legt den Namen der Steuerung fest JetIPBase IP-Port für den Betriebssystem-Update und die Kommunikation zwischen den Steuerungen JVMDebug IP-Port für Debugger/Setup in JetSym MR 32 HOSTNAME MR 33 bis MR 51 MR 64 MR 65 PORTS Verwandte Topics Der Konfigurations-Speicher auf Seite 70 Konfigurations-Datei cfgvar.ini auf Seite 71 Jetter AG 75 4 Montage und Installation des JVM-407 IP-Adresse der Steuerung ändern Einleitung Um mit dem Bediengerät JVM-407 über Ethernet zu kommunizieren, muss am Bediengerät eine eindeutige IP-Adresse eingestellt werden. KonfigurationsMöglichkeiten Die IP-Adresse kann auf folgende Arten konfiguriert werden: Default IP-Adresse Konfiguration über die Datei cfgvar.ini Konfiguration zur Laufzeit über Spezialregister Verwandte Themen IP-Adresse über die Datei cfgvar.ini einstellen auf Seite 77 IP-Adresse zur Laufzeit einstellen auf Seite 78 76 Jetter AG JVM-407 Montage und Installation des JVM-407 IP-Adresse über die Datei cfgvar.ini einstellen Die Datei cfgvar.ini Sie können die IP-Adresse des Bediengeräts JVM-407 über die Datei cfgvar.ini einstellen. [IP] Address ... = aaa.bbb.ccc.ddd Teil Hinweis Datei cfgvar.ini übertragen Jetter AG Funktion Address Zeile zum Eintragen der IP-Adresse aaa 1. Byte der IP-Adresse bbb 2. Byte der IP-Adresse ccc 3. Byte der IP-Adresse ddd 4. Byte der IP-Adresse Die Einstellung der IP-Adresse in der Datei cfgvar.ini wird nur übernommen, wenn die Daten im Konfigurations-Speicher nicht o.k. sind. Schritt Vorgehen 1 Stellen Sie eine FTP-Verbindung zum JVM-407 her. 2 Melden Sie sich als User an, der über Administrator- oder System-Rechte verfügt. Standard: User: admin; Passwort: admin (Default) 3 Öffnen Sie das Verzeichnis /System. 4 Kopieren Sie die Datei cfgvar.ini in das Verzeichnis /System. 5 Trennen Sie die FTP-Verbindung. 6 Starten Sie das JVM-407 neu. 77 4 Montage und Installation des JVM-407 IP-Adresse zur Laufzeit einstellen Einleitung Die Initialisierung der IP-Schnittstelle erfolgt während der Bootphase aus dem Konfigurations-Speicher. Folgende Einstellungen können auch während der Laufzeit des JVM-407 über Register geändert werden: IP-Adresse Subnetzmaske IP-Adresse des Default Gateway Die Einstellungen zur Laufzeit verändern nicht die Parameter im Konfigurations-Speicher, sondern gehen beim Ausschalten des JVM-407 wieder verloren. Voraussetzungen Nehmen Sie die Einstellungen nur vor, wenn keine Kommunikation über die IP-Schnittstelle aktiv ist, da es sonst zu Datenverlust kommen kann. Die Gültigkeit der geschriebenen Werte ist sichergestellt (z. B. durch ent- sprechende Programmierung im Anwenderprogramm), da beim Einstellen zur Laufzeit des JVM-407 keine Überprüfung durchgeführt wird. Registerübersicht IP-Adressen und die Subnetzmaske einstellen Register Beschreibung 104531 IP-Adresse des JVM-407 104532 Subnetzmaske 104533 IP-Adresse des Default Gateway Zur Änderung der IP-Adressen und der Subnetzmaske gehen Sie wie folgt vor: Schritt Vorgehen 1 Beschreiben Sie 104533 mit dem Wert 0.0.0.0 2 Beschreiben Sie 104532 mit dem Wert 0.0.0.0 3 Beschreiben Sie 104531 mit der gewünschten IP-Adresse des JVM-407 4 Beschreiben Sie 104532 mit der gewünschten Subnetzmaske 5 Beschreiben Sie 104533 mit der gewünschten IP-Adresse des Default Gateways Ergebnis: Die Einstellung ist durchgeführt und es kann wieder kommuniziert werden. Verwandte Topics Der Konfigurations-Speicher auf Seite 70 78 Jetter AG JVM-407 Montage und Installation des JVM-407 Namen für IP-Adressen verwenden Einleitung Bei der Angabe von IP-Adressen von Zielsystemen (z. B. bei der Konfiguration des E-Mail Clients) können auch Namen angegeben werden, die bei ihrer Verwendung von dem JVM-407 in IP-Adressen umgesetzt werden. Die Zuordnung zwischen Namen und ihren IP-Adressen erfolgt über eine Konfigurations-Datei oder das Domain Name System. Namensauflösung Die Auflösung der Namen zu IP-Adressen erfolgt nach folgendem Ablauf: Stufe Beschreibung 1 In der Bootphase liest das JVM-407 die IP-Adresse des DNS-Servers aus dem Konfigurations-Speicher. 2 In der Bootphase liest das JVM-407 die Datei '/etc/hosts' und legt eine Umsetzungstabelle mit den in der Datei gefundenen Namen und IP-Adressen an. 3 Nach der Bootphase erkennt das JVM-407 einen Namen anstelle einer IP-Adresse. 4 Das JVM-407 versucht aus der Umsetzungstabelle den Namen in eine zugehörige IP-Adresse aufzulösen. Wenn ... 5 der Namen aufgelöst werden konnte macht das JVM-407 weiter bei Stufe 6 der Namen nicht aufgelöst werden konnte macht das JVM-407 weiter bei Stufe 5 Das JVM-407 versucht über eine Anfrage beim DNS-Server den Namen in eine zugehörige IP-Adresse aufzulösen. Wenn ... 6 Konfigurations-Datei 'hosts' Jetter AG ... Dann ... ... Dann ... der Namen aufgelöst werden konnte trägt es den Namen und die IP-Adresse in die Umsetzungstabelle ein und macht weiter bei Stufe 6 der Namen nicht aufgelöst werden konnte bricht die Steuerung die Funktion (z. B. Systemfunktion zum Versenden einer E-Mail) mit einer Fehlermeldung ab Die gefundene IP-Adresse wird zur Kommunikation verwendet. In dieser Datei wird die statische Zuordnung zwischen Namen und IP-Adressen gemacht. Die Datei wird einmalig während der Bootphase des JVM-407 gelesen. Dateiformat: Text Pfad: /etc 79 4 Montage und Installation des JVM-407 Dateiname: hosts Beispiel: # Example hosts file for JC-9xx 192.168.33.209 jetter_mail 192.168.33.208 jetter_demo 192.168.1.1 JC940MC 192.168.1.2 JC940MC Domain Name System (DNS) Kann ein Name nicht über einen Eintrag in der Datei '/etc/hosts' aufgelöst werden, so wird versucht über eine Anfrage bei einem DNS-Server die entsprechende IP-Adresse zu ermitteln. Die IP-Adresse des DNS-Servers wird während der Bootphase des JVM-407 aus dem Konfigurations-Speicher gelesen. Verwandte Topics Der Konfigurations-Speicher auf Seite 70 80 Jetter AG JVM-407 5 Erstinbetriebnahme Erstinbetriebnahme Zweck des Kapitels Dieses Kapitel beschreibt die Erstinbetriebnahme des JVM-407 anhand der folgenden Schritte: In JetViewSoft die IOP-Dateien für das Gerät JVM-407 erstellen. Die IOP-Dateien auf das Gerät JVM-407 übertragen. In JetSym ein STX-Projekt anlegen und die Hardware konfigurieren. Einbinden der .iop.h-Datei in das STX-Projekt. Einbinden der ISO-Bibliothek in das STX-Projekt. Kompilierfähiges Programm erzeugen. Es ist dann soweit alles für die Erstellung eines Programms vorbereitet. Mindestanforderungen Die Anleitung zur Erstinbetriebnahme bezieht sich auf JetSym ab der Version 4.3 und JetViewSoft ab der Version 3.2. ISO-Funktionen Die ISO-Funktionen sind in der Norm ISO 11783-6 definiert. Inhalt Thema Seite Vorbereitungen zur Erstinbetriebnahme ....................................................... 82 Erstinbetriebnahme in JetViewSoft ............................................................... 83 Erstinbetriebnahme in JetSym ...................................................................... 86 Jetter AG 81 5 Erstinbetriebnahme Vorbereitungen zur Erstinbetriebnahme Ethernet-Verbindung zur Steuerung Das Bediengerät JVM-407 hat im Auslieferungszustand die IP-Adresse 192.168.10.15. Konfigurieren Sie die Ethernet-Schnittstelle Ihres PCs so, dass er mit dem JVM-407 über diese IP-Adresse kommunizieren kann. Voraussetzung für das Einschalten Das JVM-407 schaltet nur dann ein, wenn an Zündung (+) die Versorgungsspannung +U BATT anliegt. Verhalten nach dem Einschalten Wenn Sie beim Einschalten die Funktionstasten F1 und F3 gleichzeitig drücken, wird das Anwenderprogramm nicht gestartet. Darstellung bei Auslieferung Das Anwenderprogramm, das bei der Auslieferung nach dem Einschalten auf dem JVM-407 gestartet wird, stellt die folgende Eingabemaske auf dem Display des JVM-407 dar. NodeID: 30 IP-Adresse: 192.168.10.15 MAC-Adresse: 00-50-cb-00-af-30 OS-Version: 1.15.1.0 +10 F1 + F2 F3 -10 F4 Die dargestellte Node-ID ist die im JVM-407 eingestellte Adresse des Busses CANopen® 0. Diese Adresse kann über die Funktionstasten F1 bis F4 eingestellt werden. Über die Funktionstaste F1 wird die Adresse in Zehnerschritten erhöht. Über die Funktionstaste F4 wird die Adresse in Zehnerschritten verringert. Über die Funktionstaste F2 wird die Adresse in Einerschritten erhöht. Über die Funktionstaste F3 wird die Adresse in Einerschritten verringert. Außerdem wird noch die IP-Adresse, MAC-Adresse und OS-Version dargestellt. 82 Jetter AG JVM-407 Erstinbetriebnahme Erstinbetriebnahme in JetViewSoft Einleitung Mit JetViewSoft werden die IOP-Dateien für das Bediengerät JVM-407 erstellt und auf das Gerät übertragen. An dieser Stelle wird folgendes beschrieben: Ein Projekt in JetViewSoft anlegen Die Projekteinstellungen tätigen Eine IOP-Datei erstellen und auf das Bediengerät übertragen Die erstellte Visualisierung wird mit JetSym STX programmiert. Voraussetzungen Folgende Voraussetzungen müssen gegeben sein: JetViewSoft ist auf dem verwendeten PC installiert JetViewSoft wurde lizenziert (siehe Online-Hilfe in JetView Soft) Eine aktive Ethernet-Verbindung zwischen dem PC und dem Bediengerät ist eingerichtet Projekt anlegen So legen Sie in JetViewSoft ein neues Projekt für das Bediengerät an: Schritt Vorgehen 1 Starten Sie JetViewSoft 2 Öffnen Sie das Menü File und wählen Sie den Menüpunkt New aus. Ergebnis: Es öffnet sich der folgende Dialog: Jetter AG 3 Geben Sie bei Project name den Namen des Projekts ein. 4 Passen Sie wenn nötig bei Location den Pfad des Projekts an. 5 Wählen Sie bei Target platform JetView ER-STX(S) aus. 6 Wählen Sie bei Display template das passende für das Bediengerät aus. 7 Wählen Sie bei Display name einen programminternen Namen für das Bediengerät aus. In einem Projekt können mehrere Displays angelegt werden. 83 5 Erstinbetriebnahme Schritt Vorgehen 8 Bestätigen Sie die Einstellungen mit OK. Ergebnis: Der Dialog schließt sich und es öffnet sich der Dialog Add New Mask. 9 Geben Sie bei Name den Namen der ersten DataMask an. Die anderen Einstellungen können Sie beibehalten. Diese Maske wird automatisch beim Start des Bediengeräts die aktive Maske. 10 Bestätigen Sie mit OK. Ergebnis: Nun ist ein Projekt angelegt. Deployment konfigurieren Um die mit JetViewSoft erstellten IOP-Dateien auf das Bediengerät übertragen zu können, müssen noch die nötigen Deployment-Einstellungen getroffen werden: Schritt Vorgehen 1 Öffnen Sie das Menü Project und wählen Sie den Menüpunkt Properties aus. Ergebnis: Es öffnet sich der gleichnamige Dialog. 2 Öffnen Sie das Fenster Deployment über die Navigation auf der linken Seite des Dialogs. 3 Wählen Sie bei Deployment Target (ganz oben im Dialog) FTP aus. 4 Klappen Sie die Target-Einstellungen über das +-Zeichen daneben auf. 5 Geben Sie bei Host Name/IP die IP-Adresse des Bediengeräts ein. Default-IP-Adresse eines JVM-407 ist 192.168.10.15. 6 Bestätigen Sie die Einstellungen mit OK. Ergebnis: Nun sind die Deployment-Einstellungen getroffen und die IOP-Dateien können auf das Bediengerät übertragen werden. 84 Jetter AG JVM-407 IOP-Dateien Erstinbetriebnahme Die IOP-Dateien werden folgendermaßen von einem JetViewSoft-Projekt erzeugt und übertragen: Schritt Vorgehen 1 Öffnen Sie das Menü File und wählen Sie den Menüpunkt Save all aus. 2 Drücken Sie die Taste F7 für einen Projekt-Build. Ergebnis: Die IOP-Dateien werden erstellt sofern kein Fehler auftritt. 3 Öffnen Sie das Menü Build und wählen Sie den Menüpunkt Deploy aus. Ergebnis: Die IOP-Dateien werden auf das Bediengerät übertragen sofern kein Fehler auftritt. 4 Starten Sie das Bediengerät neu damit die IOP-Dateien eingelesen werden Ergebnis: Nun werden die IOP-Dateien auf dem Gerät angezeigt. Jetter AG 85 5 Erstinbetriebnahme Erstinbetriebnahme in JetSym Einleitung Mit JetSym wird das STX-Programm für die Visualisierung des Bediengeräts JVM-407 erstellt. An dieser Stelle wird folgendes beschrieben: Voraussetzungen Projekt in JetSym anlegen Hardware konfigurieren Einbinden der .iop.h-Datei von JetViewSoft ISO-Bibliothek einbinden Kompilierfähiges Programm erstellen und auf Bediengerät übertragen Folgende Voraussetzungen müssen gegeben sein: JetSym ist auf dem verwendeten PC installiert. JetSym wurde lizenziert (siehe Online-Hilfe in JetSym). Eine aktive Ethernet-Verbindung zwischen dem PC und dem Bediengerät ist eingerichtet. Die Erstinbetriebnahme in JetViewSoft wurde durchgeführt. Projekt anlegen So legen Sie in JetSym ein neues Projekt für die Programmierung an: Schritt Vorgehen 1 Starten Sie JetSym. 2 Öffnen Sie das Menü Datei und wählen Sie den Menüpunkt Neu aus. Ergebnis: Es öffnet sich der Dialog Neu 3 Wählen Sie als Projekttyp JetSym STX Projekt aus. 4 Geben Sie den Projektnamen ein. 5 Bestätigen Sie die Einstellungen mit OK. Ergebnis: Nun ist ein Projekt angelegt. 86 Jetter AG JVM-407 Hardware konfigurieren Erstinbetriebnahme Um eine Verbindung zwischen JetSym und dem Bediengerät aufzubauen müssen Sie die Hardware folgendermaßen konfigurieren: Schritt Vorgehen 1 Wechseln Sie in die Ansicht Hardware über den gleichnamigen Reiter. 2 Klappen Sie den Hardware-Baum komplett auf. 3 Doppelklicken Sie auf CPU, wenn als Hardware nicht das Bediengerät JVM-407 eingestellt ist. Ergebnis: Es öffnet sich das Fenster Konfiguration. 4 Wählen Sie bei Steuerung/Typ JVM-407 aus. 5 Geben Sie bei Schnittstelle/IP-Adresse die IP-Adresse des Bediengeräts ein. Defaul-IP-Adresse eines JVM-407 ist 192.168.10.15. 6 Führen Sie über den Button Test einen Verbindungstest durch. Falls dieser nicht erfolgreich ist, überprüfen Sie die IP-Adresse und die Ethernet-Verbindung zu dem JVM-407. 7 Speichern Sie die Einstellungen mit der Tastenkombination Strg+S ab. Ergebnis: Nun sind die Hardware-Einstellungen in JetSym konfiguriert. Jetter AG 87 5 Erstinbetriebnahme Header-Datei .iop.h Damit die Bezeichnung der ISO-Objekte und Masken der Visualisierung bei der Programmierung zur Verfügung stehen, muss noch die .iop.h-Datei folgendermaßen eingebunden werden: Schritt Vorgehen 1 Wechseln Sie in die Ansicht Dateien. 2 Klappen Sie den Ordner Programm auf. 3 Markieren Sie den Ordner Include und öffnen Sie das Kontextmenü (rechte Maustaste). 4 Wählen Sie im Kontextmenü den Eintrag Dateien dem Verzeichnis hinzufügen aus. Ergebnis: Es öffnet sich ein Explorer-Fenster zur Auswahl einer Datei. 5 Navigieren Sie zu dem Output-Ordner des JetViewSoft-Projekts. Standardmäßig ist dieser unter Eigene Dateien/JetViewSoft Projects/Name des JVS-Projekts/Output zu finden. 6 Wählen Sie bei Dateityp Alle Dateien (*.*) aus. 7 Wählen Sie die .iop.h-Datei aus. 8 Betätigen Sie den Button Öffnen. Ergebnis: Nun wird die .iop.h-Datei in das JetSym-Projekt eingebunden. 88 Jetter AG JVM-407 ISO-Bibliothek einbinden Erstinbetriebnahme Damit die ISO-Bibliothek mit den ISO-Funktionen in JetSym zur Verfügung steht, muss diese noch folgendermaßen eingebunden werden: Schritt 1 Vorgehen Öffnen Sie das Menü Extras und wählen Sie den Menüpunkt Bibliotheksmanager aus. Ergebnis: Es öffnet sich der gleichnamige Dialog. 2 Betätigen Sie den Button Hinzufügen. Ergebnis: Es öffnet sich ein Explorer-Fenster im Ordner Lib der JetSym-Installation. 3 Wählen Sie das ISO_Library_1.0.0.0.libpackage aus. 4 Betätigen Sie den Button Öffnen. Ergebnis: Die Libpackage-Datei wird in den Bibliotheksmanager eingebunden und kann nun ins JetSym-Projekt eingebunden werden. Jetter AG 5 Wechseln Sie in die Dateien-Ansicht. 6 Wählen Sie den Ordner Bibliothek aus und öffnen Sie das Kontextmenü mit der rechten Maustaste. 7 Wählen Sie den Menüpunkt Bibliotheken hinzufügen aus. Ergebnis: Es öffnet sich der Bibliotheksmanager. 89 5 Erstinbetriebnahme Schritt 8 Vorgehen Markieren Sie die Libpackage-Datei und betätigen Sie den Button Verwenden. Ergebnis: Nun ist die Datei ins Projekt eingebunden. 90 Jetter AG JVM-407 Kompilierfähiges Programm erstellen Erstinbetriebnahme Ein kompilierfähiges Programm wird folgendermaßen erstellt und compiliert: Schritt Vorgehen 1 Wechseln Sie in die Dateien-Ansicht. 2 Doppelklicken Sie auf die Programmdatei (hier JS_Sample_Project_JVM407_Manual.stxp). Die Programmdatei hat den gleichen Namen wie das Projekt plus die Endung stxp. Ergebnis: Es öffnet sich die Programmdatei im JetSym-Editor. 3 Geben Sie folgenden Programmcode ein. Die .iop.h-Datei hat den gleichen Namen wie das Projekt plus die Endung iop.h. Bei der Include-Anweisung ist dies zu beachten. #Include "JVS_Sample_Project_JVM407_Manual.iop.h"; Task Main Autorun End_Task; 4 Betätigen Sie die Taste F7 für einen Build-Vorgang des Projekts. Ergebnis: Die ISO-Funktionen und die IOP-Header-Datei stehen nun bei der Programmierung zur Verfügung. Ergebnis: Das Programm kann nun erweitert werden. Im IntelliSense (Strg- + Space-Taste) stehen die ISO-Funktionen und die Informationen aus der IOP-Header-Datei nun zur Verfügung. Das Programm kann durch die Tastenkombination Strg+F5 auf das Bediengerät übertragen werden. Es hat aber momentan noch keine Funktion. Verwandte Themen: Erstinbetriebnahme in JetViewSoft auf Seite 83 Jetter AG 91 JVM-407 6 CANopen®-STX-API CANopen®-STX-API Einleitung Dieses Kapitel beschreibt die STX-Funktionen der CANopen®-STX-API. Der CANopen®-Standard CANopen® ist ein offener Standard für die Vernetzung und Kommunikation z. B. im Kraftfahrzeugbereich. Das CANopen®-Protokoll wird von der CiA e.V. (CAN in Automation) weiterentwickelt und arbeitet auf dem Physical Layer mit CAN-Highspeed nach ISO 11898. Anwendung Diese STX-Funktionen werden in der Kommunikation zwischen der Steuerung JVM-407 und z. B. den Peripheriemodulen JXM-IO-E02, JXM-IO-E09, JXM-IO-E10, JXM-IO-E11 und JXM-MUX angewendet. Dokumente Die CANopen®-Spezifikationen können von der Homepage des CiA e.V. http://www.can-cia.org bezogen werden. Die wichtigsten Spezifikationsdokumente sind dabei: CiA DS 301 - Dieses Dokument ist auch als Kommunikationsprofil bekannt und beschreibt die grundlegenden Dienste und Protokolle, die unter CANopen® verwendet werden. CiA DS 302 - Framework für programmierbare Geräte (CANopen®-Manager, SDO-Manager) CiA DR 303 - Informationen zu Kabeln und Steckverbindern CiA DS 4xx - Diese Dokumente beschreiben das Verhalten vieler Geräteklassen über sogenannte Geräteprofile. Inhalt Thema Seite STX-Funktion CanOpenInit .......................................................................... 94 STX-Funktion CanOpenSetCommand ......................................................... 96 STX-Funktion CanOpenUploadSDO ............................................................ 98 STX-Funktion CanOpenDownloadSDO ..................................................... 103 STX-Funktion CanOpenAddPDORx........................................................... 108 STX-Funktion CanOpenAddPDOTx ............................................................ 114 CANopen®-Objektverzeichnis des JVM-407 ............................................. 120 Jetter AG 93 6 CANopen®-STX-API STX-Funktion CanOpenInit Einleitung Mit dem Aufruf der Funktion CanOpenInit () wird einer der vorhandenen CAN-Busse initialisiert. Die JVM-407 sendet dann automatisch jede Sekunde die Heartbeat-Nachricht mit dem folgenden Kommunikationsobjekt-Identifier (COB-ID): Node-ID + 0x700 Funktionsdeklaration Function CanOpenInit ( CANNo:Int, NodeID:Int, const ref SWVersion:String, ) :Int; Funktionsparameter Die Funktion CanOpenInit () hat die folgenden Parameter. Parameter Rückgabewert Beschreibung Wert CANNo CAN-Kanalnummer 0 ... CANMAX NodeID Eigene Node-ID 1 ... 127 SWVersion Referenz auf die eigene SoftString bis zu 255 Zeichen wareversion Diese Softwareversion wird unter dem Index 0x100A in das Objekt-Verzeichnis eingetragen. Die Funktion übergibt die folgenden Rückgabewerte an das übergeordnete Programm. Rückgabewert Parameter CANNo 94 0 ok -1 Fehler bei der Parameterüberprüfung -3 Die Initialisierung hat nicht funktioniert Der Wert des Parameters CANMAX ist geräteabhängig. Die folgende Tabelle gibt Auskunft darüber. Gerät CANMAX JVM-407 2 BTM 07 2 BTM 012 1-2 BTM 011 0 JCM-350 4 JCM-620 2 Jetter AG JVM-407 Verwenden der Funktion CANopen®-STX-API Initialisieren des CAN-Busses 0. Die JVM-407 hat die Node-ID 20 (0x14). Result := CanOpenInit(0, 20, 'Version: 01.00.0.00'); Funktionsweise Während der Initialisierung durchläuft die JVM-407 folgende Prozessstufen: Stufe Beschreibung 1 Zuerst wird die Bootup-Meldung als Heartbeat-Nachricht gesendet. 2 Sobald die JVM-407 in den Zustand Pre-Operational geht, sendet es die Heartbeat-Nachricht Pre-Operational. Zugriff auf das Objekt-Verzeichnis Auf das Objekt-Verzeichnis kann erst über SDO zugegriffen werden, wenn die JVM-407 im Zustand "Pre-Operational" ist. NMT-Nachrichten Nach der Initialisierung können NMT-Nachrichten gesendet und empfangen werden. Der eigene Heartbeat-Zustand kann mit der Funktion "CanOpenSetCommand" geändert werden. Verwandte Themen: STX-Funktion CanOpenSetCommand auf Seite 96 Jetter AG 95 6 CANopen®-STX-API STX-Funktion CanOpenSetCommand Einleitung Mit dem Aufruf der Funktion CanOpenSetCommand () kann der eigene Heartbeat-Zustand und der Heartbeat-Zustand aller anderen Geräte (NMT-Slaves) am CAN-Bus geändert werden. Funktionsdeklaration Function CanOpenSetCommand ( CANNo:Int, iType:Int, Value:Int, ) :Int; Funktionsparameter Die Funktion CanOpenSetCommand () hat die folgenden Parameter. Parameter Beschreibung Wert CANNo CAN-Kanalnummer 0 ... CANMAX iType Auswahl des Kommandos CAN_CMD_HEARTBEAT: Nur der eigene Heartbeat-Zustand wird geändert. CAN_CMD_NMT: Bei allen Geräten oder bei einem speziellen Gerät am CAN-Bus wird der Heartbeat-Zustand geändert. Value Auswahl des Heartbeat-Zustandes bei Kommando CAN_CMD_HEARTBEAT: CAN_HEARTBEAT_STOPPED (0x04) CAN_HEARTBEAT_OPERATIONAL (0x05) CAN_HEARTBEAT_PREOPERATIONAL (0x7F) Auswahl des Heartbeat-Zustandes bei Kommando CAN_CMD_NMT (NMT-Master): CAN_NMT_OPERATIONAL (0x01) oder CAN_NMT_START (0x01) CAN_NMT_STOP (0x02) CAN_NMT_PREOPERATIONAL (0x80) CAN_NMT_RESET (0x81) CAN_NMT_RESETCOMMUNICATION (0x82) Hinweis 96 Die Auswahl des Kommandos CAN_CMD_NMT erfolgt über die Makrofunktion CAN_CMD_NMT_Value (NodeID, CAN_CMD_NMT). Für den Parameter Node-ID sind Werte von 0 bis 127 zulässig. 1 bis 127 ist die Node-ID für ein bestimmtes Gerät. Soll das Kommando an alle Geräte am CAN-Bus gesendet werden, wird der Parameter CAN_CMD_NMT_ALLNODES (0) verwendet. Jetter AG JVM-407 Parameter CANNo Rückgabewert CANopen®-STX-API Der Wert des Parameters CANMAX ist geräteabhängig. Die folgende Tabelle gibt Auskunft darüber. Gerät CANMAX JVM-407 2 BTM 07 2 BTM 012 1-2 BTM 011 0 JCM-350 4 JCM-620 2 Die Funktion übergibt die folgenden Rückgabewerte an das übergeordnete Programm. Rückgabewert Verwenden der Funktion (Beispiel 1) 0 ok -1 Fehler bei der Parameterüberprüfung Kommando nicht bekannt Der eigene Heartbeat-Zustand soll auf "Operational" gesetzt werden. Result := CanOpenSetCommand(0, CAN_CMD_HEARTBEAT, CAN_HEARTBEAT_OPERATIONAL); Verwenden der Funktion (Beispiel 2) Der eigene Heartbeat-Zustand und der Zustand von allen anderen Geräten am CAN-Bus soll auf "Operational" gesetzt werden. Result := CanOpenSetCommand(0, CAN_CMD_NMT_Value(CAN_CMD_NMT_ALLNODES, CAN_CMD_NMT), CAN_NMT_OPERATIONAL); Verwenden der Funktion (Beispiel 3) Der Heartbeat-Zustand von dem Gerät mit der Node-ID 60 (0x3C) soll auf "Operational" gesetzt werden. Result := CanOpenSetCommand(0, CAN_CMD_NMT_Value(60, CAN_CMD_NMT), CAN_NMT_OPERATIONAL); Jetter AG 97 6 CANopen®-STX-API STX-Funktion CanOpenUploadSDO Einleitung Mit dem Aufruf der Funktion CanOpenUploadSDO () wird gezielt auf ein bestimmtes Objekt im Objekt-Verzeichnis des Nachrichtenempfängers zugegriffen und der Wert des Objekts ausgelesen. Der Datenaustausch erfolgt entsprechend dem SDO-Upload-Protokoll. Als Transfertyp wird "segmented" (mehr als 4 Datenbytes) und "expedited" (bis 4 Datenbytes) unterstützt. Funktionsdeklaration Function CanOpenUploadSDO ( CANNo:Int, NodeID:Int, wIndex:Word, SubIndex:Byte, DataType:Int, DataLength:Int, const ref DataAddr, ref Busy: Int, ) :Int; Funktionsparameter Die Funktion CanOpenUploadSDO () hat die folgenden Parameter. Parameter Rückgabewert Beschreibung Wert CANNo CAN-Kanalnummer 0 ... CANMAX NodeID Node-ID des Nachrichtenempfängers 1 ... 127 wIndex Index-Nummer des Objekts 0 ... 0xFFFF SubIndex Subindex-Nummer des Objekts 0 ... 255 DataType Typ des zu empfangenden Objekts 2 ... 27 DataLength Datengröße der globalen Variablen DataAddr DataAddr Globale Variable, in die der empfangene Wert eingetragen werden soll Busy Zustand der SDO-Übertragung Die Funktion übergibt die folgenden Rückgabewerte an das übergeordnete Programm. Rückgabewert 98 0 ok -1 Fehler bei der Parameterüberprüfung -2 Steuerung im Stopp-Zustand -3 DataType ist größer als DataLength -4 nicht genug Speicher vorhanden Jetter AG JVM-407 Parameter CANNo Parameter DataType CANopen®-STX-API Der Wert des Parameters CANMAX ist geräteabhängig. Die folgende Tabelle gibt Auskunft darüber. Jetter AG CANMAX JVM-407 2 BTM 07 2 BTM 012 1-2 BTM 011 0 JCM-350 4 JCM-620 2 Folgende Datentypen können empfangen werden. Byte-Typen Busy Gerät CANopen®-Format Jetter-Format 1 CANOPEN_INTEGER8 CANOPEN_UNSIGNED8 Byte 2 CANOPEN_INTEGER16 CANOPEN_UNSIGNED16 Word 3 CANOPEN_INTEGER24 CANOPEN_UNSIGNED24 - 4 CANOPEN_INTEGER32 CANOPEN_UNSIGNED32 CANOPEN_REAL Int 5 CANOPEN_INTEGER40 CANOPEN_UNSIGNED40 - 6 CANOPEN_INTEGER48 CANOPEN_UNSIGNED48 CANOPEN_TIME_OF_DAY CANOPEN_TIME_DIFFERENCE - 7 CANOPEN_INTEGER56 CANOPEN_UNSIGNED46 - 8 CANOPEN_INTEGER64 CANOPEN_UNSIGNED64 CANOPEN_REAL64 - n CANOPEN_VISIBLE_STRING CANOPEN_OCTET_STRING CANOPEN_UNICODE_STRING CANOPEN_DOMAIN String Nach Aufruf der Funktion wird der Parameter Busy auf SDOACCESS_INUSE gesetzt. Bei fehlerhafter Übertragung wird Busy auf SDOACCESS_ERROR gesetzt. Bei erfolgreicher Übertragung erhält man die Anzahl der übertragenen Bytes zurück. 99 6 CANopen®-STX-API Busy-Fehlercodes Bei fehlerhafter Übertragung liefert Busy einen Fehlercode zurück. Die folgenden Fehlercodes gibt es: SDOACCESS_STILLUSED Ein anderer Task kommuniziert mit derselben Node-ID. SDOACCESS_TIMEOUT Es ist ein Timeout erfolgt, weil das Gerät mit der angegebenen Node-ID keine Antwort gibt. Antwortet das Gerät nicht innerhalb 1 Sekunde wird der Timeout gesetzt. SDOACCESS_ILLCMD Die Antwort auf die Anfrage ist ungültig. SDOACCESS_ABORT Ein Abbruch des Geräts mit der Node-ID ist erfolgt. SDOACCESS_SYSERROR Allgemeiner interner Fehler Makrodefinitionen Folgende Makros wurden im Zusammenhang mit dieser Funktion definiert: SDOACCESS_FINISHED (busy) Dieses Makro prüft, ob die Kommunikation beendet wurde. SDOACCESS_ERROR (busy) Dieses Makro prüft, ob ein Fehler aufgetreten ist. Verwenden der Funktion 100 Result := CanOpenUploadSDO ( 0, 66, 0x100A, 0, CANOPEN_STRING, sizeof(var_Versionstring), var_Versionstring, busy); Jetter AG JVM-407 JetSym STX-Programm CANopen®-STX-API Im folgenden Beispiel wird die Hersteller-Softwareversion aus dem CANopen®-Objekt-Verzeichnis des Geräts mit der adressierten Node-ID ausgelesen. #Include "CanOpen.stxp" Const // CAN-No. CAN_CONTROLLER_0 = 0; // Node-ID Node_1 NodeID_Node_0 = 10; // Node-ID Node 2 NodeID_Node_1 = 66; End_Const; Var busy: Int; Versionstring: String; Objektindex: Word; Subindex: Byte; End_Var; Task main autorun Var SW_Version: String; End_Var; SW_Version := 'v4.3.0.2004'; // Initialisierung CAN 0 CanOpenInit(CAN_CONTROLLER_0, NodeID_Node_0, SW_Version); // Alle Geräte am CAN-Bus sind im Status PREOPERATIONAL // Hersteller-Softwareversion per SDO anfordern Objektindex := 0x100A; Subindex := 0; CanOpenUploadSDO(CAN_CONTROLLER_0, NodeID_Node_1, Objektindex, Subindex, CANOPEN_STRING, sizeof(Versionstring), Versionstring, busy); When SDOACCESS_FINISHED(busy) Continue; If (SDOACCESS_ERROR(busy)) Then // Fehlerbehandlung End_If; // Jetter AG ... 101 6 CANopen®-STX-API // // ... ... End_Task; 102 Jetter AG JVM-407 CANopen®-STX-API STX-Funktion CanOpenDownloadSDO Einleitung Mit dem Aufruf der Funktion CanOpenDownloadSDO () wird gezielt auf ein bestimmtes Objekt im Objekt-Verzeichnis des Nachrichtenempfängers zugegriffen und der Wert des Objekts beschrieben. Der Datenaustausch erfolgt entsprechend dem SDO-Download-Protokoll. Als Transfertyp wird "segmented" bzw. "block" (mehr als 4 Datenbytes) und "expedited" (bis 4 Datenbytes) unterstützt. Funktionsdeklaration Function CanOpenDownloadSDO ( CANNo:Int, NodeID:Int, wIndex:Word, SubIndex:Byte, DataType:Int, DataLength:Int, const ref DataAddr, ref Busy: Int, ) :Int; Funktionsparameter Die Funktion CanOpenDownloadSDO () hat die folgenden Parameter. Parameter Rückgabewert Beschreibung Wert CANNo CAN-Kanalnummer 0 ... CANMAX NodeID Node-ID des Nachrichtenempfängers 1 ... 127 wIndex Index-Nummer des Objekts 0 ... 0xFFFF SubIndex Subindex-Nummer des Objekts 0 ... 255 DataType Typ des zu sendenden Objekts 2 ... 27 DataLength Datengröße der globalen Variablen DataAddr DataAddr Globale Variable, in die der zu sendende Wert eingetragen werden soll Busy Zustand der SDO-Übertragung Die Funktion übergibt die folgenden Rückgabewerte an das übergeordnete Programm. Rückgabewert Jetter AG 0 ok -1 Fehler bei der Parameterüberprüfung -2 Bediengerät im Stopp-Zustand (eigener Heartbeat-Zustand) -3 DataType ist größer als DataLength -4 nicht genug Speicher vorhanden 103 6 CANopen®-STX-API Parameter CANNo Parameter DataType Der Wert des Parameters CANMAX ist geräteabhängig. Die folgende Tabelle gibt Auskunft darüber. 104 CANMAX JVM-407 2 BTM 07 2 BTM 012 1-2 BTM 011 0 JCM-350 4 JCM-620 2 Folgende Datentypen können empfangen werden. Byte-Typen Busy Gerät CANopen®-Format Jetter-Format 1 CANOPEN_INTEGER8 CANOPEN_UNSIGNED8 Byte 2 CANOPEN_INTEGER16 CANOPEN_UNSIGNED16 Word 3 CANOPEN_INTEGER24 CANOPEN_UNSIGNED24 - 4 CANOPEN_INTEGER32 CANOPEN_UNSIGNED32 CANOPEN_REAL Int 5 CANOPEN_INTEGER40 CANOPEN_UNSIGNED40 - 6 CANOPEN_INTEGER48 CANOPEN_UNSIGNED48 CANOPEN_TIME_OF_DAY CANOPEN_TIME_DIFFERENCE - 7 CANOPEN_INTEGER56 CANOPEN_UNSIGNED46 - 8 CANOPEN_INTEGER64 CANOPEN_UNSIGNED64 CANOPEN_REAL64 - n CANOPEN_VISIBLE_STRING CANOPEN_OCTET_STRING CANOPEN_UNICODE_STRING CANOPEN_DOMAIN String Nach Aufruf der Funktion wird der Parameter Busy auf SDOACCESS_INUSE gesetzt. Bei fehlerhafter Übertragung wird Busy auf SDOACCESS_ERROR gesetzt. Bei erfolgreicher Übertragung erhält man die Anzahl der übertragenen Bytes zurück. Jetter AG JVM-407 Busy-Fehlercodes CANopen®-STX-API Bei fehlerhafter Übertragung liefert Busy einen Fehlercode zurück. Die folgenden Fehlercodes gibt es: SDOACCESS_STILLUSED Ein anderer Task kommuniziert mit derselben Node-ID. SDOACCESS_TIMEOUT Es ist ein Timeout erfolgt, weil das Gerät mit der Node-ID keine Antwort gibt. Antwortet die angegebene Node-ID nicht innerhalb 1 Sekunde wird der Timeout gesetzt. SDOACCESS_ILLCMD Die Antwort auf die Anfrage ist ungültig. SDOACCESS_ABORT Ein Abbruch des Geräts mit der Node-ID ist erfolgt. SDOACCESS_BLKSIZEINV Kommunikationsfehler bei Block Download SDOACCESS_SYSERROR Allgemeiner interner Fehler Makrodefinitionen Folgende Makros wurden im Zusammenhang mit dieser Funktion definiert: SDOACCESS_FINISHED (busy) Dieses Makro prüft, ob die Kommunikation beendet wurde. SDOACCESS_ERROR (busy) Dieses Makro prüft, ob ein Fehler aufgetreten ist. Verwenden der Funktion Jetter AG Result := CanOpenDownloadSDO ( 0, 68, 0x1017, 0, CANOPEN_WORD, sizeof(var_Heartbeat_time), var_Heartbeat_time, busy); 105 6 CANopen®-STX-API JetSym STX-Programm Im folgenden Beispiel wird die Heartbeat-Zeit in das CANopen®-Objekt-Verzeichnis des Geräts mit der adressierten Node-ID eingetragen. #Include "CanOpen.stxp" Const // CAN-No. CAN_CONTROLLER_0 = 0; // Node-ID Node_1 NodeID_Node_0 = 10; // Node-ID Node 2 NodeID_Node_1 = 68; End_Const; Var busy: Int; Heartbeat_time: Int; Objektindex: Word; Subindex: Byte; End_Var; Task main autorun Var SW_Version: String; End_Var; SW_Version := 'v4.3.0.2004'; // Initialisierung CAN 0 CanOpenInit(CAN_CONTROLLER_0, NodeID_Node_0, SW_Version); // Gerät mit der Node-ID NodeID_Node_1 am CAN-Bus in den Status PREOPERATIONAL setzen CanOpenSetCommand(0, CAN_CMD_NMT_Value(NodeID_Node_1, CAN_CMD_NMT), CAN_NMT_PREOPERATIONAL); // Heartbeat-Zeit des adressierten Geräts per SDO ändern Objektindex := 0x1017; Subindex := 0; CanOpenDownloadSDO(CAN_CONTROLLER_0, NodeID_Node_1, Objektindex, Subindex, CANOPEN_WORD, sizeof(Heartbeat_time), Heartbeat_time, busy); When SDOACCESS_FINISHED(busy) Continue; If (SDOACCESS_ERROR(busy)) Then // Fehlerbehandlung 106 Jetter AG JVM-407 CANopen®-STX-API End_If; // Alle Geräte am CAN-Bus wieder in den Status OPERATIONAL setzen CanOpenSetCommand(CAN_CONTROLLER_0, CAN_CMD_NMT_Value(CAN_CMD_NMT_ALLNODES, CAN_CMD_NMT), CAN_NMT_OPERATIONAL); // // // ... ... ... End_Task; Jetter AG 107 6 CANopen®-STX-API STX-Funktion CanOpenAddPDORx Einleitung Hinweise Mit dem Aufruf der Funktion CanOpenAddPDORx () können Prozessdaten, die andere CANopen®-Geräte senden, zum Empfang eingetragen werden. Die Prozessdaten werden nur empfangen, wenn diese von einem CANopen®-Gerät gesendet werden. Das PDO-Telegramm wird aber erst dann übertragen, wenn die CANopen®-Geräte am Bus sich im Zustand "Operational" befinden. Die kleinste Zeiteinheit der Event-Time ist 1 ms. Die kleinste Zeiteinheit der Inhibit-Time ist 1 ms. Funktionsdeklaration Function CanOpenAddPDORx ( CANNo:Int, CANID:Int, BytePos:Int, DataType:Int, DataLength:Int, const ref VarAddr, EventTime: Int, InhibitTime: Int, Paramset: Int, ) :Int; Funktionsparameter Die Funktion CanOpenAddPDORx () hat die folgenden Parameter. Parameter 108 Beschreibung Wert CANNo CAN-Kanalnummer 0 ... CANMAX CANID CAN-Identifier 11 Bit CAN-Identifier 29 Bit 0 ... 0x7FF 0 ... 0x1FFFFFFF BytePos Startposition der zu empfangenden Daten 0 ... 7 DataType Datentyp der zu empfangenden Daten 2 ... 13, 15 ... 27 DataLength Datengröße der globalen Variablen VarAddr VarAddr Globale Variable, in die der empfangene Wert eingetragen wird EventTime Zeitlicher Abstand zw. zwei Telegrammen (> Inhibit Time) InhibitTime Mindestabstand zwischen zwei empfangenen Telegrammen (< EventTime) Paramset Parameter bitcodiert Jetter AG JVM-407 Rückgabewert CANopen®-STX-API Die Funktion übergibt die folgenden Rückgabewerte an das übergeordnete Programm. Rückgabewert Parameter CANNo Parameter CANID 0 ok -1 Fehler bei der Parameterüberprüfung -3 DataType ist größer als DataLength -4 nicht genug Speicher vorhanden Der Wert des Parameters CANMAX ist geräteabhängig. Die folgende Tabelle gibt Auskunft darüber. Gerät CANMAX JVM-407 2 BTM 07 2 BTM 012 1-2 BTM 011 0 JCM-350 4 JCM-620 2 Mit dem Parameter CANID wird der CAN-Identifier übergeben. Der CAN-Identifier wird mit einem Makro erstellt. Der CAN-Identifier ist abhängig von der Node-ID des anderen Kommunikationsteilnehmers und abhängig davon, ob es sich um eine PDO1-, PDO2-, PDO3- oder PDO4-Nachricht handelt. Makrodefinitionen: #Define CANOPEN_PDO1_RX (NodeID) ((NodeID) + 0x180) #Define CANOPEN_PDO3_RX (NodeID) ((NodeID) + 0x380) #Define CANOPEN_PDO2_RX (NodeID) #Define CANOPEN_PDO4_RX (NodeID) ((NodeID) + 0x280) ((NodeID) + 0x480) #Define CANOPEN_PDO1_TX (NodeID) ((NodeID) + 0x200) #Define CANOPEN_PDO3_TX (NodeID) ((NodeID) + 0x400) #Define CANOPEN_PDO2_TX (NodeID) #Define CANOPEN_PDO4_TX (NodeID) ((NodeID) + 0x300) ((NodeID) + 0x500) Beispiel für den Aufruf des Makros: CANOPEN_PDO2_RX (64) Der daraus resultierende CAN-Identifier ist: 2C0h = 40h + 280h Default-CAN-IdentifierVerteilung Jetter AG Bei CANopen® ist die folgende CAN-Identifier-Verteilung vordefiniert. Dabei wird die Knotennummer in den Identifier eingebettet. 109 6 CANopen®-STX-API Identifier 11-Bit (binär) Identifier (dezimal) Identifier (hexadezimal) Funktion 000000000000 0 0 Netzwerkmanagement 000100000000 128 80h Synchronisation 0001xxxxxxxx 129 - 255 81h - FFh Emergency 0011xxxxxxxx 385 - 511 181h - 1FFh PDO1 (tx) 0100xxxxxxxx 513 - 639 201h - 27Fh PDO1 (rx) 0101xxxxxxxx 641 - 767 281h - 2FFh PDO2 (tx) 0110xxxxxxxx 769 - 895 301h - 37Fh PDO2 (rx) 0111xxxxxxxx 897 - 1023 381h - 3FFh PDO3 (tx) 1000xxxxxxxx 1025 - 1151 401h -47Fh PDO3 (rx) 1001xxxxxxxx 1153 - 1279 481h - 4FFh PDO4 (tx) 1010xxxxxxxx 1281 - 1407 501h - 57Fh PDO4 (rx) 1011xxxxxxxx 1409 - 1535 581h - 5FFh SDO senden 1100xxxxxxxx 1537 - 1663 601h - 67Fh SDO empfangen 1110xxxxxxxx 1793 - 1919 701h - 77Fh NMT Error Control xxxxxxxx = Knotennummer 1 - 127 Parameter DataType Folgende Datentypen können empfangen werden. Byte-Typen 110 CANopen®-Format Jetter-Format 1 CANOPEN_INTEGER8 CANOPEN_UNSIGNED8 Byte 2 CANOPEN_INTEGER16 CANOPEN_UNSIGNED16 Word 3 CANOPEN_INTEGER24 CANOPEN_UNSIGNED24 - 4 CANOPEN_INTEGER32 CANOPEN_UNSIGNED32 CANOPEN_REAL Int 5 CANOPEN_INTEGER40 CANOPEN_UNSIGNED40 - 6 CANOPEN_INTEGER48 CANOPEN_UNSIGNED48 CANOPEN_TIME_OF_DAY CANOPEN_TIME_DIFFERENCE - 7 CANOPEN_INTEGER56 CANOPEN_UNSIGNED46 - Jetter AG JVM-407 CANopen®-STX-API Byte-Typen Parameter Paramset CANopen®-Format Jetter-Format 1 CANOPEN_INTEGER8 CANOPEN_UNSIGNED8 Byte 8 CANOPEN_INTEGER64 CANOPEN_UNSIGNED64 CANOPEN_REAL64 - n CANOPEN_VISIBLE_STRING CANOPEN_OCTET_STRING CANOPEN_UNICODE_STRING CANOPEN_DOMAIN String Folgende Parameter können an die Funktion übergeben werden. Mehrere Parameter können miteinander über die Oder-Funktion verknüpft werden. CANOPEN_ASYNCPDORTRONLY Empfange asynchrone PDOs durch das Senden eines RTR-Frames (nach abgelaufener EventTime) an den Sender. CANOPEN_ASYNCPDO Empfange asynchrone PDO. CANOPEN_PDOINVALID PDO wird nicht empfangen. Speicherplatz wird reserviert. CANOPEN_NORTR PDO kann nicht per RTR (Remote Request) angefordert werden. CANOPEN_29BIT Verwende 29 Bit-Identifier Default: 11 Bit-Identifier Verwenden der Funktion Jetter AG Result := CanOpenAddPDORx ( 0, 662, 0, CANOPEN_DWORD, sizeof(var_Data_1_of_Node_1), var_Data_1_of_Node_1, 1000, 10, CANOPEN_ASYNCPDO | CANOPEN_NORTR); 111 6 CANopen®-STX-API JetSym STX-Programm JVM-407 mit der Node-ID 10 möchte von zwei CANopen®-Geräten mit der Node-ID 64 und 102 ein PDO empfangen. Dazu wird die Funktion CanOpenAddPDORx () aufgerufen. Nach Ablauf des Programms empfängt der JVM-407 die zyklischen PDO-Telegramme. NodeID_Node_0 NodeID_Node_2 NodeID_Node_1 JVM-407 JXM-IO-E02 JXM-IO-E09 CAN 0 120 Ohm 120 Ohm CAN-Bus #Include "CanOpen.stxp" Const // CAN-No. CAN_CONTROLLER_0 = 0; // Node-ID Node_1 NodeID_Node_0 = 10; // Node-ID Node 2 NodeID_Node_1 = 64; // Node-ID Node 3 NodeID_Node_2 = 102; // Event_Zeit in ms Event_Time = 1000; // Inhibit-Zeit in ms Inhibit_Time = 10; End_Const; Var Data_1_of_Node_1: Int; Data_2_of_Node_1: Int; Data_1_of_Node_2: Int; End_Var; Task main autorun Var 112 Jetter AG JVM-407 CANopen®-STX-API SW_Version: String; End_Var; SW_Version := 'v4.3.0.2004'; // Initialisierung CAN 0 CanOpenInit(CAN_CONTROLLER_0, NodeID_Node_0, SW_Version); // Prozessdaten zum Empfang eintragen CanOpenAddPDORx(CAN_CONTROLLER_0, CANOPEN_PDO2_RX(NodeID_Node_1), 0, CANOPEN_DWORD, sizeof(Data_1_of_Node_1), Data_1_of_Node_1, Event_Time, Inhibit_Time, CANOPEN_ASYNCPDORTRONLY | CANOPEN_NORTR); CanOpenAddPDORx(CAN_CONTROLLER_0, CANOPEN_PDO2_RX(NodeID_Node_1), 4, CANOPEN_DWORD, sizeof(Data_2_of_Node_1), Data_2_of_Node_1, Event_Time, Inhibit_Time, CANOPEN_ASYNCPDORTRONLY | CANOPEN_NORTR); CanOpenAddPDORx(CAN_CONTROLLER_0, CANOPEN_PDO3_RX(NodeID_Node_2), 0, CANOPEN_BYTE, sizeof(Data_1_of_Node_2), Data_1_of_Node_2, Event_Time, Inhibit_Time, CANOPEN_ASYNCPDO | CANOPEN_NORTR); // Alle Geräte am CAN-Bus sind im Status PREOPERATIONAL // Alle Geräte am CAN-Bus in den Status OPERATIONAL setzen CanOpenSetCommand(CAN_CONTROLLER_0, CAN_CMD_NMT_Value(CAN_CMD_NMT_ALLNODES, CAN_CMD_NMT), CAN_NMT_START); //Ab jetzt werden PDO-Telegramme übertragen. // ... // ... // ... End_Task; Jetter AG 113 6 CANopen®-STX-API STX-Funktion CanOpenAddPDOTx Einleitung Hinweise Mit dem Aufruf der Funktion CanOpenAddPDOTx () können Prozessdaten auf den Bus gelegt werden. Das muss aber nicht heißen, dass andere CANopen®-Geräte am Bus diese Prozessdaten auch lesen. Das PDO-Telegramm wird aber erst dann übertragen, wenn die CANopen®-Geräte am Bus sich im Zustand "Operational" befinden. Sobald sich die Prozessdaten ändern, wird sofort wieder ein PDO-Telegramm übertragen. Die kleinste Zeiteinheit der Event-Time ist 1 ms. Die kleinste Zeiteinheit der Inhibit-Time ist 1 ms. Alle nicht belegten Bytes eines Telegramms werden mit Null gesendet. Funktionsdeklaration Function CanOpenAddPDOTx ( CANNo:Int, CANID:Int, BytePos:Int, DataType:Int, DataLength:Int, const ref VarAddr, EventTime: Int, InhibitTime: Int, Paramset: Int, ) :Int; Funktionsparameter Die Funktion CanOpenAddPDOTx () hat die folgenden Parameter. Parameter 114 Beschreibung Wert CANNo CAN-Kanalnummer 0 ... CANMAX CANID CAN-Identifier 11 Bit CAN-Identifier 29 Bit 0 ... 0x7FF 0 ... 0x1FFFFFFF BytePos Startposition der zu sendenden Daten 0 ... 7 DataType Datentyp der zu sendenden Daten 2 ... 13, 15 ... 27 DataLength Datengröße der globalen Variablen VarAddr VarAddr Globale Variable, in die der zu sendende Wert eingetragen wird EventTime Zeitlicher Abstand zw. zwei Telegrammen (> Inhibit Time) InhibitTime Mindestabstand zwischen zwei zu sendenden Telegrammen (< EventTime) Paramset Parameter bitcodiert Jetter AG JVM-407 Rückgabewert CANopen®-STX-API Die Funktion übergibt die folgenden Rückgabewerte an das übergeordnete Programm. Rückgabewert Parameter CANNo Parameter CANID 0 ok -1 Fehler bei der Parameterüberprüfung -3 DataType ist größer als DataLength -4 nicht genug Speicher vorhanden Der Wert des Parameters CANMAX ist geräteabhängig. Die folgende Tabelle gibt Auskunft darüber. Gerät CANMAX JVM-407 2 BTM 07 2 BTM 012 1-2 BTM 011 0 JCM-350 4 JCM-620 2 Mit dem Parameter CANID wird der CAN-Identifier übergeben. Der CAN-Identifier wird mit einem Makro erstellt. Der CAN-Identifier ist abhängig von der Node-ID des anderen Kommunikationsteilnehmers und abhängig davon, ob es sich um eine PDO1-, PDO2-, PDO3- oder PDO4-Nachricht handelt. Makrodefinitionen: #Define CANOPEN_PDO1_RX (NodeID) ((NodeID) + 0x180) #Define CANOPEN_PDO3_RX (NodeID) ((NodeID) + 0x380) #Define CANOPEN_PDO2_RX (NodeID) #Define CANOPEN_PDO4_RX (NodeID) ((NodeID) + 0x280) ((NodeID) + 0x480) #Define CANOPEN_PDO1_TX (NodeID) ((NodeID) + 0x200) #Define CANOPEN_PDO3_TX (NodeID) ((NodeID) + 0x400) #Define CANOPEN_PDO2_TX (NodeID) #Define CANOPEN_PDO4_TX (NodeID) ((NodeID) + 0x300) ((NodeID) + 0x500) Beispiel für den Aufruf des Makros: CANOPEN_PDO2_RX (64) Der daraus resultierende CAN-Identifier ist: 2C0h = 40h + 280h Default-CAN-IdentifierVerteilung Jetter AG Bei CANopen® ist die folgende CAN-Identifier-Verteilung vordefiniert. Dabei wird die Knotennummer in den Identifier eingebettet. 115 6 CANopen®-STX-API Identifier 11-Bit (binär) Identifier (dezimal) Identifier (hexadezimal) Funktion 000000000000 0 0 Netzwerkmanagement 000100000000 128 80h Synchronisation 0001xxxxxxxx 129 - 255 81h - FFh Emergency 0011xxxxxxxx 385 - 511 181h - 1FFh PDO1 (tx) 0100xxxxxxxx 513 - 639 201h - 27Fh PDO1 (rx) 0101xxxxxxxx 641 - 767 281h - 2FFh PDO2 (tx) 0110xxxxxxxx 769 - 895 301h - 37Fh PDO2 (rx) 0111xxxxxxxx 897 - 1023 381h - 3FFh PDO3 (tx) 1000xxxxxxxx 1025 - 1151 401h -47Fh PDO3 (rx) 1001xxxxxxxx 1153 - 1279 481h - 4FFh PDO4 (tx) 1010xxxxxxxx 1281 - 1407 501h - 57Fh PDO4 (rx) 1011xxxxxxxx 1409 - 1535 581h - 5FFh SDO senden 1100xxxxxxxx 1537 - 1663 601h - 67Fh SDO empfangen 1110xxxxxxxx 1793 - 1919 701h - 77Fh NMT Error Control xxxxxxxx = Knotennummer 1 - 127 Parameter DataType Folgende Datentypen können empfangen werden. Byte-Typen 116 CANopen®-Format Jetter-Format 1 CANOPEN_INTEGER8 CANOPEN_UNSIGNED8 Byte 2 CANOPEN_INTEGER16 CANOPEN_UNSIGNED16 Word 3 CANOPEN_INTEGER24 CANOPEN_UNSIGNED24 - 4 CANOPEN_INTEGER32 CANOPEN_UNSIGNED32 CANOPEN_REAL Int 5 CANOPEN_INTEGER40 CANOPEN_UNSIGNED40 - 6 CANOPEN_INTEGER48 CANOPEN_UNSIGNED48 CANOPEN_TIME_OF_DAY CANOPEN_TIME_DIFFERENCE - 7 CANOPEN_INTEGER56 CANOPEN_UNSIGNED46 - Jetter AG JVM-407 CANopen®-STX-API Byte-Typen Parameter Paramset CANopen®-Format Jetter-Format 1 CANOPEN_INTEGER8 CANOPEN_UNSIGNED8 Byte 8 CANOPEN_INTEGER64 CANOPEN_UNSIGNED64 CANOPEN_REAL64 - n CANOPEN_VISIBLE_STRING CANOPEN_OCTET_STRING CANOPEN_UNICODE_STRING CANOPEN_DOMAIN String Folgende Parameter können an die Funktion übergeben werden. Mehrere Parameter können miteinander über die Oder-Funktion verknüpft werden. CANOPEN_ASYNCPDORTRONLY Sende asynchrone PDOs durch das Empfangen eines RTR-Frames. CANOPEN_ASYNCPDO Sende asynchrone PDO. CANOPEN_PDOINVALID PDO wird nicht gesendet. CANOPEN_NORTR PDO kann nicht per RTR (Remote Request) angefordert werden. CANOPEN_29BIT Verwende 29 Bit-Identifier Default: 11 Bit-Identifier Verwenden der Funktion Result := CanOpenAddPDOTx ( 0, 842, 0, CANOPEN_DWORD, sizeof(var_Data_1_of_Node_3), var_Data_1_of_Node_3, 1000, 100, CANOPEN_ASYNCPDO | CANOPEN_NORTR); JetSym STX-Programm JVM-407 sendet an zwei CANopen®-Geräte mit der Node-ID 74 und 112 Prozessdaten. Nach Ablauf des Programms und bei Änderungen sendet der JVM-407 zyklisch alle 3.000 ms (Event-Time) die PDO-Telegramme. Maximal wird alle 10 ms (Inhibit-Time) das PDO-Telegramm gesendet. Jetter AG 117 6 CANopen®-STX-API NodeID_Node_0 NodeID_Node_2 NodeID_Node_1 JVM-407 JXM-IO-E02 JXM-IO-E09 CAN 0 120 Ohm 120 Ohm CAN-Bus #Include "CanOpen.stxp" Const // CAN-No. CAN_CONTROLLER_0 = 0; // Node-ID Node_1 NodeID_Node_0 = 10; // Node-ID Node 4 NodeID_Node_1 = 74; // Node-ID Node 5 NodeID_Node_2 = 112; // Event_Zeit in ms Event_Time = 3000; // Inhibit-Zeit in ms Inhibit_Time = 100; End_Const; Var Data_1_of_Node_1: Int; Data_2_of_Node_1: Int; Data_1_of_Node_2: Byte; End_Var; Task main autorun Var SW_Version: String; End_Var; SW_Version := 'v4.3.0.2004'; 118 Jetter AG JVM-407 CANopen®-STX-API // Initialisierung CAN 0 CanOpenInit(CAN_CONTROLLER_0, NodeID_Node_0, SW_Version); // Daten per PDO senden CanOpenAddPDOTx(CAN_CONTROLLER_0, CANOPEN_PDO2_TX(NodeID_Node_1), 0, CANOPEN_DWORD, sizeof(Data_1_of_Node_1), Data_1_of_Node_1 Event_Time, Inhibit_Time, CANOPEN_ASYNCPDORTRONLY | CANOPEN_NORTR); CanOpenAddPDOTx(CAN_CONTROLLER_0, CANOPEN_PDO2_TX(NodeID_Node_1), 4, CANOPEN_DWORD, sizeof(Data_2_of_Node_1), Data_2_of_Node_1, Event_Time, Inhibit_Time, CANOPEN_ASYNCPDORTRONLY | CANOPEN_NORTR); CanOpenAddPDOTx(CAN_CONTROLLER_0, CANOPEN_PDO3_TX(NodeID_Node_2), 0, CANOPEN_BYTE, sizeof(Data_1_of_Node_2), Data_1_of_Node_2, Event_Time, Inhibit_Time, CANOPEN_ASYNCPDO | CANOPEN_NORTR); // Alle Geräte am CAN-Bus sind im Status PREOPERATIONAL // Alle Geräte am CAN-Bus in den Status OPERATIONAL setzen CanOpenSetCommand(CAN_CONTROLLER_0, CAN_CMD_NMT_Value(CAN_CMD_NMT_ALLNODES, CAN_CMD_NMT), CAN_NMT_START); //Ab jetzt werden PDO-Telegramme übertragen. // ... // ... // ... End_Task; Jetter AG 119 6 CANopen®-STX-API CANopen®-Objektverzeichnis des JVM-407 Unterstützte Objekte Folgende Objekte werden vom Betriebssystem des JVM-407 unterstützt: Index (hex) Device Type Object (Index 0x1000) Objekt-Name Typ Attribute 1000 VAR Device Type Unsigned32 ro 1001 VAR Error Register Unsigned8 ro 1002 VAR Manufacturer Status Unsigned32 ro 1003 ARRAY Pre-defined Error Field Unsigned32 ro 1008 VAR Manufacturer Device Name String const 1009 VAR Manufacturer Hardware Version String const 100A VAR Manufacturer Software Version String const 100B VAR Node-ID Unsigned32 ro 1017 VAR Producer Heartbeat Time Unsigned16 rw 1018 RECORD Identity Identity ro 1200 RECORD Server 1 - SDO Parameter SDO Parameter ro 1201 RECORD Server 2 - SDO Parameter SDO Parameter rw 1203 RECORD Server 3 - SDO Parameter SDO Parameter rw 1203 RECORD Server 4 - SDO Parameter SDO Parameter rw In der folgenden Tabelle ist die Struktur des "Device Type Object" dargestellt. Index 0x1000 Error Register Object (Index 0x1001) Objekt (Kürzel) Sub-Index 0 Default Beschreibung 0x0000012D Geräteart (schreibgeschützt) In der folgenden Tabelle ist die Struktur des "Error Register Object" dargestellt. Index 0x1001 Sub-Index 0 Default 0 Beschreibung Fehlerregister (schreibgeschützt) Dieses Objekt übernimmt die Fehlerregisterfunktion von CANopen®. Bit 0 = Nicht näher spezifizierter Fehler Die anderen Bits werden derzeit nicht verwendet. 120 Jetter AG JVM-407 Pre-defined Error Field Object (Index 0x1003) CANopen®-STX-API In der folgenden Tabelle ist die Struktur des "Pre-defined Error Field Object" dargestellt. Index 0x1003 Sub-Index Default Beschreibung 0 0 Anzahl Fehler, die in das Standard-Fehlerfeld des Arrays eingetragen wurden 1 0 Aktuellster Fehler 0 gibt an, dass kein Fehler vorliegt 2 ... 254 - Ältere Fehler Dieses Objekt zeigt die Liste mit der Historie der vom JVM-407 erkannten Fehler. Die maximale Länge der Liste beträgt 254 Fehler. Bei einem Neustart wird der Inhalt der Liste gelöscht. Aufbau des Standard-Fehlerfeldes 2-Byte LSB: Fehlercode 2-Byte MSB: Ergänzende Informationen Manufacturer Device Name Object (Index 0x1008) In der folgenden Tabelle ist die Struktur des "Manufacturer Device Name Object" dargestellt. Index 0x1008 Manufacturer Hardware Version Object (Index 0x1009) 0 Default JVM-407 Beschreibung Name der Hardware In der folgenden Tabelle ist die Struktur des "Manufacturer Hardware Version Object" dargestellt. Index 0x1009 Manufacturer Software Version Object (Index 0x100A) Sub-Index Sub-Index Default 0 Beschreibung OS-Version des Geräts In der folgenden Tabelle ist die Struktur des "Manufacturer Software Version Object" dargestellt. Index 0x100A Sub-Index Default 0 Beschreibung Software-Version des Anwenderprogramms, das auf dem JVM-407 läuft Der Eintrag unter diesem Index erfolgt über den Parameter "SWVersion" der STX-Funktion CanOpenInit (). Node-ID Object (Index 0x100B) In der folgenden Tabelle ist die Struktur des "Node-ID Object" dargestellt. Index 0x100B Jetter AG Sub-Index 0 Default Beschreibung Eigene Node-ID 121 6 CANopen®-STX-API Producer Heartbeat Time Object (Index 0x1017) In der folgenden Tabelle ist die Struktur des "Producer Heartbeat Time Object" dargestellt. Index 0x1017 122 Sub-Index 0 Default 1.000 [ms] Beschreibung Heartbeat-Zeit Jetter AG JVM-407 7 SAE J1939-STX-API SAE J1939-STX-API Einleitung Dieses Kapitel beschreibt die STX-Funktionen der SAE J1939-STX-API. Der SAE J1939-Standard SAE J1939 ist ein offener Standard für die Vernetzung und Kommunikation im Nutzfahrzeugbereich. Schwerpunkt der Anwendung ist die Vernetzung von Antriebsstrang und Chassis. Das Protokoll J1939 stammt von der internationalen Society of Automotive Engineers (SAE) und arbeitet auf dem Physical Layer mit CAN-Highspeed nach ISO 11898. Anwendung Diese STX-Funktionen werden in der Kommunikation zwischen der Steuerung JVM-407 und anderen Steuergeräten im Fahrzeug angewendet. Es werden in der Regel Motordaten, z. B. Motordrehzahl, Geschwindigkeit oder Kühlwassertemperatur, ausgelesen und auf dem Display angezeigt. Dokumente Die wichtigsten SAE J1939-Spezifikationen sind: J1939-11 - Informationen zum Physical Layer J1939-21 - Informationen zum Data Link Layer J1939-71 - Informationen zum Application Layer Fahrzeuge J1939-73 - Informationen zum Application Layer Bereich Diagnose J1939-81 - Netzwerkmanagement Inhalt Thema Seite Aufbau einer J1939-Nachricht .................................................................... 124 STX-Funktion SAEJ1939Init ....................................................................... 126 STX-Funktion SAEJ1939SetSA ................................................................. 128 STX-Funktion SAEJ1939GetSA ................................................................. 129 STX-Funktion SAEJ1939AddRx ................................................................. 130 STX-Funktion SAEJ1939AddTx ................................................................. 133 STX-Funktion SAEJ1939RequestPGN ...................................................... 136 STX-Funktion SAEJ1939GetDM1 .............................................................. 139 STX-Funktion SAEJ1939GetDM2 .............................................................. 142 STX-Funktion SAEJ1939SetSPNConversion ............................................ 145 STX-Funktion SAEJ1939GetSPNConversion ............................................ 147 Jetter AG 123 7 SAE J1939-STX-API Aufbau einer J1939-Nachricht Aufbau einer J1939-Nachricht Die folgende Grafik zeigt den Aufbau einer J1939-Nachricht: Abkürzung DA Destination Address (Zieladresse) GE Group Extensions (Gruppenerweiterungen) PDU Protocol Data Unit (Protokolldateneinheit) PGN Parameter Group Number (Parametergruppennummer) SA Bedeutung der PGN Parameter Group Number Bezeichnung (Bedeutung) Source Address (Quelladresse) Die PGN ist eine in der SAE J1939-Norm definierte Nummer, die mehrere SPNs zu einer sinnvollen Gruppe zusammenfügt. Die PGN ist Teil des CAN-Identifiers. Die 8-Byte-Daten (PDU) beinhalten die Werte der einzelnen SPN. Es folgt ein Beispiel für die PGN 65262 (0xFEEE): PGN 65262 - ET1 124 Engine Temperature 1 Teil der PGN Wert Transmission Repetition Rate 1s Data Length 8 Extended Data Page 0 Data Page 0 PDU Format 254 PDU Specific 238 Default Priority 6 Parameter Group Number 65262 Bemerkung PGN Supporting Information in Hex: 0xFEEE Jetter AG JVM-407 Jetter AG SAE J1939-STX-API Startposition Länge Parametername SPN 1 1 Byte Engine Coolant Temperature 110 2 1 Byte Engine Fuel Temperature 1 174 3-4 2 Bytes Engine Oil Temperature 1 175 5-6 2 Bytes Engine Turbocharger Oil Temperature 176 7 1 Byte Engine Intercooler Temperature 52 8 1 Byte Engine Intercooler Thermostat Opening 1134 125 7 SAE J1939-STX-API STX-Funktion SAEJ1939Init Einleitung Mit dem Aufruf der Funktion SAEJ1939Init () wird einer der vorhandenen CAN-Busse (nicht CAN 0 weil reserviert für CANopen®) für das J1939-Protokoll initialisiert. Die JVM-407 hat ab dann die durch den Funktionsparameter mySA zugeteilte SA (Source Address). Es handelt sich dabei um die eigene Geräteadresse am Bus. Funktionsdeklaration Function SAEJ1939Init ( CANNo:Int, mySA:Byte, ) :Int; Funktionsparameter Die Funktion SAEJ1939Init () hat die folgenden Parameter. Parameter Rückgabewert Beschreibung Wert CANNo CAN-Kanalnummer 1 ... CANMAX mySA Eigene Source-Adresse 0 ... 253 Die Funktion übergibt die folgenden Rückgabewerte an das übergeordnete Programm. Rückgabewert Parameter CANNo Verwenden der Funktion 0 ok -1 Fehler bei der Parameterüberprüfung -3 Nicht genug Speicher für SAE J1939 Der Wert des Parameters CANMAX ist geräteabhängig. Die folgende Tabelle gibt Auskunft darüber. Gerät CANMAX JVM-407 2 BTM 07 2 BTM 012 1-2 BTM 011 nicht möglich JCM-350 4 JCM-620 2 Initialisieren des CAN-Busses 1. Das Gerät JVM-407 hat die SA 20 (0x14). Das Gerät JVM-407 kann jetzt Nachrichten mit der eingestellten SA (und nur diese Nachrichten) senden. Result := SAEJ1939Init(1, 20); 126 Jetter AG JVM-407 Address Claiming Jetter AG SAE J1939-STX-API Address Claiming ist nicht implementiert. 127 7 SAE J1939-STX-API STX-Funktion SAEJ1939SetSA Einleitung Mit dem Aufruf der Funktion SAEJ1939SetSA wird die eigene SA (Source Address) zur Laufzeit geändert. Funktionsdeklaration Function SAEJ1939SetSA ( CANNo:Int, mySA:Byte, ) :Int; Funktionsparameter Die Funktion SAEJ1939SetSA () hat die folgenden Parameter. Parameter Rückgabewert Beschreibung Wert CANNo CAN-Kanalnummer 1 ... CANMAX mySA Neue SA 0 ... 253 Die Funktion übergibt die folgenden Rückgabewerte an das übergeordnete Programm. Rückgabewert Parameter CANNo Verwenden der Funktion 0 ok -1 Fehler bei der Parameterüberprüfung Der Wert des Parameters CANMAX ist geräteabhängig. Die folgende Tabelle gibt Auskunft darüber. Gerät CANMAX JVM-407 2 BTM 07 2 BTM 012 1-2 BTM 011 nicht möglich JCM-350 4 JCM-620 2 Die SA wird zur Laufzeit geändert. Result := SAEJ1939SetSA(1, 20); Wichtiger Hinweis 128 Nachrichten werden sofort mit der neuen SA gesendet bzw. empfangen. Jetter AG JVM-407 SAE J1939-STX-API STX-Funktion SAEJ1939GetSA Einleitung Mit dem Aufruf der Funktion SAEJ1939GetSA () kann die eigene SA (Source Address) festgestellt werden. Funktionsdeklaration Function SAEJ1939GetSA ( CANNo:Int, ref mySA:Byte, ) :Int; Funktionsparameter Die Funktion SAEJ1939GetSA () hat die folgenden Parameter. Parameter Rückgabewert Beschreibung Wert CANNo CAN-Kanalnummer 1 ... CANMAX mySA Aktuell eingestellte SA 0 ... 253 Die Funktion übergibt die folgenden Rückgabewerte an das übergeordnete Programm. Rückgabewert Parameter CANNo Verwenden der Funktion 0 ok -1 Fehler bei der Parameterüberprüfung Der Wert des Parameters CANMAX ist geräteabhängig. Die folgende Tabelle gibt Auskunft darüber. Gerät CANMAX JVM-407 2 BTM 07 2 BTM 012 1-2 BTM 011 nicht möglich JCM-350 4 JCM-620 2 Es wird die aktuell eingestellte SA zurückgegeben. Result := SAEJ1939SetSA(1, actual_SA); Jetter AG 129 7 SAE J1939-STX-API STX-Funktion SAEJ1939AddRx Einleitung Mit dem Aufruf der Funktion SAEJ1939AddRx () wird das JVM-407 aufgefordert, eine bestimmte Nachricht zu empfangen. Diese Nachricht wird von einem anderen Busteilnehmer gesendet. Die Adresse dieses Busteilnehmers wird als Parameter bySA dieser Funktion übergeben. Wird die Nachricht nicht gesendet, bleibt der zuletzt empfangene Wert bestehen. Das zyklische Lesen erfolgt solange, bis die Funktion SAEJ1939Init () erneut aufgerufen wird. Funktionsdeklaration Function SAEJ1939AddRx ( CANNo:Int, IPGN:Long, bySA:Byte, BytePos:Int, BitPos:Int, DataType:Int, DataLength:Int, const ref VarAddr, ref stJ1939:TJ1939Rx EventTime: Int, InhibitTime: Int, ) :Int; Funktionsparameter Die Funktion SAEJ1939AddRx () hat die folgenden Parameter. Parameter 130 Beschreibung Wert CANNo CAN-Kanalnummer 1 ... CANMAX IPGN PGN Parameter Group Number 0 ... 0x3FFFF bySA Source Address vom Sender der Nachricht 0 ... 253 BytePos Startposition des Bytes der zu empfangenden Daten 1 ... n BitPos Startposition des Bits der zu empfangenden Daten 1 ... 8 DataType Datentyp der zu empfangenden Daten 1 ... 3, 10 ... 16 DataLength Datengröße der globalen Variablen VarAddr VarAddr Globale Variable, in die der empfangene Wert eingetragen wird TJ1939Rx Kontrollstruktur EventTime Zeitlicher Abstand zw. zwei Telegrammen (> Inhibit Time) Default-Wert: 1.000 ms InhibitTime Mindestabstand zwischen zwei empfangenen Telegrammen (< EventTime) Default-Wert: 100 ms Jetter AG JVM-407 Rückgabewert SAE J1939-STX-API Die Funktion übergibt die folgenden Rückgabewerte an das übergeordnete Programm. Rückgabewert Parameter CANNo Parameter DataType Kontrollstruktur TJ1939Rx Jetter AG 0 ok -1 Fehler bei der Parameterüberprüfung Der Wert des Parameters CANMAX ist geräteabhängig. Die folgende Tabelle gibt Auskunft darüber. Gerät CANMAX JVM-407 2 BTM 07 2 BTM 012 1-2 BTM 011 nicht möglich JCM-350 4 JCM-620 2 Die folgenden Datentypen sind möglich. Byte-Typen Bit-Typen SAEJ1939 1 - SAEJ1939_UNSIGNED8 SAEJ1939_BYTE 2 - SAEJ1939_UNSIGNED16 SAEJ1939_WORD 4 - SAEJ1939_UNSIGNED32 SAEJ1939_DWORD n - SAEJ1939_STRING - 1 SAEJ1939_1BIT - 2 SAEJ1939_2BIT - 3 SAEJ1939_3BIT - 4 SAEJ1939_4BIT - 5 SAEJ1939_5BIT - 6 SAEJ1939_6BIT - 7 SAEJ1939_7BIT TJ1939Rx : Struct // Status der empfangenen Nachricht byStatus : Byte; // Priorität der empfangenen Nachricht byPriority : Byte; End_Struct; 131 7 SAE J1939-STX-API Verwenden der Funktion Result := SAEJ1939AddRx ( 1, 0xFEEE, 0x00, 2 0 SAEJ1939_BYTE, sizeof(var_Fueltemp), var_Fueltemp, struct_TJ1939Rx_EngineTemperatureTbl, 1500, 120); JetSym STX-Programm Das Gerät JVM-407 mit der eigenen SA von 20 möchte die aktuelle Treibstofftemperatur empfangen und anzeigen. Die Parameter InhibitTime und EventTime werden beim Funktionsaufruf nicht explizit aufgeführt. In diesem Fall werden die Default-Werte verwendet. Die Steuerung, die die Treibstofftemperatur erfasst, hat die SA von 0. In der Praxis ist die Adresse der Steuerung aus der Dokumentation des Motorherstellers zu erfahren. Die Treibstofftemperatur hat die SPN 174 und ist Bestandteil (2. Byte) der PGN 65262 Motortemperatur 1. #Include "SAEJ1939.stxp" Var bySAEJ1939Channel : Byte; own_Source_Address : Byte; // PGN 65262 Engine Temperature 1 Fueltemp : Byte; EngineTemperatureTbl : TJ1939Rx; End_Var; Task main autorun // Initialisierung CAN 1 bySAEJ1939Channel := 1; own_Source_Address := 20; SAEJ1939Init (bySAEJ1939Channel, own_Source_Address); // Treibstofftemperatur empfangen SAEJ1939AddRx (bySAEJ1939Channel, 65262, 0x00, 2, 1, SAEJ1939_BYTE, sizeof(Fueltemp), Fueltemp, EngineTemperatureTbl); End_Task; Anleitung des Motorherstellers 132 Der Kunde erfährt die Daten (Priorität, PGN, SA und den Aufbau der Datenbytes) aus der Anleitung des Motorherstellers. Jetter AG JVM-407 SAE J1939-STX-API STX-Funktion SAEJ1939AddTx Einleitung Mit dem Aufruf der Funktion SAEJ1939AddTx () wird das Gerät JVM-407 aufgefordert, eine bestimmte Nachricht zyklisch über den Bus zu senden. Das zyklische Senden erfolgt solange, bis die Funktion SAEJ1939Init () erneut aufgerufen wird. Die Daten werden nach Ablauf der Event Time bzw. bei Änderung der abgegebenen Variablen und Ablauf der Inhibit Time gesendet. Funktionsdeklaration Function SAEJ1939AddTx ( CANNo:Int, IPGN:Long, BytePos:Int, BitPos:Int, dataType:Int, DataLength:Int, const ref VarAddr, ref stJ1939:TJ1939Tx EventTime: Int, InhibitTime: Int, ) :Int; Funktionsparameter Die Funktion SAEJ1939AddTx () hat die folgenden Parameter. Parameter Jetter AG Beschreibung Wert CANNo CAN-Kanalnummer 1 ... CANMAX IPGN PGN Parameter Group Number 0 ... 0x3FFFF BytePos Startposition des Bytes der zu sendenden Daten 1 ... n BitPos Startposition des Bits der zu sendenden Daten 1 ... 8 dataType Datentyp der zu sendenden Daten 1 ... 3, 10 ... 16 DataLength Datengröße der globalen Variablen VarAddr VarAddr Globale Variable, in die der sendende Wert eingetragen wird TJ1939Tx Kontrollstruktur EventTime Zeitlicher Abstand zw. zwei Telegrammen (> Inhibit Time) Default-Wert: 1.000 ms InhibitTime Mindestabstand zwischen zwei empfangenen Telegrammen (< EventTime) Default-Wert: 100 ms 133 7 SAE J1939-STX-API Rückgabewert Die Funktion übergibt die folgenden Rückgabewerte an das übergeordnete Programm. Rückgabewert Parameter CANNo Parameter DataType Kontrollstruktur TJ1939Tx 134 0 ok -1 Fehler bei der Parameterüberprüfung Der Wert des Parameters CANMAX ist geräteabhängig. Die folgende Tabelle gibt Auskunft darüber. Gerät CANMAX JVM-407 2 BTM 07 2 BTM 012 1-2 BTM 011 nicht möglich JCM-350 4 JCM-620 2 Die folgenden Datentypen sind möglich. Byte-Typen Bit-Typen SAEJ1939 1 - SAEJ1939_UNSIGNED8 SAEJ1939_BYTE 2 - SAEJ1939_UNSIGNED16 SAEJ1939_WORD 4 - SAEJ1939_UNSIGNED32 SAEJ1939_DWORD n - SAEJ1939_STRING - 1 SAEJ1939_1BIT - 2 SAEJ1939_2BIT - 3 SAEJ1939_3BIT - 4 SAEJ1939_4BIT - 5 SAEJ1939_5BIT - 6 SAEJ1939_6BIT - 7 SAEJ1939_7BIT TJ1939Tx : Struct // Status der gesendeten Nachricht byStatus : Byte; // Priorität der gesendeten Nachricht byPriority : Byte; End_Struct; Jetter AG JVM-407 SAE J1939-STX-API Verwenden der Funktion Result := SAEJ1939AddTx ( 1, 0xFEEE, 0x00, 2 0 SAEJ1939_BYTE, sizeof(var_Fueltemp), var_Fueltemp, struct_TJ1939Tx_EngineTemperatureTbl, 1500, 120); JetSym STX-Programm Festlegung einer neuen Priorität: Der Prioritätswert 0 hat die höchste Priorität, der Prioritätswert 7 die niedrigste Priorität. Die Nachricht mit der Priorität 6 kann von einer Nachricht der Priorität 4 verdrängt werden (wenn die Nachrichten gleichzeitig gesendet werden). Die Parameter InhibitTime und EventTime werden beim Funktionsaufruf nicht explizit aufgeführt. In diesem Fall werden die Default-Werte verwendet. #Include "SAEJ1939.stxp" Var bySAEJ1939Channel : Byte; own_Source_Address : Byte; // PGN 65262 Engine Temperature 1 Fueltemp : Byte; EngineTemperatureTbl : TJ1939Tx; End_Var; Task main autorun // Initialisierung CAN 1 bySAEJ1939Channel := 1; own_Source_Address := 20; SAEJ1939Init (bySAEJ1939Channel, own_Source_Address); // PGN 65262 Engine Temperature // Eine neue Priorität der festlegen EngineTemperatureTbl.byPriority := 6; SAEJ1939AddTx (bySAEJ1939Channel, 65262, 0x00, 2, 1, SAEJ1939_BYTE, sizeof(Fueltemp), Fueltemp, EngineTemperatureTbl); End_Task; Anleitung des Motorherstellers Jetter AG Der Kunde erfährt die Daten (Priorität, PGN, SA und den Aufbau der Datenbytes) aus der Anleitung des Motorherstellers. 135 7 SAE J1939-STX-API STX-Funktion SAEJ1939RequestPGN Einleitung Mit dem Aufruf der Funktion SAEJ1939RequestPGN () wird nach einer PGN eine Anfrage an die DA (Destination Address) gesendet. Die Funktion wird erst beendet, wenn ein gültiger Wert empfangen oder der Timeout von 1.250 ms abgelaufen ist. Um den Wert der angefragten Nachricht zu erhalten, muss diese mit der Funktion SAEJ1939AddRx () für den Empfang angemeldet sein. Diese Funktion muss zyklisch immer wieder neu aufgerufen werden. Funktionsdeklaration Function SAEJ1939RequestPGN ( CANNo:Int, byDA:Byte, ulPGN:Long, byPriority:Byte, ) :Int; Funktionsparameter Die Funktion SAEJ1939RequestPGN () hat die folgenden Parameter. Parameter Rückgabewert Beschreibung Wert CANNo CAN-Kanalnummer 1 ... CANMAX byDA Destination Address Adresse, von dem die Nachricht angefordert wird 0 ... 253 Die eigene SA kann nicht verwendet werden uIPGN PGN Parameter Group Number 0 ... 0x3FFFF byPriority Priorität 0 ... 7 Default-Wert: 6 Die Funktion übergibt die folgenden Rückgabewerte an das übergeordnete Programm. Rückgabewert Parameter CANNo 136 0 Nachricht wurde empfangen -1 Timeout, weil keine Antwort erhalten Der Wert des Parameters CANMAX ist geräteabhängig. Die folgende Tabelle gibt Auskunft darüber. Gerät CANMAX JVM-407 2 BTM 07 2 BTM 012 1-2 BTM 011 nicht möglich JCM-350 4 JCM-620 2 Jetter AG JVM-407 Parameter DataType SAE J1939-STX-API Die folgenden Datentypen sind möglich. Byte-Typen Bit-Typen SAEJ1939 1 - SAEJ1939_UNSIGNED8 SAEJ1939_BYTE 2 - SAEJ1939_UNSIGNED16 SAEJ1939_WORD 4 - SAEJ1939_UNSIGNED32 SAEJ1939_DWORD n - SAEJ1939_STRING - 1 SAEJ1939_1BIT - 2 SAEJ1939_2BIT - 3 SAEJ1939_3BIT - 4 SAEJ1939_4BIT - 5 SAEJ1939_5BIT - 6 SAEJ1939_6BIT - 7 SAEJ1939_7BIT Verwenden der Funktion Result := SAEJ1939RequestPGN ( 1, 0x00, 0xFEE5, 5); JetSym STX-Programm JVM-407 mit der eigenen SA von 20 möchte die PGN 65253 "Engine Hours" von einer Motorsteuerung mit der SA 0 anfordern. Aus dieser PGN soll die SPN 247 "Engine Total Hours of Operation" ausgelesen werden. Deshalb ist es notwendig durch Aufruf der Funktion SAEJ1939AddRx () den Empfang der SPN 247 anzumelden. Der Parameter "byPriority" wird beim Funktionsaufruf nicht explizit aufgeführt. In diesem Fall wird der Default-Wert verwendet. #Include "SAEJ1939.stxp" Var bySAEJ1939Channel : Byte; own_Source_Address : Byte; // PGN 65253 Engine Hours, Revolutions EngineTotalHours : Int; EngineHoursTbl : TJ1939Rx; End_Var; Task main autorun Jetter AG 137 7 SAE J1939-STX-API // Initialisierung CAN 1 bySAEJ1939Channel := 1; own_Source_Address := 20; SAEJ1939Init (bySAEJ1939Channel, own_Source_Address); // Engine Hours, Revolutions -- on Request SAEJ1939AddRx (bySAEJ1939Channel, 65253, 0x00, 1, 0, SAEJ1939_DWORD, sizeof(EngineTotalHours), EngineTotalHours, EngineHoursTbl, 5000, 150); // Wird benötigt für einen zyklischen Task TaskAllEnableCycle (); EnableEvents; End_Task; Task t_RequestPGN_5000 cycle 5000 Var Return_value : Int; End_Var; // Gesamte Betriebsstunden der Maschine anfordern Return_value := SAEJ1939RequestPGN (bySAEJ1939Channel, 0x00, 65253); If Return_value Then Trace ('PGN Request failed'); End_If; End_Task; 138 Jetter AG JVM-407 SAE J1939-STX-API STX-Funktion SAEJ1939GetDM1 Einleitung Mit dem Aufruf der Funktion SAEJ1939GetDM1 () werden die aktuellen Diagnose-Fehlercodes angefordert (siehe auch SAE J1939-73 Nr. 5.7.1). Die entsprechende PGN-Nummer ist 65226. Diese Funktion muss zyklisch immer wieder neu aufgerufen werden. Funktionsdeklaration Function SAEJ1939GetDM1 ( CANNo:Int, bySA:Byte, ref stJ1939DM1stat:TJ1939DM1STAT ref stJ1939DM1msg:TJ1939DM1MSG ) :Int; Funktionsparameter Die Funktion SAEJ1939GetDM1 () hat die folgenden Parameter. Parameter Beschreibung CANNo CAN-Kanalnummer 1 ... CANMAX bySA Source Address vom Sender der Nachricht 0 ... 253 Die eigene SA kann nicht verwendet werden stJ1939DM1stat lStatus lMsgCnt lBuffer Lamp Status Anzahl der empfangenen Nachrichten Größe von Variable stJ1939DM1msg lSPN byOC byFMI Fehlercode Fehlerzähler Fehlertyp stJ1939DM1msg Rückgabewert Wert Die Funktion übergibt die folgenden Rückgabewerte an das übergeordnete Programm. Rückgabewert Parameter CANNo Jetter AG 0 ok -1 Fehler bei der Parameterüberprüfung Der Wert des Parameters CANMAX ist geräteabhängig. Die folgende Tabelle gibt Auskunft darüber. Gerät CANMAX JVM-407 2 BTM 07 2 BTM 012 1-2 BTM 011 nicht möglich JCM-350 4 139 7 SAE J1939-STX-API stJ1939DM1stat.lStatus Gerät CANMAX JCM-620 2 Default: 0xFF00 Typ Byte Bitgruppe Status 1 8-7 Malfunction Indicator Lamp Status 6-5 Red Stop Lamp Status 4-3 Amber Warning Lamp Status 2-1 Protect Lamp Status 8-7 Flash Malfunction Indicator Lamp 6-5 Flash Red Stop Lamp 4-3 Flash Amber Warning Lamp 2-1 Flash Protect Lamp Flash 2 Beschreibung Typ Byte Bitgruppe Wert Status 1 00 Lamps off 01 Lamps on 00 Slow Flash (1 Hz, 50 % duty cycle) 01 Fast Flash (2 Hz or faster, 50 % duty cycle) 10 Reserved 11 Unavailable / Do not Flash Flash 2 Beschreibung stJ1939DM1msg Default-Wert: ISPN = 0 byOC = 0 byFMI = 0 Bei älteren Controllern (Grandfathered Setting): ISPN = 524287 (0x7FFFF) byOC = 31 (0x1F) byFMI = 127 (0x7F) Verwenden der Funktion Result := SAEJ1939GetDM1 ( 1, 0x00, stdm1stat_pow, stdm1msg_pow,); 140 Jetter AG JVM-407 JetSym STX-Programm SAE J1939-STX-API JVM-407 fordert mit dem Aufruf der Funktion SAEJ1939GetDM1 () die aktuellen Diagnose-Fehlercodes an (PGN 65226). #Include "SAEJ1939.stxp" Var bySAEJ1939Channel : Byte; own_Source_Address : Byte; stdm1stat_pow : TJ1939DM1STAT; stdm1msg_pow : Array[10] of STJ1939DM1MSG; MyTimer : TTimer; End_Var; Task main autorun // Initialisierung CAN 1 bySAEJ1939Channel := 1; own_Source_Address := 20; SAEJ1939Init (bySAEJ1939Channel, own_Source_Address); TimerStart (MyTimer, T#2s); Loop When (TimerEnd (MyTimer)) Continue; // Die Diagnose-Fehlercodes DM1 POW anfordern stdm1stat_pow.lBuffer := sizeof (stdm1msg_pow); SAEJ1939GetDM1 (bySAEJ1939Channel, 0x00, stdm1stat_pow, stdm1msg_pow); TimerStart (MyTimer, T#2s); End_Loop; End_Task; Jetter AG 141 7 SAE J1939-STX-API STX-Funktion SAEJ1939GetDM2 Einleitung Mit dem Aufruf der Funktion SAEJ1939GetDM2 () werden die Diagnose-Fehlercodes, die den aktuellen vorausgingen, angefordert (siehe auch SAE J1939-73 Nr. 5.7.2). Die entsprechende PGN-Nummer ist 65227. Funktionsdeklaration Function SAEJ1939GetDM2 ( CANNo:Int, bySA:Byte, ref stJ1939DM2stat:TJ1939DM2STAT ref stJ1939DM2msg:TJ1939DM2MSG ) :Int; Funktionsparameter Die Funktion SAEJ1939GetDM2 () hat die folgenden Parameter. Parameter Beschreibung CANNo CAN-Kanalnummer 1 ... CANMAX bySA Source Address vom Sender der Nachricht 0 ... 253 Die eigene SA kann nicht verwendet werden stJ1939DM2stat lStatus lMsgCnt lBuffer Lamp Status Anzahl der empfangenen Nachrichten Größe von Variable stJ1939DM2msg lSPN byOC byFMI Fehlercode Fehlerzähler Fehlertyp stJ1939DM2msg Rückgabewert Wert Die Funktion übergibt die folgenden Rückgabewerte an das übergeordnete Programm. Rückgabewert Parameter CANNo 142 0 ok -1 Fehler bei der Parameterüberprüfung Der Wert des Parameters CANMAX ist geräteabhängig. Die folgende Tabelle gibt Auskunft darüber. Gerät CANMAX JVM-407 2 BTM 07 2 BTM 012 1-2 BTM 011 nicht möglich JCM-350 4 Jetter AG JVM-407 stJ1939DM2stat.lStatus SAE J1939-STX-API Gerät CANMAX JCM-620 2 Default: 0xFF00 Typ Byte Bitgruppe Status 1 8-7 Malfunction Indicator Lamp Status 6-5 Red Stop Lamp Status 4-3 Amber Warning Lamp Status 2-1 Protect Lamp Status 8-7 Flash Malfunction Indicator Lamp 6-5 Flash Red Stop Lamp 4-3 Flash Amber Warning Lamp 2-1 Flash Protect Lamp Flash 2 Beschreibung Typ Byte Bitgruppe Wert Status 1 00 Lamps off 01 Lamps on 00 Slow Flash (1 Hz, 50 % duty cycle) 01 Fast Flash (2 Hz or faster, 50 % duty cycle) 10 Reserved 11 Unavailable / Do not Flash Flash 2 Beschreibung stJ1939DM2msg Default-Wert: ISPN = 0 byOC = 0 byFMI = 0 Bei älteren Controllern (Grandfathered Setting): ISPN = 524287 (0x7FFFF) byOC = 31 (0x1F) byFMI = 127 (0x7F) Verwenden der Funktion Result := SAEJ1939GetDM2 ( 1, 0x00, stdm2stat_pow, stdm2msg_pow,); Jetter AG 143 7 SAE J1939-STX-API JetSym STX-Programm JVM-407 fordert mit dem Aufruf der Funktion SAEJ1939GetDM2 () die aktuellen Diagnose-Fehlercodes an (PGN 65227). #Include "SAEJ1939.stxp" Var bySAEJ1939Channel : Byte; own_Source_Address : Byte; stdm2stat_pow : TJ1939DM2STAT; stdm2msg_pow : Array[10] of STJ1939DM2MSG; End_Var; // Initialisierung CAN 1 bySAEJ1939Channel := 1; own_Source_Address := 20; SAEJ1939Init (bySAEJ1939Channel, own_Source_Address); // Wird benötigt für einen zyklischen Task TaskAllEnableCycle (); EnableEvents; End_Task; Task t_RequestPGN_5000 cycle 5000 Var Return_wert End_Var; : Int; // Die Diagnose-Fehlercodes DM2 POW anfordern stdm2stat_pow.lBuffer := sizeof (stdm2msg_pow); Return_wert := SAEJ1939GetDM2 (bySAEJ1939Channel, 0x00, stdm2stat_pow, stdm2msg_pow); If Return_wert Then Trace ('DM2 Request failed'); End_If; End_Task; 144 Jetter AG JVM-407 SAE J1939-STX-API STX-Funktion SAEJ1939SetSPNConversion Einleitung Mit dem Aufruf der Funktion SAEJ1939SetSPNConversion () wird die Anordnung der Bytes der Nachricht, die mit der Funktion SAEJ1939GetDM1 () oder SAEJ1939GetDM2 () angefordert wird, festgelegt. Anders ausgedrückt, es wird die Konvertierungsmethode festgelegt. Funktionsdeklaration Function SAEJ1939SetSPNConversion ( CANNo:Int, bySA:Byte, iConversionMethod:Int, ) :Int; Funktionsparameter Die Funktion SAEJ1939SetSPNConversion () hat die folgenden Parameter. Parameter Rückgabewert Beschreibung Wert CANNo CAN-Kanalnummer 1 ... CANMAX bySA Source Address vom Sender der Nachricht 0 ... 253 iConversionMethod Konvertierungsmethode 1 ... 4 4: Automatisch erkannt 2: Default Die Funktion übergibt die folgenden Rückgabewerte an das übergeordnete Programm. Rückgabewert Parameter CANNo Jetter AG 0 ok -1 Fehler bei der Parameterüberprüfung Der Wert des Parameters CANMAX ist geräteabhängig. Die folgende Tabelle gibt Auskunft darüber. Gerät CANMAX JVM-407 2 BTM 07 2 BTM 012 1-2 BTM 011 nicht möglich JCM-350 4 JCM-620 2 145 7 SAE J1939-STX-API Verwenden der Funktion 146 Result := SAEJ1939SetSPNConversion ( 1, 0xAE, 4); Jetter AG JVM-407 SAE J1939-STX-API STX-Funktion SAEJ1939GetSPNConversion Einleitung Mit dem Aufruf der Funktion SAEJ1939GetSPNConversion () wird die aktuell eingestellte Konvertierungsmethode festgestellt. Funktionsdeklaration Function SAEJ1939SetSPNConversion ( CANNo:Int, bySA:Byte, iConversionMethod:Int, ) :Int; Funktionsparameter Die Funktion SAEJ1939GetSPNConversion () hat die folgenden Parameter. Parameter Rückgabewert Beschreibung Wert CANNo CAN-Kanalnummer 1 ... CANMAX bySA Source Address vom Sender der Nachricht 0 ... 253 iConversionMethod Konvertierungsmethode 1 ... 4 4: Automatisch erkannt 2: Default Die Funktion übergibt die folgenden Rückgabewerte an das übergeordnete Programm. Rückgabewert Parameter CANNo Verwenden der Funktion Jetter AG 0 ok -1 Fehler bei der Parameterüberprüfung Der Wert des Parameters CANMAX ist geräteabhängig. Die folgende Tabelle gibt Auskunft darüber. Gerät CANMAX JVM-407 2 BTM 07 2 BTM 012 1-2 BTM 011 nicht möglich JCM-350 4 JCM-620 2 Result := SAEJ1939GetSPNConversion ( 1, 0xAE, actual_conversion_method); 147 JVM-407 8 Dateisystem Dateisystem Einleitung Dieses Kapitel beschreibt das Dateisystem des Bediengeräts JVM-407. Das Dateisystem ermöglicht den Zugriff auf die Dateien der internen Flash-Disk, der SD-Karte und eines USB-Sticks. Aufteilung Das Dateisystem unterscheidet zwischen Systemverzeichnissen/-dateien, die vom Betriebssystem verwendet werden, und dem Bereich, der dem Anwender zur freien Verfügung steht. Systemverzeichnisse Systemverzeichnisse können nicht gelöscht werden und sind auch nach dem Formatieren noch vorhanden: Verzeichnis /System /SD /USB Beschreibung System-Konfiguration Systeminformationen Root-Verzeichnis der SD-Karte Root-Verzeichnis des USB-Sticks Inhalt Thema Seite Eigenschaften ............................................................................................. 150 Benutzerverwaltung .................................................................................... 154 Belegung der Flash-Disk einsehen............................................................. 163 Betriebssystem-Update und Anwenderprogramm...................................... 167 Formatieren und Prüfen .............................................................................. 168 Jetter AG 149 8 Dateisystem 8.1 Eigenschaften Einleitung Dieses Kapitel beschreibt die Eigenschaften des Dateisystems. Es wird dabei zwischen der internen Flash-Disk, der SD-Karte und des USB-Sticks unterschieden. Allgemeine Eigenschaften Für die interne Flash-Disk, die SD-Karte und den USB-Stick gelten folgende Eigenschaften: Maximal 8 gleichzeitig geöffnete Dateien. Verzeichnisnamen werden durch einen Schrägstrich "/" und nicht durch einen umgekehrten Schrägstrich "\" getrennt. Beim Schreiben einer Datei erhält diese Datum und Uhrzeit der Echtzeituhr des Bediengeräts. Datum, Uhrzeit und/oder Dateigröße sind nicht bei allen Systemdateien verfügbar. Inhalt Thema Seite Eigenschaften der Flash-Disk ..................................................................... 151 Eigenschaften der SD-Karte ....................................................................... 152 Eigenschaften des USB-Sticks ................................................................... 153 150 Jetter AG JVM-407 Dateisystem Eigenschaften der Flash-Disk Größe Dem Anwender steht folgende Größe zur freien Verfügung: Parameter Größe der Flash-Disk Eigenschaften Wert 13184 KByte Die interne Flash-Disk hat folgende weitere Eigenschaften: Es sind bis zu 7 Verzeichnisebenen und 1 Dateiebene zulässig. Verzeichnis- und Dateinamen mit jeweils maximal 63 Zeichen Länge. Groß- und Kleinschreibung wird unterschieden. Für Verzeichnis- und Dateinamen sind alle Zeichen außer "/" und ".." erlaubt. Benutzer-/Zugriffsverwaltung mit maximal 31 Schlössern für maximal 33 Benutzer. Jetter AG 151 8 Dateisystem Eigenschaften der SD-Karte Größe Die Größe ist abhängig von der verwendeten SD-Karte: Parameter Getestete Größe Eigenschaften Wert 8 MByte ... 4 GByte Die SD-Karte hat folgende weitere Eigenschaften: FAT-16 und 32 kompatibel. Die maximale Länge des Pfades beträgt 260 Zeichen. Groß- und Kleinschreibung wird nicht unterschieden. In Verzeichnis- und Dateinamen sind nicht erlaubt: "/", "\", ":", "*", "?", """, "<", ">" und "|" Es gibt keine Benutzer-/Zugriffsverwaltung. 152 Jetter AG JVM-407 Dateisystem Eigenschaften des USB-Sticks Größe Die Größe ist abhängig von dem verwendeten USB-Stick: Parameter Getestete Größe Eigenschaften Wert 1 GByte ... 8 GByte Der USB-Stick hat folgende weitere Eigenschaften: FAT-16 + 32 kompatibel. Die maximale Länge des Pfades beträgt 260 Zeichen. Groß- und Kleinschreibung wird nicht unterschieden. In Verzeichnis- und Dateinamen sind nicht erlaubt: "/", "\", ":", "*", "?", """, "<", ">" und "|" Es gibt keine Benutzer-/Zugriffsverwaltung. Jetter AG 153 8 Dateisystem 8.2 Benutzerverwaltung Einleitung Im Dateisystem für die interne Flash-Disk besteht die Möglichkeit, Zugriffsrechte (Schlösser) für Verzeichnisse zu definieren und Benutzer einzurichten, deren Zugriffsrechte (Schlüssel) eingestellt werden können. Auf Verzeichnisse und Dateien, für die der Benutzer nicht den benötigten Schlüssel besitzt, kann nicht zugegriffen werden. Diese Verzeichnisse und Dateien werden bei einer FTP-Verbindung auch nicht angezeigt. Voraussetzungen Für die Benutzerverwaltung sind Administrator-Rechte nötig. Eigenschaften Die Benutzerverwaltung hat folgende Eigenschaften: Eigenschaft Dateien Maximalwert Anzahl Benutzer 33 Anzahl vordefinierter Benutzer 2 Länge Benutzername 31 alphanummerische Zeichen Länge Passwort 31 alphanummerische Zeichen Anzahl Leseschlüssel 31 Anzahl Schreibschlüssel 31 Anzahl vordefinierter Schlüssel 2 Die Einstellungen der Benutzerverwaltung werden in 3 Dateien im Verzeichnis "/System" vorgenommen: Datei Funktion flashdisklock.ini Schlösser an Verzeichnisse anbringen keys.ini Namen für Schlösser/Schlüssel vergeben users.ini Benutzer verwalten Die Dateien sind immer vorhanden. Sie können nicht gelöscht, sondern nur geändert oder überschrieben werden. Einschränkungen Beachten Sie bitte die folgenden Einschränkungen: Die Benutzerverwaltung ist nur für die interne Flash-Disk möglich. Sie ist nicht auf die SD-Karte anwendbar. Nach Übertragen einer Datei der Benutzerverwaltung kann ihr Inhalt sofort gelesen werden. Die Einstellungen werden jedoch erst nach dem nächsten Boot-Vorgang gültig. 154 Jetter AG JVM-407 Dateisystem Inhalt Thema Seite Benutzer verwalten ..................................................................................... 156 Auslieferungszustand / Vordefinierte Benutzer und Schlüssel ................... 158 Schloss anbringen ...................................................................................... 159 Namen einrichten für Schlüssel/Schlösser ................................................. 161 Jetter AG 155 8 Dateisystem Benutzer verwalten Einleitung Die Benutzer des Dateisystems des JVM-407 verwalten Sie in der Konfigurations-Datei "/System/users.ini". Voraussetzungen Wenn Sie Namen für die Schlüssel verwenden wollen, müssen diese zuvor dem Gerät bekannt gemacht werden. Richten Sie die Namen deshalb zuerst ein (Einrichten von Namen für Schlüssel/Schlösser auf Seite 161). Benutzer verwalten Führen Sie folgende Schritte aus, um die Benutzer zu verwalten: Schritt Vorgehen 1 Stellen Sie eine FTP-Verbindung zum Gerät her; melden Sie sich hierbei mit Administrator-Rechten an. 2 Öffnen Sie die Datei "/System/users.ini". 3 Führen Sie die Änderungen in der Datei durch. 4 Speichern Sie die geänderte Datei wieder auf dem Gerät. 5 Booten Sie das Gerät neu. Ergebnis: Die geänderten Benutzereinstellungen sind aktiv. Aufbau der Datei "/System/users.ini" Die Konfigurations-Datei ist eine Textdatei, deren Einträge in Sektionen gruppiert sind. Für jeden Benutzer wird eine eigene Sektion verwendet. In diesen Sektionen werden Werte gesetzt, mit denen das Dateisystem arbeitet. Leerzeilen können beliebig eingefügt werden. Kommentarzeilen werden mit "!", "#" oder ";" eingeleitet. Sektionen Die Namen der Sektionen sind "[USER1]" bis "[USER33]". Hier legen Sie jeweils Benutzername und Passwort sowie die Lese- und Schreibrechte fest. Beispiel: [USER4] NAME=TestUser3 PW=testpass READKEYS=5,openLock2,10,11 WRITEKEYS=openLock2,10,11 SYSKEYS= 156 Jetter AG JVM-407 Dateisystem NAME im Beispiel TestUser3 Funktion Anmeldename des Benutzers gültige Werte maximal 31 alphanummerische Zeichen bei ungültigem Wert oder nicht vorhandenem Eintrag wird der Benutzer nicht angelegt PW im Beispiel testpass Funktion Anmeldepasswort des Benutzers gültige Werte maximal 31 alphanummerische Zeichen bei nicht vorhandenem Eintrag wird für die Anmeldung des Benutzers kein Passwort benötigt READKEYS im Beispiel 5,openLock2,10,11 Funktion Schlüssel für Lesezugriffe gültige Werte 1 ... 31 (oder entsprechende Namen) bei nicht vorhandenem Eintrag erhält der Benutzer keine Leseschlüssel WRITEKEYS im Beispiel openLock2,10,11 Funktion Schlüssel für Schreibzugriffe gültige Werte 1 ... 31 (oder entsprechende Namen) bei nicht vorhandenem Eintrag erhält der Benutzer keine Schreibschlüssel SYSKEYS Funktion Jetter AG keine Funktion; reserviert für zukünftige Erweiterungen 157 8 Dateisystem Auslieferungszustand / Vordefinierte Benutzer und Schlüssel Einleitung Im Dateisystem sind 2 Benutzer mit festgelegten Rechten bereits vordefiniert, die auch nicht gelöscht werden können. Mit Hilfe der Benutzerverwaltung können Sie für diese Benutzer lediglich ein anderes Passwort festlegen. Auslieferungszustand Im Auslieferungszustand des Bediengeräts hat die Konfigurations-Datei folgenden Inhalt: [USER1] NAME=admin PW=admin READKEYS=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,2 2,23,24,25,26,27,28,29,30,31 WRITEKEYS=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21, 22,23,24,25,26,27,28,29,30,31 SYSKEYS= [USER33] NAME=system PW=system READKEYS=2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22, 23,24,25,26,27,28,29,30,31 WRITEKEYS=2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22 ,23,24,25,26,27,28,29,30,31 SYSKEYS= Benutzer "admin" Dieser hat alle Schlüssel und kann somit auf alle Verzeichnisse und Dateien lesend und schreibend zugreifen. Benutzer "system" Dieser hat bis auf Schlüssel "1" ebenfalls alle Schlüssel. Vordefinierte Schlüssel Von den 31 Schlüsseln haben 2 eine vordefinierte Bedeutung: Schloss / Schlüssel 1 2 158 Funktion IP-Konfiguration Benutzerverwaltung Betriebssystem-Update der CPU Jetter AG JVM-407 Dateisystem Schloss anbringen Einleitung In der Konfigurations-Datei "/System/flashdisklock.ini" versehen Sie Verzeichnisse der Flash-Disk mit Schlössern. Nur Benutzer mit dem passenden Schlüssel können Dateien und Unterverzeichnisse in diesen Verzeichnissen lesen und/oder schreiben (löschen). Voraussetzungen Wenn Sie Namen für die Schlösser verwenden wollen, müssen diese zuvor dem Gerät JVM-407 bekannt gemacht werden. Richten Sie die Namen deshalb zuerst ein (Namen einrichten für Schlüssel/Schlösser auf Seite 161). Schloss anbringen Führen Sie folgende Schritte aus, um ein Schloss an ein Verzeichnis anzubringen: Schritt Vorgehen 1 Stellen Sie eine FTP-Verbindung zu dem Gerät her; melden Sie sich hierbei mit Administratorrechten an. 2 Öffnen Sie die Datei "/System/flashdisklock.ini". 3 Führen Sie die Änderungen in der Datei durch. 4 Speichern Sie die geänderte Datei wieder auf dem Gerät. 5 Booten Sie das Gerät neu. Ergebnis: Das Verzeichnis ist mit einem Schloss versehen. Aufbau der Datei "/System/flashdisklock.ini" Die Konfigurations-Datei ist eine Textdatei, die eine Sektion enthält. In dieser Sektion werden Werte gesetzt, mit denen das Dateisystem arbeitet. Jedes Verzeichnis wird mit seiner Schlossnummer auf einer eigenen Zeile angegeben. Leerzeilen können beliebig eingefügt werden. Kommentarzeilen werden mit "!", "#" oder ";" eingeleitet. Sektion Der Name der Sektion ist "[LOCKS]". Hier ordnen Sie die Schlösser den Verzeichnissen nach folgendem Schema zu: Verzeichnis=Schloss Beispiel: [LOCKS] test1=0 test1/sub1=2 test1/sub2=5 test2=userlock2 Jetter AG 159 8 Dateisystem Schlossnummern Verwenden Sie folgende Schlossnummern: Gültige Schlossnummern: 0 ... 31. Schlossnummer 0: Am Verzeichnis ist kein Schloss angebracht. Es ist keine besondere Zugangsberechtigung notwendig. Es können Nummern oder zuvor definierte Namen verwendet werden. 160 Jetter AG JVM-407 Dateisystem Namen einrichten für Schlüssel/Schlösser Einleitung Die Schlüssel/Schlösser sind von 1 bis 31 durchnummeriert. Um einfacher mit Schlüssel/Schloss umgehen zu können, kann jedem Schlüssel/Schloss ein Name zugeordnet werden. In der Konfigurations-Datei "/System/keys.ini" richten Sie die Namen ein. Namen einrichten Führen Sie folgende Schritte aus, um Namen für Schlüssel/Schlösser einzurichten: Schritt Vorgehen 1 Stellen Sie eine FTP-Verbindung zu dem Gerät JVM-407 her; melden Sie sich hierbei mit Administratorrechten an. 2 Öffnen Sie die Datei "/System/keys.ini". 3 Führen Sie die Änderungen in der Datei durch. 4 Speichern Sie die geänderte Datei wieder auf dem Gerät. 5 Booten Sie das Gerät neu. Ergebnis: Die Namen stehen jetzt zur Verfügung und können beim Anbringen von Schlössern und Verwalten von Benutzern verwendet werden. Aufbau der Datei "/System/keys.ini" Die Konfigurations-Datei ist eine Textdatei, die eine Sektion enthält. In dieser Sektion werden Werte gesetzt, mit denen das Dateisystem arbei- tet. Jeder Schlüssel ist mit seinem Namen auf einer eigenen Zeile angegeben. Leerzeilen können beliebig eingefügt werden. Kommentarzeilen werden mit "!", "#" oder ";" eingeleitet. Sektion Der Name der Sektion ist "[KEYS]". Hier ordnen Sie die Namen den Schlüsseln/Schlössern nach folgendem Schema zu: KEYxx=Name xx: Nummer des Schlüssels (01 ... 31) Beispiel: [KEYS] KEY01=Admin KEY02=System KEY03= KEY04= KEY05=service ... KEY31= Jetter AG 161 8 Dateisystem Namen für Schlösser und Schlüssel 162 Für die Namen gelten folgende Festlegungen: Maximal 15 alphanummerische Zeichen. Für Schloss und Schlüssel wird der selbe Name verwendet. Jetter AG JVM-407 Dateisystem 8.3 Belegung der Flash-Disk einsehen Einleitung Dieses Kapitel beschreibt wie die Belegung des Anwenderbereichs der internen Flash-Disk eingesehen werden kann. Inhalt Thema Seite Belegung der Flash-Disk ............................................................................ 164 Jetter AG 163 8 Dateisystem Belegung der Flash-Disk Info-Datei Die Belegung des Anwenderbereichs der internen Flash-Disk lesen Sie aus der Datei "/System/flashdiskinfo.txt". Beispiel Das Beispiel zeigt die mögliche Belegung der Flash-Disk eines JetControl 340 (4 MByte): Name : Date : Time : Tracks: Track Track Track Track Track Track Track Track Track Track Track Track Track Track Track Track Track Track Track Track Track Track Track Track Track Track Track Track Track Track Track Track Track Track Track 164 flash disk 25.11.2008 15:04 64 0: 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: sectors: sectors: sectors: sectors: sectors: sectors: sectors: sectors: sectors: sectors: sectors: sectors: sectors: sectors: sectors: sectors: sectors: sectors: sectors: sectors: sectors: sectors: sectors: sectors: sectors: sectors: sectors: sectors: sectors: sectors: sectors: sectors: sectors: sectors: sectors: 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 (used: (used: (used: (used: (used: (used: (used: (used: (used: (used: (used: (used: (used: (used: (used: (used: (used: (used: (used: (used: (used: (used: (used: (used: (used: (used: (used: (used: (used: (used: (used: (used: (used: (used: (used: 81 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 64 85 128 128 128 128 128 128 128 128 128 128 128 105 0 / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / blocked: blocked: blocked: blocked: blocked: blocked: blocked: blocked: blocked: blocked: blocked: blocked: blocked: blocked: blocked: blocked: blocked: blocked: blocked: blocked: blocked: blocked: blocked: blocked: blocked: blocked: blocked: blocked: blocked: blocked: blocked: blocked: blocked: blocked: blocked: 47 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 64 43 0 0 0 0 0 0 0 0 0 0 0 0 0 / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / free: 0) free: 0) free: 0) free: 0) free: 0) free: 0) free: 0) free: 0) free: 0) free: 0) free: 0) free: 0) free: 0) free: 0) free: 0) free: 0) free: 0) free: 0) free: 0) free: 0) free: 0) free: 0) free: 0) free: 0) free: 0) free: 0) free: 0) free: 0) free: 0) free: 0) free: 0) free: 0) free: 0) free: 23) free: 128) Jetter AG JVM-407 Dateisystem Track Track Track Track Track Track Track Track Track Track Track Track Track Track Track Track Track Track Track Track Track Track Track Track Track Track Track Track Track 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: Total: 2120900 78232 1962404 4161536 (used: (used: (used: (used: (used: (used: (used: (used: (used: (used: (used: (used: (used: (used: (used: (used: (used: (used: (used: (used: (used: (used: (used: (used: (used: (used: (used: (used: (used: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 / / / / / / / / / / / / / / / / / / / / / / / / / / / / / blocked: blocked: blocked: blocked: blocked: blocked: blocked: blocked: blocked: blocked: blocked: blocked: blocked: blocked: blocked: blocked: blocked: blocked: blocked: blocked: blocked: blocked: blocked: blocked: blocked: blocked: blocked: blocked: blocked: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 / / / / / / / / / / / / / / / / / / / / / / / / / / / / / free: free: free: free: free: free: free: free: free: free: free: free: free: free: free: free: free: free: free: free: free: free: free: free: free: free: free: free: free: 128) 128) 128) 128) 128) 128) 128) 128) 128) 128) 128) 128) 128) 128) 128) 128) 128) 128) 128) 128) 128) 128) 128) 128) 128) 128) 128) 128) 128) (used: 4175 / blocked: 154 / free: 3863) byte byte byte byte Tracks und Sectors bilden die Verwaltungseinheiten der Flash-Disk. Die Info-Datei ist entsprechend aufgebaut. Die Datei enthält folgende Elemente: Teil Jetter AG 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 sectors: 8192 Used : Blocked: Free : Total : Elemente der Info-Datei sectors: sectors: sectors: sectors: sectors: sectors: sectors: sectors: sectors: sectors: sectors: sectors: sectors: sectors: sectors: sectors: sectors: sectors: sectors: sectors: sectors: sectors: sectors: sectors: sectors: sectors: sectors: sectors: sectors: Funktion Name Fester Name der Flash-Disk Date / Time Zeitpunkt, wann die Flash-Disk zuletzt formatiert wurde Tracks Gesamtzahl der Tracks Track xx: sectors: 128 Belegung der Sectors eines Tracks Total: sectors: Gesamtstatistik der Sectors Used Gesamtzahl der belegten Byte 165 8 Dateisystem Teil Zustände der Sectors Blocked Gesamtzahl der blockierten Byte Free Gesamtzahl der freien Byte Total Gesamtgröße der Flash-Disk Die kleinste Verwaltungseinheit der Flash-Disk, der Sector, kann folgende Zustände einnehmen: Zustand 166 Funktion Bedeutung used Der Sector ist durch Daten belegt. blocked Der Sector ist nicht mehr belegt, kann aber aus Verwaltungsgründen noch nicht wieder benutzt werden. free Der Sector ist nicht belegt und kann benutzt werden. Jetter AG JVM-407 Dateisystem 8.4 Betriebssystem-Update und Anwenderprogramm Einleitung Das Betriebssystem-Update bei einer Steuerung einem Bediengerät oder bei einem I/O-Modul und der Zugriff auf das Anwenderprogramm kann über das Dateisystem durchgeführt werden. Eine detaillierte Beschreibung finden Sie in den jeweiligen Kapiteln: Betriebssystem-Update auf Seite 333 Anwenderprogramm auf Seite 341 Jetter AG 167 8 Dateisystem 8.5 Formatieren und Prüfen Einleitung Dieses Kapitel beschreibt wie die interne Flash-Disk, die SD-Karte und ein USB-Stick formatiert und überprüft werden können. Die interne Flash-Disk braucht nicht durch eine separate Funktion überprüft werden, da sie bereits auf maximale Sicherheit der Verwaltungsstrukturen ausgelegt ist. Funktionsweise Beim Booten des Geräts JVM-407 wird vom Betriebssystem der Inhalt des Steuerregisters des Dateisystems geprüft. Abhängig vom Wert in diesem Register werden die folgenden Funktionen ausgeführt: Registernummer Flash-Disk formatieren SD-Karte formatieren USB-Stick formatieren SD-Karte überprüfen USB-Stick überprüfen Die Nummer des Steuerregisters des Dateisystems ist steuerungsabhängig: Steuerung Registernummer JC-24x 2936 JM-D203-JC24x 2936 JC-340, JC-350, JC-360 202936 JVM-407 202936 Inhalt Thema Seite Flash-Disk formatieren ................................................................................ 169 SD-Karte formatieren .................................................................................. 170 USB-Stick formatieren................................................................................. 171 SD-Karte überprüfen ................................................................................... 172 USB-Stick überprüfen ................................................................................. 173 168 Jetter AG JVM-407 Dateisystem Flash-Disk formatieren Einleitung Unter Umständen kann es notwendig sein, die Flash-Disk neu zu formatieren. Dies kann dann der Fall sein, wenn eine Betriebssystemversion eingespielt wird, die ein geändertes Flash-Disk Format hat. Oder wenn Informationen zur Verwaltung der Flash-Disk zerstört wurden. Auswirkungen Alle Dateien und Verzeichnisse des Anwenderbereichs werden gelöscht. Systemdateien und Systemverzeichnisse werden nicht beeinflusst. Flash-Disk formatieren Führen Sie folgende Schritte aus, um die Steuerung zum Formatieren der internen Flash-Disk zu veranlassen: Schritt Vorgehen 1 Schalten Sie das Gerät JVM-407 ein. 2 Beschreiben Sie das Steuerregister des Dateisystems mit dem Wert -999720373 (0xc4697a4b). 3 Schalten Sie das Gerät aus. 4 Schalten Sie das Gerät ein. Ergebnis: Während der Boot-Phase des JVM-407 wird die Flash-Disk formatiert und das Steuerregister auf 0 gesetzt. Jetter AG 169 8 Dateisystem SD-Karte formatieren Einleitung Unter Umständen kann es notwendig sein, die SD-Karte neu zu formatieren. Dies kann dann der Fall sein, wenn Informationen zur Verwaltung der SD-Karte zerstört wurden. Auswirkungen Alle Dateien und Verzeichnisse auf der SD-Karte werden gelöscht. SD-Karte formatieren Führen Sie folgende Schritte aus, damit das Gerät JVM-407 die SD-Karte formatiert: Schritt Vorgehen 1 Schalten Sie das Gerät ein. 2 Beschreiben Sie das Steuerregister des Dateisystems mit dem Wert -748362163 (0xd364e64d). 3 Schalten Sie das Gerät aus. 4 Schalten Sie das Gerät ein. Ergebnis: Während der Boot-Phase des JVM-407 wird die SD-Karte formatiert und das Steuerregister auf 0 gesetzt. 170 Jetter AG JVM-407 Dateisystem USB-Stick formatieren Einleitung Unter Umständen kann es notwendig sein, den USB-Stick neu zu formatieren. Dies kann dann der Fall sein, wenn Informationen zur Verwaltung des USB-Sticks zerstört wurden. Auswirkungen Alle Dateien und Verzeichnisse auf dem USB-Stick werden gelöscht. Formatieren Führen Sie folgende Schritte aus, damit der USB-Stick formatiert wird: Schritt Vorgehen 1 Schalten Sie das Bediengerät ein. 2 Beschreiben Sie das Steuerregister des Dateisystems mit dem Wert (0x8f3d5185). 3 Schalten Sie das Bediengerät aus. 4 Schalten Sie das Bediengerät ein. Ergebnis: Während der Boot-Phase des Bediengeräts wird der USB-Stick formatiert und das Steuerregister auf 0 gesetzt. Jetter AG 171 8 Dateisystem SD-Karte überprüfen Einleitung Unter Umständen kann es notwendig sein, die SD-Karte auf Fehler zu überprüfen. Dies kann dann der Fall sein, wenn das Gerät JVM-407 ausgeschaltet wurde während auf die SD-Karte zugegriffen wurde. Auswirkungen Alle Dateien und Verzeichnisse auf der SD-Karte werden überprüft und Fehler gegebenenfalls korrigiert. Anschließend sind die Verwaltungsstrukturen auf der SD-Karte in einem konsistenten Zustand. Abhängig von der Größe der SD-Karte und der Anzahl der Verzeichnisse und Dateien kann die Boot-Phase des JVM-407 bis auf mehrere Minuten verlängert werden. SD-Karte überprüfen Führen Sie folgende Schritte aus, damit das Gerät JVM-407 die SD-Karte überprüft: Schritt Vorgehen 1 Schalten Sie das Gerät ein. 2 Beschreiben Sie das Steuerregister des Dateisystems mit dem Wert 748371092 (0x2c9b3c94). 3 Schalten Sie das Gerät aus. 4 Schalten Sie das Gerät ein. Ergebnis: Während der Boot-Phase des JVM-407 wird die SD-Karte überprüft. Der Wert im Steuerregister bleibt erhalten, so dass die Überprüfung bei jedem Neustart des JVM-407 durchgeführt wird. Einschränkungen 172 Die Funktion "repariert" die Verwaltungsstrukturen der SD-Karte, damit diese weiter verwendet werden kann. Zum Beispiel können die Daten einer unvollständig geschriebenen Datei nicht immer restauriert werden. Jetter AG JVM-407 Dateisystem USB-Stick überprüfen Einleitung Unter Umständen kann es notwendig sein, den USB-Stick auf Fehler zu überprüfen. Dies kann dann der Fall sein, wenn das Bediengerät ausgeschaltet wurde während auf den USB-Stick zugegriffen wurde. Auswirkungen Alle Dateien und Verzeichnisse auf dem USB-Stick werden überprüft und Fehler gegebenenfalls korrigiert. Anschließend sind die Verwaltungsstrukturen auf dem USB-Stick in einem konsistenten Zustand. Abhängig von der Größe des USB-Sticks und der Anzahl der Verzeichnisse und Dateien kann die Boot-Phase des Bediengeräts bis auf mehrere Minuten verlängert werden. Überprüfung Führen Sie folgende Schritte aus, damit das Bediengerät den USB-Stick überprüft: Schritt Vorgehen 1 Schalten Sie das Bediengerät ein. 2 Beschreiben Sie das Steuerregister des Dateisystems mit dem Wert (0x17dbd42a). 3 Schalten Sie das Bediengerät aus. 4 Schalten Sie das Bediengerät ein. Ergebnis: Während der Boot-Phase des JVM-407 wird der USB-Stick überprüft. Der Wert im Steuerregister bleibt erhalten, so dass die Überprüfung bei jedem Neustart des Bediengeräts durchgeführt wird. Einschränkungen Jetter AG Die Funktion "repariert" nur die Verwaltungsstrukturen des USB-Sticks, damit dieser weiter verwendet werden kann. Zum Beispiel können die Daten einer unvollständig geschriebenen Datei nicht immer restauriert werden. 173 JVM-407 9 FTP-Server FTP-Server Einleitung Der FTP-Server erlaubt den Zugriff auf Verzeichnisse und Dateien der im JVM-407 eingebauten Flash-Disk oder der SD-Karte mittels eines FTP-Clients. Dieses Kapitel beschreibt den Vorgang der Anmeldung und die vom FTP-Server unterstützten Kommandos. FTP-Clients Außer dem Kommandozeilen FTP-Client, wie er bei vielen PC-Betriebssystemen mitgeliefert wird, können auch grafische FTP-Tools verwendet werden. Anzahl möglicher Verbindungen Der FTP-Server des JVM-407 kann maximal vier gleichzeitig geöffnete FTP-Verbindungen verwalten. Das bedeutet, dass gleichzeitig bis zu vier FTP-Clients mit dem JVM-407 verbunden sein können. Jeder weitere Client, der sich versucht mit dem FTP-Server zu verbinden, erhält auf seine Anfrage zum Aufbau einer Verbindung keine Antwort. Kenntnisse des Programmierers In diesem Kapitel werden folgende Kenntnisse vorausgesetzt: Kenntnisse über das Dateisystem der Steuerung sind notwendig. Kenntnisse über IP-Netzwerke sind notwendig. Inhalt Thema Seite Anmeldung.................................................................................................. 176 Unterstützte Kommandos ........................................................................... 177 Beispiel: Windows FTP-Client .................................................................... 178 Jetter AG 175 9 FTP-Server Anmeldung Anmeldung Um auf das Dateisystem über FTP zugreifen zu können, muss sich der FTP-Client bei der Aufnahme der Kommunikation über Benutzername und Passwort anmelden. Auslieferungszustand Im Auslieferungszustand der Steuerung sind zwei Benutzer (User) eingerichtet: [USER1] NAME=admin PW=admin [USER33] NAME=system PW=system Benutzer verwalten Über die Benutzerverwaltung des Dateisystems kann das Passwort geändert und weitere Benutzer hinzugefügt werden. Verwandte Themen Benutzerverwaltung auf Seite 154 176 Jetter AG JVM-407 FTP-Server Unterstützte Kommandos Unterstützte Kommandos In der folgenden Tabelle sind die dem FTP-Server bekannten Kommandos und ihre Bedeutung beschrieben. Kommando Bedeutung USER Sende Benutzername; wird zu Beginn des Login-Vorgangs benutzt PASS Sende Passwort; wird nach USER gesendet, um den Login-Vorgang abzuschließen QUIT Beendet die Verbindung PORT Spezifiziert die IP-Adresse und Portnummer, zu welchem sich der FTP-Server für die nächste Dateiübertragung verbinden soll TYPE Setzt den Transfertyp; dabei sind möglich: Jetter AG Typ A mit Interpretation N Typ I Typ L mit 8 Bit pro Zeichen MODE Setzt den Transfermodus; hier ist nur "S" (Stream) möglich STRU Setzt die Dateistruktur bei der Übertragung; hier ist nur "F" (File) möglich NLST Gibt eine Liste der Dateinamen eines Verzeichnisses zurück LIST Gibt eine Liste der Dateinamen und der Dateiinformationen eines Verzeichnisses zurück PWD Gibt den Namen des aktuellen Verzeichnisses zurück CWD Wechselt das aktuelle Verzeichnis CDUP Wechselt eine Verzeichnisebene höher MKD Legt ein Verzeichnis an RMD Löscht ein Verzeichnis STOR Speichert eine Datei RETR Liest eine Datei DELE Löscht eine Datei RNFR Gibt den Dateinamen an, der geändert werden soll; muss von dem Kommando "RNTO" gefolgt werden RNTO Gibt den neuen Namen der Datei an, die zuvor mit dem Kommando "RNFR" spezifiziert worden war PASV FTP-Server wechselt in den "passive mode" 177 9 FTP-Server Beispiel: Windows FTP-Client Aufgabe Mit dem FTP-Client von z. B. Windows XP sollen folgende Aufgaben durchgeführt werden: Aufruf des FTP-Clients mit Öffnen der Verbindung Login mit Benutzer "admin" und Passwort "admin" Anzeigen des Inhalts des aktuellen Verzeichnisses mit "dir" Übertragen der Datei "jetter1.jpg" auf den JetControl mit Kommando "put" Nochmaliges Anzeigen des Inhalts des aktuellen Verzeichnisses mit "dir" Beenden der Sitzung und des FTP-Clients mit "bye" Vorgehen 178 Jetter AG JVM-407 HTTP-Server 10 HTTP-Server Einleitung Auf den HTTP-Server kann mit einem Standard-Browser zugegriffen werden. Mit dem Browser können Dateien, die mittels FTP auf die Steuerung geladen wurden, gelesen und angezeigt werden. Um Zugriff auf bestimmte Seiten zu erhalten, kann es, je nach Konfiguration des Dateisystems, notwendig sein, Benutzername und Passwort eingeben zu müssen. Dieses Kapitel beschreibt die im HTTP-Server enthaltenen Funktionalität "Server Side Includes" (SSI). Vorgegebene Dateinamen Die vorgegebenen Dateinamen sind index.htm und index.html. Unterstützte Dateitypen Folgende Dateitypen werden unterstützt: Funktion HTTP-Server aktivieren *.htm, *.html, *.shtml *.txt, *.ini *.gif, *.tif, *.tiff, *.bmp, *.wbmp *.jpg, *.jpe, *.jpeg, *.png *.xml *.js, *.jar, *.java, *.class, *.cab *.ocx *.pdf, *.zip, *.doc, *.rtf *.css *.wml, *.wmlc, *.wmls, *.wmlsc Für die Aktivierung der Funktion HTTP-Server in der Steuerung muss die folgende Voraussetzung erfüllt sein: Die Steuerung wurde mit der Option -W bestellt. Ist diese Voraussetzungen erfüllt, wird das Bit 1 im Web-Statusregister 202930 gesetzt. Kenntnisse des Programmierers In diesem Kapitel werden folgende Kenntnisse vorausgesetzt: Kenntnisse über das Dateisystem der Steuerung sind notwendig. Kenntnisse über IP-Netzwerke sind notwendig. Inhalt Thema Seite Server Side Includes .................................................................................. 180 Jetter AG 179 10 HTTP-Server 10.1 Server Side Includes Einleitung Mit Hilfe der im HTTP-Server enthaltenen Funktionalität der Server Side Includes (SSI) können in einer HTML-Seite aktuelle Echtzeit-Steuerungswerte angezeigt werden. Regeln Am Beginn einer HTML-Seite, in die aktuelle Echtzeit-Steuerungswerte eingebunden werden sollen, muss ein Name Space Tag angegeben werden, in dem der in der HTML-Seite verwendete Name Space definiert wird. Im Body-Bereich der HTML-Seite folgen die Data Tags. EchtzeitSteuerungswerte aktualisieren Beim Laden der Seite in den Browser werden die Data Tags durch den HTTP-Server einmalig durch aktuelle Echtzeit-Steuerungswerte ersetzt. Um die Werte zu aktualisieren, muss die HTML-Seite jeweils neu geladen werden. Inhalt Thema Seite Name Space Tag ......................................................................................... 181 Einfügen von Echtzeit-Steuerungswerten ................................................... 182 Beispiel einer HTML-Seite .......................................................................... 187 180 Jetter AG JVM-407 HTTP-Server Name Space Tag Aufbau Name Space Tag Der Name Name Space Tag muss der erste Eintrag in der HTML-Datei sein und hat folgenden Aufbau: <NS:DTAG xmlns:NS=http://jetter.de/ssi/jetcontrol/ Wobei NS den Name Space darstellt. Hierfür kann eine Zeichenfolge mit einer maximalen Länge von 63 Zeichen gewählt werden. Der hier eingeführte Name Space wird bei den nachfolgenden Data Tags wieder benutzt. Die übrigen Teile der Zeile sind festgelegt und müssen genauso angegeben werden. Der in den folgenden Beispielen verwendete Name Space ist JW. Jetter AG 181 10 HTTP-Server Einfügen von Echtzeit-Steuerungswerten Einleitung Aktuelle Echtzeit-Steuerungswerte können über Tag-Funktionen in die Parameter der Sektionen integriert werden. Damit können Zustände von Registern, Textregistern, Eingängen, Ausgängen und Merkern angezeigt werden. Tag-Kennzeichnung Alle Tags beginnen und enden mit bestimmten Zeichenfolgen. Zwischen diesen Tag-Begrenzern werden die Variablen definiert: Kennzeichnung Variablendefinition Zeichenfolge Beginn eines Tags <JW:DTAG Ende eines Tags /> Die Variablendefinition in einem Tag enthält Attribute, über die beispielsweise die Art der Darstellung des Variablenwertes eingestellt werden kann: name Funktion Variablenname Bemerkungen Kennbuchstabe gefolgt von der Variablennummer Beispiel name="R1000023" type Funktion Variablentyp der Darstellung Beispiel type="REAL" format Funktion Darstellungsformat Bemerkungen siehe Formatdefinition Beispiel format="+0####.###" factor Funktion Faktor mit dem der Echtzeit-Steuerungswert multipliziert wird Bemerkungen wird vor der Addition des Offset ausgeführt Beispiel factor="1.5" offset 182 Funktion Wert, der zum Echtzeit-Steuerungswert addiert wird Bemerkungen erfolgt nach der Multiplikation mit dem Faktor Beispiel offset="1000" Jetter AG JVM-407 Formatdefinition HTTP-Server Die Darstellung der Variablen kann über das Attribut gesteuert werden. Die Anzahl der Stellen/Zeichen, mit denen eine Variable dargestellt wird, lässt sich mit dem Zeichen "#" definieren. Durch Voranstellen einer "0" kann bei den Registertypen INT, INTX und REAL die Ausgabe von führenden Nullen eingestellt werden. Durch Voranstellen eines Plus-Zeichens "+" kann bei den Registertypen INT und REAL die Ausgabe eines Vorzeichens eingestellt werden. Register / Textregister Durch Voranstellen eines Leerzeichens kann bei den Registertypen INT und REAL die Ausgabe eines Leerzeichens für positive Werte eingestellt werden. Der Variablenname beginnt mit einem großen "R" gefolgt von der Registernummer. Folgende Typen sind möglich: Typ Darstellung INT Ganzzahl dezimal INTX Ganzzahl hexadezimal INTB Ganzzahl binär BOOL Registerinhalt = 0 --> Anzeige: 0 Registerinhalt != 0 --> Anzeige: 1 REAL Gleitkommazahl dezimal STRING Textregister Standardtyp: INT Beispiel: <JW:DTAG name="R1000250" type="REAL" format="+0####.###" factor="3.25" offset="500" /> Ergebnis: Der Inhalt von Register 1000250 wird mit 3,25 multipliziert, zu dem Produkt 500 hinzuaddiert und das Ergebnis mit Vorzeichen und mindestens fünf Vorkommastellen angezeigt. Falls nötig, wird mit führenden Nullen aufgefüllt. Darüberhinaus werden drei Nachkommastellen angefügt. Merker Der Variablenname beginnt mit einem großen "F" gefolgt von der Merkernummer. Folgende Typen sind möglich: Typ Jetter AG Darstellung BOOL Merker = 0 --> Anzeige: 0 Merker = 1 --> Anzeige: 1 STRING Merker = 0 --> Anzeige: FALSE Merker = 1 --> Anzeige: TRUE 183 10 HTTP-Server Standardtyp: BOOL Beispiel: <JW:DTAG name="F100" type="STRING" format="#" /> Ergebnis: Der Zustand des Merkers 100 wird als String "T" oder "F" eingefügt. Eingänge Der Variablenname beginnt mit einem großen "I" gefolgt von der Eingangsnummer. Folgende Typen sind möglich: Typ Darstellung BOOL Eingang = 0 --> Anzeige: 0 Eingang = 1 --> Anzeige: 1 STRING Eingang = 0 --> Anzeige: OFF Eingang = 1 --> Anzeige: ON Standardtyp: BOOL Beispiel: <JW:DTAG name="I100000308" type="STRING" /> Ergebnis: Der Zustand des Eingangs 100000308 wird als String "ON" oder "OFF" eingefügt. Ausgänge Der Variablenname beginnt mit einem großen "O" gefolgt von der Ausgangsnummer. Folgende Typen sind möglich: Typ Darstellung BOOL Ausgang = 0 --> Anzeige: 0 Ausgang = 1 --> Anzeige: 1 STRING Ausgang = 0 --> Anzeige: OFF Ausgang = 1 --> Anzeige: ON Standardtyp: BOOL Beispiel: <JW:DTAG name="O100000308" /> Ergebnis: Der Zustand des Ausgangs 100000308 wird als "1" oder "0" eingefügt. 184 Jetter AG JVM-407 Zugriff über Zeigerregister HTTP-Server Zugriff über ein Zeigerregister ist möglich durch Einfügen eines großen "P" vor dem Variablennamen. Es wird jeweils der Wert der Variablen angezeigt, deren Nummer dem Inhalt des im Variablennamen spezifizierten Registers entspricht. Beispiele: <JW:DTAG name="PR1000300" /> Ergebnis: Der Inhalt des Registers, dessen Nummer im Register 1000300 enthalten ist, wird angezeigt. <JW:DTAG name="PF1000300" /> Ergebnis: Der Zustand des Merkers, dessen Nummer im Register 1000300 enthalten ist, wird angezeigt. <JW:DTAG name="PI1000300" /> Ergebnis: Der Zustand des Eingangs, dessen Nummer im Register 1000300 enthalten ist, wird angezeigt. <JW:DTAG name="PO1000300" /> Ergebnis: Der Zustand des Ausgangs, dessen Nummer im Register 1000300 enthalten ist, wird angezeigt. Zugriff über Zeigerregister und Offset Zusätzlich zum Wert aus dem Zeigerregister kann noch ein konstanter Wert oder ein weiterer Registerinhalt addiert werden, um die Nummer der anzuzeigenden Variablen zu bilden. Beispiele: <JW:DTAG name="PR1000300 + 100" /> Ergebnis: Der Inhalt des Registers, dessen Nummer sich aus der Addition des Inhalts von Register 1000300 und dem Wert 100 ergibt, wird angezeigt. <JW:DTAG name="PR1000300 + R1000100" /> Ergebnis: Der Inhalt des Registers, dessen Nummer sich aus der Addition des Inhalts von Register 1000300 und dem Inhalt von Register 1000100 ergibt, wird angezeigt. <JW:DTAG name="PF1000300 + 100" /> Ergebnis: Der Zustand des Merkers, dessen Nummer sich aus der Addition des Inhalts von Register 1000300 und dem 100 ergibt, wird angezeigt. <JW:DTAG name="PF1000300 + R1000100" /> Ergebnis: Der Zustand des Merkers, dessen Nummer sich aus der Addition des Inhalts von Register 1000300 und dem Inhalt von Register 1000100 ergibt, wird angezeigt. <JW:DTAG name="PI1000300 + 100" /> Ergebnis: Der Zustand des Eingangs, dessen Nummer sich aus der Addition des Inhalts von Register 1000300 und dem Wert 100 ergibt, wird angezeigt. Jetter AG 185 10 HTTP-Server <JW:DTAG name="PI1000300 + R1000100" /> Ergebnis: Der Zustand des Eingangs, dessen Nummer sich aus der Addition des Inhalts von Register 1000300 und dem Inhalt von Register 1000100 ergibt, wird angezeigt. <JW:DTAG name="PO1000300 + 100" /> Ergebnis: Der Zustand des Ausgangs, dessen Nummer sich aus der Addition des Inhalts von Register 1000300 und dem Wert 100 ergibt, wird angezeigt. <JW:DTAG name="PO1000300 + R1000100" /> Ergebnis: Der Zustand des Ausgangs, dessen Nummer sich aus der Addition des Inhalts von Register 1000300 und dem Inhalt von Register 1000100 ergibt, wird angezeigt. 186 Jetter AG JVM-407 HTTP-Server Beispiel einer HTML-Seite Aufgabe Es sollen aktuelle Echtzeit-Steuerungswerte in eine HTML-Seite eingebunden werden. Die HTML-Seite soll dann mit Hilfe der im HTTP-Server enthaltenen Funktionalität der Server Side Includes mit einem Browser dargestellt werden. Vorgehen <JC:DTAG xmlns:JC="http://jetter.de/ssi/jetcontrol" /> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <meta name="GENERATOR" content="Microsoft FrontPage 4.0"> <meta name="ProgID" content="FrontPage.Editor.Document"> <title>Index</title> </head> <body> Hallo Welt, <p>So können aktuelle Steuerungswerte in eine html-Seite eingebunden werden: </p> <p>Register 201000 = <JC:DTAG name="R201000" type = INT format="+####" />, oder Hex: 0x<JC:DTAG name="PR201000+10" type="INTX" format="0###" />, oder lieber so <JC:DTAG name="R201000" type="BOOL" />, wenn man nur boolsch abfragt. Es geht aber auch binär: <JC:DTAG name="R201000" type="INTB" format=######## />b. </p> <p>Strings könnte man auch definieren "<JC:DTAG name="R201000" type="STRING" />". </p> <p>So sieht eine Realzahl aus: <JC:DTAG name="R1001500" type="REAL" /> oder so <JC:DTAG name="R1001500" type="REAL" factor="1.3" format="###.##" />. </p> <p>Der Wert eines Merkers wird so dargestellt: <JC:DTAG name="F10" /> oder <JC:DTAG name="PF1000000" type="STRING" />. </p> <p>Bei den Ein- und Ausgängen erfolgt es analog: <JC:DTAG name="PI1000130" type="BOOL" /> bzw. <JC:DTAG name="100000205" type="STRING" />. </p> <p>R201000 = <JC:DTAG name="R201000" type="INT" format="+0##########" /> </p> <p>Viele Grüße </p> <p>Dein JetControl</p> </body> </html> Jetter AG 187 JVM-407 Programmierung 11 Programmierung Zweck des Kapitels Dieses Kapitel unterstützt die Programmierung des Bediengeräts JVM-407 in folgenden Punkten: Programmierung der Zusatzfunktionen Voraussetzungen Zur Programmierung des Bediengeräts JVM-407 müssen folgende Voraussetzungen erfüllt sein: Das Bediengerät ist mit einem PC verbunden. Auf dem PC ist die Programmier-Software JetSym installiert. Inhalt Thema Seite Abkürzungen, Modulregister-Eigenschaften und Formatierungen ............. 190 Speicherübersicht ....................................................................................... 191 Ein- und Ausgabe ....................................................................................... 203 Echtzeituhr .................................................................................................. 209 Laufzeitregister ........................................................................................... 213 Überwachung der Schnittstellenaktivität..................................................... 217 E-Mail .......................................................................................................... 222 Modbus/TCP ............................................................................................... 247 Freiprogrammierbare IP-Schnittstelle ......................................................... 266 Freiprogrammierbare CAN-PRIM-Schnittstelle .......................................... 294 Jetter AG 189 11 Programmierung Abkürzungen, Modulregister-Eigenschaften und Formatierungen Abkürzungen In der folgenden Tabelle sind die in diesem Dokument benutzten Abkürzungen aufgelistet: Abkürzung ModulregisterEigenschaften R 100 Register 100 MR 150 Modulregister 150 Jedes Modulregister ist durch bestimmte Eigenschaften gekennzeichnet. Die meisten Eigenschaften sind bei vielen Modulregistern identisch, beispielsweise dass der Wert nach Reset 0 ist. In der Beschreibung sind die Modulregister-Eigenschaften nur dann aufgeführt, wenn eine Eigenschaft von den folgenden Standard-Eigenschaften abweicht. Modulregister-Eigenschaften Zahlenformate Bedeutung Standard für die meisten Modulregister Zugriff lesen / schreiben Wert nach Reset 0, oder undefiniert (z. B. Versionsnummer) Wird wirksam sofort Schreibzugriff immer Datentyp integer In der folgenden Tabelle sind die in diesem Dokument benutzten Zahlenformate aufgelistet: Darstellung JetSymBeispielprogramme Zahlenformat 100 dezimal 0x100 hexadezimal 0b100 binär In der folgenden Tabelle ist die in diesem Dokument benutzte Darstellung für Beispielprogramme aufgelistet: Darstellung 190 Bedeutung Var, When, Task Schlüsselwort BitClear(); Befehle 100 0x100 0b100 konstante Zahlenwerte // dies ist ein Kommentar Kommentar // ... weitere Programmbearbeitung Jetter AG JVM-407 Programmierung 11.1 Speicherübersicht Einleitung Das Gerät JVM-407 enthält verschiedene Arten von Programm- und Datenspeicher. Es gibt flüchtigen Speicher, der beim Ausschalten seinen Inhalt verliert und nichtflüchtigen Speicher, der auch ohne Stromversorgung seinen Inhalt behält. Der Speicher befindet sich direkt auf der CPU oder auf separaten Speicher- oder I/O-Modulen. Dieses Kapitel gibt eine Übersicht über den zur Verfügung stehenden Speicher. Inhalt Thema Seite Speicher des Betriebssystems ................................................................... 192 Speicher des Dateisystems ........................................................................ 193 Speicher des Anwenderprogramms ........................................................... 194 Speicher für flüchtige Variablen des Anwenderprogramms ........................ 195 Speicher für nichtflüchtige Register des Anwenderprogramms .................. 196 Speicher für nichtflüchtige Variablen des Anwenderprogramms ................ 197 Spezialregister ............................................................................................ 199 Ein- und Ausgänge ..................................................................................... 200 Merker......................................................................................................... 201 Jetter AG 191 11 Programmierung Speicher des Betriebssystems Einleitung Das Betriebssystem liegt im nichtflüchtigen Flash-Speicher der CPU und kann daher nach dem Einschalten sofort ausgeführt werden. Eigenschaften Interner Flash-Speicher für das Betriebssystem Interner flüchtiger RAM-Speicher für die Daten des Betriebssystems Speicherzugriff Auf den Speicherbereich des Betriebssystems kann der Anwender nicht direkt zugreifen. Das Betriebssystem kann über einen Betriebssystem-Update geändert werden. Verwandte Topics Update des Betriebssystems auf Seite 334 192 Jetter AG JVM-407 Programmierung Speicher des Dateisystems Einleitung Im Speicher des Dateisystems werden Daten- und Programmdateien abgelegt. Eigenschaften interne Flash-Disk und SD-Karte nichtflüchtig Zugriff langsam: Millisekunden bis Sekunden begrenzte Anzahl von Schreib-/Löschzyklen: ca. 1 Million durch das Betriebssystem Speicherzugriff Jetter AG Größe der internen Flash-Disk: 12,875 MByte Größe der SD-Karte: 32 MByte bis 4 GByte durch JetSym über eine FTP-Verbindung durch den E-Mail-Client Browser (über den HTTP-Server) mittels der Dateibefehle aus dem Anwenderprogramm 193 11 Programmierung Speicher des Anwenderprogramms Einleitung Das Anwenderprogramm wird standardmäßig von JetSym an das Bediengerät übertragen und dort gespeichert. Eigenschaften Ablage als Datei im Dateisystem Standardverzeichnis: "/app" in anderen Verzeichnissen (auch SD-Karte) möglich Größe: max. 256 KByte Speicherzugriff durch das Betriebssystem durch JetSym über eine FTP-Verbindung mittels der Dateibefehle aus dem Anwenderprogramm Verwandte Topics Anwenderprogramm auf Seite 341 194 Jetter AG JVM-407 Programmierung Speicher für flüchtige Variablen des Anwenderprogramms Einleitung In flüchtigen Variablen werden Daten abgelegt, die nach dem Ausschalten des JVM-407 nicht erhalten bleiben müssen. Eigenschaften Globale Variablen, die nicht fest Adressen zugeordnet worden sind (nicht %VL oder %RL) Lokale Variablen Variablen werden kompakt abgelegt Variablen werden beim Anlegen mit dem Wert 0 initialisiert Speicherzugriff durch JetSym aus dem Anwenderprogramm JetSym STX-Programm In dem folgenden Programm wird eine globale Variable alle 2 Sekunden um 1 inkrementiert. Var Count: End_Var; Int; Task Inkrement Autorun Loop Inc(Count); Delay(T#2s); End_Loop; End_Task; Anzeige im Setup Das Setup-Fenster von JetSym zeigt den Inhalt der Variablen an. Nummer 1 Jetter AG Teil Aktueller Inhalt der Variablen Funktion Der Inhalt der Variablen wird alle 2 Sekunden um 1 inkrementiert. 195 11 Programmierung Speicher für nichtflüchtige Register des Anwenderprogramms Einleitung In nichtflüchtigen Registern werden Daten abgelegt, die nach dem Ausschalten des JVM-407 erhalten bleiben müssen. Eigenschaften Globale Variablen, die fest Adressen zugeordnet worden sind (%VL) Registervariablen belegen immer 4 Byte Registervariablen werden vom Betriebssystem nicht initialisiert Anzahl Registervariablen: 6.000 durch JetSym durch den E-Mail-Client Speicherzugriff JetSym STX-Programm Registernummern: 1.000.000 bis 1.005.999 Browser (über den HTTP-Server) von Anzeige- und Bediengeräten aus dem Anwenderprogramm von anderen Steuerungen/Bediengeräten In dem folgenden Programm wird eine Registervariable bei jedem Start des Anwenderprogramms um eins erhöht. Sie wird also verwendet, um die Anzahl der Programmstarts zu zählen. Var ProgramStartCounter: End_Var; Int At %VL 1000000; Task Work Autorun ProgramStartCounter := ProgramStartCounter + 1; Loop // ... End_Loop; End_Task; Anzeige im Setup Das Setup-Fenster von JetSym zeigt den Inhalt der Registervariablen an. Nummer 1 196 Teil Aktueller Inhalt der Registervariablen Funktion Der Inhalt der Registervariablen wird bei jedem Programmstart um 1 erhöht. Jetter AG JVM-407 Programmierung Speicher für nichtflüchtige Variablen des Anwenderprogramms Einleitung In nichtflüchtigen Variablen werden Daten abgelegt, die nach dem Ausschalten des JVM-407 erhalten bleiben müssen. Eigenschaften Speicherzugriff durch JetSym von Anzeige- und Bediengeräten aus dem Anwenderprogramm JetSym STX-Programm In dem folgenden Programm werden 4 nichtflüchtige Variablen jede Sekunde erhöht. Die Zähler können jeweils Werte zwischen 0 und 255 (Variablentyp Byte) annehmen. Für die 4 Variablen werden die 4 Bytes des Registers mit der Nummer 1000010 verwendet. Globale Variablen, die auf Register fest zugeordnet worden sind (%RL) Variable werden kompakt abgelegt Größe: 24.000 Bytes Registernummern: 1.000.000 bis 1.005.999 Var Cnt1, Cnt2, Cnt3, Cnt4: End_Var; Byte At %RL 1000010; Task Count4 Autorun Loop Inc(Cnt1); Inc(Cnt2, 2); Inc(Cnt3, 5); Inc(Cnt4, 10); Delay(T#1s); End_Loop; End_Task; Anzeige im Setup Jetter AG Das Setup-Fenster von JetSym zeigt den Inhalt der Variablen an. Da die 4 Zähler vom Typ Byte sind, ergeben sich schon nach relativ kurzer Zeit Zahlenüberläufe: 197 11 Programmierung Nummer 198 Teil Funktion 1 Aktueller Inhalt der Variablen Cnt1 Der Inhalt der Variablen wird jede Sekunde um 1 erhöht. 2 Aktueller Inhalt der Variablen Cnt2 Der Inhalt der Variablen wird jede Sekunde um 2 erhöht. 3 Aktueller Inhalt der Variablen Cnt3 Der Inhalt der Variablen wird jede Sekunde um 5 erhöht. 4 Aktueller Inhalt der Variablen Cnt4 Der Inhalt der Variablen wird jede Sekunde um 10 erhöht. Jetter AG JVM-407 Programmierung Spezialregister Einleitung Über Spezialregister können Funktionen im Betriebssystem gesteuert und Statusinformationen abgerufen werden. Eigenschaften Globale Variablen, die fest Adressen zugeordnet worden sind (%VL) Spezialregister werden beim Start des Betriebssystems mit Standardwerten vorbesetzt Registernummern: 100.000 bis 999.999 Speicherzugriff JetSym STX-Programm durch JetSym durch den E-Mail Client Browser (über den HTTP-Server) von Anzeige- und Bediengeräten aus dem Anwenderprogramm von anderen Steuerungen In dem folgenden Programm werden 2 Spezialregisters verwendet. Einmal das Spezialregister für die Status-Leds und einmal das Spezialregister für den Digipot-Wert. In dem Task wird einfach der Wert des Spezialregisters für den Digipot in das Spezialregister für die Status-Leds kopiert. Läuft nun das Anwenderprogramm auf dem Bediengerät und der Digipot wird gedreht, dann wird der Wert des Digipot-Spezialregisters durch die Status-Leds angezeigt. Var Digipot: Int at %VL 363000; Status_LEDs:Int at %VL 362100; End_Var; Task Main Autorun Loop Status_LEDs:= Digipot; End_Loop; End_Task; Jetter AG 199 11 Programmierung Ein- und Ausgänge Einleitung Ein- und Ausgänge sind 1-Bit-Variablen, die den Wert TRUE oder FALSE annehmen können. Eigenschaften der virtuellen Ein-/Ausgänge Globale Variablen, die fest Adressen zugeordnet worden sind (%IX , %QX) Verwendung beim RemoteScan über Modbus/TCP Anzahl: 16.000 I/O-Nummern: 20001 bis 36000 Speicherzugriff durch JetSym durch den E-Mail Client Browser (über den HTTP-Server) JetSym STX-Programm von Anzeige- und Bediengeräten aus dem Anwenderprogramm Im folgenden Programm wird die Hintergrundbeleuchtung des Bediengeräts gedimmt, wenn der Eingang In11 gesetzt ist. Var In11 :Bool at %XL 362100.10; //Hintergrundbeleuchtung BackgroundLighting :Int at %VL 364000; End_Var; Task Main Autorun Loop //Falls In11 gesetzt dann If In11 Then //dimme Hintergrundbeleuchtung Inc(BackgroundLighting); Delay(T#30ms); End_If; End_Loop; End_Task; 200 Jetter AG JVM-407 Programmierung Merker Einleitung Merker belegen 1 Bit im Speicher und können den Wert TRUE oder FALSE annehmen. Eigenschaften Anwendermerker Globale Variablen, die fest Adressen zugeordnet worden sind (%MX) nicht flüchtig Anzahl: 256 Merkernummern: 0 bis 255 Eigenschaften überlagerter Anwendermerker Globale Variablen, die fest Adressen zugeordnet worden sind (%MX) nicht flüchtig überlagert mit den Registern 1000000 bis 1000055 Eigenschaften Spezialmerker Anzahl: 1.792 Merkernummern: 256 bis 2047 Globale Variablen, die fest Adressen zugeordnet worden sind (%MX) Spezialmerker werden beim Start des Betriebssystems mit Standardwerten vorbesetzt Anzahl: 256 Merkernummern: 2048 bis 2303 Speicherzugriff JetSym STX-Programm durch JetSym durch den E-Mail-Client Browser (über den HTTP-Server) von Anzeige- und Bediengeräten aus dem Anwenderprogramm In dem folgenden Programm wird beim Drücken der Taste F1 ein Merker gesetzt und mit der Taste F2 auf einem Bediengerät rückgesetzt. Solange der Merker gesetzt ist wird das Spezialregister 361000 (Status-LEDs) hochgezählt. Erst wenn der Merker wieder zurückgesetzt wird dann wird das Hochzählen des Spezialregisters gestoppt. Var Merker1: Input_Button_1: Input_Button_2: Status_LEDs: End_Var; Bool Bool Bool Int at at at at %MX %XL %XL %VL 1; 361000.0; 361000.1; 362100; Task Main Autorun Merker1:= False; Loop If Input_Button_1 Then Merker1 := True; ElseIf Input_Button_2 Then Jetter AG 201 11 Programmierung Merker1 := False; End_IF; If Merker1 Then Inc(Status_LEDs); Delay(T#100ms); End_If; End_Loop; End_Task; 202 Jetter AG JVM-407 Programmierung 11.2 Ein- und Ausgabe Einleitung Dieses Kapitel beschreibt die Programmierung der Ein- und Ausgänge, der Bedienelemente und der Zündung und Ausschaltverzögerung des JVM-407. Inhalt Thema Seite Funktionstasten .......................................................................................... 204 Digipot ......................................................................................................... 205 Digitale Ein- und Ausgänge ........................................................................ 206 Zündung und Ausschaltverzögerung .......................................................... 207 Jetter AG 203 11 Programmierung Funktionstasten Einleitung Das Bediengerät JVM-407 verfügt über die vier Funktionstasten F1 bis F4. Die Funktionstasten können frei programmiert werden. Spezialregister Im Register 361000 des JVM-407 ist ein bitcodiertes Abbild der Funktionstasten vorhanden und kann zur Programmierung verwendet werden. JetSym STX-Programm Voraussetzungen: Damit die Status-LEDs nicht zusätzlich über die Eingänge des JVM-407 angesteuert werden, sollten die Eingänge IN1 bis IN10 während der Ausführung des Beispielprogramms nicht gesetzt sein. Im folgenden Beispielprogramm werden die Funktionstasten in einem Task permanent abgefragt. Wird eine oder mehrere Tasten betätigt, dann werden die im Programm zugeordneten Status-LEDs angesteuert. Var F_Button_Register: Int At %VL 361000; Status_Led_1: Status_Led_2: Status_Led_3: Status_Led_4: End_Var; Bool Bool Bool Bool At At At At %XL %XL %XL %XL 362100.0; 362100.1; 362100.2; 362100.3; Task Main Autorun F_Button_Register := 0; Loop If F_Button_Register.0 Then Status_Led_1 := True; Else Status_Led_1 := False; End_If; If F_Button_Register.1 Then Status_Led_2 := True; Else Status_Led_2 := False; End_If; If F_Button_Register.2 Then Status_Led_3 := True; Else Status_Led_3 := False; End_If; If F_Button_Register.3 Then Status_Led_4 := True; Else Status_Led_4 := False; End_If; End_Loop; End_Task; 204 Jetter AG JVM-407 Programmierung Digipot Einleitung Bei dem JVM-407 ist ein Digipot mit Bestätigungs-Taste vorhanden, der eine komfortable Eingabemöglichkeit darstellt. An dieser Stelle werden die Spezialregister des Digipot beschrieben, sowie ein entsprechendes Beispielprogramm. Digipot-Register Es gibt folgende Spezialregister für den Digipot: Register 363000 Bedeutung Dieses Register wird beim Drehen des Digipot hoch- und runtergezählt und enthält den aktuellen Zählerwert. Dabei gilt: JetSym STX-Programm Digipot im Uhrzeigersinn drehen = Register hochzählen Digipot gegen Uhrzeigersinn drehen = Register abwärts zählen 363001 Bit 0: 0 = Bestätigungs-Taste nicht betätigt Bit 0: 1 = Bestätigungs-Taste betätigt 363002 Hier wird das untere Limit für den Zählerwert des Digipots vorgegeben. Wird der Digipot gegen den Uhrzeigersinn weitergedreht wird, bleibt das Register 363000 bei diesem Minimumwert stehen. 363003 Hier wird das obere Limit für den Zählerwert des Digipots vorgegeben. Auch wenn der Digipot im Uhrzeigersinn weitergedreht wird, bleibt das Register 363000 bei diesem Maximumwert stehen. Im folgenden Beispielprogramm wird die Hintergrundbeleuchtung des JVM-407 über den Digipot gedimmt. Dabei ist ein unteres und oberes Limit für den Digipot vorgegeben. Bei Betätigung der Digipot-Taste wird die volle Hintergrundbeleuchtung eingestellt. Var Digipot_Count : Digipot_Limit_min: Digipot_Limit_max: Digipot_Button : BackgroundLighting: End_Var; Int Int Int Int Int At At At At At %VL %VL %VL %VL %VL 363000; 363002; 363003; 363001; 364000; Task Main Autorun Digipot_Count := 0; Digipot_Limit_max := 17; Digipot_Limit_min := 0; Loop If Digipot_Button Then BackgroundLighting := 255; Else BackgroundLighting := Digipot_Count*15; End_If End_Loop End_Task; Jetter AG 205 11 Programmierung Digitale Ein- und Ausgänge Einleitung Das Bediengerät JVM-407 verfügt über folgende Ein- und Ausgänge: 15 digitale Eingänge. Davon sind zehn fest mit den Status-LEDs verbun Spezialregister den und fünf sind frei programmierbar. 1 digitaler Ausgang, z. B. zur Ansteuerung eines Bypass-Relais. Die Ausgänge werden aber immer gleichzeitig gesetzt, um einen höheren Strom liefern zu können. Folgende Register stehen für die digitalen Ein- und Ausgänge zur Verfügung: Register 362100 Beschreibung Bitcodiertes Abbild der digitalen Eingänge IN1 - IN15. IN1 - IN10 sind mit den Status-LEDs des JVM-407 verbunden. Beispiel: Bit 0 = 1: IN1 ein und Status LED 1 an. 362200 JetSym STX-Programm Bit 0 des Registers ist für das Setzen des digitalen Ausgangs zuständig. Bit 0 = 1: Digitaler Ausgang ist gesetzt. In dem Beispielprogramm wird der frei programmierbare Eingang IN11 permanent abgefragt. Wird dieser Eingang gesetzt, dann werden die 2 digitalen Ausgänge gesetzt, welche zur Ansteuerung z. B. eines Bypass-Relais dienen. Var IN11: Bool At %XL 362100.10; // Digitale Ausgänge Output: Bool At %XL 362200.0; End_Var; Task Main Autorun Loop // Falls In11 gesetzt dann If IN11 Then // Setze der digitalen Ausgänge Output := True; Delay(T#100ms); End_If; End_Loop; End_Task; 206 Jetter AG JVM-407 Programmierung Zündung und Ausschaltverzögerung Einleitung An dieser Stelle wird die Zündung und die Funktion Shutdown beschrieben. Spezialregister Das Spezialregister 361100 des JVM-407 ist für die Abfrage der Zündung zuständig. Dabei gilt folgendes: Wenn ... Default-Zündungsfunktion Bit 0 = 0 Zündung ist eingeschaltet und Spannung liegt an KL 15 Zündung (+) an. Bit 0 = 1 Zündung ist aus und keine Spannung liegt an KL 15 Zündung (+) an. Das Bediengerät hat im Zusammenhang mit der Zündung folgende Default-Einstellungen: Wenn ... Optionen Funktion Shutdown ... Dann ... ...und... ... Dann ... die Spannungsversorgung an das Bediengerät angelegt wird die Zündung aus ist bootet das Bediengerät nicht. die Spannungsversorgung an das Bediengerät angelegt wird die Zündung eingeschaltet ist bootet das Bediengerät. das Bediengerät läuft die Zündung ausgeschaltet wird (nicht die Spannungsversorgung) dann bleibt das Bediengerät angeschaltet. Abweichend von der Default-Zündungsfunktion bietet die Funktion Shutdown folgende Optionen: Das Bediengerät kann definiert heruntergefahren werden. Ein Neustart des Bediengeräts kann durchgeführt werden. Funktionsdeklaration Function Shutdown (Reboot:Bool) :Bool; Funktionsparameter Die Funktion Shutdown () hat den folgenden Parameter. Parameter Reboot Jetter AG Beschreibung Neustart des Systems: Abschalten des Systems: Wert True False 207 11 Programmierung Rückgabewert Die Funktion übergibt die folgenden Rückgabewerte an das übergeordnete Programm. Rückgabewert 0 ok -1 Zündung ist noch eingeschaltet Hinweis Wenn die Zündung noch eingeschaltet ist, wird das Gerät nicht abgeschaltet. Ein Neustart wird allerdings immer durchgeführt und ist unabhängig von der Zündung. JetSym STX-Programm In dem Beispielprogramm wird die Funktion Shutdown () nach 3 Sekunden ausgeführt, wenn die Zündung des Fahrzeugs ausgeschaltet wird. Der Parameter Reboot der Funktion Shutdown () hat den Wert false. Das bedeutet, dass das Gerät abgeschaltet wird. Var Ignition: Int At %VL 361100; End_Var; Task Ign Autorun Loop When Ignition Continue; Delay(3000); Shutdown(False); End_Loop; End_Task; 208 Jetter AG JVM-407 Programmierung 11.3 Echtzeituhr Einleitung Das Gerät JVM-407 verfügt über einen Baustein, der Datum und Uhrzeit über eine bestimmte Zeit weiterführt, auch wenn das Gerät ausgeschaltet ist. Verwendung vom Betriebssystem Die Echtzeituhr wird vom Betriebssystem bei folgenden Funktionen verwendet: Dateidatum und -uhrzeit beim Schreiben einer Datei Einschränkungen Bei der Verwendung der Echtzeituhr sind folgende Einschränkungen zu beachten: Die Gangreserve bei ausgeschaltetem Gerät ist begrenzt Es erfolgt keine automatische Sommerzeit-Umschaltung Inhalt Thema Seite Technische Daten ....................................................................................... 210 Beispielprogramm Echtzeituhr ..................................................................... 211 Jetter AG 209 11 Programmierung Technische Daten Technische Daten der Echtzeituhr Verhalten nach Ende der Gangreserve Auslieferungszustand 210 Parameter Beschreibung Gangreserve 4 Jahre Abweichung max. 1 Minute pro Monat Wenn das Bediengerät länger als die Gangreserve der Echtzeituhr abgeschaltet war, so führt das Bediengerät folgendes aus: Stufe Beschreibung 1 Das Bediengerät erkennt beim Booten, dass die Gangreserve abgelaufen ist. 2 Datum und Uhrzeit werden auf den Standardwert gesetzt: Datum: Samstag, 1. Januar 2000 Uhrzeit: 0 Uhr Im Auslieferungszustand ist das Datum auf Samstag 1. Januar 2000 eingestellt. Jetter AG JVM-407 Programmierung Beispielprogramm Echtzeituhr Aufgabe Die aktuelle Uhrzeit und das Datum des JVM-407 sollen in JetSym angezeigt werden können. Lösung Ein Task des Anwenderprogramms liest zyklisch die Echtzeituhr aus und gibt die Werte formatiert über eine Trace-Meldung aus. Diese kann in JetSym nach Einschalten des Trace-Modus angezeigt werden. JetSym STX-Programm Type // structure of RTC buffer TimeAndDate: Struct Second: Minute: Hour: DayOfWeek: Day: Month: Year: Trigger: End_Struct; End_Type; Var RTCregs: End_Var; Int; Int; Int; Int; Int; Int; Int; Int; TimeAndDate At %VL 102921; Task ShowTimeAndDate Autorun Var Dummy: Int; End_Var; Loop // wait one second Delay(T#1s); // copy actual time and date to buffer Dummy := RTCregs.Trigger; // show day of week Case RTCregs.DayOfWeek Of 0: Trace('Sunday'); Break; 1: Trace('Monday'); Break; 2: Trace('Tuesday'); Break; 3: Trace('Wednesday'); Break; 4: Trace('Thursday'); Jetter AG 211 11 Programmierung Break; Trace('Friday'); Break; 6: Trace('Saturday'); Break; End_Case; // show date Trace(StrFormat(' , %2d.%02d.%4d , ', RTCregs.Day, RTCregs.Month, RTCregs.Year + 2000)); // show time (plus cr/lf) Trace(StrFormat('%2d:%02d:%02d$n', RTCregs.Hour, RTCregs.Minute, RTCregs.Second)); End_Loop; End_Task; 5: 212 Jetter AG JVM-407 Programmierung 11.4 Laufzeitregister Einleitung Das Gerät JVM-407 stellt mehrere Register zur Verfügung, die vom Betriebssystem in festen Zeitabständen hochgezählt werden. Verwendung Mit Hilfe dieser Register lassen sich auf einfache Weise im Anwenderprogramm Zeitmessungen durchführen. Inhalt Thema Seite Beschreibung der Laufzeitregister .............................................................. 214 Beispielprogramm Laufzeitregister ............................................................. 216 Jetter AG 213 11 Programmierung Beschreibung der Laufzeitregister Registerübersicht In dieser Anleitung werden die folgenden Register verwendet: Register R 201000 Beschreibung R 201000 Anwenderzeitbasis in Millisekunden R 201001 Anwenderzeitbasis in Sekunden R 201002 Anwenderzeitbasis in R 201003 * 10 Millisekunden R 201003 Anwenderzeitbasis-Einheiten für R 201002 R 201004 Systemzeitbasis in Millisekunden Anwenderzeitbasis in Millisekunden Dieses Register wird jede Millisekunde um 1 inkrementiert. Register-Eigenschaften Werte R 201001 -2.147.483.648 ... 2.147.483.647 (überlaufend) Anwenderzeitbasis in Sekunden Dieses Register wird jede Sekunde um 1 inkrementiert. Register-Eigenschaften Werte R 201002 -2.147.483.648 ... 2.147.483.647 (überlaufend) Anwenderzeitbasis in Anwenderzeitbasis-Einheiten Dieses Register wird alle [R 201003] * 10 Millisekunden um 1 inkrementiert. Mit dem Reset-Wert in Register 201003 von 10, wird dieses Register alle 100 Millisekunden inkrementiert. Register-Eigenschaften Werte 214 -2.147.483.648 ... 2.147.483.647 (überlaufend) Jetter AG JVM-407 R 201003 Programmierung Anwenderzeitbasis-Einheiten für R 201002 Dieses Register enthält den Multiplikator für das Laufzeitregister R 201002. Register-Eigenschaften R 201004 Werte 1 ... 2.147.483.647 (* 10 ms) Wert nach Reset 10 (--> 100 ms) Wirksamkeit nach min. 10 ms Systemzeitbasis in Millisekunden Dieses Register wird jede Millisekunde um 1 inkrementiert. Register-Eigenschaften Jetter AG Werte -2.147.483.648 ... 2.147.483.647 (überlaufend) Zugriff lesen 215 11 Programmierung Beispielprogramm Laufzeitregister Aufgabe Es soll gemessen werden, wie lange das Abspeichern von Variablenwerten in einer Datei dauert. Lösung Vor dem Abspeichern der Werte wird das Register 201000 auf 0 gesetzt. Wenn die Werte abgespeichert sind, kann aus diesem Register die benötigte Zeit in Millisekunden gelesen werden. JetSym STX-Programm Var DataArray: File1: WriteTime: WriteIt: MilliSec: End_Var; Array[2000] Of Int; File; Int; Bool; Int At %VL 201000; Task WriteToFile Autorun Loop // clear start flag WriteIt := False; // wait until start flag set by user When WriteIt Continue; // open file in write mode If FileOpen(File1, '/Test.dat', fWrite) Then // restart timer register MilliSec := 0; // write array data to file FileWrite(File1, DataArray, SizeOf(DataArray)); // capture time WriteTime := MilliSec; FileClose(File1); // show measured time Trace(StrFormat('Time : %d [ms]$n', WriteTime)); Else // show error message Trace('Unable to open file!$n'); End_If; End_Loop; End_Task; 216 Jetter AG JVM-407 Programmierung 11.5 Überwachung der Schnittstellenaktivität Einleitung Um die innerhalb des Bediengeräts verwendeten Variablen von außen zugänglich zu machen, sind im Bediengerät mehrere Variablen-Server integriert. Diese Server unterstützen unterschiedliche Protokolle auf verschiedenen Schnittstellen. Die Server benötigen keine Programmierung im Anwenderprogramm, sondern bearbeiten Anfragen von externen Clients selbstständig. Dieses Kapitel erläutert eine Möglichkeit, im Anwenderprogramm festzustellen, ob über diese Schnittstellen mit den Servern kommuniziert wird. Überwachte Schnittstellenaktivitäten Es können folgende Schnittstellenaktivitäten überwacht werden: JetIP-Server auf der Ethernet-Schnittstelle STX Debug-Server auf der Ethernet-Schnittstelle Verwendung Die Überwachung der Schnittstellenaktivität kann beispielsweise bei folgenden Szenarien Verwendung finden: Anlagen, die für den sicheren Betrieb eine Prozess-Visualisierung benötigen, können in einen sicheren Zustand überführt werden, wenn die Kommunikation ausfällt. Bei Anschluss eines Bediengeräts durch den Service-Techniker werden vom Anwenderprogramm automatisch erweiterte Statusinformationen ausgegeben. Inhalt Thema Seite Funktionsweise ........................................................................................... 218 Programmierung ......................................................................................... 220 Jetter AG 217 11 Programmierung Funktionsweise Einleitung Mit Hilfe von zwei Spezialmerkern und einem Spezialregister pro Schnittstelle kann die Aktivität eines Clients, der mit einem Server des Geräts JVM-407 kommuniziert, vom Anwenderprogramm aus überwacht werden. Übersicht Diese Grafik zeigt den Zusammenhang zwischen der Aktivität der Schnittstelle, den beiden Spezialmerkern und dem Spezialregister: 1 Telegrams Timeout 2 OS Flag 3 User Flag Application program: WHEN OS_FLAG Continue User_FLAG := TRUE; Nummer Beschreibung Funktion 1 Telegrams Anfragen des Clients an den Server 2 OS-Flag Betriebssystem-Merker, der von dem Gerät JVM-407 gesetzt wird, wenn eine Anfrage empfangen wurde. 3 User-Flag Anwendermerker, der im Anwenderprogramm gesetzt werden sollte, sobald der Betriebssystem-Merker gesetzt wurde; hierüber kann festgestellt werden, dass die Verbindung kurzzeitig unterbrochen worden war. Auch wenn der Betriebssystem-Merker sehr schnell wieder gesetzt wird. 4 Timeout Zeit der Inaktivität, nach der beide Spezialmerker vom Betriebssystem zurückgesetzt werden; die Zeit ist in einem Spezialregister einstellbar. Die Überwachung der Schnittstellenaktivität erfolgt wie nachfolgend beschrieben: Stufe 218 Teil 4 Beschreibung 1 Im Anwenderprogramm wird das Timeout-Register mit dem gewünschten Wert beschrieben und so der Überwachungs-Modus eingeschaltet. 2 Nach dem Empfang des nächsten Telegramms wird von dem Gerät JVM-407der entsprechende Betriebssystem-Merker gesetzt. 3 Im Anwenderprogramm wird bei gesetztem Betriebssystem-Merker auch der entsprechende Anwendermerker gesetzt. Jetter AG JVM-407 Programmierung Stufe Jetter AG Beschreibung 4 Bei jedem weiteren Telegramm wird der Timeout neu gestartet. 5 Werden keine weiteren Telegramme mehr empfangen, so werden nach Ablauf der Timeoutzeit beide Spezialmerker von dem Gerät zurückgesetzt. 6 Im Anwenderprogramm wird das Zurücksetzen der Spezialmerker erkannt und entsprechende Maßnahmen eingeleitet. 7 Werden wieder Telegramme empfangen, so wird der Betriebssystem-Merker von dem Gerät wieder gesetzt; der Anwendermerker bleibt jedoch zurückgesetzt. 219 11 Programmierung Programmierung Register-/ Merkerübersicht In dieser Anleitung werden die folgenden Register und Merker verwendet: Timeout-Register Register Schnittstelle R 203000 JetIP über Ethernet R 203005 STX-Debug über Ethernet Verwendung Visualisierung Vernetzung JetSym über Ethernet Spezialmerker Merker F 2088 Schnittstelle JetIP über Ethernet F 2089 F 2098 Betriebssystem-Merker Anwendermerker STX-Debug über Ethernet F 2099 R 203000 Verwendung Betriebssystem-Merker Anwendermerker Timeout bei JetIP über Ethernet Dieses Register enthält die Timeoutzeit für den JetIP-Server über Ethernet in Millisekunden. Register-Eigenschaften R 203005 Werte 0 ... 2.147.483.647 [ms] Wert nach Reset 0 (Überwachung abgeschaltet) Timeout bei STX-Debug über Ethernet Dieses Register enthält die Timeoutzeit für den STX-Debug-Server über Ethernet in Millisekunden. Register-Eigenschaften 220 Werte 0 ... 2.147.483.647 [ms] Wert nach Reset 0 (Überwachung abgeschaltet) Jetter AG JVM-407 Einschalten der Überwachung Programmierung So schalten Sie die Aktivitätsüberwachung für eine Schnittstelle ein: Schritt Erkennen eines Timeout Vorgehen 1 Beschreiben Sie das Timeout-Register dieser Schnittstelle mit dem gewünschten Wert. 2 Warten Sie bis der Betriebssystem-Merker dieser Schnittstelle vom Bediengerät gesetzt wurde. 3 Setzen Sie den entsprechenden Anwendermerker. So erkennen Sie einen Timeout: Schritt Vorgehen 1 Schalten Sie die Aktivitätsüberwachung ein (siehe oben). 2 Warten Sie bis der Anwendermerker dieser Schnittstelle vom Bediengerät zurückgesetzt wurde. Ergebnis: Ein Timeout ist aufgetreten 3 Überprüfen Sie den entsprechenden Betriebssystem-Merker Wenn ... Jetter AG ... Dann ... der Betriebssystem-Merker gesetzt ist war die Verbindung kurz unterbrochen der Betriebssystem-Merker zurückgesetzt ist ist die Verbindung immer noch unterbrochen 221 11 Programmierung 11.6 E-Mail Einleitung E-Mails werden in Vorlagendateien erstellt, in denen beim Versenden gegebenenfalls Variablenwerte eingefügt werden. Die E-Mails werden vom Bediengerät an einen E-Mail-Server gesendet, der die Weiterleitung übernimmt. Dieses Kapitel beschreibt wie die E-Mail-Funktion im Bediengerät JVM-407 konfiguriert wird und E-Mails erstellt und gesendet werden. Kenntnisse des Programmierers In diesem Kapitel werden folgende Kenntnisse vorausgesetzt: Da zur Konfiguration der E-Mail-Funktion Dateien verwendet werden und die E-Mails selbst auf Dateien basieren, sind Kenntnisse des Dateisystems des Bediengeräts notwendig. Kenntnisse über IP-Netzwerke sind notwendig. Inhalt Thema Seite Konfigurieren der E-Mail-Funktion .............................................................. 223 Erstellen von E-Mails .................................................................................. 231 Versenden einer E-Mail............................................................................... 238 Register ....................................................................................................... 242 222 Jetter AG JVM-407 Programmierung 11.6.1 Konfigurieren der E-Mail-Funktion Einleitung Dieses Kapitel beschreibt wie die E-Mail-Funktion konfiguriert wird, so dass E-Mails im Anwenderprogramm versendet werden können. Das Gerät JVM-407 liest die Konfigurations-Daten während der Bootphase aus der Datei "/EMAIL/email.ini". Voraussetzungen Folgende Voraussetzungen für die Erstellung der Konfigurations-Datei müssen erfüllt sein: Die IP-Adresse des E-Mail-Servers muss bekannt sein. Wenn die IP-Adresse des E-Mail-Servers nicht bekannt ist, muss die Namensauflösung über einen DNS-Server möglich sein (siehe Verwenden von Namen für IP-Adressen auf Seite 79). Die Parameter für Anmeldung und Authentifizierung am E-Mail-Server müssen bekannt sein. Diese Informationen erhalten Sie vom jeweiligen Netzwerkadministrator. Inhalt Thema Seite Die Konfigurations-Datei "/EMAIL/email.ini" ............................................... 224 Sektion [SMTP] ........................................................................................... 225 Sektion [POP3] ........................................................................................... 227 Sektion [DEFAULT] ..................................................................................... 229 Beispiele für eine Konfigurations-Datei ...................................................... 230 Jetter AG 223 11 Programmierung Die Konfigurations-Datei "/EMAIL/email.ini" Einleitung Die Konfiguration des E-Mail-Clients in dem Gerät JVM-407 erfolgt mit den Daten aus der Datei "/EMAIL/email.ini". Die Datei wird nur während der Boot-Phase gelesen. Aufbau der Datei Die Konfigurations-Datei ist eine Textdatei, deren Einträge in Sektionen gruppiert sind. In diesen Sektionen werden Werte gesetzt, mit denen der E-Mail-Client arbeitet. Leerzeilen können beliebig eingefügt werden. Kommentarzeilen werden mit "!", "#" oder ";" eingeleitet. Sektionen Die Konfigurations-Datei enthält bis zu 3 Sektionen. Die Sektion [SMTP] muss vorhanden sein. Die anderen Sektionen müssen nur angelegt werden, wenn sie tatsächlich benötigt werden: Sektion [SMTP] [POP3] [DEFAULT] 224 Konfigurations-Werte IP-Adresse und Portnummer des SMTP-Servers Anmeldeparameter IP-Adresse und Portnummer des POP3-Servers Anmeldeparameter Name einer E-Mail-Vorlagendatei, die Standardwerte enthält Jetter AG JVM-407 Programmierung Sektion [SMTP] Einleitung In dieser Sektion werden die Parameter zur Verbindung mit dem SMTP-Server angegeben. Beispiel: [SMTP] IP PORT HELO USER PASSWORD Authentifizierung Bei dieser Art der Authentifizierung muss von dem JVM-407 vor dem Versenden einer E-Mail eine Benutzeranmeldung beim SMTP-Server durchgeführt werden, wofür USER und PASSWORD benötigt wird. Der JetControl unterstützt folgende Authentifizierungsverfahren: = = = = = 192.168.40.1 25000 JetControl_2 JetControl0815 MyPassWord LOGIN PLAIN CRAM-MD5 Konfigurations-Werte IP im Beispiel 192.168.40.1 Funktion IP-Adresse des SMTP-Servers; kann auch als Name angegeben werden gültige Werte nicht gültige Werte bei ungültigem Wert oder nicht vorhandenem Eintrag > 1.0.0.0 < 223.255.255.255 Netzwerkadresse Broadcast-Adresse E-Mail-Funktion nicht verfügbar PORT im Beispiel 25.000 Funktion Portnummer des SMTP-Servers gültige Werte nicht gültige Werte bei nicht vorhandenem Eintrag >0 < 65.536 > 65.335 25 HELO Jetter AG im Beispiel JetControl_2 Funktion Name für die Anmeldung beim E-Mail-Server gültige Werte Zeichenkette mit maximal 63 Zeichen 225 11 Programmierung bei nicht vorhandenem Eintrag wird beim Senden der E-Mail von dem JVM-407 der Eintrag von [FROM] verwendet USER im Beispiel JetControl0815 Funktion Anmeldename bei SMTP-Authentifizierung; wenn dieser Eintrag vorhanden ist, muss auch ein PASSWORD angegeben werden gültige Werte Zeichenkette mit maximal 63 Zeichen bei nicht vorhandenem Eintrag erfolgt keine SMTP-Authentifizierung PASSWORD 226 im Beispiel MyPassWord Funktion Anmeldepasswort bei SMTP-Authentifizierung; wenn dieser Eintrag vorhanden ist, muss auch ein USER angegeben werden gültige Werte Zeichenkette mit maximal 63 Zeichen bei nicht vorhandenem Eintrag erfolgt keine SMTP-Authentifizierung Jetter AG JVM-407 Programmierung Sektion [POP3] Einleitung In dieser Sektion werden die Parameter zur Verbindung mit dem POP3-Server angegeben. Diese Sektion wird nur benötigt, wenn der E-Mail-Server, an den die nachfolgenden E-Mails geschickt werden sollen, eine Authentifizierung über POP3-vor-SMTP benötigt. Beispiel: [POP3] IP PORT USER PASSWORD Authentifizierung Bei dieser Art der Authentifizierung muss von dem JVM-407 zuerst eine Verbindung zum POP3-Server aufgebaut werden, wofür USER und PASSWORD benötigt wird. Daraufhin wird vom SMTP-Server der Versand von E-Mails für eine bestimmte Zeit (meist 10 bis 30 Minuten) freigeschaltet. Konfigurations-Werte = = = = 192.168.40.1 25100 JetControl4711 Pop3PassWord IP im Beispiel 192.168.40.1 Funktion IP-Adresse des POP3-Servers; kann auch als Name angegeben werden gültige Werte nicht gültige Werte bei ungültigem Wert oder nicht vorhandenem Eintrag > 1.0.0.0 < 223.255.255.255 Netzwerkadresse Broadcast-Adresse erfolgt keine POP3-Anmeldung PORT im Beispiel 25.100 Funktion Portnummer des POP3-Servers gültige Werte nicht gültige Werte bei nicht vorhandenem Eintrag >0 < 65.536 > 65.335 110 USER Jetter AG im Beispiel JetControl4711 Funktion Anmeldename bei POP3-Anmeldung; wenn dieser Eintrag vorhanden ist, muss auch ein PASSWORD angegeben werden gültige Werte Zeichenkette mit maximal 63 Zeichen 227 11 Programmierung bei nicht vorhandenem Eintrag erfolgt keine POP3-Anmeldung PASSWORD 228 im Beispiel Pop3PassWord Funktion Anmeldepasswort bei POP3-Anmeldung; wenn dieser Eintrag vorhanden ist, muss auch ein USER angegeben werden gültige Werte Zeichenkette mit maximal 63 Zeichen bei nicht vorhandenem Eintrag erfolgt keine POP3-Anmeldung Jetter AG JVM-407 Programmierung Sektion [DEFAULT] Einleitung In dieser Sektion wird der Name einer E-Mail-Vorlagendatei angegeben, die Standardeinstellungen für die E-Mail-Vorlagendateien enthält. Die hier gemachten Definitionen werden beim Versenden einer E-Mail eingesetzt, wenn die entsprechende Sektion in der jeweiligen E-Mail-Vorlage nicht enthalten ist. Beispiel [DEFAULT] MAILCFG = EmailDefaults.cfg Verwandte Topics Struktur der Vorlagendatei auf Seite 233 Jetter AG 229 11 Programmierung Beispiele für eine Konfigurations-Datei Einleitung Hier finden Sie einige Beispiele für die E-Mail-Konfigurations-Datei "/EMAIL/email.ini". Minimalkonfiguration Wenn keine Authentifizierung benötigt wird und der IP-Port am SMTP-Server dem Standardwert entspricht, beschränkt sich der Inhalt der Konfigurations-Datei auf die Angabe der IP-Adresse des SMTP-Servers: [SMTP] IP Authentifizierung über POP3-Anmeldung = 192.168.40.1 Wenn der E-Mail-Server eine vorherige Anmeldung über POP3 verlangt und eine E-Mail-Vorlagendatei mit Standardeinstellungen definiert ist: [SMTP] IP = 192.168.40.1 [POP3] IP = 192.168.40.1 USER = JetControl4711 PASSWORD = Pop3PassWord [DEFAULT] MAILCFG = EmailDefaults.cfg Authentifizierung über SMTP 230 Wenn der E-Mail-Server eine verschlüsselte Authentifizierung verlangt: [SMTP] IP = 192.168.40.1 USER = JetControl0815 PASSWORD = MyPassWord Jetter AG JVM-407 Programmierung 11.6.2 Erstellen von E-Mails Einleitung Dieses Kapitel beschreibt, wie E-Mails erstellt werden, die dann im Anwenderprogramm versendet werden können. Für jede E-Mail ist vom Anwender eine E-Mail-Vorlagendatei zu erstellen. Inhalt Thema Seite Name der E-Mail-Vorlagendatei ................................................................. 232 Struktur der E-Mail-Vorlagendatei............................................................... 233 Einfügen von Echtzeit-Steuerungswerten .................................................. 235 Jetter AG 231 11 Programmierung Name der E-Mail-Vorlagendatei Einleitung Der Name einer E-Mail-Vorlagendatei setzt sich aus einem konstanten und einem variablen Namensteil zusammen. Über den variablen Namensteil können die unterschiedlichen E-Mails vom Anwenderprogramm beim Versenden ausgewählt werden. Dateiname email_#.cfg Namensteil email_ # .cfg Speicherort Funktion fester Namens-Präfix Nummer der E-Mail; Wert zwischen 0 und 255 feste Dateierweiterung Die E-Mail-Vorlagendateien müssen im selben Verzeichnis der internen Flash-Disk abgelegt sein, in dem auch die Konfigurations-Datei liegen muss: /EMAIL Beispiele 232 email_0.cfg email_37.cfg email_255.cfg Jetter AG JVM-407 Programmierung Struktur der E-Mail-Vorlagendatei Einleitung Eine E-Mail-Vorlagendatei ist eine Textdatei, die in Sektionen strukturiert ist. Aus den Informationen in diesen Sektionen wird beim Versenden die E-Mail zusammengestellt. E-Mail-Vorlagendatei Die Sektionen [FROM] und [TO] müssen vorhanden sein. Entweder in der zu versendenden E-Mail selbst oder in der E-Mail-Vorlagendatei mit den Standardeinstellungen. Alle Parameter in diesen Sektionen können mit Tags, die Echtzeit-Steuerungswerte enthalten, versehen werden (siehe Einfügen von Echtzeit-Steuerungswerten auf Seite 182). [FROM] Absender [TO] Empfänger [CC] Weitere(r) Empfänger [SUBJECT] Betreff [ATTACHMENT] Vollständiger Pfad- und Dateiname [MESSAGE] Inhalt der E-Mail Sektionen [FROM] Funktion Absender der E-Mail Bemerkungen Fragen Sie den zuständigen IT-Administrator, was hier einzutragen ist. Länge 63 Zeichen Beispiel [FROM] [email protected] [TO] Jetter AG Funktion Empfänger der E-Mail Bemerkungen Mehrere Empfänger werden durch Semikolon ";" getrennt. Länge 255 Zeichen 233 11 Programmierung Beispiel [TO] [email protected] [CC] Funktion Weitere(r) Empfänger der E-Mail Bemerkungen Mehrere Empfänger werden durch Semikolon ";" getrennt. Länge 255 Zeichen Beispiel [CC] [email protected];[email protected] [SUBJECT] Funktion Betreff Länge 255 Zeichen Beispiel [SUBJECT] Fatal Error [ATTACHMENT] Funktion Vollständiger Name einer anzuhängenden Datei Bemerkungen Es muss sich um eine Textdatei handeln. Länge 511 Zeichen Beispiel [ATTACHMENT] /logfiles/error_report.log [MESSAGE] 234 Funktion Inhalt der E-Mail Bemerkungen nur Text möglich Länge 65.535 Zeichen Beispiel [MESSAGE] Have a nice day ! JetControl. Jetter AG JVM-407 Programmierung Einfügen von Echtzeit-Steuerungswerten Einleitung Aktuelle Echtzeit-Steuerungswerte können über Tag-Funktionen in die Parameter der Sektionen integriert werden. Damit können Zustände von Registern, Textregistern und Merkern angezeigt werden. Tag-Kennzeichnung Alle Tags beginnen und enden mit bestimmten Zeichenfolgen. Zwischen diesen Tag-Begrenzern werden die Variablen definiert: Kennzeichnung Variablendefinition Zeichenfolge Beginn eines Tags <JW:DTAG Ende eines Tags /> Die Variablendefinition in einem Tag enthält Attribute, über die beispielsweise die Art der Darstellung des Variablenwertes eingestellt werden kann: name Funktion Variablenname Bemerkungen Kennbuchstabe gefolgt von der Variablennummer Beispiel name="R1000023" type Funktion Variablentyp der Darstellung Beispiel type="REAL" format Funktion Darstellungsformat Bemerkungen siehe Formatdefinition Beispiel format="+0####.###" factor Funktion Faktor mit dem der Echtzeit-Steuerungswert multipliziert wird Bemerkungen wird vor der Addition des Offset ausgeführt Beispiel factor="1.5" offset Jetter AG Funktion Wert, der zum Echtzeit-Steuerungswert addiert wird Bemerkungen erfolgt nach der Multiplikation mit dem Faktor Beispiel offset="1000" 235 11 Programmierung Formatdefinition Die Darstellung der Variablen kann über das Attribut gesteuert werden. Die Anzahl der Stellen/Zeichen, mit denen eine Variable dargestellt wird, lässt sich mit dem Zeichen "#" definieren. Durch Voranstellen einer "0" kann bei den Registertypen INT, INTX und REAL die Ausgabe von führenden Nullen eingestellt werden. Durch Voranstellen eines Plus-Zeichens "+" kann bei den Registertypen INT und REAL die Ausgabe eines Vorzeichens eingestellt werden. Durch Voranstellen eines Leerzeichens kann bei den Registertypen INT und REAL die Ausgabe eines Leerzeichens für positive Werte eingestellt werden. Register / Textregister Der Variablenname beginnt mit einem großen "R" gefolgt von der Registernummer. Folgende Typen sind möglich: Typ Darstellung INT Ganzzahl dezimal INTX Ganzzahl hexadezimal INTB Ganzzahl binär BOOL Registerinhalt = 0 --> Anzeige: 0 Registerinhalt != 0 --> Anzeige: 1 REAL Gleitkommazahl dezimal STRING Textregister Standardtyp: INT Beispiel: <JW:DTAG name="R1000250" type="REAL" format="+0####.###" factor="3.25" offset="500" /> Ergebnis: Der Inhalt von Register 1000250 wird mit 3,25 multipliziert, zu dem Produkt 500 hinzuaddiert und das Ergebnis mit Vorzeichen und mindestens fünf Vorkommastellen angezeigt. Falls nötig, wird mit führenden Nullen aufgefüllt. Darüberhinaus werden drei Nachkommastellen angefügt. Merker Der Variablenname beginnt mit einem großen "F" gefolgt von der Merkernummer. Folgende Typen sind möglich: Typ 236 Darstellung BOOL Merker = 0 --> Anzeige: 0 Merker = 1 --> Anzeige: 1 STRING Merker = 0 --> Anzeige: FALSE Merker = 1 --> Anzeige: TRUE Jetter AG JVM-407 Programmierung Standardtyp: BOOL Beispiel: <JW:DTAG name="F100" type="STRING" format="#" /> Ergebnis: Der Zustand des Merkers 100 wird als String "T" oder "F" eingefügt. Zugriff über Zeigerregister Zugriff über ein Zeigerregister ist möglich durch Einfügen eines großen "P" vor dem Variablennamen. Es wird jeweils der Wert der Variablen angezeigt, deren Nummer dem Inhalt des im Variablennamen spezifizierten Registers entspricht. Beispiele: <JW:DTAG name="PR1000300" /> Ergebnis: Der Inhalt des Registers, dessen Nummer im Register 1000300 enthalten ist, wird angezeigt. <JW:DTAG name="PF1000300" /> Ergebnis: Der Zustand des Merkers, dessen Nummer im Register 1000300 enthalten ist, wird angezeigt. Zugriff über Zeigerregister und Offset Zusätzlich zum Wert aus dem Zeigerregister kann noch ein konstanter Wert oder ein weiterer Registerinhalt addiert werden, um die Nummer der anzuzeigenden Variablen zu bilden. Beispiele: <JW:DTAG name="PR1000300 + 100" /> Ergebnis: Der Inhalt des Registers, dessen Nummer sich aus der Addition des Inhalts von Register 1000300 und dem Wert 100 ergibt, wird angezeigt. <JW:DTAG name="PR1000300 + R1000100" /> Ergebnis: Der Inhalt des Registers, dessen Nummer sich aus der Addition des Inhalts von Register 1000300 und dem Inhalt von Register 1000100 ergibt, wird angezeigt. <JW:DTAG name="PF1000300 + 100" /> Ergebnis: Der Zustand des Merkers, dessen Nummer sich aus der Addition des Inhalts von Register 1000300 und dem 100 ergibt, wird angezeigt. <JW:DTAG name="PF1000300 + R1000100" /> Ergebnis: Der Zustand des Merkers, dessen Nummer sich aus der Addition des Inhalts von Register 1000300 und dem Inhalt von Register 1000100 ergibt, wird angezeigt. Jetter AG 237 11 Programmierung 11.6.3 Versenden einer E-Mail Einleitung Dieses Kapitel beschreibt, wie zuvor erstellte E-Mails im Anwenderprogramm versendet werden. Beim Versenden aus dem Anwenderprogramm, wird aus einer E-Mail-Vorlagendatei von dem JVM-407 eine E-Mail zusammengestellt und gegebenenfalls Variablenwerte eingefügt. Verarbeitung im Anwenderprogramm Das Versenden einer E-Mail kann relativ lange dauern. Deshalb werden, während diese Funktion ausgeführt wird, die anderen Tasks des Anwenderprogramms bearbeitet. Es kann jedoch immer nur ein E-Mail-Funktionsaufruf bearbeitet werden. Während ein E-Mail-Versand eines Tasks gerade läuft, werden daher die Tasks, die die E-Mail-Funktion aufrufen, solange blockiert, bis der E-Mail-Versand abgeschlossen ist. Inhalt Thema Seite Versenden mittels Systemfunktion .............................................................. 239 Beispielprogramm ....................................................................................... 240 238 Jetter AG JVM-407 Programmierung Versenden mittels Systemfunktion Einleitung Zum Versenden einer E-Mail wird eine Systemfunktion eingesetzt. JetSym STX Systemfunction(110, &RegEmailNo, &RegResult); Parameter Rückgabewert RegEmailNo Nummer des Registers, in dem die Nummer der zu versendenden E-Mail enthalten ist. Die Nummer ist Bestandteil des Dateinamens der E-Mail-Vorlagendatei RegResult Nummer des Registers, in dem das Ergebnis der Funktion abgelegt wird Folgende Rückgabewerte sind möglich: Ergebnis Jetter AG Funktion Bedeutung Mögliche Fehlerursache 0 kein Fehler -1 nicht genügend Speicher Betriebssystem-Fehler -2 FROM nicht definiert Die E-Mail-Vorlagendatei ist fehlerhaft oder wurde nicht gefunden -3 TO nicht definiert Die E-Mail-Vorlagendatei ist fehlerhaft -4 keine Verbindung zum E-Mail-Server oder Fehler bei der Datenübertragung zum E-Mail Server kein E-Mail Server verfügbar Fehler beim Datentransfer -10 E-Mail-Funktion nicht verfügbar. Bit 2 im Web-Statusregister nicht gesetzt Initialisierungsfehler. Z. B. Konfigurations-Datei "/EMAIL/email.ini" nicht vorhanden oder fehlerhaft -12 interner Fehler Betriebssystem-Fehler Konfiguration über "/EMAIL/email.ini" fehlerhaft 239 11 Programmierung Beispielprogramm E-Mail-Vorlagendatei Die E-Mail-Vorlagendatei wird unter "/EMAIL/email_0.cfg" auf dem JVM-407 abgespeichert. [FROM] JVM-407 [TO] [email protected] [CC] [email protected] [SUBJECT] Test <JW:DTAG name="R1000000" /> [ATTACHMENT] /System/config.ini [MESSAGE] Register 1000001 (int) = <JW:DTAG name="R1000001" format="+0######" /> Register 1000001 (hex) = <JW:DTAG name="R1000001" type="INTX" /> Text register: <JW:DTAG name="R1001000" type="STRING" />" Float register: <JW:DTAG name="R1001900" type="REAL" factor="2.35" offset="100" /> Flag 10: <JW:DTAG name="F10" type = "STRING" /> Output R[1000113] = <JW:DTAG name="PO1000113" type="BOOL" /> Have a nice day... JVM-407 JetSym STX-Programm Durch Setzen von "bSend" wird das Versenden einer E-Mail ausgelöst. Var Counter: TestReg: TextReg: FloatReg: RegEmail: RegResult: Send: End_Var; 240 Int Int String Float At At At At %VL %VL %VL %VL 1000000; 1000001; 1001000; 1001900; Int Int Bool; At %VL 1000200; At %VL 1000201; Jetter AG JVM-407 Programmierung Task SendMail Autorun Counter := 0; TestReg := 1234; TextReg := 'Hello World !'; FloatReg := 20.5; RegEmail := 0; Loop Send := False; When Send Continue; Inc(Counter); SystemFunction(110, &RegEmail, &RegResult); End_Loop; End_Task; Jetter AG 241 11 Programmierung 11.6.4 Register Einleitung Dieses Kapitel beschreibt die Register, über die der Status der Bearbeitung der E-Mail Funktion abgefragt werden kann. Inhalt Thema Seite Registerübersicht ........................................................................................ 243 Registerbeschreibung ................................................................................. 244 242 Jetter AG JVM-407 Programmierung Registerübersicht Einleitung Registerübersicht Jetter AG Das Gerät JVM-407 stellt einige Register zu Verfügung, über die der Status der E-Mail Funktion abgefragt werden kann. Register Beschreibung 202930 Web-Status 292932 IP-Adresse des SMTP-Servers 292933 IP-Adresse des POP3-Servers 292934 Portnummer des SMTP-Servers 292935 Portnummer des POP3-Servers 292937 Status der E-Mail-Bearbeitung 292938 ID des Tasks, der gerade eine E-Mail verschickt 243 11 Programmierung Registerbeschreibung R 202930 Web-Status Im Web-Statusregister werden bitcodiert die Funktionen angezeigt, die verfügbar sind. Bedeutung der Bits Bit 0 FTP-Server 1= Bit 1 HTTP-Server 1= Bit 2 verfügbar Modbus/TCP 1= Bit 5 verfügbar Datendateifunktion 1= Bit 4 verfügbar E-Mail 1= Bit 3 verfügbar vorhanden Modbus/TCP 1= verfügbar Modulregister-Eigenschaften R 292932 Zugriff lesen Wert nach Reset je nach bestellter Option IP-Adresse des SMTP-Servers Hier kann die IP-Adresse des SMTP-Servers gelesen werden, wie sie in der Datei "/EMAIL/email.ini" angegeben ist. Modulregister-Eigenschaften R 292933 Zugriff lesen Wert nach Reset je nach Konfiguration Wird wirksam wenn R 202930.2 = 1 IP-Adresse des POP3-Servers Hier kann die IP-Adresse des POP3-Servers gelesen werden, wie sie in der Datei "/EMAIL/email.ini" angegeben ist. 244 Jetter AG JVM-407 Programmierung Modulregister-Eigenschaften R 292934 Zugriff lesen Wert nach Reset je nach Konfiguration Wird wirksam wenn R 202930.2 = 1 Portnummer des SMTP-Servers Hier kann die Portnummer des SMTP-Servers gelesen werden, wie sie in der Datei "/EMAIL/email.ini" angegeben ist. Modulregister-Eigenschaften R 292935 Zugriff lesen Wert nach Reset je nach Konfiguration Wird wirksam wenn R 202930.2 = 1 Portnummer des POP3-Servers Hier kann die Portnummer des POP3-Servers gelesen werden, wie sie in der Datei "/EMAIL/email.ini" angegeben ist. Modulregister-Eigenschaften R 292937 Zugriff lesen Wert nach Reset je nach Konfiguration Wird wirksam wenn R 202930.2 = 1 Status der E-Mail-Bearbeitung Die Ausführung des E-Mail Versands kann hier mitverfolgt werden. Modulregister-Eigenschaften Werte Zugriff Jetter AG 0 Es wird keine E-Mail versendet 1 Übergabe der Parameter an den E-Mail-Client des JVM-407 2 E-Mail wird zusammengestellt und die Verbindung mit dem Server wird aufgenommen 3 E-Mail wurde an den Server gesendet lesen 245 11 Programmierung R 292938 Task-ID (E-Mail) Die ID der Task, der gerade eine E-Mail verschickt, kann hier gelesen werden. Modulregister-Eigenschaften Werte 246 0 ... 99 Task-ID 255 kein Task verschickt gerade eine E-Mail Wert nach Reset 255 Zugriff lesen Jetter AG JVM-407 Programmierung 11.7 Modbus/TCP Einleitung Dieses Kapitel beschreibt die Funktionen des in dem JVM-407 vorhandenen Modbus/TCP-Servers und Modbus/TCP-Clients. Kenntnisse des Programmierers In diesem Kapitel werden folgende Kenntnisse vorausgesetzt: Kenntnisse über Modbus/TCP und die unterstützten Kommandos sind notwendig. Kenntnisse über IP-Netzwerke sind notwendig. Inhalt Thema Seite Modbus/TCP-Server ................................................................................... 248 Modbus/TCP-Client .................................................................................... 253 Jetter AG 247 11 Programmierung 11.7.1 Modbus/TCP-Server Einleitung Bei gültiger Lizenzierung (Funktion Modbus/TCP ist aktiviert) und erfolgreichem Start des Modbus/TCP-Servers kann durch einen externen Client auf Register, Merker, Eingänge und Ausgänge zugegriffen werden. Dieses Kapitel beschreibt den Vorgang der Adressierung und die vom Modbus/TCP-Server unterstützten Kommandos. Anzahl möglicher Verbindungen Es können gleichzeitig vier Verbindungen geöffnet sein. Einschränkung Bei Modbus/TCP werden nur Register mit 16-Bit-Breite übertragen. Deshalb werden beim Senden von 32-Bit-Registern lediglich die niederwertigen 16 Bit übertragen. Beim Empfang von Registerwerten auf die internen 32-Bit-Registern wird keine Vorzeichenerweiterung durchgeführt. Inhalt Thema Seite Adressierung ............................................................................................... 249 Unterstützte Kommandos - Class 0 ............................................................ 250 Unterstützte Kommandos - Class 1 ............................................................ 251 Unterstützte Kommandos - Class 2 ............................................................ 252 248 Jetter AG JVM-407 Programmierung Adressierung Einleitung Die über den Modbus empfangenen Adressen können lokal im Modbus/TCP-Server modifiziert werden. Dazu sind drei Register vorhanden, in welche die jeweilige Basisadresse für den Zugriff auf Register, Eingänge und Ausgänge geschrieben werden kann. Die Adresse im Modbus/TCP-Telegramm gibt dann die Adresse relativ zu dieser Basisadresse an. R 272702 Registeroffset In das R 272702 wird die Basisadresse für den Zugriff auf Register über Modbus/TCP eingetragen. Modulregister-Eigenschaften Wert nach Reset R 272704 1000000 Eingangsoffset In das R 272704 wird die Basisadresse für den Zugriff auf Eingänge über Modbus/TCP eingetragen. Modulregister-Eigenschaften Wert nach Reset R 272705 100000000 Ausgangsoffset In das R 272705 wird die Basisadresse für den Zugriff auf Ausgänge über Modbus/TCP eingetragen. Modulregister-Eigenschaften Wert nach Reset Beispiel 1 Jetter AG 100000000 Der Modbus/TCP-Server des JVM-407 erhält das Modbus/TCP-Kommando read multiple registers mit der Startregisternummer 100 und der Anzahl 5 von einem Modbus/TCP-Client. Das Register 272702 Registeroffset enthält den Wert 1000000. Somit werden die Register 1000100 bis 1000104 gelesen. 249 11 Programmierung Unterstützte Kommandos - Class 0 fc 3 read multiple registers Registerblock lesen Die Startregisternummer innerhalb dem JVM-407 ergibt sich aus der Addition der Startregisternummer im Kommando zum Inhalt des Registers 272702 Registeroffset. fc 16 write multiple registers Registerblock schreiben Die Startregisternummer innerhalb dem JVM-407 ergibt sich aus der Addition der Startregisternummer im Kommando zum Inhalt des Registers 272702 Registeroffset. 250 Jetter AG JVM-407 Programmierung Unterstützte Kommandos - Class 1 fc 1 read coils Ausgänge lesen. Die Ausgangsnummer innerhalb dem JVM-407 ergibt sich aus der Addition der Ausgangsnummer im Kommando zum Inhalt des Registers 272705 Ausgangsoffset. fc 2 read input discretes Eingänge lesen. Die Eingangsnummer innerhalb dem JVM-407 ergibt sich aus der Addition der Eingangsnummer im Kommando zum Inhalt des Registers 272704 Eingangsoffset. fc 4 read input registers Eingänge in 16-Bit-Worten zusammengefasst lesen. Die Startregisternummer innerhalb dem JVM-407 ergibt sich aus der Addition der Startregisternummer im Kommando zum Inhalt des Registers 272702 Registeroffset. fc 5 write coil Einen einzelnen Ausgang ein- und ausschalten. Die Ausgangsnummer innerhalb dem JVM-407 ergibt sich aus der Addition der Ausgangsnummer im Kommando zum Inhalt des Registers 272705 Ausgangsoffset. fc 6 write single register Niederwertige 16 Bit eines Registers beschreiben. Die Startregisternummer innerhalb dem JVM-407 ergibt sich aus der Addition der Startregisternummer im Kommando zum Inhalt des Registers 272702 Registeroffset. Jetter AG 251 11 Programmierung Unterstützte Kommandos - Class 2 fc 15 force multiple coils Mehrere Ausgänge ein- und ausschalten Die Ausgangsnummer innerhalb des JVM-407 ergibt sich aus der Addition der Ausgangsnummer im Kommando zum Inhalt des Registers 272705 Ausgangsoffset. fc 23 read / write registers Gleichzeitig Register lesen und schreiben Die Startregisternummer innerhalb des JVM-407 ergibt sich aus der Addition der Startregisternummer im Kommando zum Inhalt des Registers 272702 Registeroffset. 252 Jetter AG JVM-407 Programmierung 11.7.2 Modbus/TCP-Client Einleitung Der Modbus/TCP-Client im JVM-407 unterstützt nur Class 0 Conformance. Das heißt, dass die Befehle zum Lesen und Schreiben von mehreren Registern genutzt werden. In einem Telegramm können bis zu 125 Register mit 16-Bit-Breite übertragen werden. Als Protocol-ID wird eine "0" verwendet. Die Zuordnung der gesendeten und empfangenen Telegramme erfolgt über die Transaction-ID. Dieses Kapitel beschreibt wie mit Hilfe von Systemfunktionen eine azyklische oder zyklische Übertragung zu einem Modbus/TCP-Server durchgeführt werden kann. Anzahl möglicher Verbindungen Es können gleichzeitig Verbindungen zu elf unterschiedlichen Modbus/TCP-Servern geöffnet sein. Azyklische Datenübertragung Zur Herstellung eines azyklischen Übertragungskanals zu einem Modbus/TCP-Server können die Systemfunktionen 65 und 67 (Register lesen), sowie 66 und 68 (Register schreiben) benutzt werden. Die Systemfunktionen öffnen eine Verbindung zu dem angegeben Modbus/TCP-Server, übertragen die gewünschten Daten und schließen die Verbindung wieder. Besteht bereits eine durch RemoteScan aufgebaute Verbindung (zyklische Datenübertragung), wird diese benutzt und der Verbindungsaufbau und -abbau entfällt. Zyklische Datenübertragung Über die konfigurierbare Funktion RemoteScan werden zyklisch die in den 16-Bit-Registern 278000 bis 278999 zusammengefassten Ein- und Ausgänge von 20001 bis 36000 von und zu den Modbus/TCP-Servern übertragen. Zu jedem Modbus/TCP-Server (IP-Adresse und Port) wird eine Verbindung aufgebaut. Dies geschieht unabhängig davon wie viele Kommunikationseinheiten auf diesem Server konfiguriert sind. Sind mehrere Kommunikationseinheiten auf einem Modbus/TCP-Server konfiguriert, werden die Zugriffe serialisiert, da die Server oftmals kein "command pipeling" unterstützen. Sind mehrere Server konfiguriert, wird parallel mit ihnen kommuniziert. Zusammengefasste Einund Ausgänge Register Ein- und Ausgänge 278000 20001 ... 20016 278001 20017 ... 20032 278002 20033 ... 20048 ... ... 278999 35985 ... 36000 Bei den Registern und ihren überlagerten Ein- und Ausgängen handelt es sich lediglich um Speicherzellen im RAM. Es findet keine direkte Abbildung auf die Hardware statt. Deshalb ist nicht festgelegt, ob dem Register Eingänge oder Ausgänge überlagert sind. Erst bei der Konfiguration in den Kommunikationseinheiten findet eine Zuordnung statt. Jetter AG 253 11 Programmierung Unit-ID Der Befehlskopf eines Modbus/TCP-Telegramms enthält eine Unit-ID. Diese wird von Modbus/TCP-Geräten nicht ausgewertet, da sie über die IP-Adresse eindeutig adressiert werden. Deshalb wird bei den Systemfunktionen 65, 66 und 80 immer fest eine "1" gesendet. Bei Umsetzern von Modbus/TCP auf Modbus RTU wird die Unit-ID dazu verwendet, die Modbus RTU Server zu adressieren. Deshalb gibt es entsprechende Systemfunktionen zum Lesen und Schreiben von Registern (Systemfunktion 67 und 68) und für die Initialisierung des RemoteScan (Systemfunktion 85). Mit Hilfe derer kann die Unit-ID eingestellt werden. Einschränkung Bei Modbus/TCP werden nur Register mit 16-Bit-Breite übertragen. Deshalb werden beim Senden von 32-Bit-Registern lediglich die niederwertigen 16 Bit übertragen. Beim Empfang von Registerwerten auf die internen 32-Bit-Registern wird keine Vorzeichenerweiterung durchgeführt. Inhalt Thema Seite Systemfunktion 65: Azyklisch Register lesen ............................................. 255 Systemfunktion 67: Azyklisch Register lesen ............................................. 257 Systemfunktion 66: Azyklisch Register schreiben ...................................... 259 Systemfunktion 68: Azyklisch Register schreiben ...................................... 261 Applikationsbeispiel .................................................................................... 263 254 Jetter AG JVM-407 Programmierung Systemfunktion 65: Azyklisch Register lesen Einleitung Mit Hilfe der Systemfunktion 65 wird ein Registerblock von einem Modbus/TCP-Server in die Register des lokalen Speichers kopiert. Wichtige Hinweise Während diese Systemfunktion ausgeführt wird, werden parallele Aufrufe dieser Funktion in anderen Tasks blockiert, bis die Funktion beendet ist. Während diese Systemfunktion ausgeführt wird, sollte kein TaskBreak oder Funktionsdeklaration TaskRestart auf diese Task oder ein Programm-Neustart mittels JetSym durchgeführt werden. Die Verbindung bleibt in diesem Fall geöffnet und es finden unter Umständen keine weiteren Übertragungen statt. Die IP-Adresse ist immer direkt anzugeben. Die Angabe über Namen wird nicht unterstützt. Systemfunction(65, &StructModbusTCP, &RegResult); Parameter Typdeklaration MODBUS_TCP StructModbusTCP Struktur vom Typ MODBUS_TCP RegResult Nummer des Registers, in dem das Ergebnis der Funktion abgelegt wird Type MODBUS_TCP: Struct IPadress Port Timeout Source Destination Values End_Struct; End_Type; Funktionsparameter Jetter AG Funktion : : : : : : Int; Int; Int; Int; Int; Int; Parameter Wert Bemerkung IPadress IP-Adresse des Modbus/TCP-Servers direkt angeben Port 502 Timeout in ms Source remote Registernummer Quelle Destination local Registernummer Ziel Values 1 ... 125 Anzahl Register 255 11 Programmierung Rückgabewert Folgende Rückgabewerte sind möglich: Rückgabewert 0 -1 oder -2 kein Fehler Fehler beim Verbindungsaufbau -4 Fehler bei Datenübertragung -5 Fehlermeldung vom Modbus/TCP-Server -8 Zeitüberschreitung -10 Modbus/TCP nicht lizenziert Verwandte Topics Applikationsbeispiel auf Seite 263 256 Jetter AG JVM-407 Programmierung Systemfunktion 67: Azyklisch Register lesen Einleitung Mit Hilfe der Systemfunktion 67 wird ein Registerblock von einem Modbus/TCP-Server in die Register des lokalen Speichers kopiert. Im Unterschied zur Systemfunktion 65 ist hier die Unit-ID einstellbar. Wichtige Hinweise Während diese Systemfunktion ausgeführt wird, werden parallele Aufrufe dieser Funktion in anderen Tasks blockiert, bis die Funktion beendet ist. Während diese Systemfunktion ausgeführt wird, sollte kein TaskBreak oder Funktionsdeklaration TaskRestart auf diese Task oder ein Programm-Neustart mittels JetSym durchgeführt werden. Die Verbindung bleibt in diesem Fall geöffnet und es finden unter Umständen keine weiteren Übertragungen statt. Die IP-Adresse ist immer direkt anzugeben. Die Angabe über Namen wird nicht unterstützt. Systemfunction(67, &StructModbusTCP, &RegResult); Parameter Typdeklaration MODBUS_TCP Jetter AG Funktion StructModbusTCP Struktur vom Typ MODBUS_TCP RegResult Nummer des Registers, in dem das Ergebnis der Funktion abgelegt wird Type MODBUS_TCP: Struct IPadress Port Timeout Source Destination Values UnitID Internal_1 Internal_2 End_Struct; End_Type; : : : : : : : : : Int; Int; Int; Int; Int; Int; Int; Int; Int; 257 11 Programmierung Funktionsparameter Rückgabewert Parameter Wert Bemerkung IPadress IP-Adresse des Modbus/TCP-Servers direkt angeben Port 502 Timeout in ms Source remote Registernummer Quelle Destination local Registernummer Ziel Values 1 ... 125 Anzahl Register UnitID 0 ... 255 Unit-ID Internal_1 0 interne Verwendung Internal_2 0 interne Verwendung Folgende Rückgabewerte sind möglich: Rückgabewert 0 -1 oder -2 258 kein Fehler Fehler beim Verbindungsaufbau -4 Fehler bei Datenübertragung -5 Fehlermeldung vom Modbus/TCP-Server -8 Zeitüberschreitung -10 Modbus/TCP nicht lizenziert Jetter AG JVM-407 Programmierung Systemfunktion 66: Azyklisch Register schreiben Einleitung Mit Hilfe der Systemfunktion 66 werden die Inhalte der Register des lokalen Speichers als Registerblock zum Modbus/TCP-Server übertragen. Wichtige Hinweise Während diese Systemfunktion ausgeführt wird, werden parallele Aufrufe dieser Funktion in anderen Tasks blockiert, bis die Funktion beendet ist. Während diese Systemfunktion ausgeführt wird, sollte kein TaskBreak oder Funktionsdeklaration TaskRestart auf diese Task oder ein Programm-Neustart mittels JetSym durchgeführt werden. Die Verbindung bleibt in diesem Fall geöffnet und es finden unter Umständen keine weiteren Übertragungen statt. Die IP-Adresse ist immer direkt anzugeben. Die Angabe über Namen wird nicht unterstützt. Systemfunction(66, &StructModbusTCP, &RegResult); Parameter Typdeklaration MODBUS_TCP StructModbusTCP Struktur vom Typ MODBUS_TCP RegResult Nummer des Registers, in dem das Ergebnis der Funktion abgelegt wird Type MODBUS_TCP: Struct IPadress Port Timeout Source Destination Values End_Struct; End_Type; Funktionsparameter Jetter AG Funktion : : : : : : Int; Int; Int; Int; Int; Int; Parameter Wert Bemerkung IPadress IP-Adresse des Modbus/TCP-Servers direkt angeben Port 502 Timeout in ms Source local Registernummer Quelle Destination remote Registernummer Ziel Values 1 ... 125 Anzahl Register 259 11 Programmierung Rückgabewert Folgende Rückgabewerte sind möglich: Rückgabewert 0 -1 oder -2 kein Fehler Fehler beim Verbindungsaufbau -4 Fehler bei Datenübertragung -5 Fehlermeldung vom Modbus/TCP-Server -8 Zeitüberschreitung -10 Modbus/TCP nicht lizenziert Verwandte Topics Applikationsbeispiel auf Seite 263 260 Jetter AG JVM-407 Programmierung Systemfunktion 68: Azyklisch Register schreiben Einleitung Mit Hilfe der Systemfunktion 68 werden die Inhalte der Register des lokalen Speichers als Registerblock zum Modbus/TCP-Server übertragen. Im Unterschied zur Systemfunktion 66 ist hier die Unit-ID einstellbar. Wichtige Hinweise Während diese Systemfunktion ausgeführt wird, werden parallele Aufrufe dieser Funktion in anderen Tasks blockiert, bis die Funktion beendet ist. Während diese Systemfunktion ausgeführt wird, sollte kein TaskBreak oder Funktionsdeklaration TaskRestart auf diese Task oder ein Programm-Neustart mittels JetSym durchgeführt werden. Die Verbindung bleibt in diesem Fall geöffnet und es finden unter Umständen keine weiteren Übertragungen statt. Die IP-Adresse ist immer direkt anzugeben. Die Angabe über Namen wird nicht unterstützt. Systemfunction(68, &StructModbusTCP, &RegResult); Parameter Typdeklaration MODBUS_TCP Jetter AG Funktion StructModbusTCP Struktur vom Typ MODBUS_TCP RegResult Nummer des Registers, in dem das Ergebnis der Funktion abgelegt wird Type MODBUS_TCP: Struct IPadress Port Timeout Source Destination Values UnitID Internal_1 Internal_2 End_Struct; End_Type; : : : : : : : : : Int; Int; Int; Int; Int; Int; Int; Int; Int; 261 11 Programmierung Funktionsparameter Rückgabewert Parameter Wert Bemerkung IPadress IP-Adresse des Modbus/TCP-Servers direkt angeben Port 502 Timeout in ms Source local Registernummer Quelle Destination remote Registernummer Ziel Values 1 ... 125 Anzahl Register UnitID 0 ... 255 Unit-ID Internal_1 0 interne Verwendung Internal_2 0 interne Verwendung Folgende Rückgabewerte sind möglich: Rückgabewert 0 -1 oder -2 262 kein Fehler Fehler beim Verbindungsaufbau -4 Fehler bei Datenübertragung -5 Fehlermeldung vom Modbus/TCP-Server -8 Zeitüberschreitung -10 Modbus/TCP nicht lizenziert Jetter AG JVM-407 Programmierung Applikationsbeispiel Aufgabe Der JetControl soll zyklisch I/O-Daten mit zwei Modbus/TCP-Servern im Netzwerk austauschen. Auf externe Anforderung soll der Wert eines einzelnen Registers an einen der beiden Kommunikationspartner verschickt werden. Lösung Für die zyklische Datenübertragung wird die Funktion RemoteScan eingesetzt. Die Systemfunktionen 80 und 81 werden nacheinander ausgeführt. Der Wert eines einzelnen Registers wird mit Hilfe der Systemfunktion 66 azyklisch an den zweiten Kommunikationspartner verschickt. Vorgehen Zunächst werden die für die Konfiguration der Funktion RemoteScan benötigten Strukturen mit den Konfigurations-Daten belegt. Die Anfangsadresse dieser Strukturen wird dann beim Aufruf der Systemfunktion 80 (InitRscan) mitgegeben. Bei erfolgreicher Initialisierung wird über die Systemfunktion 81 (StartRscan) die Funktion RemoteScan gestartet und mit der zyklischen Kommunikation begonnen. Anschließend wird die Parameterstruktur für die azyklische Datenübertragung vorbereitet. Durch Setzen des Merker "Send" wird einmalig das Schreiben eines Registerblocks an den zweiten Kommunikationspartner ausgelöst. JetSym STX-Programm Type RSCAN_HEADER: Struct Protocol Units End_Struct; RSCAN_ELEMENT: Struct Ipadress Port UpdateRate OutRegs OutSource OutDestination InRegs InSource InDestination Status Timeout End_Struct; RSCAN_STATUS: Struct Status Error ErrCnt Jetter AG : : Int; Int; : : : : : : : : : : : Int; Int; Int; Int; Int; Int; Int; Int; Int; Int; Int; : : : Int; Int; Int; 263 11 Programmierung End_Struct; MODBUS_TCP: Struct Ipadress Port Timeout Source Destination Values End_Struct; End_Type; Const RscanRegs RscanStatRegs Elements Int; Int; Int; Int; Int; Int; = 1000100; = 1001000; = 2; InitRscan StartRscan = 80; = 81; ProtModbusTCP ModbusTCPort = 5; = 502; Rscan End_Const; Var : : : : : : = 0; RemoteScan : RSCAN_HEADER At %VL RscanRegs; RscanElements : Array[Elements] Of RSCAN_ELEMENT At %VL RscanRegs + Regsizeof(RSCAN_HEADER); RscanStatus : Array[Elements] Of RSCAN_STATUS %VL RscanStatRegs; ModbusTCP : MODBUS_TCP At %VL 1000500; Result Send End_Var; : Int : Bool At At %VL 1000099; At %MX 1; Task tRscan Autorun RemoteScan.Protocol := ProtModbusTCP; RemoteScan.Units := Elements; // first communication unit RscanElements[0].Ipadress 264 := IP#192.168.10.211; Jetter AG JVM-407 Programmierung RscanElements[0].Port RscanElements[0].UpdateRate RscanElements[0].OutRegs RscanElements[0].OutSource RscanElements[0].OutDestination RscanElements[0].InRegs RscanElements[0].InSource RscanElements[0].InDestination RscanElements[0].Status RscanElements[0].Timeout := := := := := := := := := := ModbusTCPort; 50; 3; 278000; 20000; 3; 21000; 278100; &RscanStatus[0]; 20; // second communication unit RscanElements[1].Ipadress RscanElements[1].Port RscanElements[1].UpdateRate RscanElements[1].OutRegs RscanElements[1].OutSource RscanElements[1].OutDestination RscanElements[1].InRegs RscanElements[1].InSource RscanElements[1].InDestination RscanElements[1].Status RscanElements[1].Timeout := := := := := := := := := := := IP#192.168.10.150; ModbusTCPort; 20; 5; 278300; 20000; 10; 25000; 278400; &RscanStatus[1]; 200; Systemfunction(InitRscan, &RemoteScan, &Result); If Result > 0 Then Systemfunction(StartRscan, 0, &Result); End_If; ModbusTCP.Ipadress ModbusTCP.Port ModbusTCP.Values ModbusTCP.Source ModbusTCP.Destination ModbusTCP.Timeout Send := := := := := := := IP#192.168.10.150; ModbusTCPort; 1; 1001500; 1500; 100; False; Loop When Send Continue; Systemfunction(66, &ModbusTCP, &Result); Send := False; End_Loop; End_Task; Jetter AG 265 11 Programmierung 11.8 Freiprogrammierbare IP-Schnittstelle Die freiprogrammierbare IP-Schnittstelle Die freiprogrammierbare IP-Schnittstelle bietet die Möglichkeit, beliebige Daten mittels TCP/IP oder UDP/IP über die Ethernet-Schnittstelle des JVM-407 zu versenden oder zu empfangen. Die Verarbeitung der Daten erfolgt dabei vollständig im Anwenderprogramm. Anwendungen Die freiprogrammierbare IP-Schnittstelle erlaubt es dem Programmierer Daten über Ethernet-Verbindungen auszutauschen, die sich nicht Standardprotokollen - wie z. B. FTP, HTTP, JetIP oder Modbus/TCP - bedienen. Folgende Anwendungen sind dabei möglich: Voraussetzungen an den Programmierer Server Client TCP/IP UDP/IP Die Funktionalität der freiprogrammierbaren IP-Schnittstelle setzt folgende Kenntnisse der Datenübertragung über IP-Netzwerke voraus: IP-Adressierung (z. B. IP-Adresse, Portnummer, Subnetzmaske, usw.) TCP (z. B. Verbindungsaufbau / -abbau, Datastream, Datensicherung, usw.) UDP (z. B. Datagram, usw.) Einschränkungen Für die Kommunikation über die freiprogrammierbare IP-Schnittstelle dürfen keine Ports verwendet werden, die bereits vom Betriebssystem der Steuerung verwendet werden. Verwenden Sie deshalb folgende Ports nicht: Protokoll 266 Portnummer Standardwert 20 Benutzer TCP abhängig vom FTP-Client TCP 21 FTP-Server (Steuerung) TCP 23 System-Logger TCP 80 HTTP-Server TCP aus Datei /EMAIL/email.ini TCP 502 Modbus/TCP Server TCP, UDP 1024 - 2047 diverse TCP, UDP IP-Konfiguration 50000, 50001 JetIP TCP IP-Konfiguration 52000 Debug-Server 25, 110 FTP-Server (Daten) Email-Client Jetter AG JVM-407 Programmierung Inhalt Thema Seite Programmierung ......................................................................................... 268 Register ...................................................................................................... 280 Programmbeispiele ..................................................................................... 285 Jetter AG 267 11 Programmierung 11.8.1 Programmierung Einleitung Bei der freiprogrammierbaren IP-Schnittstelle werden die Daten über TCP/IPoder UDP/IP-Verbindungen zwischen dem Anwenderprogramm und einem Netzwerkteilnehmer ausgetauscht. Verwendung finden hierbei Aufrufe von Funktionen, die im Sprachumfang des JVM-407 enthalten sind. Führen Sie zur Programmierung folgende Schritte aus: Schritt Technische Daten Vorgehen 1 freiprogrammierbare IP-Schnittstelle initialisieren 2 Verbindung(en) öffnen 3 Daten übertragen 4 Verbindungen(en) schließen Die technischen Daten der freiprogrammierbaren IP-Schnittstelle: Funktion Einschränkungen Beschreibung Anzahl Verbindungen 20 maximale Datengröße 4000 Byte Im Anwenderprogramm sollten die Tasks, die die freiprogrammierbare IP-Schnittstelle bedienen, nicht durch TaskBreak angehalten oder durch TaskRestart neu gestartet werden, während von dem JVM-407 gerade eine dieser Funktionen bearbeitet wird. Dies kann zu folgenden Fehlern führen: Verbindungen werden nicht geöffnet Datenverlust beim Senden oder Empfangen Verbindungen, die geschlossen werden sollen, bleiben geöffnet Verbindungen, die noch verwendet werden sollen, werden geschlossen Inhalt Thema Seite Initialisieren der freiprogrammierbaren IP-Schnittstelle .............................. 269 Verbindung öffnen ....................................................................................... 270 Daten senden .............................................................................................. 274 Daten empfangen ....................................................................................... 276 Verbindung schließen ................................................................................. 279 268 Jetter AG JVM-407 Programmierung Initialisieren der freiprogrammierbaren IP-Schnittstelle Einleitung Die Initialisierung muss mindestens einmal bei jedem Start des Anwenderprogramms durchgeführt werden. Funktionsdeklaration Function ConnectionInitialize():Int; Rückgabewert Folgender Rückgabewert sind möglich: Rückgabewert 0 Verwenden der Funktion immer So kann die Funktion verwendet werden und der Rückgabewert einer Variablen zur weiteren Auswertung zugewiesen werden: Result := ConnectionInitialize(); Funktionsweise Das Gerät JVM-407 arbeitet die Funktion in folgenden Stufen ab: Stufe Beschreibung 1 Alle geöffneten Verbindungen der freiprogrammierbaren IP-Schnittstelle werden geschlossen 2 Alle betriebssysteminternen Datenstrukturen der freiprogrammierbaren IP-Schnittstelle werden initialisiert Verwandte Themen: Jetter AG Verbindung öffnen auf Seite 270 Verbindung schließen auf Seite 279 Daten senden auf Seite 274 Daten empfangen auf Seite 276 269 11 Programmierung Verbindung öffnen Einleitung Bevor Daten gesendet oder empfangen werden können muss eine Verbindung geöffnet werden. Dabei gilt es zu unterscheiden welches Transportprotokoll (TCP oder UDP) verwendet werden soll und ob ein Client oder ein Server eingerichtet werden soll. Funktionsdeklaration Function ConnectionCreate(ClientServerType:Int, IPType:Int, IPAddr:Int, IPPort:Int, Timeout:Int):Int; Funktionsparameter Beschreibung der Funktionsparameter: Parameter Rückgabewert Wert Bemerkung ClientServerType Client = 1 = CONNTYPE_CLIENT Server = 2 = CONNTYPE_SERVER IPType UDP/IP = 1 = IPTYPE_UDP TCP/IP = 2 = IPTYPE_TCP IPAddr gültige IP-Adresse nur bei TCP/IP-Client nötig IPPort gültiger IP-Port wird bei UDP/IP-Client ignoriert Timeout 0 .. 1.073.741.824 [ms] 0 = unendlich Bei einem positiven Rückgabewert konnte die Verbindung geöffnet werden. Bei einem negativen Rückgabewert ist ein Fehler aufgetreten und die Verbindung konnte nicht geöffnet werden. Rückgabewert 270 >0 Ein positiver Rückgabewert muss in einer Variablen gesichert werden, da es als Handle bei den Funktionen zum Empfangen und Senden von Daten über diese Verbindung und Schließen der Verbindung mitgegeben werden muss -1 Fehler beim Verbindungsaufbau -2 interner Fehler -3 ungültiger Parameter -8 Zeitüberschreitung Jetter AG JVM-407 Verwenden der Funktion bei einem TCP/IP-Client Programmierung So kann die Funktion verwendet werden und der Rückgabewert einer Variablen zur weiteren Auswertung zugewiesen werden, wenn ein Client eine TCP/IP-Verbindung zu einem Server aufbauen soll: Result := ConnectionCreate(CONNTYPE_CLIENT, IPTYPE_TCP, IP#192.168.75.123, 46000, T#10s); Funktionsweise bei einem TCP/IP-Client Der Task bleibt bei der Programmzeile stehen, bis die Verbindung aufgebaut werden konnte oder der angegebene Timeout abgelaufen ist. Die Funktion wird in folgenden Stufen abgearbeitet: Stufe Beschreibung 1 Das Gerät JVM-407 versucht eine TCP/IP-Verbindung zu Port 46000 zu dem Netzwerkteilnehmer mit der IP-Adresse 192.168.75.123 aufzubauen 2 Verwenden der Funktion bei einem TCP/IP-Server Wenn ... ... Dann ... der Netzwerkteilnehmer die Verbindung akzeptiert hat wird die Funktion beendet und ein positiver Wert als Handle zum weiteren Zugriff auf die Verbindung zurückgeliefert die Verbindung nicht aufgebaut werden konnte und die Timeoutzeit von 10 Sekunden noch nicht abgelaufen ist wird mit Stufe 1 fortgefahren ein Fehler aufgetreten ist oder der Timeout abgelaufen ist wird die Funktion beendet und ein negativer Wert zurückgeliefert So kann die Funktion aufgerufen werden und der Rückgabewert einer Variablen zur weiteren Auswertung zugewiesen werden, wenn ein Server eine TCP/IP-Verbindung mit einem Client aufbauen soll: Result := ConnectionCreate(CONNTYPE_SERVER, IPTYPE_TCP, 0, 46000, T#100s); Jetter AG 271 11 Programmierung Funktionsweise bei einem TCP/IP-Server Der Task bleibt bei der Programmzeile stehen, bis die Verbindung aufgebaut werden konnte oder der angegebene Timeout abgelaufen ist. Die Funktion wird in folgenden Stufen abgearbeitet: Stufe 1 2 Verwenden der Funktion bei einem UDP/IP-Client Beschreibung Das Gerät JVM-407 richtet den TCP/IP-Port 46000 zum Empfang von Verbindungsanfragen ein Wenn ... ... Dann ... der Client eines Netzwerkteilnehmers eine Verbindung aufgebaut hat werden keine weiteren Verbindungsanfragen auf diesen Port akzeptiert, die Funktion beendet und ein positiver Wert als Handle zum weiteren Zugriff auf die Verbindung zurückgeliefert die Verbindung nicht aufgebaut wurde und die Timeoutzeit von 100 Sekunden noch nicht abgelaufen ist wird auf einen Verbindungsaufbau gewartet ein Fehler aufgetreten ist oder der Timeout abgelaufen ist wird die Funktion beendet und ein negativer Wert zurückgeliefert So kann die Funktion aufgerufen werden und der Rückgabewert einer Variablen zur weiteren Auswertung zugewiesen werden, wenn ein Client eine UDP/IP-Verbindung aufbauen soll: Result := ConnectionCreate(CONNTYPE_CLIENT, IPTYPE_UDP, 0, 0, 0); Funktionsweise bei einem UDP/IP-Client Da es sich bei UDP um eine verbindungslose Art der Kommunikation handelt, öffnet die Steuerung lediglich einen Kommunikationskanal über den Daten an einen Netzwerkteilnehmer gesendet werden können. Die Funktion wird in folgenden Stufen abgearbeitet: Stufe Beschreibung 1 Das Gerät JVM-407 richtet einen UDP/IP-Verbindungskanal zum Senden von Daten ein 2 272 Wenn ... ... Dann ... kein Fehler aufgetreten ist wird die Funktion beendet und ein positiver Wert als Handle zum weiteren Zugriff auf die Verbindung zurückgeliefert ein Fehler aufgetreten ist wird die Funktion beendet und ein negativer Wert zurückgeliefert Jetter AG JVM-407 Verwenden der Funktion bei einem UDP/IP-Server Programmierung So kann die Funktion aufgerufen werden und der Rückgabewert einer Variablen zur weiteren Auswertung zugewiesen werden, wenn ein Server eine UDP/IP-Verbindung aufbauen soll: Result := ConnectionCreate(CONNTYPE_SERVER, IPTYPE_UDP, 0, 46000, 0); Funktionsweise bei einem UDP/IP-Server Da es sich bei UDP um eine verbindungslose Art der Kommunikation handelt, wird hierbei lediglich ein Kommunikationskanal eröffnet über den Daten von einem Netzwerkteilnehmer empfangen werden können. Die Funktion wird in folgenden Stufen abgearbeitet: Stufe 1 2 Beschreibung Das Gerät JVM-407 richtet einen UDP/IP-Verbindungskanal am Port 46000 zum Empfangen von Daten ein Wenn ... ... Dann ... kein Fehler aufgetreten ist wird die Funktion beendet und ein positiver Wert als Handle zum weiteren Zugriff auf die Verbindung zurückgeliefert ein Fehler aufgetreten ist wird die Funktion beendet und ein negativer Wert zurückgeliefert Verwandte Themen: Jetter AG Verbindung schließen auf Seite 279 Daten senden auf Seite 274 Daten empfangen auf Seite 276 Initialisieren der freiprogrammierbaren IP-Schnittstelle auf Seite 269 273 11 Programmierung Daten senden Einleitung Daten können über eine zuvor geöffnete TCP/IP-Verbindung oder über die UDP/IP-Verbindung eines Clients gesendet werden. Über die UDP/IP-Verbindung eines Servers können keine Daten gesendet, sondern lediglich empfangen werden. Funktionsdeklaration Function ConnectionSendData(IPConnection:Int, IPAddr:Int, IPPort:Int, Const Ref SendData, DataLen:Int):Int; Funktionsparameter Beschreibung der Funktionsparameter: Parameter Rückgabewert Wert Bemerkung IPConnection Handle Funktionsergebnis beim Öffnen der Verbindung IPAddr gültige IP-Adresse nur bei UDP/IP-Client nötig IPPort gültiger IP-Port nur bei UDP/IP-Client nötig SendData Adresse des zu sendenden Datenblocks DataLen 1 .. 4.000 Länge des Datenblocks in Byte Folgende Rückgabewerte sind möglich: Rückgabewert Verwenden der Funktion bei einer TCP/IP-Verbindung 0 Daten erfolgreich gesendet -1 Fehler beim Senden, z. B. Verbindung abgebrochen -3 ungültiges Handle, z. B. senden über einen UDP/IP-Server So kann die Funktion aufgerufen werden und der Rückgabewert einer Variablen zur weiteren Auswertung zugewiesen werden, wenn Daten über eine TCP/IP-Verbindung gesendet werden sollen: Result := ConnectionSendData(hConnection, 0, 0, SendBuffer, SendLen); 274 Jetter AG JVM-407 Programmierung Funktionsweise bei einer TCP/IP-Verbindung Bei TCP/IP werden die Daten über eine Verbindung übertragen, die vorher aufgebaut worden war. Deshalb ist die Angabe von IP-Adresse und IP-Port nicht mehr nötig und werden in der Funktion ignoriert. Der Task bleibt bei dem Befehl stehen, bis die Daten gesendet worden sind und ihr Empfang bestätigt worden ist oder ein Fehler aufgetreten ist. Verwenden der Funktion bei einem UDP/IP-Client So kann die Funktion aufgerufen werden und der Rückgabewert einer Variablen zur weiteren Auswertung zugewiesen werden, wenn Daten bei einem Client über eine UDP/IP-Verbindung gesendet werden sollen: Result := ConnectionData(hConnection, IP#192.168.75.123, 46000, SendBuffer, SendLen); Funktionsweise bei einem UDP/IP-Client Da bei UDP/IP keine Verbindung zwischen 2 Netzwerkteilnehmern besteht, können Daten bei jedem Funktionsaufruf an einen anderen Teilnehmer oder anderen Port gesendet werden. Der Task bleibt bei dem Befehl stehen, bis die Daten gesendet worden sind. Eine Bestätigung, dass die Daten von dem anderen Netzwerkteilnehmer auch empfangen worden sind, erfolgt nicht. Verwandte Themen: Jetter AG Initialisieren der freiprogrammierbaren IP-Schnittstelle auf Seite 269 Verbindung öffnen auf Seite 270 Verbindung schließen auf Seite 279 Daten empfangen auf Seite 276 275 11 Programmierung Daten empfangen Einleitung Daten können über eine zuvor geöffnete TCP/IP-Verbindung oder über die UDP/IP-Verbindung eines Servers empfangen werden. Über die UDP/IP-Verbindung eines Clients können keine Daten empfangen, sondern lediglich gesendet werden. Funktionsdeklaration Function ConnectionReceiveData(IPConnection:Int, Ref IPAddr:Int, Ref IPPort:Int, Ref ReceiveData, DataLen:Int, Timeout:Int):Int; Funktionsparameter Beschreibung der Funktionsparameter: Parameter Rückgabewert Wert Bemerkung IPConnection Handle Rückgabewert beim Öffnen der Verbindung IPAddr Adresse einer Variablen zur nur bei UDP/IP-Server Aufnahme der IP-Adresse nötig des Senders IPPort Adresse einer Variablen zur nur bei UDP/IP-Server Aufnahme des IP-Ports des nötig Senders ReceiveData Adresse des Empfangsdatenblocks DataLen 1 .. 4.000 maximale Länge des Datenblocks in Byte Timeout 0 .. 1.073.741.824 [ms] 0 = unendlich Folgende Rückgabewerte sind möglich: Rückgabewert 276 >0 Anzahl empfangener Datenbyte -1 Fehler beim Empfang, z. B. Verbindung abgebrochen -3 ungültiges Handle, z. B. empfangen über einen UDP/IP-Client -8 Timeout Jetter AG JVM-407 Verwenden der Funktion bei einer TCP/IP-Verbindung Programmierung So kann die Funktion aufgerufen werden und der Rückgabewert einer Variablen zur weiteren Auswertung zugewiesen werden, wenn Daten über eine TCP/IP-Verbindung empfangen werden sollen: Result := ConnectionReceiveData(hConnection, Dummy, Dummy, ReceiveBuffer, sizeof(ReceiveBuffer), T#10s); Funktionsweise bei einer TCP/IP-Verbindung Bei TCP/IP werden die Daten über eine Verbindung übertragen, die vorher aufgebaut worden war. Deshalb ist die Angabe von IP-Adresse und IP-Port nicht mehr nötig und werden in der Funktion ignoriert. Der Task bleibt bei dem Befehl stehen, bis Daten empfangen worden sind oder ein Fehler aufgetreten ist. Die Daten werden bei einer TCP/IP-Verbindung als Datenstrom übertragen. Das Gerät JVM-407 arbeitet die Funktion in folgenden Stufen ab: Stufe 1 2 Beschreibung Das Gerät JVM-407 wartet bis Daten empfangen worden sind, längstens jedoch die mitgegebene Timeout Zeit Wenn ... ... Dann ... der Timeout abgelaufen oder wird die Funktion mit einer Fehlerdie Verbindung beendet worden meldung verlassen ist Daten empfangen worden sind 3 Wenn ... werden sie in den mitgegebenen Empfangspuffer kopiert (höchstens jedoch bis zur mitgegebenen Anzahl) und bei Stufe 3 fortgefahren ... Dann ... mehr Daten empfangen worden werden diese vom JVM-407 gepuffert sind als in den Empfangspuffer und können aus dem Anwenderprokopiert werden konnten gramm durch weitere Aufrufe der Funktion abgeholt werden 4 Verwenden der Funktion bei einem UDP/IP-Server Die Funktion wird verlassen und die Anzahl der in den Empfangspuffer kopierten Daten zurückgegeben So kann die Funktion aufgerufen werden und der Rückgabewert einer Variablen zur weiteren Auswertung zugewiesen werden, wenn Daten bei einem Server über eine UDP/IP-Verbindung empfangen werden sollen: Result := ConnectionReceiveData(hConnection, IPAddr, IPPort, ReceiveBuffer, sizeof(ReceiveBuffer), Jetter AG 277 11 Programmierung T#10s); Funktionsweise bei einem UDP/IP-Server Der Task bleibt bei dem Befehl stehen, bis alle Daten empfangen worden sind oder ein Fehler aufgetreten ist. Die Daten werden bei einer UDP/IP-Verbindung als Datagramme übertragen. Die Steuerung arbeitet die Funktion in folgenden Stufen ab: Stufe 1 2 Beschreibung Das Gerät JVM-407 wartet bis alle Daten eines Datagramms empfangen worden sind, längstens jedoch die mitgegebene Timeout Zeit Wenn ... ... Dann ... der Timeout abgelaufen oder wird die Funktion mit einer Fehlerdie Verbindung beendet worden meldung verlassen ist Daten empfangen worden sind 3 Wenn ... werden sie in den mitgegebenen Empfangspuffer kopiert (höchstens jedoch bis zur mitgegebenen Anzahl) und bei Stufe 3 fortgefahren ... Dann ... mehr Daten empfangen worden werden diese verworfen sind als in den Empfangspuffer kopiert werden konnten (ist das gesendete Datagramm also größer) 4 IP-Adresse und IP-Port des Senders werden in die mitgegebenen Variablen übertragen 5 Die Funktion wird verlassen und die Anzahl der in den Empfangspuffer kopierten Daten zurückgegeben Verwandte Themen: 278 Initialisieren der freiprogrammierbaren IP-Schnittstelle auf Seite 269 Verbindung öffnen auf Seite 270 Verbindung schließen auf Seite 279 Daten senden auf Seite 274 Jetter AG JVM-407 Programmierung Verbindung schließen Einleitung Schließen Sie nicht mehr benötigte Verbindungen, da die Anzahl gleichzeitig geöffneter Verbindungen begrenzt ist. Funktionsdeklaration Function ConnectionDelete(IPConnection:Int):Int; Funktionsparameter Beschreibung der Funktionsparameter: Parameter IPConnection Rückgabewert Wert Handle Bemerkung Rückgabewert beim Öffnen der Verbindung Folgende Rückgabewerte sind möglich: Rückgabewert Verwenden der Funktion 0 Verbindung geschlossen und gelöscht -1 ungültiges Handle So kann die Funktion aufgerufen werden und der Rückgabewert einer Variablen zur weiteren Auswertung zugewiesen werden: Result := ConnectionDelete(hConnection); Verwandte Themen: Jetter AG Verbindung öffnen auf Seite 270 Daten senden auf Seite 274 Daten empfangen auf Seite 276 Initialisieren der freiprogrammierbaren IP-Schnittstelle auf Seite 269 279 11 Programmierung 11.8.2 Register Einleitung Dieses Kapitel beschreibt die Register des JVM-407, in denen die aktuelle Verbindungsliste der freiprogrammierbaren IP-Schnittstelle ausgelesen werden kann. Die Register können zu Debug- oder Diagnosezwecken verwendet werden. Weitere Funktionen, wie z. B. Verbindung öffnen oder schließen, können hierüber nicht ausgelöst werden. Inhalt Thema Seite Registernummern ....................................................................................... 281 Registerbeschreibung ................................................................................. 282 280 Jetter AG JVM-407 Programmierung Registernummern Einleitung Die Daten jeweils einer Verbindung werden in den Registern eines zusammenhängenden Registerblocks angezeigt. Die Basisregisternummer dieses Blocks ist steuerungsabhängig. Registernummern Registernummer ermitteln Registerübersicht Jetter AG Steuerung Basisregisternummer Registernummern JC-24x 10290 10290 ... 10297 JM-D203-JC24x 10290 10290 ... 10297 JC-340, JC-350, JC-360, JC-940MC, JVM-407 350000 350000 ... 350007 In diesem Kapitel ist jeweils nur die letzte Ziffer der Registernummer angegeben. Zur Berechnung der tatsächlich verwendeten Registernummer ist die Basisregisternummer des jeweiligen Geräts hinzuzuaddieren. Register Beschreibung MR 0 Verbindungsauswahl MR 1 Verbindungstyp MR 2 Transportprotokoll MR 3 IP-Adresse MR 4 IP-Port MR 5 Zustand MR 6 Anzahl gesendeter Bytes MR 7 Anzahl empfangener Bytes 281 11 Programmierung Registerbeschreibung Einleitung Die geöffneten Verbindungen werden vom Betriebssystem in einer Liste verwaltet. Mit Hilfe des Modulregisters MR 0 Verbindungsauswahl werden die Verbindungsdaten einer Verbindung in die anderen Register des Registerblocks kopiert. MR 0 Verbindungsauswahl Durch Beschreiben des Registers werden die Verbindungen ausgewählt und ihre Daten in den folgenden Registern sichtbar. Beim Lesen wird angezeigt, ob die folgenden Register Verbindungsdaten enthalten. Modulregister-Eigenschaften Werte lesen 0 Verbindung vorhanden -1 Verbindung nicht vorhanden Modulregister-Eigenschaften Werte schreiben MR 1 0 erste Verbindung in der Liste anwählen >0 nächste Verbindung in der Liste anwählen <0 vorherige Verbindung in der Liste anwählen Verbindungstyp Der Wert in diesem Register zeigt an, ob es sich um eine Client- oder eine Serververbindung handelt. Modulregister-Eigenschaften Werte MR 2 1 Client 2 Server Transportprotokoll Der Wert in diesem Register zeigt an, ob TCP oder UDP als Transportprotokoll verwendet wird. Modulregister-Eigenschaften Werte 282 1 UDP 2 TCP Jetter AG JVM-407 MR 3 Programmierung IP-Adresse Der Wert in diesem Register zeigt die konfigurierte IP-Adresse an. Modulregister-Eigenschaften Werte MR 4 0.0.0.0 ... 255.255.255.255 IP-Port Der Wert in diesem Register zeigt den konfigurierten IP-Port an. Modulregister-Eigenschaften Werte MR 5 0 ... 65.535 Zustand Der Wert in diesem Register zeigt an, in welchem Zustand sich die Verbindung befindet. Modulregister-Eigenschaften Werte MR 6 0 Verbindung geschlossen 1 Verbindung wird geöffnet 2 Verbindung ist geöffnet 3 TCP/IP-Server: warte auf Verbindungsanfrage von Client 4 interne Verwendung Anzahl gesendeter Bytes Der Wert in diesem Register zeigt die Anzahl der über diese Verbindung gesendeten Datenbytes an. Da es sich um ein vorzeichenbehaftetes 32-Bit-Register handelt und die gesendeten Bytes jeweils hinzuaddiert werden, können Zahlenüberläufe vom positiven zum negativen Maximalwert auftreten. Modulregister-Eigenschaften Werte Jetter AG -2.147.483.648 ... 2.147.483.647 283 11 Programmierung MR 7 Anzahl empfangener Bytes Der Wert in diesem Register zeigt die Anzahl der über diese Verbindung empfangenen Datenbytes an. Da es sich um ein vorzeichenbehaftetes 32-Bit-Register handelt und die empfangenen Bytes jeweils hinzuaddiert werden, können Zahlenüberläufe vom positiven zum negativen Maximalwert auftreten. Modulregister-Eigenschaften Werte 284 -2.147.483.648 ... 2.147.483.647 Jetter AG JVM-407 Programmierung 11.8.3 Programmbeispiele Einleitung In diesem Kapitel sind Programmbeispiele für die Implementierung eines Servers und eines dazu passenden Clients, die über TCP/IP kommunizieren, angegeben. Beispiel-Konfiguration Diese Beispiele basieren auf folgender Konfiguration: 1 Jetter JC-940MC JC-350 2 X14 E D1 D2 U1 U2 U3 U4 Jetter X19 S11 RUN LOAD X14 BUS OUT STOP ETHERNET E T H 1 R SD X15 X11 X61 STOP RUN S10 LOAD POWER S11 RESET Nummer Teil X10 SD-CARD SER Err D1 RUN DC24V 1,2A 0V Funktion 1 JC-940MC Steuerung 2 JC-350 Steuerung Da die Funktionalität der freiprogrammierbaren IP-Schnittstelle jedoch nicht plattformspezifisch implementiert ist, sind diese Beispiele ohne Änderung auch auf andere Konfigurationen übertragbar. Inhalt Thema Seite Server ......................................................................................................... 286 Client ........................................................................................................... 290 Jetter AG 285 11 Programmierung Server Aufgabe Ein Server soll einen Datenblock mit einer festgelegten Anzahl von Zeichen empfangen und die empfangenen Daten wieder an den Client zurückschicken. Lösung Programmierung eines Servers für die freiprogrammierbare IP-Schnittstelle, der über TCP/IP kommuniziert. Beispiel-Konfiguration Das Beispiel basiert auf der Konfiguration unter Beispiel-Konfiguration auf Seite 285. JetSym STX-Programm Const TCP_PORT = 52100; MSG_LEN = 4000; End_Const; Var // connection handle ConnHandle : Int; // send buffer SendBuf : Array[MSG_LEN] Of Char; // receive buffer RecvBuf : Array[MSG_LEN] Of Char; ResConnInit ResConnCreate ResConnReceive ResConnSend : : : : Int; Int; Int; Int; ConnTimeOut RecvTimeOut : Int; : Int; // receive error count RecvErrors : Int; // send error count SendErrors : Int; // valid communication counter CommCnt : Int; AmountToReceive : Int; // dummy NotUsed End_Var; : Int; Task TCPserver Autorun Var 286 Jetter AG JVM-407 Programmierung RecvTimer ReceiveCnt End_Var; : Timer; : Int; // connection timeout ConnTimeOut := T#5s; // receiption timeout RecvTimeOut := T#5s; // expected amount of data to receive AmountToReceive := MSG_LEN; // close all connections, init. data structures ResConnInit := ConnectionInitialize(); If ResConnInit >= 0 Then Trace('Server running.$n'); While (True) Do // try to connect ResConnCreate := ConnectionCreate ( CONNTYPE_SERVER, IPTYPE_TCP, 0, TCP_PORT, ConnTimeOut ); If ResConnCreate > 0 Then Trace('Connection established.'); // save connection handle ConnHandle := ResConnCreate; // loop, as long as connection established Loop // timeout for the complete data packet TimerStart(RecvTimer, RecvTimeOut * 5); // init. receive data counter ReceiveCnt := 0; // loop until all expected data received or timeout While ReceiveCnt < AmountToReceive And Not TimerEnd(RecvTimer) Do ResConnReceive := ConnectionReceiveData ( ConnHandle, NotUsed, NotUsed, Jetter AG 287 11 Programmierung RecvBuf[ReceiveCnt], SizeOf(RecvBuf), RecvTimeOut ); If ResConnReceive > 0 Then // something received, increment counter ReceiveCnt := ReceiveCnt + ResConnReceive; Else // error on receive ResConnReceive := -1; // increment error counter inc(RecvErrors); // leave loop Exit; End_If; End_While; // here is the point to implement the server function; // in this example we simply return the received data If ReceiveCnt Then // copy from receive to send buffer MemCopy(SendBuf,RecvBuf,SizeOf(SendBuf)); ResConnSend := ConnectionSendData ( ConnHandle, 0, 0, SendBuf, ReceiveCnt ); If ResConnSend < 0 Then // increment error counter Inc(SendErrors); End_If; End_If; If ResConnSend >= 0 And ResConnReceive >= 0 Then // no error --> increment OK counter Inc(CommCnt); Else // leave loop Exit; End_If; End_Loop; If ConnHandle > 0 Then // close connection ConnectionDelete(ConnHandle); // no longer valid ConnHandle := 0; Trace('Connection closed.$n'); End_If; 288 Jetter AG JVM-407 Programmierung End_If; // wait a little bit before trying to reconnect Delay(T#3s); End_While; Else Trace('ConnectionInitialize() failed, server stopped !$n'); End_If; End_Task; Verwandte Themen: Client auf Seite 290 Jetter AG 289 11 Programmierung Client Aufgabe Ein Client soll einen Datenblock mit einer festgelegten Anzahl von Zeichen versenden und die vom Server zurückgeschickten Daten empfangen. Lösung Programmierung eines Clients für die freiprogrammierbare IP-Schnittstelle, der über TCP/IP kommuniziert. Beispiel-Konfiguration Das Beispiel basiert auf der Konfiguration unter Beispiel-Konfiguration auf Seite 285. JetSym STX-Programm Const TCP_ADDR = IP#192.168.10.210; TCP_PORT = 52100; MSG_LEN = 4000; End_Const; Var // connection handle ConnHandle : Int; // send buffer SendBuf : Array[MSG_LEN] Of Char; // receive buffer RecvBuf : Array[MSG_LEN] Of Char; ResConnInit ResConnCreate ResConnReceive ResConnSend : : : : Int; Int; Int; Int; ConnTimeOut RecvTimeOut : Int; : Int; // receive error count RecvErrors : Int; // send error count SendErrors : Int; // valid communication counter CommCnt : Int; AmountToReceive : Int; SendDelay : Int; // dummy NotUsed End_Var; : Int; Task TCPclient Autorun 290 Jetter AG JVM-407 Programmierung Var RecvTimer ReceiveCnt End_Var; : Timer; : Int; // connection timeout ConnTimeOut := T#5s; // receiption timeout RecvTimeOut := T#5s; // expected amount of data to receive AmountToReceive := MSG_LEN; SendDelay := T#500ms; // close all connections, init. data structures ResConnInit := ConnectionInitialize(); If ResConnInit >= 0 Then Trace('Client running.$n'); While (True) Do // try to connect ResConnCreate := ConnectionCreate ( CONNTYPE_CLIENT, IPTYPE_TCP, TCP_ADDR, TCP_PORT, ConnTimeOut ); If ResConnCreate > 0 Then Trace('Connection established.'); // save connection handle ConnHandle := ResConnCreate; // loop, as long as connection established Loop ResConnSend := ConnectionSendData ( ConnHandle, 0, 0, SendBuf, AmountToReceive ); If ResConnSend < 0 Then // increment error counter Inc(SendErrors); End_If; Jetter AG 291 11 Programmierung // timeout for the complete data packet TimerStart(RecvTimer, RecvTimeOut * 5); // init. receive data counter ReceiveCnt := 0; // loop until all expected data received or timeout While ReceiveCnt < AmountToReceive And Not TimerEnd(RecvTimer) Do ResConnReceive := ConnectionReceiveData ( ConnHandle, NotUsed, NotUsed, RecvBuf[ReceiveCnt], SizeOf(RecvBuf), RecvTimeOut ); If ResConnReceive > 0 Then // something received, increment counter ReceiveCnt := ReceiveCnt + ResConnReceive; Else // error on receive ResConnReceive := -1; // increment error counter Inc(RecvErrors); // leave loop Exit; End_If; End_While; If ResConnSend >= 0 And ResConnReceive >= 0 Then // no error --> increment OK counter Inc(CommCnt); Delay(SendDelay); Else // leave loop Exit; End_If; End_Loop; If ConnHandle > 0 Then // close connection ConnectionDelete(ConnHandle); // no longer valid ConnHandle := 0; Trace('Connection closed.$n'); End_If; End_If; 292 Jetter AG JVM-407 Programmierung // wait a little bit before trying to reconnect Delay(T#3s); End_While; Else Trace('ConnectionInitialize() failed, client stopped !$n'); End_If; End_Task; Verwandte Themen: Server auf Seite 286 Jetter AG 293 11 Programmierung 11.9 Freiprogrammierbare CAN-PRIM-Schnittstelle Die CAN-PRIM-Schnittstelle Die freiprogrammierbare CAN-PRIM-Schnittstelle bietet die Möglichkeit, beliebige CAN-Nachrichten zu senden und zu empfangen. Das Verarbeiten der CAN-Nachrichten erfolgt dabei vollständig im Anwenderprogramm. Anwendungen, z. B. Folgende Anwendungen sind mit der freiprogrammierbare CAN-PRIM-Schnittstelle möglich: Anschluss von Modulen mit CAN-Schnittstelle Voraussetzungen an den Programmierer Die Funktionalität der freiprogrammierbaren CAN-PRIM-Schnittstelle setzt grundlegende Kenntnisse des Controller Area Networks CAN voraus. Dazu zählen: Aufbau einer CAN-Nachricht Inhalt Thema Seite Funktion der CAN-PRIM-Schnittstelle ........................................................ 295 Einschränkungen der CAN-PRIM-Schnittstelle .......................................... 296 Programmierung der CAN-PRIM-Schnittstelle ........................................... 297 Interne Prozesse der CAN-PRIM-Schnittstelle ........................................... 300 Registerbeschreibung der CAN-PRIM-Schnittstelle ................................... 301 Beispiel zur CAN-PRIM-Schnittstelle .......................................................... 307 294 Jetter AG JVM-407 Programmierung Funktion der CAN-PRIM-Schnittstelle Funktion Bei der freiprogrammierbaren CAN-PRIM-Schnittstelle funktioniert der Datenaustausch zwischen dem CAN-Bus und dem Anwenderprogramm über Nachrichten-Boxen. Jede Nachrichten-Box bietet Platz für eine komplette CAN-Nachricht. Dem Anwender stehen 32 Nachrichten-Boxen zur Verfügung. Jede Nachrichten-Box kann als Sende- oder Empfangsbox konfiguriert werden und verfügt über eine eigene CAN-ID. Technische Daten Jetter AG Funktion Beschreibung CAN-ID 11-Bit oder 29-Bit RTR-Nachrichten werden nicht unterstützt Anzahl Nachrichten-Boxen 32 295 11 Programmierung Einschränkungen der CAN-PRIM-Schnittstelle Nur CAN-0 Beim JVM-407 steht die CAN-PRIM-Schnittstelle nur bei CAN-0 zur Verfügung. Zeitverhalten Der Abstand zwischen zwei CAN-Nachrichten, die über die CAN-PRIM-Schnittstelle empfangen werden, muss 10 ms betragen. Ist der Abstand kleiner, dann empfängt das Bediengerät JVM-407 nicht alle CAN-Nachrichten. Reservierte CAN-IDs Die folgenden CAN-IDs sind reserviert, da gleichzeitig CANopen® läuft: Reservierte CAN-IDs Beschreibung 0x00 Bei 11Bit NMT 0x600 + Node-ID und 0x580 + Node-ID SDO 0x80 Sync 0x100 Time Stop 0x80 + Node-ID Emergency Message 0x700 + Node-ID Heartbeat + verwandte PDOs Im Anwenderprojekt + IDs von anderen CANopen®-Teilnehmern 296 Jetter AG JVM-407 Programmierung Programmierung der CAN-PRIM-Schnittstelle Registerübersicht In dieser Anleitung werden die folgenden Register verwendet: Register Initialisierung Beschreibung R 200010500 Statusregister CAN-PRIM R 200010501 Kommandoregister CAN-PRIM R 200010502 Box-Nummer R 200010503 Fifo-Füllstand R 200010510 Box-Statusregister R 200010511 Box-Konfigurationsregister R 200010512 CAN-ID R 200010513 Anzahl Datenbytes R 200010514 ... R 200010521 Datenbyte 0 ... Datenbyte 7 Zur Initialisierung der CAN-PRIM-Schnittstelle müssen Sie die CAN-ID-Länge für alle Nachrichten-Boxen folgendermaßen konfigurieren: Wenn die CAN-ID-Länge... Jetter AG ... Dann ... 11 Bit ist R 200010501 := 8; 29 Bit ist R 200010501 := 9; 297 11 Programmierung Konfiguration einer Nachrichten-Box zum Senden Führen Sie zur Konfiguration einer Nachrichten-Box zum Senden folgende Schritte aus: Schritt Vorgehen 1 Auswahl der Nachrichten-Box R 200010502 := Nummer der Nachrichten-Box; 2 Konfiguration der Nachrichten-Box als Sendebox R 200010511 := 1; 3 Konfiguration der CAN-ID zum Senden R 200010512 := CAN-ID; 4 Aktivierung der Box R 200010501 := 1; Ergebnis der erfolgreichen Konfiguration: Bit 0 = 1 in R 200010510 Senden einer CAN-Nachricht Führen Sie zum Senden einer CAN-Nachricht folgende Schritte aus: Schritt Vorgehen 1 Auswahl der Nachrichten-Box R 200010502 := Nummer der Nachrichten-Box; 2 Anzahl zu sendender Bytes R 200010513 := Anzahl Bytes; 3 Schreiben der Datenbytes R 200010514 := Datenbyte 0; R 200010515 := Datenbyte 1; ... R 200010521 := Datenbyte 7; 4 Senden der Daten aus der angewählten Nachrichten-Box R 200010501 := 3; Ergebnis des erfolgreichen Sendens: Bit 3 = 0 in R 200010510 298 Jetter AG JVM-407 Konfiguration einer Nachrichten-Box zum Empfangen Programmierung Führen Sie zur Konfiguration einer Nachrichten-Box zum Empfangen folgende Schritte aus: Schritt Vorgehen 1 Auswahl der Nachrichten-Box R 200010502 := Nummer der Nachrichten-Box; 2 Konfiguration der Nachrichten-Box als Empfangsbox R 200010511 := 0; 3 Konfiguration der CAN-ID zum Empfangen R 200010512 := CAN-ID; 4 Aktivierung der Box R 200010501 := 1; Ergebnis der erfolgreichen Konfiguration: Bit 0 = 1 in R 200010510 Empfang einer CAN-Nachricht Führen Sie zum Empfang einer CAN-Nachricht folgende Schritte aus: Schritt 1 Vorgehen Überprüfung von Bit 1 NEWDAT in R 200010500 Wenn ... Bit 1 = 1 in R 200010500 ... Dann ... wurde eine CAN-Nachricht empfangen. Weiter mit Schritt 2. 2 Auswahl der Nachrichten-Box, die eine neue CAN-Nachricht empfangen hat. R 200010502 := R 200010504; 3 Überprüfung eines Überlaufs der Nachrichten-Box. Wenn ... Bit 2 = 1 in R 200010510 Jetter AG ... Dann ... trat ein Überlauf auf. 4 Lesen der Anzahl der empfangenen Bytes Anzahl Bytes := R 200010513; 5 Lesen der empfangen Bytes Datenbyte 0 := R 200010514; Datenbyte 1 := R 200010515; ... Datenbyte 7 := R 200010521; 6 Quittierung des Empfangs R 200010501 := 4; 7 Die Nachrichten-Box ist wieder empfangsbereit. 299 11 Programmierung Interne Prozesse der CAN-PRIM-Schnittstelle Einleitung Die CAN-PRIM-Schnittstelle arbeitet die folgenden Aufgaben selbstständig ab. Empfang von CAN-Nachrichten Senden von CAN-Nachrichten Filtern von CAN-Nachrichten beim Empfang Interner Empfang von CAN-Nachrichten Die CAN-PRIM-Schnittstelle empfängt folgendermaßen eine neue CAN-Nachricht: Stufe 1 Eine gültige CAN-Nachricht wurde vom CAN-Bus empfangen. 2 Die CAN-ID stimmt mit der Empfangsmaske überein. 3 Die CAN-ID stimmt mit der CAN-ID einer Nachrichten-Box, die auf Empfang konfiguriert wurde, überein. 4 300 Beschreibung Wenn im R 200010510 der Nachrichten-Box ... ... Dann ... das NEW-DAT-Bit = 0 wird NEW-DAT-Bit = 1 weiter mit Stufe 5. das NEW-DAT-Bit = 1 wird OVERRUN-Bit = 1; die Daten der CAN-Nachricht werden verworfen. 5 Das R 200010503 Fifo-Füllstand wird um Eins erhöht. 6 Die Nummer der Nachrichten-Box wird in das R 200010504 Fifo-Daten eingetragen. 7 Im R 200010500 Status CAN-PRIM wird das NEW-DAT-Bit = 1. Jetter AG JVM-407 Programmierung Registerbeschreibung der CAN-PRIM-Schnittstelle R 200010500 Statusregister CAN-PRIM Über das R 200010500 kann der Zustand der CAN-PRIM-Schnittstelle ausgewertet werden. Bedeutung der Bits Bit 1 NEW-DAT 1= Bit 2 Mindestens eine Nachrichten-Box hat eine neue CAN-Nachricht erhalten. ID-Länge 0= es werden CAN-IDs mit 11 Bit Länge gesendet / empfangen 1= es werden CAN-IDs mit 29 Bit Länge gesendet / empfangen Modulregister-Eigenschaften Jetter AG Zugriff lesen Wert nach Reset CAN-PRIM-Schnittstelle ist aktiviert. 301 11 Programmierung R 200010501 Kommandoregister CAN-PRIM Über das R 200010501 werden bestimmte Kommandos zur CAN-PRIM-Schnittstelle übertragen. Kommandos der CAN-PRIM-Schnittstelle 1 Nachrichten-Box aktivieren Die angewählte Nachrichten-Box in R 200010502 wird aktiviert. Bei der Aktivierung wird überprüft, ob die CAN-ID der Box vom Systembus nicht reserviert ist. Ergebnis: Bit 0 = 1 im R 200010510 2 Nachrichten-Box deaktivieren Die angewählte Nachrichten-Box in R 200010502 wird deaktiviert. Ergebnis: Bit 0 = 0 im R 200010510 3 CAN-Nachricht senden Es wird eine CAN-Nachricht mit den Daten der angewählten Nachrichten-Box gesendet. 4 NEW-DAT-Bit löschen Löscht das NEW-DAT-Bit im R 200010500. Die angewählte Nachrichten-Box kann wieder CAN-Nachrichten empfangen. Ergebnis: Bit 1 = 0 im R 200010510 5 OVERRUN-Bit löschen Löscht das OVERRUN-Bit im R 200010510 der angewählten Nachrichten-Box. Ergebnis: Bit 2 = 0 im R 200010510 6 Sendefehler-Bit löschen Löscht das Sendefehler-Bit im R 200010510 der angewählten Nachrichten-Box. Ergebnis: Bit 3 = 0 im R 200010510 7 Fifo löschen Alle Einträge im Fifo werden gelöscht. Ergebnis: R 200010503 = 0 8 Standard-ID Länge auf 11-Bit einstellen Die ID-Länge für alle CAN-Nachrichten wird auf 11-Bit eingestellt. Ergebnis: Bit 2 = 0 im R 200010500 R 200010506 := 0 R 200010507 := 0 9 Standard-ID Länge auf 29-Bit einstellen Die ID-Länge für alle CAN-Nachrichten wird auf 29-Bit eingestellt. Ergebnis: Bit 2 = 1 im R 200010500 R 200010506 := 0 R 200010507 := 0 302 Jetter AG JVM-407 Programmierung Kommandos der CAN-PRIM-Schnittstelle 10 Nachrichten-Boxen auf den Empfang neuer Nachrichten überprüfen Die CAN-PRIM Schnittstelle überprüft selbständig den Empfang neuer CAN-Nachrichten. Das Kommando 10 erhöht das Überprüfungsintervall auf den Empfang neuer Nachrichten. Modulregister-Eigenschaften Zugriff R 200010502 CAN-PRIM-Schnittstelle ist aktiviert. Nummer der Nachrichten-Box Über das R 200010502 wird eine Nachrichten-Box ausgewählt. Die Daten der Nachrichten-Box sind dann über die Modulregister R 200010510 bis R 200010521 erreichbar. Modulregister-Eigenschaften R 200010503 Werte Nummer der Nachrichten-Box: 0 ... 15 Zugriff lesen entfernt Zeichen Wird wirksam wenn CAN-PRIM-Schnittstelle aktiviert ist. Fifo-Füllstand Das R 200010503 zeigt, ob und wie viele neue CAN-Nachrichten empfangen wurden. Modulregister-Eigenschaften Jetter AG Werte Anzahl empfangener Nachrichten: 0 ... 16 Zugriff lesen Wird wirksam wenn CAN-PRIM-Schnittstelle aktiviert ist. 303 11 Programmierung R 200010504 Fifo-Daten Das R 200010504 zeigt, in welcher Nachrichten-Box eine neue CAN-Nachricht empfangen wurde. Beim Lesen des R 200010504 wird der gerade gelesene Wert aus dem Fifo entfernt. Der Wert des R 200010503 wird dabei um eins verringert. Modulregister-Eigenschaften Werte R 200010506 keine Fifo-Daten vorhanden: -1 Nummer der Nachrichten-Box mit neuen Daten: 0 ... 15 Zugriff lesen entfernt Zeichen Wert nach Reset -1 Wird wirksam wenn CAN-PRIM-Schnittstelle aktiviert ist. Globale Empfangsmaske Die globale Empfangsmaske filtert die Bits der empfangenen CAN-ID. Bei gesetztem Bit der globalen Empfangsmaske wird das empfangene Bit der CAN-ID mit der globalen Empfangs-ID verglichen. Modulregister-Eigenschaften Werte R 200010507 bei 11-Bit CAN-IDs 0 ... 0x7FF bei 29-Bit CAN-IDs 0 ... 0x1FFFFFFF Bit = 0 Bit wird nicht mit R 200010507 verglichen. Bit = 1 Bit wird mit R 200010507 verglichen. Wird wirksam wenn CAN-PRIM-Schnittstelle aktiviert ist. Globale Empfangs-ID Über die globale Empfangs-ID und die R 200010506 Globale Empfangsmaske wird ein Bereich von CAN-IDs eingestellt, der an die CAN-PRIM-Schnittstelle weitergeleitet wird. Modulregister-Eigenschaften Werte Wird wirksam 304 bei 11-Bit CAN-IDs 0 ... 0x7FF bei 29-Bit CAN-IDs 0 ... 0x1FFFFFFF wenn CAN-PRIM-Schnittstelle aktiviert ist. Jetter AG JVM-407 R 200010510 Programmierung Box-Statusregister Über das R 200010510 kann der Zustand einer Nachrichten-Box ausgewertet werden. Bedeutung der Bits Bit 0 Valid 1= Bit 1 NEW-DAT 1= Bit 2 Die Nachrichten-Box hat eine CAN-Nachricht empfangen. Der Empfang weiterer CAN-Nachrichten ist blockiert. OVERRUN 1= Bit 3 Die Nachrichten-Box ist aktiviert Es wurde eine neue CAN-Nachricht für diese Nachrichten-Box empfangen, als NEW-DAT = 1 war. Sendefehler 1= Beim Senden einer CAN-Nachricht aus dieser Nachrichten-Box ist ein Fehler aufgetreten. Modulregister-Eigenschaften R 200010511 Zugriff lesen Wird wirksam wenn CAN-PRIM-Schnittstelle aktiviert ist. Box-Konfigurationsregister Über das R 200010511 kann die Box konfiguriert werden. Bedeutung der Bits Bit 0 Sende- / Empfangsbox 0= Sendebox 1= Empfangsbox Modulregister-Eigenschaften Wird wirksam Jetter AG wenn CAN-PRIM-Schnittstelle aktiviert ist. 305 11 Programmierung R 200010512 CAN-ID Bei einer Sendebox wird eine CAN-Nachricht mit dieser CAN-ID gesendet. Bei einer Empfangsbox werden nur CAN-Nachrichten mit dieser CAN-ID empfangen. Modulregister-Eigenschaften Werte Wird wirksam R 200010513 bei 11-Bit CAN-IDs 0 ... 0x7FF bei 29-Bit CAN-IDs 0 ... 0x1FFFFFFF wenn CAN-PRIM-Schnittstelle aktiviert ist und die Nachrichten-Box nicht aktiviert ist, d.h. Bit 0 = 0 im MR 10510. Anzahl Datenbytes Bei einer Sendebox wird eine CAN-Nachricht mit dieser Anzahl Datenbytes gesendet. Bei einer Empfangsbox wird die Anzahl empfangener Datenbytes der CAN-Nachricht eingetragen. Modulregister-Eigenschaften R 200010514 ... R 200010521 Werte Anzahl Datenbytes: 0 ... 8 Wird wirksam wenn CAN-PRIM-Schnittstelle aktiviert ist. Datenbytes 0 bis 7 Bei einer Sendebox wird eine CAN-Nachricht mit diesen Datenbytes gesendet. Bei einer Empfangsbox werden die empfangenen Datenbytes der CAN-Nachricht eingetragen. Modulregister-Eigenschaften 306 Werte Daten der Datenbytes: 0 ... 255 Wird wirksam wenn CAN-PRIM-Schnittstelle aktiviert ist. Jetter AG JVM-407 Programmierung Beispiel zur CAN-PRIM-Schnittstelle Aufgabe Über die CAN-Schnittstelle sollen CAN-Nachrichten mit den CAN-IDs 0x200 empfangen werden. Nach dem Empfang soll eine CAN-Nachricht mit der CAN-ID 0x277 gesendet werden. Lösung Über die CAN-PRIM-Schnittstelle werden die Daten gesendet und empfangen. Dazu wird eine Nachrichten-Box als Empfangsbox für die CAN-ID 0x200 eingerichtet. Eine weitere Nachrichten-Box wird als Sendebox mit der CAN-ID 0x277 konfiguriert. Konfiguration Bei diesem Beispiel wird die CAN-PRIM-Schnittstelle des JVM-407 benutzt. JetSym STX-Programm Konfiguration Type TYPE_JC_CAN_PRIM: Struct State : Command : BoxNumber : FifoNumData : FifoData : GlobalMask : GlobalID : BoxState : BoxConfig : BoxCanId : BoxDLC : BoxData : End_Struct; End_Type; Var CanPrim Data End_Var; Jetter AG Int At 0*SizeOf(Int); Int At 1*SizeOf(Int); Int At 2*SizeOf(Int); Int At 3*SizeOf(Int); Int At 4*SizeOf(Int); Int At 6*SizeOf(Int); Int At 7*SizeOf(Int); Int At 10*SizeOf(Int); Int At 11*SizeOf(Int); Int At 12*SizeOf(Int); Int At 13*SizeOf(Int); Array[8] of Int At 14*SizeOf(Int); : TYPE_JC_CAN_PRIM At %VL 200010500; : Array[8] of Int; 307 11 Programmierung Task main Autorun // 11-Bit CAN-ID CanPrim.Command := 8; // Box 0 auswählen CanPrim.BoxNumber := 0; // Box auf ID 0x200 konfigurieren CanPrim.BoxCanId := 0x200; // als Empfangsbox konfigurieren CanPrim.BoxConfig := 0; // Box aktivieren CanPrim.Command := 1; If BitClear(CanPrim.BoxState, 0) Then // CAN-ID already used by system bus End_If; // Box 1 auswählen CanPrim.BoxNumber := 1; // Box auf ID 0x2FF konfigurieren CanPrim.BoxCanId := 0x2FF; // als Sendebox konfigurieren CanPrim.BoxConfig := 1; // Box aktivieren CanPrim.Command := 1; If BitClear(CanPrim.BoxState, 0) Then // CAN-ID bereits vom CAN-Systembus genutzt End_If; End_Task; 308 Jetter AG JVM-407 JetSym STX-Programm Empfang von Daten Programmierung // auf neue CAN-Nachrichten warten When BitSet(CanPrim.State, 1) Continue; // Box Nummer aus dem Fifo lesen und Box auswählen CanPrim.BoxNumber := CanPrim.FifoData; // Overrun prüfen If BitSet(CanPrim.BoxState, 2) Then // Overrun quittieren CanPrim.Command := 5; End_If; // empfangene Daten kopieren Data[0] := CanPrim.BoxData[0]; Data[1] := CanPrim.BoxData[1]; // NEW-DATA-Bit zurücksetzen, um neue Nachrichten // auf dieser Box empfangen zu können CanPrim.Command := 4; JetSym STX-Programm Senden von Daten // Box 1 auswählen CanPrim.BoxNumber := 1; // Anzahl Datenbytes = 2 CanPrim.BoxDLC := 2; // zu sendende Daten eintragen CanPrim.BoxData[0] := 12; CanPrim.BoxData[1] := 25; // das Senden der CAN-Nachricht starten CanPrim.Command := 3; // Sendefehler prüfen If BitSet(CanPrim.BoxState, 3) Then // Sendefehler quittieren CanPrim.Command := 6; End_If; Jetter AG 309 12 Automatisches Kopieren von Steuerungsdaten 12 Automatisches Kopieren von Steuerungsdaten Einleitung Dieses Kapitel beschreibt die AutoCopy-Funktion, die es ermöglicht, Dateien innerhalb des JVM-407 und/oder zwischen dem JVM-407 und einem FTP-Server zu kopieren. Hierzu ist eine Kommandodatei zu erstellen, die zusammen mit den Daten auf der SD-Karte oder einem USB-Stick abgelegt ist. Die Kommandodatei wird beim Booten von der Steuerung automatisch abgearbeitet. Funktionen im lokalen Dateisystem Folgende Funktionen können ausgeführt werden: Funktionen im Dateisystem des FTP-Servers Dateien vom FTP-Server kopieren Dateien zum FTP-Server kopieren Dateien löschen Verzeichnis wechseln Verzeichnis anlegen Verzeichnis löschen Anwendungsbereiche sind hauptsächlich dort, wo Fernwartung nicht möglich ist, kein PC vor Ort vorhanden ist oder der Anlagenbediener nicht in der Lage ist (oder nicht in die Lage versetzt werden soll) Änderungen an der Anlage vorzunehmen: Voraussetzungen Verzeichnisse anlegen Verzeichnisse löschen Dateien kopieren Dateien löschen Folgende Funktionen können ausgeführt werden: Anwendungsbereiche Register und Merker in eine Datei abspeichern Register und Merker aus einer Datei einspielen Änderung des Anwenderprogramms Änderung der Anwenderdaten Änderung der Steuerungskonfiguration Betriebssystem-Update (JVM-407, Netzwerkteilnehmer) Duplizieren eines Steuerungssystems Folgende Voraussetzungen werden in diesem Kapitel getroffen: der Programmierer verfügt über Kenntnisse des Dateisystems des 310 JVM-407 der Programmierer verfügt über Grundkenntnisse der Anwendung von FTP Jetter AG JVM-407 Bezeichnung Automatisches Kopieren von Steuerungsdaten Vollständiger Name bezeichnet in dieser Beschreibung den Namen der Datei oder des Verzeichnisses mit komplettem Pfad. Inhalt Thema Seite Funktionsweise ........................................................................................... 312 Die Datei "autocopy.ini" .............................................................................. 316 Protokolldatei .............................................................................................. 328 Datendateien .............................................................................................. 330 Jetter AG 311 12 Automatisches Kopieren von Steuerungsdaten 12.1 Funktionsweise Einleitung Dieses Kapitel beschreibt wie die AutoCopy-Funktion gestartet wird und wie sie vom JVM-407 ausgeführt wird. Inhalt Thema Seite AutoCopy-Funktion starten ......................................................................... 313 AutoCopy-Funktion ausführen .................................................................... 314 Betriebsart AutoCopy beenden ................................................................... 315 312 Jetter AG JVM-407 Automatisches Kopieren von Steuerungsdaten AutoCopy-Funktion starten Einleitung Die AutoCopy-Funktion kann nur während der Bootphase des JVM-407 ausgeführt werden. Voraussetzungen Die Kommandodatei wurde erstellt und auf der SD-Karte oder dem USB-Stick abgelegt. Wert AutoCopy-Funktion starten Bemerkung Dateiname autocopy.ini alles Kleinbuchstaben Verzeichnis SD /SD/ Stammverzeichnis der SD-Karte Verzeichnis USB /USB/ Stammverzeichnis USB-Stick Führen Sie folgende Schritte aus, um die AutoCopy-Funktion zu starten: Schritt Vorgehen 1 Schalten Sie das Gerät aus 2 Stecken Sie die SD-Karte vollständig in den Steckplatz der SD-Karte oder den USB-Stick in die USB-Schnittstelle. 3 Halten Sie die Tasten F1 und F3 gedrückt. 4 Schalten Sie das Gerät ein. 5 Warten Sie bis folgende Meldung erscheint: Start operating system in STOP mode. Ergebnis: Das Gerät bootet in der Betriebsart AutoCopy. Jetter AG 313 12 Automatisches Kopieren von Steuerungsdaten AutoCopy-Funktion ausführen Einleitung Während der Bootphase in der Betriebsart AutoCopy führt das Gerät die Kommandos in der Kommandodatei aus. Einschränkungen In der Betriebsart AutoCopy gelten folgende Einschränkungen der Funktion des Geräts JVM-407: Das Anwenderprogramm wird nicht ausgeführt Mit dem JVM-407 kann nicht kommuniziert werden AutoCopy-Funktion ausführen Das Betriebssystem des JVM-407 bearbeitet die AutoCopy-Funktion in folgenden Stufen: Stufe 314 Beschreibung 1 Das Gerät lädt die Datei "/SD/autocopy.ini" von der SD-Karte oder vom USB-Stick 2 Das Gerät liest die Werte aus der Sektion [OPTIONS] 3 Das Gerät liest das Kommando und die Kommandoparameter aus der Sektion [COMMAND_1], bearbeitet es und schreibt das Ergebnis gegebenenfalls in die Protokolldatei 4 .. n Das Gerät bearbeitet die weiteren Kommandos in aufsteigender Reihenfolge, bis zur Anzahl aus der Sektion [OPTIONS] n+1 Das Gerät ermittelt die Ergebnisstatistik aller Kommandos und schreibt sie in die Protokolldatei Jetter AG JVM-407 Automatisches Kopieren von Steuerungsdaten Betriebsart AutoCopy beenden Einleitung Die Betriebsart AutoCopy kann nur durch Booten des JVM-407 verlassen werden. Betriebsart AutoCopy beenden Führen Sie, nachdem die AutoCopy-Funktion beendet ist, folgende Schritte aus, um die Betriebsart AutoCopy zu verlassen: Schritt Vorgehen 1 Entfernen Sie die SD-Karte oder den USB-Stick. 2 Betätigen Sie eine Taste auf dem Gerät. Ergebnis: Das Gerät bootet neu. Jetter AG 315 12 Automatisches Kopieren von Steuerungsdaten 12.2 Die Datei "autocopy.ini" Einleitung Dieses Kapitel beschreibt den Aufbau der Datei "autocopy.ini" und die verfügbaren Kommandos. Aufbau der Datei Die Kommandodatei der AutoCopy-Funktion ist eine Textdatei, deren Einträge in Sektionen gruppiert sind. In diesen Sektionen werden Werte gesetzt, mit denen die AutoCopy-Funktion arbeitet Leerzeilen können beliebig eingefügt werden Kommentarzeilen werden mit "!", "#" oder ";" eingeleitet Sektionen Die Kommandodatei enthält zwei Sektionstypen: In der Sektion [OPTIONS] werden grundsätzliche Einstellungen gemacht; sie ist nur ein Mal vorhanden In den Sektionen [COMMAND_#] werden die auszuführenden Kommandos angegeben; die Anzahl der Kommandosektionen ist auf 128 beschränkt Inhalt Thema Seite Die Sektion [OPTIONS] .............................................................................. 317 Die Kommandosektionen ............................................................................ 318 Beispiel für eine Kommandodatei ............................................................... 326 316 Jetter AG JVM-407 Automatisches Kopieren von Steuerungsdaten Die Sektion [OPTIONS] Einleitung In dieser Sektion werden grundsätzliche Einstellungen der AutoCopy-Funktion gemacht. Sie ist nur einmal, vorzugsweise am Beginn der Datei, vorhanden. Beispiel [OPTIONS] CommandCount = 14 LogFile = /SD/autocopy.log LogAppend = 1 Elemente der Sektion Die Sektion besteht aus den folgenden Teilen: CommandCount im Beispiel 14 Funktion Anzahl der nachfolgenden Kommandosektionen gültige Werte >=0 nicht gültige Werte <0 bei ungültigem Wert oder nicht vorhandenem Eintrag 0 LogFile im Beispiel /SD/autocopy.log Funktion vollständiger Name der Protokolldatei gültige Werte nicht gültige Werte bei ungültigem Wert oder nicht vorhandenem Eintrag alle gültigen Dateinamen Verzeichnis ist vorhanden ungültiger Dateinamen nicht vorhandenes Verzeichnis Es wird keine Protokolldatei erzeugt. LogAppend im Beispiel 1 Funktion legt fest, ob eine neue Protokolldatei erstellt oder an eine vorhandene angefügt wird; gültige Werte 0 = gegebenenfalls bestehende Datei löschen und neue Datei erstellen 1 = an bestehende Datei anfügen; wenn keine Datei vorhanden ist, wird ebenfalls eine neue Protokolldatei erstellt <0 nicht gültige Werte bei ungültigem Wert oder nicht vorhandenem Eintrag Jetter AG >1 Es wird die Protokolldatei neu erstellt. 317 12 Automatisches Kopieren von Steuerungsdaten Die Kommandosektionen Einleitung In diesen Sektionen werden die Befehle angegeben, die von der AutoCopy-Funktion des Geräts JVM-407 ausgeführt werden. Beispiel [COMMAND_1] Command = DirCreate Path = /Homepage ErrorAsWarning = 1 [COMMAND_2] Command Source Destination = FileCopy = /SD/Index.htm = /Homepage/index.htm [COMMAND_3] Command ServerAddr UserName Password = = = = FtpConnect 192.168.123.45 admin admin Name der Sektionen Die Namen der Sektionen werden gebildet durch die Zeichenkette COMMAND_ gefolgt von einer Zahl, die zwischen 1 und dem Wert des Eintrags CommandCount aus der Sektion [OPTIONS] liegt. Bearbeitung der Kommandos Die AutoCopy-Funktion bearbeitet die Kommandos in der Reihenfolge der Sektionsnamen. Beginnend mit dem Kommando unter Sektion [COMMAND_1] Endend mit dem Kommando unter der Sektion mit dem Wert des Eintrags CommandCount aus der Sektion [OPTIONS] Jede Kommandosektion kann nur ein Kommando enthalten, so dass für jedes Kommando eine eigene Sektion anzulegen ist Fehlerbehandlung Tritt bei der Bearbeitung eines Kommandos ein Fehler auf, erfolgt ein entsprechender Eintrag in der Protokolldatei. Für jedes Kommando kann eingestellt werden, ob der Fehler als Error oder als Warning in der Protokolldatei eingetragen werden soll. Die Einstellung erfolgt über den optionalen Parameter ErrorAsWarning: ErrorAsWarning 318 Eintrag in Protokolldatei Parameter nicht vorhanden Error ErrorAsWarning = 0 Error ErrorAsWarning = 1 Warning Jetter AG JVM-407 Dateinamen Automatisches Kopieren von Steuerungsdaten Der Funktionsparameter für die lokale Datei kann auch den Pfad zu dieser Datei enthalten (z. B. "/Data/TestFiles/LocalTestFile.txt"). Der Funktionsparameter für die Datei auf dem FTP-Server kann auch den Pfad zu dieser Datei enthalten, wenn dies vom Dateisystem unterstützt wird. Ansonsten muss zunächst mit dem Befehl FtpDirChange(...) das entsprechende Verzeichnis eingestellt werden. Das Dateisystem eines JVM-407 unterstützt beide Varianten. Verfügbare Kommandos im lokalen Dateisystem Die folgenden Kommandos für Zugriffe auf das lokale Dateisystem sind verfügbar: Command = DirCreate Funktion Anlegen eines Unterverzeichnisses Parametername Path Parameterwert vollständiger Name des Verzeichnisses gültige Werte nicht gültige Werte alle gültigen Verzeichnisnamen übergeordnete Verzeichnisse sind vorhanden ungültiger Verzeichnisnamen nicht vorhandenes übergeordnetes Verzeichnis Name eines bereits vorhandenen Verzeichnisses bei ungültigem Wert Das Verzeichnis wird nicht angelegt und der Fehler in die Protokolldatei eingetragen Beispiel [COMMAND_1] Command = DirCreate Path = /sub1 [COMMAND_2] Command = DirCreate Path = /sub1/sub2 Command = DirRemove Funktion Löschen eines Unterverzeichnisses Parametername Path Parameterwert vollständiger Name des Verzeichnisses gültige Werte nicht gültige Werte alle gültigen Verzeichnisnamen das Verzeichnis ist leer ungültiger Verzeichnisnamen Verzeichnis ist nicht leer bei ungültigem Wert Das Verzeichnis wird nicht gelöscht und der Fehler in die Protokolldatei eingetragen Beispiel [COMMAND_8] Command = DirRemove Path = /sub1/sub2 Command = FileCopy Jetter AG Funktion Kopieren einer Datei Parametername 1 Source Parameterwert 1 vollständiger Name der Quelldatei 319 12 Automatisches Kopieren von Steuerungsdaten Parametername 2 Destination Parameterwert 2 vollständiger Name der Zieldatei gültige Werte nicht gültige Werte alle gültigen Dateinamen das Zielverzeichnis ist vorhanden ungültiger Dateinamen nicht vorhandene Quelldatei nicht vorhandenes Zielverzeichnis bei ungültigem Wert Die Datei wird nicht kopiert und der Fehler in die Protokolldatei eingetragen Beispiel [COMMAND_1] Command = FileCopy Source = /SD/OS/JC-340_1.04.0.03.os Destination = /System/OS/op_system.os [COMMAND_2] Command = FileCopy Source = /SD/Manual.pdf Destination = /sub1/Manual.pdf Command = FileRemove Funktion Löschen einer Datei Parametername Path Parameterwert vollständiger Name der Datei gültige Werte alle gültigen Dateinamen nicht gültige Werte ungültiger Dateinamen bei ungültigem Wert Die Datei wird nicht gelöscht und der Fehler in die Protokolldatei eingetragen Beispiel [COMMAND_5] Command = FileRemove Path = /sub1/Manual.pdf Command = DaFileRead Funktion Übertragen von Registerwerten und Merkerzuständen von einer Datendatei zum JVM-407 Parametername DaFile Parameterwert vollständiger Name der Datendatei gültige Werte alle gültigen Dateinamen für Datendateien nicht gültige Werte ungültiger Dateinamen nicht vorhandene Datendatei bei ungültigem Wert Die Daten werden nicht an das Gerät JVM-407 übertragen und der Fehler in die Protokolldatei eingetragen Beispiel [COMMAND_12] Command = DaFileRead DaFile = /SD/Data/MyTestData.da Command = DaFileWrite Funktion 320 Abspeichern von Registerwerten und Merkerzuständen in einer Datendatei Jetter AG JVM-407 Automatisches Kopieren von Steuerungsdaten Parametername 1 DaFile Parameterwert 1 vollständiger Name der Datei gültige Werte nicht gültige Werte das Zielverzeichnis ist vorhanden ungültiger Dateinamen nicht vorhandenes Zielverzeichnis bei ungültigem Wert Die Datei wird nicht angelegt und der Fehler in die Protokolldatei eingetragen Parametername 2 Append Parameterwert 2 legt fest, ob eine neue Datendatei erstellt oder an eine vorhandene angefügt wird gültige Werte 0 = gegebenenfalls bestehende Datei löschen und neue Datei erstellen 1 = an bestehende Datei anfügen; wenn keine Datei vorhanden ist, wird ebenfalls eine neue Datendatei erstellt <0 nicht gültige Werte Jetter AG alle gültigen Dateinamen für Datendateien >1 bei ungültigem Wert Die Datendatei wird neu erstellt Parametername 3 Type Parameterwert 3 legt fest, ob Register oder Merker abgespeichert werden sollen gültige Werte nicht gültige Werte Werte ungleich "Register" oder "Flag" bei ungültigem Wert Die Datei wird nicht angelegt und der Fehler in die Protokolldatei eingetragen Parametername 4 First Parameterwert 4 Nummer des ersten Registers / Merkers gültige Werte alle gültigen Nummern aus dem Speicherbereich des jeweiligen JVM-407 nicht gültige Werte ungültige Nummern bei ungültigem Wert Die Datei wird nicht angelegt und der Fehler in die Protokolldatei eingetragen Parametername 5 Last Parameterwert 5 Nummer des letzten Registers / Merkers gültige Werte alle gültigen Nummern aus dem Speicherbereich des jeweiligen JVM-407, die größer oder gleich sind als der Wert bei 'First' nicht gültige Werte bei ungültigem Wert Es wird nur ein Wert (First) abgespeichert Register Flag ungültige Nummern Nummern kleiner als 'First' 321 12 Automatisches Kopieren von Steuerungsdaten Beispiel Verfügbare Kommandos für FTP-Zugriffe [COMMAND_11] Command = DaFile = Append = Type = First = Last = DaFileWrite /SD/MyTestData2.da 0 Register 1000000 1000000 [COMMAND_12] Command = DaFile = Append = Type = First = Last = DaFileWrite /SD/MyTestData2.da 1 Flag 10 20 [COMMAND_13] Command = DaFile = Append = Type = First = Last = DaFileWrite /SD/MyTestData2.da 1 Register 1000001 1000999 Die folgenden Kommandos für Zugriffe über das Netzwerk mittels FTP sind verfügbar: Command = FtpConnect Funktion Verbindung zu einem FTP-Server herstellen Parametername 1 ServerAddr Parameterwert 1 IP-Adresse oder Name des FTP-Servers gültige Werte nicht gültige Werte Name, der über DNS auflösbar ist nicht erreichbare IP-Adresse nicht auflösbarer Name Parametername 2 UserName Parameterwert 2 User-Name für die Anmeldung am FTP-Server Parametername 3 Password Parameterwert 3 Passwort für die Anmeldung am FTP-Server bei ungültigen Werten Verbindung wird nicht hergestellt und der Fehler in die Protokolldatei eingetragen Beispiel [COMMAND_1] Command = FtpConnect ServerAddr = 192.168.123.45 UserName = admin Password = admin Bemerkung 322 erreichbare IP-Adresse Es kann immer nur eine Verbindung zu einem FTP-Server bestehen. Soll eine Verbindung zu einem anderen FTP-Server hergestellt werden, so schließt das Gerät zuvor die bestehende Verbindung. Jetter AG JVM-407 Automatisches Kopieren von Steuerungsdaten Command = FtpFileRead Funktion Datei vom FTP-Server in das lokale Dateisystem kopieren Parametername 1 ServerFile Parameterwert 1 vollständiger Name der Quelldatei im FTP-Server Parametername 2 ClientFile Parameterwert 2 vollständiger Name der Zieldatei im lokalen Dateisystem gültige Werte nicht gültige Werte alle gültigen Dateinamen das Zielverzeichnis ist vorhanden ungültiger Dateinamen nicht vorhandene Quelldatei nicht vorhandenes Zielverzeichnis bei ungültigem Wert Die Datei wird nicht kopiert und der Fehler in die Protokolldatei eingetragen Beispiel [COMMAND_8] Command ServerFile ClientFile = FtpFileRead = /app/cantest/cantest.es3 = /SD/cantest3.es Command = FtpFileWrite Funktion Datei vom lokalen Dateisystem in das des FTP-Servers kopieren Parametername 1 ServerFile Parameterwert 1 vollständiger Name der Zieldatei im FTP-Server Parametername 2 ClientFile Parameterwert 2 vollständiger Name der Quelldatei im lokalen Dateisystem gültige Werte nicht gültige Werte alle gültigen Dateinamen das Zielverzeichnis ist vorhanden ungültiger Dateinamen nicht vorhandene Quelldatei nicht vorhandenes Zielverzeichnis bei ungültigem Wert Die Datei wird nicht kopiert und der Fehler in die Protokolldatei eingetragen Beispiel [COMMAND_5] Command = FtpFileWrite ServerFile = /System/OS/op_system.os ClientFile = /SD/OS/JC-340_1.09.0.00.os Command = FtpFileRemove Jetter AG Funktion Löschen einer Datei im FTP-Server Parametername ServerFile Parameterwert vollständiger Name der Datei gültige Werte alle gültigen Dateinamen nicht gültige Werte ungültiger Dateinamen bei ungültigem Wert Die Datei wird nicht gelöscht und der Fehler in die Protokolldatei eingetragen 323 12 Automatisches Kopieren von Steuerungsdaten Beispiel [COMMAND_9] Command = FtpFileRemove ServerFile = /sub1/Manual.pdf Command = FtpDirChange Funktion Arbeitsverzeichnis im FTP-Server wechseln Parametername ServerDir Parameterwert vollständiger Name des Verzeichnisses gültige Werte alle gültigen Verzeichnisnamen nicht gültige Werte ungültiger Verzeichnisnamen bei ungültigem Wert Wird das Verzeichnis nicht gewechselt und der Fehler in die Protokolldatei eingetragen Beispiel [COMMAND_12] Command = FtpDirChange ServerDir = /Data/MyTestData Commando = FtpDirCreate Funktion Anlegen eines Unterverzeichnisses im FTP-Server Parametername ServerDir Parameterwert vollständiger Name des Verzeichnisses gültige Werte nicht gültige Werte alle gültigen Verzeichnisnamen übergeordnete Verzeichnisse sind vorhanden ungültiger Verzeichnisnamen nicht vorhandenes übergeordnetes Verzeichnis Name eines bereits vorhandenen Verzeichnisses bei ungültigem Wert Wird das Verzeichnis nicht angelegt und der Fehler in die Protokolldatei eingetragen Beispiel [COMMAND_6] Command = FtpDirCreate ServerDir = /Data/MyTestData Einschränkung Wird als Funktionsparameter ein Verzeichnis mit Pfad angegeben, müssen alle Verzeichnisse bis zu dem zu Erstellenden vorhanden sein. Ein rekursives Anlegen von mehreren Verzeichnissen wird nicht unterstützt. Commando = FtpDirRemove Funktion Löschen eines Unterverzeichnisses im FTP-Server Parametername ServerDir Parameterwert vollständiger Name des Verzeichnisses gültige Werte nicht gültige Werte 324 alle gültigen Verzeichnisnamen das Verzeichnis ist leer ungültiger Verzeichnisnamen Verzeichnis ist nicht leer bei ungültigem Wert Wird das Verzeichnis nicht gelöscht und der Fehler in die Protokolldatei eingetragen Beispiel [COMMAND_8] Command = FtpDirRemove ServerDir = /Data/MyTestData Jetter AG JVM-407 Jetter AG Automatisches Kopieren von Steuerungsdaten 325 12 Automatisches Kopieren von Steuerungsdaten Beispiel für eine Kommandodatei Aufgabe Bei einem eingebauten JVM-407 soll eine Funktionserweiterung durchgeführt werden. Hierfür müssen folgende Änderungen gemacht werden: Betriebssystem-Update neues Anwenderprogramm neue Werte für einige Register Lösung Die benötigten Dateien werden auf eine SD-Karte kopiert und eine Kommandodatei für die AutoCopy-Funktion erstellt. Diese SD-Karte wird mit einer kurzen Bedienungsanleitung zum Kunden geschickt, der sie nach dem Update wieder zurückschickt. Inhalt der SD-Karte Die SD-Karte enthält folgende Dateien: Die Datei autocopy.ini Das neue Betriebssystem Eine .da-Datei für die neuen Werte der Register Eine start.ini und eine .es3-Datei für das neue Anwenderprogramm Nach der Ausführung ist zusätzlich die Protokolldatei 'autocopy.log' vorhanden. Kommandodatei [OPTIONS] CommandCount = 6 LogFile = /SD/autocopy.log LogAppend = 0 # update operating system of JVM-407 [COMMAND_1] Command = FileCopy Source = /SD/OS/JVM4xx_1.15.1.00.os Destination = /System/OS/op_system.os # create user program directories # probably already present - but to be sure ... [COMMAND_2] Command = DirCreate Path = /app ErrorAsWarning = 1 [COMMAND_3] Command = DirCreate Path = /app/userprogtest # copy user program start file [COMMAND_4] Command = FileCopy 326 Jetter AG JVM-407 Automatisches Kopieren von Steuerungsdaten Source = /SD/UserProgs/start.ini Destination = /app/start.ini # copy user [COMMAND_5] Command Source Destination program = FileCopy = /SD/UserProgs/userprogtest.es3 = /app/userprogtest/userprogtest.es3 # set registers and flags [COMMAND_6] Command = DaFileRead DaFile = /SD/UserData/MyTestData.da Jetter AG 327 12 Automatisches Kopieren von Steuerungsdaten 12.3 Protokolldatei Einleitung Dieses Kapitel beschreibt Aufbau und Inhalt der Protokolldatei, in welcher das Ergebnis der jeweiligen Kommandos mitgeschrieben wird. Inhalt Thema Seite Dateiinhalt ................................................................................................... 329 328 Jetter AG JVM-407 Automatisches Kopieren von Steuerungsdaten Dateiinhalt Einleitung Die Protokolldatei ist eine Textdatei. In der Kommandodatei wird festgelegt, ob eine Protokolldatei angelegt werden soll. Und ob diese jeweils neu angelegt wird oder die Einträge an eine bestehende Protokolldatei angehängt werden. Beispiel JetControl AutoCopy log file 07.11.2008 09:14:09 1: Ok - FileCopy 2: Warning 3: Ok 4: Ok 5: Ok - 6: Error - /SD/OS/JC-340_1.04.0.00.os /System/OS/op_system.os (345740 byte) DirCreate /app DirCreate /app/userprogtest FileCopy /SD/UserProgs/start.ini /app/start.ini (63 byte) FileCopy /SD/UserProgs/userprogtest.es3 /app/userprogtest/userprogtest.es3 (169 byte) DaFileRead /SD/UserData/MyTestData.da Command statistics: Total : 7 Ok : 5 Warning: 1 Error : 1 Beschreibung Die Protokolldatei besteht - beim Anfügen an eine bestehende Protokolldatei für jede Ausführung der AutoCopy-Funktion - aus drei Elementen: Die Kopfzeile enthält Datum und Uhrzeit. Der anschließende Block gibt Auskunft über die ausgeführten Kommandos. Abschließend wird eine kurze Statistik über die Kommandobearbeitung angezeigt. Im obigen Beispiel wird beim Versuch, das Verzeichnis "/app" anzulegen, ein Fehler erzeugt (der als Warnung eingetragen wird), da das Verzeichnis bereits vorhanden ist. Beim Lesen der DA-Datei tritt ebenfalls ein Fehler auf, der als solcher in die Protokolldatei geschrieben wird. Jetter AG 329 12 Automatisches Kopieren von Steuerungsdaten 12.4 Datendateien Einleitung Dieses Kapitel beschreibt die Datendateien, in denen die Werte von Registern und Merkern abgelegt werden. Inhalt Thema Seite Dateiformat ................................................................................................. 331 330 Jetter AG JVM-407 Automatisches Kopieren von Steuerungsdaten Dateiformat Format Die Datei ist folgendermaßen aufgebaut: reine Textdatei jeder Eintrag muss in einer eigenen Zeile stehen jede Zeile muss mit Wagenrücklauf / Zeilenvorschub (carriage return / line feed) abgeschlossen sein Kommentarzeilen werden mit einem Semikolon (;) eingeleitet als erster Eintrag in der Datei muss als Kennung "SD1001" stehen Datenzeilen Eine Datenzeile besteht aus den folgenden Teilen: Variablenkennung am Beginn der Zeile durch Leerzeichen oder Tabulator getrennt folgt die Variablennummer durch Leerzeichen oder Tabulator getrennt folgt der Variablenwert Variablenkennung Beispiel Jetter AG Variablentyp FS Merker RS Ganzzahlregister QS Fließkommazahlregister SD1001 ; Data File - Jetter AG ; ; Register 1000000 ... 1000005 RS 1000000 12345 RS 1000001 2 RS 1000002 -1062729008 RS 1000003 502 RS 1000004 50 RS 1000005 3 QS 1009000 3.14 ; ; Flag 10 ... 13 FS 10 0 FS 11 1 FS 12 1 FS 13 0 331 JVM-407 Betriebssystem-Update 13 Betriebssystem-Update Einleitung Die Betriebssysteme der Bediengeräte der Jetter AG werden laufend weiterentwickelt. Dabei werden neue Funktionen hinzugefügt, bestehende Funktionen erweitert und Fehler beseitigt. Dieses Kapitel beschreibt wie ein Betriebssystem-Update durchgeführt wird. Download eines Betriebssystems Die Jetter AG stellt die Betriebssysteme auf ihrer Homepage http://www.jetter.de zur Verfügung. Sie erreichen die Betriebssystem-Dateien über den Link "Betriebssystem-Download" der "Quicklinks" auf den Seiten der jeweiligen Bediengeräte. Inhalt Thema Seite Update des Betriebssystems des Bediengeräts ......................................... 334 Jetter AG 333 13 Betriebssystem-Update 13.1 Update des Betriebssystems des Bediengeräts Einleitung Dieses Kapitel beschreibt wie der Update des Betriebssystems eines JVM-407 durchgeführt wird. Es gibt hierbei mehrere Möglichkeiten, die Betriebssystem-Datei an das Gerät zu übertragen: mit dem Programmier-Tool JetSym über eine FTP-Verbindung von der SD-Karte vom einem USB-Stick aus dem Anwenderprogramm Inhalt Thema Seite Betriebssystem-Update mit JetSym ............................................................ 335 Betriebssystem-Update über FTP .............................................................. 336 Automatisches Betriebssystem-Update von SD-Karte und USB-Stick ....... 337 Betriebssystem-Update aus dem Anwenderprogramm .............................. 338 334 Jetter AG JVM-407 Betriebssystem-Update Betriebssystem-Update mit JetSym Einleitung Mit Hilfe des Programmier-Tools JetSym ist es auf komfortable Weise möglich, eine Betriebssystem-Datei an das Gerät JVM-407 zu übertragen. Voraussetzungen Eine Betriebssystem-Datei für das Gerät JVM-407 ist vorhanden. Eine UDP/IP- und eine TCP/IP-Verbindung vom Programmier-Tool zum IP-Port des JVM-407, dessen Nummer im Konfigurations-Speicher als IP-Basisportnummer für die JetIP-Kommunikation eingestellt ist, ist möglich. Das Gerät wartet im Bootloader auf den Betriebssystem-Update oder das Betriebssystem läuft. Stellen Sie sicher, dass während des Betriebssystem-Updates das Gerät nicht ausgeschaltet wird. Betriebssystem updaten So führen Sie einen Betriebssystem-Update durch: Schritt Jetter AG Vorgehen 1 Wählen Sie in JetSym im Menü "Build" den Punkt "Betriebssystem-Update..." aus, oder klicken Sie im Konfigurations-Fenster des Hardware-Managers auf "OS-Update". Ergebnis: Es öffnet sich ein Dateiauswahl-Fenster. 2 Wählen Sie die gewünschte Betriebssystem-Datei aus. Ergebnis: JetSym öffnet ein Bestätigungs-Fenster. 3 Starten Sie die Übertragung der Betriebssystem-Datei durch klicken auf den "Ja"-Button. 4 Warten Sie bis der Update beendet ist. 5 Booten Sie das Gerät neu, um das eingespielte Betriebssystem zu starten. 335 13 Betriebssystem-Update Betriebssystem-Update über FTP Einleitung Mit Hilfe eines FTP-Clients ist es möglich, eine Betriebssystem-Datei an das Gerät JVM-407 zu übertragen. Voraussetzungen Eine Betriebssystem-Datei für das Gerät JVM-407 ist vorhanden. Eine FTP-Verbindung zum Gerät ist möglich. Die Login-Parameter für einen User mit Administrator- oder Betriebssystem updaten System-Rechten sind vorhanden. Das Betriebssystem des JVM-407 läuft. Stellen Sie sicher, dass während des Betriebssystem-Updates das Gerät nicht ausgeschaltet wird. So führen Sie ein Betriebssystem-Update durch: Schritt 336 Vorgehen 1 Öffnen Sie eine FTP-Verbindung zum JVM-407. 2 Loggen Sie sich mit Administrator- oder System-Rechten ein. 3 Wechseln Sie in das Verzeichnis "/System/OS". 4 Übertragen Sie die Betriebssystem-Datei. 5 Warten Sie bis die Übertragung vollständig abgeschlossen ist. 6 Schließen Sie die FTP-Verbindung. 7 Booten Sie das Gerät JVM-407 neu, um das eingespielte Betriebssystem zu starten. Jetter AG JVM-407 Betriebssystem-Update Automatisches Betriebssystem-Update von SD-Karte und USB-Stick Verweis Jetter AG Ein automatischer Update des Betriebssystems des Bediengeräts von der SD-Karte oder einem USB-Stick lässt sich über die AutoCopy-Funktion ausführen. Eine ausführliche Beschreibung finden Sie in AutoCopy auf Seite 310. 337 13 Betriebssystem-Update Betriebssystem-Update aus dem Anwenderprogramm Einleitung Die Dateifunktionen im STX-Sprachumfang machen es möglich einen Betriebssystem-Update des JVM-407 aus einer Betriebssystem-Datei programmgesteuert durchzuführen. Voraussetzungen Eine Betriebssystem-Datei befindet sich im Dateisystem des JVM-407 Das Betriebssystem des JVM-407 und das Anwenderprogramm laufen. Stellen Sie sicher, dass während des Betriebssystem-Updates das Gerät nicht ausgeschaltet wird. Betriebssystem updaten Führen Sie folgende Schritte aus, um ein Betriebssystem-Update aus dem Anwenderprogramm durchzuführen: Schritt Beispielprogramm Vorgehen 1 Öffnen Sie die Betriebssystem-Datei im Lesemodus. 2 Öffnen Sie eine Datei mit beliebigem Namen und der Dateierweiterung '.os' im Verzeichnis "/System/OS" im Schreibmodus. 3 Lesen Sie die Daten aus der Betriebssystem-Datei. 4 Schreiben Sie die gelesenen Daten in die Zieldatei. 5 Schließen Sie beide Dateien. 6 Booten Sie das Gerät neu, um das eingespielte Betriebssystem zu starten (z. B. durch Beschreiben des Systemkommandoregisters). Var SourceName: DestinationName: UpdateIt: End_Var; String[100]; String[100]; Bool; //***************************************************** // Name: FileCopy // param[in] SrcName name of source file // param[in] DstName name of destination file // return >= 0 size of source file // return < 0 error // brief copies a file //***************************************************** Function FileCopy(Ref SrcName: String, Ref DstName: String):Int; Var SrcFile, DstFile: File; FileBuffer: Array[1000] Of Byte; Result: Int; ReadSize: Int; WriteSize: Int; FileSize: Int; End_Var; 338 Jetter AG JVM-407 Betriebssystem-Update Result := 0; FileSize := 0; // open source file for reading If FileOpen(SrcFile, SrcName, 'r') Then // open destination file for writing If FileOpen(DstFile, DstName, 'w') Then // read first block of data ReadSize := FileRead(SrcFile, FileBuffer, SizeOf(FileBuffer)); While ReadSize <> 0 Do // write read data to destination file WriteSize := FileWrite(DstFile, FileBuffer, ReadSize); If WriteSize <> ReadSize Then // write error Result := -3; Exit; End_If; Inc(FileSize, WriteSize); // read next block of data ReadSize := FileRead(SrcFile, FileBuffer, SizeOf(FileBuffer)); End_While; // close both files FileClose(SrcFile); FileClose(DstFile); Else // can't open destination file FileClose(SrcFile); Result := -2; End_If; Else // can't open source file Result := -1; End_If; If Result < 0 Then FileCopy := Result; Else FileCopy := FileSize; End_If; End_Function; //**************************************************** // 1. Enable Tracing in JetSym // 2. Put source file name into 'SourceName' // 3. Set flag 'UpdateIt' //**************************************************** Jetter AG 339 13 Betriebssystem-Update Task OSupdate Autorun Var ResCopy: Int; End_Var; DestinationName := '/System/OS/OperatingSystem.os'; Loop UpdateIt := False; When UpdateIt Continue; ResCopy := FileCopy(SourceName, DestinationName); Trace('Result : ' + IntToStr(ResCopy) + '$n'); End_Loop; End_Task; 340 Jetter AG JVM-407 Anwenderprogramm 14 Anwenderprogramm Einleitung Dieses Kapitel erläutert, wie das Anwenderprogramm im JVM-407 abgelegt wird und wie der Anwender festlegen kann, welches Programm ausgeführt werden soll. Voraussetzungen an den Programmierer Dieses Kapitel setzt Kenntnisse über das Erzeugen und Übertragen von Anwenderprogrammen in JetSym und über das Dateisystem des JVM-407 voraus. Inhalt Thema Seite Anwenderprogramm laden ......................................................................... 342 Standardablage des Anwenderprogramms ................................................ 343 Anwenderprogramm auf der SD-Karte ablegen ......................................... 344 Jetter AG 341 14 Anwenderprogramm Anwenderprogramm laden Einleitung Beim Neustart des Anwenderprogramms über JetSym oder nach dem Booten des JVM-407 wird das Anwenderprogramm über das Dateisystem geladen und ausgeführt. Der Ladevorgang So wird das Anwenderprogramm vom Betriebssystem des JVM-407 geladen. Stufe 342 Beschreibung 1 Das Betriebssystem liest die Datei "/app/start.ini" von der internen Flash-Disk. 2 Das Betriebssystem liest den Pfad zum Anwenderprogramm aus dem Eintrag "Project". 3 Das Betriebssystem liest den Programmnamen aus dem Eintrag "Program" relativ zum Verzeichnis "/app". 4 Das Betriebssystem lädt das Anwenderprogramm aus der Datei <Project>/<Program>. Jetter AG JVM-407 Anwenderprogramm Standardablage des Anwenderprogramms Einleitung Beim Download des Anwenderprogramms von JetSym auf das Gerät JVM-407 wird dieses als Datei auf der internen Flash-Disk abgelegt und Pfadund Dateiname in der Datei "/app/start.ini" eingetragen. Pfad- und Dateiname Standardmäßig legt JetSym im Verzeichnis "/app" ein Unterverzeichnis mit dem Projektnamen an und speichert dort das Anwenderprogramm mit der Dateierweiterung ".es3" ab. Pfad- und Dateinamen werden dabei immer in Kleinbuchstaben konvertiert. Die Datei "/app/start.ini" Die Datei ist eine reine Textdatei mit einer Sektion mit zwei Einträgen: Element Beschreibung [Startup] Sektionsname Project Pfad zur Anwenderprogrammdatei relativ zu "/app" Program Name der Anwenderprogrammdatei Beispiel: [Startup] Project = test_program Program = test_program.es3 Ergebnis: Das Anwenderprogramm wird aus der Datei "/app/test_program/test_program.es3" geladen. Verwandte Topics Ablage des Anwenderprogramms auf der SD-Karte auf Seite 344 Jetter AG 343 14 Anwenderprogramm Anwenderprogramm auf der SD-Karte ablegen Einleitung Beim Download des Anwenderprogramms von JetSym auf das Gerät JVM-407 wird die Standardablage des Anwenderprogramms verwendet. Soll das Anwenderprogramm von der SD-Karte oder einem USB-Stick gelesen werden, so muss dies durch den Anwender konfiguriert werden. Gehen Sie analog hierzu vor, wenn Sie das Anwenderprogramm in einem anderen Verzeichnis der internen Flash-Disk ablegen möchten. Voraussetzungen Da das Dateisystem des JVM-407 Groß-/Kleinschreibung unterscheidet, achten Sie darauf, dass sowohl Pfad- und Dateinamen als auch die Dateieinträge korrekt geschrieben sind. Anwenderprogramms auf der SD-Karte oder dem USB-Stick ablegen So konfigurieren Sie das Gerät JVM-407, wenn das Anwenderprogramm auf der SD-Karte abgelegt werden soll: Schritt Vorgehen 1 Legen Sie das gewünschte Verzeichnis auf der SD-Karte oder dem USB-Stick an. 2 Legen Sie die von JetSym erzeugte Anwenderprogrammdatei in diesem Verzeichnis ab. 3 Tragen Sie den Pfad zur Anwenderprogrammdatei und den Programmnamen in die Datei "/app/start.ini" auf der internen Flash-Disk der Steuerung ein. Ergebnis: Beim Neustart des Anwenderprogramms wird dieses von der SD-Karte oder dem USB-Stick geladen. Die Datei "/app/start.ini" Die Datei ist eine reine Textdatei mit einer Sektion mit zwei Einträgen: Teil Funktion [Startup] Sektionsname Project Pfad zur Anwenderprogrammdatei relativ zu "/app" Program Name der Anwenderprogrammdatei Beispiel für SD-Karte: [Startup] Project = /SD/TestProgram Program = Test1.es3 Beispiel für USB-Stick: [Startup] Project = /USB/TestProgram Program = Test1.es3 344 Jetter AG JVM-407 Anwenderprogramm Ergebnis: Das Anwenderprogramm wird aus der Datei "Test1.es3" im Verzeichnis "TestProgram" auf der SD-Karte ("/SD/TestProgram/Test1.es3") und dem USB-Stick ("/USB/TestProgram/Test1.es3") geladen. Verwandte Themen: Standardablage des Anwenderprogramms auf Seite 343 Jetter AG 345 JVM-407 Kurz-Referenz JVM-407 15 Kurz-Referenz JVM-407 101233 … 101251 101264 101265 Hostname (Registerstring) Portnummer JetIP Portnummer STX Debugger Echtzeituhr Direktzugriff Betriebssystem-Version Diese Kurz-Referenz beschreibt in stark zusammengefasster Form die Register und Merker der Bediengeräte JVM-407, BTM 07, BTM 09, BTM 09V und BTM 012 in der Betriebssystem-Version 1.17.1.00. Allgemeine Registerübersicht 100000 ... 100999 101000 … 101999 102000 … 102999 Electronic Data Sheet (EDS) Konfiguration Echtzeituhr 104000 ... 104999 106000 ... 106999 107000 ... 107999 108000 ... 108999 Ethernet CAN SD-Karte CPU/Backplane 200000 ... 209999 210000 ... 219999 230000 ... 239999 260000 ... 269999 270000 ... 279999 290000 ... 299999 310000 ... 319999 350000 ... 359999 Allg. Systemregister Anwenderprogramm JetIP-Vernetzung Remote Scan Modbus/TCP E-Mail Filesystem / Datendateien freiprogrammierbare IP-Schnittstelle 360000 ... 369999 Display 1000000 ... 1059999 JC-360: Anwenderregister (remanent; Int/Float) Allgemeine E/A-Übersicht Eingabetasten 361000 ... 361007 LED 362000 ... 362006 E/A 362100 362200 Bitcodiertes Abbild der Eingabetasten Bitcodiertes Abbild der LEDs Bitcodiertes Abbild der Status-LEDs Bitcodiertes Abbild des Relais Allgemeine Merkerübersicht 0 ... 255 256 ... 2047 2048 ... 2303 Anwendermerker (remanent) überlagert mit Reg. 1000000 bis 1000055 Spezialmerker 102911 102912 102913 102914 102915 102916 102917 Sekunden Minuten Stunden Wochentag (0 = Sonntag) Tag Monat Jahr Pufferzugriff 102921 102922 102923 102924 102925 102926 102927 Sekunden Minuten Stunden Wochentag (0 = Sonntag) Tag Monat Jahr 102928 Lese/Schreibtrigger Ethernet IP 104531 104532 104533 CAN 106000 106001 106100 106101 106200 106201 107000 107001 107002 107003 108015 109000 101100 101101 101102 101103 101132 101133 ... 101151 101164 101165 IP-Adresse Subnetzmaske Default Gateway DNS-Server Hostname Suffix-Typ Hostname (Registerstring) 107001 101200 101201 101202 101203 101232 IP-Adresse Subnetzmaske Default Gateway DNS-Server Hostname Suffix-Typ Jetter AG Backup-Spannung (z. B. der Uhr) 0 = Daten ungültig 1 = Versorgung ok Das Register kann durch das Beschreiben mit 1 quittiert werden, falls Versorgung wiederhergestellt wurde. USB-Datenträger Aus Datei /System/config.ini Portnummer JetIP Portnummer STX Debugger Vom System verwendet Bit 0 = 1: Karte vorhanden Bit 1 = 1: Karte bereit 1 = Karte schreibgeschützt (nur gültig wenn Reg. 107000 = 3) Größe in MByte Baudrate in MBaud CPU-Hardware MAC-Adresse (Jetter) MAC-Adresse (Gerät) Konfiguration Baudrate CAN 0 Node-ID CAN 0 Baudrate CAN 1 Node-ID CAN 1 Baudrate CAN 2 Node-ID CAN 2 SD-Karte MAC-Adresse 100801 100802 aktuelle IP-Adresse (rw) aktuelle Subnetzmaske (rw) aktuelles Default Gateway (rw) 107002 Bit 0 = 1: Datenträger vorhanden Bit 1 = 1: Datenträger bereit 1 = Datenträger schreibgeschützt (nur gültig wenn Reg. 109000 = 3) Größe in MByte CPU 108002 108004 108015 alle LED ein/aus (bitcodiert) Bit 1: LED E LED E 0 = aus 3 = ein Applikationsstatus 2 = RUN 3 = STOP 347 15 Kurz-Referenz JVM-407 Allgemeine Systemregister 210008 210009 210011 210050 Maximale Programmzykluszeit Aktuelle Programmzykluszeit Aktuelle Task-Nummer Aktuelle Programmstelle innerhalb einer Ausführungseinheit ID der gerade bearbeiteten Ausführungseinheit Gewünschte Gesamtzykluszeit in µs Errechnete Gesamtzykluszeit in µs Maximale Zeitscheibe pro Task in µs Task-ID (für Reg. 210061) Task-Priorität für Task [Reg.210060] Länge der Scheduler-Tabelle Index in Scheduler-Tabelle Task-ID in Scheduler-Tabelle Task-ID (für Reg. 210071) Timer-Nummer (0 ... 31) Manuelles Auslösen eines Timer-Events (bitcodiert) Ende zyklischer Task (Task-ID) Kommando für zyklische Tasks Anzahl Timer Timer-Nummer (für Reg. 210077) Timer-Wert in Millisekunden 200000 200001 200008 OS-Version (Major * 100 + Minor) Anwenderprogramm läuft (Bit 0 = 1) Fehlerregister (identisch zu 210004) 200168 200169 Bootloader-Version (IP-Format) OS-Version (IP-Format) 201000 201001 201002 Laufzeitregister in Millisekunden (rw) Laufzeitregister in Sekunden (rw) Laufzeitregister in Reg. 201003 Einheiten (rw) 201003 * 10 ms Einheiten für Reg. 201002 (rw) 201004 Laufzeitregister in Millisekunden (ro) 202930 202960 202961 Web-Status (bitcodiert) Bit 0 = 1: FTP-Server verfügbar Bit 1 = 1: HTTP-Server verfügbar Bit 2 = 1: E-Mail verfügbar Bit 3 = 1: Datendateifunktion verfügbar Bit 4 = 1: Modbus/TCP lizenziert Bit 5 = 1: Modbus/TCP verfügbar Bit 6 = 1: Ethernet/IP verfügbar Steuerregister Dateisystem 0xc4697a4b: Formatieren der Flash-Disk 0xd364e64d: Formatieren der SD-Karte 0x2c9b3c94: Prüfen der SD-Karte 0x8f3d5185: Formatieren des USB-Datenträgers 0x17dbd42a: Prüfen des USB-Datenträgers Passwort für Systemkommandoregister (0x424f6f74) Systemkommandoregister 202980 202981 202982 Fehlerhistorie: Anzahl Einträge Fehlerhistorie: Index Fehlerhistorie: Eintrag 203000 203001 203005 Schnittstellenüberwachung: JetIP Schnittstellenüberwachung: SER Schnittstellenüberwachung: Debug-Server 230000 230001 230002 JetIP/TCP-Server: Anzahl offener Verbindungen JetIP/TCP-Server:Modus JetIP/TCP-Server:Zeit 203100 ... 203107 203108 ... 203123 203124 ... 203131 203132 ... 203147 32-Bit-Überlagerung Flag 0 ... 255 232708 232709 232710 232711 209700 209701 ... 209739 Systemlogger: globale Freigabe Freigabe Systemkomponenten Timeout in Millisekunden Reaktionszeit in Millisekunden Anzahl Netzwerkfehler Fehlercode des letzten Zugriffs 0 = kein Fehler 1 = Timeout 3 = Fehlermeldung von Gegenstation 5 = ungültige Netzwerkadresse 6 = ungültige Anzahl Register 7 = ungültige Schnittstellennummer Maximale Anzahl Wiederholungen Anzahl Wiederholungen 202936 16-Bit-Überlagerung Flag 0 ... 255 32-Bit-Überlagerung Flag 2048 ... 2303 210006 210007 348 210100 ... 210199 Task-Zustand 210400 ... 210499 Task-Programmadresse 210600 210601 210609 Task-ID eines zyklischen Tasks (für Reg. 210601) Bearbeitungszeit eines zyklischen Task in Promille Tasklock Timeout in ms -1: Überwachung abgeschaltet 210610 Zeitüberschreitung (bitcodiert, Bit 0 -> Timer 0 usw.) JetIP-Vernetzung 16-Bit-Überlagerung Flag 2048 ... 2303 Anwenderprogramm 210000 210001 210004 210051 210056 210057 210058 210060 210061 210063 210064 210065 210070 210071 210072 210073 210074 210075 210076 210077 Anwenderprogramm läuft (Bit 0 = 1) JetVM-Version Fehlerregister (bitcodiert) Bit 1: Fehler JX3-Bus Bit 2: Fehler JX2-Bus Bit 8: ungültiger Sprung Bit 9: ungültiger Call Bit 10: ungültiger Index Bit 11: ungültiger Opcode Bit 12: Division durch Null Bit 13: Stack-Überlauf Bit 14: Stack-Unterlauf Bit 15: Stack ungültig Bit 16: Fehler beim Laden des Anwenderprogramms Bit 24: Zykluszeitüberschreitung Bit 25: Tasklock Timeout Bit 31: unbekannter Fehler Höchste Task-Nummer Minimale Programmzykluszeit 232717 232718 Modbus/TCP 272702 272704 272705 278000 ... 278999 Registeroffset Eingangsoffset Ausgangsoffset 16-Bit-I/O-Register überlagert mit virtuellen I/O 20001 bis 36000 E-Mail 292932 292933 292934 292935 292937 292938 IP-Adresse des SMTP-Servers IP-Adresse des POP3-Servers Portnummer des SMTP-Servers Portnummer des POP3-Servers Status der E-Mail-Bearbeitung E-Mail Task-ID Filesystem / Datendateifunktion 312977 312978 Status der Dateioperation Task-ID Jetter AG JVM-407 Kurz-Referenz JVM-407 364203 Freiprogrammierbare IP-Schnittstelle 350000 350001 350002 350003 350004 350005 350006 350007 Auslesen der IP-PRIM-Verbindungsliste 364204 Letztes Ergebnis (-1 = keine Verbindung angewählt) 1 = Client; 2 = Server 1 = UDP; 2 = TCP IP-Adresse Portnummer Zustand der Verbindung Anzahl gesendet Bytes Anzahl empfangener Bytes 364210 364211 364212 Video Input Brightness (Helligkeit) Video Input Contrast (Kontrast) Video Input Saturation (Sättigung) 364220 Video Output ID (Rectangle ID in IOP) 364230 364231 364232 364233 Video Input Quelle X Video Input Quelle Y Video Input Quelle Breite Video Input Quelle Höhe Anwenderregister 1000000 ... 1005999 32-Bit-Ganzzahl (remanent) CAN-PRIM-Register 200010500 200010501 200010502 200010503 200010504 200010506 Statusregister CAN-PRIM Kommandoregister CAN-PRIM Nummer der Nachrichten-Box FIFO-Füllstand FIFO-Daten Globale Empfangsmaske 200010507 200010510 200010511 200010512 200010513 200010514 ... 200010521 Globale Empfangs-ID Box-Statusregister Box-Konfigurationsregister CAN-ID Anzahl Datenbytes Datenbytes Display Funktionstasten 361000 ... Bitcodiertes Abbild der Funktionstasten 361007 z. B. Bit 0: 1 = Taste 1 gedrückt Zündung (IGN) 361100 Bit 0: 0 = Zündung eingeschaltet 1 = Zündung ausgeschaltet Tasten-LED 362000 ... 362006 Bitcodiertes Abbild des LEDs z. B. Bit 0: 1 = LED-Taste 1 ein E/A (IN1 ... IN15 und OUT) 362100 Bitcodiertes Abbild der Status-LEDs z. B. Bit 0: 1 = IN1 ein 362200 Bitcodiertes Abbild des Ausgangs z. B. Bit 0: 1 = OUT ein Digipot 363000 363001 363002 363003 Aktueller Zählwert Bestätigungs-Taste Digipot Minimaler Zählwert Maximaler Zählwert Display 364000 364001 364003 Hintergrundbeleuchtung Tastennachtbeleuchtung Helligkeitssensor Visualisierung 365000 ... 365029 365050 ... 365079 365100 365200 365201 365202 365203 365210 ... 365240 365260 ... 365289 Systemstatus 367000 367010 Name der IOP-Datei Name der Sprache Sprachumschaltung nach ID Anzahl der verfügbaren Sprachen Aktuelle Auswahl für die Info-Register Info-Register Default ID = 1 Info-Register Größe der IOP-Datei Info-Register Dateiname der IOP-Datei Info-Register Name der Sprache HAL-Name Backup-Batterie / Akku voll (> 2 V) Netzwerk-Spezialmerker 2075 Fehler bei JetIP-Vernetzung Spezialmerker Schnittstellenüberwachung 2088 2089 2090 2091 2098 2099 OS-Flag JetIP User-Flag JetIP OS-Flag SER User-Flag SER OS-Flag Debug-Server User-Flag Debug-Server 32 zusammengefasste Merker 203100 203101 203102 203103 203104 203105 203106 203107 0 ... 31 32 ... 63 64 ... 95 96 ... 127 128 ... 159 160 ... 191 192 ... 223 224 ... 255 16 zusammengefasste Merker Video wird per Default auf Objekt 14000 (Rectangle) angezeigt 364200 Video Input (Eingang) 364201 Video Input External Mux (nur BTM 07) 364202 Video Type (Typ) 1 = composite 2 = svideo Jetter AG Video Format (Format) 1 = PAL 2 = NTSC Video Options (Optionen) Bit 0: 1 = Interlaced Bit 1: 1 = Mirror vertikal 203108 203109 203110 203111 203112 203113 203114 203115 203116 203117 203118 203119 203120 0 ... 15 16 ... 31 32 ... 47 48 ... 63 64 ... 79 80 ... 95 96 ... 111 112 ... 127 128 ... 143 144 ... 159 160 ... 175 176 ... 191 192 ... 207 349 15 Kurz-Referenz JVM-407 203121 203122 203123 208 ... 223 224 ... 239 240 ... 255 32 zusammengefasste Spezialmerker 203124 203125 203126 203127 203128 203129 203130 203131 2048 ... 2079 2080 ... 2111 2112 ... 2143 2144 ... 2175 2176 ... 2207 2208 ... 2239 2240 ... 2271 2272 ... 2303 16 zusammengefasste Spezialmerker 203132 203133 203134 203135 203136 203137 203138 203139 203140 203141 203142 203143 203144 203145 203146 203147 2048 ... 2063 2064 ... 2079 2080 ... 2095 2096 ... 2111 2112 ... 2127 2128 ... 2143 2144 ... 2159 2160 ... 2175 2176 ... 2191 2192 ... 2207 2208 ... 2223 2224 ... 2239 2240 ... 2255 2256 ... 2271 2272 ... 2287 2288 ... 2303 Anwenderregister - Merker - Überlagerung 1000000 1000001 1000002 1000003 1000004 1000005 1000006 1000007 1000008 1000009 1000010 1000011 1000012 1000013 1000014 1000015 1000016 1000017 1000018 1000019 1000020 1000021 1000022 1000023 1000024 256 ... 287 288 ... 319 320 ... 351 352 ... 383 384 ... 415 416 ... 447 448 ... 479 480 ... 511 512 ... 543 544 ... 575 576 ... 607 608 ... 639 640 ... 671 672 ... 703 704 ... 735 736 ... 767 768 ... 799 800 ... 831 832 ... 863 864 ... 895 896 ... 927 928 ... 959 960 ... 991 992 ... 1023 1024 ... 1055 1000025 1000026 1000027 1000028 1000029 1000030 1000031 1000032 1000033 1000034 1000035 1000036 1000037 1000038 1000039 1000040 1000041 1000042 1000043 1056 ... 1087 1088 ... 1119 1120 ... 1151 1152 ... 1183 1184 ... 1215 1216 ... 1247 1248 ... 1279 1280 ... 1311 1312 ... 1343 1344 ... 1375 1376 ... 1407 1408 ... 1439 1440 ... 1471 1472 ... 1503 1504 ... 1535 1536 ... 1567 1568 ... 1599 1600 ... 1631 1632 ... 1663 350 1000044 1000045 1000046 1000047 1000048 1000049 1000050 1000051 1000052 1000053 1000054 1000055 1664 ... 1695 1696 ... 1727 1728 ... 1759 1760 ... 1791 1792 ... 1823 1824 ... 1855 1856 ... 1887 1888 ... 1919 1920 ... 1951 1952 ... 1983 1984 ... 2015 2016 ... 2047 Systemfunktion 4 5 20 21 22 23 24 25 26 27 28 BCD zu HEX Konvertierung HEX zu BCD Konvertierung Quadratwurzel Sinus Cosinus Tangens Arcus Sinus Arcus Cosinus Arcus Tangens Exponentialfunktion natürlicher Logarithmus 29 30 Absolutwert Trennung von Vor- und Nachkommastellen 60 61 65/67 66/68 90 91 92 96 110 150 151 152 CRC für Modbus RTU generieren CRC für Modbus RTU überprüfen lese Registerblock über Modbus/TCP schreibe Registerblock über Modbus/TCP Datendatei schreiben Datendatei anfügen Datendatei lesen Datendatei löschen E-Mail versenden NetCopyList konfigurieren NetCopyList löschen NetCopyList senden Jetter AG JVM-407 Anhang Anhang Einleitung Der Anhang enthält die elektrischen und mechanischen Daten, sowie die Betriebsdaten. Inhalt Thema Seite Technische Daten ....................................................................................... 352 Index ........................................................................................................... 360 Jetter AG 351 Anhang A: Technische Daten Einleitung Dieses Kapitel im Anhang enthält die elektrischen und mechanischen Daten sowie die Betriebsdaten des JVM-407. Inhalt Thema Seite Technische Daten ....................................................................................... 353 Mechanische Abmessungen ....................................................................... 355 Betriebsparameter Umwelt und Mechanik .................................................. 358 Betriebsparameter EMV .............................................................................. 359 352 Jetter AG JVM-407 Anhang Technische Daten Elektrische Daten: Spannungsversorgung Parameter Nennspannung U BATT DC 12 V bzw. DC 24 V Zulässiger Spannungsbereich 9 ... 32 VDC Eingangsstrom ohne Kamera typ. 650 mA bei DC 12 V Eingangsstrom ohne Kamera typ. 320 mA bei DC 24 V Leistungsaufnahme ohne Kamera 7,8 W Kameraanschluss Parameter Beschreibung Spannung DC 12 V bzw. U BATT, wenn U BATT < DC 13 V Strom max. 1 A Display Parameter Beschreibung Display 7 Zoll TFT LCD-Flachbildschirm Lichtstärke LED-Backlight (weiß) 300 cd/m Auflösung Display 800 x 480 Pixel (WVGA) Tasten, Digipot Parameter 2 Beschreibung Tasten 4 lackierte Silikontasten mit Nachtbeleuchtung Digipot Drehregler mit 16 Positionen und Bestätigungs-Funktion USB-Stick Parameter Beschreibung Speichergröße bis 8 GByte Versorgung 5 V, max. 150 mA Kurzschlussfestigkeit ja, Kurzschlussstrom: ~ 1 A Speicherausbau Jetter AG Beschreibung Parameter Beschreibung Anzahl remanente Register 6.000 Remanenter Variablenspeicher 24.000 Byte Flash-Disk 12,875 MByte 353 Anhang Batterie Technische Daten der Echtzeituhr 354 Parameter Beschreibung Lebensdauer bis zu 4 Jahre Batterietyp CR1225 (Lithium Knopfzelle) Spannung 3V Kapazität 48 mAh Parameter Beschreibung Gangreserve 4 Jahre Abweichung max. 1 Minute pro Monat Jetter AG JVM-407 Anhang Mechanische Abmessungen Einleitung Dieses Kapitel beschreibt die mechanischen Abmessungen des JVM-407 und die Bedingungen für den Einbau. Mechanische Abmessungen Die Abbildung zeigt die Abmessungen des JVM-407. Zulässige Einbaulagen Die Abbildung zeigt die zulässigen Einbaulagen. Jetter AG 355 Anhang Es bedeutet: Nummer Verbotene Einbaulagen Zulässige Einbaulage 1 waagerecht oder geneigt 2 senkrecht oder geneigt Die Abbildung zeigt die verbotene Einbaulage. Das Bediengerät JVM-407 ist rückseitig nicht gegen Feuchtigkeit, insbesondere Spritz- oder Tropfwasser, geschützt. Sollte am Einbauort Feuchtigkeit nicht auszuschließen sein, ist diese Einbauart (siehe Bild oben) nicht zulässig. Die Ansammlung von Feuchtigkeit und Tropfwasser im Gerät kann zu Kriechströmen und Korrosion führen. Platzbedarf für Einbau und Service Die Abbildung zeigt den Platzbedarf für das Bediengerät JVM-407. Halten Sie den Raum um das Gehäuse für den Servicefall frei. Die Stecker müssen sich jederzeit abziehen lassen. Die SD-Karte muss sich jederzeit austauschen lassen. Die Flügelmutter der SD-Karten-Sicherung muss sich leicht lösen lassen. 356 Jetter AG JVM-407 Anhang Es bedeutet: Nummer Platzbedarf für Überhitzungsschutz Beschreibung 1 Stecker für CANopen®, Video, Spannungsversorgung, Ein- und Ausgänge 2 Flügelmutter zur Sicherung der SD-Karte 3 Netzwerkstecker 4 SD-Karte Die Abbildung deutet den Sicherheitsabstand für den Überhitzungsschutz an. Beachten Sie: Das JVM-407 erhöht die Umgebungstemperatur durch Wärmeabstrahlung unter Last. Die Leistungsaufnahme beträgt 7,8 W. Das JVM-407 arbeitet störungsfrei bei einer Umgebungstemperatur bis +65 °C. Bedenken Sie die Wärmeabstrahlung des Geräts insbesondere beim Einbau in kritischer Umgebung: Einbauort Jetter AG In der Nähe des Kraftstofftanks In der Nähe der Kraftstoffleitung In der Nähe brennbarer Fahrzeugteile In der Nähe thermisch verformbarer Fahrzeugteile Das JVM-407 ist in der Fahrerkabine einzubauen. 357 Anhang Betriebsparameter Umwelt und Mechanik Umwelt Mechanik 358 Parameter Wert Norm Betriebstemperaturbereich -20 ... +65 °C Lagertemperaturbereich -30 ... +80 °C DIN EN 61131-2 DIN EN 60068-2-1 DIN EN 60068-2-2 Luftfeuchtigkeit 10 ... 95 % Das JVM-407 nicht mit Dampfstrahler oder ähnlichem reinigen. DIN EN 61131-2 Klimatest Feuchte Wärme DIN EN 60068-2-30 Verschmutzungsgrad 2 DIN EN 61131-2 Einbauort Das JVM-407 ist in der Fahrerkabine einzubauen. Parameter Wert Norm Schwingfestigkeit Vibration, Breitbandrauschen DIN EN 60068-2-6 Schärfegrad 2 Schockfestigkeit 25 g gelegentlich, 11 ms, DIN EN 60068-2-27 halbe Sinuswelle, 3 Schocks in beide Richtungen der drei Raumachsen Schutzart Einbau direkt in Konsole frontseitig: IP64 rückseitig: IP10 DIN EN 60529 inklusive aller Änderungen bis heute Schutzart auf Tragarm montiert frontseitig: IP64 rückseitig: IP64 DIN EN 60529 inklusive aller Änderungen bis heute Jetter AG JVM-407 Anhang Betriebsparameter EMV EMV-Störaussendung EMV-Störfestigkeit Jetter AG Das Gerät ist nach Richtlinie 72/245/EWG mit allen Änderungen bis 2009/19/EG geprüft und erfüllt diese. Parameter Wert Norm Störfestigkeit gegen leitungsgebundene Störungen erfüllt Richtlinie 72/245/EWG mit allen Änderungen bis 2009/19/EG Störfestigkeit gegen Fremdfeld 20 ... 1.000 MHz: 100 V/m 1.000 ... 2.000 MHz: 30 V/m Richtlinie 72/245/EWG mit allen Änderungen bis 2009/19/EG Load Dump Impuls 5b 70 V ISO 7637-2 359 Index B: Index H HTTP-Server • 179 A I Anwenderprogramm auf der SD-Karte ablegen • 344 laden • 342 Standardablage • 343 Automatisches Kopieren von Steuerungsdaten • 310 Beispiel einer Kommandodatei • 326 IP-Adresse ändern • 76 B Benutzerverwaltung • 154 Bestandteile JVM-407 • 19 Bestellbezeichnung JVM-407 • 23 Betriebsparameter EMV • 359 Umwelt und Mechanik • 358 Betriebssystem-Update • 333 C CANopen® • 93 D Dateisystem • 149 Eigenschaften • 150 Formatieren und prüfen • 168 E Echtzeit-Steuerungswerte einfügen • 235 Echtzeituhr • 209 E-Mail-Funktion • 222 E-Mails erstellen • 231 E-Mails versenden • 238 Konfiguration • 223 Registerübersicht • 244 EMV EMV • 14 Erstinbetriebnahme • 81 F Freiprogrammierbare CAN-PRIM-Schnittstelle • 294 CAN-PRIM-Schnittstelle programmieren • 297 Einschränkungen • 296 Funktion • 295 Registerübersicht • 301 Freiprogrammierbare IP-Schnittstelle • 266 IP-Schnittstelle programmieren • 268 Programmbeispiele • 285 Registerübersicht • 281 FTP-Server • 175 K Kurz-Referenz • 347 L Laufzeitregister • 213 M Mechanische Abmessungen • 24 Modbus/TCP • 247 Modbus/TCP-Client • 253 Modbus/TCP-Server • 248 Montage Montage des JVM-407 • 63 Montage des Tragarms • 66 P Produktbeschreibung JVM-407 • 18 Programmierung Digipot • 205 Digitale Ein- und Ausgänge • 206 Funktionstasten • 204 Zündung und Ausschaltverzögerung • 207 S SAE J1939 • 123 Schnittstellen • 34 Beispiel einer Verdrahtung • 35 CAN • 45 Digitale Ein- und Ausgänge • 38 Ethernet • 43 Spannungsversorgung • 36 Spezifikation CANopen®-Buskabel • 49 Video • 51 Schnittstellenaktivität überwachen • 217 Sicherheitshinweise • 11 Speicherarten • 191 Speicherübersicht • 191 T Technische Daten • 353 Typenschild • 29 V Versionsregister • 31 360 Jetter AG Jetter AG Gräterstraße 2 D-71642 Ludwigsburg Deutschland Telefon: +49 7141 2550-0 Telefon Vertrieb: +49 7141 2550-433 Fax Vertrieb: +49 7141 2550-484 Hotline: +49 7141 2550-444 Internet: http://www.jetter.de E-Mail: [email protected] Tochtergesellschaften Jetter (Schweiz) AG Jetter UK Ltd. Jetter USA Inc. Münchwilerstraße 19 Old Witney Road 13075 US Highway 19 North CH-9554 Tägerschen Eynsham Florida - 33764 Clearwater OX29 4PU Witney Schweiz Großbritannien U.S.A Telefon: +41 71 91879-50 Telefon: +44 1865 883346 Telefon: +1 727 532-8510 Fax: +41 71 91879-69 Fax: +44 1865 883347 Fax: +1 727 532-8507 E-Mail: [email protected] E-Mail: [email protected] E-Mail: [email protected] Internet: http://www.jetterag.ch Internet: http://www.jetter.uk.com Internet: http://www.jetter.de 362 Jetter AG