-> Hier kostenlos registrieren
Hallo TIA Experten
Ich habe hoffentlich nur ein Verständnisproblem mit der TIA Programmierung.
Wir setzen mittlerweile immer mehr die 1500er Steuerungen ein. Daher bin ich dabei, langsam die altbekannten Bausteine aus der 300/400 anzupassen. Als Programmiersprache nutze ich AWL oder SCL. In der 1500 soll man ja nur noch Symbolisch programmieren, was ich an und für sich gar nicht so schlecht finde, bei CoDeSys geht es ja auch. Aber jetzt kommt das Problem, Ich habe bei der 300/400 oft mit indirekter Adressierung sowie ANY-Pointern usw. gearbeitet. Das beißt sich aber mit der symbolischen Programmierung. Zumindest habe ich nichts Passendes darüber gefunden.
z.B. habe ich bisher oft den SFC20 (BLKMOV) benutzt. In der 1500 mit den optimierten Bausteinen geht das natürlich nicht mehr, da ja keine Adressen mehr bekannt sind. Habe jetzt mit MOVE und MOVE_BLK_VARIANT experimentiert, es scheitert aber daran, dass ich einen VARIANT-Zeiger anscheinend nicht manipulieren kann. Erst dachte ich eine CASE-Anweisung und VARIANT_PUT wären die Lösung, allerdings erhalte ich immer dann eine Meldung „Zugriff durch nicht initialisierten Pointer“. Auch mein Versuch über den Umweg aus der CONCAT Anweisung und String-Zeichenketten etwas zu basteln ist kläglich gescheitert.
Meine Frage
:
Wie kann ich einen VARIANT-Zeiger zur Laufzeit manipulieren,
Wie kann ich indirekt auf eine symbolische Variable zugreifen? z.B. statt U „Motor01“. Betrieb -> U Motor[DB_Index]. Betrieb
Natürlich kann man die Optimierung ausschalten und auch weiterhin mit absoluten Adressen arbeiten, aber das soll man ja nicht mehr, schon aus Performancegründen und vor allem wo ist dann die Verbesserung, wenn so grundlegende Sachen nicht mehr gehen?
Danke für eure Infos
Ich habe hoffentlich nur ein Verständnisproblem mit der TIA Programmierung.
Wir setzen mittlerweile immer mehr die 1500er Steuerungen ein. Daher bin ich dabei, langsam die altbekannten Bausteine aus der 300/400 anzupassen. Als Programmiersprache nutze ich AWL oder SCL. In der 1500 soll man ja nur noch Symbolisch programmieren, was ich an und für sich gar nicht so schlecht finde, bei CoDeSys geht es ja auch. Aber jetzt kommt das Problem, Ich habe bei der 300/400 oft mit indirekter Adressierung sowie ANY-Pointern usw. gearbeitet. Das beißt sich aber mit der symbolischen Programmierung. Zumindest habe ich nichts Passendes darüber gefunden.
z.B. habe ich bisher oft den SFC20 (BLKMOV) benutzt. In der 1500 mit den optimierten Bausteinen geht das natürlich nicht mehr, da ja keine Adressen mehr bekannt sind. Habe jetzt mit MOVE und MOVE_BLK_VARIANT experimentiert, es scheitert aber daran, dass ich einen VARIANT-Zeiger anscheinend nicht manipulieren kann. Erst dachte ich eine CASE-Anweisung und VARIANT_PUT wären die Lösung, allerdings erhalte ich immer dann eine Meldung „Zugriff durch nicht initialisierten Pointer“. Auch mein Versuch über den Umweg aus der CONCAT Anweisung und String-Zeichenketten etwas zu basteln ist kläglich gescheitert.
Meine Frage

Wie kann ich einen VARIANT-Zeiger zur Laufzeit manipulieren,
Wie kann ich indirekt auf eine symbolische Variable zugreifen? z.B. statt U „Motor01“. Betrieb -> U Motor[DB_Index]. Betrieb
Natürlich kann man die Optimierung ausschalten und auch weiterhin mit absoluten Adressen arbeiten, aber das soll man ja nicht mehr, schon aus Performancegründen und vor allem wo ist dann die Verbesserung, wenn so grundlegende Sachen nicht mehr gehen?
Danke für eure Infos