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

Ergebnis 1 bis 8 von 8

Thema: Kann ich Hex und INt miteinander verrechnen?

  1. #1
    Registriert seit
    01.05.2006
    Beiträge
    245
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Freunde,

    irgendwie habe ich bei den Zahlenformaten noch nicht alles verstanden.
    Ich weiß, dass man Zahlenformate wie INT,DINT, REAL und BCD nicht einfach miteinander verrechnen kann. Dafür gibt es ja die Umwandlungen mittels ITD, DTR usw..
    Aber was ist nun mit WORD und INT. Ich habe doch einmal die Möglichkeit im Anwenderprogramm, eine Zahl als Dezimalzahl (L 2) und als Hexadezimalzahl (L W#16#2) in ein WORD zuschreiben!? Doch im DB selbst steht es doch so oder so im Hexformat!?
    Kann ich ein INT-Format nur mit einem WORD-Format verrechnen, wenn ich die Zahl als Dezimalzahl ins WORD geschrieben habe?

    Wäre für eine Antwort dankbar!
    Viele Grüße,
    Tigerkroete
    Zitieren Zitieren Kann ich Hex und INt miteinander verrechnen?  

  2. #2
    Registriert seit
    27.08.2004
    Ort
    Bei Bremen
    Beiträge
    648
    Danke
    11
    Erhielt 12 Danke für 10 Beiträge

    Standard

    Hallo,

    der Unterschied zwischen INT und WORD liegt im Vorzeichen.

    Daher klappt es nur, wenn Dein HEX-WERT im Positiven Bereich liegt (0..32xxx). Das Ergebnis ist ein INT.
    Gruß
    Heinz

  3. #3
    Registriert seit
    25.10.2006
    Beiträge
    7
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Mich interessiert das auch.
    Man kann INT und WORD also miteinander verrechnen, egal in welchem Format die Zahl in das WORD geschrieben wurde? Nur wenn die Zahl im WORD negativ ist, funktioniert das nicht?

    Spike

  4. #4
    Registriert seit
    22.11.2005
    Ort
    kl.Odenwald
    Beiträge
    716
    Danke
    111
    Erhielt 85 Danke für 71 Beiträge

    Standard

    Zitat Zitat von Spike Beitrag anzeigen
    Mich interessiert das auch.
    Man kann INT und WORD also miteinander verrechnen, egal in welchem Format die Zahl in das WORD geschrieben wurde? Nur wenn die Zahl im WORD negativ ist, funktioniert das nicht?

    Spike
    INT und WORD haben beide 16bit, werden jedoch unterschiedlich interpretiert. Verrechnen kannst du nur im INT, DINT oder REAL Format.
    In FUP/KOP/SCL werden die entsprechenden Funktion direkt gesperrt.
    Es sei denn, du hast's in den Einstellungen unterdrückt

    In AWL jedoch nicht und die Eingabe:

    L 1
    L W#16#01
    +I
    T Erg

    Ist prinzipiell immer möglich und das sogar wenn Erg REAL ist, macht aber keinen Sinn . Der Programmierer muss hier selber sicherstellen (und ist gut beraten) nur typgleiche Operationen durchzuführen.

  5. #5
    Registriert seit
    18.09.2006
    Beiträge
    231
    Danke
    0
    Erhielt 2 Danke für 2 Beiträge

    Standard

    im db steht das so wie du das deklariert hast.
    da ist aber gar nicht das problem.

    nehmen wir mal an du definierst in deinem hmi ein eingabefeld vom typ word(hex) und vom typ int(dez).

    nun gibst du in beide 20 ein.

    var1 hat aber dann einen wert von 32 dez. und var2 logischerweise 20 dez.

    bei real ist das npch viel krasser, da das format völlig anders ist.

    wie du das im programm verarbeitest bleibt dir überlassen. du musst halt
    nur wissen in welchem format die vorliegen.

    allklar ?
    .
    mfg KALEL

    Wer über gewisse Dinge nicht den Verstand verliert, der hat keinen zu verlieren.
    Gottfried Ephraim Lessing

  6. #6
    Registriert seit
    25.10.2006
    Beiträge
    7
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Code:
    Verrechnen kannst du nur im INT, DINT oder REAL Format.
    Wenn ich nur in diesen Formaten rechnen kann, warum gibt es denn dann überhaupt die Möglichkeit Hexzahlen aufzunehmen? Welchen Vorteil hat das? Wann brauche ich eine Hexzahl, anstatt einer Dezimalzahl?

    Danke,
    Spike

  7. #7
    Registriert seit
    18.09.2006
    Beiträge
    231
    Danke
    0
    Erhielt 2 Danke für 2 Beiträge

    Standard

    es gibt halt variablen die liegen im hexformat vor. da ist es dann teilweise einfacher im hex zu bleiben.

    nehmen wir als beispiel die uhrzeit im ob1. diese daten liegen im hexformat vor.

    14hex = 20dez

    um nun zu sehen ob es 14 uhr ist kann ich dies so machen.

    L LB15 //stunde
    L W#16#14
    ==I
    = M1.0

    oder so

    L LB15
    BTI
    L 14
    ==I
    = M1.0
    .
    mfg KALEL

    Wer über gewisse Dinge nicht den Verstand verliert, der hat keinen zu verlieren.
    Gottfried Ephraim Lessing

  8. #8
    Registriert seit
    19.09.2006
    Beiträge
    49
    Danke
    0
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    das einzige wo man wirklich aufpassen muss sind Vergleichsoperationen...


    L W#16#8000
    L W#16#FFF
    >I
    = M 900.0


    der Merker 900.0 wird in diesem Beispiel nicht 1 werden da das Vorzeichenbit(das höchstwertige) gesetzt ist und somit der erste Wert kleiner ist als der zweite. Der Grund liegt im eben genannten INT Rechenverfahren, welches immer angewandt wird.
    Kaum macht mans richtig, schon funktionierts...

Ähnliche Themen

  1. UDTs miteinander vergleichen
    Von Freakazoid im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 25.03.2011, 10:08
  2. Analoge Messwerte verrechnen...
    Von parkkralle im Forum CODESYS und IEC61131
    Antworten: 11
    Letzter Beitrag: 11.03.2011, 09:09
  3. Zwei Variablen verrechnen...
    Von Magni im Forum HMI
    Antworten: 14
    Letzter Beitrag: 18.11.2007, 20:53
  4. S7-200+TD200+PC miteinander vernetzen
    Von Unreal im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 20.06.2005, 19:43
  5. Firmenwagen über das Gehalt. Wieviel, wie verrechnen?
    Von plc_tippser im Forum Stammtisch
    Antworten: 2
    Letzter Beitrag: 07.03.2005, 23:52

Lesezeichen

Berechtigungen

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