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

Results 1 to 4 of 4

Thread: S7-Real in TwinCAT verarbeiten

  1. #1
    Join Date
    24.01.2009
    Posts
    1
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Frage


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich habe folgenes Problem:

    Von einem externen Gerät erhalte ich einen Messwert als real im S7-Datenformat. Zum Beispiel wird die Zahl 721,0 als 44344000h übertragen. Wenn ich diese Zahl nun im TwinCAT auf eine real Variable schreibe kommt eine völlig "blödsinnige" Zahl heraus. Auch das Drehen der Eingangsvariable (Motorolaformat -> Intelformat) 00403444h bringt nicht den gewünschten Erfolgt.

    Wer kann mir hier weiterhelfen?

    Vielen Dank!
    Reply With Quote Reply With Quote S7-Real in TwinCAT verarbeiten  

  2. #2
    Join Date
    29.08.2006
    Posts
    197
    Danke
    0
    Erhielt 35 Danke für 21 Beiträge

    Default

    deine zahl kommt im hexadezimalformat

    geeignete bausteine für umwandlungen findest du in der oscat.lib unter www.oscat.de
    OSCAT
    Open Source Community for Automation Technolgy
    www.oscat.de

  3. #3
    Join Date
    29.03.2004
    Posts
    7,273
    Danke
    165
    Erhielt 2,184 Danke für 1,565 Beiträge

    Default

    Quote Originally Posted by hugo View Post
    deine zahl kommt im hexadezimalformat

    geeignete bausteine für umwandlungen findest du in der oscat.lib unter www.oscat.de
    Was ist denn das Hexadezimalformat?

    Irgendwie findet man in keiner Dokumentation wie das Real-Format bei TwinCat aufgebaut ist.

    Ich wollte mir gerade mal testweise die Bytes ansehen, allerdings fehlt in der IEC-Sprache ja das AT-Konstrukt.
    In SCL würde ich es mir so schreiben um die Bytes anzusehen:
    Code:
    rReal : REAL;
    bArr AT rReal : ARRAY[0..3] OF BYTE;
    Wie würde man sowas denn bei TwinCat/Codesys machen?

    Ich habs mal mit Zeigern versucht, aber da meckert der Compiler dass die Typen nicht passen, und sowas wie einen Cast scheint es nicht zu geben.

  4. #4
    Join Date
    29.03.2004
    Posts
    7,273
    Danke
    165
    Erhielt 2,184 Danke für 1,565 Beiträge

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Quote Originally Posted by Thomas_v2.1 View Post
    Wie würde man sowas denn bei TwinCat/Codesys machen?

    Ich habs mal mit Zeigern versucht, aber da meckert der Compiler dass die Typen nicht passen, und sowas wie einen Cast scheint es nicht zu geben.
    OK, geht doch:
    Code:
    VAR
        rReal : REAL;
        ptr : POINTER TO BYTE;
        bArr : ARRAY [0..3] OF BYTE;
    END_VAR
    
    rReal := 721.0;
    
    ptr := ADR(rReal);
    bArr[0] := ptr^;
    ptr := ptr + 1;
    bArr[1] := ptr^;
    ptr := ptr + 1;
    bArr[2] := ptr^;
    ptr := ptr + 1;
    bArr[3] := ptr^;

Similar Threads

  1. Twincat 3 Real Wert nach eingabe speichern // Neustart Problem
    By Boderbaer in forum CODESYS und IEC61131
    Replies: 4
    Last Post: 23.01.2018, 17:36
  2. Replies: 10
    Last Post: 07.04.2016, 17:47
  3. TwinCat Analogwert verarbeiten
    By spiegelkabinett in forum CODESYS und IEC61131
    Replies: 13
    Last Post: 29.01.2015, 16:53
  4. FB gesucht:In1=1(real)/In2=2(real),usw...
    By egro in forum CODESYS und IEC61131
    Replies: 31
    Last Post: 31.08.2014, 14:17
  5. UDINT in TwinCAT verarbeiten und skalieren
    By olitheis in forum CODESYS und IEC61131
    Replies: 13
    Last Post: 06.12.2010, 08:19

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •