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

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 18 von 18

Thema: OK-Flag mit TIA in SCL

  1. #11
    Registriert seit
    29.03.2004
    Beiträge
    5.792
    Danke
    144
    Erhielt 1.706 Danke für 1.238 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich würde behaupten dass wenn dein Endergebnis "unendlich" anzeigt, dass auch bei den Code vom TIA Portal Auswirkungen haben sollte. Außer die Wertanzeige im TIA-Portal und die Verarbeitung in der SPS sind nicht identisch.

    Lade das Programm über das TIA-Portal in die SPS, und schau dir dann mit dem Classic-Step7 den Code an. Am Besten online.

    Habs grad nochmal mit TIA V12 Upd 3 getestet, die macht nochmal anderen AWL-Code, aber von der Funktion her ist es näher an dem was Step7 erzeugt hat.
    Code:
          SET   
          SAVE  
          =     L      4.0
          L     #IN0
          L     L#0
          <R    
          TAK   
          SPB   M001
          SPA   M002
    M001: CLR   
          =     L      4.0
    M002: L     #IN1
          TAK   
          LN    
          SPO   M003
          SPA   M004
    M003: CLR   
          =     L      4.0
    M004: *R    
          SPO   M005
          SPA   M006
    M005: CLR   
          =     L      4.0
    M006: EXP   
          SPO   M007
          SPA   M008
    M007: CLR   
          =     L      4.0
    M008: T     #TEMP3
          CLR   
          U     L      4.0
          =     #OUT2
          CLR   
          U     L      4.0
          SAVE
    Wie gesagt, TIA-Portal ist eine Wundermaschine wo mit jedem SP und Update an Funktionen rumgefrickelt wird die schon lange hätten funktionsfähig sein müssen.

  2. #12
    Registriert seit
    24.04.2013
    Beiträge
    309
    Danke
    23
    Erhielt 160 Danke für 88 Beiträge

    Standard

    Hallo Earny

    Zitat Zitat von Earny Beitrag anzeigen
    Funktioniert bei mir leider doch nicht.

    Code:
    "MD_30":=BCD16_TO_INT("EW_16")**BCD16_TO_INT("EW_18");
    IF NOT ENO THEN "MD_30":=0; END_IF;
    SCL hat mitunter unerwartete Regeln für die implizite Konvertierung. Du wandelst zwar die BCD nach INT. Aber dein Ergebnis soll REAL werden. Also muss SCL hier nochmal konvertieren. So wie ich das an anderen Beispielen sehe, wird das EW16 von BCD nach INT nach REAL gewandelt und dann mit dem von BCD nach INT gewandelten EW18 potenziert.
    Maximal 999 --> 999.0 ** 999 = 3,6806348825922326789470084006052e+2996 ... bestimmt zu groß für ein Real.
    Die 999 Wurzel aus 1e38 ist 1.09. Also wenn dein EW18 wirklich bis 999 kommt, dann darf dein EW16 nicht größer 1 sein ...


    Also wenn der Haken sitzt, dann klappt es im Allgemeinen schon mit dem ENO, aber nach dem was S. da schon alles verbockt hat, könnte es auch sein, dass beim Potenzieren ein neuer Murks drin ist. Das muss ich morgen mal ausprobieren.

    Ich setze die V13 produktiv ein -- kein Mitleid bitte -- so schlimm ist es gar nicht mehr, nur laaaaangsam

    'n schön' Tach auch
    HB

  3. #13
    Earny ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    04.04.2008
    Beiträge
    389
    Danke
    85
    Erhielt 39 Danke für 24 Beiträge

    Standard

    Hallo HelleBarde

    Die fehlende Konvertierung INT_TO_REAL ist eine Klasse-A-Konvertierung. Diese wird in diesem Fall automatisch ausgeführt. Ich weiß aber auch, dass die Klasse-A-Konvertierungen nicht immer implizit erfolgen. Das spielt aber hier keine Rolle. Die Rechnung wird im übrigen ja richtig ausgeführt. Wenn du z.B. im EW16 den Wert 10 eingibst und im EW18 den Wert 38 dann wird als Ergebnis 1.000004e+38 angezeigt (in PLCSim). Die Ungenauigkeit interessiert mich nicht. Bei dieser Rechnung bleibt - wie gefordert - das ENO auf True.
    Wenn ich jetzt bei EW16 den Wert 10 und im EW18 den Wert 39 eingebe, dann gibt es einen Zahlenüberlauf, weil das theoretische Ergebnis (1.0e39) außerhalb des Zahlenbereichs der Real-Zahlen liegt. In diesem Fall müsste ENO auf False gehen, macht es aber nicht.

    Ergebnis: Der ENO-Mechanismus vom TIA-Portal ist unbrauchbar. Er funktioniert nicht, jedenfalls nicht bei Zahlenüberläufen.
    Geändert von Earny (20.08.2014 um 21:21 Uhr)

  4. #14
    Registriert seit
    29.03.2004
    Beiträge
    5.792
    Danke
    144
    Erhielt 1.706 Danke für 1.238 Beiträge

    Standard

    Wieso guckst du dir den generierten AWL Code nicht mal mit dem Classic Step7 an? Dann kannst du genau sehen woran es scheitert.

  5. #15
    Earny ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    04.04.2008
    Beiträge
    389
    Danke
    85
    Erhielt 39 Danke für 24 Beiträge

    Standard

    Für mich ist wichtig zu wissen, dass bei möglichen Zahlenüberläufen (mit gravierenden Folgen) SCL unter TIA (V11) nicht eingesetzt werden darf, da der ENO-Mechanismus nicht funktioniert. Ich wüsste auch nicht, wie ich bei meinem Beispiel "Potenzieren" das Problem in TIA-SCL lösen könnte.

    Ich schau auch nicht nach, wie der AWL-Code aussieht der vom SCL-Compiler erzeugt wird, sondern programmiere dann gleich in AWL. Hier nehme ich das OS-Bit und frage es mit SPS ab. Das funktioniert.

  6. #16
    Registriert seit
    24.04.2013
    Beiträge
    309
    Danke
    23
    Erhielt 160 Danke für 88 Beiträge

    Standard

    Hi Earny

    richtig, es sollte nicht unser Bier sein, den AWL Code zu kontrollieren. Die V11 macht beim Potenzieren jedenfalls was falsch. In der V13 ist es dann richtiger. V12 habe ich nicht probiert.

    Hi Thomas

    aber unsereiner ist eben so gnadenlos neugierig. Du hast ja im #9 so schön die verschiedenen AWLs gepostet. Mein Gott sind die alle schlecht.
    Statt
    Code:
              SPO   I007 
              SPA   I008
    I007: CLR
               =     L      4.1 
    hätte man doch ohne die ganze Springerei
    Code:
        U OV
        R L4.1
    schreiben können.

    Und es hätte wahrscheinlich heißen sollen
    Code:
            U     L 6.0  
            =     #OUT2 
    Offenbar haben sie das aber selber bemerkt und machen es inzwischen richtiger, aber nicht besser.
    Gut dass es jetzt bei 1200 einen POW_R gibt und vermutlich auch bei 1500

    'n schön' Tach auch
    HB

  7. #17
    Registriert seit
    22.03.2009
    Beiträge
    48
    Danke
    9
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Zitat Zitat von HelleBarde Beitrag anzeigen
    Hi Earny

    richtig, es sollte nicht unser Bier sein, den AWL Code zu kontrollieren. Die V11 macht beim Potenzieren jedenfalls was falsch. In der V13 ist es dann richtiger. V12 habe ich nicht probiert.
    h auch
    HB
    Meine TIA V11, Update2 macht beim Potenzieren (obiges Beispiel) auch nichts falsch. Wenn du die Rechenungenauigkeit meinst, dann ist das völlig normal. Bei Rechnungen mit Real-Zahlen sind nur 6 bis 7 Ziffern korrekt. Der Rest ist "geraten". Das wird erst besser - und die Zahl der richtigen Ziffern ist dann ca. 14 - wenn man anstelle der 32 Bit- die 64 Bit-Kommazahlen einsetzt (Double anstelle von Real). Aber die gibt es nicht bei der S7-300/400.

    Gruß
    Sudoku
    Geändert von Sudoku (22.08.2014 um 08:23 Uhr)

  8. #18
    Registriert seit
    24.04.2013
    Beiträge
    309
    Danke
    23
    Erhielt 160 Danke für 88 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi Sudoku

    es geht nicht um Genauigkeit. Earny beschwert sich ganz zu Recht über ein falsches ENO

    'n schön' Tach auch
    HB

Ähnliche Themen

  1. TIA Gutes Buch für Einstieg in SCL mit TIA
    Von kami im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 05.07.2014, 16:25
  2. Step 7 SCL - OK-Flag über Compileroption aktivieren
    Von Onkel Dagobert im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 21.11.2013, 09:20
  3. TIA SCL Multiinstanz Beobachten mit Aufrufpfad
    Von swissedition im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 23.11.2012, 11:40
  4. Antworten: 10
    Letzter Beitrag: 13.09.2012, 07:31
  5. TIA V11 SCL Problem mit DB zugriff
    Von epy im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 16.01.2012, 12:39

Lesezeichen

Berechtigungen

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