winnCC 2008 SP3 mit Script auf DB zugreifen.

James007

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

bin gerade dabei mit Hilfe eines Skriptes auf die Einstellung in einem symbolischen E/A-Feld einen DB zu beschreiben. Das Ergebnis soll in einer boolschen Variable im DB festgehalten werden.

z.B. Prozessvariable = 1 ==> im DB5.Auto=true
Prozessvariable=2 ==> im DB5.EmB=true use.

Leider Schaffe ich es nicht mit einem Script auf den DB zuzugreifen. Kann mir jemand einen Tipp geben?

Vielen Dank schon mal!

James
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Thomas_v2.1,

vielen Dank für die Info. Die Variable habe ich natürlich in der Rubrik Kommunikation - Variablen soweit angelegt. Dann wollte ich über Smarttags auf den DB zugreifen.

Dim objekt
Dim a Int
Set objekt=HmiRuntime.Screens("Bild_1").ScreenItems("BA_Feld")
a=objekt.SmartTags("daten.betriebsart")

Die Variable a liefert mir den Integerwert aus meinem symbolischen E/A-Feld; d.h. welche Betriebsart gerade ausgewählt ist.
z.B. Daten.Betriebsart=1 entspricht der Betriebsart "Auto".
Jetzt möchte ich in Abhängigkeit von diesem Wert a mit Hilfe der select case Anweisung Boolsche Ausdrücke im Datenbaustein (Daten) beschreiben!

Ich glaube, irgendwo habe ich noch einen grundsätzlichen Fehler?

James
 
Warum so umständlich über Objekt?
An dem EA-Feld muß doch sowieso eine Prozessvariable angegeben werden. Auf diese Variable kann man direkt zugreifen: SmartTags("BA_Feld_Variable").

Noch VIEL besser als die undurchsichtige Skripterei: nimm für die Prozessvariable am EA-Feld eine Variable in der SPS und mache Deine Verknüpfungen im SPS-Programm.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Harald,

vielen Dank für dein Feedback.
Derzeit habe ich als Prozessvariable eine Variable aus meinem Datenbaustein (Daten.Betriebsart) vom Typ Integer. Diese gibt mir an, welche Betriebsart denn nun über das Touch-Panel ausgewählt wurde. In S7 wandle ich nun diese Variable vom Typ Integer in 4 Variablen vom Typ Bool, weil meine Schnittstelle zur weiteren Verarbeitung Datentypen vom Typ Bool erwartet. Das ganze funktioniert soweit gut, nur finde ich es eben etwas umständlich innerhalb des Simatic-Managers diese Anpassung vorzunehmen. Ich hätte eben direkt diese Variablen die die Betriebsart angeben an der Schnittstellt zu WinnCC z.B. Daten.Auto=true entspricht eben im symbolischen E/A-Feld der ausgewählten Betriebsart Automatikbetrieb.

James007
 
Das Zerlegen des Integers in 4 einzelne BOOL im CPU-Programm ist doch nicht umständlicher als in einem Skript auf dem Panel!
Es hat außerdem weitere Vorteile, ich nenne nur ein paar:
- Nachvollziehbarkeit: die Zerlegung im CPU-Programm ist von Fremd-SPS-Programmierern viel leichter findbar und nachvollziehbar
- Konsistenz: das Zerlegen im Panel auf 4 verschiedene Variablen ist nicht konsistent. Es ist nicht garantiert, daß sich alle 4 Variablen gleichzeitig in der CPU ändern
- benötigt weniger Powertags
- Grundsätzlich: logische Verknüpfungen gehören in die CPU. ein HMI ist keine SPS

Harald
 
Hallo Harald,

vielen Dank für deinen Kommentar.

Das kann man natürlich so sehen!
Ich würde trotzdem den Versuch unternehmen eine einheitliche Schnittstelle hier abzubilden, so dass innerhalb des Simatic-Managers eigentlich nur noch die Programmierung erfolgt!

James007
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Was immer Du unter "einheitliche Schnittstelle abbilden" meinst - vergiß es, wenn Dein Wunsch-Vorgehen nicht sicher funktioniert. (siehe meinen Hinweis zu Konsistenz in #7)
Man muß sicher funktionierenden Code programmieren, nicht solchen, der "einheitlich" gut aussieht.

Harald
 
Hallo Harald,

vielen Dank für die klare Aussage. Ich bin jetzt nicht so sehr WinCC erfahren. Aber langsam wird mir klar, warum viele von dieser Software abrücken.
Gibt es eigentlich eine gute Page in Sachen Skripte für WinCC?

James007
 
Hallo Harald,

Aber langsam wird mir klar, warum viele von dieser Software abrücken.

Diese Aussage hat PN/DP ja so nicht gemacht. Es gilt generell, das HMI ist das, als was es auch bezeichnet wird, die Bedienschnittstelle zwischen Mensch und Maschine, nicht mehr aber auch nicht weniger.
Laß die SPS die Arbeit machen, dafür ist sie nun mal da.
Nach vielen Pannen, und Zumutungen von Siemens ist WinCCFlex zumindest seit Version 2008 durchaus brauchbar und muß erst einmal von anderen HMI an Leistungsfähigkeit erreicht werden, besonders in der Integration. Was ja nicht verwundert, da es ja ein Siemens-Produkt ist und denen nun Mal alle internen Infos der eigenen Produkte zur Verfügung stehen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich bin jetzt nicht so sehr WinCC erfahren. Aber langsam wird mir klar, warum viele von dieser Software abrücken.
Wie "abrücken"? Zu welcher Alternative?
Das kannst Du mit Deiner geringen Erfahrung doch eigentlich gar nicht einschätzen.
Außerdem hat man fast gar keine Wahl - wenn man Siemens Panels einsetzt, dann muß man WinCC flexible oder bei den neueren Panels WinCC Comfort (TIA) benutzen.

Ganz wichtig: Du benutzt WinCC flexible 2008 - das ist nicht das "richtige" WinCC.

Deinen Wunsch, die Integer-Variable im Panel in 4 Variablen zu zerlegen und diese dann gleichzeitig in die CPU übertragen, kann auch eine andere Visu nicht erledigen.

Gibt es eigentlich eine gute Page in Sachen Skripte für WinCC?
Nutze das WinCC flexible Hilfesystem (*), das enthält eine umfangreiche VBS-Dokumentation/Referenz und ein großes Kapitel zum WinCC-flexible-spezifischen Teil des Runtime Scriptings und schaue auch mal in diesen FAQ: Protool/WinCCflex Daten lesen / schreiben mit VB-Script und wenn Du was bestimmtes suchst dann nutze hier die Forumssuche.

(*) die F1-Taste an der Tastatur kennst Du sicher schon

Harald
 
Zurück
Oben