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

Ergebnis 1 bis 10 von 10

Thema: Real nach Integer wandeln

  1. #1
    Registriert seit
    14.06.2005
    Beiträge
    223
    Danke
    9
    Erhielt 15 Danke für 15 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich hab schon viel gelesen, aber irgendwie war nicht das dabei was ich brauche. Meine CPU 315 bekommt über Bus Reale Werte, super musste ich nichts mehr tun, aber nun will das übergeordnete Leitsystem die Werte als Integer ( +32..... - -32......)

    Wäre super wenn mir jemand helfen könnte.

    Danke, Alex
    Zitieren Zitieren Real nach Integer wandeln  

  2. #2
    Registriert seit
    16.12.2004
    Ort
    Schleswig-Holstein
    Beiträge
    400
    Danke
    21
    Erhielt 24 Danke für 21 Beiträge

    Standard

    Mit dem Befehl ROUND in STL (aber auch unter KOP und FUP zu finden) kannst Du Dein Real in ein DINT umrunden. Mit TRUNC kriegst Du den Ganzzahl Teil als DINT, meistens wird ROUND wahrscheinlich die bessere Wahl sein. Es gibt auch die CEIL und FLOOR Befehle, die die nächst höhere liegende bzw. nächst niedrigere Ganzzahl liefert.

  3. #3
    paula23 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    14.06.2005
    Beiträge
    223
    Danke
    9
    Erhielt 15 Danke für 15 Beiträge

    Standard

    Sorry ich habs noch nicht ganz, von Real nach DINT das ist verständlich aber dann weiter nach INT. Ich muss mich ja auch irgendwie auf min und max Werte beziehen um ein gescheites Verhältnis zu bekommen.

    Danke, Alex

  4. #4
    Registriert seit
    13.04.2005
    Beiträge
    264
    Danke
    2
    Erhielt 2 Danke für 1 Beitrag

    Standard

    Hallo Alex,

    in MD 10 ist der Real- Wert, in MW 20 der Int- Wert.
    Zu beachten ist, dass der Real- Wert nicht den Max- Wert von 32767 überschreitet.

    L MD 10
    RND
    T MW 20

  5. #5
    Anonymous Gast

    Standard

    Hi RMA war schneller

    Beispiel um den REAL-Wert auf den Double-Integer zu runden

    Beispiel in AWL:

    L MD 10
    RND
    T MD 14

    Beispiel in SCL:

    X1: REAL
    X2: DINT
    X2:=REAL_TO_DINT(X1)

    Beispiel um den REAL-Wert auf den Double-Integer zu wandeln
    Die Operation TRUNC wandelt eine Gleitpunkzahl in eine Ganzpunktzahl (32 Bit) um.

    Beispiel in AWL:

    L MD 34
    TRUNC
    T MD 38


    Beispiel in SCL: --> gibt es nicht !

    Gruß speakingstick
    Zitieren Zitieren real to int  

  6. #6
    paula23 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    14.06.2005
    Beiträge
    223
    Danke
    9
    Erhielt 15 Danke für 15 Beiträge

    Standard

    Ich probier es gerade mal aus. Also Ihr sagt den Wert runden und dann halt nur 16-bet auslesen anstatt 32-bit und dann kann ich den Wert 1 zu 1übernehmen ? Ich glaub ich könnte damit leben.
    Aber die Jungs von der Leitwarte wollen Ihn doch bestimmt noch Scalen und das funktioniert doch dann nicht bzw. ist nicht nötig.

    Danke, Gruss Alex

  7. #7
    Anonymous Gast

    Standard

    und wie sieht es aus?
    Erfolg gehabt ?

    Gruß speakingstick

  8. #8
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    Zitat Zitat von paula23
    Ich probier es gerade mal aus. Also Ihr sagt den Wert runden und dann halt nur 16-bet auslesen anstatt 32-bit und dann kann ich den Wert 1 zu 1übernehmen ? Ich glaub ich könnte damit leben.
    Nur wenn du weißt, daß dein real zwischen -32768.0 und 32767 liegt.
    [quote="paula23"]
    Aber die Jungs von der Leitwarte wollen Ihn doch bestimmt noch Scalen und das funktioniert doch dann nicht bzw. ist nicht nötig.
    [/quote="paula23"]
    Funktionieren tut es immer noch, aber es ist ziemlich idiotisch. Noch idiotischer wird es, wenn du Genauigkeit verlierst. Beispiel: Du kriegst Werte, von, sagen wir einem Amperemet, 0.0 bis 100.0 A mit einer Kommastelle. Die 1. Bedingung ist erfüllt. Aber aus 55.6 A werden dann halt 55 A (trunc) oder 56 A (round). In so einem Fall solltest du mit den "Jungs" vereinbaren, daß du mit 10.0 multiplizierst (vor dem trunc) und sie durch 10 teilen.

  9. #9
    paula23 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    14.06.2005
    Beiträge
    223
    Danke
    9
    Erhielt 15 Danke für 15 Beiträge

    Standard

    Prinzipiell funktioniert es, sogar besser und einfacher als ich dachte.
    Aber wie schon richtig erwähnt, ich unterschlage die Kommastellen und ich habe ein paar Mengen wo ich Durchfluss kumuliere und reichen keine 32...

    Ich glaub ich muss den Theoretikern die das angestiftet haben mal auf den Fuß treten.

    Alex

  10. #10
    Registriert seit
    03.06.2005
    Beiträge
    16
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Wenn man von einem DINT nur 16 bit nutzt und negative Zahlen hat fehlt das Vorzeichenbit welches bei einem DINT das 32te Bit und bei einem INT das 16te Bit ist. Darum musst Du wenn du negative Zahlen hast noch den wert wandeln bzw. das Vorzeichenbit umkopieren.
    Gruß

    meiky2

Ähnliche Themen

  1. integer 32Bit in integer 16 Bit wandeln
    Von slk230-power im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 09.11.2009, 22:35
  2. Sentron : Double nach S7-Real wandeln
    Von Kieler im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 11.09.2009, 21:51
  3. Integer in S5Time wandeln
    Von Nethacks im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 07.08.2009, 09:46
  4. String in einer DB nach Integer wandeln
    Von noeppkes im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 01.10.2007, 14:32
  5. von Real nach Integer wandeln
    Von tuppes38 im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 27.09.2005, 18:41

Lesezeichen

Berechtigungen

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