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

Seite 2 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 11 bis 20 von 36

Thema: Muß man Real in TIA-SCL tatsächlich mit E+000 angeben?

  1. #11
    Registriert seit
    29.03.2004
    Beiträge
    5.741
    Danke
    143
    Erhielt 1.687 Danke für 1.226 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Matze001 Beitrag anzeigen
    Ich bleibe bei Classic, da weiß ich was mich (nicht mehr) überrascht!
    Classic ist doch zum brechen denn
    [frust]
    keine Überraschungen, funktioniert
    [/frust]

  2. Folgender Benutzer sagt Danke zu Thomas_v2.1 für den nützlichen Beitrag:

    Perfektionist (02.07.2013)

  3. #12
    Avatar von Ralle
    Ralle ist offline Super-Moderator
    Themenstarter
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.224
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    Zitat Zitat von Thomas_v2.1 Beitrag anzeigen
    Für was für eine SPS schreibst du das Programm denn, für eine 300/400 oder für eine 1500?
    Simatic S7 315 PN
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  4. #13
    Registriert seit
    25.06.2007
    Ort
    Dresden
    Beiträge
    3.930
    Danke
    465
    Erhielt 878 Danke für 634 Beiträge

    Standard

    Zitat Zitat von Ralle Beitrag anzeigen
    Ich finde das ungeheuerlich.
    Ein Punkt mehr für das SPS-Treffen ---- Kobra übernehmen sie (ähm ... rN)
    Grüße Frank

  5. Folgender Benutzer sagt Danke zu IBFS für den nützlichen Beitrag:

    rostiger Nagel (30.05.2013)

  6. #14
    Registriert seit
    28.02.2006
    Ort
    Ostsee 5 min zum Strand
    Beiträge
    780
    Danke
    92
    Erhielt 110 Danke für 98 Beiträge

    Standard

    Moin,

    ich möchte mich hier mal kurz mit anhängen.

    Ich bin zur Zeit dabei eine 314C-2 PN/DP V3.3 mit dem TIA V12 Update3 zu programmieren. BZW bin schon auf der IBN
    Dabei hab ich natürlich festgestellt, dass SCL mit REAL irgendwie große Grütze ist. Könnt ihr nir die beiden angehängten Bilder mal erklären?
    Bild TEST_SCL_TIA_FC ist eine FC .._Temp sind Temp-Var. .._Input sind IN-Var. Alles aufgerufen im OB und übergeben wird am INT_Input 580 und REAL_Input 580.0

    Bei Bild TEST_SCL_TIA_FB ist es ein FB mit dem selben und zusätzlich noch Stat_Var.
    Ich muss dazu sagen, das ich gerad erst in den Kinderschuhen stecke, was SCL angeht.
    Ich fande es aber sehr interessant zu proggen, da ich doch eine etwas längere Rechnung machen musste und diesen in AWL sehr unübersichtlich wäre.
    Warum funktioniert die REAL Geschichte nur, wenn ich diese von IN übergebe???
    Angehängte Grafiken Angehängte Grafiken
    Gruß von der Ostsee

    Nordischerjung
    _____________________

    Wenn man seinem Paßbild ähnlich zu sehen beginnt, sollte man schleunigst Urlaub machen. (Vico Torriani, schw. Entertainer)

    Ich habe eine Diät gemacht und fettem Essen und Alkohol abgeschworen - in zwei Wochen verlor ich 14 Tage. (Joe E. Lewis)

  7. #15
    Registriert seit
    29.03.2004
    Beiträge
    5.741
    Danke
    143
    Erhielt 1.687 Danke für 1.226 Beiträge

    Standard

    Das sieht ja putzig aus.
    Hast du die Möglichkeit den generierten AWL Code hier mal reinzustellen?
    Ich weiß nicht ob das mit dem TIA Portal auch möglich ist, ansonsten in Plcsim oder eine SPS laden, und dann mit Step 7 einen AG-Abzug machen.

  8. #16
    Registriert seit
    01.09.2008
    Ort
    Berlin
    Beiträge
    172
    Danke
    51
    Erhielt 51 Danke für 44 Beiträge

    Standard

    off-topic, sorry.
    aber bei siemens fällt mir in letzter zeit nur noch eins ein: "siemens hat nur noch bananen-produkte, die reifen beim kunden, vor ort"

  9. #17
    Registriert seit
    28.02.2006
    Ort
    Ostsee 5 min zum Strand
    Beiträge
    780
    Danke
    92
    Erhielt 110 Danke für 98 Beiträge

    Standard

    So ich hab das mit Step7 gemach, hab keine Lust zu suchen

    OB1:
    Code:
    ORGANIZATION_BLOCK OB 1
    VERSION : 0.1
    
    
    VAR_TEMP
      TEMP0 : BYTE ;	
      TEMP1 : BYTE ;	
      TEMP2 : BYTE ;	
      TEMP3 : BYTE ;	
      TEMP4 : BYTE ;	
      TEMP5 : BYTE ;	
      TEMP6 : INT ;	
      TEMP7 : INT ;	
      TEMP8 : INT ;	
      TEMP9 : DATE_AND_TIME ;	
    END_VAR
    BEGIN
    NETWORK
    TITLE =
    
          CALL FC     1 (
               IN0                      := 580,
               IN1                      := 5.800000e+002);
          NOP   0; 
    NETWORK
    TITLE =
    
          CALL FB     1 , DB     1 (
               IN0                      := 580,
               IN1                      := 5.800000e+002);
          NOP   0; 
    NETWORK
    TITLE =
    
    END_ORGANIZATION_BLOCK
    FC1:
    Code:
    FUNCTION FC 1 : VOID
    TITLE =
    VERSION : 0.1
    
    
    VAR_INPUT
      IN0 : INT ;	
      IN1 : REAL ;	
    END_VAR
    VAR_TEMP
      TEMP2 : REAL ;	
      TEMP3 : INT ;	
      TEMP4 : REAL ;	
      TEMP5 : REAL ;	
      TEMP6 : REAL ;	
      TEMP7 : REAL ;	
    END_VAR
    BEGIN
    NETWORK
    TITLE =
    
          SET   ; 
          SAVE  ; 
          =     L     22.0; 
          L     L#1084227584; 
          T     #TEMP2; 
          L     L#1084227584; 
          T     #TEMP7; 
          L     580; 
          T     #TEMP3; 
          L     L#1084227584; 
          T     #TEMP4; 
          L     #IN0; 
          ITD   ; 
          DTR   ; 
          T     #TEMP5; 
          L     #IN1; 
          T     #TEMP6; 
          CLR   ; 
          U     L     22.0; 
          SAVE  ; 
    END_FUNCTION
    FB1:
    Code:
    FUNCTION_BLOCK FB 1
    TITLE =
    VERSION : 0.1
    
    
    VAR_INPUT
      IN0 : INT ;	
      IN1 : REAL ;	
    END_VAR
    VAR
      STAT2 : REAL ;	
      STAT3 : INT ;	
      STAT4 : REAL ;	
      STAT5 : REAL ;	
      STAT6 : REAL ;	
      STAT7 : REAL ;	
    END_VAR
    VAR_TEMP
      TEMP8 : REAL ;	
      TEMP9 : INT ;	
      TEMP10 : REAL ;	
      TEMP11 : REAL ;	
      TEMP12 : REAL ;	
      TEMP13 : REAL ;	
    END_VAR
    BEGIN
    NETWORK
    TITLE =
    
          SET   ; 
          SAVE  ; 
          =     L     22.0; 
          L     L#1084227584; 
          T     #TEMP8; 
          L     L#1084227584; 
          T     #TEMP13; 
          L     580; 
          T     #TEMP9; 
          L     L#1084227584; 
          T     #TEMP10; 
          L     #IN0; 
          ITD   ; 
          DTR   ; 
          T     LD    24; 
          L     LD    24; 
          T     #TEMP11; 
          L     #IN1; 
          T     #TEMP12; 
          L     L#1084227584; 
          T     #STAT2; 
          L     L#1084227584; 
          T     #STAT7; 
          L     580; 
          T     #STAT3; 
          L     L#1084227584; 
          T     #STAT4; 
          L     LD    24; 
          T     #STAT5; 
          L     #IN1; 
          T     #STAT6; 
          CLR   ; 
          U     L     22.0; 
          SAVE  ; 
    END_FUNCTION_BLOCK
    DB1:
    Code:
    DATA_BLOCK DB 1
    VERSION : 0.1
    
     FB 1
    BEGIN
       IN0 := 580; 
       IN1 := 5.800000e+002; 
       STAT2 := 5.000000e+000; 
       STAT3 := 580; 
       STAT4 := 5.000000e+000; 
       STAT5 := 5.800000e+002; 
       STAT6 := 5.800000e+002; 
       STAT7 := 5.000000e+000; 
    END_DATA_BLOCK
    Wieso wird nur bei IN0 mit ITD und DTR gewandelt und nicht auch bei L 580????
    Ich glaube ich werde das mal an Siemens weiter geben.
    Gruß von der Ostsee

    Nordischerjung
    _____________________

    Wenn man seinem Paßbild ähnlich zu sehen beginnt, sollte man schleunigst Urlaub machen. (Vico Torriani, schw. Entertainer)

    Ich habe eine Diät gemacht und fettem Essen und Alkohol abgeschworen - in zwei Wochen verlor ich 14 Tage. (Joe E. Lewis)

  10. #18
    Registriert seit
    01.09.2008
    Ort
    Berlin
    Beiträge
    172
    Danke
    51
    Erhielt 51 Danke für 44 Beiträge

    Standard

    hab mich gleich mal an der ersten zeile (SCL, in vergleich zu AWL) versucht.
    also "L L#1084227584; " ist schon falsch:

    Code:
    1084227584
    ->hex
    4    0    A    0    0    0    0    0
    0100|0000|1010|0000|0000|0000|0000|0000|
    VZ
     |   exp  ||          mantisse        |
    VZ 0 = pos
    exp= 10000001 = 129
    mantisse
    0*2^-1=0
    1*2^-2=0,25
    0*2^-3=0
    0* ...
    ...
    
    Wert= (1+mantisse)*2^(exp-127)= 5 (!!!)
    es wird einfach 5.0 geladen, nicht 580.0, sieht nach einen compiler-fehler aus. die 5.0exp0 ist ja auch in dem bild zu sehen. wie damals bei ralle.
    hoffe mal ich hab mich nicht vertran, hab nebenher noch nen anderes projekt laufen...

  11. #19
    Registriert seit
    01.09.2008
    Ort
    Berlin
    Beiträge
    172
    Danke
    51
    Erhielt 51 Danke für 44 Beiträge

    Standard

    Zitat Zitat von Nordischerjung Beitrag anzeigen
    Wieso wird nur bei IN0 mit ITD und DTR gewandelt und nicht auch bei L 580????
    Ich glaube ich werde das mal an Siemens weiter geben.
    meinst du bei:
    Code:
     L     580; 
    T     #TEMP3;
    ?
    dort ist es ja _int := _int, da braucht man keine wandlung, bei L 580.0 (Real) wird das normal schon vom compiler gewandelt im quellcode steht der entsprechende wert. dann muss das bei konstanten nicht bei jedem durchlauf von der sps erledigt werden. was normal ein zeitgewinn ist, wenn es funktioniert.^^

    EDIT: bei sowas wie lade int_temp ist es dann wieder das selbe, auch wenn der wert x zeilen weiter oben als konstante 580 steht und erst im verlauf des code's gewandelt wird, das optimiert der compiler weg. was ein normales verhalten ist. nur muss die compilerinterne umwandlung halt richtig funktionieren, was sie hier offenbar nicht tut.
    Code:
    #INT_TEMP:=580;...
    
    
    REAL_Temp2:=INT_TO_REAL(#INT_TEMP);
    
    
    compiler macht daraus:
    
    
    REAL_TEMP2:=580.0;
    (da der wert eh konstant ist, optimierung!)
    der fehler sollte also immer auftreten, wenn konstanten zugewiesen werden. ob nun direkt per wert, oder über den umweg eines symbolischen namen.
    -> der Funktions(baustein) aufruf ist offenbar von der code-optimierung ausgenommen, dort erwartet man sicher keine konstanten.

    EDIT2:
    Zitat Zitat von Ralle Beitrag anzeigen
    Welches Kraftwerk fliegt in die Luft, weil nicht einmal eine primitive Real-Rechenoperation korrekt funktioniert?
    aber dafür gibt es doch spezielle sicherheitsmechanismen:
    http://www.industry.siemens.com/topi...n/default.aspx


    EDIT3: sollte mit dem neusten update wieder weg sein: #32
    oder du hast ein zu neues update, dann is es wieder drinn, man kann sich ja auch nicht immer neue bug's ausdenken.^^
    Geändert von ebt'ler (30.06.2013 um 23:38 Uhr)

  12. Folgender Benutzer sagt Danke zu ebt'ler für den nützlichen Beitrag:

    Nordischerjung (01.07.2013)

  13. #20
    Registriert seit
    01.09.2008
    Ort
    Berlin
    Beiträge
    172
    Danke
    51
    Erhielt 51 Danke für 44 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    S7-300/S7-400: Die Berechnung von Real Werten als Konstanten wurde korrigiert.
    http://support.automation.siemens.co...80&caller=view

    ach, iwie komm ich von den bug nicht weg. das fasziniert mich so...
    also is anscheinend mit update 2 gekommen und durch 3 wieder behoben.
    was für eine "verbesserung"

    Der Inhalt von Update 2 wird ab Update 3 bereitgestellt.
    gibt es daher schon garnicht mehr.
    ich hätte gerne gewusst, was da als "verbesserung" stand, vielleicht "funktionalität wurde über die grenzen hinaus optimiert, quasie wegoptimiert"

    EDIT1: den bug gab es offenbar nur in SCL (laut siemens), da sieht man wie wenig leute SCL nutzen. das das keinen großen aufschrei gab. ich hab hier nur 2 beiläufige themen entdeckt.
    Geändert von ebt'ler (30.06.2013 um 23:59 Uhr)

  14. Folgender Benutzer sagt Danke zu ebt'ler für den nützlichen Beitrag:

    Nordischerjung (01.07.2013)

Ähnliche Themen

  1. Rechnen mit REAL in SCL ???
    Von mkd im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 28.07.2009, 09:31
  2. Kommastellen in REAL ( mit SCL )
    Von paula23 im Forum Simatic
    Antworten: 24
    Letzter Beitrag: 16.10.2008, 21:57
  3. Antworten: 4
    Letzter Beitrag: 07.10.2006, 00:34
  4. Antworten: 1
    Letzter Beitrag: 10.10.2005, 09:09
  5. Antworten: 1
    Letzter Beitrag: 13.11.2003, 16:49

Lesezeichen

Berechtigungen

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