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

Ergebnis 1 bis 8 von 8

Thema: CoDeSys: Mehrere Programme in einem Projekt verwalten

  1. #1
    Registriert seit
    10.09.2012
    Beiträge
    33
    Danke
    9
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich schreibe momentan in eine einzige Projektdatei mehrere Einzelprogramme, die je nach Bedarf abgearbeitet werden sollen. Es handelt sich dabei um verschiedene Regelstrategien ein und derselben Anlage. Ich habe alle Regelstrategien in ein Projekt gepackt, da mir so das Arbeiten z.B. bei der Visualisierung leichter fällt.
    Ich möchte nun folgendes machen:
    Wenn ein bestimmter Wert auf "TRUE" steht soll eine bestimmte Regelstrategie abgearbeitet werden, während alle anderen "passiv" sind. Ich habe schon versucht dies mit dem Taskkonfigurator zu lösen, allerdings ohne Erfolg.

    Hat jemand eine Idee wie ich dieses Problem lösen kann?

    Vielen Dank im Voraus.
    Zitieren Zitieren CoDeSys: Mehrere Programme in einem Projekt verwalten  

  2. #2
    Registriert seit
    01.10.2009
    Ort
    Regensburg
    Beiträge
    77
    Danke
    8
    Erhielt 11 Danke für 11 Beiträge

    Standard

    Hallo,

    das mit verschiedenen Tasks zu lösen ist mit Kanonen auf Spatzen schießen.
    Es wäre ja auch denkbar, dass Du ein zentrales PRG verwendest, in dem du die anderen PRGs bedingt aufrufst.

    so etwa:

    Code:
    IF Bedingung1 THEN
        PRG1();
    ELSIF Bedingung2 then
        PRG2();
    END_IF
    Grundsätzlich sind viele Wege machbar, aber da Du schon Einzelprogramme (PRG) hast, scheint mir das am einfachsten.

    Hoffe das hilft Dir erst mal weiter.

    cheers

  3. #3
    Registriert seit
    10.09.2012
    Beiträge
    33
    Danke
    9
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Danke für die Antwort. Leider scheint dieser Ansatz bei mir nicht zu funktionieren. Wenn ich den Code von oben verwende und auf meine Programme anwende, werden alle anderen Programme trotzdem abgearbeitet, so als würde das Programm die Bedingungen ignorieren.

  4. #4
    Registriert seit
    01.10.2009
    Ort
    Regensburg
    Beiträge
    77
    Danke
    8
    Erhielt 11 Danke für 11 Beiträge

    Standard

    poste am besten mal dein projekt dann ist es leichter drüber zu reden.

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

    Standard

    Zitat Zitat von Klimamensch Beitrag anzeigen
    Danke für die Antwort. Leider scheint dieser Ansatz bei mir nicht zu funktionieren. Wenn ich den Code von oben verwende und auf meine Programme anwende, werden alle anderen Programme trotzdem abgearbeitet, so als würde das Programm die Bedingungen ignorieren.
    Wenn ein PRG so wie beschrieben abgearbeitet wird, obwohl es eigentlich nicht sein dürfte, ist ein Fehler in der Aufruflogik.

    Im Programm, das nicht aufgerufen werden sollte, einen Breakpoint setzen und nachsehen, wer das PRG aufruft (notfalls mit Single Step).

    Nebenbemerkung: Ich verstehe die IEC Norm so, dass ganau ein Programm in einem Projekt existiert. Das Programm ruft dann Funktionen oder FunktionsBlöcke jweils mit Parametern auf, aber nie andere Programme. (Ausnahmen verschiedene Tasks etc.)

    Das mag für viele nur ein Schönheitsproblem sein, aber ohne Parameter Übergabe bekommt man auch gleich noch viele globale VAR und andere Nachteile mit ins Projekt hinein.
    Als Freelancer immer auf der Suche nach interessanten Projekten.
    Zitieren Zitieren Sollte funktionieren ...  

  6. #6
    Registriert seit
    01.10.2009
    Ort
    Regensburg
    Beiträge
    77
    Danke
    8
    Erhielt 11 Danke für 11 Beiträge

    Standard

    Hallo RobiHerb,

    CoDeSys erlaubt es ja mit PRGs zu arbeiten, ob es sinnvoll ist oder der Übersichtlichkeit hilft sei mal dahin gestellt.

    Wenn ein PRG in einem PRG gerufen werden soll, muss es so funktionieren, es sei denn der TE hat seine diversen PRGs schon in verschiedenen Tasks gesteckt und vergessen die Tasks wieder zu löschen.

    Aber ich sehe das ähnlich wie Du, dass bei der Verwendung von PRGs Zurückhaltung angebracht ist. In einem FB oder einer Funktion lassen sich Sachen einfach besser kapseln und man verdreckt sich nicht die hoffentlich spärlich eingesetzten globalen Variablen

    ein Feedback vom TE würde Klarheit bringen


    cheers

  7. #7
    Registriert seit
    10.09.2012
    Beiträge
    33
    Danke
    9
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo,

    Danke nochmals für die Antworten. Ich habe mich nun dagegen entschieden mehrere Programme in einem Projekt zu verwenden, da so das Programm auf eine Datengröße anschwillt, die bei der Übertragung zur DDC zu viel Zeit kostet. Bin Anfänger und muss daher öfter Daten transferieren, um Dinge auszuprobieren.

    Bei Gelegenheit werde ich es noch mal mit Breakpoints setzen versuchen, um zu klären, von wo das Programm ausgeführt wird.

  8. #8
    Registriert seit
    25.11.2010
    Ort
    OWL
    Beiträge
    750
    Danke
    27
    Erhielt 165 Danke für 143 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ein PRG kann doch genauso INPUT/OUTPUT-Variablen haben wie ein FB. Ich sehe deshalb keine Notwendigkeit, beim Einsatz von PRG's mehr globale Variablen zu verwenden als bei FB's. Entscheidend ist für mich nur, ob ich eine POU mehrfach instanzierbar haben will/muss oder nicht.

Ähnliche Themen

  1. Antworten: 13
    Letzter Beitrag: 27.04.2012, 14:19
  2. Antworten: 1
    Letzter Beitrag: 08.12.2009, 12:04
  3. Mehrere Benutzer an einem Step7 Projekt
    Von Ollypse im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 08.11.2009, 11:12
  4. Antworten: 6
    Letzter Beitrag: 03.03.2008, 11:23
  5. mehrere CPU's in einem Projekt
    Von michi im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 16.05.2005, 22:05

Lesezeichen

Berechtigungen

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