-> Hier kostenlos registrieren
Hallo
ich habe das folgende Problem. Ich möchte über eine Profibus Verbindung Daten aus einem Gerät auslesen. Die Verbindung steht und die Daten werden auch übermittelt.
Leider liegt auf der ersten Adresse ein Wert im Byte und folgend, dazu mehrere Werte im Float Format.
Byte Byte Adresse: 0
Float Byte Adresse: 1-4
Float Byte Adresse: 5-6
etc.
Über den System Manager kann ich leider nur 8 / 16 / 32 Word Blöcke zum auslesen des Gerätes konfigurieren, wodurch meine komplette Adressierung um genau ein Byte verrutscht. Damit werden die Float Werte nicht richtig angezeigt.
Ich übernehme die Werte in ein Array in der Größe 0..123 Byte, da ich nun 62 Word konsistent vom Gerät einlese.
Im PLC wollte ich nun aus den einzelnen Bytes die jeweiligen REAL Werte wieder mittels eines Pointers zusammensetzen, was mir allerdings nicht so ganz gelingt.
Scheinbar lässt sich der Pointer nicht um eine Byte Breite erhöhen.
ptOINTER TO WORD;
testarray: ARRAY [0..3] OF BYTE := 10,20,30,40;
testREAL: REAL;
pt := ADR(testREAL);
pt^ := testarray [0];
pt := (pt + 1);
pt^ := testarray [1];
pt := (pt + 1);
pt^ := testarray [2];
pt := (pt + 1);
pt^ := testarray [3];
pt := (pt + 1);
testREAL;
Was ist das dem Code Schnipsel falsch? Gibt es eine andere Möglichkeit die Werte ins richtige Format zu bekommen?
Vielen Dank für eure Antworten.
Sytem: Twin Cat 32 / Build: 2014
ich habe das folgende Problem. Ich möchte über eine Profibus Verbindung Daten aus einem Gerät auslesen. Die Verbindung steht und die Daten werden auch übermittelt.
Leider liegt auf der ersten Adresse ein Wert im Byte und folgend, dazu mehrere Werte im Float Format.
Byte Byte Adresse: 0
Float Byte Adresse: 1-4
Float Byte Adresse: 5-6
etc.
Über den System Manager kann ich leider nur 8 / 16 / 32 Word Blöcke zum auslesen des Gerätes konfigurieren, wodurch meine komplette Adressierung um genau ein Byte verrutscht. Damit werden die Float Werte nicht richtig angezeigt.
Ich übernehme die Werte in ein Array in der Größe 0..123 Byte, da ich nun 62 Word konsistent vom Gerät einlese.
Im PLC wollte ich nun aus den einzelnen Bytes die jeweiligen REAL Werte wieder mittels eines Pointers zusammensetzen, was mir allerdings nicht so ganz gelingt.
Scheinbar lässt sich der Pointer nicht um eine Byte Breite erhöhen.
ptOINTER TO WORD;
testarray: ARRAY [0..3] OF BYTE := 10,20,30,40;
testREAL: REAL;
pt := ADR(testREAL);
pt^ := testarray [0];
pt := (pt + 1);
pt^ := testarray [1];
pt := (pt + 1);
pt^ := testarray [2];
pt := (pt + 1);
pt^ := testarray [3];
pt := (pt + 1);
testREAL;
Was ist das dem Code Schnipsel falsch? Gibt es eine andere Möglichkeit die Werte ins richtige Format zu bekommen?
Vielen Dank für eure Antworten.
Sytem: Twin Cat 32 / Build: 2014