Frage zum laden von Daten (Pointer)

INST

Level-2
Beiträge
272
Reaktionspunkte
15
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich habe da mal eine Frage:rolleyes: !!

Als IN-Parameter eines FB ist #op_basis als Datentyp Pointer definiert. Als Pointerwert ist DB100.DBD72 angegeben.

Inhalt des FB:
LAR1 P##op_basis
L W [AR1,P#0.0]
T #db_pointer
L D [AR1,P#2.0]
T #dw_pointer
AUF DB [#db_pointer]
L #dw_pointer
LAR1
L D [AR1,P#0.0]
T #soll_spannung


Über ein OP wird eine Drehzahl vorgegeben (OP-Variable REAL / DB100.DBD72).

Wenn ich nun im FB den Wert #soll_spannung (REAL) online anschaue, entspricht der Wert den im OP eingegebenen Wert.

Irgendwie wird aus den Pointerwert die DB - Adresse ermittelt und die Drehzahl wird über Indirekte Adressierung geladen. Soweit habe ich das auch verstanden.

Im Online-DB100 ist aber kein DBD72 vom Typ REAL vorhanden, sondern Variablen vom Typ S5Time.

Kann mir einer erklären warum trotz falscher Variable im DB100 das ganze trotzdem funktioniert ?

Danke und Gruß
INST
 
Also ganz grundsätzlich macht Siemens in AWL gar keine Typprüfung beim Zugriff,
und in KOP/FUP ausschließlich bei vollsymbolischen Zugriff, aber auch in KOP/FUP ist das mehr "Service",
als echte technische Notwendigkeit.

Jeder DB ist technisch im Grunde ein Array OF Byte.

Also wenn der DB lang genug ist, hier mindestens 76 Byte, dann funktioniert das ganze,
der Datentyp Real, Word, Int usw. beschreibt im nur ein grundsätzliches Darstellungsformat,
praktisch werden bei L DBD aber 4 Bytes geladen, deren Format ist erst bei der weiteren Verwendung
entscheidend (z.B. mit +I oder +R usw...)

Mfg
Manuel
 
Zurück
Oben