-> Hier kostenlos registrieren
Hallo Forum,
ich hänge zur Zeit an folgendem Problem:
Über meine Hardwarekonfig habe ich 2 Module für ein PROFINET-Device konfiguriert:
1.Trigger (WORD) A-Adresse = 512...513
2.Ergebnis (12Byte) E-Adresse = 512...523
Da die Adressen ja auch mal variieren können möchte ich in meinen FB (der mit den Werten aus den beiden Modulen arbeitet) den Zugriff auf den E-/ und A-bereich variabel halten.
Also übergebe ich die Startadressen für "Trigger" und "Ergebnis" (hier zufälligerweise jeweils:512) an meinen FB.
Wie genau der "Trigger" auslöst ist erstmal irrelevant. Wichtig ist, dass ich irgendeinen Wert an dessen Adresse übergeben möchte.
Also z.B W#16#FFFF an A-Bereich 512..513
In früheren Programmen habe ich unter zur Hilfenahme einer temp_Variablen das ganz so gehändigt und es hat reibungslos funktioniert:
Allerdings habe ich dort nur auf den E-Bereich zugegriffen:
-->anschließend konnte ich mit dem Wert weiter arbeiten.
Das gleiche habe ich jetzt vor auf das Prozessabbild zu übertragen(sprich: W#16#FFFF in 512...513 schreiben):
Im Diagnospuffer zeigt er mir nun "Bereichslängenfehler" an dieser Stelle an.
Aber ich verstehe nicht wieso?
Was ist mein Denkfehler?
Danke und Gruß
Timeout
ich hänge zur Zeit an folgendem Problem:
Über meine Hardwarekonfig habe ich 2 Module für ein PROFINET-Device konfiguriert:
1.Trigger (WORD) A-Adresse = 512...513
2.Ergebnis (12Byte) E-Adresse = 512...523
Da die Adressen ja auch mal variieren können möchte ich in meinen FB (der mit den Werten aus den beiden Modulen arbeitet) den Zugriff auf den E-/ und A-bereich variabel halten.
Also übergebe ich die Startadressen für "Trigger" und "Ergebnis" (hier zufälligerweise jeweils:512) an meinen FB.
Code:
Call FB1, DB1
TriggerAddresse = 512,
ErgebnisAdresse = 512,
Sonstige Ein/Ausgänge = ,
Wie genau der "Trigger" auslöst ist erstmal irrelevant. Wichtig ist, dass ich irgendeinen Wert an dessen Adresse übergeben möchte.
Also z.B W#16#FFFF an A-Bereich 512..513
In früheren Programmen habe ich unter zur Hilfenahme einer temp_Variablen das ganz so gehändigt und es hat reibungslos funktioniert:
Allerdings habe ich dort nur auf den E-Bereich zugegriffen:
Code:
L Beispiel_Eingangsadresse (Input als INT, hier z.B.:512)
SLD 3
T tmp_beispieladdresse (TEMP als DINT)
L EW [tmp_beispieladdresse]
-->anschließend konnte ich mit dem Wert weiter arbeiten.
Das gleiche habe ich jetzt vor auf das Prozessabbild zu übertragen(sprich: W#16#FFFF in 512...513 schreiben):
Code:
L Trigger_Address (INPUT als INT, hier:512)
SLD 3
T tmp_Triggeraddress (TEMP als DINT)
L W#16#FFFF
T AW [tmp_Trigggeraddress]
Im Diagnospuffer zeigt er mir nun "Bereichslängenfehler" an dieser Stelle an.
Aber ich verstehe nicht wieso?
Was ist mein Denkfehler?
Danke und Gruß
Timeout