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

Ergebnis 1 bis 10 von 10

Thema: Analogwertverarbeitung

  1. #1
    Registriert seit
    30.08.2008
    Ort
    55452
    Beiträge
    30
    Danke
    13
    Erhielt 0 Danke für 0 Beiträge

    Lächeln


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo, habe folgendes Problem,

    Über eine SM331 soll ein Analoger Wert 4-20 ma eingelesen werden und auf eine Panel als Wegstrecke engezeigt werden, (0-12,7 mm).

    Folgenden Programmteil habe ich dazu geschrieben:

    L PEW 256
    ITD //16 in 32 Bit umwandeln
    DTR //32 Bit in Gleitpunktzahl
    L 2.764800e+004
    /R
    L 1.270000e+001 //Multiplikation mit 12,7mm (12,7-0)
    *R
    L 0.000000e+000 // +0mm (Offset)
    +R
    RND
    T MW 20 //nur für test
    T "Allg OP->Status".d_6

    Dieser funktioniert, nun soll aber mit einer genauigkeit von 2 nachkommastellen angezeigt werden.

    Meine Idee:

    L PEW 256
    ITD //16 in 32 Bit umwandeln
    DTR //32 Bit in Gleitpunktzahl
    L 2.764800e+004
    /R
    L 1.270000e+001 //Multiplikation mit 12,7mm (12,7-0)
    *R
    L 0.000000e+000 // +0mm (Offset)
    +R
    L 100 // Multiplikation mit 100
    *R
    T MW 20 //nur für test
    T "Allg OP->Status".d_6

    Im Simulator läuft es, in der CPU aber nicht, ist das der falsche Lösungsansatz, kann man die Berechnung besser machen/ander???

    Vielen Dank für die Hilfe im Vorraus.

    Grüsse bluesky
    Zitieren Zitieren Analogwertverarbeitung  

  2. #2
    Registriert seit
    23.05.2008
    Beiträge
    131
    Danke
    60
    Erhielt 11 Danke für 10 Beiträge

    Standard

    Code:
    blueskys Idee:
     
    L PEW 256
    ITD //16 in 32 Bit umwandeln
    DTR //32 Bit in Gleitpunktzahl
    L 2.764800e+004
    /R 
    L 1.270000e+001 //Multiplikation mit 12,7mm (12,7-0)
    *R 
    L 0.000000e+000 // +0mm (Offset)
    +R
    L 100 // Multiplikation mit 100 
    *R 
    T MW 20 //nur für test
    T "Allg OP->Status".d_6
    müsste das nicht

    Code:
    L 1.000000e+002 // Multiplikation mit 100 
    *R 
    und

    Code:
    T MD 20 //nur für test
    heißen?!?

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

    bluesky (10.12.2008)

  4. #3
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    Zitat Zitat von testuser Beitrag anzeigen
    heißen?!?
    in der ersten variante ist RND noch drinnen ... vielleicht einfach ein kopierfehler, aber soweit, so richtig ... ich würde es auch in REAL weiterverarbeiten...
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

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

    bluesky (10.12.2008)

  6. #4
    Registriert seit
    08.04.2008
    Ort
    Köln
    Beiträge
    844
    Danke
    39
    Erhielt 244 Danke für 199 Beiträge

    Standard

    Hallo Bluesky,

    genau das:
    Zitat Zitat von bluesky Beitrag anzeigen
    L 100 // Multiplikation mit 100
    *R
    ist das Problem. Wenn Du mit Realzahlen rechnest müssen alle auch Realzahlen sein!

    Mit:
    Code:
    L 1.0e+002
    *R
    T MD 20
    Sollte es funktionieren.

    Das MD weil Realzahlen ein Doppelwort benötigen.

    Grüße
    Gebs

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

    bluesky (10.12.2008)

  8. #5
    Registriert seit
    30.08.2008
    Ort
    55452
    Beiträge
    30
    Danke
    13
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ja richtig, so würde ich allerdings bei meiner Gleitpunktzahl bleiben und müsste diese dann mit RND Runden, Mir war nur aufgefallen, das er bei dem momentigen Code direkt in die Festkommazahl umwandelt, aber eventuell hängt sich die CPU daran auf??

  9. #6
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    Zitat Zitat von bluesky Beitrag anzeigen
    Ja richtig, so würde ich allerdings bei meiner Gleitpunktzahl bleiben und müsste diese dann mit RND Runden, Mir war nur aufgefallen, das er bei dem momentigen Code direkt in die Festkommazahl umwandelt, aber eventuell hängt sich die CPU daran auf??
    S CPUs kennen keine Festkommazahlen!
    die multiplikation sollte im richtigen format erfolgen PUNKT
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  10. Folgender Benutzer sagt Danke zu vierlagig für den nützlichen Beitrag:

    bluesky (10.12.2008)

  11. #7
    Registriert seit
    30.08.2008
    Ort
    55452
    Beiträge
    30
    Danke
    13
    Erhielt 0 Danke für 0 Beiträge

    Lächeln

    Danke für die schnelle Hilfe, daran lags, seltsamerweise hat der Simulator auch mit der Vermischung Gleitkomma Real gearbeitet, aber die Cpu nicht. Mit dem folgenden Code funktioniert es nun.


    L PEW 256
    ITD //16 in 32 Bit umwandeln
    DTR //32 Bit in Gleitpunktzahl
    L 2.764800e+004
    /R
    L 1.270000e+001 //Multiplikation mit 12,7mm (12,7-0)
    *R
    L 0.000000e+000 // +0mm (Offset)
    +R
    L 1.000000e+002 // Multiplikation mit 100
    *R
    RND
    T MD 20 //nur für test
    T "Allg OP->Status".d_6

    Vielen Dank!!!!

  12. #8
    Registriert seit
    08.04.2008
    Ort
    Köln
    Beiträge
    844
    Danke
    39
    Erhielt 244 Danke für 199 Beiträge

    Standard

    Hallo Bluesky,

    wenn Du die Zahl als Festpunkt übergeben willst geht das entweder so:
    Code:
    L PEW 256
    ITD //16 in 32 Bit umwandeln
    DTR //32 Bit in Gleitpunktzahl
    L 2.764800e+004
    /R 
    L 1.270000e+001 //Multiplikation mit 12,7mm (12,7-0)
    *R 
    L 0.000000e+000 // +0mm (Offset)
    +R 
    RND 
    L 100
    *I
    T MW 20 //nur für test
    T "Allg OP->Status".d_6
    oder so:
    Code:
    L PEW 256
    ITD //16 in 32 Bit umwandeln
    DTR //32 Bit in Gleitpunktzahl
    L 2.764800e+004
    /R 
    L 1.270000e+001 //Multiplikation mit 12,7mm (12,7-0)
    *R 
    L 0.000000e+000 // +0mm (Offset)
    +R 
    L 1.000000e+002
    *R
    RND
    T MW 20 //nur für test
    T "Allg OP->Status".d_6
    Oder aber Du übergibst eine Realzahl ans OP. (Änderungen am OP musst Du ja eh machen,
    wegen der Kommastellen). Dann muss Du aber auch Deinen DB anpassen und "Allg OP->Status".d_6
    als REAL deklarieren. Dann sähe der Code so aus:
    Code:
     L PEW 256
     ITD //16 in 32 Bit umwandeln
     DTR //32 Bit in Gleitpunktzahl
     L 2.764800e+004
     /R 
     L 1.270000e+001 //Multiplikation mit 12,7mm (12,7-0)
     *R 
     L 0.000000e+000 // +0mm (Offset)
     +R 
    T MD 20 //nur für test
     T "Allg OP->Status".d_6
    Grüße
    Gebs

    P.S. Wenn Du die Zahl rundest, brauchst Du kein MD.

  13. #9
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    @gebs: RND macht eine 32bit-ganzzahl, also MD für den worst case ...
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  14. #10
    Registriert seit
    08.04.2008
    Ort
    Köln
    Beiträge
    844
    Danke
    39
    Erhielt 244 Danke für 199 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hast ja recht, aber in diesem Fall ist doch der max. Wert als INT = 1270. Da sollte ein Wort reichen.

Ähnliche Themen

  1. Analogwertverarbeitung
    Von PapaDjango im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 06.07.2010, 14:16
  2. Analogwertverarbeitung
    Von scirocco im Forum Simatic
    Antworten: 13
    Letzter Beitrag: 08.02.2010, 09:24
  3. Analogwertverarbeitung mit S5
    Von Approx im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 16.01.2008, 12:13
  4. Analogwertverarbeitung....???
    Von *Oli* im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 10.10.2007, 11:11
  5. Analogwertverarbeitung mit S5?
    Von Anonymous im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 29.06.2003, 21:53

Stichworte

Lesezeichen

Berechtigungen

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