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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: Problem mit TIA - SCL -> CASE-Abfrage mit nachfolger AND-Verknüpfung

  1. #1
    Registriert seit
    12.07.2006
    Beiträge
    45
    Danke
    5
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich arbeite mich gerade für die Programmierung einer S7-1200 in SCL ein, und habe ein Problem mit einer CASE-Anwendung:
    Code:
    FUNCTION "Kette1" : Void
    { S7_Optimized_Access := 'TRUE' }
    VERSION : 0.1
       VAR_INPUT 
          "Start" : Bool;   // Starten
          "Stop" : Bool;   // Stoppen
          "DB_oben" : Bool;   // Endschalter oben
          "DB_unten" : Bool;   // Endschalter unten
          "N_Ventile" : Int;   // Anzahl Ventile
       END_VAR
    
    
       VAR_OUTPUT 
          "Ende" : Bool;   // Kette beendet
       END_VAR
    
    
       VAR_IN_OUT 
          "Schritt" : Int;   // Stand der Schrittkette
       END_VAR
    
    
    
    
    
    
    BEGIN
        IF #Stop THEN
          #Schritt :=0;// Schrittkette zurücksetzen
          #Ende := false;    
        END_IF;
        
        CASE #Schritt OF
          0: IF #Start THEN  #Schritt :=1;
            #Ende:=false;
          END_IF; // Start Abreinigen
          
          1,3,5 : IF #DB_oben THEN #Schritt := #Schritt+1 ; END_IF; // Oberer Endschalter erreicht
          2,4,6 : IF #DB_unten AND (#Schritt < 2*#N_Ventile) THEN #Schritt := #Schritt+1;
                  ELSE
                    #Ende := true;
                  END_IF; // Unterer Endschalter erreicht
        END_CASE;
                
    END_FUNCTION
    In den Einstellungen des Bausteines habe ich "ENO automatisch setzen" angewählt.

    Wenn ich diesen Baustein nun im einer anderen Funktion (FUP) aufrufe, und die Schritte mit den Endschaltern hochzählen will, wird der Ausgang "ENO" Null, sobald der Schritt einen geraden Wert annimmt. Beim nächsten Schritt (ungerade) ist ENO wieder Eins, d.h. der Code wurde ohne Fehler durchlaufen.

    Was ist jetzt das Problem? Darf ich in einer CASE-Anweisung keine UND-Verknüpfung zusätzlich verwenden, da der Baustein ohne Fehler durchlaufen wird, wenn die UND-Abfrage gelöscht wird.


    Oder kann TIA V11 SCL keine UND-Verknüpfung, denn ENO ist immer Null bei dieser einfachen Testfunktion:

    Code:
    FUNCTION "UND_Test" : Void
    { S7_Optimized_Access := 'TRUE' }
    VERSION : 0.1
       VAR_INPUT 
          "W1" : Bool;
          "W2" : Bool;
       END_VAR
    
    
       VAR_OUTPUT 
          "W3" : Bool;
       END_VAR
    
    
    
    
    
    
    BEGIN
        IF #W1 AND #W2 THEN #W3 :=1; END_IF;
        
    END_FUNCTION
    Gruß
    Koslovski
    Zitieren Zitieren Problem mit TIA - SCL -> CASE-Abfrage mit nachfolger AND-Verknüpfung  

  2. #2
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.166
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard

    Hallo,

    ich habe grad kein TIA zur Verfügung, doch kann es sein, daß der SCL-Compiler richtigerweise als Fehler signalisiert, wenn einem OUT-Parameter in FUNCTIONs zur Laufzeit nichts zugewiesen wurde und deshalb ein OUT-Parameter einen unkontrollierten Inhalt hat?
    Code:
    //nicht gut:
        IF #W1 AND #W2 THEN #W3 :=1; END_IF;
    
    //besser:
        IF #W1 AND #W2 THEN #W3:=TRUE; ELSE #W3:=FALSE; END_IF;
    
    //ganz richtig:
        #W3 := #W1 AND #W2;
    SCL ist zwar eine schöne Programmiersprache für "höhere" Aufgaben, doch für einfache logische Verknüpfungen verführt es leider zu unvollständiger Programmierung durch falsche bzw. ereignisorientierte Denkweise.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  3. #3
    Registriert seit
    12.07.2006
    Beiträge
    45
    Danke
    5
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Ich habe Dein zwei Verbesserungsvorschläge mal getestet, und es ist so, dass das ENO immer dem Verknüpfungsergebnis folgt.

    Seltsam, aber anscheinend so gewollt.

    Ich habe die Programmierung der Schrittkette wg. eines logischen Fehlers geändert, das ENO folgt aber immer noch der letzten AND-Verküpfung.

  4. #4
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.166
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard

    Zitat Zitat von Koslovski Beitrag anzeigen
    es ist so, dass das ENO immer dem Verknüpfungsergebnis folgt.

    Seltsam, aber anscheinend so gewollt.

    Das lese ich nicht so aus der TIA-SCL-Dokumentation ...
    In Step7 Classic für S7-300/400 entspricht das ENO dem BIE, nicht dem VKE! Liegt es hier an der S7-1200?

    Du solltest dieses Phänomen wohl besser mit dem Siemens Support besprechen. Damit das Compiler-Problem dann abgestellt wird oder als "gewollt" dokumentiert wird.

    Als workaround mache einfach eine letzte Anweisung in Dein Programm, welche das VKE auf TRUE bringt.
    Code:
    //Dummy Zuweisung
        #temp_bit := TRUE;
    
    //vielleicht funktioniert auch direkt dieses
        ENO := TRUE;
    Unabhängig davon mußt Du in Deinem Programm aber beachten, daß jedem OUTPUT-Parameter immer etwas zugewiesen wird.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  5. #5
    Registriert seit
    19.07.2010
    Beiträge
    1.289
    Danke
    213
    Erhielt 267 Danke für 233 Beiträge

    Standard

    Ich konnte das Problem so nicht darstellen. Hab die kleine Testfunktion aus dem erste Post genommen und in eine Steuerung eingespielt. ENO ist immer TRUE...
    mfG Aventinus

  6. #6
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.166
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard

    So soll es ja auch sein .. (ich kann es gerade nicht testen)
    In welche CPU hast Du es eingespielt? Koslovski schreibt von einer S7-1200, vielleicht simuliert er das Programm aber nur?

    Harald
    Angehängte Grafiken Angehängte Grafiken
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  7. #7
    Registriert seit
    19.07.2010
    Beiträge
    1.289
    Danke
    213
    Erhielt 267 Danke für 233 Beiträge

    Standard

    Ich hab eine 317-2 PN/DP (317-2EK14-0AB0). Das kann natürlich scon wieder was ausmachen. Aber es sollte eben nicht sein.
    mfG Aventinus

  8. #8
    Registriert seit
    12.07.2006
    Beiträge
    45
    Danke
    5
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Es ist eine reale S7-1212C DC/DC/Rly.

    @Aventius: Hast Du bei den Eigenschaften der Testfunktion auch "ENO automatisch" verwalten angewählt?

  9. #9
    Registriert seit
    19.07.2010
    Beiträge
    1.289
    Danke
    213
    Erhielt 267 Danke für 233 Beiträge

    Standard

    Ja, hab ich.
    mfG Aventinus

  10. #10
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.166
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich glaub' da mal an einen S7-1200 spezifischen Bug ... zumal das noch eine sehr frühe SCL-Compiler-Version für S7-1200 ist.

    Allerdings kann man der schwammigen Siemens-Dokumentation auch nicht alles glauben.

    z.B. Step7 Basic V11.0 SP2 Systemhandbuch:
    Diese Aussage auf Seite 794 ist so nicht eindeutig: "Wenn einer der Anweisungen innerhalb des Bausteins einen Laufzeitfehler erzeugt, wird ENO auf "0" gesetzt." Es steht nicht geschrieben, daß ENO auf "1" bleibt, wenn kein Laufzeitfehler auftritt ... Für FB kann man das der Aussage auf Seite 796 entnehmen: "Wenn alle Anweisungen innerhalb von MyFB fehlerfrei ausgeführt werden, führt MyOutputBool Signal "1"." Das Verhalten in FC bleibt unklar ...
    (siehe Bilder im Beitrag #6)

    Es gibt im S7-1200 Systemhandbuch 11/2011 (für Firmware 2.2) einen Abschnitt zu SCL mit dem Parameter "OK", welcher nahelegt, die S7-1200 würde sich wie S7-300/400 "Classic SCL" verhalten (siehe Zitat sowie Bildanhang). Merkwürdigerweise wurde diese Erklärung im S7-1200 Systemhandbuch 04/2012 (für Firmware V3.0) wieder weggelassen. Und warum steht diese Erklärung nicht im aktuellen Systemhandbuch für Step7 Basic (bzw. Professional) V11.0 SP2?
    Wenn die CPU mit der Ausführung eines SCL-Codebausteins beginnt, setzt die CPU OK auf WAHR. Tritt während der Ausführung einer Operation ein Fehler auf (z. B. Division durch null), wird OK auf FALSCH gesetzt. Während der Ausführung des SCL-Codes können Anweisungen den Parameter OK abfragen oder sie können OK auf WAHR oder FALSCH setzen.
    [...]
    Sie können die SCL-Übersetzung so einrichten, dass der Wert von OK nach der Ausführung des Codebausteins in den Ausgangsparameter ENO geschrieben wird.
    Step7 Professional V11.0 SP2 Systemhandbuch - 4.6 STEP 7-Projekte migrieren:
    SCL nutzt den EN-/ENO-Mechanismus des TIA-Portals. Aus diesem Grund werden bei der Migration alle Verwendungen des OK-Flags durch ENO ersetzt. Die Stellen, an denen im Ursprungsprogramm ENO verwendet wurde, werden markiert. Diese Stellen müssen Sie nach
    der Migration überprüfen und an den neuen Mechanismus anpassen.
    Also @Koslovski
    Du solltest den Siemens Support nerven
    Und Dir zwischenzeitlich einen workaround überlegen, denn sooo schnell wird Siemens wegen TIA-Phänomenen wohl nicht reagieren ...

    Harald
    Angehängte Grafiken Angehängte Grafiken
    Geändert von PN/DP (12.09.2012 um 18:34 Uhr) Grund: Doku nochmal genauer gelesen
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

Ähnliche Themen

  1. Schrittketten mit case
    Von Bensen83 im Forum CODESYS und IEC61131
    Antworten: 23
    Letzter Beitrag: 10.09.2014, 07:06
  2. Antworten: 24
    Letzter Beitrag: 05.06.2012, 15:55
  3. Antworten: 2
    Letzter Beitrag: 11.03.2012, 19:25
  4. TIA V11 SCL Problem mit DB zugriff
    Von epy im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 16.01.2012, 12:39
  5. Problem mit CASE
    Von dave.p im Forum CODESYS und IEC61131
    Antworten: 2
    Letzter Beitrag: 09.12.2011, 09:22

Lesezeichen

Berechtigungen

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