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

Ergebnis 1 bis 8 von 8

Thema: lokale Variable "hängt sich auf"

  1. #1
    Dodo Gast

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    ich "hätte mal gerne ein Problem", bei dem ich die Hilfe erfahrener S7 Programiierer brauche:
    in einer S7 400 habe ich in einem FC eine lokale Variable (Bool) deklariert.
    Ich benutze die Variable sozusagen als "Schmiermerker": Ich weise der Variablen ein VKE zu, und rufe dann einen FC auf, bei dem diese Variable einen Eingangsparameter bildet.

    Nach dem Aufruf des FCs wird die Variable auf Null gesetzt.

    Das ganze lieg monatelang problemlos.
    Letzte Woche hatte ich folgende Erscheinung:
    Die lokale Variable hatte immer den Wert "1", obwohl die Verknüpfungsbedingung nicht erfülllt war und (wie bschrieben), die Variable ja in jedem Zyklus gelöscht wird.
    Ich habe die Zuweisung der Variable dann mal ganz gelöscht und nur noch in jedem Zyklus auf Null gesetzt, trotzdem hat die Variable im nächsten Zyklus
    wieder den Wert 1.

    Jemand ne Idee, woher so was herkommen kann?

    Hier noch ein kurzer Programmauszug

    //Drucker starten
    U M 1010.2 //Startimpuls für Zebra Drucker
    UN M 1016.6 //kein Fehler am Applizierer
    S #Start_Drucker

    //Drucker starten
    CALL FC 1017
    Trigger:=MB2012 //Triggerbyte
    Start :=M2010.5 //Start Impuls
    Spezial:=M0.0

    U M 0.1 // Immer
    R #Start_Drucker
    Zitieren Zitieren lokale Variable "hängt sich auf"  

  2. #2
    Dodo Gast

    Standard

    Hupps, Schäm!

    Da war in dem Programmauszug noch ein Fehler drin
    (Nur hier, nicht im eigentlichen Progrmm):

    //Drucker starten
    U M 1010.2 //Startimpuls für Zebra Drucker
    UN M 1016.6 //kein Fehler am Applizierer
    S #Start_Drucker

    //Drucker starten
    CALL FC 1017
    Trigger:=MB2012 //Triggerbyte
    Start :=#Start_Drucker //Start Impuls
    Spezial:=M0.0

    U M 0.1 // Immer
    R #Start_Drucker

  3. #3
    Registriert seit
    03.12.2004
    Beiträge
    92
    Danke
    13
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hallo,

    versuch mal folgendes
    und den Rücksetzbefehl weg lassen.

    //Drucker starten
    U M 1010.2 //Startimpuls für Zebra Drucker
    UN M 1016.6 //kein Fehler am Applizierer
    = #Start_Drucker // <==

    //Drucker starten
    CALL FC 1017
    Trigger:=MB2012 //Triggerbyte
    Start :=#Start_Drucker //Start Impuls
    Spezial:=M0.0


    gruss
    frank

  4. #4
    Registriert seit
    29.01.2004
    Beiträge
    322
    Danke
    10
    Erhielt 22 Danke für 22 Beiträge

    Standard

    Hallo,
    ich würde die lokale Variable vor der Erzeugung auf null setzen, damit sie vor der Abfrage initialisiert ist und nicht erst danach. Nebenbei gefragt: Macht ein Setzen einer lokalen Variablen in einem FC überhaupt Sinn?

    U M 0.1 // Immer
    R #Start_Drucker

    //Drucker starten
    U M 1010.2 //Startimpuls für Zebra Drucker
    UN M 1016.6 //kein Fehler am Applizierer
    S #Start_Drucker

    //Drucker starten
    CALL FC 1017
    Trigger:=MB2012 //Triggerbyte
    Start :=#Start_Drucker //Start Impuls
    Spezial:=M0.0

    Gruß

    Andreas

  5. #5
    Registriert seit
    26.07.2004
    Beiträge
    87
    Danke
    0
    Erhielt 2 Danke für 2 Beiträge

    Standard

    wie oben schon geschrieben, mach aus dem setzen ne einfache Zuweisung. Damit stellst du sicher, daß die Variable das von dir benötigte VKE darstellt.

  6. #6
    Registriert seit
    29.01.2004
    Beiträge
    322
    Danke
    10
    Erhielt 22 Danke für 22 Beiträge

    Standard

    @TimoS
    Sorry, hab nicht so genau hingeschaut

    Gruß

    Andreas

  7. #7
    Jo ist offline Erfahrener Benutzer
    Registriert seit
    05.10.2005
    Beiträge
    115
    Danke
    10
    Erhielt 10 Danke für 9 Beiträge

    Standard

    "lokale Variaben" im FC sind temporäre Lokaldaten und werden im Lokaldatenstack (L-Stack) abgelegt.
    Bei der Deklaration wird dem FC nur der notwendige Bereich zur Verfügung gestellt, aber nicht initialisiert.
    Die Werte im L-Stack sind beim Aufruf "zufällig", da der L-Stack ja auch von anderen Bausteinen verwendet wird.
    Deshalb immer im Baustein initialiseren, es sei denn, es erfolgt eine Zuweisung, die auch nie übersprungen wird.
    Bisher ging's, aber seit einer beliebigen Änderung geht's nicht mehr, ist ein typisches Symptom für fehlende Initialisierung.
    mfG. Jo

  8. #8
    Dodo Gast

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Jo
    "lokale Variaben" im FC sind temporäre Lokaldaten und werden im Lokaldatenstack (L-Stack) abgelegt.
    Bei der Deklaration wird dem FC nur der notwendige Bereich zur Verfügung gestellt, aber nicht initialisiert.
    Die Werte im L-Stack sind beim Aufruf "zufällig", da der L-Stack ja auch von anderen Bausteinen verwendet wird.
    Deshalb immer im Baustein initialiseren, es sei denn, es erfolgt eine Zuweisung, die auch nie übersprungen wird.
    Bisher ging's, aber seit einer beliebigen Änderung geht's nicht mehr, ist ein typisches Symptom für fehlende Initialisierung.
    mfG. Jo
    Stimmt, da liegt der Hase im Pfeffer!
    Ursprünglich war da mal eine Zuweisung, so dass die Variable automatisch initialisiert wurde.

    Aus nem Grund, den ich selber nicht mehr genau weiss, hatte ich dass dann geändert zu nem Setz Befehl und hinterher wieder rückgesetzt!
    Ich hab jetzt sowieso einfach nen "richtigen" Merker genommen!

    Danke noch mal für die Infos!

Ähnliche Themen

  1. LibNoDave aktuelle Version "hängt"
    Von Lazarus™ im Forum Hochsprachen - OPC
    Antworten: 1
    Letzter Beitrag: 24.02.2011, 22:58
  2. CX hängt sich manchmal auf bei "Route hinzufügen"
    Von karlheinzsps im Forum CODESYS und IEC61131
    Antworten: 17
    Letzter Beitrag: 03.03.2010, 13:15
  3. S5: FB mehrfach verwenden; "lokale Variablen"
    Von burner im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 15.01.2006, 19:38
  4. OP270 "hängt" sich auf
    Von Anonymous im Forum HMI
    Antworten: 3
    Letzter Beitrag: 06.01.2005, 18:04
  5. S7 "lokale" Variablendeklaration in FB/FC Baustein
    Von halorenzen im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 06.10.2003, 20:50

Lesezeichen

Berechtigungen

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