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

Thread: Project wizard extension in eigenem Thread ausführbar?

  1. #1
    Join Date
    18.11.2016
    Posts
    7

    Default Project wizard extension in eigenem Thread ausführbar?

    Hallo,

    Ich nutze VS2017 um ein "project wizard extension" zu erstellen.
    Im wesentlichen führe ich eine Bildumschaltefunktion aus und mache anschließend einen Screenshot.

    Im debug-Modus aus VS2017 heraus funktioniert alles einwandfrei, weil scheinbar das add-in nicht im Hauptthread läuft und diesen nicht blockiert.
    Rufe ich also eine Bildumschaltefunktion auf, wird auf das entsprechende Bild gewechselt und mein Programmcode wird an der nächsten Zeile fortgesetzt -> so wie es sein soll.

    Nutze ich jedoch das fertige scadaAddIn, wird es im Hauptthread ausgeführt und blockiert diesen bis das Programm abgearbeitet wurde.
    Bildumschaltefunktionen im Programm werden erst NACH ABLAUF ausgeführt.

    Wie kann ich das Problem lösen?
    Ist es möglich ein Addin in einem selbstständigen Thread zu starten?

    Beste Grüße
    Marco

  2. #2
    Join Date
    18.11.2016
    Posts
    7

    Default Re: Project wizard extension in eigenem Thread ausführbar?

    Ich versuche mein Problem nochmal anders darzustellen:

    folgender Code funktioniert NICHT wie erwartet, d.h. die Screenswitch-Funktionen werden erst NACHDEM das Programm abgelaufen ist ausgeführt.
    Aus dem Debug-Modus unter VS2017 funktioniert das Programm so wie ich es mir vorstelle.


    Code:
     public void Run(IProject context, IBehavior behavior)
     {
         // enter your code which should be executed on triggering the function "Execute Project Wizard Extension" in the SCADA Runtime
         // ScreenSwitch Page 1
         context.FunctionCollection["Sw_Page1"].Execute();
         System.Threading.Thread.Sleep(2000);
         
         // ScreenSwitch Page 2
         context.FunctionCollection["Sw_Page2"].Execute();
         System.Threading.Thread.Sleep(2000);
         // ScreenSwitch Page 3
         context.FunctionCollection["Sw_Page3"].Execute();
         System.Threading.Thread.Sleep(2000);
     }

  3. #3
    Join Date
    10.12.2007
    Posts
    165

    Default AW: Project wizard extension in eigenem Thread ausführbar?

    Ich vermute das Problem liegt nicht am thread, sondern dass der Code einfach zu schnell abläuft, sprich der Screenshot wird schon erstellt bevor das Bild gewechselt hat.

    Soviel ich weiss, würde das mit einem zenon Script nicht passieren, weil das Script die Funktionen tatsächlich nacheinander ausführt, also mit dem Screenshot wartet bis die Bildumschaltung ausgeführt wurde. Das solltest Du mal testen. Wenn dem so ist, dann entweder gleich nur mit dem Script (ohne AddIn) arbeiten, oder mittels AddIn zuerst den eigenen Code ausführen (z.B. die Bildumschaltungsfunktion manipulieren) und dann und dann die Funktion starten die das Script ausführt.

    Alternativ kann man natürlich auch das Öffnen des Bildes aus dem Code abwarten, bevor der Screenshot erstellt wird. Aber ich würde die Scripte bevorzugen wenn das klappt.

  4. #4
    Join Date
    18.11.2016
    Posts
    7

    Default Re: Project wizard extension in eigenem Thread ausführbar?

    Ein Zenon-Script ist in diesem Fall leider keine Option.
    Ich habe auch schon versucht zu warten bis das Bild tatsächlich erscheint, da warte ich bis in alle Ewigkeit.
    Die Bildumschaltefunktion wird wirklich erst nach dem Programmende ausgeführt.

    Ich habe sogar schon versucht es als Service-Modul zu programmieren.
    Mittels Timer Events habe ich die Bildumschaltefunktionen aufgerufen und ansonsten nichts gemacht.

    Wie gesagt, aus dem Debugger heraus funktioniert es.


  5. #5
    Join Date
    10.12.2007
    Posts
    165

    Default AW: Project wizard extension in eigenem Thread ausführbar?

    Warum ist ds Script keine Option? Hast Du es ausprobiert?
    Du kannst die Funktionen innerhalb des Scripts ja mittels AddIn zur Laufzeit manipulieren, aber das Script würde halt die Ausführungsreihenfolge sicherstellen.

  6. #6
    Join Date
    18.11.2016
    Posts
    7

    Default Re: Project wizard extension in eigenem Thread ausführbar?

    Wir möchten modular bleiben und Programmfunktionalitäten in Modulen kapseln und sie 1:1 in anderen Projekten wiederverwenden zu können.
    Das Modul ist auch recht komplex.

    Gibt es evtl. eine andere Möglichkeit ein Bild zu öffnen außer über eine Bildumschaltefunktion?

    Mit der Show()-Methode kann ich nur bereits geöffnete Bilder in den Vordergrund holen.
    context.ScreenCollection["Page1"].Show();

  7. #7
    Join Date
    10.12.2007
    Posts
    165

    Default AW: Project wizard extension in eigenem Thread ausführbar?

    .Activate sollte das Bild normal aufrufen. Das .Open Event wird gefeuert wenn das Bild angezeigt wird.

  8. #8
    Join Date
    18.11.2016
    Posts
    7

    Default Re: Project wizard extension in eigenem Thread ausführbar?

    Scada.AddIn.Contracts.Screen.IScreen bietet keine Activate()-Methode oder Activate-Eigenschaft mit der ich ein Bild öffnen kann.

  9. #9
    Join Date
    10.12.2007
    Posts
    165

    Default AW: Project wizard extension in eigenem Thread ausführbar?

    Tja... (shitstrom bzgl. AddIn Schnittstelle) ... zumindest gibts ein Opened Event. Dann musst Du wohl in den sauren Apfel beissen und dieses Event anmelden, dann einen internen Merker setzen und das Bild über Funktion aufrufen. Im Opened Event den Bildnamen und den Merker prüfen, wenns das richtige Bild ist und der Merker gesetzt ist, Screenshot erzeugen, Event abmelden und Merker zurücksetzen. Oder irgendwie so.

  10. #10
    Join Date
    18.11.2016
    Posts
    7

    Default Re: Project wizard extension in eigenem Thread ausführbar?

    Genauso habe ich es gerade versucht (Project wizard extension). Das Opened-Event kommt nicht. Logisch, das Bild wird ja auch nicht geöffnet.
    Mein letzter Versuch, ich werde es in einer Project service extension versuchen, dort machen Events auch erst Sinn, da es ja quasi kein Programmende gibt.

    Danke für die Mühe.



Similar Threads

  1. Replies: 1
    Last Post: 30th August 2018, 09:33
  2. Beckhoff Twin Cat NG Treiber nicht ausführbar
    By robs in forum straton / zenon Logic
    Replies: 5
    Last Post: 23rd January 2015, 12:35
  3. Replies: 2
    Last Post: 17th October 2011, 12:55
  4. ZENON *.prj files extension
    By markuska in forum zenon Supervisor
    Replies: 2
    Last Post: 18th June 2010, 11:07
  5. Replies: 0
    Last Post: 20th August 2007, 13:08

Posting Rules

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