Parametrierter FC - Problem mit Pointer

Beiträge
58
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich hab folgendes Problem.

FC10:

L #Zaehler
L P#300.0
*D
L P20.0
+D
LAR1

AUF #DBNr
L #Temperatur
T DBB [AR1,P#0.0]
.
.
.
.
.
-------------------------------
Im OB1 wird der parametrierter FC10 aufgerufen und die Variablen #Zaehler, #Temperatur, #DBNr usw übergeben

Nun möchte ich aber diesen Pointer P#20.0 auch parametrieren, d. h. das ich dann im OB1 den Pointer variable angeben kann, da ich den FC10 mehrmals aufrufen möchte und ich daher noch einen Offset brächte.

Wenn ich jetzt den #Offset in den Lokalvariablen als Datentyp POINTER deklariere, ist noch alles ok.

L #Zaehler
L P#300.0
*D
L #Offset <---- wird rot
+D
LAR1

AUF #DBNr
L #Temperatur
T DBB [AR1,P#0.0]
.
.
.
.
.
-------------------------------

Dann aktualsiere ich den Aufruf vom FC10 im OB1 und ich dann auch dann P#20.0 reinschreiben, aber im FC10 selbst, macht er die Zeile rot.

Wenn das nicht funktioniert, gibts da noch irgendwie ne andere Möglichkeit bei einem parametrieren FC einen Offset für den Pointer zu machen?

Viele Grüße
Michael
 
Hallo Michael,
so sollte es eigendlich funktionieren:

L #Zaehler
L P#300.0
*D
L #Offset <---- als INT deklarieren
SLW 3 (Bits ausblenden für Byte Offset)
+D
LAR1

AUF #DBNr
L #Temperatur
T DBB [AR1,P#0.0]
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

vielen Dank für Deine Info. Genau das ist mir gestern auch noch eingefallen oder so ungefähr. ich hab geschrieben


L #Zaehler
L P#300.0
*D
T #Pointer_1

L #Offset <---- als INT deklarieren
L P#1.0
*D
L #Pointer_1
+D
LAR1

AUF #DBNr
L #Temperatur
T DBB [AR1,P#0.0]

Funktioniert auch gut. Aber deins ist verständlicher!! Mit Pointer muß man einfach üben, üben und nochmals üben!

Übrigens was haltet ihr von der Software S7 Debugger von IBH. Hab gestern mal die Demo installiert und ich bin schon faziniert davon, da man jeden einzelnen Schritt durchklicken kann und somit sogar die Lokaladressen und Adressregister sieht!

Viele Grüße und vielen Dank
Michael
 
Zurück
Oben