-> Hier kostenlos registrieren
Hallo,
ich versuche zur Zeit im TIA Portal V13 in SCL und angeschlossener CPU 414 3 PN/DP einen Funktionsbaustein zu schreiben.
Dabei habe ich einen PROFINET-Teilnehmer angeschlossen und mit diversen Kommunikationsmodulen versehen. Eines dieser Module ist ein Ergebniszähler, dessen E-Adresse für 268...269 definiert ist.
Diesen Zählerwert möchte ich gerne in einer STAT-Variable in meinem FB zwischenspeichern.
Woher weiß ich bzw. schau ich nach ob diese Adresse im Prozessabbild oder im Peripheriebereich der CPU liegt?
In AWL hatte ich es damals so gelöst, dass ich mir ne temp_variable vom Typ DInt erzeugt habe und den Adresswert um 3 Bit nach links verschoben habe. Anschließend konnte ich mit dieser Variable die Peripherie adressieren:
Genau das möchte ich nun für die 400er CPU in TIA mit SCL umsetzen.
Was ich bis jetzt gefunden habe war folgendes, allerdings ist
P) wohl nur für 1500er/1200er CPUS vorgesehen?!
Ist das so korrekt oder wie würdet Ihr das lösen?
Viele Grüße
timeout
//Edit: Ich bins nochmal.
Wie es scheint funktioniert es doch mit der "
" Anweisung. Allerdings muss hier nichts geschoben werden.
Also ganz schlicht:
Das mit dem Peripheriebereich und dem Prozessabbild einsehen oder verändern habe ich in TIA allerdings immer noch nicht entdeckt :s
ich versuche zur Zeit im TIA Portal V13 in SCL und angeschlossener CPU 414 3 PN/DP einen Funktionsbaustein zu schreiben.
Dabei habe ich einen PROFINET-Teilnehmer angeschlossen und mit diversen Kommunikationsmodulen versehen. Eines dieser Module ist ein Ergebniszähler, dessen E-Adresse für 268...269 definiert ist.
Diesen Zählerwert möchte ich gerne in einer STAT-Variable in meinem FB zwischenspeichern.
Woher weiß ich bzw. schau ich nach ob diese Adresse im Prozessabbild oder im Peripheriebereich der CPU liegt?
In AWL hatte ich es damals so gelöst, dass ich mir ne temp_variable vom Typ DInt erzeugt habe und den Adresswert um 3 Bit nach links verschoben habe. Anschließend konnte ich mit dieser Variable die Peripherie adressieren:
Code:
L #IO_Module_Address.ResultCounter (bspw. 512...513)
SLD 3
T #dAddress_ResultCounter (tmp_variable DInt)
L PEW [#dAddress_ResultCounter]
Genau das möchte ich nun für die 400er CPU in TIA mit SCL umsetzen.
Was ich bis jetzt gefunden habe war folgendes, allerdings ist

Code:
#dAddress_ResultCounter := SHL(IN := #IO_Module_Address.ResultCounter, N := 3);
#Zwischenspeicher := %EW(#dAddress_ResultCounter):P;
Ist das so korrekt oder wie würdet Ihr das lösen?
Viele Grüße
timeout
//Edit: Ich bins nochmal.
Wie es scheint funktioniert es doch mit der "

Also ganz schlicht:
Code:
#dAddress_ResultCounter := #IO_Module_Address.ResultCounter;
#Zwischenspeicher := %EW(#dAddress_ResultCounter):P;
Das mit dem Peripheriebereich und dem Prozessabbild einsehen oder verändern habe ich in TIA allerdings immer noch nicht entdeckt :s
Zuletzt bearbeitet: