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

Page 4 of 4 FirstFirst ... 234
Results 31 to 35 of 35

Thread: V15: In SCL GOTO-Befehl verwenden?

  1. #31
    Join Date
    06.10.2004
    Location
    Kopenhagen.
    Posts
    5,576
    Danke
    445
    Erhielt 1,000 Danke für 792 Beiträge

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    In STEP7 Classic habe ich GOTO verwendet um Programmfehler zu fangen und behandeln.
    Also nicht Maschinen Störungen o.Ä, sondern meine eigene Fehler.
    In STEP7 Classic konnte man den Option setzen das der SCL Compiler den "OK" bit steuern sollte. Dann konnte man einfach den OK bit abfragen, etwa wie..

    //.. komplizierte Code mit ein gut versteckte Fehler der nur zur Laufzeit auftritt.
    IF NOT OK THEN
    Error_string := 'Code error after calculation' ;
    GOTO Exit ;
    END_IF ;
    Sollte nicht notwendig sein wenn man nur perfekt programmiert. Aber wenn man nicht perfekt ist, dann..

    IN TIA scheint es das es gibt den OK bit nicht mehr.
    Umgekehrt gibt es ein neuen --|OK|-- Kontakt in KOP/FUP. Damit kann man Operanden checken (z.B. dass ein REAL nicht NaN ist) bevor man ein Berechnung durchführt.
    In SCL wird ENO gesetzt, aber erst am Exit von den Baustein. Wie man böse Fehler innerhalb von den Code in TIA SCL abfangt, weis ich nicht !
    Jesper M. Pedersen

  2. #32
    Join Date
    06.10.2003
    Posts
    4,382
    Danke
    605
    Erhielt 750 Danke für 589 Beiträge

    Default

    Quote Originally Posted by JesperMP View Post
    .. In SCL wird ENO gesetzt, aber erst am Exit von den Baustein...
    Jesper, das stimmt so nicht. Du kannst auch mitten im Code das ENO abfragen.
    Der höchste Lohn für unsere Bemühungen ist nicht das, was wir dafür bekommen, sondern das, was wir dadurch werden.
    John Ruskin

  3. Folgender Benutzer sagt Danke zu Onkel Dagobert für den nützlichen Beitrag:

    JesperMP (22.10.2018)

  4. #33
    Join Date
    22.06.2009
    Location
    Sassnitz
    Posts
    15,182
    Danke
    1,243
    Erhielt 4,469 Danke für 3,603 Beiträge

    Default

    Quote Originally Posted by JesperMP View Post
    IN TIA scheint es das es gibt den OK bit nicht mehr.
    Ich glaube, in TIA hat man einfach nur das "OK" umbenannt zu "ENO". Man kann ja mal einen CODE mit "IF OK THEN ..." zu TIA konvertieren.

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  5. #34
    Join Date
    06.10.2004
    Location
    Kopenhagen.
    Posts
    5,576
    Danke
    445
    Erhielt 1,000 Danke für 792 Beiträge

    Default

    @Onkel. Ich habe immer gedacht, das für SCL wird ENO erst am Ende von den Baustein gesetzt.
    Nach dein Hinweis und ein bisschen Forschung, ist es mir klar das ENO wird aktualisiert nach jeden Befehl, auch innerhalb von ein CL Baustein, und man kann ENO abfragen nach ein Befehl um zu checken ob es korrekt durchgeführt wurde.
    Habe wieder was gelernt, danke !

    @PN/DP. Es wäre interessant zu sehen wie OK in TIA übersetzt wird. Werde ich checken.
    Jesper M. Pedersen

  6. #35
    Join Date
    06.10.2004
    Location
    Kopenhagen.
    Posts
    5,576
    Danke
    445
    Erhielt 1,000 Danke für 792 Beiträge

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Wenn es jemand interessiert:

    SCL V5.6:
    Code:
    real_temp := real_in_1 / real_in_2 ;
    IF OK THEN
        real_out := real_temp ;
    ELSE
        real_out := 0.0 ;
    END_IF ;    
    
    OK_status := OK ;
    STL V5.6 erzeugt durch SCL compiler:
    Code:
          SET         SAVE  
          =     L      4.1
          L     #real_in_1
          L     #real_in_2
          /R    
          JO    I007
          JU    I008
    I007: CLR   
          =     L      4.1
    I008: T     #real_temp
          CLR   
          A     L      4.1
          JCN   A7d0
          L     #real_temp
          T     #real_out
          JU    A7d1
    A7d0: L     0.000000e+000
          T     #real_out
    A7d1: CLR   
          A     L      4.1
          =     #OK_status
          L     100
          T     #RET_VAL
          SAVE  
          BE
    Es scheint das "OK" ist eigentlich ain Abfrage von OV (über JO, Sprung wenn OV bit gesetzt).

    Nach Migrierung nach SCL V15:
    Code:
    #real_temp := #real_in_1 / #real_in_2 ;
    IF ENO THEN
        #real_out := #real_temp ;
    ELSE
        #real_out := 0.0 ;
    END_IF ;    
    
    #OK_status := ENO ;
    Tatsächlich wirk OK mit ENO ausgetauscht.
    Nach Hans Berger wird (in V5.6) ENO gesetzt nach ein Bausteinaufruf.
    Nach den online hilfe (in V15) wird ENO gesetz nach ein Bausteinaufruf, und wenn "Set ENO Automatically" gewählt ist auch nach jeden Befehl. Es kostet aber Prozessorzeit.
    Jesper M. Pedersen

  7. Folgender Benutzer sagt Danke zu JesperMP für den nützlichen Beitrag:

    PN/DP (09.11.2018)

Similar Threads

  1. TIA SCL Fill Befehl
    By s7Opa in forum Simatic
    Replies: 3
    Last Post: 12.05.2017, 13:46
  2. goto SCL
    By Amzaun in forum Programmierstrategien
    Replies: 36
    Last Post: 15.02.2013, 09:43
  3. Move Befehl in SCL
    By Felse in forum Simatic
    Replies: 11
    Last Post: 03.03.2009, 09:19
  4. PCS7 SCL Befehl
    By Praktikant08 in forum Programmierstrategien
    Replies: 3
    Last Post: 31.10.2008, 15:18
  5. Befehl SAVE für ENO unter SCL
    By Kniffo in forum Programmierstrategien
    Replies: 2
    Last Post: 11.09.2007, 15:44

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •