TIA Dynamische Adressierung bei optimiertem Bausteinzugriff

flow_89

Level-2
Beiträge
10
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo

Hätte eine Frage zu dynamischer Adressierung bei der S7 1500.

Gibt es Hier eine Möglichkeit bei den Variablen eine Referenz zu einem Datentyp anzulegen(ähnlich wie bei der B&R !Referenziert auf "TYP"! oder bei der Beckhoff !"Tag" pointer to "Typ"!)
Gibt es im TIA die Möglichkeit, dass man wie bei der B&R mit Access und ADR Variablen zuweisen kann.

Hier ein Beispiel aus dem AutomationStudio:
Die Variable Valve_2 ist eine Referenz zu einem Datentyp:

//Ventil 2
usTextOP_Home[2] := 4;
usTextOP_Work[2] := 2;
Valve_2 ACCESS ADR(gMV1);
uiFunktionText[2] := 1;
uiFunktionRuntime[2] := 1;
IF Valve_2.usStatus = 4 THEN
uiFunktionColor[2] := uiFunktionError;
ELSE
uiFunktionColor[2] := uiFunktionOK;
END_IF;:?
 
Hallo

Hätte eine Frage zu dynamischer Adressierung bei der S7 1500.

Gibt es Hier eine Möglichkeit bei den Variablen eine Referenz zu einem Datentyp anzulegen(ähnlich wie bei der B&R !Referenziert auf "TYP"! oder bei der Beckhoff !"Tag" pointer to "Typ"!)
Gibt es im TIA die Möglichkeit, dass man wie bei der B&R mit Access und ADR Variablen zuweisen kann.

Hier ein Beispiel aus dem AutomationStudio:
Die Variable Valve_2 ist eine Referenz zu einem Datentyp:

//Ventil 2
usTextOP_Home[2] := 4;
usTextOP_Work[2] := 2;
Valve_2 ACCESS ADR(gMV1);
uiFunktionText[2] := 1;
uiFunktionRuntime[2] := 1;
IF Valve_2.usStatus = 4 THEN
uiFunktionColor[2] := uiFunktionError;
ELSE
uiFunktionColor[2] := uiFunktionOK;
END_IF;:?



Nennen sich [url=https://support.industry.siemens.com/cs/document/51339155/wie-k%C3%B6nnen-sie-in-step-7-%28tia-portal%29-%22anwenderdefinierte-datentypen%22-oder-udts-%28user-definied-datatype%29-programmieren?dti=0&lc=de-WW]UDT[/URL]
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das ist mir klar. Ich wollte nur wissen ob es bei der 1500 eine ähnliche Funktion wie ADR gibt der mir die die Adresse einer Bestimmten Variable ausließt und ob es eine Art Befehl wie Access gibt der mir die Werte der in dieser Adresse ausliest und in eine Var. kopiert.
 
Servus, ja funktioniert über Umwege und auch nicht mit jedem Datentyp. Bevor du Peek/Poke nutzen kannst, brauchst du die Parameter - AREA, DBNUMBER, BYTEOFFSET, BITOFFSET - die man z.B aus der Fkt any to struct bekommt (-> http://www.sps-forum.de/simatic/46471-tia-portal-sicht-scl.html?highlight=pointer+struct). Diese Parameter musste in einem DB speichern hierzu empfehlen sich udt´s. Mit den gespeicherten Parametern ruft man dann die Peek/Poke Funktionen auf. Viel Spaß damit!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ist das auch bei optimiertem Bausteinzugriff möglich? Hätte Gedacht die AT Funktion ist bei speicheroptimierung gesperrt??
Hast du auch schon Erfahrung mit dem VariantGet/Put gemacht, bzw hast du hier ein Beispiel dafür??
 
Die AT sicht kann man mit MOVE_BLK_VARIANT und Slice zugriffen umgehen. Das Problem ist, dass als Input nur Variablen funktionieren die in einem nicht Optimierten Datenbaustein oder in einer PLC-Variablentabelle(E,A,M) deklariert sind. Weil bei optimierten Datenbausteinen nur Symbolisch auf Variablen zugegriffen werden darf (siehe: 81318674_Programming_guideline_DOKU_v13_de.pdf). Mit den Variant funktionen habe ich es nicht hin bekommen, aber wenn du eine Lösung findest darf du sie gerne mal Posten.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin

laut 61131 gibt es ein p : REF_TO a_type
und um den zu setzen p := ADR( a_var )
der Zugriff geht dann mit p^

Bis das zu Siemens durchdringt dauert es noch.
Auf der letzten Messe hieß es von Siemens "nö noch nicht, wir arbeiten daran". Auf eine Version wollte sich keiner festlegen.
Ich werde auf der nächsten Messe, die ist ja bald, mehrfach ;-) nachfragen.

PEEK und POKE können nicht auf optimierte Datenbausteine zugreifen.
AT auch nicht. Retain Eigenschaft auf SetImDB stellen bedeutet nicht optimierte Daten in der ansonsten optimierten Instanz -- grusel --
Und VARIANT ist traurig umständlich. Es lässt sich nur an Schnittstellen richtig setzen, nicht über den Zyklus retten und erfordert ständiges UDT kopieren durch VariantPut, VariantGet.

Fazit: es geht nicht.

'n schön' Tach auch
HB
 
Access (ADR(Var))

Ja, bei B&R geht das. Aber aus eigener Erfahrung: Da es keinerlei Möglichkeit gibt, fehlerhafte Zugriffe z.b. durch falsch (oder gar nicht) berechnete Indizes zu erkennen, kann es ganz schönen Salat geben. Mir ist es so gelungen, sogar das Diagnoseprotokoll zu zerschießen. Ist eben auch nur ein Speicherbereich ... . Ich vermeide es seitdem.
Vielleicht tut sich Siemens deswegen so schwer damit.
 
...jezt geht es

Moin

laut 61131 gibt es ein p : REF_TO a_type
und um den zu setzen p := ADR( a_var )
der Zugriff geht dann mit p^

Bis das zu Siemens durchdringt dauert es noch.
Auf der letzten Messe hieß es von Siemens "nö noch nicht, wir arbeiten daran". Auf eine Version wollte sich keiner festlegen.
Ich werde auf der nächsten Messe, die ist ja bald, mehrfach ;-) nachfragen.

PEEK und POKE können nicht auf optimierte Datenbausteine zugreifen.
AT auch nicht. Retain Eigenschaft auf SetImDB stellen bedeutet nicht optimierte Daten in der ansonsten optimierten Instanz -- grusel --
Und VARIANT ist traurig umständlich. Es lässt sich nur an Schnittstellen richtig setzen, nicht über den Zyklus retten und erfordert ständiges UDT kopieren durch VariantPut, VariantGet.

Fazit: es geht nicht.

'n schön' Tach auch
HB

Hi,

ich weiß nicht ab welcher TIA Version das implementiert wurde, auf jeden Fall gibt es bei TIA15.1 nun REF_TO und den bekannten Zugriff über ^
(siehe Beispiel im Systemhandbuch, Seite 5051)
https://support.industry.siemens.co...-v15-1-und-simatic-wincc-v15-1?dti=0&lc=de-DE

Falls das noch für wen von Interesse ist,

Grüße
Markus
 
Zurück
Oben