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

Ergebnis 1 bis 9 von 9

Thema: Jeder Case ein eigenes Programm

  1. #1
    Registriert seit
    29.08.2009
    Beiträge
    776
    Danke
    25
    Erhielt 3 Danke für 3 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo, habe gesehen, dass in AS ja jeder schritt ein eigenes Programmbaustein sein kann.

    Meint ihr es macht sinn, im ST einer Case-Struktur jedem Case einen Baustein zuzuweisen und diesen dort aufzurufen?

    Oder gibt das viel speicherverbrauch?
    Wieviel POUS kann man denn erstellen? Gibt es da grenzen?


    Oder meint ihr, amn sollte die case striktur direkt in einem baustein ausprogrammieren?
    Zitieren Zitieren Jeder Case ein eigenes Programm  

  2. #2
    Registriert seit
    25.11.2010
    Ort
    OWL
    Beiträge
    749
    Danke
    27
    Erhielt 164 Danke für 142 Beiträge

    Standard

    Zitat Zitat von Bensen83 Beitrag anzeigen
    Meint ihr es macht sinn, im ST einer Case-Struktur jedem Case einen Baustein zuzuweisen und diesen dort aufzurufen?
    Das kommt darauf an, wie umfangreich der Code für die einzelnen Schritte ist. Bei solchen Abläufen wird ja oft bei einem Schritt nur ein Ausgang gesetzt oder rückgesetzt, dafür wäre mir eine eigene POU zu viel des Guten.

  3. #3
    Registriert seit
    15.08.2011
    Beiträge
    383
    Danke
    2
    Erhielt 73 Danke für 71 Beiträge

    Standard

    Ich würde das nicht mit einer einzelnen POU pro Schritt machen.
    Das nimmt den Charme der CASE Anweisungen in ST.

    So wird es auch nicht "gelehrt" .....

  4. #4
    Bensen83 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.08.2009
    Beiträge
    776
    Danke
    25
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Ja finde ich eigentlich auch, bin nur drauf gekommen, weil man ja in as eigentlich auch für jeden "CASE" ne eigene POU hat
    Zitieren Zitieren Ok  

  5. #5
    Registriert seit
    09.11.2007
    Ort
    Rhein Main (Darmstadt)
    Beiträge
    663
    Danke
    61
    Erhielt 112 Danke für 80 Beiträge

    Beitrag

    Zitat Zitat von mac203 Beitrag anzeigen
    Ich würde ...

    So wird es auch nicht "gelehrt" .....
    Es gibt ja aktuell einige Diskussion an verschiedenen Punkten hier im Forum, deshalb mal ein Hinweis auf die weltweit anerkannte "Lehre".

    Seit etwa 1985 ist das unten gezeigte Buch das Standard Lehr Werk, wie man grosse Projekte angeht.

    Spätestens, wenn Ihr in der Oberklasse spielt (Medizintechnik, Atom Industrie, Luftfahrt, Sicherheitstechnik) und der TÜV oder ähnliche Revisoren sich Eure Programme Zeile für Zeile ansehen und genehmigen müssen, werdet Ihr Probleme haben, eine eigene Status Maschine implemetiert zu haben, die nicht den Pattern des erwähnten Buches folgt.

    ST hat da so seine Probleme unter Codesys 2.x, 3.x geht besser.

    Wenn man mit 2.x dem Pattern Rahmen folgt, kommt eine CASE Struktur des Main Programms, die in jedem Case eine FUN oder einen FB (besser) aufruft, am nächsten.

    Ein Aufruf PRG -> PRG mit global Variablen ist tabu.

    Codesys3.x würde das mit Interface etc lösen.

    Ein Lesen des Buches empfiehlt sich auf jeden Fall, wenn Ihr komplexere Probleme (im Team besonders) angeht.
    Angehängte Grafiken Angehängte Grafiken
    Geändert von RobiHerb (07.09.2011 um 14:44 Uhr) Grund: Tippfehler
    Als Freelancer immer auf der Suche nach interessanten Projekten.
    Zitieren Zitieren Design Pattern  

  6. Folgender Benutzer sagt Danke zu RobiHerb für den nützlichen Beitrag:

    buzzer (29.08.2014)

  7. #6
    Bensen83 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.08.2009
    Beiträge
    776
    Danke
    25
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Muss man alles ohne globale Variablen lösen, oder wie? Also alle werte übergeben? Das ist doch auch nicht so toll, wenn man tausende übergabeparameter hat, oder? Wie funktioniert das sonst mit dem Interface?
    Zitieren Zitieren Ohne Globale Variablen  

  8. #7
    Registriert seit
    15.08.2011
    Beiträge
    383
    Danke
    2
    Erhielt 73 Danke für 71 Beiträge

    Standard

    In Codesys 3 bzw. TwinCAT 3 ist ja ein Augenmerk auf objektorientierte Programmierung gelegt.
    Das Interface ist ein Teil der Vererbung bzw. der OOP.

    Ich würde hierbei vieles mit Übergabe- und Rückgabeparametern, sowie lokalen Variablen lösen.

  9. #8
    Registriert seit
    09.11.2007
    Ort
    Rhein Main (Darmstadt)
    Beiträge
    663
    Danke
    61
    Erhielt 112 Danke für 80 Beiträge

    Standard

    Wenn man die Variablen logisch in structs zusammenfasst, übergibt man die struct als "Gesamt Variable" der Funktion oder dem Baustein.

    Die Anlage dieser structs bedarf einiger Vorüberlegung und erleichtert das Handling und die Performance bei der Übergabe enorm.

    Eine Übergabe (per Reference) entspricht im Prinzip einer Information an den aufgerufenen Programmteil, wo die Daten sich im Speicher befinden.

    Hier einmal ein CASE für eine State Engine (Rettungsbühne der Feuerwehr), es werden nur FB verwendet.

    fbCalcState (theImage := theImage); (* struct enthält das komplette Process Abbild*)

    CASE (theImage.myTTab.sysStat) OF
    eOtNN:
    ;
    eSelfTest:
    fbSelfTest (theTable := theImage.myTTab); (* struct enthält NUR die Drehtisch Variablen *)
    eOtStop:
    fbEStop (theTable := theImage.myTTab); (* struct enthält NUR die Drehtisch Variablen *)
    ELSE
    fbCalib (theImage := theImage);
    END_CASE


    Warum keine Globalen Variablen? Globale Variablen können überall manipuliert werden, sei es per Absicht (also wie geplant) oder per Zufall (Tippfehler) oder per Unglück (Kollege muss mal was ändern und sieht nicht die Folgen im ihm unbekannten Teil des Systems).

    Ich selber setze Globals nur als CONST ein, da kann dann nix schiefgehen, der Compiler achtet darauf, dass hier niemand dran drehen kann.
    Geändert von RobiHerb (08.09.2011 um 13:35 Uhr) Grund: Ergänzung
    Als Freelancer immer auf der Suche nach interessanten Projekten.
    Zitieren Zitieren Übergabe  

  10. #9
    Registriert seit
    15.08.2011
    Beiträge
    383
    Danke
    2
    Erhielt 73 Danke für 71 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Warum keine Globalen Variablen? Globale Variablen können überall manipuliert werden
    Sehe ich auch so.
    SET und GET wäre da ja die richtige Methode....

Ähnliche Themen

  1. Schrittketten mit case
    Von Bensen83 im Forum CODESYS und IEC61131
    Antworten: 23
    Letzter Beitrag: 10.09.2014, 07:06
  2. CASE-Anweisung von SCL auf KOP
    Von adonismensch im Forum Programmierstrategien
    Antworten: 8
    Letzter Beitrag: 25.09.2009, 12:41
  3. S5 Teile jeder Art abzugeben
    Von wincc im Forum Suche - Biete
    Antworten: 0
    Letzter Beitrag: 16.11.2008, 16:52
  4. Regeln mit jeder Simatic CPU ???
    Von Anonymous im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 30.04.2004, 23:03

Lesezeichen

Berechtigungen

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