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

Ergebnis 1 bis 5 von 5

Thema: Instanzen deklariert und alle verhalten sich gleich? Codesys 2.3x

  1. #1
    Registriert seit
    21.02.2011
    Ort
    Deutschland, Baden-Würtemberg
    Beiträge
    990
    Danke
    115
    Erhielt 125 Danke für 100 Beiträge

    Unglücklich


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo liebes Forum,

    ich habe schon wieder ein Problem,

    innerhalb eines Funktionsblockes rufe ich 3 Instanzen des FB-Stromstoss aus der Gebaeude_Allgemein.lib auf.
    Diese FB werden von 3 Tastern getriggert und schreiben jeweils auf 3 verschiedene lokale Variablen.

    Nach dem Test und der Nicht-Funktion meines Programmes, gehe ich irgendwie davon aus, dass sich alle FB-Stromstoss Instanzen
    genau gleich verhalten. Also wenn bei der einen Instanz der Ausgang FALSE ist, ist er es zu diesem Zeitpunkt bei allen.

    Schaut doch mal bitte kurz über diesen Code und sagt mir, was der Fehler ist oder wie ich es lösen kann oder beides.
    Auf jeden Fall bleibt der Ausgang der FB-Stromstoss auf FALSE, egal welchen Taster ich drücke.

    Code:
    Instanz1_Fb_Stromstoss(
        xTaster:=OP_FREI_ON_OFF ,
        xZenAUS:= ,
        xZenEIN:= ,
        bResetModus:=,
        xAktor=>Merker_OP_FREI );
    IF Merker_OP_FREI = TRUE
    THEN Rueckmeldung_OP_FREI := TRUE;
    Instanz2_FB_Stromstoss.xZenAUS:=TRUE;
    Instanz3_FB_Stromstoss.xZenAUS:=TRUE;
    END_IF;
    
    Instanz2_Fb_Stromstoss(
        xTaster:=OP_Desinfektion_ON_OFF ,
        xZenAUS:= ,
        xZenEIN:= ,
        bResetModus:=,
        xAktor=>Merker_OP_Desinfektion);
    IF Merker_OP_Desinfektion = TRUE
    THEN Rueckmeldung_OP_Desinfektion := TRUE;
    Instanz1_FB_Stromstoss.xZenAUS:=TRUE;
    Instanz3_FB_Stromstoss.xZenAUS:=TRUE;
    END_IF;
    
    Instanz3_Fb_Stromstoss(
        xTaster:=OP_Betrieb_ON_OFF,
        xZenAUS:= ,
        xZenEIN:= ,
        bResetModus:=,
        xAktor=>Merker_OP_Desinfektion);
    IF Merker_OP_Desinfektion = TRUE
    THEN Rueckmeldung_OP_Betrieb := TRUE;
    Instanz2_FB_Stromstoss.xZenAUS:=TRUE;
    Instanz1_FB_Stromstoss.xZenAUS:=TRUE;
    END_IF;

    Grüße, Flo
    Zitieren Zitieren Instanzen deklariert und alle verhalten sich gleich? Codesys 2.3x  

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

    Standard

    Ich kenne den FB nicht, aber nachdem die Eingänge ".xZEnAUS" einmal auf TRUE gesetzt sind, werden sie nie wieder FALSE. Ist das so richtig?

  3. #3
    Registriert seit
    08.10.2010
    Beiträge
    107
    Danke
    6
    Erhielt 15 Danke für 15 Beiträge

    Standard

    Hi,

    keine Ahnung, ob das mit Deinem fehler zu tun hat:

    Dein Eingang "xZenAus" wird beim Aufruf nicht belegt!

    -> Du musst, wenn Du den Schaltzustand außerhalb des Aufrufs belegen willst, diesen dann beim Aufruf weglassen.

    (Also "xZenAus:=," löschen)

  4. Folgender Benutzer sagt Danke zu KvT für den nützlichen Beitrag:

    KingHelmer (06.03.2012)

  5. #4
    Registriert seit
    01.03.2008
    Beiträge
    487
    Danke
    3
    Erhielt 43 Danke für 39 Beiträge

    Standard

    Hast du den Baustein auch wirkich 3 mal instanziert ?
    Eventuell nur 1 mal angelegt und dreimal aufgerufen ???

    MfG CAS
    www.cas-solution.de

    Alles geregelt...


    Weltraumflug in den USA zu gewinnen!
    Kratze hier ▒▒▒▒▒▒▒▒▒▒▒▒ mit einer Münze,
    und finde heraus, ob Du der Gewinner bist!

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

    KingHelmer (06.03.2012)

  7. #5
    Avatar von KingHelmer
    KingHelmer ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    21.02.2011
    Ort
    Deutschland, Baden-Würtemberg
    Beiträge
    990
    Danke
    115
    Erhielt 125 Danke für 100 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Leute,

    Danke für eure Antworten.
    Ich hatte diesen FB im PLC_PRG instanziert und dort temporät direkt TRUE und FALSE als "Platzhalter" damit das Projekt korrekt ist, eingefügt.
    Da ich in der Viso auf die lokalen Variablen getastet habe wie z.B. "OP_FREI_ON_OFF" hatte dies überhaupt keine Auswirkung auf den FB, da das FALSE im PLC_PRG anscheinend Priorität gegenüber dem Tasten der lokalen Variablen in der VIsu hat.

    ich habe also die FALSE und TRUE durch glob. Variablen ersetzt und diese dann in der VISU getastet.
    Dann hat es funktioniert bzw. nicht funktioniert, was aber dann an der IF THEN ELSE Programmierung lag.

    Mittlerweile ist das Problem ganz einfach gelöst durch folgendes:

    Code:
    IF OP_FREI_ON_OFF = TRUE
    THEN Rueckmeldung_OP_FREI := TRUE;
    Rueckmeldung_OP_Desinfektion := FALSE;
    Rueckmeldung_OP_Betrieb:= FALSE;
    END_IF;
    
    
    IF OP_Desinfektion_ON_OFF = TRUE
    THEN Rueckmeldung_OP_Desinfektion := TRUE;
    Rueckmeldung_OP_Frei := FALSE;
    Rueckmeldung_OP_Betrieb:= FALSE;
    END_IF;
    
    IF OP_Betrieb_ON_OFF = TRUE
    THEN Rueckmeldung_OP_Betrieb := TRUE;
    Rueckmeldung_OP_Frei := FALSE;
    Rueckmeldung_OP_Desinfektion:= FALSE;
    END_IF;
    Ganz schlicht und einfach und es funktioniert wie es soll!

    Grüße und danke nochmal an alle!

    FLO

Ähnliche Themen

  1. Antworten: 9
    Letzter Beitrag: 15.03.2010, 00:30
  2. Antworten: 10
    Letzter Beitrag: 27.07.2009, 14:27
  3. Modbus FB80 und Instanzen DB
    Von ExilBerliner im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 13.02.2009, 17:36
  4. Antworten: 0
    Letzter Beitrag: 23.10.2008, 21:11
  5. Für alle Freunde von Sanduhren (Logo, Easy und Co.)
    Von zotos im Forum Werbung und Produktneuheiten
    Antworten: 7
    Letzter Beitrag: 31.05.2005, 18:51

Stichworte

Lesezeichen

Berechtigungen

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