102
Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten als Android- Service für die Android-App „farmpilot“ auf einem Android-Tablet. Fachbereich Elektrotechnik und Informatik Masterstudiengang Informationstechnik Name: Alexander Kuhn Matrikelnummer: 578748 Erstellt bei: arvato Systems GmbH in Gütersloh Erstprüfer: Prof. Dr. rer. nat. Nikolaus Wulff, FH Münster Zweitprüfer: Dipl.- Ing. Christoph Apke, arvato Systems GmbH

Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

Masterthesis

Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und

Bereitstellung der aufbereiteten Daten als Android-Service für die Android-App „farmpilot“ auf einem

Android-Tablet.

Fachbereich Elektrotechnik und Informatik Masterstudiengang Informationstechnik

Name: Alexander Kuhn Matrikelnummer: 578748 Erstellt bei: arvato Systems GmbH in Gütersloh

Erstprüfer: Prof. Dr. rer. nat. Nikolaus Wulff, FH Münster Zweitprüfer: Dipl.- Ing. Christoph Apke, arvato Systems GmbH

Page 2: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

II

Danksagung

Mein besonderer Dank gilt meiner Familie und meiner Freundin, auf die ich mich zu

jeder Zeit verlassen kann und die hierdurch wesentlich zum Erfolg dieser Arbeit

beigetragen haben.

Des Weiteren bedanke ich mich bei Herrn Prof. Dr. rer. nat. Nikolaus Wulff für seine

Unterstützung und die Betreuung meiner Arbeit.

Nicht zuletzt geht mein Dank an meinen Kollegen und arvato Systems internen

Betreuer Herrn Dipl.-Ing. Christoph Apke für seine hilfreichen konstruktiven

Kommentare und die angenehme Zusammenarbeit.

Darüber hinaus bedanke ich mich bei allen anderen, hier nicht im Einzelnen

genannten Personen, die mich bei der Anfertigung dieser Arbeit in unterschiedlicher

Weise unterstützt haben.

Page 3: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

III

Eidesstattliche Erklärung

Hiermit versichere ich, dass ich die vorliegende Arbeit selbstständig angefertigt und

dabei nur die angegebenen oder bei Zitaten kenntlich gemachten Quellen und Hilfs-

mittel verwendet habe.

Ennigerloh, den ________________ _____________________________

Alexander Kuhn

Page 4: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

IV

Kurzbeschreibung

In der nationalen und internationalen Landwirtschaftsindustrie werden vermehrt IT-

Lösungen in Landmaschinen (Mähdrescher, Rodemaschinen oder Traktoren)

eingesetzt, die als Organisations- oder Steuerungseinheiten dienen. Dabei kommt für

die Kommunikation zwischen den einzelnen Komponenten innerhalb einer

Landmaschine ein von der “International Organization for Standardization” ent-

wickeltes Transportprotokoll mit der Norm ISO 11783 zum Einsatz, das die

Steuerung und den Informationsaustausch auf einem Bussystem regelt.

Die auf dem Bussystem übertragenen Maschinendaten (ISOBUS-Daten) sind

heutzutage nicht nur für die Landmaschine und den Fahrer relevant. Sie werden

auch vermehrt von Disponenten für deren Einsatzplanung und Auswertung gefordert.

Im Rahmen dieser Masterarbeit wird eine Analyse der Gesamtsituation bezüglich der

ISOBUS-Datenverarbeitung auf Landmaschinen durchgeführt und eine Android-

Applikation konzipiert und implementiert, die als eigenständiges, natives Android-

Service im Hintergrund agiert und ISOBUS-Daten auswertet. Die ISOBUS-Daten

werden der externen Anwendung „farmpilot-App“ zur Verfügung gestellt.

Page 5: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

V

Inhaltsverzeichnis

1 Einleitung ............................................................................................................. 1

1.1 Unternehmensprofil ....................................................................................... 1

1.2 arvato Systems .............................................................................................. 2

1.3 Abteilung NMA-D und das Produkt „farmpilot“ ............................................... 3

1.4 Hintergrund, Motivation und Zielsetzung ....................................................... 3

1.5 Gliederung der Arbeit .................................................................................... 4

2 Grundlagen .......................................................................................................... 5

2.1 „farmpilot“ - System ....................................................................................... 5

2.1.1 „farmpilot-Portal“ ..................................................................................... 7

2.1.2 „farmpilot-App“ ........................................................................................ 9

2.2 ISOBUS und CAN-Bus ................................................................................ 11

2.2.1 CAN-Bus ............................................................................................... 11

2.2.2 ISOBUS ................................................................................................ 15

3 Evaluation / Analyse .......................................................................................... 19

3.1 Derzeitiger IST-Zustand .............................................................................. 19

3.2 Möglichkeiten und Alternativen .................................................................... 20

3.2.1 Übertragungstechniken ......................................................................... 20

3.2.2 Hardware und Software ........................................................................ 22

4 Konzeption ........................................................................................................ 25

4.1 Anforderungen ............................................................................................. 25

4.1.1 Konzeptionelle Anforderungen .............................................................. 25

4.1.2 Technische Anforderungen ................................................................... 27

4.2 Analyse der Technik & Entscheidungsfindung ............................................ 29

4.2.1 Analyse: mobile Geräte ......................................................................... 29

4.2.2 Analyse: Funkübertragungstechnik und CANBUS-Komponente ........... 30

4.3 Analyse der ISOBUS-Nachrichten ............................................................... 32

Page 6: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

VI

4.4 Entwurf ........................................................................................................ 37

4.4.1 Technischer Aufbau .............................................................................. 37

4.4.2 Datenkommunikation Bluetooth ............................................................ 38

4.4.3 Berechnung der ISOBUS-Identifier Komponenten ................................ 38

4.4.4 Datenspeicherung und Bereitstellung ................................................... 39

4.4.5 Adressermittlung ................................................................................... 40

4.4.6 Zusammenfassung & Ausschlusskriterium ........................................... 41

5 Implementierung ................................................................................................ 42

5.1 Organisatorisches ........................................................................................ 42

5.1.1 Vorgehensmodell .................................................................................. 42

5.1.2 Eingesetzte Technologie und Werkzeuge ............................................. 42

5.2 Allgemeine in Android verwendete Techniken ............................................. 43

5.2.1 Architektur ............................................................................................. 43

5.2.2 Manifest-Datei, Activity & Lebenszyklus ............................................... 45

5.2.3 Service .................................................................................................. 47

5.2.4 SQLite ................................................................................................... 48

5.2.5 ContentProvider & ContentResolver ..................................................... 50

5.3 Implementierung der ISOBUS-Reader App ................................................. 52

5.3.1 Grafische Benutzeroberflächen und Ablauf der Anwendung ................ 52

5.3.2 ISOBUS-Daten-Empfang und Berechnung ........................................... 58

5.3.3 ISOBUS-Daten-Verwaltung mit SQLite ................................................. 65

5.3.4 ISOBUS-Daten-Bereitstellung für externe Anwendungen ..................... 75

5.3.5 ISOBUS-Adressermittlung und Verwaltung .......................................... 78

6 Test ................................................................................................................... 83

6.1 Verifikation der Anwendung ......................................................................... 84

6.2 Validierung der Anwendung ........................................................................ 86

7 Fazit und Ausblick ............................................................................................. 87

8 Abbildungsverzeichnis ....................................................................................... 89

Page 7: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

VII

9 Listingverzeichnis .............................................................................................. 91

10 Tabellenverzeichnis ........................................................................................ 93

11 Literaturverzeichnis ......................................................................................... 94

Page 8: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

1

1 Einleitung

In diesem Abschnitt der Masterarbeit erfolgt ein kurzer Einblick in das Unternehmen

arvato Systems und in die Abteilung NMA-D, sowie das Produkt „farmpilot“.

Anschließend wird der Hintergrund und die Motivation sowie die Zielsetzung der

Arbeit beschrieben und eine kurze Erläuterung zur Gliederung gegeben.

1.1 Unternehmensprofil

Der Name „arvato“ ist ein Kunstname bzw. ein Akronym. Dabei steht „ar“ für das

lateinische Wort ars, die Kunst, „va“ für Variation, „t“ für Technik und „o“ für

Organisation. Gegründet wurde das Unternehmen „arvato AG“ im Juli 1999 und hat

seinen Hauptsitz in Gütersloh. [1]

Abb. 1.1 – Bertelsmann Struktur

„arvato“ ist ein Tochterunternehmen des internationalen Medienkonzerns

„Bertelsmann SE & Co. KGaA“ (ehemals „Bertelsmann AG“), zu der noch weitere

Haupt-Geschäftsbereiche wie „RTL Group“, die weltgrößte englischsprachige

Verlagsgruppe „Random House“ und Europas größtes Druck- und Verlagshaus

„Gruner + Jahr AG & Co. KG“ gehören. „arvato Systems“ ist ein Teilbereich von

„arvato“. [1] [2] [3] [4] [5]

Hierzu werden kurz einige Daten und Fakten zum Überblick genannt:

Bertelsmann erwirtschaftete einen Umsatz von ca. 15,3 Mrd € (2011), hat über

100.000 Mitarbeiter in mehr als 50 Ländern und hat mehr als 1.000 Einzelfirmen.

„arvato“ selbst machte einen Umsatz von 5,4 Mrd. € mit insgesamt über 68.000

Mitarbeitern in 36 Ländern, davon über 20.000 Mitarbeiter in Deutschland. Zu den

„arvato“-Leistungsbereichen zählen „Creation“ (Konzeption, Kampagnen-

management und Marketing), „CRM“, „Customer Service“, „E-Commerce“,

Page 9: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

1.2 arvato Systems

2

„Finance“, „Print“, „Replication“ (CD- und DVD-Lösungen), „Supply Chain

Management“ und der für die Masterarbeit relevante Bereich „IT“ mit der

Unternehmenseinheit „arvato Systems“.

Abb. 1.2 – arvato-Leistungsbereiche

1.2 arvato Systems

Mit über 30 Jahren Erfahrung in der IT-Dienstleistung sowohl in Europa als auch in

Nordamerika und Asien machte „arvato Systems“ im Jahre 2011 mit mehr als 2.000

Mitarbeitern einen Umsatz von 265 Mio. €. Sowohl die Realisierung von Standard-

Software als auch branchenspezifische und individuell entwickelte IT-Systeme

gehören zu den Aufgaben des Unternehmens. Mit der Planung, Entwicklung und

Implementierung und der Inbetriebnahme und Betreuung der IT-Lösungen sollen

Geschäftsprozesse besser miteinander vernetzt und optimale Abläufe garantiert

werden. Die Branchen Handel, Logistik & Transport, Manufacturing, Medien sowie

Versorgung und Verwaltung sind das Augenmerk von arvato Systems. [6]

Des Weiteren stellt arvato Systems mit seiner 30-jährigen Erfahrung und dem vor Ort

in Gütersloh (Deutschland) befindlichen Großrechenzentrum und seinen Rechenzen-

trumsdienstleistungen (Infrastructure Services) eine langfristig stabile Nachhaltigkeit

und Internationalität aber auch einen nahezu perfekten Datenschutz und

Datensicherheit dar. Gerade in der heutigen Zeit haben diese Aspekte einen hohen

Page 10: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

1.3 Abteilung NMA-D und das Produkt „farmpilot“

3

Stellenwert und die Kunden gewinnen ein noch stärkeres Vertrauen in arvato

Systems dadurch, dass die Daten in Europa/Deutschland gespeichert werden.

1.3 Abteilung NMA-D und das Produkt „farmpilot“

In der Abteilung NMA-D der arvato Systems GmbH ist das Produkt „farmpilot“

vorzufinden. Dieses Produkt wurde im Herbst 2009 nicht von einem externen

Unternehmen in Auftrag gegeben, sondern durch eigene Kreation und Ideenfindung

aufgestellt, welches sich in der Landwirtschaftsindustrie ansiedelt.

Hierbei wurde vorab mit Hilfe von Umfragen festgestellt, dass es einen großen

Bedarf an IT-Lösungen und IT-Dienstleistungen (sowohl im Hardware- als auch im

Softwarebereich) in der Landwirtschaftsindustrie gibt. Diesem wird beabsichtigt mit

„farmpilot“ entgegenzutreten und sich hierbei als Vorreiter mit großem IT-Potential

und einer möglichen Marktführerrolle zu platzieren.

„farmpilot“ dient als Organisationsportal sowohl der nationalen als auch der

internationalen Landwirtschaftsindustrie (Maschinenringe, Lohnunternehmer und

Landwirte), um entsprechende Arbeitsvorgänge sowohl vom Büro als auch direkt von

den Feldern aus effizienter zu verwalten. Auf das Produkt „farmpilot“ wird in Kapitel

2.1 „farmpilot“ - System genauer eingegangen.

1.4 Hintergrund, Motivation und Zielsetzung

Das Verwaltungstool „farmpilot“ besitzt bereits einen großen Umfang zur

Organisation von landwirtschaftlichen Aufgabenfeldern. Die Anwender (Landwirte,

Lohnunternehmer) stellen aber auch zusätzlich die Anforderung, Daten und Werte,

die bei einer landwirtschaftlichen Maschine auftreten ebenfalls mit in das

Verwaltungstool aufnehmen zu können. Diese Daten könnten dabei z.B. die

Geschwindigkeit des Traktors, die GPS-Position, den Bodenabstand des Mähgeräts

zum Boden und die Ausbringungsmenge der Gülle angeben oder eine Information

darüber sein, ob ein bestimmtes Ventil geöffnet oder geschlossen ist.

Page 11: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

1.5 Gliederung der Arbeit

4

Um die zusätzlichen Daten aufnehmen zu können, wird eine Lösung als Teilprojekt

des Produkts „farmpilot“ konzipiert und entwickelt. Die Lösung liegt dabei in der

Erfassung und Auswertung von ISOBUS-Daten nach der Norm ISO 11783.

Die Realisierung erfolgt in Form einer Masterarbeit. Dazu wird eine Android

Anwendung entwickelt, die mit Hilfe zusätzlicher Hardware das Auslesen von

ISOBUS-Daten ermöglicht. Die Anwendung soll dabei weitestgehend im Hintergrund

agieren und die ISOBUS-Daten der „farmpilot-App“ für die Weiterverwendung

bereitstellen. Mit den ermittelten Daten hat die „farmpilot-App“ dann die Möglichkeit,

die Daten sowohl dem Landmaschinenfahrer direkt auf seinem Tablet anzuzeigen als

auch dem Disponenten zur Verfügung zu stellen, damit dieser auf dem „farmpilot-

Portal“ (Desktop) vom Verwaltungsgebäude aus die Übersicht behalten kann.

Die Erfassung von ISOBUS-Daten ist Kernpunkt dieser Masterarbeit.

1.5 Gliederung der Arbeit

Auf den folgenden Seiten werden zunächst die Grundlagen und Techniken erläutert,

die für die Realisierung des Projekts benötigt werden. Im Anschluss erfolgt eine

Analyse des derzeitigen Zustands und die Möglichkeiten und Alternativen zur

Erfassung der Daten werden aufgezeigt. Des Weiteren werden die Alternativen

bewertet und die gewählte Vorgehensweise und das Konzept vorgestellt. Zum

Schluss wird die Implementierung des aufgestellten Konzepts erläutert und auf die

bei der Realisierung angewendeten Testverfahren eingegangen.

Page 12: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

5

2 Grundlagen

Um eine Software zur Erfassung und Auswertung von ISOBUS-Daten für das

Produkt „farmpilot“ konzeptionieren und realisieren zu können, werden verschiedene

Technologien sowohl bei der Hardware als auch bei der Software verwendet. Diese

grundlegenden Techniken werden in diesem Abschnitt der Arbeit kurz erläutert.

2.1 „farmpilot“ - System

„farmpilot“ ist das Organisationsportal für Maschinenringe, Lohnunternehmer und

Landwirte. Es ist das Produkt, zu dem diese Masterarbeit als Teilprojekt realisiert

wird, so dass eine Notwendigkeit besteht, das Produkt kurz vorzustellen.

„farmpilot“ stellt ein Verwaltungs- und Planungstool dar, welches für die nationale

aber auch für die internationale Landwirtschaftsindustrie entwickelt wurde. Das

Einsatzgebiet ist groß und vielfältig, da es sowohl für den landwirtschaftlichen

Fuhrpark, die Logistik und Disposition aber auch für die Pflanz-, Pflege- und

Erntevorgänge eingesetzt werden kann. Es dient der Pflege von Stammdaten,

Dokumentationsdaten und organisiert die Betriebsabläufe wie z.B. die

Einsatzplanung von Maschinen und Mitarbeitern. Des Weiteren steht dem

landwirtschaftlichen Auftraggeber (z.B. einem Maschinenring) eine gewisse Kontrolle

und Auswertung zur Verfügung.

Die Stärken von arvato Systems und dem Produkt „farmpilot“ sind zum einen die

Neutralität, da keine Bindung an einzelne Hersteller von landwirtschaftlichen Geräten

notwendig ist und zum anderen, dass trotzdem Kooperationen und Vernetzungen

bestehen, wie z.B. die Kooperation zum BMR (Bundesverband der Maschinenringe

e.V.) und dem CCI (Competence Center ISOBUS e.V.).

Die Abbildung „Abb. 2.1“ soll den Ablauf besser verdeutlichen. Dabei ist anzumerken,

dass „farmpilot“ aus zwei Bereichen besteht. Auf der linken Seite befindet sich das

„farmpilot-Portal“ welches von einem Desktop-PC bedient werden kann. Auf der

rechten Seite ist die „farmpilot-App“, die sich auf einem Terminal oder einem Tablet

befindet. Kapitel 2.1.1 „farmpilot-Portal“ und Kapitel 2.1.2 „farmpilot-App“ gehen

genauer auf die Komponenten ein.

Page 13: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

2.1 „farmpilot“ - System

6

Abb. 2.1 – „farmpilot“ Gesamtübersicht

Sowohl das „farmpilot-Portal“ als auch die „farmpilot-App“ für Android-Tablets werden

auf der technischen Basis der Adobe Flash-Plattform entwickelt. Als Entwicklungs-

framework wird Apache Flex (ehemals Adobe Flex) und als plattformunabhängige

Laufzeitumgebung die „Adobe Integrated Runtime“ (häufig auch „Adobe Air“ oder

„AIR“ genannt) verwendet. Ab der AIR Version 2.5 (Oktober 2010) unterstützt es

Smartphones und Tablets, die auf „Blackberry Tablet OS“, „Android“ oder „iOS“

basieren. Zur Kommunikation, Datenverarbeitung und Datenhaltung dient das

zertifizierte Rechenzentrum von arvato Systems. Die Übertragung der Daten von der

mobilen „farmpilot-App“ auf dem Tablet erfolgt über das Mobilfunknetz.

Page 14: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

2.1 „farmpilot“ - System

7

1 „Schlag“ ist der Fachbegriff für eine landwirtschaftlich genutzte Ackerfläche.

2.1.1 „farmpilot-Portal“

„farmpilot-Portal“ ist das Verwaltungssystem, welches sich auf dem Desktop PC

befindet. Eingegliedert wird „farmpilot-Portal“ derzeit in drei Module:

Abb. 2.2 – „farmpilot-Portal“ Module

Disposition

Im Dispositionsmodul besteht zum einen die Möglichkeit seine kundenbezogenen

Stammdaten wie Anschrift, Telefonnummer und Schlagdaten1 zu hinterlegen und

zum anderen können Mitarbeiter und Ressourcen (landwirtschaftliche Maschinen und

Geräte) gepflegt werden. Im Anschluss können mit Hilfe dieser Daten Einsätze und

Arbeitszeiten sowohl für die Mitarbeiter als auch für die Maschinen festgelegt,

koordiniert und kontrolliert werden. Dabei sind die Abläufe des Betriebs fest im Blick,

so dass die bestehenden Ressourcen optimal genutzt und deren Einsatz optimiert

werden kann. Zu dem Dispositionsmodul zählen die Bereiche Auftragserfassung,

Kampagnenplanung und Kunden-/Mitarbeiterverwaltung.

Abb. 2.3 – Tagesgenaue Disposition

Page 15: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

2.1 „farmpilot“ - System

8

Abb. 2.4 – Detaildisposition (Einsatzplanung)

Flottenmanagement

Mit dem Flottenmanagement werden die Betriebsdaten zentral im „farmpilot-Portal“

erfasst, strukturiert und übersichtlich abgebildet. Somit besteht ein Überblick über alle

eigenen Prozesse und es können gegebenenfalls weitere Schritte eingeleitet werden.

Die Visualisierung im Portal selbst erfolgt weitgehend über graphische Darstellungen

anhand leicht verständlicher Diagramme. Die geographischen Informationen werden

dabei über eine integrierte Google®-Kartendarstellung angezeigt.

Das Modul erlaubt es dem Anwender mit Hilfe der Bereiche Maschinenübersicht,

Auftragsübersicht, Fahrzeuggruppen und Dokumentation eigene Maschinen zu

lokalisieren, ganze Fahrzeuggruppen zu managen und papierlos Aufträge zu

verwalten.

Die Abbildung „Abb. 2.5“ stellt eine Übersicht der Maschinen dar, die innerhalb des

Flottenmanagements derzeit im Einsatz und somit online verfügbar sind.

Page 16: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

2.1 „farmpilot“ - System

9

Abb. 2.5 – Maschinenübersicht im Flottenmanagement

Diagnose

Die Diagnosefunktion ermöglicht eine erste Problemanalyse beim Kundendienst des

Herstellers unmittelbar nach Auftreten des Fehlers. Es wird davon profitiert, dass

vermeidbare Kundendienstfahrten eingespart und Fehler schneller behoben werden

können. Für einfache Bedienerfragen können Screenshots des Terminals oder

Konfigurationsdateien der Maschinen an „farmpilot“ gesendet werden. Eine

Ferndiagnose mit „farmpilot“ spart Zeit und Ressourcen. Die Anfahrts- und

Reisekosten können somit verringert werden.

2.1.2 „farmpilot-App“

Die „farmpilot-App“ ist das mobile Gegenstück vom „farmpilot-Portal“. Diese wird auf

einem Android-Tablet auf der Seite des Fahrers innerhalb einer landwirtschaftlichen

Maschine angewendet. Die App wird eingesetzt, um entsprechende Aufträge von

einem Disponenten zu empfangen (Push-Funktion). Der Fahrer erhält dabei ein

Auftragsset. Er kann zur gleichen Zeit nur ein einziges Auftragsset auf dem Tablet

verwalten. Zu einem Auftragsset gehören mehrere Aufträge und der Fahrer kann sich

zu jedem Auftrag die Auftragsdetails wie z.B. die Arbeitstätigkeit, die Position des zu

bearbeitenden Schlags und die Kundendaten (Schlagbesitzer, Telefonnummer,…)

anzeigen lassen. Befindet sich der Fahrer an dem entsprechenden Schlag, so kann

er die Bearbeitung des Schlags/Auftrags starten und später wieder stoppen.

Zusätzlich hat der Fahrer die Möglichkeit, detaillierte Angaben zur Arbeitszeit,

Rüstzeit, Pausen oder Überfahrt im Bereich Zeiterfassung zu machen.

Page 17: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

2.1 „farmpilot“ - System

10

Abb. 2.6 – „farmpilot-App“ Hauptmenü

Abb. 2.7 – „farmpilot-App“ Auftragsbearbeitung

Sobald ein Auftrag abgeschlossen ist, sendet die App automatisch einen Bericht an

den Disponenten, so dass dieser sehen kann, dass ein Teil der Aufträge vom

Auftragsset abgearbeitet wurden. Ein Auftragsset kann pausiert und auch über

mehrere Tage bearbeitet werden. Ist das Auftragsset abgeschlossen, so wird es vom

Fahrer quittiert und an den Disponenten zurück gesendet.

Wie man hierbei bereits erkennen kann, ist das Produkt „farmpilot“ schon sehr um-

fangreich. Jedoch besteht der Wunsch zur Erfassung weiterer wichtiger Informa-

tionen wie den ISOBUS-Daten aus den landwirtschaftlichen Maschinen.

Page 18: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

2.2 ISOBUS und CAN-Bus

11

2.2 ISOBUS und CAN-Bus

Für die Realisierung des Teilprojekts zur Erfassung von ISOBUS-Daten werden in

diesem Abschnitt die technischen Grundlagen aufgezeigt. In Kapitel 2.2.1 wird das

serielle Bussystem CAN-Bus (oder auch „CANBUS“ geschrieben) und in Kapitel

2.2.2 die in der Landwirtschaft eingesetzte Norm ISO 11783 (auch unter seinem

Markennamen „ISOBUS“ bekannt) erläutert. ISOBUS baut auf das Bussystem CAN-

Bus auf.

2.2.1 CAN-Bus

Der CAN-Bus (CAN = Controller Area Network) ist ein serielles Bussystem, welches

den Feldbussen angehört. Entwickelt wurde der Bus 1983 von Bosch mit dem Ziel

mehrere Steuergeräte, die in Automobilen eingesetzt werden, zu vernetzten und die

Menge an benötigten Kabeln zu verringern. Der CAN-Bus ist international

standardisiert und in der Norm ISO 11898 festgehalten. Im ISO/OSI-Referenzmodell

wird das Bussystem auf Layer 1 (physikalische Schicht) und Layer 2 (Datensicher-

ungsschicht) referenziert.

Als Übertragungsmedium dienen entweder Kupferleitungen oder Glasfaser, wobei

Kupferleitungen die gängige Variante darstellen. Innerhalb des Bussystems agieren

mehrere Steuergeräte (=Busteilnehmer) in gleichberechtigter Form, so dass hierbei

das „Multi-Master-Prinzip“ gilt. Dabei arbeitet CAN-Bus nach dem CSMA/CR-

Verfahren (CMSA/CR = Carrier Sense Multiple Access / Collision Resolution), bei der

Zugriffs- und Kommunikationskollisionen mittels Arbitrierung aufgelöst werden. [7]

Unter Arbitrierung ist zu verstehen, dass eine entsprechende Funktionseinheit als

Entscheider/Richter agiert und eine gerechte Zuteilung von Ressourcen durchführt.

Diese Funktionseinheit kann in Form einer elektrischen, digitalen Schaltung oder als

Softwareroutine realisiert werden. Beim CAN-Bus erfolgt eine bitweise Arbitrierung,

bei der die am Bussystem teilnehmenden Sender während des Sendens der eigenen

Nachricht (bestehend aus Identifier und Datenfeld) gleichzeitig auf dem Bus lauschen

und einen bitweisen Vergleich des Identifiers durchführen. Senden zwei Teilnehmer

gleichzeitig, so überschreibt das erste dominante Bit eines der beiden das ent-

sprechend rezessive des anderen, was dieser erkennt und seinen Übertragungs-

versuch beendet.

Page 19: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

2.2 ISOBUS und CAN-Bus

12

Mit Hilfe dieses Verfahrens kann eine Wichtigkeit bzw. Hierarchie der Nachrichten

zugewiesen werden. Beim CAN-Bus steht eine Nachricht mit einem niedrigen Ident-

ifier für eine hohe Priorität und eine Nachricht mit einem hohen Identifier für eine

niedrige Priorität. Zur Datensicherung wird eine zyklische Redundanzprüfung (CRC =

Cyclic Redundancy Check) durchgeführt und zur Synchronisierung der Busteilneh-

mer das „bit stuffing“-Verfahren angewendet. Unter „bit stuffing“ (zu Deutsch „Bit-

stopfen“) ist das Einfügen eines inversen Bits bei einer entsprechend gleich-

bleibenden Folge von Bits zu verstehen. Beim CAN-Bus wird bei einer Folge von

mehr als fünf gleichen Bits ein inverses Bit dazwischen eingefügt, z.B. eine Bitfolge

„000000010100“ der Länge 12 wird zu einer Bitfolge „0000010010100“ der Länge 13.

Bei der Verwendung von Kupferleitungen als Übertragungsmedium erfolgt eine Ver-

arbeitung der Daten mittels Differenzsignalen. Diese werden mit zwei oder drei

Leitungen ausgeführt: CAN_HIGH, CAN_LOW und optional CAN_GND (Masse).

CAN_LOW enthält den komplementären Pegel von CAN_HIGH gegenüber einer

Ruhespannung von etwa 2V. Die Differenzspannung bei einem dominanten Bit

beträgt etwa 3V. Dadurch können Gleichtaktstörungen unterdrückt werden, da die

Differenz gleich bleibt. Die Abbildung „Abb. 2.8“ zeigt das Verhalten der

Differenzsignale. [7]

Abb. 2.8 – Spannungspegel im CAN-Bus; Darstellung der Rezessivität und Dominanz

Als Topologie wird in den meisten Fällen die Variante eines linienförmigen

Bussystems verwendet, obwohl auch ein sternförmiger Bus möglich ist. Der

sternförmige Bus zieht aber gegenüber dem linienförmigen Bussystem einige

Nachteile nach sich. Ein Abschlusswiderstand von 120 Ohm ist an beiden

Leitungsenden notwendig.

Page 20: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

2.2 ISOBUS und CAN-Bus

13

Abb. 2.9 – Linearer CAN-Bus

Der CAN-Bus wird zwischen einem Highspeed-Bus (max. 1Mbit/s) und einem Low-

speed-Bus (max. 125kbit/s) unterschieden. Die maximale (theoretische) Leitungs-

länge beträgt ca. 40m bei 1 Mbit/s, 100m bei 500 kbit/s und 500m bei 125 kbit/s. Die

maximale Teilnehmeranzahl auf physikalischer Ebene hängt von den verwendeten

Bustreiberbausteinen (Transceiver, physikalische Anschaltung an den Bus) ab. Mit

gängigen Bausteinen sind 32, 64 oder bis zu 110 (mit Einschränkungen bis zu 128)

Teilnehmer pro Leitung möglich. Erweiterungsmöglichkeit über Repeater oder Bridge

sind jedoch ebenfalls gegeben. [7]

Eine CAN-Bus-Nachricht (auch Telegramm genannt) besteht aus einem Identifier

und dem Datenfeld, in der die relevanten Informationen enthalten sind. Die

Spezifikation definiert zwei verschiedene Identifier-Formate:

11-Bit-Identifier, auch „Base Frame Format“ genannt (CAN 2.0A)

29-Bit-Identifier, auch „Extended Frame Format“ genannt (CAN 2.0B)

Damit die Arbitrierung auch einwandfrei funktioniert, darf es zu einem Identifier immer

nur maximal einen Sender geben. Ein Busteilnehmer kann sowohl Empfänger als

auch Sender von Nachrichten mit beliebig vielen Identifiern sein.

Die CAN-Bus Norm fordert, dass das „Base Frame Format“ stets akzeptiert werden

muss. Das „Extended Frame Format“ kann akzeptiert, muss aber zumindest toleriert

werden.

Das Datenfeld einer CAN-Bus-Nachricht hat stets eine maximale Bit-Länge von 64-

Bit bzw. 8-Byte. Die Länge wird im Identifier im Bereich „Data Length Code“ fest-

gehalten. Somit kann die Länge der gesamten Nachricht variabel sein.

Page 21: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

2.2 ISOBUS und CAN-Bus

14

Ein CAN-Bus-Telegramm besitzt einen genormten Telegrammrahmen, der als

„Frame“ bezeichnet wird. Hierbei gibt es vier verschiedene Arten von Frames: [7]

Daten-Frame, dient dem Transport von bis zu 8 Byte an Daten

Remote-Frame, dient der Anforderung eines Daten-Frames von einem

anderen Teilnehmer

Error-Frame, signalisiert allen Teilnehmern eine erkannte Fehlerbedingung in

der Übertragung

Overload-Frame, dient als Zwangspause zwischen Daten- und Remote-

Frames

Die Abbildungen „Abb. 2.10“ und „Abb. 2.11“ zeigen den Aufbau eines Daten-Frames

sowohl im „Base Frame Format“ als auch im „Extended Frame Format“.

Abb. 2.10 – Datentelegramm im „Base Frame Format“

Abb. 2.11 – Datentelegramm im „Extended Frame Format“

Page 22: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

2.2 ISOBUS und CAN-Bus

15

Der Acknowledge-Slot wird verwendet, um den Empfang eines korrekten CAN-

Frames zu quittieren.

Aufgrund der geringen Kosten, der Echtzeitfähigkeit und der hohen Daten- und

Störsicherheit wird CAN-Bus nicht nur in der Automobilindustrie sondern auch in der

Automatisierungstechnik, den Aufzugsanlagen, der Flugzeug- und Raumfahrttechnik,

in Landmaschinen und in vielen weiteren Bereichen eingesetzt. [8]

2.2.2 ISOBUS

Die Akteure der landwirtschaftlichen Industrie (Landwirt und Disponent) hatten das

Bedürfnis, ihre Landmaschinen mit einer Technik auszustatten, die es Ihnen

ermöglicht, unterschiedliche Traktoren und Fahrerkabinen mit unterschiedlichen

Arbeitsgeräten verschiedener Hersteller zu verwenden und zu steuern, so dass

trotzdem noch eine reibungslose Kommunikation untereinander gewährleistet ist.

Damit soll auch die unnötige Anschaffung zusätzlicher, herstellerspezifischer Geräte

und Bedienelemente vermieden werden und somit Kosten eingespart werden

können.

Dazu wurde die Norm „ISO 11783“ mit dem Titel „Tractors and machinery for

agriculture and forestry — Serial control and communications data network —„

spezifiziert. Es wird oft der Markenname „ISOBUS“ für die Applikation verwendet.

Dabei stellt eine ISOBUS-Anwendung meist nur eine begrenzte Menge der in der

Norm definierten Möglichkeiten dar. Eine ISOBUS-Anwendung wird dabei an dem

OSI-Referenzmodell auf der Schicht 7 „Anwendungsschicht“ angesiedelt. Für die

erfolgreiche Kommunikation werden des Weiteren auch die Schichten 1

„Bitübertragungsschicht“ und 2 „Sicherungsschicht“ benötigt, die jedoch durch

Verwendung des „CAN-Bus“-Bussystems größten Teils abgedeckt werden. [9]

Die Norm definiert neben den physikalischen Eigenschaften des Netzwerkes wie

Stecker und Leitungen auch die Art der Teilnehmer sowie Datenformate und

Schnittstellen.

Netzwerkprotokoll SAE J1939

Als Grundlage für die Norm ISO 11783 werden wesentliche Teile des „SAE J1939“-

Netwerkprotokolls verwendet. SAE J1939 wird von der internationalen „Society of

Page 23: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

2.2 ISOBUS und CAN-Bus

16

Automotive Engineers“ (SAE) definiert, welches wiederum auf der „Bitübertragungs-

schicht“ (Schicht 1) mit CAN-Highspeed nach ISO 11898 (CAN-Bus) arbeitet.

Da SAE J1939 auf CAN-Bus aufbaut, ist es ebenfalls ein Multimaster-System mit

dezentralisiertem Netzwerk-Management. Dabei werden die Informationen mittels

Parameter (Signale) beschrieben und in Parametergruppen (PGs) auf insgesamt 4

Speicherseiten (Data Page) zusammengefasst. Durch eine „Parameter Group

Number“ (PGN) wird eine entsprechende Parametergruppe eindeutig identifiziert.

[10]

In der Abbildung „Abb. 2.12“ wird dargestellt, wie das Protokoll AES J1939 den aus

CAN-Bus bekannten Identifier verwendet und in diesem eine entsprechende Para-

meter- und Speicherseiten-Logik unterbringt.

Abb. 2.12 – Detailierte Aufsplittung vom CAN-Identifier

Die Datenübertragung erfolgt in den meisten Fällen zyklisch. Somit können die

Empfänger Daten empfangen, ohne diese explizit anfordern zu müssen (Broadcast-

Verfahren). Es ist jedoch auch möglich, Daten explizit anzufordern und darauf eine

entsprechende Antwort zu erhalten. Eine Peer-to-Peer Kommunikation zwischen

zwei Steuergeräten ist ebenfalls möglich. Die Entscheidung, ob eine Broadcast- oder

ein Peer-to-Peer-Kommunikation angestrebt ist, wird in der Parametergruppe

definiert. In der Abbildung Abb. 2.12 wird es im unteren Bereich mit „PDU1 Format

(peer to peer)“ und PDU2 Format (broadcast)“ verdeutlicht.

Damit die Adressen der Teilnehmer nur einmal im Bussystem vorkommen und eine

störungsfreie Kommunikation gewährleistet ist, muss jedes Steuergerät eine

Mindestfunktionalität des dezentralen Netzwerk-Managements implementieren:

Auflösung von Adresskonflikten

Page 24: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

2.2 ISOBUS und CAN-Bus

17

Laufende Prüfung, ob Steuergeräteadressen in einem Netzwerk doppelt

vergeben sind

Änderung der Steuergeräteadressen zur Laufzeit

ISOBUS

Die Norm ISO 11783 besteht aus insgesamt 13 Teilbereichen, in der die gesamten

physikalischen Eigenschaften als auch die Kommunikation der Teilnehmer und

Schnittstellen geregelt sind.

Die Anforderungen an ISOBUS sind vielfältig, jedoch stechen zwei entscheidende

Aspekte in der Landwirtschaftsindustrie derzeit stark hervor: „Precision Farming“ und

„gläserne Produktion“.

Das Ziel von „Precision Farming“ ist es eine präzisere, umweltfreundlichere und

kostengünstigere Landwirtschaftstätigkeit zu gewährleisten. Ein oft genanntes

Beispiel ist das Austragen von Dünge- und Unkrautbekämpfungsmittel auf den

Schlägen. Mit Hilfe der neuen Technik besteht die Möglichkeit, sparsam mit den

Mitteln umzugehen und präzise an den zu bearbeitenden Stellen eines Feldes

entsprechend mehr oder weniger an Mittel auszubringen.

Des Weiteren wird von den Ländern bzw. von den Behörden eine lückenlose

Dokumentation der landwirtschaftlichen Vorgänge gefordert, so dass stets ein

Einblick in die Arbeit und die Herstellungsabläufe gegeben ist. Dieser Aufwand

musste früher mühsam in Papierform festgehalten werden und der Verwaltungs-

aufwand war enorm. Mit Hilfe der ISOBUS-Technik auf Landmaschinen und der

grundsätzlichen vermehrten IT in der Landwirtschaftsindustrie wird der bürokratische

Verwaltungsaufwand durch die Technik stark entlastet und sogar noch präziser /

gläserner dokumentiert, da vermehrt genauere Informationen aufgenommen werden

können. Des Weiteren werden die Daten auf einem Farm-Managementsystem wie

z.B. dem „farmpilot-Portal“ gespeichert. Auf die Daten kann ein Disponent jederzeit

zugreifen und diese den Behörden in elektronischer oder Papierform zur Verfügung

stellen.

Als ISOBUS-Hardware werden dabei folgende Komponenten definiert: [9]

ISOBUS-Stecker

Es wurde ein einheitlicher Stecker für den Anschluss von Anbaugeräten

eingeführt, der sowohl Leitungen für die Datenübertragung (CAN_HIGH,

Page 25: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

2.2 ISOBUS und CAN-Bus

18

CAN_LOW) als auch Leitungen zur Stromversorgung von elektrischen

Komponenten liefert.

Virtual Terminal

Ein Anzeige- und Bedienelement, welches einen Bildschirm mit einer

Auflösung von mindestens 200 x 200 Pixeln und 6 Druckknöpfen besitzen

muss.

Traktor-ECU

Das Traktorsteuergerät wird auf einem Traktor bzw. Trägerfahrzeug

angebracht und dient als „Jobrechner“ für die Verarbeitung von Informationen

und Signalen innerhalb des Fahrzeugs. In der einfachsten Variante „Lowcost-

Lösung“ stellt es Fahrgeschwindigkeit, Zapfwellendrehzahl und Dreipunkt-

positionen als Informationen zur Verfügung. Bei den höheren Varianten

werden Ventilstellungen, Hydraulikdrücke und viele weitere Informationen

bereitgestellt.

Implement-ECU

Implement-ECU ist der Jobrechner, der sich auf den Anbaugeräten befindet.

Er übernimmt sowohl die Steuerung der Maschine als auch die Anzeige von

Daten und die Umsetzung von Bedienereingaben.

Taskcontroller

Der Taskcontroller (TC) stellt die Schnittstelle zwischen dem „Farm

Management System“ und der Gerätesteuerung dar. Im einfachsten Fall

dokumentiert er die ausgeführte Arbeit. Der Fahrer kann jedoch dem

Taskcontroller auch Aufträge erteilen, die dieser eigenständig abarbeiten

kann. Ein Beispiel ist das oben genannte „Precision Farming“. Hierbei

übernimmt der Taskcontroller die präzise Ausbringung des Dünge- oder

Unkrautbeseitigungsmittels.

Fileserver

Der Fileserver stellt die Speichereinheit für alle an das ISOBUS-System

angeschlossen Geräte dar. Hierbei werden sowohl Informations- als auch

Konfigurationsdaten gespeichert.

Im Kapitel 4.3 „Analyse der ISOBUS-Nachrichten“ werden die ISOBUS-Telegramme

genauer erläutert.

Page 26: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

19

3 Evaluation / Analyse

Im folgenden Abschnitt erfolgt eine Analyse des derzeitigen IST-Zustands bezüglich

der Landwirtschaftsindustrie und des Produkts „farmpilot“. Des Weiteren werden

Möglichkeiten und Alternativen bezüglich der Übertragungstechniken und der Hard-

und Software aufgezeigt, die zur Erfassung und Verwaltung von ISOBUS-Daten

möglich und nötig sind.

3.1 Derzeitiger IST-Zustand

IST-Zustand: „farmpilot“

In den Grundlagen wird verdeutlicht, dass das Produkt „farmpilot“ bereits mehrere

Lösungen für die Landwirtschaftsindustrie bereitstellt. Mit „farmpilot“ bzw. der mobilen

„farmpilot-App“ auf Tablets ist es derzeit jedoch nicht möglich, landwirtschaftliche

ISOBUS-Daten von den Landmaschinen zu erfassen und zu verwalten. Dieser

Mangel soll mit der Masterarbeit beseitigt werden.

IST-Zustand: Landwirtschaftsindustrie & Tablets

In der Landwirtschaft haben sich die Norm ISO 11783 und die ISOBUS-

Anwendungen etabliert. Diese werden auf den Landmaschinen vermehrt eingesetzt

und die Daten werden sowohl auf dem Bildschirm (Terminal) angezeigt als auch

aufgezeichnet (USB-Stick oder Speicherkarten) und auch per Mobilfunk an die

Zentrale gesendet.

All diese Terminals (unabhängig davon ob es „CCI-Terminals“, „Müller Elektronik-

Terminals“ oder „Class Terminals“ sind) haben jedoch einen bestimmten

gemeinsamen negativen Aspekt: Die Bildschirme sind alle im Traktor bzw. in der

Landmaschine fest integriert. Hierbei liegt der Vorteil in einem mobilen Endgerät.

Diese mobilen Geräte sind leicht und können mit einer KFZ-Halterung innerhalb einer

Fahrerkabine mühelos angebracht werden. Somit ist die Überlegung bzw. das Ziel,

dem Fahrer nur ein einziges Tablet zur Verfügung zu stellen, welches er für

unterschiedliche Aufträge und Arbeitsvorgänge in unterschiedlichen Traktoren bzw.

Fahrerkabinen einsetzen kann.

Page 27: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

3.2 Möglichkeiten und Alternativen

20

Derzeit gibt es nur eine Entwicklung von der Firma Claas mit dem Namen „Class UT

App“, die ebenfalls die Strategie ansetzt, ISOBUS-Daten auf einem Tablet zu

empfangen und zu verwalten. Das Produkt befindet sich derzeit jedoch noch in der

Entwicklungsphase und steht nur für Apple-Tablets zur Verfügung.

3.2 Möglichkeiten und Alternativen

Es gibt verschiedene Systeme, mit denen die Datenerfassung von CANBUS/

ISOUBS-Daten möglich ist, sowohl in der Übertragungstechnik als auch im

Hardware- und Software/Betriebssystem-Bereich. In diesem Teilabschnitt sollen die

möglichen Varianten aufgezeigt und verglichen bzw. bewertet werden.

3.2.1 Übertragungstechniken

Als Übertragungstechniken sind prinzipiell zwei Varianten möglich. Zum einen die

kabelgebundene Übertragungstechnik und zum anderen die Übertragung auf Basis

von Funktechnik. In diesem Abschnitt werden nur die Möglichkeiten der Funktechnik

aufgezeigt, denn eine der Grundvoraussetzungen des Projekts ist die Verwendung

der kabellosen Datenkommunikation.

Infrarot:

Mit Hilfe einer Infrarot-Schnittstelle ist es möglich, Daten zwischen zwei Geräten zu

übertragen. Die „Infrared Data Association“ (IrDA) hat hierzu eine Standardisierung

von Infrarot-Transceivern und Protokollspezifikationen etabliert. Dabei ist nach

heutigem Standard nicht nur die „Serial Infrared“-Spezifikation mit einer geringen

Übertragungsgeschwindigkeit gegeben, sondern auch die „Ultra Fast Infrared“-

Spezifikation mit 96 Mbit/s oder Giga-IR mit 1Gbit/s. Die Infrarot-Übertragungsart hat

jedoch einige gravierende Nachteile: Zum einen sind die heutigen Geräte

(Smartphones & Tablets) selten mit einer Infrarot-Schnittstelle ausgestattet und zum

anderen besteht eine geringe Datenübertragungsreichweite von nur einigen Metern.

Des Weiteren ist ein ständiger Sichtkontakt zwischen den zwei Geräten von Nöten.

[12]

Page 28: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

3.2 Möglichkeiten und Alternativen

21

WLAN:

Das WLAN als Funkübertragungstechnik zählt gegenüber der Infrarot-

Übertragungstechnik zu der bevorzugteren Variante. WLAN kann in zwei

verschiedenen Modi geführt werden: 1. Infrastruktur-Modus, bei dem ein „Wireless

Access Point“ als zentrale Stelle agiert und eine Koordination und Kommunikation für

mehrere Geräte (WLAN-Clients) bereitstellt. 2. „Ad-hoc-Modus“. In diesem Modus

gibt es keine koordinierende Master-Einheit, sondern die Funkübertragungs-

koordination erfolgt auf den jeweiligen Geräten selbst. Solch ein Funknetzwerk wird

mit einer sehr geringen Anzahl an Teilnehmern betrieben. Oft wird ein Ad-hoc-

Netzwerk zur Kommunikation von nur zwei Geräten verwendet. [13]

Bluetooth:

Mittels der Funkübertragungstechnik Bluetooth steht ebenfalls eine Kommunikations-

schnittstelle sowohl für Kleingeräte wie Mobiltelefone, Tablets oder PDAs als auch für

Computer und Peripheriegeräte zur Verfügung. Diese Technik erlaubt verbindungs-

lose sowie verbindungsbehaftete Übertragungen von Punkt zu Punkt mit einer der-

zeitigen maximalen Reichweite von ca. 100m. Bluetooth bietet im Schnitt eine Daten-

übertragungsrate von 1 bis 2Mbit/s, abhängig vom gewählten Modus. Ein großer

Vorteil gegenüber WLAN ist die geringe Leistungsaufnahme bei Bluetooth. [14]

Die Tabelle 3.1 stellt eine Übersicht dar.

Klasse Max. Leistung Max. Leistung Reichweite

allgemein

Reichweite

im Freien

Klasse 1 100 mW 20 dBm ca. 100 m ca. 100 m

Klasse 2 2,5 mW 4 dBm ca. 10 m ca. 50 m

Klasse 3 1 mW 0 dBm ca. 1 m ca. 10 m

Tabelle 3.1 – Bluetooth Klassen mit entsprechender Leistung und Reichweite

Page 29: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

3.2 Möglichkeiten und Alternativen

22

3.2.2 Hardware und Software

Tablet & Smartphone-Hardware:

Zurzeit gibt es eine Vielzahl an verfügbaren mobilen Geräten und die Menge nimmt

stetig zu, wohingegen der Computerabsatzmarkt teilweise sinkt bzw. stagniert. Die

vier bekanntesten Betriebssysteme die sowohl für Smartphones als auch für Tablets

zur Verfügung stehen sind: Android von Google, iOS von Apple, BlackBerry10 von

BlackBerry (ehemals „Research in Motion“) und Windows Phone von Microsoft.

Diese Betriebssysteme unterstützen in der Funkübertragungstechnik sowohl WLAN

als auch Bluetooth. Des Weiteren bieten die Geräte die Mobilfunktechnik (GPRS,

UMTS und teilweise auch schon LTE) für Telefonie und Internet / Datenübertragung.

Die Bedienung erfolgt über einen berührungsempfindlichen Bildschirm (Touch

Screens).

Zu unterscheiden sind die mobilen Geräte bezüglich ihrer Betriebssysteme sowohl in

der Anwendung, als auch in der Entwicklung von Anwendungen (Apps) für diese

Geräte. Nicht nur der Aspekt der Entwicklung sondern auch die größtmögliche

Verbreitung der Anwendung steht für das Entwicklerteam im Vordergrund. Dabei ist

das Android-Betriebssystem mit mehr als 74% Marktanteil derzeitiger Marktführer bei

Smartphones und 67% Marktanteil bei Tablets. [15] [16]

Abb. 3.1 – Betriebssystem-Marktanteile bei Smartphones

Abb. 3.2 – Betriebssystem-Marktanteile bei Tablets

Page 30: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

3.2 Möglichkeiten und Alternativen

23

CANBUS/ISOBUS-Hardware:

Schaut man sich auf dem Markt um, so gibt es nicht viele aber doch einige

Komponenten, die CANBUS-Daten entgegennehmen und weiterreichen können. Es

gibt sie in den Varianten CANBUSBluetooth, CANBUSWLAN, CANBUSLAN,

CANBUSUSB und CANBUSRS232. Hierbei gibt es auch verschiedene

Ausführungen, wie z.B. kleine Komponenten für den Bastlerbereich mit geringen

Kosten oder ausgereifte „Embedded-Boxen“, die in der Industrie und vor allem im

Außenbereich eingesetzt werden und preislich ein hohes Niveau aufzeigen. In

diesem Bereich spielt auch die Schutzart der elektronischen Geräte eine wichtige

Rolle, die einen Schutz des Gerätes gegen Fremdkörper (körnige Fremdkörper,

Staub und Wasser) aber auch den Schutz gegen Berührung durch den Menschen

(Finger, Werkzeug oder Draht) gewährleisten soll.

Eine geringe Auswahl an möglicher, zur Verfügung stehender Hardware soll kurz

aufgezeigt werden.

WLAN-Boxen:

CAN-Bus Ethernet / WLAN Gateway

CAN2Web Advanced [17]

Avisaro WLAN Device

CAN mit D-Sub [18]

CANlink WLAN [19]

Page 31: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

3.2 Möglichkeiten und Alternativen

24

Bluetooth-Boxen:

C2BT2 - CAN Bluetooth

Adapter mit 9-pol. D-Sub [20]

BlueDash ECU [21]

(Derzeit in Entwicklungsphase von

der „University of Modena and Reggio

Emilia“ in Italien)

CANlink Bluetooth [22]

Alternative Variante zum eigenen Entwickeln eines CANBUS-Transceivers:

Der Einplatinencomputer “Raspberry Pi” mit ARM-Architektur und Linux als

Betriebssystem. Als Erweiterungsaufsteckmodul zur Erfassung von CANBUS-Daten

kommt ein PICAN-Modul zum Einsatz. Für die Funkübertragung kann ein WLAN-

oder ein Bluetooth-Dongle verwendet werden.

Page 32: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

25

4 Konzeption

In Kapitel 3 wird eine Analyse des Produkts „farmpilot“ und die grundsätzlich

gegebenen Möglichkeiten und Alternativen bezüglich der CANBUS-Hardware und

der mobilen Geräte zur CANBUS-/ISOBUS-Datenerfassung durchgeführt. Der

Abschnitt Konzeption beschäftigt sich mit der konkreten Frage der Machbarkeit (das

Ob) und der Realisierung (das Wie) bezüglich der ISOBUS-Datenerfassung und

Datenverwaltung als Teilprojekt des Produkts „farmpilot“. Es erfolgt eine Analyse

sowohl der konzeptionellen als auch der technischen Anforderungen und eine

detaillierte Analyse der ISOBUS-Telegramme, welche das Fundament dieser

Masterarbeit bilden.

4.1 Anforderungen

Das Projekt weist konzeptionelle und technische Anforderungen auf, die in diesem

Abschnitt aufgezeigt werden. Grundsätzlich wird das Projekt bzw. die Anwendung als

Prototyp realisiert, welches als Grundlage für weitere Projekte herangezogen werden

soll.

4.1.1 Konzeptionelle Anforderungen

Folgende Anforderungen werden dabei festgelegt:

Erfassung der ISOBUS-Daten im „only read“- Modus

Selektives Erfassen der gefilterten Daten

Zugriff auf die Datenbank für externe Apps ermöglichen

Anmeldung und aktive Beteiligung am Bussystem

Anwendung soll als Hintergrundprozess agieren

Erfassung der ISOBUS-Daten im „only read“- Modus

Eines der wichtigsten Anforderungen ist das grundsätzliche Erfassen der ISOBUS-

Daten. Dabei soll die Möglichkeit gegeben werden, im „only read“ – Modus auf dem

ISOBUS-Netzwerk zu lauschen und die Telegramme entgegen zu nehmen.

Page 33: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

4.1 Anforderungen

26

Selektives Erfassen der gefilterten Daten

Beim Empfang der Daten erhält der Anwender (Fahrer) die Möglichkeit, eine Auswahl

treffen zu können, welche ISOBUS-Daten für ihn relevant sind und welche er

diesbezüglich Speichern möchte. Es wird somit ein Filter-System integriert, mit dem

der Fahrer die Verwaltung der Telegrammart ( auch „Parameter Group Number“

genannt) pflegen kann. Eine genaue Erläuterung zu den Telegrammen erfolgt im

Kapitel 4.3 „Analyse der ISOBUS-Nachrichten“.

Zugriff auf die Datenbank für externe Apps ermöglichen

Die empfangen Daten werden in einer Datenbank in der Form abgespeichert, so

dass eine externe App einen lesenden und löschenden Zugriff auf die Datenbank

erhält. Hierbei ist zu beachten, dass der Zugriff auf die Datenbank sowohl von einer

nativen App als auch von einer App, die auf „Apache Flex“-Basis beruht, möglich ist.

Anmeldung und aktive Beteiligung am Bussystem

Als weitere Anforderung gilt die Anmeldung und aktive Beteiligung am Bussystem.

Hierbei soll das mobile Gerät nicht nur im „read only“-Modus lauschen, sondern sich

auch an das Bussystem anmelden und eine eigene eindeutige Adresse erhalten, so

dass das mobile Gerät auch von anderen Busteilnehmern gesehen wird.

Anwendung soll als Hintergrundprozess agieren

Eine weitere Vorgabe ist die Entwicklung der Anwendung solcherart, dass dem

Anwender für das Starten und Konfigurieren der Anwendung ein grafische

Benutzeroberfläche zur Verfügung steht. Anschließend wird in laufenden landwirt-

schaftlichen Betriebsvorgängen die Anwendung als „Background Process“ im

Hintergrund durchgeführt und die ISOBUS-Daten werden den externen

Anwendungen bereitgestellt.

Page 34: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

4.1 Anforderungen

27

4.1.2 Technische Anforderungen

Folgende Anforderungen werden dabei festgelegt:

Funkbasierte Kommunikation zwischen Transceiver und mobilem Gerät

CANBUS-Embedded-Komponente zur bidirektionalen Kommunikation

Flexible Verwendung des mobilen Geräts in unterschiedlichen Traktoren

Einhaltung der Schutzart bei der CANBUS-Komponente

Funkbasierte Kommunikation zwischen CANBUS-Komponente und mobilem

Gerät

Eine der wichtigsten Vorgaben beim Erfassen der CANBUS-/ISOBUS-Daten ist die

kabellose Kommunikation zwischen der CANBUS-Komponente und dem mobilen

Gerät. Triftige Gründe dafür sind die Vermeidung von unnötigen Kabelverlegungen,

und möglichen Kabelbrüchen sowie das plötzliche Loslösen der Kabel an den

Komponenten. Des Weiteren ist an den mobilen Geräten meistens nur eine USB-

Stecker-Verbindung für die Datenübertragung gegeben. Oft wird die USB-Buchse für

die Stromversorgung benötigt und steht somit nahezu gar nicht für Daten-

übertragungen innerhalb des Traktors zur Verfügung. Des Weiteren gibt es derzeit

keinen Standard bzw. keine Norm für eine funkbasierte ISOBUS-Kommunikation mit

mobilen Geräten.

CANBUS-Embedded-Komponente zur bidirektionalen Kommunikation

Die CANBUS-Komponente soll ein kompaktes, eingebettetes System aufweisen.

Dabei soll die Kommunikation mit dem CANBUS-Bussystem kabelgebunden und auf

der anderen Seite die Kommunikation mit dem mobilen Gerät funkbasiert erfolgen.

Des Weiteren soll auf beiden Kommunikationskanälen eine bidirektionale

Datenübertragung stattfinden, d.h. das eingebettete System kann in beide Rich-

tungen sowohl Daten senden als auch empfangen.

Page 35: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

4.1 Anforderungen

28

Flexible Verwendung des mobilen Geräts in unterschiedlichen Traktoren

Das Anzeige- und Bediengerät wird innerhalb einer Fahrerkabine so angewendet

bzw. angebracht, dass während der Fahr- und Arbeitsvorgänge das Gerät in der

Fahrerkabine fest verankert ist und sich einwandfrei bedienen lässt. Der Fahrer soll

jedoch die Möglichkeit haben, ein einziges mobiles Gerät auch auf anderen

Traktoren für seine Arbeitsvorgänge verwenden zu können. Dies setzt voraus, dass

auf jedem Traktor, bei dem das mobile Gerät eingesetzt werden soll, stets eine

eigene CANBUS-Komponente auf dem Traktor fest installiert werden muss.

Einhaltung der Schutzart bei der CANBUS-Komponente

Weil die CANBUS-Komponente stets in der Fahrerkabine mitgeführt wird, soll das

Gerät mindestens eine Schutzart von der Kategorie IP65 aufweisen.

Dies bedeutet, dass das Gerät staubdicht gegenüber Fremdkörpern sein muss und

einen vollständigen Schutz der innenliegenden elektronischen Komponenten vor

menschlichen Berührungen und gegen Strahlwasser aus jedem beliebigen Winkel

aufweisen muss.

Page 36: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

4.2 Analyse der Technik & Entscheidungsfindung

29

4.2 Analyse der Technik & Entscheidungsfindung

In diesem Abschnitt erfolgt die Analyse der Technik bezüglich Ihrer Vor- und

Nachteile sowie ihrem Einsatzzweck und die anschließende Entscheidungsfindung

zu den Komponenten.

4.2.1 Analyse: mobile Geräte

Bei der Auswahl von mobilen Geräten kommt es zum einen auf die Art (Smartphone

oder Tablet) und die Größe (Maße des Gehäuses und der Bildschirmgröße) des

Geräts und zum anderen auf das einzusetzende Betriebssystem und die

Entwicklungssprache an.

Art & Maße des mobilen Geräts

Als mobile Geräte stehen sowohl Smartphones als auch Tablets von mehreren

Herstellern in verschiedenen Größen, Funktionen und Betriebssystem zur Auswahl.

Nahezu alle Geräte weisen die Mindestanforderungen WLAN, Bluetooth und den

Mobilfunkstandard der dritten Generation UMTS auf. Die Smartphone-Variante bietet

mit den kompakteren Größen eine bessere Mobilität gegenüber Tablets. Die

Bildschirmgrößen der Smartphones sind jedoch oft zu klein, so dass eine optimale

Lesbarkeit und Bedienung durch den Fahrer innerhalb der Fahrerkabine nicht

gegeben ist. Hierbei stellen die Tablets den entscheidenden Vorteil. Diese bieten die

gleichen Funktionen aber mit größeren Bildschirmdiagonalen von 7 Zoll (17,78 cm)

bis 10,1 Zoll (25,65 cm).

Betriebssystem & Entwicklungssprachen

Die vier am weitesten verbreiteten Betriebssysteme auf dem Smartphone- und

Tablet-Markt sind Android, iOS, Windows Phone und BlackBerry. Bezogen auf den

Marktanteil bei den Tablets stechen Android mit 67,0% und iOS mit 28,3% hervor.

Für das Entwicklerteam sind aber auch die Programmiersprache und die

möglicherweise anfallenden einmaligen oder kontinuierlichen Gebühren für das

Entwickeln und Bereitstellen der Anwendung auf den Verkaufsplattformen relevant.

Page 37: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

4.2 Analyse der Technik & Entscheidungsfindung

30

Das grundsätzliche Entwickeln von Apps ist bei allen Betriebssystemen kostenlos.

Wird eine Anwendung auf der entsprechenden Verkaufsplattform zur Verfügung

gestellt, so sind die Kosten für eine Android-App mit Ausnahme von BlackBerry-Apps

am günstigsten. Google verlangt für die Anmeldung eines Android-Entwicklers bzw.

eines Android-Entwicklerteams am „Google Play Store“ einmalig 25 US-Dollar (ca. 19

Euro) [23], wohingegen Apple eine jährliche Gebühr von 79 Euro für das

Bereitstellen von iOS-Apps im „App Store“ verlangt [24]. Microsofts „Windows Phone

Store“ besitzt eine einmalige Entwicklergebühr von 99 US-Dollar (ca. 73 Euro) [25]

und beim „BlackBerry World“ ist das Bereitstellen einer App derzeit kostenlos [26].

Als Programmiersprache wird Java in Android, ObjectivC in iOS, C# in Windows

Phone und Java ME (Micro Edition) in Blackberry eingesetzt. Java ME ist eine

minimierte Variante von Java, die in etwa Java SE 1.3 entspricht.

Entscheidungsfindung:

Die vielen Vorteile von Android (Marktstellung, Entwicklergebühr, Programmier-

sprache Java, große Anzahl an Tablet-Geräten unterschiedlicher Hersteller, die meist

günstiger sind als die iPads von Apple) führten dazu, dass das Entwicklerteam sich

bereits beim Produkt „farmpilot“ für Android-Tablets entschieden hatte. Diese

Entscheidung wurde somit indirekt auch für dieses Teilprojekt als Anforderung

festgelegt.

4.2.2 Analyse: Funkübertragungstechnik und CANBUS-

Komponente

Bei der Entscheidungsfindung bezüglich des Kaufs einer CANBUS-Komponente

müssen folgende Anforderungen berücksichtig werden: eingebettetes System,

funkbasierte Datenübertragung mit einem Tablet, Einhaltung der Schutzart und

bidirektionale Kommunikation. Hierbei haben sich die Geräte „CANlink Bluetooth“ als

auch „CANlink WLAN“ durchgesetzt, weil diese beiden Geräte alle angegeben

Anforderungen erfüllen.

Da sowohl die CANBUS-Komponente als auch das Tablet sich in der Fahrerkabine

einer Landmaschine befinden werden, ist die Funkübertragungsstrecke auf nur

einige Meter begrenzt. Somit kommt sowohl die WLAN-Variante mit einer großen

Reichweite als auch die Bluetooth-Variante mit einer geringeren Funkübertragungs-

Page 38: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

4.2 Analyse der Technik & Entscheidungsfindung

31

strecke als Einsatzmöglichkeit in Frage. Hinsichtlich der Datenübertragungs-

geschwindigkeit sind ebenfalls beide Varianten geeignet, weil die Datenrate auf dem

ISOBUS-System 250kbit/s beträgt. Bluetooth 2.0 erreicht 2Mbit/s und WLAN 802.11g

bis zu 54Mbit/s.

Die „CANlink WLAN“-Komponente weist einige Nachteile auf. Dieses Gerät bietet

zwei verschiedene Betriebsarten an: „Access-Point-Modus“ und „Add-hoc-Modus“.

Beim Access-Point-Modus ist eine zusätzliche Komponente in der Fahrerkabine

nötig, die als Vermittlerstelle (Access-Point) für die CANBUS-Komponente und das

Tablet agieren muss. Der Add-hoc-Modus bietet eine Möglichkeit der Direkt-

kommunikation zwischen zwei Geräten, jedoch wird der Modus derzeit nicht vom

Android-Betriebssystem unterstützt. Ein weiterer, nicht unwichtiger Nachteil bezüglich

der WLAN-Variante besteht darin, dass der Traktor-Fahrer das Tablet-Gerät in

gewissen Situationen an andere WLAN-Stationen einbinden muss, um entsprech-

ende Daten an andere Landmaschinen oder an Industrieanlagen zu übertragen.

Hierbei müsste die CANBUS-Datenerfassung vom Fahrer stets unterbrochen

werden. Durch die Verwendung der „CANlink Bluetooth“-Komponente muss die

CANBUS-Datenerfassung nicht unterbrochen werden, weil die Bluetooth-Kommuni-

kationsschnittstelle nur für diese Anwendung zur Verfügung steht. Bluetooth stellt

somit einen eigenständigen für die Anwendung abgekoppelten Übertragungskanal

dar und die WLAN-Kommunikationsschnittstelle ist weiterhin frei verfügbar.

Die Kostenfrage ist ebenfalls ein Vorteil für „CANlink Bluetooth“. Mit einem Starterkit-

Preis von ca. 400€, ist es gegenüber „CANlink WLAN“ (Starterkit-Preis ca. 600€)

kostengünstiger und die Leistungsaufnahme bei der Bluetooth-Übertragungstechnik

ist geringer.

Entscheidungsfindung:

Aufgrund der Gegebenheit, dass sowohl WLAN als auch Bluetooth für den

Einsatzzweck der ISOBUS-Datenerfassung geeignet sind und die Bluetooth-Variante

einige Vorteile gegenüber der WLAN-Variante aufzeigt, fällt die Entscheidung zur

Verwendung einer CANBUS-Komponente auf das Produkt „CANlink WLAN“ von der

Firma RM Michaelides Software & Elektronik GmbH.

Page 39: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

4.3 Analyse der ISOBUS-Nachrichten

32

4.3 Analyse der ISOBUS-Nachrichten

Um Information und Daten innerhalb des Projekts empfangen, interpretieren und

auch versenden zu können, muss der grundlänge Aufbau einer ISOBUS-Nachricht

verstanden werden. In diesem Abschnitt erfolgt eine Analyse der ISOBUS-

Telegramme.

Die Abbildung „Abb. 4.1“ verdeutlich grafisch den Nachrichtenaufbau des Netzwerk-

protokolls.

Abb. 4.1 - Detailierte Aufsplittung vom CAN-Identifier

Eine vollständige Nachricht bestehend aus den Verwaltungsinformationen (Identifier)

und den Daten (Data) wird „protocol data unit“ (PDU) genannt. Diese besteht aus

einem 29bit Identifier und dem anschließenden Datenbereich mit maximal 64bit.

Im Identifier werden die Informationen darüber festgehalten, um welche

Nachrichtenart es sich handelt, welche Informationen im Datenfeld übermittelt

werden, wer der Versender der Nachricht ist, wer die Nachricht erhalten soll und

welche Priorität die gesendete Nachricht aufweist. Im Data-Feld stehen dann die

relevanten Informationen wie z.B. die Geschwindigkeit des Traktors.

Die Nachricht (PDU) besteht aus sieben vorgegebenen Feldern:

- Priorität - Extended Data Page (EDP) - Data Page (DP)

- PDU Format (PF) - PDU Specific (PS) - Source Address (SA)

- Data

Page 40: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

4.3 Analyse der ISOBUS-Nachrichten

33

Priorität EDP DP PF PS SA Data

Byte Nr.: 1 2 3 4 5

Anzahl

verwendeter

Bits:

3 1 1 8 8 8 64

Tabelle 4.1 – Byte-Belegung der entsprechenden Felder

Priorität:

Das erste Byte des Identifiers beinhaltet die Informationen über die Priorität. Es

werden nur die ersten drei Bits benötigt und die restlichen Bits von 4 bis 8 werden

verworfen. Die Prioritäten-Bits werden verwendet, um eine optimale Nachrichten-

latenz bei der Übertragung zu gewährleisten. Die höchste Priorität hat den Wert 0

(0002) und den niedrigsten Wert 7 (1112). Für Kontrollnachrichten ist der Default-Wert

3 (0112) und für alle restlichen Nachrichten der Default-Wert 6 (1102) definiert.

Extended Data Page (EDP):

Das EDP-Bit wird in Verbindung mit dem DP-Bit (Data Page) zur Festlegung der

Struktur des CAN Identifier innerhalb des CAN Data Frame verwendet. In allen

Nachrichten der Norm ISO 11783 ist die Null standardmäßig festgelegt. Für

zukünftige, mögliche Änderungen ist der Wert Eins zusätzlich von der Norm ISO

11783 reserviert. Die Tabelle 4.2 zeigt eine Beschreibung der Verwendung von EDP

und DP. Der EDP-Wert wird im zweiten Bit des zweiten Bytes festgehalten.

EDP

Bit 25

DP

Bit 24

Beschreibung / Verwendung

0 0 ISO 11783 PGN-Seite 0

0 1 ISO 11783 PGN-Seite 1

1 0 Reserviert für ISO 11783

1 1 ISO 15765-3

Tabelle 4.2 – Verwendung der EDP- /DP-Werte

Page 41: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

4.3 Analyse der ISOBUS-Nachrichten

34

Data Page (DP):

In der Data Page wird die Seitenzahl festgelegt. Die Seitenzahl definiert das im

Identifier ausgewählte PDU Format. Der DP-Wert ist im ersten Bit von Byte 2

eingetragen. Die Abbildungen „Abb. 4.2“ und „Abb. 4.3“ sollen das Zusammenspiel

von EDP und DP verdeutlichen. „Abb. 4.2“ stellt dabei das PDU1 und „Abb. 4.3“ das

PDU2 Format dar.

Abb. 4.2 – Beschreibung des PDU1 Formats

PDU Format (PF) und PDU Specific (PS):

Das PDU Format verwendet insgesamt die vollen 8 Bit des dritten Bytes. Mit den 8

Bit ist ein Wertebereich von 0 bis 255 gegeben. In der Norm ISO 11783 wird der PF-

Wertebereich in zwei Bereiche von 0 bis 239 und von 240 bis 255 eingeteilt. Der

erste Teilbereich signalisiert, dass es sich um das PDU1 Format handelt und somit

das 4. Byte im Identifier, also das „PDU Specific“-Byte, für eine bestimmte

Zieladresse (Destination Address – DA) reserviert / verwendet wird. Dieses wird auch

als „PS(DA)“ in Abbildung „Abb. 4.2“ angezeigt.

Befindet sich der Wert des PF-Bytes jedoch im zweiten Teilbereich (zwischen 240

und 255), so handelt es sich hierbei um ein PDU2 Format. In diesem Fall beinhaltet

das „PDU Specific“-Byte keine Zieladresse, sondern wird als „erweiterter

Informationsbereich“ (Group Extension – GE) verwendet, welcher weitere Auf-

schlüsse über die Nachricht geben soll. Beim PDU2 Format handelt es sich um eine

Broadcast-Nachricht, die global an alle Teilnehmer gerichtet ist. Somit wird keine

Page 42: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

4.3 Analyse der ISOBUS-Nachrichten

35

Zieladresse benötigt. Die Abbildung „Abb. 4.3“ zeigt das „PDU2 Format“ auf, in der

„Group Extension“ als „PS(GE)“ dargestellt wird.

PDU Format PF PS

PDU 1 0 bis 239 Destination Address (DA)

PDU 2 240 bis 255 Group Extension (GE)

Tabelle 4.3 – Bedeutung der PDU Formate

Für das PDU1 Format sind insgesamt 2 x 240 = 480 verschiedene Zahlenkom-

binationen bzw. Nachrichtenvarianten möglich. Das PDU2 Format definiert 2 x 16 x

256 = 8192 Varianten von Nachrichten.

Abb. 4.3 - Beschreibung des PDU2 Formats

Zur vereinfachten Definition und Unterscheidung der Nachrichten und zur besseren

Handhabung der Nachrichten wird die „Parameter Group Number“ (PGN) definiert.

Für das PDU1 Format bildet sich die PGN aus den Bytes/Feldern von EDP, DP und

PF. Für das PDU2 Format bildet sich die PGN aus den Feldern EDP, DP, PF und

PS.

Die gesamte Anzahl an möglichen PGNs entspricht somit 8672 (480 PGNs für PDU1

und 8192 PGNs für PDU2).

Page 43: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

4.3 Analyse der ISOBUS-Nachrichten

36

Source Address (SA):

Im sechsten Byte des Identifiers befindet sich in jeder Nachricht die Source Address.

Dies ist die eindeutige Adresse des Senders. Insgesamt sind 255 SA’s möglich.

Mit den gegebenen Informationen über den Aufbau der ISOBUS-Nachricht kann das

Empfangen und Interpretieren präzise durchgeführt werden.

Page 44: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

4.4 Entwurf

37

4.4 Entwurf

Anhand der definierten Anforderungen und der durchgeführten Analyse wird ein

Entwurf des Projekts zur Erfassung und Interpretierung von ISOBUS-Daten

konzeptioniert. Der Entwurf beschäftigt sich hauptsächlich mit der Entscheidung, wie

die Anforderungen optimal umgesetzt werden können. Das Projekt stellt dabei ein

Teilprojekt des Produkts „farmpilot“ dar, welches die Daten dem Produkt „farmpilot“

zur Verfügung stellt.

Die Basis zur Entwicklung der Anwendung erfolgt auf dem Betriebssystem Android

und einem Android-Tablet der Marke „Samsung Galaxy Tab 10.1“, welcher innerhalb

des „farmpilot“-Produkts als Referenzgerät für die Entwicklung verwendet wird und

auch den Landwirten für „farmpilot“-Testphasen vom Unternehmen für drei Monate

bereitgestellt wird. Auf die Android Entwicklung wird im Kapitel 5.1.2 „Eingesetzte

Technologien“ genauer eingegangen.

4.4.1 Technischer Aufbau

Der technische Aufbau der Hardwarekomponenten besteht aus dem CANBUS-

Bussystem, an dem mehrere CANBUS-Teilnehmer angeschlossen sein können. Als

wichtige Teilnehmer zählen der Jobrechner, der für das Kommunikations-

management innerhalb des Bussystems zuständig ist und der „Virtual Terminal“,

welcher als Bildschirm und Bedienfeld für den Fahrer agiert. An das CANBUS-

Bussystem erfolgt ein kabelgebundener Anschluss des „CANlink Bluetooth“-Geräts.

Die Kommunikation zwischen CANlink und dem Android-Tablet wird mittels der

funkbasierten Variante per Bluetooth realisiert. In der Abbildung „Abb. 4.4“ wird der

technische Aufbau grafisch dargestellt.

CANBUS -

Bussystem

Virtual Terminal

(Bildschirm)

Jobrechner

CANBUS-

Teilnehmer

1

WeitereCANBUS-Teilnehmer

CANBUS-

Teilnehmer

2

CANBUS-

Teilnehmer

n

kabelgebunden

kabelgebunden

kabelgebunden

CANlink

Bluetooth

kabelgebunden

(hier RS232)

...

Android-

TabletBluetooth

Abb. 4.4 – Systemkomponenten und Kommunikation

Page 45: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

4.4 Entwurf

38

4.4.2 Datenkommunikation Bluetooth

Mit dem Produkt „CANlink Bluetooth“ (kurz: CANlink) vom Unternehmen „RM Micha-

elides Software & Elektronik GmbH“ steht zusätzlich eine rudimentäre Beispiel-

Android-Anwendung zur Verfügung. Diese baut auf das von Google freie, bereit-

gestellte Beispiel „BluetoothChat-Example“ auf und gewährleistet einen Verbindungs-

aufbau mit CANlink. Des Weiteren bietet die Anwendung den Kommunikationsaufbau

mit dem CANBUS-Bussystem und dem entgegennehmen von CANBUS-Nachrichten.

Dieses Projekt verwendet die zur Verfügung gestellte Anwendung als Grundbaustein

und realisiert die Kommunikation und Datenerfassung von ISOBUS-Daten als

Erweiterung und nötiger Anpassung der Anwendung.

Android App: RM_BluetoothDemo

Package: rm.bluetooth.demo

RM_BluetoothDemo.java

BluetoothCommunicationService.java

DeviceListActivity.java

Package: rm.lib.bytemode

BmcCanMessage.java

BmCmd.java

BmcOnlineObject.java

BmcReset.java

ByteCommand.java

ByteCommandCallbacks.java

SendSerial.java

4.4.3 Berechnung der ISOBUS-Identifier Komponenten

Um aus dem Empfang von CANBUS-Nachrichten entsprechende ISOBUS-

Information zu erhalten, werden die CANBUS-Nachrichten einzeln entgegengenom-

men und ausgewertet. Diese Berechnung agiert dabei als ein eigenständiger Thread

innerhalb der Anwendung im Hintergrund, ohne dabei sowohl die Bluetooth-

Kommunikation und den damit einhergehenden Datenempfang als auch die GUI-

Ausgabe im Ablauf zu blockieren. Realisiert wird dieser Vorgang mit Hilfe des

Android-Services Konzepts. Im Kapitel 5.2.3 wird die Service-Komponente genauer

erklärt.

Page 46: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

4.4 Entwurf

39

Bei der Berechnung der ISOBUS-Informationen werden die Identifier-Komponenten

„Priorität“, „Extended Data Page“, „Data Page“, „PDU Format“, „PDU Specific“ und

die „Source Address“ ermittelt. Der genaue Vorgang der Berechnung wird im Kapitel

5.3.2 detailliert erläutert.

4.4.4 Datenspeicherung und Bereitstellung

Nach der Berechnung der ISOBUS-Daten werden diese entsprechend verwaltet bzw.

gespeichert. Zur Datenverwaltung wird das relationale Datenbankmana-

gementsystem (DBMS) „SQLite“ verwendet, welches von Android nativ bereitgestellt

wird. SQLite ist speziell für den Einsatz in eingebetteten Systemen entworfen

worden. Die gesamte Datenbank befindet sich dabei in einer einzigen Datei, die auf

dem Android-Gerät gespeichert wird. SQLite ist ein kompaktes, optimiertes,

serverloses („standalone“) Datenbanksystem, welches keine Installation und zentrale

Konfiguration erfordert. Trotzdem unterstützt SQLite einen Großteil der im SQL-92-

Standard festgelegten SQL-Sprachbefehle. Das DBMS erlaubt die zeitgleiche

Nutzung einer Datenbank durch mehrere Anwendungen. Es wird jedoch kein

komplexes Benutzer-Rechte-Management unterstützt. Eine Anwendung hat

entweder Zugriff auf die komplette Datenbank oder gar keinen Zugriff.

In der App soll der Benutzer die Möglichkeit haben entscheiden zu können, ob er alle

ISOBUS-Nachrichten erfassen möchte oder ob er einen „Parameter Group Number“-

Filter verwenden möchte, um nur bestimmte Nachrichten zu verwalten. Entsprechend

diejenigen Nachrichten dessen PGN-Wert im Filter enthalten ist.

Eine weitere Voraussetzung ist der Zugriff auf die ISOBUS-Daten bzw. auf die

SQLite-Datenbank von außen, d.h. sowohl von nativen, externen Android-Apps als

auch der mögliche Zugriff durch eine Anwendung, die mit Apache Flex entwickelt

wird. Weil eine SQLite-Datenbank in den Grundeinstellungen nur einen Zugriff auf

diejenige Anwendung gewährt, in der die Datenbank erzeugt wird, muss diese

Einstellung umkonfiguriert werden, so dass eine Berechtigung und physikalische

Sichtbarkeit im Speicher auch externen Anwendungen zur Verfügung steht.

Page 47: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

4.4 Entwurf

40

Für die grundsätzliche Datenerfassung der ISOBUS-Daten sind zwei

Datenbanktabellen notwendig: „IsobusDataTable“ und „PgnDataTable“.

IsobusDataTable

Spaltenname Typ

_id INTEGER

canid TEXT_TYPE

candata TEXT_TYPE

pgn TEXT_TYPE

infotext TEXT_TYPE

timestamp TEXT_TYPE

PgnDataTable

Spaltenname Typ

_id INTEGER

pgn TEXT_TYPE

infotext TEXT_TYPE

4.4.5 Adressermittlung

Damit das Android-Tablet nicht nur als stiller Lauscher am Netzwerk agieren kann,

sondern auch als Teilnehmer am ISOBUS-Netzwerk für andere Teilnehmer bekannt

ist, ist eine weitere Funktion nötig. Dieser Vorgang wird nach der Norm ISO11783

„Address Claiming“ genannt.

Der Bereich „Source Address“ wird im Identifier der ISOBUS-Nachricht definiert.

Insgesamt sind 254 Teilnehmer an einem ISOBUS-Netzwerk möglich. Jeder dieser

Teilnehmer muss dabei eine eindeutige, an das Gerät vergebene Adresse (Source

Address) verwenden.

Die Funktion soll eine Adressermittlung für das Tablet durchführen. Es wird dazu

nach der Norm zunächst eine Anfrage / Broadcast („Request for Address Claimed“)

an alle Teilnehmer im Bussystem gesendet und diese melden sich mit einer Antwort-

Nachricht („Address Claimed“) am Bussystem. In der Rückmeldung sind die „Source

Adressen“ der anderen Teilnehmer enthalten. Das Tablet führt intern eine Adress-

verwaltungsliste, in der die Teilnehmer, die im Netzwerk vorhanden sind,

festgehalten werden und somit für das Tablet bekannt sind. Das Tablet prüft die

Page 48: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

4.4 Entwurf

41

Adressverwaltungsliste und ermittelt im Anschluss eine freie ISOBUS-Adresse, die

es dem Netzwerk bekannt gibt.

Des Weiteren wird eine Funktion implementiert, so dass das Tablet eine Anmeldung

eines weiteren, neuen ISOBUS-Teilnehmers an das ISOBUS-Netzwerk erkennen

kann. Meldet sich dieser Teilnehmer mit der gleichen Absenderadresse, welches

auch das Tablet besitzt, so ermittelt das Tablet automatisch eine neue, freie „Source

Address“.

Somit werden die Anforderungen an die Mindestfunktionalität des Netzwerk-

managements erfüllt. Die Anforderungen werden zur Erinnerung ein weiteres Mal

aufgelistet.

Auflösung von Adresskonflikten

Laufende Prüfung, ob Steuergeräteadressen in einem Netzwerk doppelt

vergeben sind

Änderung der Steuergeräteadressen zur Laufzeit

4.4.6 Zusammenfassung & Ausschlusskriterium

Die in Kapitel 4.4 „Entwurf“ erläuterten Funktionen decken die geforderten

Anforderungen vollständig ab. In Kapitel 5 „Implementierung“ erfolgt eine detaillierte

Erläuterung der Funktionen. Diese werden mit den dazugehörigen, relevanten Code-

Abschnitten dokumentiert.

Es soll an dieser Stelle darauf hingewiesen werden, dass das Versenden von

CANBUS- / ISOBUS-Nachrichten an das Bussystem durch den Anwender / Fahrer

als Funktion in dieser Anwendung nicht zur Verfügung gestellt wird. Somit gibt es

auch keine Schnittstelle, mit der eine externe App ISOBUS-Daten an diese

Anwendung senden kann.

Die Begründung liegt darin, dass mit dem Senden von Nachrichten auch ein Eingriff

sowohl in die Arbeitsvorgänge als auch die Steuerung von Traktoren bzw.

Fahrkabinen möglich ist. Das Senden von Nachrichten kann somit eine potentielle

Gefahr darstellen und müsste somit von einem Technischen Überwachungsverein

(TÜV) abgenommen werden.

Page 49: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

42

5 Implementierung

Neben der Analyse des bestehenden Prozesses und der Erstellung eines Konzeptes

zur Umsetzung des Projekts „ISOBUS-Datenerfassung“ ist auch die Realisierung

Aufgabe der Masterarbeit. In diesem Abschnitt werden die benötigten Funktionali-

täten und Masken erläutert.

5.1 Organisatorisches

5.1.1 Vorgehensmodell

Beim Unternehmen arvato Systems in der Abteilung NMA-D ist kein spezielles

Vorgehensmodell zur Durchführung von Softwareprojekten vorgeschrieben, sodass

die einzelnen Projektteams selbst entscheiden können, wie sie vorgehen möchten. In

diesem Projekt wird ein iterativ inkrementelles Vorgehensmodell eingesetzt, da es

ideal für die Realisierung dieses Projekts angewendet werden kann.

5.1.2 Eingesetzte Technologie und Werkzeuge

In Kapitel 4.2 „Analyse der Technik & Entscheidungsfindung“ wird erläutert, dass die

Entscheidung bezüglich der Hardware zugunsten eines Android-Tablets als mobiles

Gerät gefallen ist. Das Produkt „farmpilot“ entwickelt seine Anwendung „farmpilot-

App“ ebenfalls auf Basis von Android. Es wird jedoch sowohl für die Desktop-

Variante „farmpilot-Portal“ als auch für die mobile Variante „farmpilot-App“ die

plattformunabhängige Laufzeitumgebung „Adobe Integrated Runtime“ (Adobe AIR)

mit dem Entwicklungsframework Apache Flex und der Programmiersprache

Actionscript eingesetzt. Adobe AIR stellt seine Laufzeitumgebung dem Betriebs-

system Android, BlackBerry und iOS zur Verfügung.

Die Entwicklung dieses Projekt erfolgt nicht auf der Laufzeitumgebung Adobe AIR,

sondern setzt nativ auf Android auf. Als Entwicklungsumgebung wird Eclipse mit dem

Plugin „Android Development Tools“ (ADT) von Google eingesetzt. Die Entwicklung

erfolgt mit der Programmiersprache Java und dem Android SDK, welches

Bibliotheken und APIs von Google und weiteren bekannten Herstellern bereitstellt.

Mit Hilfe dem USB-Treiber und dem „Android Virtual Device“ (AVD), welche im SDK

Page 50: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

5.2 Allgemeine in Android verwendete Techniken

43

Paket enthalten sind, kann direkt auf einem Android-Gerät oder durch die

Verwendung des AVD-Emulators eine Anwendung ausgeführt und getestet werden.

Des Weiteren enthält das ADT-Plugin eine Debuger-Funktion, mit der ein an den

Entwicklungs-PC angeschlossenes Gerät in direkter Kommunikation gedebuggt

werden kann.

5.2 Allgemeine in Android verwendete Techniken

Um den Implementierungsvorgang bezüglich der Android-App-Entwicklung zu

verdeutlichen, werden in diesem Abschnitt die relevanten Android-Techniken kurz

erläutert.

5.2.1 Architektur

Abb. 5.1 – Android Systemarchitektur

Die Systemarchitektur von Android ist in Form eines Schichten-Systems konzipiert.

Die einzelnen Schichten mit Ihren Aufgaben werden nachfolgend erläutert:

Page 51: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

5.2 Allgemeine in Android verwendete Techniken

44

Linux Kernel

Die Basis von Android bildet ein Linux-Kernel. Der Linux-Kernel bildet in der Android-

Architektur die Hardwareabstraktionsschicht und enthält die benötigten Gerätetreiber.

Er ist zuständig für die Prozess- und Speicherverwaltung, stellt Schnittstellen für

Multimediakomponenten und die Netzwerkkommunikation bereit und ist zuständig für

die Energieverwaltung und das Sicherheitskonzept.

Libraries

Die Libraries-Schicht stellt eine große Menge an Standardbibliotheken zur Verfügung

und dient als Schnittstelle zwischen den Android-Anwendungen und dem Linux-

Kernel. Die Bibliotheken werden nativ in C oder C++ entwickelt. Diese stellen alle

erforderlichen Funktionalitäten wie z.B. Datenbank, Multimedia-Verwaltung,

Webzugriff, 2D- und 3D-Grafikbibliotheken etc., den Android-Anwendungen bereit.

Android Runtime

In der „Android Runtime“-Schicht stellt die „Dalvik Virtual Machine“ den Kern der

Laufzeitumgebung dar. Diese ist zuständig für die Interpretierung und Ausführung

der Android-Anwendungen. Android Apps werden in der Programmiersprache Java

entwickelt. Die „Core Libraries“ stellen die nötigen Android-Java-Klassenbibliotheken

dar. Anders als die Java-Virtual-Machine, die auf einem Kellerautomaten basiert,

stellt die Dalvik Virtual Machine eine Registermaschine dar.

Application Framework

Der Anwendungsrahmen stellt einer Anwendung entsprechende Systemklassen zur

Verfügung. Die Systemklassen sind komplett in Java geschrieben und gewähren

einen Zugriff auf Hardwarekomponenten aus der Anwendung heraus. Für die

Entwicklung einer Anwendung stehen dem Entwickler die Systemklassen bereit.

Applications

In der Anwendungsschicht befinden sich sowohl die Grundfunktionalitäten, die

sogenannten Android eigenen Anwendungen wie z.B. Telefonie, Browser,

Adressbuch oder Kalender als auch Drittanbieter-Anwendungen, die sich der

Benutzer nachträglich selber aus dem „Google Play Store“ oder einer anderen

alternativen Plattform herunterladen und installieren kann. In dieser Schicht befinden

sich auch die eigenen, selbstentwickelten Anwendungen.

Page 52: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

5.2 Allgemeine in Android verwendete Techniken

45

5.2.2 Manifest-Datei, Activity & Lebenszyklus

Manifest-Datei

Android ist eine moderne Plattform für komponentenbasierte Anwendungen. Um den

Grundgedanken der Wiederverwendbarkeit von bestehenden Programmen und Pro-

grammteilen optimal zu nutzen und sparsamen Umgang mit verfügbaren Ressourcen

zu gewährleisten, stellt Android eine moderne Plattform für komponentenbasierte

Anwendungen zur Verfügung. Zu den Komponenten zählen „Activity“, „Service“,

„Content Provider“ und noch einige mehr.

Eine Android-Anwendung besteht aus mehreren Komponenten. Die einzelnen

Komponenten werden in einer „Manifest-Datei“ global festgehalten. Die Manifest-

Datei wird automatisch generiert und beinhaltet wichtige Informationen darüber, wie

die Anwendung aufgebaut und ausgeführt wird. Neben dem Eintrag der

Komponenten enthält die Datei den „package“-Namen, mit der eine Anwendung

eindeutig identifiziert wird. Auch der Hinweis auf die zuerst startende Oberfläche

(Main-Activity) und Berechtigungseinträge wie den Zugriff auf entsprechende

Hardwarekomponenten oder die Nutzerfreigabe für andere, externe Anwendungen

werden im Manifest geregelt. Das Listing 5.1 zeigt ein Beispiel solch einer Manifest-

Datei.

Listing 5.1 – Android Manifest-Datei

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="com.example.htchalloworld"

android:versionCode="1"

android:versionName="1.0" >

<uses-sdk

android:minSdkVersion="10"

android:targetSdkVersion="10" />

<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />

<uses-permission android:name="android.permission.BLUETOOTH" />

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<application

android:allowBackup="true"

android:icon="@drawable/ic_launcher"

android:label="@string/app_name"

android:theme="@style/AppTheme" >

<activity

android:name="com.example.htchalloworld.MainActivity"

android:label="@string/app_name" >

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

</application>

</manifest>

Page 53: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

5.2 Allgemeine in Android verwendete Techniken

46

Activity

Die meisten Android-Anwendungen besitzen grafische Benutzeroberflächen, die eine

Interaktion mit dem Benutzer gewähren. Activities dienen in Android zur Darstellung

und Verwaltung solcher Benutzeroberflächen. Activities sind in Android-

Anwendungen kein Muss (Beispiel Android-Services). Ist jedoch eine Interaktion mit

dem Benutzer erforderlich, so ist mindestens eine Activity in der Anwendung

notwendig. Eine Activity bestimmt die Sichtbarkeit der Oberflächenelemete

(Textfelder, Buttons, etc), behandelt Anwendereingaben und liest Eingabefelder aus

und reagiert auf die Auswahl in einem Menü. Eine Activity stellt die Kontrolleinheit

dar, die die entsprechenden Layout-Komponenten und Views verwaltet. Eine Layout-

Komponente ist zuständig für die relative oder absolute Anordnung der View-

Elemente (Oberflächenelemente).

Listing 5.2 – Codebeispiel einer Activity

Activity - Lebenszyklus

Listing 5.3 – Lebenszyklus einer Activity

package com.example.htchalloworld;

import android.os.Bundle;

import android.app.Activity;

public class MainActivity extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

}

Page 54: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

5.2 Allgemeine in Android verwendete Techniken

47

Durch den oben dargestellten Ablauf wird ein optimiertes und performantes

Erzeugen von Activities innerhalb einer Anwendung realisiert. Diese Variante

gewährt einen sparsamen Umgang mit den gegeben Ressourcen, da eine erzeugte

Activity solange wie möglich und solange wie nötig im Speicher gehalten wird und

somit die ressourcenlastige, ständige Erzeugung von Activities größtmöglich

vermieden wird.

5.2.3 Service

Services sind für länger andauernde Tätigkeiten gedacht. Ein Service läuft im

Hintergrund und führt die dem Service zugewiesenen Aufgaben durch. Ein Service

besitzt keine Benutzeroberfläche.

Unter Android gibt es zwei Formen von Services: „Started“- und „Bound“-Service.

Bei einem Started-Service wird der Service von der aufrufenden Anwendung mit dem

Befehl startService() gestartet und läuft im Hintergrund unendlich lange weiter.

Hierbei ist es wichtig, dass eine Anwendung, die beendet werden soll, vorher auch

noch den Service beendet. Der Entwickler ist für die korrekte Beendigung des

Services zuständig. Für gewöhnlich erledigt ein Started-Service eine einzelne

Operation / Aufgabe und liefert keinen Rückgabewert oder Rückantwort zurück. Ein

Service hat die Möglichkeit, sich selbst zu beenden, z.B. wenn er seine Aufgabe

erledigt hat. Ein Beispiel für einen Started-Service wäre ein Download einer Datei.

Nach dem der Download abgeschlossen ist, beendet sich der Service.

Bei einem Bound-Service wird der Service gestartet bzw. „gebunden“, wenn eine

aufrufende Anwendungskomponente bindService() ruft. Der „Client“, der den Service

aufruft, kann dabei ein Teil der Anwendung sein, zu der auch der Service gehört,

aber auch fremde Prozesse dürfen die Funktionen des Service ansprechen. Ein

gebundener Service wird ausgeführt, solange mindestens ein Client mit ihm

verbunden ist. Somit können mehrere Komponenten zur gleichen Zeit an dem

Service gebunden werden. Ist keine einzige Komponente gebunden, so wird der

Service zerstört. Ein Bound-Service bietet eine Client-Server-Schnittstelle, welches

den Anwendungskomponenten eine Interaktion mit dem Service gewährt. Dazu

gehören Anfragen zu senden und Ergebnisse / Rückantworten zurückerhalten.

Page 55: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

5.2 Allgemeine in Android verwendete Techniken

48

Ein Service muss in der Manifest-Datei hinterlegt werden.

Listing 5.4 – Service-Deklaration in der Manifest-Datei

In diesem Projekt wird die Bound-Service-Variante mit Hilfe eines Callback-

Mechanismus für die Kommunikation zwischen Client und Service verwendet. Die

Abbildung „Abb. 5.2“ stellt den Vorgang grafisch dar.

ServiceActivity

Runnable

Handler

MessageBinderService-

Connection

Callback

Übergabe per Binder

Abb. 5.2 – Kommunikation zwischen Activity und Service

5.2.4 SQLite

Für die Speicherung und Verwaltung von wiederholenden und strukturierten Daten

eignet sich idealerweise eine Datenbank. Android stellt dem Entwickler bzw. den

Anwendungen ein Datenbankmanagementsystem SQLite zur Verfügung.

Eine Anwendung mit einer Datenbank verwendet eine Java-Klasse als

Datenbankmanager. Android stellt eine abstrakte Klasse SQLiteOpenHelper bereit.

Die Datenbankmanager-Klasse erbt von der abstrakten Klasse und weiß als

Unterklasse, wie sie die Datenbank erzeugt und wie das Datenbankschema aussieht.

<application

android:allowBackup="true"

android:icon="@drawable/ic_launcher"

android:label="@string/app_name"

android:theme="@style/AppTheme" >

...

<service android:name=".ExampleService" />

...

</application>

Page 56: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

5.2 Allgemeine in Android verwendete Techniken

49

Der Datenbankmanager beinhaltet mindestens den Namen der Datenbank, die

Datenbankversion und die zwei abstrakten Methoden onCreate() und onUpdate().

Für den Zugriff auf SQLite Datenbanken stehen folgende sechs Operationen bereit:

query, rawQuery, insert, update, delete, execSQL.

Um auf die Ergebnisse von Datenbankanfragen zugreifen zu können, bietet die

Android-API das Konstrukt Cursor. Dabei handelt es sich um einen Zeiger auf einen

Datensatz der Ergebnismenge. Hiermit ist es möglich, innerhalb der Ergebnismenge

vor und zurück zu navigieren, die von einem SELECT-Befehl angefragten

Ergebnisdatensätze auszulesen und die Anzahl der Ergebnisdatensätze zu ermitteln.

Des Weiteren ist der Zugriff auf große Ergebnismengen so optimiert, dass die

SQLiteCursor-Implementierung große Ergebnismengen in Teilmengen, sogenannten

Datenfenstern, Schritt für Schritt einliest. Solch eine Vorgehensweise wird auch

„windowing“ genannt.

public class TestDatenbank extends SQLiteOpenHelper {

public static final int DATABASE_VERSION = 1;

public static final String DATABASE_NAME = "test.db";

private static final String TEXT_TYPE = " TEXT";

private static final String COMMA_SEP = ", ";

public TestDatenbank (Context context) {

super(context, DATABASE_NAME, null, DATABASE_VERSION);

}

@Override

public void onCreate(SQLiteDatabase db) {

db.execSQL("CREATE TABLE ...");

}

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion,

int newVersion) {

db.execSQL(("DROP TABLE ...");

onCreate(db);

}

}

Page 57: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

5.2 Allgemeine in Android verwendete Techniken

50

5.2.5 ContentProvider & ContentResolver

Um einen Zugriff auf Datenbankinhalte und Dateien außerhalb einer Anwendung

auch externen Anwendungen zu gewähren, stellt Android dem Entwickler das

Konzept des ContentProvider und ContentResolver zur Verfügung. Eine Anwendung,

die Dateien oder Datenbankinhalte verwaltet und diese anderen Anwendungen

bereitstellt, nennt man Provider und benötigt die Implementierung der

ContentProvider-Klasse. Die anderen, externen Anwendungen stellen die

Konsumenten dar, die einen Zugriff auf den Inhalt der Daten (Datenbankinhalte oder

Dateien) erhalten möchten und somit ein ContentReselver-Objekt instanziieren/

verwenden müssen.

Zur eindeutigen Identifikation eines ContentProviders werden entsprechende

Stammdaten in der ContentProvider-Klasse eingetragen. Dazu zählen die

„Authority“ des Providers und die URI als Einstiegspunkt der verwalteten Inhalte.

Des Weiteren erfolgt ein Eintrag des ContentProvider und dessen zugehörigen

Zugriffsberechtigungen in der Manifest-Datei.

Listing 5.5 - Beispielcode einer ContentProvider-Implementierung

public class TestContentProvider extends ContentProvider {

public static final String AUTHORITY = "com.example.providers.

testcontentprovider ";

public static final Uri CONTENT_URI = Uri.parse("content://" +

AUTHORITY + "/" + DBColumns.TABLE_NAME);

...

...

@Override

public Cursor query(Uri uri, String[] projection, String selection,

String[] selectionArgs, String sortOrder) {

...

return dbController.queryPasser(getContext(), uri,

DBColumns.TABLE_NAME, inWhere, projection, selection,

selectionArgs, null, null, sortOrder);

}

...

@Override

public int delete(Uri uri, String selection, String[] selectionArgs) {

if(selection == null && selectionArgs == null){

return dbController.deleteAllDataInDatabase();

} else {

String idString = selectionArgs[0];

int id = Integer.valueOf(idString);

return dbController.deleteSelectedDataInDatabase(id);

}

}

}

Page 58: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

5.2 Allgemeine in Android verwendete Techniken

51

Listing 5.6 – ContentProvider Eintrag in der AndroidManifest.xml

Für den Datenbankzugriff bietet die Klasse ContentProvider folgende Operationen:

insert(), delete(), update() und query(). Jeder Methode wird mindestens der URI-

Parameter übergeben. Der ContentResolver stellt als Gegenstück die gleichen

Methoden für die externe Anwendung zur Verfügung.

Auch beim Konsumenten erfolgt ein Eintrag der Berechtigungen in der Manifest-

Datei.

Listing 5.7 – Eintrag der Berechtigungen in der Manifestdatei einer externen Anwendung

Ein ContentResolver-Objekt wird innerhalb einer von Context abgeleiteten Klasse

(Activities, Services, etc.) instanziiert und für das Auslesen und Schreiben von Daten

verwendet. Das Listing 5.8 zeigt ein Activity-Beispiel einer externen Anwendung, mit

der die Datenbankinhalte von der Provider-Anwendung gelöscht werden können.

Listing 5.8 – Verwendung des ContentResolver in einer externen Anwendung

...

<provider

android:name=".providers.TestContentProvider"

android:authorities="com.example.providers.testcontentprovider"

android:readPermission="com.example.READ_DATABASE"

android:writePermission="com.example.WRITE_DATABASE" />

...

...

<uses-permission android:name=" com.example.READ_DATABASE " />

<uses-permission android:name=" com.example.WRITE_DATABASE " />

...

public class DeleteDataActivity extends Activity {

public static final String AUTHORITY = "com.example.providers.

testcontentprovider";

public static final String TABLE_NAME = "testTable";

private ContentResolver cr;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_delete_data);

cr = getContentResolver();

}

public void onClickButtonDeleteAllEntries(View view) {

Uri uri = Uri.parse("content://" + AUTHORITY + "/" +

TABLE_NAME);

cr.delete(uri, null, null);

}

}

Page 59: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

5.3 Implementierung der ISOBUS-Reader App

52

5.3 Implementierung der ISOBUS-Reader App

In diesem Abschnitt der Masterarbeit werden die relevanten Applikationen und

Masken der ISOBUS-Reader App detailliert erläutert und mit entsprechenden kurzen

Quellcode-Ausschnitten dokumentiert.

Die Implementierung der Anwendung besteht aus vier wesentlichen Teilbereichen:

ISOBUS-Daten Empfang und Berechnung

ISOBUS-Daten Verwaltung mit SQLite

ISOBUS-Daten Bereitstellung für externe Anwendungen

ISOBUS-Adressermittlung und Verwaltung

5.3.1 Grafische Benutzeroberflächen und Ablauf der

Anwendung

Der Startbildschirm ist die erste Activity, die der Benutzer beim Starten der

Anwendung angezeigt bekommt. In dieser wird der Verbindungsaufbau zum CANlink

Bluetooth – Gerät ausgeführt. Dazu klickt der Benutzer auf das Optionsmenü,

welches anschließend in der unteren Ebene als Leiste angezeigt wird. Hierbei sind

drei Einträge zu sehen: „Connect to CANlink Bluetooth“, „Disconnect“ und „Starte

Addressclaiming“. Der Benutzer wählt den Eintrag für den Verbindungsaufbau,

selektiert das CANlink Bluetooth-Geräte aus der erscheinenden Bluetooth-

Geräteliste und bestätigt die Verbindung mit einem vier-stelligen Passwort.

Ist die Verbindung erfolgreich, so wird dies dem Benutzer mit dem Eintrag

„Verbindungsstatus BT Box: verbunden“ bekanntgegeben und in der rechten oberen

Ecke wird der Name des Bluetooth-Geräts, mit dem das Tablet verbunden ist,

angezeigt.

Des Weiteren werden auf der Startseite in der oberen Hälfte Statusinformationen und

die Buttons „Starte Empfang“, „Stoppe Empfang“ „Alle Daten speichern“, „Zeige

Daten“ und „Testmessage senden“ dargestellt. Nach dem eine Verbindung aufgebaut

ist, kann der Benutzer entscheiden, wann er mit der Speicherung der ISOBUS-

Nachrichten starten und stoppen möchte. Möchte der Anwender nicht nur die PGN-

gefilterten Daten, sondern alle eingehenden Nachrichten abspeichern, so klickt er auf

den Button „Alle Daten speichern“.

Page 60: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

5.3 Implementierung der ISOBUS-Reader App

53

Die Abbildung „Abb. 5.3“ und die Abbildung „Abb. 5.4“ stellen die Screenshots des

Startbildschirm dar.

Abb. 5.3 – Startbildschirm der ISOBUS Reader Anwendung

Abb. 5.4 – Die Anwendung ist mit dem Bussystem verbunden

Sobald der Anwender den Button „Starte Empfang“ ausführt, werden die Nachrichten

in der unteren Hälfte (unter den Buttons) in einer ListView ausgegeben. Dabei

werden die Daten „fließend“ angezeigt, d.h. die aktuellste Nachricht wird als letzte in

der Liste ganz unten aufgeführt und die Liste scrollt bzw. verschiebt sich automatisch

nach unten. Möchte sich der Benutzer einen Eintrag im Detail anschauen, so kann er

das automatische Scrollen beenden, in dem er die fließende Ausgabe mit einer

Berührung auf die ListView anhält.

Page 61: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

5.3 Implementierung der ISOBUS-Reader App

54

Abb. 5.5 – Empfange Nachrichten werden in einer ListView ausgegeben

Ein längeres Drücken auf einen Eintrag öffnet ein Kontextmenü mit der Auswahl

„Details anzeigen“. Wählt der Anwender diesen Eintrag aus, so wird diesem eine

neue Activtiy angezeigt. Auf dieser neuen Anzeige werden die aus der ISOBUS-

Nachricht berechneten Daten (PF, PGU, PGN, DA, GE, SA, EDP, DP) detailliert

aufgezeigt.

Abb. 5.6 – Aufruf des Kontextmenüs zu einem Eintrag

Abb. 5.7 – Detaillierte Ansicht der berechneten Daten zu einer Nachricht

Page 62: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

5.3 Implementierung der ISOBUS-Reader App

55

Möchte der Anwender alle Nachrichten speichern, so wählt dieser den Button „Alle

Daten speichern“ aus. Der Button wechselt seine Beschriftung auf „Gefilterte Daten

speichern“ und bietet nun wieder an, nur gefilterte Daten zu speichern.

Abb. 5.8 – Dynamische Darstellung des Buttons „Gefilterte/Alle Daten speichern“

Möchte der Anwender sich einen Überblick über die in der Datenbank gespeicherten

Daten anzeigen lassen, so wählt er auf dem Startbildschirm den Button „Zeige

Daten“ aus. Anschließend wird dem Benutzer eine Übersichtsseite mit den Buttons

„Daten anzeigen“, „Daten löschen“ und „Verwaltung Datenerfassung“ angezeigt. Zum

Anzeigen der Daten wählt der Benutzer „Daten anzeigen“.

Abb. 5.9 – GUI für die Dateneinsicht und Datenverwaltung

Die aufgezeichneten Daten werden in einer ListView in Tabellenform, entsprechend

der eingehenden Reihenfolge sortiert, ausgegeben.

Abb. 5.10 – Ausgabe der erfassten und berechneten Isobusdaten in einer Tabelle

Page 63: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

5.3 Implementierung der ISOBUS-Reader App

56

Zum Löschen von Datensätzen wählt der Benutzer den Button „Daten löschen“. Es

wird eine weitere Activity angezeigt, in der der Benutzer die Möglichkeit hat alle

Datensätze oder nur einen bestimmten Datensatz zu löschen.

Abb. 5.11 – Eine Maske zum Löschen von Datensätzen

Um nur gefilterte ISOBUS-Nachriten zu erfassen, muss ein entsprechender Filter

bzw. eine Filtermaske gepflegt werden. Diese Verwaltung wird mit dem Button

„Verwaltung Datenerfassung“ aufgerufen. Die Verwaltungsanzeige bietet die Buttons

„PGN eintragen“, „PGNs anzeigen“ und „PGNs löschen“ zur Auswahl an.

GUI für die Verwaltung von PGN-Filtereinträgen

In der Maske „PGN eintragen“ kann eine neue Parameter Group Number als

Filterkriterium eingetragen werden. Zusätzlich kann noch ein Infotext eingegeben

werden.

Abb. 5.12 – Eine Maske zur Erfassung eines PGN-Filterkriteriums

Beim Aufruf des Buttons „PGNs anzeigen“ werden die verwalteten PGNs ebenfalls in

einer ListView in Tabellenform ausgegeben.

Abb. 5.13 – Anzeige der eintragenen PGN-Filterkriterien

Page 64: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

5.3 Implementierung der ISOBUS-Reader App

57

Das Löschen eines oder auch aller PGN-Einträge ist ebenfalls möglich und die

dazugehörige Maske wird mit dem Button „PGNs löschen“ aufgerufen.

Abb. 5.14 – Eine Maske zum Löschen von PGN-Filtereinträgen

Page 65: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

5.3 Implementierung der ISOBUS-Reader App

58

5.3.2 ISOBUS-Daten-Empfang und Berechnung

Die Hauptbenutzeroberfläche bzw. die Startseite der ISOBUS-Reader Anwendung

stellt die Activity „ISOBUS_Reader_Main.java“ dar, die auf der von „RM Michaelides

Software & Elektronik GmbH“ Test-Anwendung „RM Bluetooth Demo“ basiert. „RM

Bluetooth Demo“ basiert ebenfalls auf der von Google bereitgestellten Beispiel-

Anwendung „BluetoothChat“.

Die „ISOBUS_Reader_Main“-Klasse kommuniziert mit der „BluetoothCommuncation-

Service"-Klasse, welches mittels eines Callback-Mechanismus realisiert wird. In

Android können Threads eine Nachrichten-Warteschlange „Message Queue“

besitzen, in der Nachrichten in Form von Message- oder Runnable-Objekten enthalten

sein können. Ein Thread kann somit Ereignisse aus vielen Quellen annehmen und

ein Ereignis nach dem anderen abarbeiten. Mittels eines „Handlers“ hat man die

Möglichkeit, Message- oder Runnable-Objekte in die Message Queue eines Threads

zu stellen. Eine Handler wird in derjenigen Komponente definiert, in der eine

Rückmeldung aus der Hintergrundoperation später verarbeitet werden soll. In diesem

Projekt wird der Handler in der Activity „ISOBUS_Reader_Main.java“ implementiert

und der „BluetoothCommunicationService“-Klasse über dessen Konstruktor bekannt

gegeben.

Das Listing 5.9 zeigt einen Ausschnitt aus der „BluetoothCommunicationService“-

Klasse, in der der eingehende Byte-Stream entgegengenommen und an den Handler

weitergereicht wird.

Page 66: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

5.3 Implementierung der ISOBUS-Reader App

59

Listing 5.9 – Übergabe einer Nachricht an den Handler

Listing 5.10 zeigt den Handler, der als innere Klasse innerhalb von

„ISOBUS_Reader_Main.java“ implementiert wird und die Rückmeldungen

(messages) in einem Switch-Case-Konstrukt verarbeitet. Dabei wird das Message-

Objekt aus der Nachrichtenschlange entgegengenommen und an die Bluetooth-

messageCommand-Klasse (BmCmd) zur weiteren Verarbeitung übergeben.

Listing 5.10 – Handler verarbeitet die Nachrichten aus der Message Queue

Nach der Verarbeitung der Nachricht in der BmCmd-Klasse wird die Nachricht ein

weiteres Mal dem Handler bereitgestellt. Ab diesem Zeitpunkt erfolgt das Berechnen

der ISOBUS-Daten aus der CANBUS-Nachricht.

...

@Override

public void run() {

byte[] buffer = new byte[1024];

int bytes;

// Keep listening to the InputStream while connected

while (mmStayConnected) {

try {

if (mmInStream != null) {

// Read from the InputStream

bytes = mmInStream.read(buffer);

// Send the obtained bytes to the UI Activity

mHandler.obtainMessage(ISOBUS_Reader_Main.MESSAGE_READ, bytes, -1,

buffer).sendToTarget();

} else {

Log.e(TAG, "InputStream ist NULL. Somit kann darauf nicht gelesen

werden.");

}

} catch (IOException e) {

...

}

}

...

}

private final Handler mHandler = new Handler() {

@Override

public void handleMessage(Message msg) {

switch (msg.what) {

...

case MESSAGE_READ:

// Parameter 0 ist das Objekt bzw. das Byte-Array und Parameter

// 1 ist die Länge/Anzahl des Byte-Array

mBmCmd.s8RxData((byte[]) msg.obj, msg.arg1);

break;

...

}

}

};

Page 67: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

5.3 Implementierung der ISOBUS-Reader App

60

1 Bei der Implementierung des Callback-Mechanismus wurde das Implementierungs-Beispiel aus dem Buch „Android

2“ von Arno Becker und Marcus Pant aus dem Kapitel 8.5 Callback-Mechanismen als Grundlage verwendet.

Eine CANBUS-Nachricht wird in folgender Form bereitgestellt:

RDX; 18FD0226; FF 00 03 FF FF FE 54 00

Der erste Abschnitt gibt Information darüber, um was für eine Nachricht es sich

handelt. Der zweite Abschnitt stellt den CAN-Identifier und der dritte das CAN-Data

dar. Die Information „RDX“ bestimmt mit dem ersten Buchstaben die Feedback-

message-Art. R steht für Received. Der zweite Buchstabe beinhaltet die Information

des Frames. In diesem Fall handelt es sich um ein DataFrame. Der dritte Buchstabe

steht für die Art des Identifier. Weil es sich hierbei um ISOBUS-Nachrichten handelt,

ist es stets ein erweiterter 29-Bit-Identifier. Somit steht das X für Extended.

Die Berechnung der ISOBUS-Daten aus den CANBUS-Nachrichten erfolgt in der

„CalculateISOBUSDataService“-Klasse, welche als Bound-Service implementiert

wird. Der Nachrichtenaustausch erfolgt ebenfalls nach einem Callback-Mecha-

nismus, bei dem ein Handler und ein Runnable-Objekt seitens der Activity und ein

Binder-Objekt seitens des Service implementiert1 werden. Die Abbildung „Abb. 5.15“

soll die Implementierung grafisch verdeutlichen.

ServiceActivity

Runnable

Handler

MessageBinderService-

Connection

Callback

Übergabe per Binder

Abb. 5.15 – Implementierung eines Service mit Callback

Page 68: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

5.3 Implementierung der ISOBUS-Reader App

61

Die „CalculateISOBUSDataService“-Klasse beinhaltet einen Binder, der die Methode

calcValueForFlowData() zur Berechnung der Daten bereitstellt. Das Listing 5.11 zeigt

den Aufruf der Methode und die Übergabe des message-Objects innerhalb der

Activity „ISOBUS_Reader_Main.java“.

Listing 5.11 – Callback-Mechanismus: Aufruf der „calcValueForFlowData()“-Methode

mittels des Binders

In der calcValueForFlowData() wird die Dateninformation an eine weitere Methode

„_berechneErgebnis()“ übergeben, die als eigenständiger Thread die Berechnung

durchführt. Anschließend wird dem Runnable-Objekt das Ergebnis der Berechnung

hinzugefügt. Das Runnable-Objekt wird dann mit Hilfe der post-Methode des

Handlers in die Message Queue des Threads gestellt, die der Handler verwaltet.

mRunnable2 selbst ist Teil der Activity und nicht des Service und darf daher auf die

Oberflächen-Komponenten der Activity zugreifen.

private final Handler mHandler = new Handler() {

@Override

public void handleMessage(Message msg) {

switch (msg.what) {

...

case MESSAGE_DISPLAY:

if (printDataOnGui == true) {

if (mBinder != null) {

mBinder.calcValueForFlowData((String) msg.obj);

} else {

Toast.makeText(getApplicationContext(), "Failure: mBinder not

bound.", Toast.LENGTH_LONG).show();

}

}

break;

...

}

}

};

public class CalculateISOBUSDataService extends Service {

private String canMessageString = null;

private ISOBUS_Reader_Main.MeinRunnable mRunnable2;

private final IBinder mBinder = new MeinBinder();

...

public class MeinBinder extends Binder {

public void setActivityCallbackHandler(final Handler callback) {

mCallbackHandler = callback;

}

public void setRunnable2(final ISOBUS_Reader_Main.MeinRunnable runnable) {

mRunnable2 = runnable;

}

...

public void calcValueForFlowData(String canMessageStringTmp) {

canMessageString = canMessageStringTmp;

(weiterer Code auf der nächsten Seite)

Page 69: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

5.3 Implementierung der ISOBUS-Reader App

62

Listing 5.12 – CalculateISOBUSDataSerice: Android-Service zur Berechnung der ISOBUS-

Daten

In der Methode „_berechneErgebnis()“ wird geprüft, ob die „message“ ungleich NULL

ist und anschließend an die „decodeData()“-Methode weitergereicht.

Listing 5.13 – Aufruf der decodeData()-Methode

Nachdem eine Nachricht an die Methode „decodeData()“ übergeben wird, wird diese

Nachricht zunächst einmal mit Hilfe von regulären Ausdrücken überprüft und

anschließend in die Teilstrings für CAN-Identifier und CAN-Data gesplittet. Getrennt

werden die Informationen noch einmal mit regulären Ausdrücken geprüft, ob diese in

Hexadezimaler Form und in der entsprechenden Zeichenlänge für Identifier (8

Zeichen) und Data (16 Zeichen) vorliegen und dann in die Long-Datentypen

überführt. Diese Vorgänge sind sehr trivial, so dass aus Platzgründen kein Code

dazu gezeigt werden soll. Jedoch wird der Code der Berechnung aufgezeigt.

Die Berechnung des Identifiers erfolgt in der Methode calcIsobusId() und die Data-

Informationen in der Methode calcIsobusData().

new Thread() {

public void run() {

if (canMessageString != null) {

_berechneErgebnis(canMessageString);

if (mRunnable2 != null) {

mCallbackHandler.post(mRunnable2);

}

}

}

}.start();

}

}

...

}

private void _berechneErgebnis(String message) {

if (message != null) {

tmpBoolean = decodeData(message);

if (!tmpBoolean) {

Log.e(TAG, "Fehler in der Berechnung. Berechnung wurde für den

fehlerhaften Datensatz abgebrochen.");

}

}

}

Page 70: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

5.3 Implementierung der ISOBUS-Reader App

63

Listing 5.14 - decodeData()-Methode in der Identifier und Data berechnet werden

In calcIsobusId() werden die Werte des Identifiers berechnet. Zu den Werten zählen:

Priorität, Extended Data Page (EDP), Data Page (DP), PDU Format (PF), PDU

Specific (PS) und Source Address (SA). Dabei erfolgt die Berechnung sowohl mit

arithmetischen als auch mit bitweisen Operatoren. Das Listing 5.15 zeigt den Code

zur Berechnung der Daten.

Die berechneten Informationen werden in das detailedData-Objekt von der Klasse

„DetailedIsobusDataStructure“, eingetragen.

private boolean decodeData(String messageUntouched) {

...

tmpBoolean = calcIsobusId();

if (tmpBoolean == false) {

Log.e(TAG, "Fehler in der ID-Berchnung.");

return false;

}

tmpBoolean = calcISOBUSData();

if (tmpBoolean == false) {

Log.e(TAG, "Fehler in der Data-Berchnung.");

return false;

}

...

fillStringVariables();

return true;

}

public boolean calcIsobusId() {

// PDU-Format ermitteln

detailedData.pf = (detailedData.canID / 0x10000) & 0x00FF;

if (detailedData.pf <= 239) {

detailedData.pdu = 1;

} else {

detailedData.pdu = 2;

}

// Ermitteln von source address und destination address/group extension

detailedData.sa = detailedData.canID & 0xff;

if (detailedData.pdu == 1) {

detailedData.da = (detailedData.canID & 0xff00) / 0x100;

detailedData.ge = 0;

} else {

detailedData.da = 0;

detailedData.ge = (detailedData.canID & 0xff00) / 0x100;

}

// Ermitteln der PGN

if (detailedData.pdu == 1) {

detailedData.pgn = (detailedData.canID / 0x100) & 0x3ff00;

} else if (detailedData.pdu == 2) {

detailedData.pgn = (detailedData.canID / 0x100) & 0x3ffff;

}

(weiterer Code auf der nächsten Seite)

Page 71: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

5.3 Implementierung der ISOBUS-Reader App

64

Listing 5.15 – In calcIsobusId() werden die Werte Priorität, EDP, DP, PF, PS und SA aus

dem Identifer berechnet

Das detailedData-Objekt steht mit Hilfe des Handlers anschließend wieder der

Activity „ISOBUS_Reader_Main.java“ zur Verfügung, welches für die Speicherung in

die SQLite Datenbank verwendet wird.

Zusätzlich zur Abspeicherung wird eine Activity zur detaillierten Anzeige der

berechneten Daten implementiert. Hierbei kann ein einzelner Datensatz mit Hilfe

eines Kontextmenüs die Detailansicht aufrufen.

Abb. 5.16 – Detailansicht einer berechneten ISOBUS-Nachricht

...

// Berechnung von edp und dp

tmpLong = ((detailedData.canID / 0x1000000) & 0x03);

tmpInt = (int) tmpLong;

switch (tmpInt) {

case 0:

detailedData.edp = 0; detailedData.dp = 0;

break;

case 1:

detailedData.edp = 0; detailedData.dp = 1;

break;

case 2:

detailedData.edp = 1; detailedData.dp = 0;

break;

case 3:

detailedData.edp = 1; detailedData.dp = 1;

break;

default:

Log.e(TAG, "Fehler beim Bestimmen der EDP und DP.");

return false;

}

// Berechnung der Priorität

tmpLong = ((detailedData.canID / 0x1000000) & 0x1c);

detailedData.priority = (int) (tmpLong >> 2);

return true;

}

Page 72: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

5.3 Implementierung der ISOBUS-Reader App

65

5.3.3 ISOBUS-Daten-Verwaltung mit SQLite

Nachdem eine ISOBUS-Nachricht berechnet ist, wird im nächsten Vorgang die

Sicherung der Daten durchgeführt. Die Datenverwaltung erfolgt dabei parallel zum

Datenempfang und der Datenberechnung.

Der Anwender hat die Möglichkeit, alle empfangenen ISOBUS-Nachrichten in der

Datenbank zu speichern oder nur die ISOBUS-Nachrichten, deren „Parameter Group

Number“ (PGN) im PGN-Nachrichtenfilter enthalten ist. Der PGN-Nachrichtenfilter

stellt aus technischer Sicht eine weitere Datenbanktabelle dar.

In der Activity „ISOBUS_Reader_Main.java“ erfolgt die Implementierung der

Runnable-Klasse als innere Klasse. Diese instanziiert das detailedData-Objekt der

„DetailedIsobusDataStructure“-Klasse und hat Zugriff auf die berechneten Daten.

Listing 5.16 – Aufruf der Speichervorgänge in der „ISOBUS_Reader_Main“-Klasse

public class MeinRunnable implements java.lang.Runnable {

public DetailedIsobusDataStructure detailedData;

List<String> pgnList;

public MeinRunnable() {

pgnList = isoDbController.readPgnDataForFiltering();

}

public void run() {

if (filterActiv) {

saveSelectedDataToDatabase();

} else {

saveAllDataToDatabase();

}

}

private void saveAllDataToDatabase() {

if (detailedData != null) {

isoDbController.insertDataInDatabase(detailedData);

} else {

Log.d(TAG, "Fehler in saveDataToDatabase(). detailedData ist null.");

}

}

private void saveSelectedDataToDatabase() {

if (detailedData != null) {

if (pgnList.contains(String.valueOf(detailedData.pgn))) {

isoDbController.insertDataInDatabase(detailedData);

}

}

}

};

Page 73: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

5.3 Implementierung der ISOBUS-Reader App

66

Sowohl in der saveSelectedDataToDatabase()- als auch in der saveAllDataTo

Database()-Methode wird zum Speichern der Nachricht die Methode insertDataIn

Database(detailedData) ausgeführt. Sollen nur die in der PGN-Liste eingetragen

Nachrichten mit entsprechender PGN gespeichert werden, so wird zuvor die gerade

empfangene und berechnete PNG Nummer mit der PGN-Liste verglichen und ein

Speichern der Nachricht wird gewährt oder die Nachricht verworfen.

Die Speicherung und Verwaltung der ISOBUS-Nachrichten wird im package

„farmpilot.datenerfassung“ implementiert. Das Package beinhaltet folgende Klassen:

„IsobusData.java“, „IsobusDbContract.java“, „IsobusDbHelper.java“ und „IsobusDb

Controller.java“.

Die Klasse „IsobusDbContract“ beinhaltet das Datenbank-Schema (Tabellenname

und Spaltennamen) für die zwei entscheidenden Tabellen: „IsobusDataTable“ und

„PgnDataTable“. Diese werden als innere Contract-Klassen implementiert.

Listing 5.17 – Implementierung des Datenbankschemas in der IsobusDbContract-Klasse

public class IsobusDbContract {

// To prevent someone from accidentally instantiating the contract class,

// give it an empty constructor.

public IsobusDbContract() {

}

/*

* Inner class that defines the table contents.

* http://developer.android.com/training/basics/data-storage/databases.html

*/

public static abstract class DBColumns implements BaseColumns {

public static final String TABLE_NAME = "IsobusDataTable";

public static final String COLUMN_NAME_CAN_ID = "canid";

public static final String COLUMN_NAME_CAN_DATA = "candata";

public static final String COLUMN_NAME_PGN = "pgn";

public static final String COLUMN_NAME_INFOTEXT = "infotext";

public static final String COLUMN_NAME_TIMESTAMP = "timestamp";

// Bytes gelesen von links nach rechts: Byte1 ... Byte8

public static final String COLUMN_NAME_BYTE1 = "byte1";

public static final String COLUMN_NAME_BYTE2 = "byte2";

public static final String COLUMN_NAME_BYTE3 = "byte3";

public static final String COLUMN_NAME_BYTE4 = "byte4";

public static final String COLUMN_NAME_BYTE5 = "byte5";

public static final String COLUMN_NAME_BYTE6 = "byte6";

public static final String COLUMN_NAME_BYTE7 = "byte7";

public static final String COLUMN_NAME_BYTE8 = "byte8";

}

public static abstract class DbPgnColumns implements BaseColumns {

public static final String TABLE_NAME = "PgnDataTable";

public static final String COLUMN_NAME_PGN = "pgn";

public static final String COLUMN_NAME_INFOTEXT = "infotext";

}

}

Page 74: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

5.3 Implementierung der ISOBUS-Reader App

67

Die Klasse „IsobusDbHelper.java“ erbt von der abstrakten Klasse SQliteOpenHelper

und ist zuständig für das Erstellen der eigentlichen Datenbank, den

Datenbanktabellen und den entsprechenden Attributen für die jeweilige Tabelle. In

der Klasse wird der Datenbankname als auch die Datenbankversionsnummer

festgehalten. Das Erzeugen der Datenbank erfolgt in der onCreate()- und das

Updaten (löschen und anschließend neu erzeugen) in der onUpgrade()-Methode.

Die SQLite-Anweisungen werden als vorbereitete Anweisungen (prepared

Statements) realisiert, um SQL-Injection-Angriffe zu verhindern.

public class IsobusDbHelper extends SQLiteOpenHelper {

public static final int DATABASE_VERSION = 1;

public static final String DATABASE_NAME = "CANBUS_Datenbank.db";

private static final String TEXT_TYPE = " TEXT";

private static final String COMMA_SEP = ", ";

/***********************************************************************

* candata-Table Bereich

***********************************************************************/

private static final String SQL_CREATE_ENTRIES =

"CREATE TABLE IF NOT EXISTS " + DBColumns.TABLE_NAME + " (" +

DBColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +

DBColumns.COLUMN_NAME_CAN_ID + TEXT_TYPE + COMMA_SEP +

DBColumns.COLUMN_NAME_CAN_DATA + TEXT_TYPE + COMMA_SEP +

DBColumns.COLUMN_NAME_PGN + TEXT_TYPE + COMMA_SEP +

DBColumns.COLUMN_NAME_INFOTEXT + TEXT_TYPE + COMMA_SEP +

DBColumns.COLUMN_NAME_TIMESTAMP + TEXT_TYPE + COMMA_SEP +

DBColumns.COLUMN_NAME_BYTE1 + TEXT_TYPE + COMMA_SEP +

DBColumns.COLUMN_NAME_BYTE2 + TEXT_TYPE + COMMA_SEP +

DBColumns.COLUMN_NAME_BYTE3 + TEXT_TYPE + COMMA_SEP +

DBColumns.COLUMN_NAME_BYTE4 + TEXT_TYPE + COMMA_SEP +

DBColumns.COLUMN_NAME_BYTE5 + TEXT_TYPE + COMMA_SEP +

DBColumns.COLUMN_NAME_BYTE6 + TEXT_TYPE + COMMA_SEP +

DBColumns.COLUMN_NAME_BYTE7 + TEXT_TYPE + COMMA_SEP +

DBColumns.COLUMN_NAME_BYTE8 + TEXT_TYPE + " );";

private static final String SQL_DELETE_ENTRIES = "DROP TABLE IF EXISTS " +

DBColumns.TABLE_NAME;

public static final String[] ALL_COLUMNS = new String[] {

DBColumns._ID, DBColumns.COLUMN_NAME_CAN_ID, DBColumns.COLUMN_NAME_CAN_DATA,

DBColumns.COLUMN_NAME_PGN, DBColumns.COLUMN_NAME_INFOTEXT,

DBColumns.COLUMN_NAME_TIMESTAMP

};

public static final String[] ALL_COLUMNS_WITH_BYTES = new String[] {

DBColumns._ID, DBColumns.COLUMN_NAME_CAN_ID, DBColumns.COLUMN_NAME_CAN_DATA,

DBColumns.COLUMN_NAME_PGN, DBColumns.COLUMN_NAME_INFOTEXT, DBColumns.

COLUMN_NAME_TIMESTAMP, DBColumns.COLUMN_NAME_BYTE1, DBColumns.

COLUMN_NAME_BYTE2, DBColumns.COLUMN_NAME_BYTE3, DBColumns.COLUMN_NAME_BYTE4,

DBColumns.COLUMN_NAME_BYTE5, DBColumns.COLUMN_NAME_BYTE6, DBColumns.

COLUMN_NAME_BYTE7, DBColumns.COLUMN_NAME_BYTE8

};

(weiterer Code auf der nächsten Seite)

Page 75: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

5.3 Implementierung der ISOBUS-Reader App

68

Listing 5.18 – Implementierung der IsobusDbHelper-Klasse die für die Erzeugung der

Datenbank zuständig ist

Für das Speichern und Löschen von Datenbankinhalten ist die Klasse „IsobusDb-

Controller“ verantwortlich. Diese verwaltet sowohl die insert- und delete-Anweisungen

als auch die Ausgabe der Daten mit Hilfe des SQliteCursor Konzepts. Weil die

Klasse „IsobusDBController“ von der Codemenge umfangreich ist, sollen die

nachfolgenden Listings nur die relevanten Funktionen aufzeigen. Die relevanten

Funktionen werden hier zunächst einmal aufgezählt. Die meisten Methodennamen

sind selbstsprechend:

openDbWithReadPermission(), openDbWithWriteAndReadPermission(), closeDB(),

insertDataInDatabase(), insertPgnDataInDatabase(), deleteAllDataInDatabase(),

deleteSelectedDataInDatabase(), readDataFromDatabase(), readPgnFilterFromData-

base().

Das Listing 5.19 zeigt den grundsätzlichen Aufbau der „IsobusDBController“-Klasse

und die Methoden für den Verbindungsaufbau und –abbau zur Datenbank. Der Ver-

bindungsaufbau kann sowohl in „Nur-Lese-Form“ oder in „Lese-Schreib-Form“ erfol-

gen. „IsobusDbController“ implementiert die „SQliteDatabase“-Klasse für die grund-

/***********************************************************************

* pgn-table Bereich

***********************************************************************/

private static final String SQL_CREATE_PGN_ENTRIES =

"CREATE TABLE " + DbPgnColumns.TABLE_NAME + " (" +

DbPgnColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +

DbPgnColumns.COLUMN_NAME_PGN + TEXT_TYPE + COMMA_SEP +

DbPgnColumns.COLUMN_NAME_INFOTEXT + TEXT_TYPE + " );";

private static final String SQL_DELETE_PGN_ENTRIES = "DROP TABLE IF EXISTS " +

DbPgnColumns.TABLE_NAME;

public static final String[] ALL_PGN_COLUMNS = new String[] {

DbPgnColumns._ID, DbPgnColumns.COLUMN_NAME_PGN, DbPgnColumns.

COLUMN_NAME_INFOTEXT};

public IsobusDbHelper(Context context) {

super(context, DATABASE_NAME, null, DATABASE_VERSION);

}

@Override

public void onCreate(SQLiteDatabase db) {

db.execSQL(SQL_CREATE_ENTRIES);

db.execSQL(SQL_CREATE_PGN_ENTRIES);

}

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

db.execSQL(SQL_DELETE_ENTRIES);

db.execSQL(SQL_DELETE_PGN_ENTRIES);

onCreate(db);

}

}

Page 76: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

5.3 Implementierung der ISOBUS-Reader App

69

sätzliche Datenbank und das Datenbankschema mit der Klasse „IsobusDbHelper“.

Listing 5.19 – Grundsätzlicher Aufbau der „IsobusDbController“-Klasse und der

Verbindungsaufbau und –abbau zur Datenbank

public class IsobusDbController {

private static final String TAG = IsobusDbController.class.getSimpleName();

private IsobusDbHelper mDbHelper;

private SQLiteDatabase db;

private String canId, canIdStringHex, canData, pgn, infotext, timestamp;

private String byte1String, byte2String, byte3String, byte4String,

byte5String, byte6String, byte7String, byte8String;

...

private IsobusData pData;

public IsobusDbController(Context context) {

mDbHelper = new IsobusDbHelper(context);

}

...

/***********************************************************

* Öffnet eine Datenbankverbindung mit Lese-Rechten.

**********************************************************/

public void openDbWithReadPermission() throws SQLException {

if (db == null) {

db = mDbHelper.getReadableDatabase();

Log.d(TAG, db was null.");

} else {

if (db.isOpen() == false) {

db = mDbHelper.getReadableDatabase();

Log.d(TAG, db is not null but was closed. db is open now.");

} else {

Log.d(TAG, db is still open.");

}

}

}

/*****************************************************************

* Öffnet eine Datenbankverbindung mit Schreib- und Leserechten.

******************************************************************/

public void openDbWithWriteAndReadPermission() throws SQLException {

if (db == null) {

db = mDbHelper. getWritableDatabase ();

Log.d(TAG, db was null.");

} else {

if (db.isOpen() == false) {

db = mDbHelper. getWritableDatabase ();

Log.d(TAG, db is not null but was closed. db is open now.");

} else {

Log.d(TAG, db is still open.");

}

}

}

/******************************************************************

* Schliesst eine offene Datenbank

*****************************************************************/

public void closeDB() {

if (mDbHelper != null) {

mDbHelper.close();

Log.d(TAG, "closeDB() was called. Datenbank wird geschlossen.");

}

}

}

Page 77: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

5.3 Implementierung der ISOBUS-Reader App

70

Zur Speicherung der ISOBUS-Daten in die Datenbank werden die entsprechenden

Daten aus dem detailedData-Objekt ausgelesen und in das values-Objekt von der

Klasse „ContentValues“ eingefügt. Anschließend wird der komplette Datensatz mit

Hilfe der insert()-Operation in die Datenbank eingetragen.

Listing 5.20 – Speichern der ISOBUS-Daten in die Datenbank mit Hilfe des insert-Befehls

Die insertPgnDataInDatabase()-Methode ist für das Speichern der PGN-Filter-Daten

zuständig und ist von der Funktionalität ähnlich aufgebaut wie die insertDataInData

base()-Methode. Es wird zuvor noch in checkPgnIfAlredyInDb() geprüft, ob der zu

speichernde PGN-Filter-Datensatz bereits in der Datenbank enthalten ist. Die

Vorgänge werden in Listing 5.21 aufgezeigt.

public long insertDataInDatabase(DetailedIsobusDataStructure detailedData) {

canId = String.valueOf(detailedData.canID);

canIdStringHex = detailedData.idHexString;

canData = detailedData.dataHexString;

pgn = String.valueOf(detailedData.pgn);

byte1String = detailedData.byte1;

byte2String = detailedData.byte2;

byte3String = detailedData.byte3;

byte4String = detailedData.byte4;

byte5String = detailedData.byte5;

byte6String = detailedData.byte6;

byte7String = detailedData.byte7;

byte8String = detailedData.byte8;

return insertDataInDatabase();

}

/************************************************

* Daten in Datenbank einfügen

************************************************/

private long insertDataInDatabase() {

openDbWithWriteAndReadPermission();

timestamp = sdf.format(new Date());

// Create a new map of values, where column names are the keys

ContentValues values = new ContentValues();

values.put(DBColumns.COLUMN_NAME_CAN_ID, canIdStringHex);

values.put(DBColumns.COLUMN_NAME_CAN_DATA, canData);

values.put(DBColumns.COLUMN_NAME_PGN, pgn);

values.put(DBColumns.COLUMN_NAME_INFOTEXT, infotext);

values.put(DBColumns.COLUMN_NAME_TIMESTAMP, timestamp);

values.put(DBColumns.COLUMN_NAME_BYTE1, byte1String);

values.put(DBColumns.COLUMN_NAME_BYTE2, byte2String);

values.put(DBColumns.COLUMN_NAME_BYTE3, byte3String);

values.put(DBColumns.COLUMN_NAME_BYTE4, byte4String);

values.put(DBColumns.COLUMN_NAME_BYTE5, byte5String);

values.put(DBColumns.COLUMN_NAME_BYTE6, byte6String);

values.put(DBColumns.COLUMN_NAME_BYTE7, byte7String);

values.put(DBColumns.COLUMN_NAME_BYTE8, byte8String);

newRowId = db.insert(DBColumns.TABLE_NAME, null, values);

return newRowId;

}

Page 78: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

5.3 Implementierung der ISOBUS-Reader App

71

Listing 5.21 – Speichern der PGN-Filter-Daten in die Datenbank

Um die in der Datenbank gespeicherten Daten wieder löschen zu können, stehen

zwei Methoden (deleteAllDataInDatabase() und deleteSelectedDataInDatabase()) in der

„IsobusDbController“-Klasse zur Verfügung. Die beiden Methoden unterscheiden

sich darin, dass die erste Methode alle ISOBUS-Datensätze in der Tabelle löscht, die

zweite Methode hingegen nur einen einzelnen Datensatz mit entsprechender SQL-ID

(_id) aus der Tabelle löscht. Das nachfolgende Listing 5.22 beschreibt diese

Vorgänge.

public long insertPgnDataInDatabase(int pgnTmp, String infotextTmp) {

openDbWithWriteAndReadPermission();

if (checkPgnIfAlredyInDb(pgnTmp)) {

Log.d(TAG, "PGN ist bereits in PGN-Tabelle enthalten und wird somit nicht

nochmal abgespeichert.");

closeDB();

return -2;

} else {

ContentValues values = new ContentValues();

values.put(DbPgnColumns.COLUMN_NAME_PGN, pgnTmp);

values.put(DbPgnColumns.COLUMN_NAME_INFOTEXT, infotextTmp);

newRowId = db.insert(DbPgnColumns.TABLE_NAME, null, values);

closeDB();

return newRowId;

}

}

private boolean checkPgnIfAlredyInDb(int pgnTmp) throws SQLException {

int count = -1;

String pgnTmpString = String.valueOf(pgnTmp);

String[] pgnTmpStringArray = { pgnTmpString };

Cursor c = null;

try {

String query = "SELECT COUNT(*) FROM " + DbPgnColumns.TABLE_NAME +

" WHERE " + DbPgnColumns.COLUMN_NAME_PGN + " = ?";

c = db.rawQuery(query, pgnTmpStringArray);

if (c.moveToFirst()) {

count = c.getInt(0);

}

if (count > 0) {

return true;

}

} finally {

if (c != null) {

c.close();

}

}

return false;

}

Page 79: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

5.3 Implementierung der ISOBUS-Reader App

72

Listing 5.22 – Löschen aller oder einzelner ISOBUS-Datensätze aus der Datenbank

Die Methoden deleteAllPgnDataInDatabase() und deleteSelectedPgnDataInDatabase()

sind von der Funktionalität identisch zu ihren namensähnlichen Methoden

deleteAllDataInDatabase() und deleteSelectedDataInDatabase(), hierbei werden nicht

die ISOBUS-Daten, sondern die PGN-Filter-Daten in der Datenbank gelöscht. Weil

die jeweiligen Codefragmente sich stark ähneln, soll der Code der Methoden

deleteAllPgnDataInDatabase() und deleteSelectedPgnDataInDatabase() nicht weiter

aufgeführt werden.

Das nachfolgende Listing 5.23 beschreibt in der readDataFromDatabase()-Methode

das Auslesen der ISOBUS-Daten aus der Datenbank mit Hilfe des Cursor-

Konstrukts. Es wird dabei zuvor eine db.query()-Operation mit den entsprechenden

Selektionsparametern ausgeführt und an das Cursor-Objekt übergeben.

Anschließend wird innerhalb des Cursor-Objekts mit einer while-Schleife zeilenweise

ein Datensatz ausgelesen und in die ArrayList canDataList gespeichert.

public int deleteAllDataInDatabase() {

try {

Log.d(TAG,"deleteAllDataInDatabase() call: --->");

openDbWithWriteAndReadPermission();

valueOfDeletedEntries = db.delete(DBColumns.TABLE_NAME, null, null);

} catch (SQLiteException e) {

Log.e(TAG, "deleteSelectedDataInDatabase()", e);

return -1;

} finally {

closeDB();

}

return valueOfDeletedEntries;

}

/************************************************

* ausgewählten Datensatz aus Datenbank löschen

************************************************/

public int deleteSelectedDataInDatabase(int id) {

try {

openDbWithWriteAndReadPermission();

String selection = DBColumns._ID + " LIKE ?";

// Specify arguments in placeholder order.

String[] selectionArgs = { String.valueOf(id) };

valueOfDeletedEntries = db.delete(DBColumns.TABLE_NAME, selection,

selectionArgs);

} catch (SQLiteException e) {

Log.e(TAG, "deleteSelectedDataInDatabase()", e);

return -1;

} finally {

closeDB();

}

return valueOfDeletedEntries;

}

Page 80: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

5.3 Implementierung der ISOBUS-Reader App

73

Listing 5.23 – Auslesen von ISOBUS-Daten aus der Datenbank

Die Methode readPgnFilterFromDatabase() ist von der Funktionalität identisch zur

readDataFromDatabase()-Methode, hierbei werden nicht die ISOBUS-Daten, sondern

die PGN-Filter-Daten gelesen. Weil beide Codefragmente sich stark ähneln, soll der

Code der readPgnFilterFromDatabase()-Methode nicht weiter aufgeführt werden.

In der Methode readDataFromDatabase() erfolgt in der while-Schleife ein Aufruf einer

weiteren Methode cursorToIsobusData(), welches dem Cursor übergeben wird.

Innerhalb dieser Methode werden die einzelnen Attribute pro Datensatz durch die

Angabe des Spaltennamens aus dem Dateninhalt des Cursors ausgelesen und

entsprechend in das IsobusData-Objekt pData eingetragen. Die Methode

cursorToIsobusData() wird im nachfolgenden Listing 5.24 aufgezeigt.

/************************************************

* Daten aus Datenbank auslesen

************************************************/

public List<IsobusData> readDataFromDatabase() {

List<IsobusData> canDataList = new ArrayList<IsobusData>();

openDbWithReadPermission();

String[] projection = IsobusDbHelper.ALL_COLUMNS;

String selection = null;

String[] selectionArgs = null;

String sortOrder = null;

Cursor cursor = db.query(DBColumns.TABLE_NAME, // Anfragende Tabelle

projection, // Spalten für Rückgabe

selection, // Spalten für die WHERE Bedingung

selectionArgs, // Werte für die WHERE Bedingung

null, // Gruppierung (nicht benötigt)

null, // Filter für Gruppierung

sortOrder // Sortierverhalten

);

cursor.moveToFirst();

while (!cursor.isAfterLast()) {

IsobusData data1 = cursorToIsobusData(cursor);

canDataList.add(data1);

cursor.moveToNext();

}

cursor.close();

closeDB();

return canDataList;

}

Page 81: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

5.3 Implementierung der ISOBUS-Reader App

74

Listing 5.24 – Auslesen der Einzelnen Spaltenwerte aus dem Cursor-Datensatz

Die Methode cursorToIsobusDataPgn() ist von der Funktionalität identisch zur

cursorToIsobusData() Methode, hierbei werden nicht die ISOBUS-Daten, sondern die

PGN-Filter-Daten aus dem Cursor gelesen. Weil beide Codefragmente sich stark

ähneln, soll der Code der cursorToIsobusDataPgn() Methode nicht weiter aufgeführt

werden.

/************************************************************************

* Es werden die vom Cursor ausgelesenen Daten in das Objekt IsobusData

* "gepeichert" und zurück gegeben.

************************************************************************/

private IsobusData cursorToIsobusData(Cursor cursor) {

pData = new IsobusData();

pData.idSql = cursor.getInt(cursor.getColumnIndex(DBColumns._ID));

pData.canIdStringHexSql = cursor.getString(cursor.getColumnIndex(

DBColumns.COLUMN_NAME_CAN_ID));

pData.canDataStringSql = cursor.getString(cursor.getColumnIndex(

DBColumns.COLUMN_NAME_CAN_DATA));

pData.pgnSql = cursor.getInt(cursor.getColumnIndex(

DBColumns.COLUMN_NAME_PGN));

pData.infoTextSql = cursor.getString(cursor.getColumnIndex(

DBColumns.COLUMN_NAME_INFOTEXT));

pData.timestampStringSql = cursor.getString(cursor.getColumnIndex(

DBColumns.COLUMN_NAME_TIMESTAMP));

return pData;

}

Page 82: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

5.3 Implementierung der ISOBUS-Reader App

75

5.3.4 ISOBUS-Daten-Bereitstellung für externe

Anwendungen

In Kapitel 5.2.5 „ContentProvider & ContentResolver“ wird das Prinzip der

Bereitstellung von Datenbankinhalten für externe Anwendungen anhand eines

Beispiels kurz erläutert. In diesem Abschnitt wird die Implementierung des

„ContentProviders“ in der Klasse „IsobusdataContentProvider“ für die Bereitstellung

der ISOBUS-Daten aufgezeigt. Für den ContentProvider wird ein dbController-Objekt

der bereits bekannten Klasse IsobusDbController bereitgestellt.

Sowohl die query- als auch die delete-Methode erhalten die relevanten Anfrage- bzw.

Löschanweisungs-Paramater von einer externen Anwendung und übergeben diese

an die entsprechende Methode des dbController-Objekts. Im Falle einer Anfrage

(query) liefert der ContentProvider die ISOBUS-Datensätze als Cursor-Objekt an die

externe Anwendung zurück. Bei der delete-Operation wird ein Integer-Wert für die

Anzahl der gelöschten Datensätze als Rückgabewert übergeben. Für das Löschen

der Datensätze stehen auch hier die zwei Methoden deleteAllDataInDatabase() und

deleteSelectedDataInDatabase() zur Verfügung, mit denen das Löschen aller

Datensätze oder eines einzelnen Datensatzes ermöglicht wird.

public class IsobusdataContentProvider extends ContentProvider {

public static final String AUTHORITY = "farmpilot.services.

CandataContentProvider";

public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY +

"/" + DBColumns.TABLE_NAME);

private IsobusDbController dbController;

@Override

public boolean onCreate() {

dbController = new IsobusDbController(getContext());

return true;

}

/***********************************************************************

* Es wird der Query verarbeitet, der von ausserhalb als Anfrage eingeht.

***********************************************************************/

@Override

public Cursor query(Uri uri, String[] projection, String selection,

String[] selectionArgs, String sortOrder) {

return dbController.queryPasser(getContext(), uri, DBColumns.TABLE_NAME,

null, projection, selection, selectionArgs, null, null, sortOrder);

}

(weiterer Code auf der nächsten Seite)

Page 83: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

5.3 Implementierung der ISOBUS-Reader App

76

Listing 5.25 – IsobusdataContentProvider zur Bereitstellung der Datenbank für externe

Anwendungen

Zu beachten ist auch, dass der Eintrag des ContentProviders in der Android-

Manifest.xml durchgeführt wird.

Listing 5.26 - ContentProvider Eintrag in der AndroidManifest.xml

Für die Anfrage von ISOBUS-Daten wird in der queryPasser()-Methode eine von

Android bereitgestellte Hilfsklasse „SQLiteQueryBuilder“ verwendet. Mit dieser

Hilfsklasse kann eine Datenbankanfrage Schritt für Schritt „zusammengebaut“ und

anschließend der Anfrage-Befehl sqlBuilder.querry() ausgeführt werden.

Listing 5.27 – Datenanfrage mit Hilfe des SQLiteQueryBuilder Konzepts

...

/***********************************************************************

* Es wird die delete-Anweisung verarbeitet, die von ausserhalb eingeht.

***********************************************************************/

@Override

public int delete(Uri uri, String selection, String[] selectionArgs) {

if (selection == null && selectionArgs == null) {

return dbController.deleteAllDataInDatabase();

} else {

String idString = selectionArgs[0];

int id = Integer.valueOf(idString);

return dbController.deleteSelectedDataInDatabase(id);

}

}

}

...

<provider

android:name="farmpilot.services.IsobusdataContentProvider"

android:authorities=" farmpilot.services.IsobusdataContentProvider"

android:readPermission=" farmpilot.services.READ_DATABASE "

android:writePermission=" farmpilot.services.WRITE_DATABASE " /> ...

public Cursor queryPasser(Context context, Uri uri, String inTables,

CharSequence inWhere, String[] projectionIn, String selection,

String[] selectionArgs, String groupBy, String having, String sortOrder) {

openDbWithWriteAndReadPermission();

SQLiteQueryBuilder sqlBuilder = new SQLiteQueryBuilder();

sqlBuilder.setTables(inTables);

if (inWhere != null) {

sqlBuilder.appendWhere(inWhere);

}

if (db != null) {

Cursor c = sqlBuilder.query(db, projectionIn, selection, selectionArgs,

groupBy, having, sortOrder);

c.setNotificationUri(context.getContentResolver(), uri);

return c;

} else {

Log.d(TAG, "db == null.");

}

return null;

}

Page 84: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

5.3 Implementierung der ISOBUS-Reader App

77

Eine Verwendung des ContentResolvers in einer externen Anwendung wird

beispielhaft bereits in Kapitel 5.2.5 „ContentProvider & ContentResolver“ aufgezeigt,

so dass eine weitere Erläuterung des Codefragments an dieser Stelle nicht mehr

notwendig ist.

Page 85: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

5.3 Implementierung der ISOBUS-Reader App

78

5.3.5 ISOBUS-Adressermittlung und Verwaltung

In Kapitel 4.4.5 „Adressermittlung“ wird die Notwendigkeit der Ermittlung und Ver-

waltung einer für das Android-Tablet eindeutig festgelegten ISOBUS-Adresse

(Source Address) aufgezeigt und erläutert. In diesem Abschnitt erfolgt die

Erläuterung der Implementierung anhand der entsprechenden Codefragmente, die in

den nachfolgenden Listings aufgezeigt werden.

Der Aufruf zum Starten des AddressClaiming-Prozesses wird in der Hauptbenutzer-

oberfläche innerhalb des Optionsmenüs ausgewählt. Dies führt dazu, dass die

claimingAddressProcess()-Methode in der „ISOBUS_Reader_Main“-Klasse ausgeführt

wird. Es wird geprüft, ob eine Bluetooth-Verbindung besteht, um den Adress-

Claiming-Prozess überhaupt ausführen zu können.

Wie bereits erwähnt, wird in der Implementierung eine Adressverwaltungsliste (auch

Adressbuch genannt) benötigt, um einen Überblick der am ISOBUS teilnehmenden

Geräte zu erfahren und eine eigene Source Address zu ermitteln. Zur Ermittlung der

Teilnehmeradresse wird nach ISO 11783-5 die Broadcast-Nachricht „Request for

Address Claimend“ an das Bussystem versendet und die Teilnehmer melden sich mit

einer „Address Claim“-Nachricht mit ihrer entsprechenden Source Address zurück.

Das Versenden der Broadcast-Nachricht erfolgt in sendeBroadcast()-Methode der

Addressclaiming-Klasse. Laut der ISO-Norm hat die Broadcast-Nachricht folgenden

Aufbau: 0x18EAFFFE (Identifier) und 0x00EE00 (Data).

Der Methodenaufruf findet in der claimingAddressProcess()-Methode statt. Es wird

dem Android-Tablet zunächst eine voreingestellte Source Address (Wert 0xF7)

zugewiesen. Dieser Wert ist jedoch nur ein Default-Wert und kann sich während der

Kommunikation ändern, wenn festgestellt wird, dass diese Source Adress bereits

statisch an ein anderes Gerät vergeben ist. Nach dem die Broadcast-Nachricht

generiert wird, wird diese an das mBmCmd-Objekt der BluetoothmessageCommand-

Klasse (BmCmd) zum Versenden weitergereicht.

Das Listing 5.28 zeigt den Aufruf und Ablauf der claimingAddressProcess()-Methode.

Page 86: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

5.3 Implementierung der ISOBUS-Reader App

79

Listing 5.28 – Aufruf des Address Claiming Vorgangs

In der Addressclaiming-Klasse werden folge Methoden aufgezeigt:

sendeBroadcast(), startAddressClaiming(), teilnehmerArry(), eigeneTeilnehmeradres

seErmitteln()

In der sendeBroadCast()-Methode erfolgt die Generierung der Broadcast-Nachricht

und die startAddressClaiming()-Methode wird im laufenden ISOBUS-System zur

Überprüfung und Bekanntgabe der eigenen Source Adresse auf dem Bussystem

benötigt.

In der teilnehmerArray()-Methode erfolgt das Kontrollieren eines übergebenen

Nachrichten-Identifier auf dessen Source Adresse. Es wird dabei geprüft, ob die

Source Adresse in der Adressverwaltungsliste bereits enthalten ist. Ist dies nicht der

Fall, so wird in der „ByteCommandCallbacksImpl.java“-Klasse ein Eintrag der

Adresse in das Adressbuch durchgeführt. (Das später folgende Listing 5.32 zeigt das

Codefragment auf).

Die Methode eigeneTeilnehmeradresseErmitteln() ist für die Ermittlung der eigenen

Source Address zuständig. Vorzugsweise soll die Adresse F7 dem Tablet

zugewiesen werden. Ist diese Adresse bereits, belegt so erhält das Tablet eine

nächst freie Adresse. Bei der Suche einer freien Adresse wird mit der Source

Address 1 begonnen. Es wird mit dem Adressbuch verglichen bzw. geprüft, ob diese

ebenfalls bereits vergeben ist. Ist dies der Fall, so wird die Adresse stets um eine 1

inkrementiert und wieder verglichen. Dieser Vorgang wird solange durchgeführt, bis

eine freie Adresse ermittelt wird.

private boolean claimingAddressProcess() {

if (mitBtBoxVerbunden == true) {

mBmCmd.SendBmFrame(addc.sendeBroadcast());

addc.eigeneISOBUSadresse = (byte) 0xF7;

addclGestartet = true;

bCmdCbImpl.addclGestartet = addclGestartet;

return true;

} else {

Toast.makeText(this, "Keine BT Box Verbindung! Bitte Connect to CANlink

Bluetooth durchführen.", Toast.LENGTH_LONG).show();

}

addclGestartet = false;

bCmdCbImpl.addclGestartet = addclGestartet;

return false;

}

Page 87: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

5.3 Implementierung der ISOBUS-Reader App

80

Listing 5.29 – Adressclaiming – Klasse für die Prüfung des Adressbuchs und zur

Ermittlung der eigenen ISOBUS-Adresse

Im vorherigen Listing 5.29 wird die generateBroadcastmessage()-Methode der Klasse

„BmcCanMessage“ in der Methode sendeBroadcast() aufgeführt. Dieses Code-

fragment wird im nachfolgenden Listing 5.30 detailliert aufgezeigt.

public class Addressclaiming {

public int[] teilnehmerInt = new int[254];

public int summeMaxTeilnehmer = 254;

public int eigeneISOBUSadresse = 0;

private int z = 1; // Zähler

public BmcCanMessage sendeBroadcast() {

BmcCanMessage brme = new BmcCanMessage();

brme.extendedIdentifier = true;

brme.generateBroadcastmessage();

return brme;

}

public BmcCanMessage startAddressClaiming(int[] teilnehmerarray, int

anzahlteilnehmer, boolean F7vergeben) {

BmcCanMessage addcl = new BmcCanMessage();

addcl.extendedIdentifier = true;

addcl.identifier = eigeneTeilnehmeradresseErmitteln(teilnehmerarray,

anzahlteilnehmer, F7vergeben);

addcl.addressClaimingMessage(eigeneTeilnehmeradresseErmitteln(

teilnehmerarray, anzahlteilnehmer, F7vergeben), F7vergeben);

return addcl;

}

public boolean teilnehmerArry(int identifier, int[] teilnehmerarray,

int anzahlteilnehmer) {

int i = 0;

while (identifier != teilnehmerarray[i] && i <= anzahlteilnehmer){

i++;

}

if (identifier == teilnehmerarray[i] || identifier == 0xFE){

return false;

} else {

return true;

}

}

private byte eigeneTeilnehmeradresseErmitteln(int[] teilnehmerarray,

int anzahlteilnehmer, boolean F7vergeben) {

if (F7vergeben == true) {

int i = 1;

while (z <= anzahlteilnehmer) {

while (i <= anzahlteilnehmer && teilnehmerarray[i] != z) {

if (i == anzahlteilnehmer) {

return (byte) z;

}

i++;

}

i = 1;

z++;

}

} else if (F7vergeben == false) {

return (byte) (0xF7);

}

return (byte) (0xFF);

}

}

Page 88: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

5.3 Implementierung der ISOBUS-Reader App

81

In der bereits bestehenden „BmcCanMessage“-Klasse erfolgt eine Erweiterung der

Klasse durch die generateBroadcastmessage()-Methode. In dieser Methode wird eine

„Request for Address Claimed“-Broadcast-Nachricht generiert.

Aufbau: 0x18EAFFFE (Identifier) und 0x00EE00 (Data).

Listing 5.30 – generateBroadcastmessage()-Methode für die Erstellung einer Broadcast-

Nachricht

Des Weiteren erfolgt eine Implementierung der addressClaimingMessage()-Methode

ebenfalls in der „BmcCanMessage“-Klasse zur Bekanntgabe der Tablet-Adresse an

das Bussystem.

Aufbau: 0x18EEFF[neue Adresse] (Identifier) und 0xD7127F0D008200A0 (Data).

Listing 5.31 addressClaimingMessage zur Bekanntgabe der Tablet-Adresse am ISOBUS

public class BmcCanMessage extends ByteCommand {

...

public void generateBroadcastmessage() {

BmcDataLength = 7;

if (extendedIdentifier == true) {

BmcDataBuffer[0] = (byte) (0x18);

BmcDataBuffer[1] = (byte) (0xEA);

BmcDataBuffer[2] = (byte) (0xFF);

BmcDataBuffer[3] = (byte) (0xFE);

BmcDataBuffer[4] = (byte) (0X00);// 1.Byte

BmcDataBuffer[5] = (byte) (0xEE);// 2.Byte

BmcDataBuffer[6] = (byte) (0X00);// 3.Byte

}

}

...

}

public class BmcCanMessage extends ByteCommand {

...

public void addressClaimingMessage(byte nb) {

BmcDataLength = 12;

if (extendedIdentifier == true) {

BmcDataBuffer[0] = (byte) (0x18);

BmcDataBuffer[1] = (byte) (0xEE);

BmcDataBuffer[2] = (byte) (0xFF);

BmcDataBuffer[3] = nb;// Adresse des Tablets

BmcDataBuffer[4] = (byte) (0XD7); // 1.Byte

BmcDataBuffer[5] = (byte) (0x12); // 2.Byte

BmcDataBuffer[6] = (byte) (0X7F); // 3.Byte

BmcDataBuffer[7] = (byte) (0x0D); // 4.Byte

BmcDataBuffer[8] = (byte) (0x00); // 5.Byte

BmcDataBuffer[9] = (byte) (0x82); // 6.Byte

BmcDataBuffer[10] = (byte) (0x00); // 7.Byte

BmcDataBuffer[11] = (byte) (0xA0); // 8.Byte

}

}

...

}

Page 89: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

5.3 Implementierung der ISOBUS-Reader App

82

Bereits nach dem Verbindungsaufbau mit dem Bussystem werden im „Lausch-

modus“ die ersten empfangenen ISOBUS-Nachrichten entgegengenommen und die

Adressen der Nachrichten herausgefiltert. Dieser Vorgang erfolgt in der canMessage-

Received()-Methode der „ByteCommandCallbacksImpl“-Klasse. Der Filtervorgang im

„Lauschmodus“ ist dabei auf eine bestimmte Anzahl (30) von eingehenden

Nachrichten begrenzt. Wird der AdressClaiming-Vorgang vom Anwender gestartet,

so meldet sich das Tablet mit seiner Adresse am Bussystem an. Des Weiteren wird

im laufenden Zustand kontinuierlich geprüft, ob ein Teilnehmer sich neu auf dem

ISOBUS anmeldet und somit der Identifier die Source Address 0xFE aufweist oder

ob ein Teilnehmer die gleiche Source Address wie das Tablet besitzt.

Listing 5.32 In der „canMessageReceived“-Methode werden Source-Adressen geprüft und

verwaltet

public void canMessageReceived(BmcCanMessage bmcCanMessage) {

aktuelleNachricht = bmcCanMessage;

...

if ((byte) aktuelleNachricht.identifier == (byte) 0xF7){

F7vergeben = true;

}

if ((zaehlerZuUntersuchendeNachrichtenNachAddclStart <

maxZaehlerZuUntersuchendeNachrichtenNachAddclStart) ||

(((byte) aktuelleNachricht.identifier & 0X1ff) == (byte) 0xFE)) {

if (z1 <= addc.summeMaxTeilnehmer &&(aktuelleNachricht.identifier != 0X00)){

// Prueft ob ein Teilnehmer sich am ISOBUS neu anmeldet

if (((byte) aktuelleNachricht.identifier & 0X1ff) == 0xFE){

zaehlerZuUntersuchendeNachrichtenNachAddclStart = 0;

}

zaehlerZuUntersuchendeNachrichtenNachAddclStart++;

// Ermittlung und Bekanntgabe der eigenen Adresse

if (zaehlerZuUntersuchendeNachrichtenNachAddclStart ==

maxZaehlerZuUntersuchendeNachrichtenNachAddclStart &&

addclGestartet == true){

mBmCmd.SendBmFrame(addc.startAddressClaiming(addc.teilnehmerInt, z1,

F7vergeben));

}

// Prüfung der erfassten Adresse, ob diese im Adressbuch enthalten ist

if (addc.teilnehmerArry((byte) aktuelleNachricht.identifier & 0X1ff,

addc.teilnehmerInt, z1) && ((aktuelleNachricht.identifier &

0x1111000) != 0x00000000)) {

// Eintrag der Adresse ins Adressbuch

addc.teilnehmerInt[z1] = (byte) aktuelleNachricht.identifier & 0X1ff;

z1++;

}

}

}

// Vergleich ob ISOBUS Adresse in aktueller Nachricht gleich der eigenen

// ISOBUS Adresse ist, falls ja neue eigene Teilnehmeradresse suchen

if ((byte) addc.eigeneISOBUSadresse == (byte) aktuelleNachricht.identifier) {

if ((byte) aktuelleNachricht.identifier == (byte) 0xF7){

F7vergeben = true;

}

addc.eigeneISOBUSadresse = ((addc.startAddressClaiming(addc.teilnehmerInt,

z1, F7vergeben)).identifier);

mBmCmd.SendBmFrame(addc.startAddressClaiming(addc.teilnehmerInt, z1,

F7vergeben));

}

Page 90: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

83

6 Test

Der Software-Lebenszyklus Test befasst sich mit der Qualität einer Applikation.

Dabei wird die Anwendung auf vorhandene Fehler geprüft und eine Bewertung bzw.

eine Aussage über die Qualität der Software gefällt. Grundsätzlich lässt sich der Test

in zwei Phasen unterteilen:

Verifikation,

Validierung.

Verifikation

In der Verifikation wird eine Software bezüglich ihrer Korrektheit getestet. Die Frage

„Wurde die Software richtig entwickelt?“ ist an dieser Stelle relevant. Um die

Korrektheit überprüfen zu können, werden die Softwarekomponenten wie Klassen

oder Methoden einzeln auf das richtige Arbeiten und Ausliefern korrekter Ergebnisse

getestet.

Validierung

Das Gegenstück zur Verifikation ist die Validierung. In dieser erfolgt keine

Überprüfung der inneren Komponenten, sondern das Testen der eigentlichen

Applikation selbst. Die Frage hier lautet: „Wurde die richtige Software entwickelt?“.

Dazu werden die in der Analyse festgelegten spezifischen Anforderungen der

Applikation gegenüber gestellt und verglichen.

In Softwareprojekten ist es sehr wohl möglich, dass eine Anwendung korrekt

verifiziert, jedoch nicht validiert wird. Das heißt, dass ein entwickeltes Programm

einwandfrei funktioniert, aber gar nicht oder nur teilweise die vom Auftraggeber

gestellten Anforderungen erfüllt und somit nicht zu gebrauchen ist.

Page 91: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

6.1 Verifikation der Anwendung

84

6.1 Verifikation der Anwendung

In der Entwicklungsphase wird die Anwendung bereits stets getestet. Die Tests

beziehen sich hierbei sowohl auf die Berechnung der ISOBUS-Daten als auch auf

das korrekte Empfangen von Nachrichten sowie dem Senden von Broadcast- und

„Bekanntgabe-Eigener-Adresse“-Nachrichten.

Zur Überprüfung der ISOBUS-Nachrichten, die sowohl auf dem Tablet empfangen

als auch vom Tablet versendet werden, wird das Windows-Programm „RM CAN-

Device Monitor“ verwendet. Das Programm ist dabei ebenfalls im Bussystem für

Testzwecke eingebunden und bietet eine Monitoring-Funktion. Mit dieser Funktion

werden die im Bussystem gesendeten Nachrichten empfangen und tabellarisch

anzeiget. Des Weiteren können Nachrichten selbst generiert und entweder nur

einmal oder periodisch an das Bussystem gesendet werden.

Mit Hilfe dieses Programms wird geprüft, ob die am Tablet empfangenen Nachrichten

korrekt entgegengenommen und ausgegeben werden. Zusätzlich kann überprüft

werden, ob die vom Tablet gesendeten Broadcast- und „Bekanntgabe-Eigener-

Adresse“-Nachrichten im Bussystem korrekt weitergeleitet werden.

Abb. 6.1 – RM CAN-Device Monitor: Empfang von Nachrichten

Page 92: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

6.1 Verifikation der Anwendung

85

Abb. 6.2 – RM CAN-Device Monitor: Senden von Nachrichten

Des Weiteren wird auf dem Tablet visuell geprüft ob die Speicherarten „gefilterte

Daten speichern“ und „alle Daten speichern“ richtig durchgeführt werden und ob die

Ausgaben „ Eigene ISOBUS-Adresse“ und „Andere ISOBUS-Teilnehmer“ korrekt

widergegeben werden. Auch die Eingabe der Filterwerte wird auf Falscheingabe

bzw. auf „nur Zahlenwerte zugelassen“ geprüft.

Zusätzlich ist eine rudimentäre Android-Anwendung entwickelt worden um zu testen,

ob der Zugriff auf die Datenbank für externe Anwendung gegeben ist. Diese App

besitzt einen Lesezugriff auf die Daten und eine Löschfunktion, um einzelne Daten

oder die gesamten Daten löschen zu können.

Page 93: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

6.2 Validierung der Anwendung

86

6.2 Validierung der Anwendung

In der Validierung erfolgt eine Anwendungsprüfung von einer oder mehreren

außenstehenden Personen, die an der Entwicklung bzw. Programmierung nicht

teilnehmen und somit die Software nicht kennen. Die Personen haben jedoch sowohl

Kenntnisse über die spezifischen Anforderungen, die die Anwendung zu erfüllen hat,

als auch fachliches Wissen, um die Funktionen der Anwendung zu testen. Dieses

Verfahren nennt man Black-Box-Test.

Die Tester prüfen die Anwendung und dokumentieren die auftretenden Fehler. Diese

werden dem Entwickler bzw. Entwicklerteam bekannt gegeben. Die vorgefundenen

Fehler werden vom Entwickler behoben und die Software als neue Version dem

Tester zur Verfügung gestellt. Das Black-Box-Testverfahren wird solange wiederholt,

bis alle spezifischen Anforderungen erfüllt sind und keine Fehler mehr auftreten.

Aufgrund der Anforderung, dass diese Anwendung als Service konzipiert wird,

welche die ISOBUS-Nachrichten im Hintergrund empfängt und verarbeitet und der

Anwender (Traktorfahrer) so wenig wie möglich mit der App „in Berührung“ kommt,

sind die Black-Box-Testmöglichkeiten sehr gering. Diese beschränken sich auf den

Bluetooth-Verbindungsaufbau mit dem Bussystem, das Einpflegen der PGN-

Filtertabelle mit entsprechen PGN-Werten, das Starten / Stoppen der Datenauf-

zeichnung und den Aufruf des Adress-Claiming-Prozesses zur Ermittlung und

Bekanntgabe der eigenen Source-Adresse.

Die Tests ergeben, dass alle in Kapitel 4.1 aufgeführten konzeptionellen und

technischen Anforderungen in der Anwendung erfolgreich implementiert sind.

Page 94: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

87

7 Fazit und Ausblick

Fazit

Diese Masterarbeit ist in den Bereich der Landwirtschafts-IT einzuordnen und

befasste sich mit dem ISOBUS-Bussystem, das in Landmaschinen eingesetzt wird.

Hierbei bestand das Ziel, eine Android-App als Prototypen zu entwickeln, die die

ISOBUS-Nachrichten aus dem Bussystem erfasst, interpretiert und dem „farmpilot“-

Produkt bereitstellt.

Zu Anfang der Masterarbeit bestand die Frage, ob ein Zugriff auf das ISOBUS-

Bussystem möglich und in wie weit eine Kommunikation mittels eines mobilen

Gerätes (Smartphone oder Tablet) gegeben ist. Hierbei war eine Analyse des

Bussystems anhand der Norm ISO 11783 aber auch die Recherche der dazu

benötigten CANBUS-/ISOBUS-Hardware notwendig. Des Weiteren erfolgten eine

Überprüfung des Ist-Zustands und die Evaluation der mobilen Geräte bezüglich der

Hard- und Software sowie eine Analyse der Übertragungstechniken. Eine Mach-

barkeit aus technischer Sicht konnte grundsätzlich festgestellt werden.

In der Konzeption wurden die vom Auftraggeber grob definierten Anforderungen im

Projekt konkretisiert und festgehalten. Im anschließenden Entwurf wurde die

Architektur der Anwendung bezüglich der Datenkommunikation, der Berechnung der

ISOBUS-Daten aus den Nachrichten, die Datenspeicherung und die Adress-

ermittlung definiert.

Bei der Implementierung wurde die in der Konzeption festgelegte Architektur der

„ISOBUS Reader“-App zur Erfassung und Verwaltung von ISOBUS-Daten mit Hilfe

der Android-Techniken „Bound-Service“, „SQLite“ und „ContenProvider“ realisiert.

In den abschließenden Tests, welche grundsätzlich als Verifikations- und

Validierungstests durchgeführt wurden, wurde die Software auf Realisierung der

spezifischen Anforderungen und möglich aufkommende Fehler geprüft. Beide

Testverfahren lieferten erfolgreiche Ergebnisse.

Page 95: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

6.2 Validierung der Anwendung

88

Zusammenfassend können die gestellten Anforderungen als erfüllt und die

geforderte Implementierung der „ISOBUS Reader“-Anwendung als abgeschlossen

betrachtet werden.

Ausblick

Die in diesem Projekt entwickelte Anwendung beruht darauf, dass die „ISOBUS

Reader“-App die ISOBUS-Nachrichten im Hintergrund verwaltet und diese der

„farmpilot-App“ bereitstellt.

Der nächst folgende Schritt wäre die Implementierung von geeigneten

Benutzeroberflächen (GUIs) innerhalb der „farmpilot-App“, die dem Fahrer die

gewünschten ISOBUS-Informationen am Bildschirm zur Verfügung stellen. Des

Weiteren wäre ebenfalls eine Implementierung innerhalb der „farmpilot-App“ nötig,

die die relevanten Daten an den Disponenten bzw. an das „farmpilot-Portal“ über das

Mobilfunknetz weiterreicht.

Page 96: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

89

8 Abbildungsverzeichnis

Abb. 1.1 – Bertelsmann Struktur ................................................................................. 1

Abb. 1.2 – arvato-Leistungsbereiche .......................................................................... 2

Abb. 2.1 – „farmpilot“ Gesamtübersicht ...................................................................... 6

Abb. 2.2 – „farmpilot-Portal“ Module ........................................................................... 7

Abb. 2.3 – Tagesgenaue Disposition .......................................................................... 7

Abb. 2.4 – Detaildisposition (Einsatzplanung) ............................................................ 8

Abb. 2.5 – Maschinenübersicht im Flottenmanagement ............................................. 9

Abb. 2.6 – „farmpilot-App“ Hauptmenü ..................................................................... 10

Abb. 2.7 – „farmpilot-App“ Auftragsbearbeitung ....................................................... 10

Abb. 2.8 – Spannungspegel im CAN-Bus; Darstellung der Rezessivität

und Dominanz ......................................................................................... 12

Abb. 2.9 – Linearer CAN-Bus ................................................................................... 13

Abb. 2.10 – Datentelegramm im „Base Frame Format“ ............................................ 14

Abb. 2.11 – Datentelegramm im „Extended Frame Format“ ..................................... 14

Abb. 2.12 – Detailierte Aufsplittung vom CAN-Identifier ........................................... 16

Abb. 3.1 – Betriebssystem-Marktanteile bei Smartphones ....................................... 22

Abb. 3.2 – Betriebssystem-Marktanteile bei Tablets ................................................. 22

Abb. 4.1 - Detailierte Aufsplittung vom CAN-Identifier .............................................. 32

Abb. 4.2 – Beschreibung des PDU1 Formats ........................................................... 34

Abb. 4.3 - Beschreibung des PDU2 Formats ............................................................ 35

Abb. 4.4 – Systemkomponenten und Kommunikation .............................................. 37

Abb. 5.1 – Android Systemarchitektur ...................................................................... 43

Abb. 5.2 – Kommunikation zwischen Activity und Service ........................................ 48

Abb. 5.3 – Startbildschirm der ISOBUS Reader Anwendung ................................... 53

Abb. 5.4 – Die Anwendung ist mit dem Bussystem verbunden ................................ 53

Abb. 5.5 – Empfange Nachrichten werden in einer ListView ausgegeben................ 54

Abb. 5.6 – Aufruf des Kontextmenüs zu einem Eintrag ............................................ 54

Abb. 5.7 – Detaillierte Ansicht der berechneten Daten zu einer Nachricht ............... 54

Abb. 5.8 – Dynamische Darstellung des Buttons „Gefilterte/Alle Daten speichern“ .. 55

Abb. 5.9 – GUI für die Dateneinsicht und Datenverwaltung...................................... 55

Abb. 5.10 – Ausgabe der erfassten und berechneten Isobusdaten

in einer Tabelle ...................................................................................... 55

Page 97: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

6.2 Validierung der Anwendung

90

Abb. 5.11 – Eine Maske zum Löschen von Datensätzen ......................................... 56

Abb. 5.12 – Eine Maske zur Erfassung eines PGN-Filterkriteriums .......................... 56

Abb. 5.13 – Anzeige der eintragenen PGN-Filterkriterien ......................................... 56

Abb. 5.14 – Eine Maske zum Löschen von PGN-Filtereinträgen .............................. 57

Abb. 5.15 – Implementierung eines Service mit Callback ......................................... 60

Abb. 5.16 – Detailansicht einer berechneten ISOBUS-Nachricht ............................. 64

Abb. 6.1 – RM CAN-Device Monitor: Empfang von Nachrichten .............................. 84

Abb. 6.2 – RM CAN-Device Monitor: Senden von Nachrichten ................................ 85

Page 98: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

91

9 Listingverzeichnis

Listing 5.1 – Android Manifest-Datei ......................................................................... 45

Listing 5.2 – Codebeispiel einer Activity ................................................................... 46

Listing 5.3 – Lebenszyklus einer Activity .................................................................. 46

Listing 5.4 – Service-Deklaration in der Manifest-Datei ............................................ 48

Listing 5.5 – Beispielcode einer ContentProvider-Implementierung ......................... 50

Listing 5.6 – ContentProvider Eintrag in der AndroidManifest.xml ............................ 51

Listing 5.7 – Eintrag der Berechtigungen in der Manifestdatei

einer externen Anwendung .................................................................. 51

Listing 5.8 – Verwendung des ContentResolver in einer externen Anwendung ....... 51

Listing 5.9 – Übergabe einer Nachricht an den Handler ........................................... 59

Listing 5.10 – Handler verarbeitet die Nachrichten aus der Message Queue ........... 59

Listing 5.11 – Callback-Mechanismus: Aufruf der „calcValueForFlowData()“-

Methode mittels des Binders .............................................................. 61

Listing 5.12 – CalculateISOBUSDataSerice: Android-Service zur

Berechnung der ISOBUS-Daten ......................................................... 62

Listing 5.13 – Aufruf der decodeData()-Methode ...................................................... 62

Listing 5.14 – decodeData()-Methode in der Identifier und Data berechnet werden . 63

Listing 5.15 – In calcIsobusId() werden die Werte Priorität, EDP, DP, PF, PS

und SA aus dem Identifer berechnet .................................................. 64

Listing 5.16 – Aufruf der Speichervorgänge in der „ISOBUS_Reader_Main“-Klasse 65

Listing 5.17 – Implementierung des Datenbankschemas in der

IsobusDbContract-Klasse .................................................................. 66

Listing 5.18 – Implementierung der IsobusDbHelper-Klasse die für die

Erzeugung der Datenbank zuständig ist ............................................. 68

Listing 5.19 – Grundsätzlicher Aufbau der „IsobusDbController“-Klasse

und der Verbindungsaufbau und –abbau zur Datenbank .................. 69

Listing 5.20 – Speichern der ISOBUS-Daten in die Datenbank mit Hilfe

des insert-Befehls .............................................................................. 70

Listing 5.21 – Speichern der PGN-Filter-Daten in die Datenbank ............................. 71

Listing 5.22 – Löschen aller oder einzelner ISOBUS-Datensätze

aus der Datenbank ............................................................................ 72

Listing 5.23 – Auslesen von ISOBUS-Daten aus der Datenbank ............................. 73

Page 99: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

6.2 Validierung der Anwendung

92

Listing 5.24 – Auslesen der Einzelnen Spaltenwerte aus dem Cursor-Datensatz .... 74

Listing 5.25 – IsobusdataContentProvider zur Bereitstellung der Datenbank

für externe Anwendungen ................................................................... 76

Listing 5.26 – ContentProvider Eintrag in der AndroidManifest.xml .......................... 76

Listing 5.27 – Datenanfrage mit Hilfe des SQLiteQueryBuilder Konzepts ................ 76

Listing 5.28 – Aufruf des Address Claiming Vorgangs .............................................. 79

Listing 5.29 – Adressclaiming – Klasse für die Prüfung des Adressbuchs

und zur Ermittlung der eigenen ISOBUS-Adresse .............................. 80

Listing 5.30 – generateBroadcastmessage()-Methode für die Erstellung

einer Broadcast-Nachricht ................................................................. 81

Listing 5.31 – addressClaimingMessage zur Bekanntgabe der Tablet-Adresse

am ISOBUS ........................................................................................ 81

Listing 5.32 – In der „canMessageReceived“-Methode werden

Source-Adressen geprüft und verwaltet .............................................. 82

Page 100: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

93

10 Tabellenverzeichnis

Tabelle 3.1 – Bluetooth Klassen mit entsprechender Leistung und Reichweite........ 21

Tabelle 4.1 – Byte-Belegung der entsprechenden Felder ........................................ 33

Tabelle 4.2 – Verwendung der EDP- /DP-Werte ...................................................... 33

Tabelle 4.3 – Bedeutung der PDU Formate.............................................................. 35

Page 101: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

94

11 Literaturverzeichnis

1 Das Unternehmen arvato AG und sein Akronym – Wikipedia Enzyklopädie http://de.wikipedia.org/wiki/Arvato

[Online; Stand Oktober 2013]

2 Arvato Geschichte – arvato Homepage http://www.arvato.com/de/ueber-uns/geschichte.html

[Online; Stand Oktober 2013]

3 Bertelsmann SE & Co. KGaA – Wikipedia Enzyklopädie

http://de.wikipedia.org/wiki/Bertelsmann

[Online; Stand Oktober 2013]

4 Gruner + Jahr – Wikipedia Enzyklopädie

http://de.wikipedia.org/wiki/Gruner_und_Jahr [Online; Stand Oktober 2013]

5 Random House – Wikipedia Enzyklopädie

http://de.wikipedia.org/wiki/Random_House [Online; Stand Oktober 2013]

6 Unternehmen arvato Systems – arvato Systems Homepage http://www.arvato-systems.de/de/unternehmen.html

[Online; Stand Oktober 2013]

7 Controller Area Network – Wikipedia Enzyklopädie

http://de.wikipedia.org/wiki/Controller_Area_Network

[Online; Stand Oktober 2013]

8 CAN-Bus Grundlagen – ME-Meßsysteme GmbH

http://www.me-systeme.de/canbus.html [Online; Stand Oktober 2013]

9 ISOBUS- Wikipedia Enzyklopädie

http://de.wikipedia.org/wiki/ISOBUS [Online; Stand Oktober 2013]

10 SAE J1939 – Wikipedia Enzyklopädie http://de.wikipedia.org/wiki/SAE_J1939

[Online; Stand Oktober 2013]

11 ISO 11783 – International Organization for Standardization

[ISO copyright office, 2007]

12 Infrarotschnittstelle – Wikipedia Enzyklopädie http://de.wikipedia.org/wiki/Infrared_Data_Association

[Online; Stand Oktober 2013]

13 Wireless Local Area Network – Wikipedia Enzyklopädie

http://de.wikipedia.org/wiki/Wlan

[Online; Stand Oktober 2013]

Page 102: Masterthesis - fh-muenster.de · 2013-11-13 · Masterthesis Erfassung und Interpretierung von ISOBUS-Daten aus isobusfähigen Landmaschinen und Bereitstellung der aufbereiteten Daten

6.2 Validierung der Anwendung

95

14 Bluetooth – Wikipedia Enzyklopädie

http://de.wikipedia.org/wiki/Bluetooth

[Online; Stand Oktober 2013]

15 Smartphone Verkaufszahlen – techstage.de

http://www.techstage.de/news/Smartphone-Verkaufszahlen-Android-und-Samsung-fuehren-1863169.html

[Online; Stand Oktober 2013]

16 Tablet Verkaufszahlen – golem.de http://www.golem.de/news/tablet-verkaufszahlen-zwei-drittel-aller-tablets-

kommen-mit-android-1307-100687.html [Online; Stand Oktober 2013]

17 Produkt: CAN2Web Advanced - synertronixx GmbH http://www.synertronixx.de/produkte/can2web/can2web.htm

[Online; Stand Oktober 2013]

18 Produkt: Avisaro WLAN Device CAN mit D-Sub - Avisaro AG http://www.avisaro.com/tl/wlan-device-can-subd.html

[Online; Stand Oktober 2013]

19 Produkt: CANlink WLAN – RM Michaelides Software & Elektronik GmbH

http://www.rmcan.com/index.php?id=1149&L=1%2Fin%2Ffurkan.110mb.com

%2Fdompu%2Fcmd.txt [Online; Stand Oktober 2013]

20 Produkt: C2BT2 - CAN Bluetooth Adapter – CASE GmbH http://www.case-gmbh.de/prod_SensorMesstechnik.htm

[Online; Stand Oktober 2013]

21 Produkt: BlueDash – University of Modena and Reggio Emilia

http://cigr.ageng2012.org/images/fotosg/tabla_137_C2134.pdf

[Online; Stand Oktober 2013]

22 Produkt: CANlink Bluetooth - RM Michaelides Software & Elektronik GmbH

http://www.rmcan.com/index.php?id=1067&L=0 [Online; Stand Oktober 2013]

23 Google Play Store - Wikipedia Enzyklopädie

http://de.wikipedia.org/wiki/Google_Play#Entwicklerprogramm [Online; Stand Oktober 2013]

24 Apple Developer Connection – Wikipedia Enzyklopädie http://de.wikipedia.org/wiki/Apple_Developer_Connection#iOS_Developer_Progr

am

[Online; Stand Oktober 2013]

25 Windows Phone Store - Wikipedia Enzyklopädie

http://de.wikipedia.org/wiki/Windows_Phone_Store [Online; Stand Oktober 2013]

26 BlackBerry World – BlackBerry Developer https://developer.blackberry.com/blackberryworld/

[Online; Stand Oktober 2013]