Die Adresse einer globale Variable TwinCAT 3

HKADLER

Level-1
Beiträge
32
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich möchte (mittels ADS OCX) auf globale Variablen zugreifen. Mein Problem ist, dass die Adressen nicht fix sind. Nachdem "BUILD SOLUTION" werden die Adressen geändert.

Vor dem "BUILD SOLUTION"
1.PNG


Nach dem "BUILD SOLUTION"

3.png

Wie kann man fixe Adresse erstellen bzw wie kann man Variablen mit fixen Adressen erstellen?
Danke
 
Hallo
ich habe das Problem gelöst :-D
Einfach statt:
engine AT %Q: BOOL;
so schrieben:
engine AT %QX0.0: BOOL; :rolleyes:

Danke
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo HKADLER,

es ist auch möglich, per Namen über ADS auf die Variablen zuzugreifen. Das finde ich persönlich geschickter, als deswegen mit festen Adressen anzufangen:
https://infosys.beckhoff.com/content/1031/tcsample_vb/html/tcadsocx_vb_sample07.htm

Hier sind dann die Methoden "AdsOcx1.AdsCreateVarHandle" und "AdsOcx1.AdsDeleteVarHandle" relevant.

Zum Lesen von werten wird dann eine der Methoden benutzt:
AdsSyncReadBoolVarReq
AdsSyncReadIntegerVarReq
AdsSyncReadLongVarReq
AdsSyncReadSingleVarReq
AdsSyncReadDoubleVarReq
AdsSyncReadStringVarReq

zum Schreiben eine der Methoden:
AdsSyncWriteBoolVarReq
AdsSyncWriteIntegerVarReq
AdsSyncWriteLongVarReq
AdsSyncWriteSingleVarReq
AdsSyncWriteDoubleVarReq
AdsSyncWriteStringVarReq

Gruß.
 
Hallo
ich habe das Problem gelöst :-D
Einfach statt:
engine AT %Q: BOOL;
so schrieben:
engine AT %QX0.0: BOOL; :rolleyes:

Danke

Eine der Stärken von TwinCAT ist, dass es symbolbasiert arbeitet. Das heißt, wenn du Variablen etc. zu einem späteren Zeitpunkt an beliebiger Stelle einfügst, werden die Adressen im Hintergrund automatisch neu berechnet, aber deine Verknüpfungen etc. bleiben bestehen. Diesen Vorteil hebelst du damit aus .. -> einen grinsenden Smilie würde ich dafür aber nicht dahinter setzen eher den hier :confused:

Ansonsten hat ksc schon gezeigt wie es besser geht
 
Zurück
Oben