Page 1 of 2 1 2 LastLast
Showing results 1 to 10 of 11

Thread: Online Container im BulkMode ?

  1. #1

    Default Online Container im BulkMode ?

    Kann mir jemand die Funktionsweise vom BulkMode erklären ?

    Habe folgendes Problem.
    In einer Steuerung ändern sich gleichzeitig 20 Variablen
    19 Daten Variable
    1 Trigger Variable
    In VBA muss ich sie weiterverarbeiten.
    Die normale Vergehenweise über ein Event der Trigger Variable

    'event is fired when a variable value changes
    Private Sub zOLV_VariableChange(ByVal obVar As IVariable)

    für dazu das nicht immer alle andern 19 Daten Variabel den aktuellen Wert haben.

    Diese Problem solle laut Copa über den BulkMode lösbar sein.

    Wie funktioniert er und bringt mich dich Funktion weiter ?

  2. #2
    Join Date
    30.05.2007
    Location
    Salzburg
    Posts
    879

    Default Re: Online Container im BulkMode ?

    wenn die triggervariable kommt, dann einfach die 19 variablen mit .value direkt auslesen... und nicht über das change-event
    -> also trigger variable über change-event auswerten und dann die variablen direkt mit
    thisproject.variables.item("myVarName").value lesen

    -> das changeevent des online container wird getriggert wenn sich werte der definierten variablen ändern.....
    -> beim "normalen" changeevent wird pro wertänderung einer onlinevariable ein event gefeuert
    -> beim bulk-changeevent wird ein array der variablen geliefert welche sich geändert haben
    -> je nachdem wie die telegramme von der steuerung dann über dem treiber in die zenon runtime und somit in den online container reinkommen (die müssen nicht zwingend alle im gleichen packerl sein) werden hier dann die weiteren aktionen getriggert

    irgendwie hört sich die benötigte funktionalität nach rezepten an
    -> das modul "standard rezept" ist bei jeder lizenz automatisch dabei
    -> hier einfach werte von definierte variablen lesen und abspeichern

    gruß,
    herbert


  3. #3

    Default AW: Online Container im BulkMode ?

    Erst mal danke für die schnell Antwort
    Wird mit der Funktion die Variable direkt von der Steuerung gelesen ?

    thisproject.variables.item("myVarName").value

    Ich dachte immer man Muss über den zenon-Container gehen ?

    Die Funktion brauche ich um
    Speicher einer Schrittprotokolls in einen SQL-Server
    Last edited by hare1268 : 12th November 2014 at 13:42

  4. #4
    Join Date
    30.05.2007
    Location
    Salzburg
    Posts
    879

    Default Re: Online Container im BulkMode ?

    "Wird mit der Funktion die Variable direkt von der Steuerung gelesen ?"
    -> es wird hier der wert zurückgegeben welcher aktuell in der zenon runtime verfügbar ist

    "Ich dachte immer man Muss über den zenon-Container gehen ? "
    -> nein, nur dann wenn auf werteänderungen innerhalb von vba/vsta reagiert werden muss

    folgendes kapitel in der hilfe dokumenation (ab 7.10/7.11) ist hier hilfreich:
    -> siehe Handbuch -> Variablen -> Variablen in zenon anmelden

    eine überprüfung ob ein wert einer variable über vba/vsta gelesen werden kann oder nicht kann mit der methode .IsOnline() durchgeführt werden
    -> siehe Handbuch -> Programmierschnittstellen -> Objectmodel -> Variable -> Variable-Methods -> IsOnline


    Die Funktion brauche ich um Speicher einer Schrittprotokolls in einen SQL-Server
    -> das ganze würde einfach auch über den zenon SQL Treiber funktionieren (also alles ohne VBA/VSTA)
    -> SQL-Treiber schreibt in die SQL Tabelle
    -> kann hier dann einfach über getriggerte Variablenzuweisung gemacht werden
    -> Quellvariable: SPS-Variable
    -> Zielvariable: SQL-Treiber
    -> die Wertezuweisung wird dann durchgeführt, wenn der Trigger kommt

    Es ist dringend abzuraten VBA für die Kommunikation mit einer SQL Datenbank zu verwenden, denn wenn die SQL DB aus irgendeinem Grund nicht verfügbar ist (z.B. SQL Server offline, nicht erreichbar, .... u.u.u.), dann kann die Hauptapplikation (=zenon Rutnime) für default 30 Sekunden nicht bedient werden.

    VBA läuft im gleichen Thread wie die Applikation selbst. Z.b. wenn eine Endlos-Schleife in Excel-VBA programmiert ist, dann kann währendessen auch keine Zellen in Excel editiert werden.

    Die 30 Sekunden ist das Default-Timeout vom SQL Server. Also nach einem Verbindungsaufruf in VBA (z.B. über ADODB mit .connect) bleibt dann VBA in diesem Aufruf stecken und somit hat das auch dann direkte Auswirkung auf die zenon Runtime (da hilft auch kein DoEvents oder so..... ).

    Die vorgeschlagene und auch empfohlene Vorgesensweise hier ist über den SQL Treiber (was jetzt Online Werte betrifft) da Treiber in zenon ja eigene Prozesse sind.
    -> optional gäbe es auch noch das SQL-Prozessgateway

    Bereits in zenon archivierte Daten können über das Modul "SQL Server" (Auslagern von Archivdaten - bidirektional) oder aber auch über das Modul "SQL Export" (Exportieren von archive, AML, CEL - unidirektional) in eine SQL Datenbank abgebildet werden.

    gruß,
    herbert


  5. #5
    Join Date
    10.12.2007
    Posts
    181

    Default AW: Online Container im BulkMode ?

    Ich klink mich hier mal kurz ein um Missverständnisse zu klären (hare1268 und ich haben deswegen vorher schon telefoniert)

    Die Situation ist folgende:
    in einer SPS weren zu einem bestimmten Zeitpunkt (in einem Zyklus) diese 19 Variablen mit aktuellen Werten befüllt UND das Triggerbit gesetzt.
    Mit diesem Trigger sollen dann diese 19 Variablenwerte als ein Datensatz in eine SQL-Datenbank geschrieben werden.

    Das Problem dabei ist das Timing. Zum Zeitpunkt der Wertänderung des Triggerbits im zenon haben die anderen 19 Variablen noch nicht unbedingt den dazu korrespondierenden Wert angenommen.
    Eine verzögerte Ausführung des Makros über z.B. verzögerte Grenzwertfunktion ist aber nicht erwünscht, weil die Ereignisse evtl. zu schnell kommen.

    Deshalb auch die Fragenach dem Bulk-Mode der Onlinevariablen. Liefert hier das VariableChange Ereigniss alle 20 aktuellen Werte?

  6. #6
    Join Date
    30.05.2007
    Location
    Salzburg
    Posts
    879

    Default Re: Online Container im BulkMode ?

    @mst: bitte obigen beitrag durchlesen
    -> vba und sql ist eine sehr schlechte idee (leider in der vergangenheit schon genügend probleme von kunden gemeldet)
    -> dieses verhalten hat jetzt nicht direkt etwas mit zenon selbst zu tun sondern das ist die natur von vba
    FYI: mit vsta hätte man grundsätzlich die möglichkeit eigene threads zu erzeugen, jedoch wird in diesem seperaten thread auf auf die zenon api zugegriffen (variablen werte lesen), dann ist man automatisch wieder im hauptthread unterwegs....

    gruß,
    herbert


  7. #7

    Default AW: Online Container im BulkMode ?

    Gibt es die Möglichkeit den SQL-Statement das man im VBA gebildet hat anderweitig abzusetzen.

    (Der ist die Protokollieren wurde vom Lieferanten so geschrieben und seit mehren Jahren im Betrieb. Es kommt immer wieder vor das Daten fehlen)

    Deshalb Muss ich Funktion in einem Laufenden System umschreiben.

  8. #8
    Join Date
    30.05.2007
    Location
    Salzburg
    Posts
    879

    Default Re: Online Container im BulkMode ?

    Gibt es die Möglichkeit den SQL-Statement das man im VBA gebildet hat anderweitig abzusetzen.
    -> wenn das gleiche SQL-Statement (und somit auch die SQL-DB und deren Tabellenstruktur) die gleiche sein muss, dann gäbe es noch die Möglichkeit dies über den Report-Generator durchzuführen
    -> siehe Handbuch -> Reporting -> Report Generator -> Projektieren im Editor -> Reportfunktionen -> Datenbankfunktionen -> Beispiel SQL

    um auf der sicheren seite zu sein, dass alle 19 werte in zenon verfügbar sind, wenn der trigger kommt, kann entweder auf der steuerungsseite der trigger vielleicht verzögert werden oder aber in zenon selbst (grenzwert 1 bei trigger variable mit einer verzögerungszeit von z.B. 5 sekunden definieren und dann erst die funktion für das lesen bzw. beschreiben der variablen gestartet werden)

    gruß,
    herbert


  9. #9

    Default AW: Online Container im BulkMode ?

    Über die Verzögerungszeit wahr die ganze Zeit gelößt, deshalb sie die Daten auch verloren gegangen.

    Den Report Generator schaue ich morgen an.
    Last edited by hare1268 : 12th November 2014 at 16:25

  10. #10
    Join Date
    30.05.2007
    Location
    Salzburg
    Posts
    879

    Default Re: Online Container im BulkMode ?

    Über die Verzögerungszeit wahr die ganze Zeit gelößt, deshalb sie die Daten auch verloren gegangen.
    -> das verstehe ich nicht

    19 variablen und deren aktuellen werte liegen in der SPS
    1 trigger variable welche das lesen anstoßt
    kleine wartezeit
    19 variablen sollen dann in die SQL DB geschrieben werden

    wo gehen da welche daten verloren?
    stehen die 19 variablenwerte dann nicht mehr zur verfügung?
    über welche anbindung (treiber) basieren hier die variablen ?

    oder ist damit gemeint, dass das schreiben in die SQL db über VBA manchmal nicht funktioniert hat?


Similar Threads

  1. Online Container Variablen auslesen
    By joergtheis in forum VBA
    Replies: 2
    Last Post: 12th September 2013, 09:43
  2. Online Container zertören
    By perschke in forum VBA
    Replies: 1
    Last Post: 1st December 2010, 09:00
  3. Abzahl der Online Container
    By perschke in forum VBA
    Replies: 3
    Last Post: 10th January 2010, 23:40
  4. beispiel für online container
    By jusufs in forum VBA
    Replies: 1
    Last Post: 3rd December 2009, 00:08
  5. Replies: 0
    Last Post: 10th February 2009, 13:54

Posting Rules

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •