ANY Pointer. Wenn ist DatenTyp NICHT "Byte" ?

Beiträge
8.337
Reaktionspunkte
1.903
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo.

Ich will einige standard FCs anliegen, wo die Parametern ANY's sind, und abhängig von die grösse von die Daten lauft das Programm durch verschiedene schleifen.

Fragen:

Kann man davon ausgehen, das wenn man ein datenstructur als ein ANY pointer an ein FC weitergibt, und die daten sind Symbolisch deklariert, ist der DatenTyp immer "Byte" ?
Also, unabhängig von wie die daten strukturiert sind, wandelt STEP7 der ANY pointer immer ins ein anzahl von BYTE's, oder ?.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Der reine Pointerteil des Anypointers (Bytes 6-9) enthält überhaupt keine information über den Datentyp.

in diesen Bytes steht nix anderes als die Bereichskennung (E, A, M, DB ...) und die Adresse

der Datentyp steht als Zusatzinformation, die man nutzen kann (oder auch nicht) in Byte 1

aber das, was du am ende ins Adressregister deiner SPS lädst, sind die Bytes 6-9 bzw DW 6

das ist genauso unabhängig vom Datentyp, wie "P#10.0"
 
Mangokind schrieb:
Der reine Pointerteil des Anypointers (Bytes 6-9) enthält überhaupt keine information über den Datentyp.
in diesen Bytes steht nix anderes als die Bereichskennung (E, A, M, DB ...) und die Adresse
der Datentyp steht als Zusatzinformation, die man nutzen kann (oder auch nicht) in Byte 1
aber das, was du am ende ins Adressregister deiner SPS lädst, sind die Bytes 6-9 bzw DW 6
das ist genauso unabhängig vom Datentyp, wie "P#10.0"
Man muss DatenTyp und Wiederholungsfaktor kombinieren um auszurechnen wie gross der Datenmenge ist. Aber wenn ich weiss das DatenTyp ist immer "Byte", den vereinfacht es sich etwas.
Vielleicht prüfe ich zuerst ob DatenTyp ist Byte, und wenn nicht breche ich ab mit ein Fehlermeldung.

Onkel Dagobert schrieb:
Ja, bei einer Datenstruktur ist das so, wenn der ANY symbolisch als Parameter übergeben wird.
Genau das wollte ich wissen.

Danke !
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Jesper,

..Vielleicht prüfe ich zuerst ob DatenTyp ist Byte, und wenn nicht breche ich ab mit ein Fehlermeldung...

Code:
//*** Prüfe, ob DATENBEREICH vom Typ=Byte
      L     W [AR2,P#0.0]               // Typ 
      L     W#16#1002
      ==I   
      L     1
      SPBN  ERR

Richtig, mache ich auch immer, es kostet ja kaum etwas.


Gruß, Onkel
 
Zurück
Oben