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

Ergebnis 1 bis 10 von 10

Thema: SCL Programmierung - Datentyp-Konvertierung

  1. #1
    Registriert seit
    27.04.2010
    Beiträge
    5
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo liebe SPS`ler
    ich habe ein Problem

    ich habe 2 Eingänge
    der 1. ist ein Merkerdoppelwort
    der 2. ist ein 3-stelliger BCD-Wert

    und diese beiden will ich Dividieren. also den 1. / 2.

    und dieser werd soll dann als Real-Zahl ausgegeben werden.

    ich versuche es schon ewig und bekomme es einfach nicht hin

    Hoffe ihr könnt mir helfen
    Zitieren Zitieren SCL Programmierung - Datentyp-Konvertierung  

  2. #2
    Registriert seit
    03.04.2008
    Beiträge
    6.200
    Danke
    237
    Erhielt 815 Danke für 689 Beiträge

    Standard

    Zitat Zitat von Dr.Crow Beitrag anzeigen
    Hallo liebe SPS`ler
    ich habe ein Problem

    ich habe 2 Eingänge
    der 1. ist ein Merkerdoppelwort
    der 2. ist ein 3-stelliger BCD-Wert

    und diese beiden will ich Dividieren. also den 1. / 2.

    und dieser werd soll dann als Real-Zahl ausgegeben werden.

    ich versuche es schon ewig und bekomme es einfach nicht hin

    Hoffe ihr könnt mir helfen
    Welches Format hat das Word? HEX, INT?

    Unabhängig davon BCD in INT und dann in REAL Wandeln, dann das Word wie immer es auch aussieht in REAL wandeln.


    Also dein Problem verstehe ich jetzt nicht. (Frei nach Guttenberg)


    bike


    P.S: Kostet das jetzt Praxisgebühr?

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

    Dr.Crow (23.02.2011)

  4. #3
    Registriert seit
    20.11.2006
    Ort
    Hamburg
    Beiträge
    225
    Danke
    35
    Erhielt 35 Danke für 32 Beiträge

    Standard

    Zitat Zitat von Dr.Crow Beitrag anzeigen
    Hallo liebe SPS`ler
    ich habe ein Problem

    ich habe 2 Eingänge
    der 1. ist ein Merkerdoppelwort
    der 2. ist ein 3-stelliger BCD-Wert

    und diese beiden will ich Dividieren. also den 1. / 2.

    und dieser werd soll dann als Real-Zahl ausgegeben werden.

    ich versuche es schon ewig und bekomme es einfach nicht hin

    Hoffe ihr könnt mir helfen
    1. In welchem Format liegt dein Merkerdoppelwort vor? (Real, DINT)
    2. Der 3-stellige BCD_Wert ist ein Wort?

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

    Dr.Crow (23.02.2011)

  6. #4
    Registriert seit
    30.08.2010
    Ort
    Östereich
    Beiträge
    1.458
    Danke
    503
    Erhielt 217 Danke für 192 Beiträge

    Standard

    also beide zuerst nach Real wandeln, dann einfach dividieren, so würde ich das lösen.
    Elektrotechnik und Elektronik funktioniert mit Rauch (Beweis: Tritt Rauch aus, funktioniert auch das Bauteil nicht mehr)

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

    Dr.Crow (23.02.2011)

  8. #5
    Dr.Crow ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    27.04.2010
    Beiträge
    5
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Erstmal danke:
    habe jetzt durch eure Anmerkungen den Fehler gefunden.
    ich hatte nicht richtig in meiner Symboltabelle die deklariert. bzw. nicht richtig zugeordnet ... da sucht man sich depp

    habe jetzt aber die Funktion rausgefunden ... bin jetzt allerdings etwas verwirrt ... mache eine Umwandlung von DINT_TO_REAL die steht allerdings nicht in der Tabelle der Datentyp-Konvertierung drin (Hilfe Menü)?

    aber wenn ich die mache (und nicht über meinen Umweg) funktioniert es!
    könnt ihr mir sagen wieso die nicht darin steht?

    @ bike ___Es tut mir sehr leid das ich nicht wirklich zu den Erfahrenen Benutzer zähle und mit scl umwandlungen kenn ich mich nicht aus (AWL ja)
    aber danke für deine Hilfe =)

    @ Dotzi___1. DINT
    2. äöhh ja ein wort mit vorzeichen halt

    @ Winnman__ Ja das denke ich mir auch^^ zeigt mir aber jedesmal fehler an^^

    Gruß Crow
    Zitieren Zitieren Entschuldigung =)  

  9. #6
    Registriert seit
    03.04.2008
    Beiträge
    6.200
    Danke
    237
    Erhielt 815 Danke für 689 Beiträge

    Standard

    Die Typ Konvertierung ist wenn ich mich nicht täusche ein Baustein aus der Standard Bibliothek -> IEC Blocks (oder so ähnlich)


    bike

  10. #7
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.622
    Danke
    377
    Erhielt 799 Danke für 642 Beiträge

    Standard

    Code:
    FUNCTION FC_test : VOID
    
    VAR_INPUT
        di_val1 : DINT ;
        bcd_val2 : DWORD ; // kein test für >999 !
    END_VAR 
    
    VAR_OUTPUT
        r_result : REAL ;
    END_VAR 
    
    r_result := DINT_TO_REAL(di_val1 / BCD_TO_DINT(bcd_val2)) ;
    
    END_FUNCTION
    Wenn nötig, kannst du eventuell ein test für BCD werte > 999 einfügen.
    Jesper M. Pedersen
    Zitieren Zitieren Keine IEC Bausteine benötigt !  

  11. #8
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.622
    Danke
    377
    Erhielt 799 Danke für 642 Beiträge

    Standard

    Code:
    FUNCTION FC_test : VOID
    
    VAR_INPUT
        di_val1 : DINT ;
        bcd_val2 : WORD ; // kein test für >999 !
    END_VAR 
    
    VAR_OUTPUT
        r_result : REAL ;
    END_VAR 
    
    r_result := DINT_TO_REAL(di_val1 / INT_TO_DINT(BCD_TO_INT(bcd_val2))) ;
    
    END_FUNCTION
    Jesper M. Pedersen
    Zitieren Zitieren Wenn der BCD Wert nur ein Word füllen darf.  

  12. #9
    Registriert seit
    20.11.2006
    Ort
    Hamburg
    Beiträge
    225
    Danke
    35
    Erhielt 35 Danke für 32 Beiträge

    Standard

    Zitat Zitat von JesperMP Beitrag anzeigen
    Code:
    FUNCTION FC_test : VOID
     
    VAR_INPUT
        di_val1 : DINT ;
        bcd_val2 : WORD ; // kein test für >999 !
    END_VAR 
     
    VAR_OUTPUT
        r_result : REAL ;
    END_VAR 
     
    r_result := DINT_TO_REAL(di_val1 / INT_TO_DINT(BCD_TO_INT(bcd_val2))) ;
     
    END_FUNCTION
    Bist du sicher?
    Würde sagen es muss so aussehen, ist aber nicht getestet:
    Code:
    FUNCTION FC_test : VOID
     
    VAR_INPUT
        di_val1 : DINT ;
        bcd_val2 : WORD ; // kein test für >999 !
    END_VAR 
     
    VAR_OUTPUT
        r_result : REAL ;
    END_VAR 
     
    r_result := DINT_TO_REAL(di_val1) / DINT_TO_REAL(INT_TO_DINT(BCD_TO_INT(bcd_val2))) ;
     
    END_FUNCTION

  13. #10
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.622
    Danke
    377
    Erhielt 799 Danke für 642 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich habe es nur gemacht wie Dr. Crow es beschrieben hat.

    und diese beiden will ich Dividieren. also den 1. / 2.
    und dieser werd soll dann als Real-Zahl ausgegeben werden.
    Aber du hast vermutlich recht. Er braucht vermutlich das die division mit fliess-komma genauigheit durchgeführt wird.
    Jesper M. Pedersen

Ähnliche Themen

  1. S5-Datentyp KC in der S7
    Von Woto im Forum Simatic
    Antworten: 15
    Letzter Beitrag: 26.09.2008, 08:45
  2. S5 konvertierung
    Von bresner1 im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 10.07.2008, 11:01
  3. Konvertierung
    Von mitchih im Forum HMI
    Antworten: 1
    Letzter Beitrag: 23.02.2008, 02:20
  4. konvertierung von S5 auf S7
    Von leon79 im Forum Simatic
    Antworten: 30
    Letzter Beitrag: 17.02.2007, 22:08
  5. Konvertierung S7 200 zu S7 300?
    Von Anonymous im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 01.02.2006, 10:14

Lesezeichen

Berechtigungen

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