Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 17

Thema: fragen zur programmierphilosophie

  1. #1
    Registriert seit
    08.08.2011
    Beiträge
    57
    Danke
    34
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> 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.
    Geändert von alb (25.08.2011 um 11:13 Uhr)
    Zitieren Zitieren fragen zur programmierphilosophie  

  2. #2
    Registriert seit
    19.06.2008
    Ort
    Ostalbkreis
    Beiträge
    3.140
    Danke
    201
    Erhielt 553 Danke für 498 Beiträge

    Standard

    Hallo,

    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.
    z.B.: Schrittketten verwenden

    -Schritt 1: Ventil 1 schalten

    -Schritt 2: Ventil 2 schalten, Ventil 4 schalten

    .
    .
    .
    Parallel zu diesen Schritten die Position abfragen (Störungen)

    Code:
    U Schritt1
    U "Ventil1Vor"
    UN "Ventil1Vorne" //Sensor EndPos erreicht
    L S5T#1S
    SE T1
    U T1
    ="Störung1" //Ventil nicht vorne
    Ein sauber strukturiertes Projekt, das auch mal ein anderer "schnell" verstehen kann, ist immer besser als ein "Code-Trauma".

    Klar definierte Abläufe in Unterprogramme aufteilen.
    Die Maschine hat idR. Teilaufgaben (z.B.:Produkt Zufuhr, Produkt Bearbeitung 1..2..3... , Produkt Ausschleusung, usw..)
    Auf Wiederverwendbarkeit achten (Funktionsbausteine).

  3. Folgender Benutzer sagt Danke zu Verpolt für den nützlichen Beitrag:

    Rudi (26.08.2011)

  4. #3
    Registriert seit
    20.06.2010
    Beiträge
    169
    Danke
    14
    Erhielt 18 Danke für 12 Beiträge

    Standard

    Hallo alb,

    ich glaube dass Du auf dem absolut richtigen Weg bist.
    Wenn ich alles richtig verstehe definierst Du deine Aufgabe als Zustandsautomat, vom Typ Moor.
    Erstens musst Du den Computer ausschalten und einen Zustandsgraphen auf Papier definieren. In einem Zustand kann der Automat solange verbleiben bis durch ein externes Ereignis, sprich Signal, eine Transition zu einem Folgezustand ausgelöst wird.
    Den zustand des Automaten schreibst Du in ein Zustandsregister.
    Das bedeutet dass der Folgezustand sich immer mit Hilfe einer Logik, aus den Eingängen und dem aktuellen Zustand sprich Zustandsregister, ableiten lässt.
    Die Ausgänge des Automaten werden nur anhand der Zustandsnummer definiert.
    Zur Fehlerbehandlung und Diagnose solltest Du auch Fehlerzustände Berücksichtigen in denen Dein Automat bis zur Quittierung verharrt.
    Realisieren würde ich die Aufgabe in SCL und würde auch nicht vor einer großen CASE Anweisung zurückschrecken.
    Für jeden Zustand kann noch eine Wartezeit und eine Überwachungszeit definiert werden.
    Wartezeit und Überwachungszeit werden beim Zustandwechsel geladen. Der Zustand darf nicht vor Ablauf der Wartezeit verlassen werden und muss vor Ablauf der Überwachungszeit in einen Folgezustand bzw. danach in einen Fehlerzustand übergehen.
    Viel Spass!



  5. Folgende 2 Benutzer sagen Danke zu JOHKU für den nützlichen Beitrag:

    PN/DP (25.08.2011),Verpolt (25.08.2011)

  6. #4
    Registriert seit
    19.06.2008
    Ort
    Ostalbkreis
    Beiträge
    3.140
    Danke
    201
    Erhielt 553 Danke für 498 Beiträge

    Standard

    Habs das Thema nochmal gelesen

    ...und weg

  7. #5
    Registriert seit
    12.04.2005
    Ort
    Black Forest
    Beiträge
    1.335
    Danke
    27
    Erhielt 129 Danke für 116 Beiträge

    Standard

    Evtl. sollte sich der TE dann Gedanken über High-Graph machen
    Da könnte man es als Zustandsgraphen programmieren.

    Aber irgendwie verstehe ich die ganze Beschreibung / Fragestellung nicht so

  8. #6
    alb ist offline Benutzer
    Themenstarter
    Registriert seit
    08.08.2011
    Beiträge
    57
    Danke
    34
    Erhielt 0 Danke für 0 Beiträge

    Standard

    HAllo,
    erstmal danke für die Antworten. Einige leute hatten wohl probleme zu verstehen, was ich so richtig meine. Hab meinen eigenen text nochmal gelesen und kann die Verständnisschwierigkeiten auch verstehen. Als ich das geschrieben habe, sass ich schon einige stunden vorm REchner, und war schon etwas durch den Wind. Auf das kommunizieren mit Rechnern statt mit menschen eingestell

    Meine zweite Frage wurde von JOHKU richtig verstanden. Ich wollte soetwas wie einen Moore-Automaten beschreiben. Die Frage war also:
    Nehme ich einen Mooreautomaten oder Löse ich das Problem in dem ich mir Zwei Routinen schreibe, eine zum Be- und eine zum Entlüften.
    Inzwischen denke ich, dass man die Frage nicht wirklich beantworten kann. Hängt wohl vom persöhnlichen Geschmack und der konkreten Aufgabenstellung ab.

    Die erste Frage:
    Welche der Folgenden beiden Möglichkeiten ist besser, um den Zustand der Anlage festzulegen?
    1.: Es gibt eine Funktion Zustandsbestimmung, die guckt sich alle eingangsdaten an, bestimmt den Zustand und "diktiert" dann, in welchem Zustand sich die SPS befindet.

    2.: Die Routine Belüften schaltet ein Ventil, prüft ob es umgeschaltet ist und bestimmt dann selber dass sie im nächsten Zustand angekommen ist.

    Ich denke, die erste Variante ist wohl etwas eigenwillig und entspricht nicht dem Standart. Ich habe mich also für die 2. enschieden.

    Hoffentlich ist jetzt etwas deutlicher geworden was ich meine. Wenn nicht betrachten wir den Thread einfach als geschlossen. Ich dneke inzwischen auch, dass man dazu nicht biel sagen kann. hab hier meine "wirren" gedanke reingeschrieben. Sorry falls das zusehr in Richtung spamen geht.

    lg

    ps.: Der Simulierte Pumpstand funktioniert. Allerdings noch ohne jegliche Fehlererkennung und Sicherheit.

  9. #7
    Registriert seit
    03.04.2008
    Beiträge
    6.200
    Danke
    237
    Erhielt 815 Danke für 689 Beiträge

    Standard

    Zitat Zitat von alb Beitrag anzeigen
    Ich denke, die erste Variante ist wohl etwas eigenwillig und entspricht nicht dem Standart.
    Stimmt, das ist nicht Standard.


    bike

  10. #8
    Registriert seit
    20.06.2010
    Beiträge
    169
    Danke
    14
    Erhielt 18 Danke für 12 Beiträge

    Standard

    Zitat Zitat von alb Beitrag anzeigen
    HAllo,



    Die erste Frage:
    Welche der Folgenden beiden Möglichkeiten ist besser, um den Zustand der Anlage festzulegen?
    1.: Es gibt eine Funktion Zustandsbestimmung, die guckt sich alle eingangsdaten an, bestimmt den Zustand und "diktiert" dann, in welchem Zustand sich die SPS befindet.

    2.: Die Routine Belüften schaltet ein Ventil, prüft ob es umgeschaltet ist und bestimmt dann selber dass sie im nächsten Zustand angekommen ist.

    Ich denke, die erste Variante ist wohl etwas eigenwillig und entspricht nicht dem Standart. Ich habe mich also für die 2. enschieden.


    lg

    ps.: Der Simulierte Pumpstand funktioniert. Allerdings noch ohne jegliche Fehlererkennung und Sicherheit.
    Hallo,
    ich denke die 1. Variante ist der Versuch eines basisdemokratischen Automaten vom Typ alb.
    Wenn Dein Programm aus den Eingängen den Zustand der Anlage 100% ermitteln kann handelt es sich nicht um eine sequentielle Logik (Zustandsautomat) sondern um eine kombinatorische Logik, UND/ODER ohne speichernde Funktion.
    Ein Automat sollte immer einen Zustand 0 "Initialisierung" besitzen und danach die volle Kontrolle der Anlage übernehmen.

    lg

  11. #9
    Registriert seit
    25.11.2010
    Ort
    OWL
    Beiträge
    745
    Danke
    27
    Erhielt 164 Danke für 142 Beiträge

    Standard

    Zitat Zitat von JOHKU Beitrag anzeigen
    Ein Automat sollte immer einen Zustand 0 "Initialisierung" besitzen und danach die volle Kontrolle der Anlage übernehmen.
    Auf jeden Fall. Dazu muss die gesteuerte Maschine aber auch einen entsprechenden Zustand kennen und sich dorthin bringen lassen. Bei diesem Punkt legen einem die Konstrukteure gern so manchen Stolperstein in den Weg. Beim Start der SPS macht es deshalb schon Sinn, einmal die Sensorik abzufragen, um so viel wie möglich über den aktuellen Zustand in Erfahrung zu bringen und der SPS die Initialisierung zu erleichtern.

  12. #10
    Registriert seit
    20.06.2010
    Beiträge
    169
    Danke
    14
    Erhielt 18 Danke für 12 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von StructuredTrash Beitrag anzeigen
    Auf jeden Fall. Dazu muss die gesteuerte Maschine aber auch einen entsprechenden Zustand kennen und sich dorthin bringen lassen. Bei diesem Punkt legen einem die Konstrukteure gern so manchen Stolperstein in den Weg. Beim Start der SPS macht es deshalb schon Sinn, einmal die Sensorik abzufragen, um so viel wie möglich über den aktuellen Zustand in Erfahrung zu bringen und der SPS die Initialisierung zu erleichtern.
    Eventuell habe ich mich nicht klar ausgedrückt, aber jedes SPS Programm muss den Kaltstart/Initialisierung sicher ausführen.
    Selbstverständlich werden die Sensoren abgefragt und danach ein "aktueller Zustand" ermittelt der auch ein Fehlerzustand sein kann.
    Der Zustand des Automaten hat mit den Zuständen des Prozesses primär nichts zu tun.
    Sollte der Prozess keinen sichern Zustand besitzen wie z.B ein Flugzeug in der Luft, muss er manuell in einen Zustand gebracht werden aus dem der Automat dann die Kontrolle übernehmen kann. Bis zu diesem Zeitpunkt bleibt der Automat in einem Fehlerzustand.

    Das Jammern über die Konstrukteure die das Genie der Programmierer nicht würdigen ist hier weit verbreitet, bringt uns aber nicht wirklich weiter.
    Eine Anlage ist entweder funktionsfähig und dann kann man auch eine Steuerung dafür programmieren oder sie ist es nicht und dann hilft auch der beste Programmierer nicht weiter.
    Ein gutes Systemgespräch mit den Konstrukteuren sollte aber am Beginn der Arbeit stehen. Wenn man dann das Ergebnis in Form eines Lastenheft/Pflichtenheftes festhält hat man eine reelle Chance gute Arbeit abzuliefern.

    lg

Ähnliche Themen

  1. TwinCat HMI Fragen über Fragen
    Von Bambam im Forum CODESYS und IEC61131
    Antworten: 11
    Letzter Beitrag: 10.11.2010, 17:36
  2. MPI-Bus Fragen
    Von ssound1de im Forum Feldbusse
    Antworten: 11
    Letzter Beitrag: 26.08.2010, 00:21
  3. SCL Fragen
    Von Rose im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 07.06.2006, 08:54
  4. Siemens Fu Fragen über Fragen
    Von lorenz2512 im Forum Schaltschrankbau
    Antworten: 0
    Letzter Beitrag: 28.10.2005, 17:58
  5. Fragen zum TD 200
    Von MRT im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 24.07.2005, 00:19

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •