Brauche dringend Hilfe bei SmartTags

cdieden

Level-1
Beiträge
18
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich möchte in einer Schleife Werte abfragen. Allerdings kann ich dies nicht wie folgt machen:

For c = 0 to 15
Messwert(c) = SmartTags("Analogwerte/Wert_" & c)
Next

Auch diese Variante habe ich schon ausbrobiert, hier kommen auch keine Fehler beim Generieren, jedoch funktioniert es trotzdem nicht:

For c = 0 to 15
Set Analogwert = SmartTags("Analogwerte/Wert_" & c)
Messwert(c) = Analogwert
Next

So funktioniert es, ist aber bei 16 Werten ein enormer Aufwand:

Messwert(0) = SmartTags(Analogwerte/Wert_0)
Messwert(1) = SmartTags(Analogwerte/Wert_1)
Messwert(2) = SmartTags(Analogwerte/Wert_2)
Messwert(3) = SmartTags(Analogwerte/Wert_3)
 
Das liegt daran, dass du deine Analogwert als Einzelwert deklariert hast.
Du könntest eine zweite Deklaration machen, wo du nur den ersten Wert deklarierst und bei Anzahl dann 15 einträgst. Das setzt allerdings vorraus, dass die Werte im Speicher aufeinander folgen.

Ist das so, dann könntest du im Script schreiben :
Code:
For c = 0 to 15
Messwert(c) = Analogwerte(c)
Next
... oder so ähnlich
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke erst mal für deine Antwort.

For c = 0 to 15
Messwert(c) = Analogwerte(c)
Next

Aber in Analogwerte(c) steht ja noch nichts drin. Ich muss ja Irgendwie über die SmartTags zugreifen. Das sind ja interne Variablen.
 
Danke erst mal für deine Antwort.

For c = 0 to 15
Messwert(c) = Analogwerte(c)
Next

Aber in Analogwerte(c) steht ja noch nichts drin. Ich muss ja Irgendwie über die SmartTags zugreifen. Das sind ja interne Variablen.


Hey,
es stört mich, dass du nicht viel über deine Variable gesagt hast (ob sie intern/extern oder nur im skript sind).

Wenn die Var intern oder extern sind denn musst du SmartTags("blabka")
verwenden.


Gruß csharpxx
 
SmartTag("blablabla") ist klar.
Ich möchte aber den String in der klammer durch eine Variable erstezen.
Z. B.:
meinTag = "blablabla"
SmartTag(meinTag)

Irgendwie Funktioniert das auf jeden Fall. Das habe ich auch schon mal gemacht. Ist aber schon sehr lang her.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
SmartTag("blablabla") ist klar.
Ich möchte aber den String in der klammer durch eine Variable erstezen.
Z. B.:
meinTag = "blablabla"
SmartTag(meinTag)

Irgendwie Funktioniert das auf jeden Fall. Das habe ich auch schon mal gemacht. Ist aber schon sehr lang her.

Versuch mal,

Dim i

For i = 0 to 15
SmartTags("Messwert")(i) = SmartTags("Analogwerte")(i)
Next


Vergiss bitte nicht dein Skript aufzurufen:rolleyes:
 
Bei mir funkt. es einwandfrei
Wenn du magst, kannst du mir dein Projekt hier anhängen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das ist nicht das was ich brauche.

meinTag = "Anlagenteil_2"
SetBit SmartTag(meinTag & "Wert_1")
SetBit SmartTag(meinTag & "Wert_2")
SetBit SmartTag(meinTag & "Wert_3")
SetBit SmartTag(meinTag & "Wert_4")
SetBit SmartTag(meinTag & "Wert_5")
SetBit SmartTag(meinTag & "Wert_6")

Sprich, wenn ich den Sting 'meinTag' ändere, ist er im Ganzen Programm geändert. Das ganze ist auch vorteilhaft für die verarbeitung in einer Schleife (wieder eine andere Baustelle). Da könnt ich anstelle von meinTag auch den Zähler der Schleife nehmen.
 
Das ist nicht das was ich brauche.

meinTag = "Anlagenteil_2"
SetBit SmartTag(meinTag & "Wert_1")
SetBit SmartTag(meinTag & "Wert_2")
SetBit SmartTag(meinTag & "Wert_3")
SetBit SmartTag(meinTag & "Wert_4")
SetBit SmartTag(meinTag & "Wert_5")
SetBit SmartTag(meinTag & "Wert_6")

Sprich, wenn ich den Sting 'meinTag' ändere, ist er im Ganzen Programm geändert. Das ganze ist auch vorteilhaft für die verarbeitung in einer Schleife (wieder eine andere Baustelle). Da könnt ich anstelle von meinTag auch den Zähler der Schleife nehmen.



:confused::confused::confused::confused::confused::confused:
 
Ich habe an einer Anlage 200 Ventile. Ich habe eine variable in der die Nummer des Ventils steht, das angesteuert werden soll (1-200).

SetBit SmartTag("Hauptventile.V_1")
^Dann geht Ventil 1 auf

Ich habe aber eine Variable in der die Nummer drin steht.

Ventilnummer => hier steht eine nummer drin

SetBit SmartTag("Hauptventile.V_" & Ventilnummer)
^Hier wird aber die Zeile rot unterstrichen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ich würde folgendes probieren:

Code:
*
For c = 0 to 15
   string_temp = "Analogwerte/Wert_" & c
   Set Analogwert = SmartTags(string_temp)
   Messwert(c) = Analogwert 
Next

weiß aber jetzt aber nicht, ob das so einfach übersetzt wird :rolleyes: ...aber die grundidee sollte erkannt werden...
 
Das habe ich schon. Wird zwar ohne Fehler Generiert, aber wenn man dan das Script aufruft passiert nichts.
 
ich geh davon aus, dass du unter "Geräteeinstellungen" die option "Namen transferieren" angewählt hast um die indirekte adressierung zu ermöglichen?!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich glaube nicht das man Smarttags "dynamisch" generieren kann. Ich habe selber etwas damit gebastelt und komischer weise krieg ich es zuerst zum funktionieren, aber beim nächsten versuch nicht.

Du hast tags wie so definiert:
Analogwerte/Wert_0
Analogwerte/Wert_1
Analogwerte/Wert_2
usw.

Warum machst du nicht ein ARRAY of tags, in S7 programm UND WinCC Flexible ?

Tip: WinCC Flex Arrays starten immer mit "1". Dafür muss dein ARRAY in S7 auch von "1" starten. Damit wird es einfacher. ARRAY[1..20] OF REAL z.b. und nicht ARRAY[0..19] of REAL.
 
Code:
meinTag = "Anlagenteil_2"
SetBit SmartTag(meinTag & "Wert_1")
SetBit SmartTag(meinTag & "Wert_2")
SetBit SmartTag(meinTag & "Wert_3")
SetBit SmartTag(meinTag & "Wert_4")
SetBit SmartTag(meinTag & "Wert_5")
SetBit SmartTag(meinTag & "Wert_6")

Das möchte ich ja auch noch machen. Damit ich nicht 25.000 mal im Programm den Anlagenteil ersetzen muss sondern einfach was anderes in meinTag reinschreiben kann, möchte ich das so machen.
 
SetBit SmartTag("Hauptventile.V_" & Ventilnummer)
^Hier wird aber die Zeile rot unterstrichen.

Ist ja auch kein Wunder ... hier wird kein String sondern die wirkliche Variable erwartet ...

Wie sehen denn die Adressen der Ventile aus ...?
Es geht (wenn überhaupt) nur so wie schon von mir in Beitrag #2 beschrieben ...

Gruß
LL
 
Zurück
Oben