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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 15

Thema: Realzahl in Hex Umwandeln in benötigte ASCII breite

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

    Ausrufezeichen


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo, es besteht folgendes Problem:

    wir haben ein MP177 ( + DP ET200S) und geben dort eine Real-Zahl ein zb. 15.5
    diese muss dann um sie weiter zuverarbeiten in Hex umgewandelt werden aber jede Zahl einzeln so das es als Hex 31(für 1) 35(5) 2E(.) 35(5) rauskommen muss!!!

    Desweiteren muss diese aber auch in eine bestimmtes Format gewandelt/ausgegeben werden das wie gefolgt aussieht 00000.000 , so das automatisch für die Stellen der Nullen 30 eingesetzt werden muss so das als Endergebniss für das Eingabebeispiel Real-Zahl 15.5 an sich 30 30 30 31 35 2E 35 30 30 dies ist wichtig das wir nur so denn Wert an einen Profibus Slave senden können damit er diesen verarbeiten kann!!!

    Mit welchen Baustein kann ich das lösen? muss ich vorher ein UDT erstellen? und womit bekomme ich es hin das die Zahlen einzeln umgewandelt werden?

    Danke schonmal

    Ise
    Geändert von ise (15.10.2010 um 08:40 Uhr)
    Zitieren Zitieren Realzahl in Hex Umwandeln in benötigte ASCII breite  

  2. #2
    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 ise Beitrag anzeigen

    Danke schonmal
    gern geschehen.

    schön, dass du ein problem hast - ich seh die frage nicht.
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  3. #3
    Registriert seit
    19.07.2010
    Beiträge
    1.289
    Danke
    213
    Erhielt 267 Danke für 233 Beiträge

    Standard

    Ich kenn zwar auch die Frage nicht, aber wenn du die Zahl im Panel nicht als Real sondern als DINT eingibts sollte es schon leichter werden, da du die Posiiton des Komma von vorn herein kennst. Wenn du die Stellen vor dem Komma und nach dem Komma dann entsprechend umkopierst sollte es passen.
    mfG Aventinus

  4. #4
    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 Aventinus Beitrag anzeigen
    Ich kenn zwar auch die Frage nicht, aber wenn du die Zahl im Panel nicht als Real sondern als DINT eingibts sollte es schon leichter werden, da du die Posiiton des Komma von vorn herein kennst. Wenn du die Stellen vor dem Komma und nach dem Komma dann entsprechend umkopierst sollte es passen.
    du meinst, die eingabe mal zehn und dann zu dint und mit DI_STRNG zu string und mit INSERT das komma rein und mit RIGHT noch zurecht gestutzt?

    welch teuflischer plan
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

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

    Befree (15.10.2010)

  6. #5
    Registriert seit
    01.08.2005
    Beiträge
    149
    Danke
    0
    Erhielt 20 Danke für 19 Beiträge

    Standard

    Du willst also den ASCII Code zur Real-Zahl und dann die führenden stellen mit 0 auffüllen?

    Dann gib das ganze doch am Panel schon als String ein.

    Oder wandele die Real-Zahl in einen String (siehe: http://www.sps-forum.de/showthread.php?t=26626).

    Dann würde ich einen "Default String" mit "00000.000" vorbelegen und diesen "geschickt" überschreiben.

  7. #6
    Registriert seit
    16.12.2008
    Ort
    Fürth
    Beiträge
    146
    Danke
    32
    Erhielt 21 Danke für 19 Beiträge

    Standard

    du meinst, die eingabe mal zehn und dann zu dint und mit DI_STRNG zu string und mit INSERT das komma rein und mit RIGHT noch zurecht gestutzt?

    welch teuflischer plan
    Ich fall vom Stuhl
    -A+B=15=21 Klingt komisch - ist aber so!
    -It's not a bug, it's a feature!
    -Es gibt nur 3 Feinde im Leben eines Programmierers: Sonnenlicht, Frischluft und das unerträgliche Gebrüll der Vögel ...!

  8. #7
    ise ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    15.10.2010
    Beiträge
    4
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ich will die Zahl z.B 15.5 im Panel eingeben
    und als Ziel soll dieses dann als 00015.500 in unseren Slave angezeigt werden.

    nur dieser reagiert auf ascii befehle und diese kann ich nicht direkt mit unsere DP schicken.

  9. #8
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.850
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard

    ich bin eigentlich kein freund davon fertige lösungen zu posten
    da ich aber einen baustein habe der dint in char wandelt war das drumherum schnell gemacht
    Angehängte Dateien Angehängte Dateien
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  10. Folgende 2 Benutzer sagen Danke zu volker für den nützlichen Beitrag:

    Befree (15.10.2010),ise (15.10.2010)

  11. #9
    Registriert seit
    08.02.2007
    Ort
    A-2320
    Beiträge
    2.252
    Danke
    244
    Erhielt 332 Danke für 303 Beiträge

    Standard

    Zitat Zitat von ise Beitrag anzeigen
    Hallo, es besteht folgendes Problem:

    wir haben ein MP177 ( + DP ET200S) und geben dort eine Real-Zahl ein zb. 15.5
    diese muss dann um sie weiter zuverarbeiten in Hex umgewandelt werden aber jede Zahl einzeln so das es als Hex 31(für 1) 35(5) 2E(.) 35(5) rauskommen muss!!!

    Desweiteren muss diese aber auch in eine bestimmtes Format gewandelt/ausgegeben werden das wie gefolgt aussieht 00000.000 , so das automatisch für die Stellen der Nullen 30 eingesetzt werden muss so das als Endergebniss für das Eingabebeispiel Real-Zahl 15.5 an sich 30 30 30 31 35 2E 35 30 30 dies ist wichtig das wir nur so denn Wert an einen Profibus Slave senden können damit er diesen verarbeiten kann!!!

    Mit welchen Baustein kann ich das lösen? muss ich vorher ein UDT erstellen? und womit bekomme ich es hin das die Zahlen einzeln umgewandelt werden?

    Danke schonmal

    Ise
    Also zu Fuss kann man das so programmieren- als Idee gedacht:

    Realzahl * 1000
    in DINT wandeln = DOUBLEINTEGER = MD10

    MD10 durch 10 dividieren (mit MOD)
    Rest (steht im Akku) in ASCII wandeln und an 1/1000 Adresse schreiben
    MD10 durch 10 dividieren und in MD10 speichern

    MD10 durch 10 dividieren (mit MOD)
    Rest (steht im Akku) in ASCII wandeln und an 1/100 Adresse schreiben
    MD10 durch 10 dividieren und in MD10 speichern

    MD10 durch 10 dividieren (mit MOD)
    Rest (steht im Akku) in ASCII wandeln und an 1/10 Adresse schreiben
    MD10 durch 10 dividieren und in MD10 speichern

    usw. bis alle 8 Stellen durch sind (bei negativen Zahlen muss man noch ein bissl was dazuüberlegen)

    lG
    Karl

  12. #10
    ise ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    15.10.2010
    Beiträge
    4
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Danke sehr versuchen es mal damit, sorry sind nicht wirklich experten im Programmieren und brauchen es nur für unsere Schule.

    Bin aber trotzdem für weitere Lösungswege offen!!!

Ähnliche Themen

  1. Benötigte MMC-Größe ermitteln
    Von element. im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 24.08.2009, 14:38
  2. Realzahl umwandeln
    Von maccap im Forum Hochsprachen - OPC
    Antworten: 10
    Letzter Beitrag: 13.11.2007, 14:48
  3. Umwandeln analogwert in Realzahl?
    Von Mecha02 im Forum Programmierstrategien
    Antworten: 4
    Letzter Beitrag: 26.07.2007, 17:50
  4. Fernwartung, benötigte Ports?
    Von mst im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 12.03.2007, 13:47
  5. 5-stellige ascii zahl in normale zahl umwandeln
    Von Anonymous im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 04.01.2006, 16:12

Lesezeichen

Berechtigungen

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