, ist nicht immer leicht zu erkennen. Aber schließlich werde ich dafür engagiert, eben dies heraus zu finden und Fehlinterpretationen im Nachhinein zu korrigieren.
Daran ändert auch kein V- / Wasserfall- / [toller Begriff hier] - Modell! Ohne Kenntnis über den Kundencharakter, kann man mit diesen Modellen auch ganz schnell wieder nach Hause fahren, gleich welche Größe oder Gewichtung der Kunde hat.
Für mich als Entwickler, gerade im Bereich der Softwareerstellung, ist dies ein unzumutbarer Vorgang und lässt mich in einem Zustand der völligen Orientierungslosigkeit zurück, wenn ich den Dialog und die Planung nicht über ein solches Modell kommunizieren kann. Die Orientierung kann dadurch zurück gewonnen werden, in dem ich nur Arbeitsschritte erledige, die der Kunde mir vorgibt. Womit ich einen Teil der Projektverantwortung zurückgebe und der Kunde Informations- und Kontrollkanäle offen hält.
Im neuen Jahrtausend sollte dieses Modell eigentlich nicht mehr anzutreffen sein, wird aber immer noch praktiziert und gibt beiden Parteien eine gefühlte Sicherheit, sowie klare Strukturen vor.
Sicherheit wird aber auch von einem dritten Objekt verlangt:
Zum Beispiel haben meine Betrachtung des Projekt ergeben, dass ein Gefahrenpotential durch einen Antrieb (o.ä.) besteht.
Ausgestattet mit meinem Wissen und Gewissen, halte ich es für Nötig, dass durch diese Erkenntnis, das Projekt revidiert werden muss und zusätzliche Kosten auf den Kunden zukommen werden.
... $$$ ...
Das will der Kunde nicht und habe ein Dilemma. Für viele meiner Zunft ist dies keins, da für sie gilt: Der Kunde ist König! Quantitativ eine löbliche Einstellung. Meine Einstellung bezieht sich aber auf die Qualität. Und eine gefährliche Anlage genügt keinem qualitativen Anspruch.
Auch ist es für mich kein Leichtes, noch halte ich es für erstrebenswert, dem Kunden die Verantwortung über das Gefahrenpotential voll und ganz zu übertragen, denn unerträglich die Vorstellung, ein Personenschaden wurde von mir verursacht.
Somit fällt auch der gute Rat: "Lass Dir von Kunden unterzeichnen, dass er das genau so will.", weg.
Skrupel und Ängste von Entwickler zu erörtern, gehört nicht in diesen Blog. Wohl aber meine Aufforderung zu mehr Courage im Verhältnis zum Kunden.
Meistens zahlt sich dieses mehr aus, als der wage prognostizierte Verlust von Folgeaufträgen, bei eben diesem Kunden.
Freitag, 26. Oktober 2012
Donnerstag, 30. August 2012
NASA und Android
Vor einiger Zeit habe ich versucht meine Android-Idee im Anlagenbau mit einem ideologischen Zirkel aus dem SPS-Lager zu diskutieren. Einige Befürchtungen haben sich als unbegründet herausgestellt, andere habe ich mir angenommen und werde sie mit Hilfe zukünftiger Projekte genauer Untersuchen und dazu Stellung nehmen.
Ein großer Vorbehalt liegt gegenüber dem Neuen ansich. "Was der Bauer nicht kennt, ..."
Vielleicht hilft mir in Zukunft das Argument: "Sogar die NASA denkt über Android in Steuerungssystemen nach."
Zum Beispiel mit dem PhoneSat 1 & 2. [Link NASA] Neben der Kostenbetrachtung spielt für diesen Versuch auch das hohe Entwicklungspotential und die vielfältige Sensorik eine entscheiden Rolle.
Ein übersetzter Artikel findet sich hier: [Link Golem]
Ein großer Vorbehalt liegt gegenüber dem Neuen ansich. "Was der Bauer nicht kennt, ..."
Vielleicht hilft mir in Zukunft das Argument: "Sogar die NASA denkt über Android in Steuerungssystemen nach."
Zum Beispiel mit dem PhoneSat 1 & 2. [Link NASA] Neben der Kostenbetrachtung spielt für diesen Versuch auch das hohe Entwicklungspotential und die vielfältige Sensorik eine entscheiden Rolle.
Ein übersetzter Artikel findet sich hier: [Link Golem]
Dienstag, 17. Juli 2012
Start
Der hier verwendete Text stammt aus meinem Aufsatz: "Konventionelle SPS vs Android".
Technisch bedingt wird in diesem Blog eine andere Version dieses Aufsatzes dargestellt.
Weiterhin ist der Text in diesem Blog eine vorläufige Version und beinhaltet einige Fehler.
Jeder ist dazu eingeladen, auf den jeweiligen Seiten, seine Kommentare und Meinungen hinzuzufügen.
Inhaltsverzeichnis:
-->
Technisch bedingt wird in diesem Blog eine andere Version dieses Aufsatzes dargestellt.
Weiterhin ist der Text in diesem Blog eine vorläufige Version und beinhaltet einige Fehler.
Jeder ist dazu eingeladen, auf den jeweiligen Seiten, seine Kommentare und Meinungen hinzuzufügen.
Inhaltsverzeichnis:
-->
Mittwoch, 4. Juli 2012
Zeitgeist
-->
An früherer Stelle in diesem Aufsatz wurde die Aussage getätigt, dass
die konventionelle Anlagensteuerung dem Zeitgeist der letzten
siebziger Jahre entspricht.
Dazu
stehe ich und das war die Motivation für diesen Text. Ein heutiges
Studium der Informatik wird obsolet, weil eine Branche sich nicht
modernisieren kann. Fast jedes Kapitel rechtfertigt eine Abhandlung
mit dem Inhalt aus einem Semester, eben jenes Studiums. Daher fallen
einige essentiellen Themen knapper aus, als sie es in diese Arbeit
verdient hätten.
Dabei
ist ein Umbruch ohne größere Schwierigkeiten möglich. Der
benötigte Lernaufwand zum Entwurf und Implementierung von Anlagen
unter Android kann durch die geringeren Beschaffungskosten gedeckelt
werden.
Besser mit ...
-->
Mit mehr Standards
Und wenn
es keinen gültigen Standard gibt, sollte einer geschaffen werden. Eleganter ist es bei
einem Paradigmenwechsel eine Umgebung , quasi als Nährboden zu
verwenden, auf die die oben genannten Problematiken nicht zutreffen.
In diesem
Aufsatz werde ich beweisen, das Android dieser Herausforderung gewachsen ist. Es bietet
mit seinem Linux-Unterbau einen erfrischenden neuen Rahmen, eigene
Steuerungen frei von Lizenzbedingungen zu implementieren und zu
testen. Da ich Lizenzen, nach meiner persönlichen Auffassung, nicht
als zukunftssicheres Geschäftsmodell erachte, widmete ich dieser
Thematik kein eigenes Kapitel unter „Kosten“. Zu vernachlässigen
ist diese Ersparnis aber bei weitem nicht.
In der
Regel entkommt man dadurch ebenfalls einer firmen-kontrollierten
Update-Politik. Dies ist ein enormer Sicherheitsgewinn. Im Ernstfall
werden Haftungsangelegenheiten so lange weitergegeben, bis eine
technische Klärung nicht mehr sinnvoll statt finden kann. Als
Unternehmer agiert man dadurch auf Messers Schneide.
Mit hochintegrierten Geräten
Heutige
Smartphones sehe ich als technologische Weiterentwicklung der
Personal Computer an. Zum Einen, weil sie mit der Tradition
des-immer-schneller brechen und zum anderen, weil sie sich einer ganz
gravierenden Schwäche angenommen haben, nämlich der Bedienbarkeit
von Computer-Systemen.
Was nützt
einem die schnellste CPU und das mühsam auf Geschwindigkeit hin
optimierte Programm, wenn der Benutzer auf die Bearbeitung seiner
Eingaben warten muss oder er zu 'langsam' für die Anlage ist.
Werden
Geräte unter der Prämisse: der guten Bedienbarkeit gebaut, werden sie zwangsläufig
kleiner und fühlen sich schneller an. Für dieses Erlebnis wurde das
Konzept Multitasking (besser: Multithreading) weiter gedacht.
Gemeint
ist mit der Überschrift der hochintegrierten Geräten, die moderne
Ganzheitlichkeit eines EDV-System auf kleinstem Raum. Schnelle
Prozessoren, unbegrenzter Speicherplatz, die Verbindungsmöglichkeiten
über mehrere Wege und die Bedienbarkeit ohne zusätzliche
Peripherie.
Eine
Zukunftsvision schon jetzt in der Hosentasche.
Ein
Alles-in-Einem bietet ein Smartphone selbstredend nicht. Die
Netzwerkfähigkeit macht es möglich das System Android zur Steuerung
von Anlagen zu verwenden. Sei es als weitere Schicht über den schon
bestehenden Anlagen oder als exklusive Baugruppe.
Eine
Variante ist die Regel- und Steuerungsmöglichkeit über das
IOIO-Board und entspricht dem oben genannten Beispiel eines
Android-Systems von ca. 200€.
![]() | |
| Konventioneller Hardwareaufbau |
![]() |
| Hardwareaufbau bei Android |
Mit einer modernen Entwicklungsumgebung
Ein
Programmierer muss ständig einen Überblick über das ganze Projekt
besitzen und dieses effizient verwalten können. Weiterhin muss er
sich auf Details konzentrieren können und das Ganze bei
unterschiedlichen Programmiersprachen. Ein weiterer Pluspunkt wäre
eine optimale Bildschirmausnutzung der Arbeitsflächen.
Weiterhin
wird heutzutage von einer IDE erwartet, dass ein Debugging an der
laufenden Anlage möglich ist. Alleiniges Beobachten reicht nicht
aus.
Das
können nur Entwicklungsumgebungen mit einem Plugin-System. Sie
vereinen dadurch effizient das verteilte Arbeiten bei mehreren
Programmierern am selben Quellcode oder das Ausgliedern von Arbeit,
wie die Erstellung von Benutzeroberflächen (GUI) von geschultem
Personal.
Diese
Arbeitsteilung ist evident und sollte von Projektverantwortlichen
forciert werden! Die Realität im Anlagenbau sieht sonst so aus, dass
ein gelernter Elektriker für alles (!) Nichtmechanische zuständig
ist.
Kosten
-->
Material
Nun
kommen wir zu dem interessantesten Teil dieser Abhandlung. - Kosten.
Eine wesentliche Größe für mittelständische Unternehmen, die
nicht in großen Stückzahlen produzieren, sind die Materialkosten
die ein effektives Engineering ermöglichen.
Durch
meine Beobachtung ist mir aufgefallen, das Unternehmen ihr
Hauptaugenmerk auf den reinen Materialwert richten und die
Programmierung als ein schnelles Handwerk verstehen. - Ähnlich dem
Schweißen beim Material Stahl.
Werden
die reinen Materialkosten der Steuerung betrachtet, lässt sich diese
Aufstellung machen:
Konventionelle
Steuerung:
- CPU [1000€]
- 16x Digitale Eingänge [300€]
- 16x Digitale Ausgänge [300€]
- 8x Analoge Eingänge [500€]
- 7Zoll Anzeigegerät [1000€]
Android:
- CPU & 7Zoll Anzeigegerät [100€]
- 32x Digitale Eingänge/Ausgänge (gemischt) [100€]
- inkl. 4x Analoge Eingänge/Ausgänge (gemischt)
Diese
Ausgaben sind über einen sehr großen Daumen gemacht worden und stehen für
einen sehr einfachen Typ von Anlage und ist somit nicht
repräsentativ. Sie stellen aber sehr gut die Menge an Utensilien und
eine Größenordung der Kosten dar.
Und es
geht noch schockierender!
Bei der Programmierung
Realistisch
gesehen ist der größte Posten bei der Fertigung einer Anlage, nach
Material und Entwicklung, die Implementierung und das Testen eines
Programms.
Haefig wird bei der Auftragsvergabe der tatsächliche Aufwand hierzu klein
gerechnet. Und dies noch nicht einmal mutwillig, da hier schon
Objektorientiert gedacht wird. Soll heißen: „Die und die Teile der
Anlage haben wir schon mal gebaut“, also ist auch ein Teil des
Programms fertig. Das ist ein Trugschluß!
Wie oben
schon erwähnt sind die Programme bei einer herkömmlichen SPS
sequenziell aufgebaut. „Den Teil der Anlage“ gibt es
Programmtechnisch gar nicht.
Die
Informatik hat auch hierbei eine Entwicklung gemacht. Die
Objektorientierte Modellierung und Programmierung von Lösungen
bilden die Problemstellungen der Wirklichkeit besser nach, als es
Sequenzen könnten. Bei Sequenzieller Programmierung hat man das
Dilemma, auf ein Ereignis zum nächsten Schritt zu warten. Erscheint
dieses nicht, wird das dazugehörige Programm schnell
unübersichtlich, weil immer mehr Ausnahmen hinzugefügt werden
müssen, um weiter zu kommen.
Diese
Ausnahmen, die den Quelltext aufblähen und etwas programmieren
lassen, was eigentlich gar nicht zur Problemstellung gehört, lässt
die Implementierungskosten explodieren.
Ein
weiterer Kostenfaktor ist die Entwicklungsumgebung in der sich der
Programmierer notgedrungen bewegen muss, denn diese können ihn
unterstützen oder bremsen.
Worauf
man sich einigen kann, ist die Reduktion auf das Wesentliche bei
der Programmerstellung. Dazu gehört auch die Prämisse: keine
Medienbrüche! Dies wird aber verlangt, wenn ein einzelner Motor mit
einer SPS verbunden wird. Die von den Mitgliedern des konventinellen Systems
propagierte Versprechen der Modularität wird dadurch
eingelöst, indem es viele Insellösungen gibt, die nur properitär
erreicht werden können.
Hier
fehlt der Standard für eine einheitliche Entwicklungsumgebung.
Solange dieser, für konventionelle Steuerungen, nicht existiert darf
nicht von Innovationssicherheit gesprochen werden!
Versus
Was
macht ein anderes System, in diesem Fall Android, besser oder
schlechter? Diese Frage wird nun auf den folgenden Seiten erörtert.
-->
Aber schon droht wieder Ungemach mit der Zeit... Wollen sich andere Systeme mit der klassischen SPS messen, werden sie sehr wohl nach ihrer Echtzeitfähigkeit beurteilt. In einer späteren Ausarbeitung werde ich versuchen eine Gegenüberstellung der Echtzeitfähigkeiten der Systeme zu erarbeiten.
-->
![]() |
| Moorsches Gesetz - Rechenoperationen pro Sekunde |
Prozessor
Es ist allgemein bekannt, dass Prozessoren immer schneller
werden. Also immer mehr Operationen in einer bestimmten Zeit
erledigen können. Programmiert werden aber immer (!) eine bestimmte
Anzahl Operationen, die schnellst möglich erledigt werden sollen.
Ein Programm schrumpft oder wächst ja nicht während seiner
Abarbeitung.
Eine
speicherprogrammierbare Steuerung arbeitet Zyklusfest, das heißt: In
einer vorgegebenen Zeitspanne müssen alle gewünschten Operationen
erledigt sein, sonst handelt es sich um einen Fehler und beschreibt eine 'harte Echtzeitanforderung'. Dennoch ist dies meiner
Meinung nach ein großer Hemmschuh, da ich während der Entwicklung
nicht vorhersagen kann, ob meine gewünschte Operation in einen
Zyklus passt. Ich bin also ein Getriebener dieses 'Zeitdiktats'. Ein weiterer Nachteil dieser Strategie ist: Die CPU ist
immer beschäftigt. Wie ein Arbeiter am Fließband, welches ständig
läuft, selbst wenn es leer ist.
Ich möchte nicht in Abrede stellen, das dieses Verfahren ihren Reiz hat. Ist dies dem Entwickler einmal in 'Fleisch und Blut' übergegangen, findet er einen konsequenten Rahmen vor, in dem er seine Programme implementieren kann.
Ich möchte nicht in Abrede stellen, das dieses Verfahren ihren Reiz hat. Ist dies dem Entwickler einmal in 'Fleisch und Blut' übergegangen, findet er einen konsequenten Rahmen vor, in dem er seine Programme implementieren kann.
Im
Zuge der immer potenter werdenden Prozessoren kam man zu dem Schluss,
dass eine schnelle CPU effektiver ihre Arbeitszeit verwalten kann,
als es der Programmierer je könnte. Also nicht zu warten bis die
Zeit um ist und Energie verschwenden. Oder im anderen Fall,
überfordert sein, falls mal etwas mehr zu erledigen ist.
Das
Konstrukt des Multitasking, ist das Ergebnis. Es vermeidet, grob
gesprochen, die oben genannten Szenarien am Fließband. Weiterhin empfinde ich es Seegen nicht mehr dem Zeitdiktat zu unterliegen.
Aber schon droht wieder Ungemach mit der Zeit... Wollen sich andere Systeme mit der klassischen SPS messen, werden sie sehr wohl nach ihrer Echtzeitfähigkeit beurteilt. In einer späteren Ausarbeitung werde ich versuchen eine Gegenüberstellung der Echtzeitfähigkeiten der Systeme zu erarbeiten.
Speicher
Wie
der Name „Speicherprogrammierbare Steuerung“ vermuten lässt, ist
der Speicher der Dreh- und Angelpunkt einer Steuerung. Dieser Dreh- und Angelpunkt findet sich bei jedem EDV-System wieder und ist kein Alleinstellungsmerkmal von SPSen. Jeder
herkömmliche Computer bildet ein Speicherabbild aus den
Eingangszuständen, manipuliert dieses Speicherbild und setzt danach
bedingt die Ausgangszustände.
Die Speicherverwaltung ist ebenso modernisiert worden wie die Prozessorverwaltung. Große
Datenmengen effizient zu verwalten, ist keine Aufgabe für den Programmierer,
beziehungsweise sollte es meiner Meinung nach nicht sein. Für ein reguläres Programm
ist es völlig unerheblich, ob die Daten zur Manipulation sich an
dieser oder jener Stelle im verfügbaren Speicher befinden. Noch
konsequenter: Es muss sogar unerheblich sein, in welchem Speicher
(RAM/ROM/FLASH/Datenträger/...) das Lesen und/oder Schreiben statt
findet.
Es ist mühseelig das eine Bit aus 1000 Bits eines Datenbausteins herauszusuchen. Zumal es sich, bei einer Änderung dieses DB, auch noch verschieben kann.
Es ist mühseelig das eine Bit aus 1000 Bits eines Datenbausteins herauszusuchen. Zumal es sich, bei einer Änderung dieses DB, auch noch verschieben kann.
Eine
große Anzahl Technologien wenden sich diesem Lösungsansatz zu,
darunter: Paging und Swaping, um einige Stichworte fallen zu lassen.
Kommunikation
Bei
dem Stichwort: Kommunikation, wird meistens die Assoziation zum Schlagwort "Vernetzung" hergestellt. Es lässt sich nur schwer eine Prognose treffen, wie sich Geräte in Zukunft miteinander verbinden werden. Stand der Dinge ist eine
möglichst dezentrale und drahtlose Verbindung. Weiterhin geht man
dazu über, dass die Endgeräte selber die Robustheit ihrer
Verbindungen überwachen.
Der größte Umbruch geschieht aktuell mit der Umstellung des IP-Protokolls auf IPv6 und wird sich wahrscheinlich in allen Bereichen große Auswirkungen haben.
Der größte Umbruch geschieht aktuell mit der Umstellung des IP-Protokolls auf IPv6 und wird sich wahrscheinlich in allen Bereichen große Auswirkungen haben.
Abonnieren
Posts (Atom)










