(SPS-)Programme bis über 95% schneller und hohes Suchmaschinenranking

(SPS-)Programme geschwindigkeitsoptimiert minimieren Hardwarekosten
Cheap Internet- Marketing
Ingenieurbüro Jens von Aspern

Automation, Internet



Opimierungsbeispiel für (SPS-)Programme zeigt wie 95% höhere Performance zu erzielen ist

Optimierte (SPS-)Programme sind oft schon bei einfachsten Aufgaben einsetzbar

Performanceoptimierungsverfahren für Steuerungsprogramme (SPS, Mikrocontroller, Industrie-PC) organisieren die Programmausführung abhängig von Prozess-(Netz-)Situationen. Bei einer bestimmten Situation kommt nur derjenige Programmteil zur Ausführung, der irgend eine Reaktion des Programms ermöglichen könnte. Alle Programmteile, die dies nicht können, werden i.A. mit Sprüngen (o. IF-THEN) von der Bearbeitung ausgeschlossen. Da die Steuerungstechnik (nicht Regelung!) fast immer aus sequentiellen Einzelfolgen (ist Vielen oft nicht bewusst), wie im Bild gezeigt, die ggf. parallel erfolgen, besteht, sind Petrinetze hervorragend geeignet. Dies gilt für übergeordnete und detaillierte Abläufe.

Einfaches Beispiel mit den Funktionen: Motor rechts, links und stopp -> 4 Transitionen, 3 Plätze (Motor links, rechts, stopp), Performanceverbessung zwischen 50% und 80% je nach Verfahren).

Petrinetz contra FBS

Beispiel Motorsteuerung: Wenn der Motor links dreht, muss alles was mit rechts zusammen hängt (rechts-Ein, rechts-Aus) nicht bearbeitet werden, da kein natürlicher und systemspezifischer Grund hierfür besteht (im Gegensatz zur Lösung mittels Boolescher Gleichungen). Folglich kann, von der üblichen Praxis, ein Programm insgesamt blind abzuarbeiten (einfachste für den Programmierer) der nicht benötigte Teil übersprungen werden. I. A. werden Programm-verzweigungen (IF, CASE, Sprung) nur eingesetzt, wenn es die Aufgabe erfordert. Erst bei auftreten Zeitproblemen geht es an das Refactoring, um diese Probleme hinreichend zu unterbinden.

Betrachtung einer Transition: Ein anderes Beispiel (Verfahren): Transition mit je 2 Ein-(p1, p2) und Ausgangsplätzen (p3, p4). Eine mögliche klassische Bearbeitung:

LD   p1 (*Variableninhalt p1 in Akku laden              *)
AND  p2 (*Logisch UND(p1 bzw. Akku, p2)                 *)
R    p1 (*Platz 1 von true auf false setzen,            *)
        (*wenn UND wahr                                 *)
R    p2
S    p3 (*Platz 3 von false auf true setzen,            *)
        (*wenn UND wahr                                 *)
S    p4 (*Insgesamt 6 Zeilen bearbeiten                 *)

Optimierung 50% bei folgendem Code (3/6 Zeilen beim Nichtschalten, was am häufigsten Eintritt, wenn man davon ausgeht, dass jede Zeile gleiche Rechenzeit benötigt):

LD   p1 (*Variableninhalt p1 in Akku laden              *)
AND  p2 (*Logisch UND(p1 bzw. Akku, p2)                 *)
JMPCN x (*Springe nach x, wenn UND false,               *)
        (*sonst nächste Zeile                           *)
R    p1 (*Platz 1 von true auf false setzen,            *)
        (*wenn UND wahr                                 *)
R    p2
S    p3 (*Platz 3 von false auf true setzen,            *)
        (*wenn UND wahr                                 *)
S    p4 (*Insgesamt 3 Zeilen bearbeiten (7 beim seltenen*)
        (*Schalten)                                     *)
x:      (*Sprungziel x:                                 *)

Berücksichtigt man jetzt beispielsweise, dass 10 Transitionen existieren, von denen immer nur eine Schaltet, was vielleicht alle 10 Minuten vorkommt, ist die eine Zeile pro Transition, die im Schaltmoment mehr zu verarbeiten ist, vernachlässigbar. Kann man jetzt noch, wie im Motorbeispiel, diejenige Transition ermitteln (können diese Verfahren), die als einzigste eine Änderung herbeiführen kann, so reduziert sich der aktiv zu bearbeitende Code um weitere 90% (real kommt noch etwas Overhead hinzu). Bei 100 Transitionen weitere 99%. Die gesamte theoretische Performancesteigerung beträgt 95% - Berechnungsformel: (1- (3 Zeilen (+unberücksichtigen Overhead)) / (6 Zeilen * 10 Transitionen) -, also 20 mal schneller.

Die zyklische SPS-Verarbeitung muss nicht unbedingt sein, um ein Petrinetz und den optimierten Code zu verwenden. Wir verwenden in schwierigen und zeitkritischen Fällen (Java) Petrinetze anstelle Struktogramme (IF, CASE, usw.). Dabei wird das Petrinetz nur einmal zur Ergebnisfindung ausgewertet.

» Literatur zum Thema.

Anmerkung zur Transparenz: Das Petrinetz zeigt sich als wesentlich transparenter als die FBS-Darstellung. Dies liegt daran, dass es im Petrinetz keine latenten Zustände gibt. "Motor Aus" ist im Gegensatz zum FBS direkt abgebildet.

SPS Opensource


SPS-Programme zum kostenlosen Download. Der Newsletter informiert über neue Bausteine.

Serienmaschinen


Performanceoptimierte (SPS-)Programme mindern die Hardware-kosten, sobald die Reduzierung der benötigten Rechenzeit eine leistungsschwächere SPS erlaubt.

Ckecklisten


suchmaschinengerechte Homepage- Programmierung und Cheap Internet Marketing sorgen für gute Positionen im Suchmaschinenranking und fördern den Bekanntheitsgrad.