-> Hier kostenlos registrieren
Hallo,
ich habe jetzt die ersten Grundlagen der SPS programmierung verinnerlicht und mache mich an ein erstes, erstmal nur simuliertes, Projekt. Die automatisierung eines VAkuumpumpstandes:
Der Benutzer kann einen von vier Sollzuständen anwählen. Die SPS soll die Anlage dann auf sicherem Weg in den Gewünschten Zustand bringen. Die Anlage kennt theoretisch sehr sehr viele zustände. Diverse ventile und ähnliches. Ich habe 12 zustände definiert, die die relevanten Eigenschaften abdecken. z.B. für Zustand 6 ist es unwichtig wie Ventil 3 steht. Die Anlage sollte ieigentlich immer in eine dieser "klassen" fallen. Beispiele für solche zustände können sein: Vorbereitet zum Pumpen (Ventile stehen richtig), Pumpen, abgepump (solldruck ist erreicht) und Störzustände.
Es gibt einen Funktionsblock, welcher anhand der Eingangsdaten, Endlagenschalter der Ventile und Ähnliches, ermittelt in welchem Zustand sich die Maschiene befindet.
Dieser FB wird beim starten aufgerufen und bestimmt den Zustand. soll die sps einen anderen zustand, z.B. durch dass schließen eines Ventils einstellen, gibt es zwei mögliche Strategien:
die sps gibt Anweisung zum Ventilschließen und trägt den neuen Zustand in die Zustandsvariable ein wenn die rückmeldung ventil geschlossen kommt.
ODER:
die SPS gibt Anweisung zum Ventilschließen. Der Zustandsbestimmungs FB wird zyklisch aufgerufen und gibt den Zustand anhand der Eingangsdaten vor.
Die Frage ist also: SPS gibt Anweisung und bestimmt wo sie ist vs. SPS gibt Anweisung und guck wo sie jetzt ist. ein bisschen wie Steuern vs Regeln.
Bedeutng bekommt der Unterschied wenn sich die anlage nicht verhält wie sie soll. Bei der zweiten Variante bräuchte ich extra Fehlerroutinen. Bei der ersten ist fraglich, ob der code lesbar, verständlich, und bei komplexeren sachen überhaupt so möglich ist.
Eine zweite frage:
Ich habe meine 12 zustände. z.B. kann auf zustand 3 der Zustand 4 oder auch sieben folgen. theoretisch könnte jeder beliebige Zustand folgen, der müßte aber evtl. mit einer komplizierten routine eingeleitet werden. Die als direkte Folgezustände gewählten zustände können sehr direkt eingeleitet werden. z.B. ein Ventil schließen. Ein sehr verschiedener Zustand wird über einen Pfad über zwischenzustände erreicht.
In meiner Projektplanung habe ich das modellhaft gezeichnet, was etwa so aussieht:
Zustände als Kreise mit Nummern. Pfeile auf die möglichen Folgezustände. An diesen Pfeilen stehen zahlen, wenn du nach Zustand 0 möchtest, nimm den Pfeil wo die 0 dran steht.
Das ist ein sehr eigenwilliger Prograqmmierstiel. Es gibt keine Routine "belüften" sondern nur eine Kontroll struktur die guckt, wo bin ich und wo will mich der nutzer hinhaben. davon abhängig wird dann z.B. ein bestimmtes Ventil geschaltet. Das bringt die anlage in den nächsten zustand, dieser weiß dann wieder was zu tun ist. Die Logik eines jeden einzelnen Zustands ist sehr einfach, meißt gibt es nur einen folgezustand, verzweigungen sind eher selten. Statt einer komplizierten Routine gibt es das Langhangeln an PFaden.
Die Frage: ist das Sinnvoll oder sollte ich mir das schnell wieder aus dem Kopf schlagen.
Der Code selber, ist schwer verständlich. Mit hilfe des "Pfad-Plans" ist es sehr gut verständlich.
Komplexe Rutienen werden auf einfache zustandsübergänge reduziert. (Divide and Qonquer)
keine Ahnung in wie weit das bei komplizierteren Anlagen überhaupt umsetzbar ist. wie sich das erweitern und warten läßt.
so, das waren meine Fragen. Ich habe schon mitbekommen, das Fragen zum Programmierstiel meißt ins unendliche führen und jeder seinen etas eigenen Stiel hat. Ich bin eben Anfängeer und muss meinen stiel erstmal finden. da bin ich für jede unterstützung dankbar.
ich habe jetzt die ersten Grundlagen der SPS programmierung verinnerlicht und mache mich an ein erstes, erstmal nur simuliertes, Projekt. Die automatisierung eines VAkuumpumpstandes:
Der Benutzer kann einen von vier Sollzuständen anwählen. Die SPS soll die Anlage dann auf sicherem Weg in den Gewünschten Zustand bringen. Die Anlage kennt theoretisch sehr sehr viele zustände. Diverse ventile und ähnliches. Ich habe 12 zustände definiert, die die relevanten Eigenschaften abdecken. z.B. für Zustand 6 ist es unwichtig wie Ventil 3 steht. Die Anlage sollte ieigentlich immer in eine dieser "klassen" fallen. Beispiele für solche zustände können sein: Vorbereitet zum Pumpen (Ventile stehen richtig), Pumpen, abgepump (solldruck ist erreicht) und Störzustände.
Es gibt einen Funktionsblock, welcher anhand der Eingangsdaten, Endlagenschalter der Ventile und Ähnliches, ermittelt in welchem Zustand sich die Maschiene befindet.
Dieser FB wird beim starten aufgerufen und bestimmt den Zustand. soll die sps einen anderen zustand, z.B. durch dass schließen eines Ventils einstellen, gibt es zwei mögliche Strategien:
die sps gibt Anweisung zum Ventilschließen und trägt den neuen Zustand in die Zustandsvariable ein wenn die rückmeldung ventil geschlossen kommt.
ODER:
die SPS gibt Anweisung zum Ventilschließen. Der Zustandsbestimmungs FB wird zyklisch aufgerufen und gibt den Zustand anhand der Eingangsdaten vor.
Die Frage ist also: SPS gibt Anweisung und bestimmt wo sie ist vs. SPS gibt Anweisung und guck wo sie jetzt ist. ein bisschen wie Steuern vs Regeln.
Bedeutng bekommt der Unterschied wenn sich die anlage nicht verhält wie sie soll. Bei der zweiten Variante bräuchte ich extra Fehlerroutinen. Bei der ersten ist fraglich, ob der code lesbar, verständlich, und bei komplexeren sachen überhaupt so möglich ist.
Eine zweite frage:
Ich habe meine 12 zustände. z.B. kann auf zustand 3 der Zustand 4 oder auch sieben folgen. theoretisch könnte jeder beliebige Zustand folgen, der müßte aber evtl. mit einer komplizierten routine eingeleitet werden. Die als direkte Folgezustände gewählten zustände können sehr direkt eingeleitet werden. z.B. ein Ventil schließen. Ein sehr verschiedener Zustand wird über einen Pfad über zwischenzustände erreicht.
In meiner Projektplanung habe ich das modellhaft gezeichnet, was etwa so aussieht:
Zustände als Kreise mit Nummern. Pfeile auf die möglichen Folgezustände. An diesen Pfeilen stehen zahlen, wenn du nach Zustand 0 möchtest, nimm den Pfeil wo die 0 dran steht.
Das ist ein sehr eigenwilliger Prograqmmierstiel. Es gibt keine Routine "belüften" sondern nur eine Kontroll struktur die guckt, wo bin ich und wo will mich der nutzer hinhaben. davon abhängig wird dann z.B. ein bestimmtes Ventil geschaltet. Das bringt die anlage in den nächsten zustand, dieser weiß dann wieder was zu tun ist. Die Logik eines jeden einzelnen Zustands ist sehr einfach, meißt gibt es nur einen folgezustand, verzweigungen sind eher selten. Statt einer komplizierten Routine gibt es das Langhangeln an PFaden.
Die Frage: ist das Sinnvoll oder sollte ich mir das schnell wieder aus dem Kopf schlagen.
Der Code selber, ist schwer verständlich. Mit hilfe des "Pfad-Plans" ist es sehr gut verständlich.
Komplexe Rutienen werden auf einfache zustandsübergänge reduziert. (Divide and Qonquer)
keine Ahnung in wie weit das bei komplizierteren Anlagen überhaupt umsetzbar ist. wie sich das erweitern und warten läßt.
so, das waren meine Fragen. Ich habe schon mitbekommen, das Fragen zum Programmierstiel meißt ins unendliche führen und jeder seinen etas eigenen Stiel hat. Ich bin eben Anfängeer und muss meinen stiel erstmal finden. da bin ich für jede unterstützung dankbar.
Zuletzt bearbeitet: