VBScript Programmierung:WinCC Flex als Schnittstelle zwischen AB Logix und Siemen CPU

joelber

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

Ich benutze mein Panel als Schnittstelle zwischen einer Allen Bradley Logix CPU und einer Siemens S7 300 CPU.

Ich habe zur Zeit es so Programmiert das ich jeweils eine Menge Bit´s im Sekundentakt über ein Script hin und her schicke. Funktioniert ohne Probleme.

Also so geht es z.b. hier mit den Bits.

If SmartTags("DB 100 DBX 20.0") = True Then
SetBit SmartTags("SignalAB1[0]/0")
End If
If SmartTags("DB 100 DBX 20/0") = False Then
ResetBit SmartTags("SignalAB1[0]/0")
End If
usw....

Kann mir hier vielleicht jemand erklären wie ich z.b. ein Byte und ein INT verschieben kann über ein Script.

in AWL klingt das so einfach.
L DB100.DBB20.0
T SignalAB1[0]

Ich habe doch sehr Probleme mit der VB Sprache. Vielleicht auch ein bisschen mit der Deutschen :(

Und was muss man beachten wenn mehrere Aufrufe aufeinander Folgen

Danke,
Johannes
 
Hallo Johannes,
vielleicht solltest du ganz grundsätzlich überlegen, deine Operanden symbolisch (der eigentlichen Funktion entsprechend) zu benennen.
Aber das nur am Rande.
Bytes und Worte und Doppelworte werden mit "=" übertragen, also :
Code:
SmartTags("DB 100 DBW 24") = SmartTags("DB 101 DBW 124")
SmartTags("DB 100 DBB 14") = SmartTags("DB 101 DBB 114")
Gruß
LL
 
WinCC Flexible 2007 Runtime auf einem Panel PC mit Soft SPS ist verbunden mit einer Allen Bradley Logix.

Ich brauch halt nur ein VB Script um Byte´s und Int´s aus meiner S7 in die Allen Bradley zu schieben und umgekehrt. Dies habe ich ja mit bits ausprobiert und funktioniert ohne probleme.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Johannes,
vielleicht solltest du ganz grundsätzlich überlegen, deine Operanden symbolisch (der eigentlichen Funktion entsprechend) zu benennen.
Aber das nur am Rande.
Bytes und Worte und Doppelworte werden mit "=" übertragen, also :
Code:
SmartTags("DB 100 DBW 24") = SmartTags("DB 101 DBW 124")
SmartTags("DB 100 DBB 14") = SmartTags("DB 101 DBB 114")
Gruß
LL

natürlich benutze ich Symbolik, habs halt nur hier rausgenommen.

SmartTags("DB 100 DBW 24") = SmartTags("DB 101 DBW 124")
SmartTags("DB 100 DBB 14") = SmartTags("DB 101 DBB 114")

OKAY, ich hatte es so ausprobiert mit dem (=) hat aber nicht funktioniert, da habe ich mit gedacht ein (=) klingt ja auch viel zu einfach. ;)

Bekomme eine Art Überlauf Fehlermeldung
 
OKAY, ich hatte es so ausprobiert mit dem (=) hat aber nicht funktioniert, da habe ich mit gedacht ein (=) klingt ja auch viel zu einfach. ;)

Bekomme eine Art Überlauf Fehlermeldung

Das habe ich jetzt nicht verstanden ... schreib doch mal ein bißchen mehr dazu ...
Was geht nicht und was bekommst du gemeldet ?

Gruß
LL
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das habe ich jetzt nicht verstanden ... schreib doch mal ein bißchen mehr dazu ...
Was geht nicht und was bekommst du gemeldet ?

Gruß
LL


So Hatte ich das Script ausprobiert:

SmartTags("DB 100 DBB 20") = SmartTags("Signal_an_Allenbradleybyte[0]")
SmartTags("Signal_von_Allenbradleybyte[1]") = SmartTags("DB 100 DBB 21")

Das Script wurde im 500 ms Takt abgerufen und ich bekam in meinem Störungsfenster im sehr schnellen Takt Überlauffehlermeldung. (Ich weiss jetzt nicht mehr genau was es genau für fehler waren. muss ich gleich nochmal überprüfen.

Vielleicht sollte ich einfach einen Takt von ca 2 - 5 Sekunden ausprobieren ?

zumdem sollten nachher nicht nur 2 bytes hin und her geschickt werden, sondern ca 18 bytes und 18 Wörter (als Integer) und zwar in einem Takt, so schnell wie möglich..

Gruß,
Johannes
 
Hallo Johannes,
ich vermute, dass die besagte Überlauf-Fehlermeldung viel mehr etwas mit der WinCCFlexibel eigenen Script-Bearbeitung zu tun hat. Es können nur eine bestimmte Anzahl von Scripten gestartet werden (Aufgabenstack). Ich meine es wären 20. Außerdem wird immer nur ein Script bearbeitet - das heißt, dass solange wie Script_1 in Bearbeitung ist wird zwar Script_2 (und _3 etc.) in dem Aufgabenstack übernommen, sie werden aber erst bearbeitet wenn Script_1 fertig (beendet) ist. Der von dir geannte Überlauf könnte also auch der Max.-Stack (20 Scripte) sein. Kannst du das mal checken ?

Gruß
LL
 
Hallo Johannes,
ich vermute, dass die besagte Überlauf-Fehlermeldung viel mehr etwas mit der WinCCFlexibel eigenen Script-Bearbeitung zu tun hat. Es können nur eine bestimmte Anzahl von Scripten gestartet werden (Aufgabenstack). Ich meine es wären 20. Außerdem wird immer nur ein Script bearbeitet - das heißt, dass solange wie Script_1 in Bearbeitung ist wird zwar Script_2 (und _3 etc.) in dem Aufgabenstack übernommen, sie werden aber erst bearbeitet wenn Script_1 fertig (beendet) ist. Der von dir geannte Überlauf könnte also auch der Max.-Stack (20 Scripte) sein. Kannst du das mal checken ?

Gruß
LL
Ich hab nur dieses eine Script aktiviert, werde es jetzt einmal ausprobieren was ich oben genannt habe
 
Zuviel Werbung?
-> Hier kostenlos registrieren
... dann ist vielleicht auch die Frage :
Was macht dein Script alles so, wie wird es aufgerufen und in welchem Interval wird es aufgerufen ?
Es kann sicher nicht schaden, dass mit dem Aufruf-Interval zu testen. Das würde ich auch so machen ...

Gruß
LL
 
Hallo,

habe das Problem gelöst. Hatte anstelle des USINT ein SINT benutzt.


Usint - Allen Bradley
byte - Siemens


Danke Larry
 
Hallo Johannes,
ich vermute, dass die besagte Überlauf-Fehlermeldung viel mehr etwas mit der WinCCFlexibel eigenen Script-Bearbeitung zu tun hat. Es können nur eine bestimmte Anzahl von Scripten gestartet werden (Aufgabenstack). Ich meine es wären 20. Außerdem wird immer nur ein Script bearbeitet - das heißt, dass solange wie Script_1 in Bearbeitung ist wird zwar Script_2 (und _3 etc.) in dem Aufgabenstack übernommen, sie werden aber erst bearbeitet wenn Script_1 fertig (beendet) ist. Der von dir geannte Überlauf könnte also auch der Max.-Stack (20 Scripte) sein. Kannst du das mal checken ?

Gruß
LL

...wie sieht das eigendlich aus wenn ich einen Skript_1 ein Skript_2 aufrufe...? Wird das aufgerufene Skript_2 in Skript_1 abgearbeitet (ich glaube ja)...?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Helmut,
dann wird Script_1 solange unterbrochen bis Script_2 abgearbeitet ist und dann wieder fortgesetzt - also genau so wie du es sehr wahrscheinlich ja auch haben wolltest. Es wird aber nicht als neuer Task gestartet ...

Gruß
LL
 
Zurück
Oben