TIA Probleme mit s71200 und scl

RMLIF

Level-1
Beiträge
29
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
hallo zusammen

ich hab mir einen fc für meine Typ Verwaltung in scl erstellt
diesen baustein verwende ich regelmässig in verschiedenen Anlagen in leicht abgänderter form

hab in diesem Baustein einen Aufruf eines case als schrittkette drin
jetzt hab ich das Problem das einer der out parameter nur so lange anstehen wie der schritt im caseauruf aktive ist obwohl erst mit := zugewiesen ist


kennt jemand von euch das beschriebene verhalten und kann mir einen tip geben wo ich suchen muss steh im Wald und sehr die Bäume nicht


verwendet wird eine 1214 CPU und Tia V 11 sp2

Grüße Rudi
 
Ganz blöd:

Vielleicht setzt du die Variable in einem anderen Schritt wieder zurück?
Vielleicht setzt du die Variable im Init-Schritt zurück und oder deine Schrittkettenvariable ist TEMP?

Grüße

Marcel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen Marcel

Anbei der Code aus Scl
Es geht dabei um die Variable Typ_Daten Geladen 1
Diese wird durch den schritt 3 in der schrittkette i zurück gesetzt und einmal am ende durch die Variable typ geändert an beiden stellen hab ich sie schon ausgeklammert immer noch das selbe verhalten an die schrittketten variablen hab ich auch schon gedacht nur die sind in einem datenbaustein hinterlegt ich hab sie auch schon zum test durch zwei unbenutze merkerwörter ersetzt
mein momentaner gedanke ist das der lokaldatenbereich durch irgend etwas anderes überschrieben wird und deshalb die lokaldaten des ausgangsparameters nicht mehr passt nur bin ich da noch nicht weiter gekommen

wie bereits geschrieben läuft der selbe baustein in mehreren anderen anlagen ohne probleme der einzige unterschied ist das die Stringdatene die hin und her kopiert werden andere sind

Gruß Rudi

Code:
IF #Typ_Art =#Typ_Art_Nr THEN
    IF #Typauswahl =#Typauswahl_Nr THEN
    
  
      IF #Daten_Laden AND NOT  #Baustein_aktive  THEN
        #n:=1;
      END_IF;
      
        CASE  #n OF
          1:
             #Daten_Laden:=0;
             #Baustein_aktive:=1;
             #n:=2;
            ;
            2:
            #Typ_Daten_vom_OP."Valeo Wischhebelsachnummer":=#Typ_Daten_vom_DP."Valeo Wischhebelsachnummer";
            #Typ_Daten_vom_OP."Kunden Sachnummer Wischhebel":=#Typ_Daten_vom_DP."Kunden Sachnummer Wischhebel";
            #Typ_Daten_vom_OP."Kunden Sachnummer Wischarm":=#Typ_Daten_vom_DP."Kunden Sachnummer Wischarm";
            #Typ_Daten_vom_OP.SW_Widerstandsmessung :=#Typ_Daten_vom_DP.SW_Widerstandsmessung;
            #Typ_Daten_vom_OP."OGW + Widerstandsmessung" :=#Typ_Daten_vom_DP."OGW + Widerstandsmessung";
            #Typ_Daten_vom_OP."UGW - Widerstandsmessung" := #Typ_Daten_vom_DP."UGW - Widerstandsmessung";
            #n:=3;
            
          3:
             #"Typ Daten Geladen_1":=1;
             #Baustein_aktive:=0;
             #n:=0;  
            ;
      
        END_CASE;
        
   
       IF #Daten_Speichern AND NOT  #Baustein_aktive THEN
         #I:=1;
              
       END_IF;
         CASE #I OF
           1:
              #Daten_Speichern := 0;
              #Baustein_aktive:=1;
              #I:=2;
              ;
           2: 
                 #Typ_Daten_vom_DP."Valeo Wischhebelsachnummer":=#Typ_Daten_vom_OP."Valeo Wischhebelsachnummer";
                 #Typ_Daten_vom_DP."Kunden Sachnummer Wischhebel":=#Typ_Daten_vom_OP."Kunden Sachnummer Wischhebel";
                 #Typ_Daten_vom_DP."Kunden Sachnummer Wischarm":=#Typ_Daten_vom_OP."Kunden Sachnummer Wischarm";
                 #Typ_Daten_vom_DP.SW_Widerstandsmessung :=#Typ_Daten_vom_OP.SW_Widerstandsmessung;
                 #Typ_Daten_vom_DP."OGW + Widerstandsmessung" :=#Typ_Daten_vom_OP."OGW + Widerstandsmessung";
                 #Typ_Daten_vom_DP."UGW - Widerstandsmessung":=#Typ_Daten_vom_OP."UGW - Widerstandsmessung";
                
                 #I:=3;
                
           3:
                //#"Typ Daten Geladen_1":=0;
                #Baustein_aktive:=0;
                #I:=0;
                ;
        
    END_CASE;
    ;
  END_IF;    
  ;
END_IF;

        // Typ Daten in Edikett Transferieren 
        
                 "Daten Etikett".Grunddaten[7]:=#Typ_Daten_vom_OP."Valeo Wischhebelsachnummer";
                 "Daten Etikett".Grunddaten[9]:=#Typ_Daten_vom_OP."Kunden Sachnummer Wischhebel";
                 "Daten Etikett".Grunddaten[11]:=#Typ_Daten_vom_OP."Kunden Sachnummer Wischarm";
                 
                
IF #Typ_geändert THEN
// #"Typ Daten Geladen_1":=0;
  #Typ_geändert:=0;
 ;
 
  
END_IF;
 
Wechsle mal die Outs zu InOuts, weil die Outs nicht mehr über das Bausteinende hinaus im IDB gespeichert werden.
PN/DP hatte da neulich was zu gepostet.
 
Der baustein ist ein FC die outs schreib ich auf einen globalen DB einen IDB gibts dazu nicht ich werd es mal versuchen
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wechsle mal die Outs zu InOuts, weil die Outs nicht mehr über das Bausteinende hinaus im IDB gespeichert werden.
PN/DP hatte da neulich was zu gepostet.

Wenn ich damals PN/DP richtig verstanden habe, war das eine sarkastische Anmerkung zur Qualität der Siemens Doku!

Outs werden bei TIA hoffentlich immer noch sehr wohl im IDB gespeichert! Die Doku ist einfach falsch. Ansonsten möge man mich hier bitte berichtigen :)

Gruß.
 
Hallo an alle

Erst mal Danke für die Hilfe

Das Problem hat sich Gelöst indem ich die Qut Variable als INOUT Variable deklariert habe scheinbar ist da schon etwas wares dran das hier durch Siemens was geändert wurde
und Out Variablen anderes als INOUT s behandelt werden

Gruß Rudi
 
Der baustein ist ein FC die outs schreib ich auf einen globalen DB einen IDB gibts dazu nicht ich werd es mal versuchen
Naja, dann ist doch mehr oder weniger alles klar, OUT eines FC kann man wohl prinzipiell als Temp betrachten,
d.h. keine Zuweisung = Wert ist reiner Zufall

Mfg
Manuel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn liegt das ja nicht an TIA sondern an der S7-1200.

Kann aber wirklich sein, dass ich das falsch verstanden habe.
Aber wie auch immer, da es ein FC ist, kann das ja nicht die Ursache sein.


PS: Posten vom Handy ist grausam. :(
 
Nein der Baustein ist Schon immer ein FC hab erst vor 3 Wochen eine anlage mit dem Selben FC in betrieb genommen da hat es funktioniert
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Werden die Outs eigentlich auch vom Lokaldatenstack abgezweigt? Dann kann es ja funktionieren (solange die Ebene nicht wieder überschrieben wird), ist allerdings ja doch eher Zufall.

mfG René
 
Wenn ich damals PN/DP richtig verstanden habe, war das eine sarkastische Anmerkung zur Qualität der Siemens Doku!

Outs werden bei TIA hoffentlich immer noch sehr wohl im IDB gespeichert! Die Doku ist einfach falsch.
Ja, die Doku ist leider falsch. :(

Bei FC ist es "schon immer" so und wird auch so dokumentiert, daß der Zustand eines OUTPUT zufällig ist wenn ihm nichts zugewiesen wird.
ES SEI DENN, als Aktualparameter wird ein E/A/M verwendet - dann merkt sich der OUTPUT den Wert vom vorherigen Aufruf. Siehe hier

Harald
 
Zurück
Oben