TIA Lade Transferiere aus Variable

DrGonzo

Level-2
Beiträge
37
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Lade Transferiere aus EW "Variable"

Hallo Liebe Gemeinde,

ich habe eine 1500er Steuerung und TIA V15 am laufen und würde gerne ein Eingangswort aus einer Variable laden, sprich:

Temp Variablen:

ADR_1 (INT)
ADR_2 (INT)

Code:

L EW ADR_1
T xxx

ich hab ehrlich gesagt keine Ahnung ob/wie das geht.
Könnte mir einer mal en Tipp geben wie ich auf die richtige Spur gelange?

Vielen Dank und MfG

Gonzo
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin,
Willst du eine variable Eingangs-Adresse laden? Dann kann man das bspw. mit der Funktion Peek machen.
Code:
L 1 // zu lesende Adresse
T i // Variable für Adressberechnung

[TABLE]
[TR]
[TD]CALL PEEK
[/TD]
[/TR]
[TR]
[TD]AREA := 16#81 // für Eingänge
[/TD]
[/TR]
[TR]
[TD]DBNUMBER := 0
[/TD]
[/TR]
[TR]
[TD]BYTEOFFSET := i // Adresse aus der gelesen wird
[/TD]
[/TR]
[TR]
[TD]RET_VAL := #RetValPeek
[/TD]
[/TR]
[/TABLE]
 
In AWL geht auch registerindirekte Adressierung (L EW [AR1,P#0.0]) und speicherindirekte Adressierung (L EW [#adresse]).

Harald
 
Super, Danke für den Tipp!!!

Werde das jetzt mal für alle Stellen einhacken und mich danach nochmal melden :)

Natürlich auch wenns funzt ;)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
In AWL geht auch registerindirekte Adressierung (L EW [AR1,P#0.0]) und speicherindirekte Adressierung (L EW [#adresse]).

Harald


Hatte ich auch schonmal mit geliebäugelt, allerdings wird indirekte adressierung laut Programmierleitfaden 1500 nicht empfohlen und ich bin für die Deklaration der Pointer auch einfach zu dämlich :D. Das will nie funktionieren :(
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Code:
NW1:
      L     #START_ADRESS
      T     #ADR_1
      L     2
      +I
      T     #ADR_2
      L     2
      +I
      T     #ADR_3
      L     2
      +I
      T     #ADR_4
      L     2
      +I
      T     #ADR_5
      L     2
      +I
      T     #ADR_6

NW2:
      CALL  PEEK
         value_type:=Word
         number_type:=DInt
         area       :=16#81
         dbNumber   :=0
         byteOffset :=#ADR_1
         Ret_Val    :=#Read_Status_SW
      CALL  PEEK
         value_type:=Word
         number_type:=DInt
         area       :=16#81
         dbNumber   :=0
         byteOffset :=#ADR_2
         Ret_Val    :=#Read_Drehzahl_W
      L     #Read_Drehzahl_W
      T     #Read_Drehzahl
      CALL  PEEK
         value_type:=Word
         number_type:=DInt
         area       :=16#81
         dbNumber   :=0
         byteOffset :=#ADR_3
         Ret_Val    :=#Read_PZD2_W
      L     #Read_PZD2_W
      T     #Read_PZD2
      CALL  PEEK
         value_type:=Word
         number_type:=DInt
         area       :=16#81
         dbNumber   :=0
         byteOffset :=#ADR_4
         Ret_Val    :=#Read_PZD3_W
      L     #Read_PZD3_W
      T     #Read_PZD3
      CALL  PEEK
         value_type:=Word
         number_type:=DInt
         area       :=16#81
         dbNumber   :=0
         byteOffset :=#ADR_5
         Ret_Val    :=#Read_PZD4_W
      L     #Read_PZD4_W
      T     #Read_PZD4
      CALL  PEEK
         value_type:=Word
         number_type:=DInt
         area       :=16#81
         dbNumber   :=0
         byteOffset :=#ADR_6
         Ret_Val    :=#Read_PZD5_W
      L     #Read_PZD5_W
      T     #Read_PZD5

NW3:
     CALL  POKE
         value_type:=Word
         number_type:=DInt
         area       :=16#82
         dbNumber   :=0
         byteOffset :=#ADR_1
         value      :=#Write_Steuerwort_CW

      L     #Write_Sollwert_Drehzahl
      T     #Write_Sollwert_Drehzahl_W
      CALL  POKE
         value_type:=Word
         number_type:=DInt
         area       :=16#82
         dbNumber   :=0
         byteOffset :=#ADR_2
         value      :=#Write_Sollwert_Drehzahl_W

      L     #Write_PZD2
      T     #Write_PZD2_W
      CALL  POKE
         value_type:=Word
         number_type:=DInt
         area       :=16#82
         dbNumber   :=0
         byteOffset :=#ADR_3
         value      :=#Write_PZD2_W

      L     #Write_PZD3
      T     #Write_PZD3_W
      CALL  POKE
         value_type:=Word
         number_type:=DInt
         area       :=16#82
         dbNumber   :=0
         byteOffset :=#ADR_4
         value      :=#Write_PZD3_W

      L     #Write_PZD4
      T     #Write_PZD4_W
      CALL  POKE
         value_type:=Word
         number_type:=DInt
         area       :=16#82
         dbNumber   :=0
         byteOffset :=#ADR_5
         value      :=#Write_PZD4_W

      L     #Write_PZD5
      T     #Write_PZD5_W
      CALL  POKE
         value_type:=Word
         number_type:=DInt
         area       :=16#82
         dbNumber   :=0
         byteOffset :=#ADR_6
         value      :=#Write_PZD5_W

GEIL Jungs, es läuft!

Vielen Dank nochmal! :)
 
GEIL Jungs, es läuft!

Vielen Dank nochmal! :)
sehr schön :D
In deinem Speziellen Fall würde es sich aber auch anbieten, eine UDT (PLC-Datentyp) Read und Write mit der benötigten Struktur zu erstellen und diese UDT dann direkt auf die Ein- und Ausgänge zu mappen.
Also bspw. eine UDT Read bestehend aus Status_SW, Drehzahl_W, PZD2_W usw erstellen, und dann in den PLC-Variablen auf den Eingang E100.0 diese UDT legen.
 
sehr schön :D
In deinem Speziellen Fall würde es sich aber auch anbieten, eine UDT (PLC-Datentyp) Read und Write mit der benötigten Struktur zu erstellen und diese UDT dann direkt auf die Ein- und Ausgänge zu mappen.
Also bspw. eine UDT Read bestehend aus Status_SW, Drehzahl_W, PZD2_W usw erstellen, und dann in den PLC-Variablen auf den Eingang E100.0 diese UDT legen.

Auch ne gute Idee, allerdings weiß ich nicht inwieweit unsere Service Techniker UDT's beherrschen. So ist es in nem Multiinstanzfähigem FB und der Programmierer muss nur noch die Anfangsadresse eintragen, simple as good!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Btw, ich habs vorher mit DPRD und DPWR versucht. Die nutzen aber seit Einführung 1500 nicht mehr die Anfangsadresse sondern die HW- Kennung, was einfach nicht laufen wollte...
Einer ähnliche Erfahrungen damit?
 
Btw, ich habs vorher mit DPRD und DPWR versucht. Die nutzen aber seit Einführung 1500 nicht mehr die Anfangsadresse sondern die HW- Kennung, was einfach nicht laufen wollte...
Einer ähnliche Erfahrungen damit?
Das funktioniert auch tadellos. Die Hürde ist nur, die richtige HW-Kennung zu finden. Dafür muss man dann den entsprechenden Slot in der HW-Konfig markieren und unten den Reiter Systemkonstanten öffnen.
Systemkonstanten.JPG
 
Zurück
Oben