TIA VB Skript - String-Variablen mit einer For-Schleife erstellen

hans otto

Level-2
Beiträge
34
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Dim i Dim direction Set direction = SmartTags("direction_transfer") For i = 0 To 7 Dim SiemensMaster & i Dim SiemensSlave & i Dim ABMaster & i Dim ABSlave & i Set ABMaster(i) = SmartTags("Master" & i) Set ABSlave(i) = SmartTags("Slave" & i) If direction = 1 Then 'Active->AB Set SiemensMaster(i) = SmartTags("Active.Master[" & i & "]") Set SiemensSlave(i) = SmartTags("Active.Slave[" & i & "]") SiemensMaster(i).Value = ABMaster(i).Value SiemensSlave(i).Value = ABSlave(i).Value Else 'Current->AB Set SiemensMaster(i) = SmartTags("Current.Master[" & i & "]") Set SiemensSlave(i) = SmartTags("Current.Slave[" & i & "]") ABMaster(i).Value = SiemensMaster(i).Value ABSlave(i).Value = SiemensSlave(i).Value End If Next

Hallo zusammen, ich möchte mit diesem Skript Tags, wie zum Beispiel ABMaster0 bis ABMaster7, mithilfe einer For-Schleife definieren. Diese Tags sollen entweder von der Active-Datenbank oder der Current-Datenbank zugewiesen werden. Es handelt sich hierbei um Siemens-Datenbank- und HMI-Tags, die in eine Allen-Bradley-Steuerung geschrieben werden.

Ich bekomme einen Syntaxfehler und es wird anstelle von "Dim SiemensMaster & i" ein konstanter Integer erwartet. Möglicherweise liegt es daran, dass ich Strings möchte, aber die Definition "Dim Master(8)" eines Arrays verwende. Gibt es eine Möglichkeit, Stringnamen mit einer For-Schleife zu erstellen?

Danke vorab.
 
Nein ... diese Möglixhkeit gibt es nicht.
Aber warum möchtest du das ? Wenn du das Array außerhalb der Schleife dimensionierst dann ist doch alles OK - also Dim Siemensmaster(7)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo hans otto,

der Beitrag ist zwar schone ne Weile her, aber ich stand vor kurzem vor einem ähnlichen Problem. Ist vermutlich ein etwas anderer Ansatz, aber eventuell hilft das jemandem weiter.
Für eine Sammelquittierung über mehrere Datenbausteine hinweg wollte ich eine Lösung die über eine Schleife funktioniert.
Leider wurden die Quittierbits in der Visu (TIA Professional V17 Server) nicht als Array angelegt, sondern als einzelne boolsche Variablen bei denen der Variablenname durchnummeriert ist (KA1_Quittierbit_0). Um alle Bits setzen zu können, habe ich mir die Strings folgendermaßen in der Schleife zusammengebaut.


Dim iKammer
Dim iBit

For iKammer = 1 To 6
For iBit = 0 To 31
SmartTags("KA" &iKammer &"_Quittierbit_" &iBit) = True
Next
Next

Simpel aber funktioniert für mich soweit sehr gut
 
Zuletzt bearbeitet:
Zurück
Oben