Sie sind auf Seite 1von 23

Inhaltsverzeichnis 2

Inhaltsverzeichnis

Sperrvermerk ....................................................................................................... 1

Inhaltsverzeichnis................................................................................................ 2

Abkürzungsverzeichnis....................................................................................... 3

1 Einleitung .................................................................................................. 4

2 Raspberry Pi.............................................................................................. 6
2.1 Grundlagen ................................................................................................. 6
2.2 Einrichtung .................................................................................................. 6
2.2.1 Betriebssystem und Grundeinstellungen ..................................................... 6
2.2.2 Kapazitätsbeschränkung aufheben – Expand Filesystem ........................... 7
2.2.3 Netzwerkverbindung und Fernzugriff .......................................................... 8

3 Technische Umsetzung Hochregallager ................................................. 9

4 Ausblick................................................................................................... 12

Anhang ............................................................................................................... 13

Ehrenwörtliche Erklärung ................................................................................. 23

Literaturverzeichnis ........................................................................................... 24

Elektronischer Anhang...................................................................................... 25
Abkürzungsverzeichnis 3

Abkürzungsverzeichnis
ADSL Asymmetric Digital Subscriber Line

BCM Broadcom (Firma)

ERP Enterprise Resource Planning

GPIO General Purpose Input Output

IT Informationstechnologie

OS Operating System

RaspPi Raspberry Pi

SSH Secure Shell

VNC Virtual Network Computing


Einleitung 4

1 Einleitung
Der Bereich der wertschöpfenden Industrie in Deutschland ist mit einem Anteil von etwa
25 Prozent am Bruttoinlandprodukt im internationalen Vergleich zwischen Hochlohnlän-
dern enorm groß.1 Hierfür wurde Deutschland von anderen Ländern, welche in der Ver-
gangenheit vor allem auf die Entwicklung zur Dienstleistungsgesellschaft hingearbeitet
haben, oftmals belächelt. Aufgrund der wachsenden Globalisierung und dem zunehmen-
den Wettbewerb aus Billiglohnländern galt es als fragwürdig, ob ein solch hoher Indust-
rieanteil in einem Land mit vergleichsweise hohen Löhnen fortwährend haltbar sei. Trotz
aller Herausforderungen gelingt es Deutschland ein Industrieland zu bleiben und ver-
dankt gerade diesem großen Industrieanteil einen maßgeblichen Beitrag zu seinem Han-
delsbilanzüberschuss.2 Dies ist vor allem dem breiten Branchenspektrum, einer hetero-
genen Größenstruktur der Unternehmen aber auch deren Innovationsfähigkeit zu ver-
danken. Im Sinne von Innovation und notwendiger Weiterentwicklung tritt seit geraumer
Zeit das Stichwort „Industrie 4.0“ in den Vordergrund. Als eines von 10 Projekten aus der
Hightech-Strategie 2020 der Bundesregierung verlangt es nach einer erneuten, vierten
industriellen Revolution. Nachdem die Mechanisierung, Automatisierung und die Digita-
lisierung die etablierten Standards schufen, beschreibt diese Vision im Kern das Streben
nach einer zukunftssicheren Optimierung der unternehmerischen Prozesse, indem nun
die Vernetzung von „[…] industrieller Infrastruktur und allen an der Wertschöpfung be-
teiligter Akteure […]“3 Ziel dieser nächsten Wandlung sein soll. Interessanterweise blieb
die verarbeitende Industrie, gerade im Bereich der Produktion, von drastischen Verän-
derungen längere Zeit verschont. Während andere Bereiche der Unternehmung, wie bei-
spielsweise die betriebswirtschaftliche Produktionsplanung im Rahmen etablierter ERP-
Software bereits weitgehend IT-gestützt ablaufen, bestehen kaum vergleichbare Anbin-
dungen an die tatsächliche Fertigungssteuerung. Aus heutiger Sicht stehen den traditi-
onell-anmutenden Bereichen eine Auswahl an Technologien mit solidem Reifegrad be-
reit um einen neuen Ansatz zu verwirklichen. Zu nennen sind hier Sensorik, Aktorik, In-
ternet- und Kommunikationstechnologien, Software und Mensch-Maschine-Schnittstel-
len sowie eine Vielzahl weiterer Technologien die in Ihrer Kombination zueinander neue
Funktionen und Möglichkeiten für das Projekt „Industrie 4.0“ bereitstellen. Zentrale An-
strengungen werden sich laut Obermaier (2016) an folgende Punkte richten:

 Datenerfassung und -verarbeitung (in Echtzeit),

1 Vgl. Bundesministerium für Wirtschaft und Technologie - BMWi (2010), Online im Internet.
2 Vgl. Roth, Armin (2016), S. 5.
3 Obermaier, Robert (2016), S. 5.
Einleitung 5

 horizontale und vertikale Vernetzung,


 dezentrale Steuerung (Autonomie) und Assistenzsysteme.

Das Projekt „MAOAM-Logistik“ lehnt sich an die aufgeführten Bestrebungen von Indust-
rie 4.0 an, indem es eine automatisierte und kundenorientierte Distribution zur MAOAM-
Disposition darstellt und eine Vernetzung aller beteiligten Akteure innerhalb der Logis-
tikkette anstrebt. Die vorliegende Arbeit beschäftigt sich mit der technischen Realisie-
rung des Hochregal-Roboters, angefangen bei der Konfiguration der zentralen Steuer-
einheit „Raspberry Pi“ bis zum tatsächlich umgesetzten Schaltplan.

Diese Ausarbeitung behandelt nicht die Entwicklung beziehungsweise die Tests der
Steuerungssoftware mittels Python. Diese Aufgabe wird vom Projektpartner Herrn Phillip
Rohde übernommen und kann seiner schriftlichen Ausarbeitung entnommen werden.4

4 Rohde, Phillip (2016), S. 1.


Raspberry Pi 6

2 Raspberry Pi

2.1 Grundlagen
Als zentrale Steuereinheit für den Hochregal-Roboter wird ein Raspberry Pi Version 3
verwendet. Der RaspPi eignet sich dank einem vergleichsweise niedrigen Anschaffungs-
preis und dem breiten Einsatzspektrum als ideale Basis für das umgesetzte Projekt.5 Der
Roboter selbst wird mittels Fischertechnik aus der Reihe „ROBO TX Automation Robots“
größtenteils nach Standardbauplan realisiert. Einige wenige Modifikationen sind der Ka-
belführung sowie dem erhöhten Platzanspruch zur Unterbringung des Raspberry Pi und
Breadboard geschuldet. Dieser ist, mittels drei voneinander separat angesteuerten Ser-
vomotoren, in der Lage über einen zentralen Eingabe- und Ausgabepunkt die MAOAM
Pakete in das Lager ein- beziehungsweise auszulagern.

2.2 Einrichtung

2.2.1 Betriebssystem und Grundeinstellungen

Als Betriebssystem wird die für die Nutzung optimierte, auf Debian basierende Distribu-
tion Raspbian (in der Version „Jessie“) verwendet, welches durch die Raspberry Pi Foun-
dation als offiziell unterstütztes OS empfohlen wird. Um Probleme und Fehler im Vor-
hinein möglichst auszuschließen wird die aktuelle, stabile Kernel Version 4.4 genutzt.
Diese steht zum freien Download unter dem Link „Raspbian“ auf der Homepage der
Raspberry Pi Foundation bereit. Das heruntergeladene Betriebssystemimage kann mit-
tels eines entsprechenden Softwaretools auf eine MicroSD-Karte aufgespielt werden. Im
Rahmen dieses Projektes haben wir uns für die kostenlose Software „Win32 Disk Ima-
ger“ entschieden. Es handelt sich hierbei um ein kompaktes, leicht bedienbares Tool
durch das ein bespielen des Speichermediums wie auch dessen Sicherung ermöglicht
wurde.6 Hierbei muss eine Speicherkapazität größer 4 Gigabyte genutzt werden, da die
meisten SD-Karten dieser Größenordnung über eine effektive Kapazität von etwa 3,67
Gigabyte verfügen und das verwendete Betriebssystem etwa 3,75 Gigabyte einnimmt.

Im nächsten Schritt werden die neuesten Updates für das Betriebssystem gesucht und
installiert. Dafür werden in der Konsole (LX Terminal) die folgenden Befehle verwendet:

5 Vgl. Merkert, Johannes (2016), S. 84.


6 Anhang 1: Win32 Disk Imager – Raspbian Jessie wird auf den Flash-Speicher geschrieben
Raspberry Pi 7

 $ sudo apt-get update


 $ sudo apt-get upgrade

Alle Anweisungen werden mittels „sudo“ (Kurzform von: Super User Do) mit Administra-
torrechten ausgeführt. „Apt-get update“ liest alle Paketquellen neu ein um die aktuellen
Informationen zu den verwendeten Paketen zu erhalten. Durch die Befehlszeile „apt-get
upgrade“ werden Pakete gemäß der aktualisierten Informationsliste heruntergeladen
und installiert. Denkbar ist an dieser Stelle auch die Verwendung der Befehlszeile „$
sudo apt-get dist-upgrade“ bei der im Unterschied zu „$ sudo apt-get upgrade“ nicht nur
die bereits installierten Pakete aktualisiert werden, sondern auch Pakete für die sich Ab-
hängigkeiten zu anderen geändert haben. Hierbei werden jedoch auch diejenigen Pa-
kete entfernt zu denen keine Abhängigkeiten mehr bestehen, weshalb die Aktualisierung
mittels „$ sudo apt-get dist-upgrade“ als vollständiger und normalerweise korrektere
Weg gesehen wird.7

Zum Abschluss der Grundeinstellungen wird über die grafische Oberfläche der Geräte-
name wie auch die Login-Daten festgelegt. Über den Pfad „Menü  Preferences“ ge-
langt man zum Optionsfenster „Raspberry Pi Configuration“ über welches die zuvor ge-
nannten Einstellungen wie folgt übernommen wurden:8

 Gerätename: „pi-ft-r1“
 Authentisierung als berechtigter Nutzer: „Pi“
 Passwort: „fhdw1234“

2.2.2 Kapazitätsbeschränkung aufheben – Expand Filesystem9

Gemäß dem Standard wird das Root-Dateisystem auf maximal 2 Gigabyte beschränkt,
weshalb eine durch die SD-Karte technisch zur Verfügung gestellte größere Speicher-
kapazität nicht ausgenutzt werden kann. Mit dem Befehl „$ sudo raspi-config“ kann das
Konfigurationsprogramm aufgerufen werden durch welches Anpassungen an den
Bootoptionen und der Systemkonfiguration durchgeführt werden können. Mit Auswahl
der Option „Expand Filesystem“ wird diese Beschränkung aufgehoben und der gesamte
Speicherplatz der Speicherkarte kann nach einem Neustart des Systems verwendet wer-
den.

7 Vgl. Schnabel, Patrick (ohne Angabe), Online im Internet.


8 Anhang 2: Raspbian Jessie – System Configuration
9 Vgl. Dembowski, Klaus (2015), S. 22–28.
Raspberry Pi 8

2.2.3 Netzwerkverbindung und Fernzugriff

Bis zu diesem Zeitpunkt verwendet der Raspberry Pi eine Netzwerkfreigabe über das
lokal verbundene Notebook. Alle Arbeiten werden noch über den RasPi direkt, das heißt
mittels angeschlossener Eingabe- / Ausgabe-Hardware, vorgenommen. Da der Rasp-
berry Pi mit der Version 3 über einen festverbauten WLAN-Chip verfügt, bietet es sich
an das Gerät per Fernzugriff zu steuern. Zur Konfiguration des drahtlosen Netzwerks
werden die folgenden Einstellungen mit dem Nano-Editor in der Kommandozeile vorge-
nommen:10

 Automatische Verbindung zum WLAN mittels Eintrag „allow-hotplug wlan0“


 Netzwerkadresse als statisch definieren mittels Eintrag „iface wlan0 inet static“
 Festlegung der statischen IP-Adresse „address 172.20.10.9“
 Festlegung der Subnet-Maske „netmask 255.255.255.240“
 Angabe des Standard-Gateways „gateway 172.20.10.1“

Nachdem der RasPi sich nun automatisch mit dem drahtlosen Netzwerk verbindet und
eine fest zugewiesene IP-Adresse nutzt, ist es möglich, Tastatur, Maus und Desktop
mithilfe von Virtual Network Computing (VNC) über ein Notebook oder andere Computer
im Netzwerk zu steuern. Wie für SSH- gibt es auch für VNC-Verbindungen verschiedene
Software-Lösungen. Wir haben uns im Rahmen dieses Projektes für „Tight VNC“ ent-
schieden, da es ein kostenloses Tool und auf verschiedenen Plattformen einsetzbar ist.
Das Paket wird durch den Befehl „$ sudo apt-get install tightvncserver“ installiert. Im
Anschluss werden in der Datei „rc.local“ (nano /etc/rc.local) folgende Einträge vorgenom-
men:

 „sudo vncserver :1“


 „sudo vncserver :2“

Durch die aufgeführten Änderungen in dieser Datei wird erreicht, dass der zuvor instal-
lierte Tight VNC Server nach einem erfolgreichen Bootvorgang automatisch gestartet
wird. Als Client wird die Tight VNC-Windows-Software benötigt, die ebenfalls zum kos-
tenfreien Download direkt über den Hersteller zur Verfügung steht. Zum Verbindungs-
aufbau wird die Netzwerkadresse des Raspberry Pi und der standardisierte Basisport für
TightVNC 5900 verwendet. Da zwei Instanzen des Servers durch die Einträge in „rc.lo-
cal“ gestartet werden, ist es auf Client-Seite möglich unter Angabe der Ports 5901 und
5902 mittels zwei voneinander unabhängigen Instanzen auf den RasPi zuzugreifen.11

10 Anhang 3: Raspbian Jessie - Netzwerkkonfiguration


11 Vgl. Dembowski, Klaus (2015), 155f.
Technische Umsetzung Hochregallager 9

3 Technische Umsetzung Hochregallager12


Bei der Konstruktion des Hochregal-Roboters zeigt sich schnell, dass dieser mittels der
Servomotoren auf drei Achsen arbeiten wird. Die Definition dieser brachte folgendes Er-
gebnis:13

 Achse 1 „Basis“: Vorwärts- und Rückwärtsbewegung des kompletten


Roboters
 Achse 2 „Vertikal“: Auf- und Abwärtsbewegung des Roboterarms
 Achse 3 „Arm“: Ein- und Ausfahren des Roboterarms

Jede Achse besteht aus einem 9-Volt Elektromotor und zwei analogen Tastern. Die Tas-
ter dienen zur Limitierung der Achsenbewegung beziehungsweise als Signalgeber zur
Richtungsänderung. Damit die anliegende Spannung über die Taster „sauber“ abfällt
und somit ein eindeutiges, mit der „True/False“-Logik eines digitalen Bauteils vergleich-
bares, Signal an die entsprechenden GPIO-Pins geliefert wird sind Widerstände zwi-
schengeschaltet.

Die Steckerleiste auf einer Raspberry Pi-Platine führt verschiedene Signale, die zusam-
mengefasst unter General Purpose Input Output (GPIO) geführt werden.14 Der hier um-
gesetzte Schaltplan wie auch der Python-Code verwendet den BCM-Modus der dafür
sorgt, dass die GPIO-Pins mit Ihrer GPIO-Nummer anstatt der Pin-Nummer angespro-
chen werden.15 Das Interface arbeitet mit einer Spannung von 3,3 Volt. Die Signale wer-
den direkt vom BCM2835-Chip zur Verfügung gestellt, so dass darauf zu achten ist an
den Pins keine höheren Spannungen anzulegen da sonst der Chip aufgrund fehlender
Schutzschaltungen zerstört werden kann.16 Aufgrund der begrenzten Anzahl stromfüh-
render Pins auf dem RaspPi selbst wird ein Breadboard verwendet.17 Es ermöglicht die
Verteilung von Signalen beziehungsweise Strom eines Pins auf weitere Komponenten
mittels mehrerer Steckanschlüsse. Die Anzahl der GPIOs selbst erhöht sich dabei nicht.
In der realisierten Schaltung dient die Verwendung des Breadboards zu:

 Zentralem Abgriff von 3,3 Volt Spannung an GPIO Pin 1 für die Taster 1 bis 6
 Zentralem Abgriff von 9 Volt Spannung für die drei Servomotoren
 Besseren Übersicht durch Beschriftung und erhöhtes Platzangebot

13 Verweis Rohde, Phillip (2016), S. 1–2.


14 Anhang 4: GPIO Layout für die Modelle Pi 1 Model A+, Pi 1 Model B+, Pi 2 Model B und Pi 3 Model B
15 Vgl. Merkert, Johannes (2016), S. 86.
16 Vgl. Dembowski, Klaus (2015), S. 112.
17 Anhang 5: Lötfreies Breadboard mit 400 Anschlusspunkten
Technische Umsetzung Hochregallager 10

Jede Drehrichtung der Servomotoren wird aus Sicht der Raspberry Pi GPIO-Pins als
Output definiert, während die Taster als Input festgelegt werden. Die einzelnen RaspPi
Pins registrieren beziehungsweise geben somit sinngemäß ein „Strom an“- oder „Strom
aus“-Signal. Für die Logik in der später umgesetzten Software bedeutet dies nichts an-
deres als die digitale Umsetzung eines klassischen Boolean-Werts, repräsentiert durch
„True“ und „False“ oder anders ausgesprochen der Integer-Variante 0 und 1.18 Die Taster
sind so geschaltet, dass der Stromkreis geschlossen ist solange keine Berührung durch
die Bewegung der Roboterkomponenten gegeben ist. Das Bedeutet, dass die entspre-
chenden GPIO-Pins solange ein Signal erhalten und damit „True“ registrieren bis der
Taster ausgelöst und die Stromführung damit unterbrochen wird. Die Ansteuerung der
drei Motoren erfolgt mithilfe von zwei H-Brücken. Eine H-Brücke ermöglicht nicht nur die
separate Ansteuerung von zwei aufgeschalteten Motoren, sondern auch die Steuerung
der Drehrichtung von den einzelnen Servomotoren selbst. Je nach Eingangssignal auf
den H-Brücken-Pins IN1, IN2 für Motor 1 beziehungsweise IN3, IN4 für Motor 2 schaltet
die H-Brücke die Spannung und den Strom im Brückenzweig auf die Servomotoren
durch. Dadurch ergibt sich die Möglichkeit, durch Signale auf den Eingangspins (IN1 –
IN4) welche durch in Python-Code verwaltete GPIO-Outputs angesteuert werden und
einer einzigen geschalteten 9 Volt Spannungsquelle, die angeschlossenen Servomoto-
ren sowohl Vorwärts als auch Rückwärts drehen zu lassen.

Im Detail ergibt sich folgende Steuerung:

Ein Auslösen der Taster, durch die Bewegungen auf den entsprechenden Achsen, än-
dert den Wert des GPIO-Inputs von „Strom an“ zu „Strom aus“. Der durch Herrn Rohde
umgesetzte Python-Code erkennt die Zustandsänderung der Input-Pins und schaltet die
Ausgangssignale der zugehörigen Output-Pins entsprechend durch. Taster 1 und Taster
2, geschaltet auf die GPIO-Pins 22 und 5, registrieren die Bewegungen auf Achse 2
„Vertikal“. Die Wertänderung steuert den Output der GPIO-Pins 12 und 16, welche auf
die Eingangspins IN1 beziehungsweise IN2 von H-Brücke 1 aufgeschaltet sind. Erhält
IN1 ein Steuersignal über GPIO 12 dreht Motor 1 „hoch“ und entsprechend in die entge-
gengesetzte Richtung, wenn IN2 ein Steuersignal über GPIO 16 erhält. Das gleiche Prin-
zip gilt für die Taster 3 und 4, geschaltet auf die GPIO-Pins 17 und 6 für die Achse 1
„Basis“. Diese Steuern den Output der GPIO-Pins 23 und 18, welche den Eingangspins
IN3 und IN4 von H-Brücke 1 zugewiesen sind. Sie regeln die Drehrichtung von Motor 2
der den gesamten Roboter auf der Basisplatine nach vorne beziehungsweise nach hin-

18 Vgl. Follmann, Rüdiger (2014), S. 160–161.


Technische Umsetzung Hochregallager 11

ten fahren lässt. Die GPIO-Pins 13 und 19 erhalten Ihre Signale über den Taster 5 be-
ziehungsweise Taster 6, welche die Bewegungen der Komponenten aus Achse 3 „Arm“
überwachen. Über sie werden die Output-Signale von GPIO-Pin 20 und 21 bestimmt,
die auf IN1 sowie IN2 von H-Brücke 2 aufgeschaltet sind. Durch Motor 3 ist der Robo-
terarm in der Lage MAOAM-Pakete entweder vom zentralen Aufnahmepunkt oder aber
im Hochregal ein- beziehungsweise auszulagern.19

19 Verweis auf Anhang 8: Python-Code zur Steuerung des Hochregal-Roboters


Ausblick 12

4 Ausblick
Das Potential des Hochregallager-Roboters ist durch eine Vielzahl denkbarer techni-
schen Erweiterungen des Raspberry Pi noch lange nicht ausgeschöpft. Im aktuellen Zu-
stand ist unser Roboter in der Lage die Waren über eine zentrale Stelle anzunehmen
beziehungsweise abzugeben und die MAOAM-Blöcke an eine im Voraus festgelegte Po-
sition im Regallager ein- und auszulagern. Aus dieser Situation heraus ergeben sich
schnell neue Ideen für weitere Verbesserungen des Systems. Zunächst erkennt unser
Roboter zu keinem Zeitpunkt, welche MAOAM-Sorte gerade umgelagert werden. Zum
anderen werden die Lagerplätze selbst nicht automatisiert verwaltet. Noch liegt es an
uns, den Usern, den Überblick über Sorte und Lagerplatz der MAOAM-Ware zu behal-
ten. Erweitert werden könnte das System durch den Verbau und intelligenten Verwen-
dung einer Kamera oder anderen Sensoren, welche die Sorte der Süßigkeiten beispiels-
weise anhand der Farbgebung identifizieren kann oder aber einen zuvor angebrachten
QR-Code einlesen und somit eindeutige Informationen erhält. Mit Hilfe der Kamera
könnte der Roboter ebenfalls erkennen, ob an bestimmtem Positionen im Lager bereits
Waren lagern oder als freie Plätze zur Verfügung stehen. Mittels einer durch das System
gemanagten Datenbank kann so erreicht werden, dass der Roboter die Ein- beziehungs-
weise Auslagerung als auch die vorhandenen Lagerplätze vollautomatisch verwaltet.
Anhang 13

Anhang
Anhang 1: Win32 Disk Imager – Raspbian Jessie wird auf den Flash-Speicher
…...geschrieben ....................................................................................... 14
Anhang 2: Raspbian Jessie – System Configuration............................................ 14
Anhang 3: Raspbian Jessie - Netzwerkkonfiguration ........................................... 15
Anhang 4: GPIO Layout für die Modelle Pi 1 Model A+, Pi 1 Model B+, Pi 2
…...Model B und Pi 3 Model B.................................................................. 16
Anhang 5: Lötfreies Breadboard mit 400 Anschlusspunkten ................................ 16
Anhang 6: Schaltplan Fischer Technik Hochregallager mit Raspberry Pi ............. 17
Anhang 7: Ansicht Fischer Technik Hochregallager mit Raspberry Pi nach
…..Fertigstellung ...................................................................................... 18
Anhang 8: Python-Code zur Steuerung des Hochregal-Roboters ........................ 19
Anhang 14

Anhang 1: Win32 Disk Imager – Raspbian Jessie wird auf den Flash-Speicher geschrieben

Quelle: Eigene Erstellung

Anhang 2: Raspbian Jessie – System Configuration

Quelle: Eigene Erstellung


Anhang 15

Anhang 3: Raspbian Jessie - Netzwerkkonfiguration

Quelle: Eigene Erstellung


Anhang 16

Anhang 4: GPIO Layout für die Modelle Pi 1 Model A+, Pi 1 Model B+, Pi 2 Model B und Pi 3 Model B

Quelle: http://www.raspberrypi-spy.co.uk/wp-content/uploads/2012/06/Raspberry-Pi-GPIO-Layout-Model-
B-Plus-rotated-2700x900-1024x341.png

Anhang 5: Lötfreies Breadboard mit 400 Anschlusspunkten

Quelle: oomlout (BREB-01 (Breadboard)) [CC BY-SA 2.0 (http://creativecommons.org/licenses/by-sa/2.0)],


via Wikimedia Commons: https://commons.wikimedia.org/wiki/File%3A400_points_breadboard.jpg
Anhang 17

Anhang 6: Schaltplan Fischer Technik Hochregallager mit Raspberry Pi

Quelle: Eigene Erstellung


Anhang 18

Anhang 7: Ansicht Fischer Technik Hochregallager mit Raspberry Pi nach Fertigstellung

Quelle: Eigene Erstellung


Anhang 19

Anhang 8: Python-Code zur Steuerung des Hochregal-Roboters


#!/usr/bin/python
#
# Hochregallager-Roboter v1.0
# Projekte der Wirtschaftsinformatik
#
# Written by:
# Stephan Karch - bfwi414aka
# Phillip Rohde - bfwi414aro
#
#26.08.2016
#
# Einlagern von MAOAM
# Auslagern von MAOAM
#
# Ereignis- und Zeitgesteuert.
##

#IMPORT
import RPi.GPIO as GPIO
import time
import socket

try:
#PIN Settings
GPIO.setmode(GPIO.BCM)

#Arm Forwards/Backwards
GPIO.setup(18, GPIO.OUT) #Orange / Forwards
GPIO.setup(23, GPIO.OUT) #Red / Backwards
GPIO.setup(6, GPIO.IN) #White / Forwards
GPIO.setup(17, GPIO.IN) #White / Backwards

#Move Base left/right


GPIO.setup(20, GPIO.OUT) #Blue / Left
GPIO.setup(21, GPIO.OUT) #Green / Right
GPIO.setup(12, GPIO.IN) #Green / Right
GPIO.setup(13, GPIO.IN) #Blue / Left

#Vertical
GPIO.setup(19, GPIO.OUT) #Blue / Up
GPIO.setup(16, GPIO.OUT) #Purple / Down
GPIO.setup(22, GPIO.IN) #Purple / Up
GPIO.setup(5, GPIO.IN) #Purple / Down

## Clean up
## Disable GPIOs
def cleanPINs():
print "Disabling PINs..."
#Clean arm pins
GPIO.output(18, GPIO.LOW)
GPIO.output(23, GPIO.LOW)
#Clean base pins
GPIO.output(20, GPIO.LOW)
GPIO.output(21, GPIO.LOW)
#Clean vert pins
GPIO.output(19, GPIO.LOW)
GPIO.output(16, GPIO.LOW)

GPIO.cleanup()
Anhang 20

print "Disabling PINs done..."


return

# Definition
def moveArm( dir, dur = 2 ):
"Moves the arm into given direction: f/b"
print dir
if(dir=="f"):
"forward"
while(GPIO.input(6)):
GPIO.output(18, GPIO.HIGH)

GPIO.output(18, GPIO.LOW)
else:
"backwards"
while(GPIO.input(17)):
GPIO.output(23, GPIO.HIGH)

GPIO.output(23, GPIO.LOW)
return

def moveBase( dir, dur = 5, sw = 0):


"Moves the whole base into given direction: l/r"
print dir
if(dir=="l"):
"left"
if(sw==0):
GPIO.output(20, GPIO.HIGH)
time.sleep(dur)
GPIO.output(20, GPIO.LOW)
else:
while(GPIO.input(13)):
GPIO.output(20, GPIO.HIGH)

GPIO.output(20, GPIO.LOW)
else:
"right"
if(sw==0):
GPIO.output(21, GPIO.HIGH)
time.sleep(dur)
GPIO.output(21, GPIO.LOW)
else:
while(GPIO.input(12)):
GPIO.output(21, GPIO.HIGH)

GPIO.output(21, GPIO.LOW)
return

def moveVert( dir, dur = 3, sw = 0):


"Moves the arm up and down: u/d"
print dir
if(dir=="u"):
"up"
if(sw==0):
GPIO.output(19, GPIO.HIGH)
time.sleep(dur)
GPIO.output(19, GPIO.LOW)
else:
while(GPIO.input(22)):
GPIO.output(19, GPIO.HIGH)
Anhang 21

GPIO.output(19, GPIO.LOW)
else:
"down"
if(sw==0):
GPIO.output(16, GPIO.HIGH)
time.sleep(dur)
GPIO.output(16, GPIO.LOW)
else:
while(GPIO.input(5)):
GPIO.output(16, GPIO.HIGH)

GPIO.output(16, GPIO.LOW)
return

#Reset to start positions


def retDef():
print "RESETTING..."
#Move arm back
print "Resetting arm..."
while(GPIO.input(17)):
GPIO.output(23, GPIO.HIGH)

GPIO.output(23, GPIO.LOW)

#Move base left


print "Resetting base..."
while(GPIO.input(13)):
GPIO.output(20, GPIO.HIGH)

GPIO.output(20, GPIO.LOW)

#Move up
print "Resetting vertical..."
while(GPIO.input(22)):
GPIO.output(19, GPIO.HIGH)

GPIO.output(19, GPIO.LOW)
print "Resetting done."
return

## Get Maoam from export area


## Store it in a shelf place.
def getMaoam():
print "Getting MAOAM..."

#Move to maoam
moveBase("r",0.4,0)
moveVert("d",4.2)
moveArm("f",3.5)

#Pick up maoam
moveVert("u",0.5)
moveArm("b",3.5)

#Move to export area


moveBase("r",0,1)
moveBase("l",0.2,0)
moveArm("f",3.5)
moveVert("d",3.8)
Anhang 22

#Send notification!
#END
return

## Get a MAOAM from a shelf place


## Move it to the export area
def setMaoam():
print "Setting MAOAM..."
moveBase("r",0,1)
moveBase("l",0.2,0)
moveVert("d",0,1)
moveArm("f",3.5)
moveVert("u",0.5)
moveArm("b",3.5)

#Reset to basis - Easier


moveVert("u",0,1)
moveBase("l",0,1)
moveBase("r",0.4,0)

moveVert("d",3.5)
moveArm("f",3.5)
moveVert("d",0.7)
moveArm("b",3.5)

return

#Reset - Just because


retDef()

## MAIN
## RUN ROBOT, RUN
setMaoam()
retDef()
time.sleep(4)
getMaoam()
retDef()

cleanPINs()

except KeyboardInterrupt:
print "Interrupt!"
cleanPINs()

Quelle: Eigene Erstellung in Zusammenarbeit mit Herrn Phillip Rohde


Ehrenwörtliche Erklärung 24

Literaturverzeichnis
Buchquellen

Dembowski (2015): Dembowski, Klaus: Raspberry Pi - das technische Handbuch -


Konfiguration, Hardware, Applikationserstellung. (Lehrbuch), Springer Vieweg, Wiesba-
den, 2015.

Follmann (2014): Follmann, Rüdiger: Das Raspberry Pi Kompendium. (Xpert.press),


Springer Vieweg, Berlin, 2014.

Merkert (2016): Merkert, Johannes: Originelle Raspi-Projekte - Nützliche, nerdige und


neue Ideen für den Raspberry Pi. In: c`t, 10/2016, S. 82–110.

Obermaier (2016): Obermaier, Robert: Industrie 4.0 als unternehmerische Gestaltungs-


aufgabe - Betriebswirtschaftliche, technische und rechtliche Herausforderungen, Sprin-
ger, Wiesbaden, 2016.

Rohde (2016): Rohde, Phillip: Python-Steuerung eines Hochregallager-Roboters im


Rahmen des MAOAM-Logistik-Projekts. Schriftliche Ausarbeitung, Fachhochschule der
Wirtschaft: Informatik, Bergisch Gladbach, Letzter Abruf: 25.09.2016.

Roth (2016): Roth, Armin: Einführung und Umsetzung von Industrie 4.0 - Grundlagen,
Vorgehensmodell und Use Cases aus der Praxis, Springer, Heidelberg, 2016.

Internetquellen

Bundesministerium für Wirtschaft und Technologie - BMWi (2010): Bundesministerium


für Wirtschaft und Technologie - BMWi: Im Fokus: Industrieland Deutschland - Stärken
ausbauen - Schwächen beseitigen - Zukunft sichern, https://www.bmwi.de/BMWi/Re-
daktion/PDF/im-fokus-industrieland-deutschland,property=pdf,bereich=bmwi,spra-
che=de,rwb=true.pdf, Letzter Abruf: 28.09.2016.

Schnabel (ohne Angabe): Schnabel, Patrick: Elektronik Kompendium - Betriebssystem


und Software beim Raspberry Pi aktualisieren, https://www.elektronik-kompen-
dium.de/sites/raspberry-pi/2002041.htm, Letzter Abruf: 28.09.2016.
Elektronischer Anhang 25

Elektronischer Anhang