Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Page 4 of 4 FirstFirst ... 234
Results 31 to 37 of 37

Thread: Wie VBA Scripte mit der S7 verbinden

  1. #31
    Join Date
    02.05.2017
    Posts
    26
    Danke
    0
    Erhielt 2 Danke für 2 Beiträge

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Du müsstest versuchen wie genau der EventHandler funktioniert, leider bekomme ich vom Object Model dafür keine genauere Information.

    Ich denke das Event löst nur einmal aus wenn sich mehrere Variablen in deinem OnlineContainer im gleichen Moment ändern.
    Dann kannst du alle abfangen und in einem Aufruf abarbeiten.

    Das normale _Changed Event wird für jede einzelne Variable aufgerufen.


    Da du ja nur 2 Variablen verwendest auf die du immer reagieren musst reicht dir sicherlich der normale _SingleChanged.
    Der BulkMode macht eigentlich nur Sinn wenn du wirklich sehr sehr viele Variablen hast die gleichzeitig den Wert ändern könnten.

    Wie viele Tasks gleichzeitig gestartet werden können hängt von deiner Prozessorleistung und dem Vorgang innerhalb der Tasks ab.
    In deinem Fall sind die Tasks ja sofort wieder beendet da keine langen Prozeduren durchlaufen werden. Eine Datei ist sofort erstellt und auch sofort kopiert.

    Mit deinem Programm sollten auch mehrere 100 Tasks parallel laufen können ohne dass du etwas davon merkst.

  2. #32
    Join Date
    26.07.2009
    Location
    Bayern
    Posts
    76
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Default

    Hallo Rabi,

    Vielen Dank für deine Antwort.

    Ich habe das AddIn mal ausprobiert. Es funktioniert nicht.
    Ich kann aber auch nicht sagen ob das Projekt Service Extension überhaupt läuft.
    Man sieht ja gar nichts.
    Wie kann ich überprüfen ob das Extension mit der RT mit geladen wurde.
    Wie kann ich überhaupt prüfen ob der Code funktioniert.

    Ich habe einfach mal auf die Play Taste gedrückt im Visual Studio und habe in der Ausgabe folgendes bekommen:

    Anmerkung 2021-01-12 135149.jpg

    So wie ich das verstehe blockiert sich da was gegenseitig.


    Mfg Tommylik
    Last edited by tommylik; 12.01.2021 at 13:54. Reason: Zusätzlicher Hinweis

  3. #33
    Join Date
    26.07.2009
    Location
    Bayern
    Posts
    76
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Default

    Hallo Rabi,

    Ich habe noch nicht viel erreicht aber so viel das folgendes fehlte:

    Code:
    DefaultStartMode=DefaultStartupModes.Auto
    Damit der Service automatisch startet.

    Dann habe ich mal das ausprobiert:

    Code:
    
                // configure all the variables
                ExportPath = @"D:\S7_Export\AppData";
                // String 12 für den Ordnernamen
                strOrdner = String.Format((string)SPSVariables[1].GetValue(0), "############");
    
    
                MessageBox.Show(strOrdner);
                MessageBox.Show(ExportPath);
    Die MessageBox hat schonmal funktioniert somit ist klar das der OnlineContainer funktioniert.
    Und die richtigen Variable wurden auch übergeben.

    Was noch nicht funktioniert ist das der Ordner erstellt wird.
    Weil der Service nicht dauerhaft läuft.

    Um das zu Testen musste ich den Service manuell über einen Button starten.

    Was fehlt hier noch?

    Mfg Tommylik

  4. #34
    Join Date
    02.05.2017
    Posts
    26
    Danke
    0
    Erhielt 2 Danke für 2 Beiträge

    Default

    Hallo,

    ich habe festgestellt dass anscheinend die Start-Funktion früher aufgerufen wird als die Variablen initialisiert sind.
    Dadurch läufst du relativ früh in deine Exception. Ebenfalls hab ich mit dem Foreach einen kleinen Gedankenfehler gehabt und habe dort jetzt die Objekte auf != null geprüft.

    Im Anhang findest du die gesamte Extension. Das erstellen der Ordner habe ich getestet, für Testzwecke habe ich die Messageboxes noch drinnen gelassen.

    Ev. kannst du damit noch etwas anfangen.
    Attached Files Attached Files

  5. #35
    Join Date
    26.07.2009
    Location
    Bayern
    Posts
    76
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Default

    Hallo Rabi,

    Super vielen Dank für deine tolle Unterstützung.

    Wenn du mal Zeit hast kannst du mir das mit der VariableSubscription erklären. Wofür ist die.
    Du hattest ja am Anfang schon gesagt das es mit einer Klasse am Besten wäre.
    Wie Hängen diese beiden Skripte zusammen ProjectServiceExtension.cs und TommyClass.cs??
    Wie ist von der Reihenfolge der Ablauf. In beiden Dateien ist eine Start Methode.

    Vielen Dank nochmal für deine super Hilfe.

    Mfg Tommylik

  6. #36
    Join Date
    26.07.2009
    Location
    Bayern
    Posts
    76
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Default

    Hallo Rabi,

    Also der Service ist zwar jetzt gestartet aber es passiert nichts wenn ich z. B. den Trigger für Ordner erstellen setze.
    Dann ist mir aufgefallen das die RT sehr sehr lange brauch bis sie gestartet ist. >1 Min. Vorher war sie in ca. 20s gestartet.
    Ist das so wenn AddIns mit an Board sind das die RT langsamer startet oder deutet das noch auf einen Fehler hin??

    Dann wäre es gut wenn wir mal abgleichen wie Du die Variablen in der SPS nutzt und wie Du Sie in Zenon angelegt hast.
    Denn du sagtest das es bei dir funktioniert bei mir leider nicht.

    So sind sie bei mir angelegt.

    Screenshot 2021-01-16 080006.png

    Die SPS funktioniert bei mir so:

    Mit einem Merker wird aus einem Typverwaltungs-DB mit 2 BLKMOV der Prägecode in 2 Strings in den DB2280 kopiert.
    Und für den Ordnername noch ein L oder R extra. Deswegen String 12 für den Ordnernamen.
    Nach einer kurzen ASV wird der Merker gesetzt der dann das Ordnererstellen auslösen soll.
    Ist der Ordner erstellt setzt Zenon den Merker wieder zurück. Wenn nicht gibt es einen Hinweis mit PDE_NoFolder.

    Vielen Dank nochmal für deine Hilfe.

    Mfg Tommylik

  7. #37
    Join Date
    02.05.2017
    Posts
    26
    Danke
    0
    Erhielt 2 Danke für 2 Beiträge

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    wie gesagt du müsstest nochmal prüfen ob das Object Model von der 8.20 (die ich verwende) und der 7.60 (die du hast) ident sind.
    Sonst könnte es sein dass wir bereits beim definieren von irgendwelchen Methoden in den try-catch Block laufen.

    Jetzt wird es für mich leider sehr schwierig das Problem so ausfindig zu machen.
    Bitte prüfe noch einmal ob deine Variablen wirklich alle auf "Extern Visible" gestellt sind unter den Externen Einstellungen jeder Variable.

    Ggf. könntest du noch prüfen welche diese Eigenschaft alle haben, da zu Start der Runtime alle Variablen mit dieser Eigenschaft automatisch in die VariableCollection geschoben werden.
    Das könnte eventuell deinen RT-Start verzögern, oder eben die falschen Aufrufe in deinem AddIn.


    Ich würde dir dazu empfehlen dass du das Kapitel "Debugging" für die AddIns in dem Copa-Data Handbuch anschaust und prüfst wo genau das AddIn nicht mehr funktioniert:
    http://download.copadata.com/fileadm...ittstellen.pdf
    P.S.: Du kannst auch ein VBA AddIn erstellen, wäre für dich vielleicht einfacher da du ja mit C# nicht wirklich Erfahrung hast (findest du ebenfalls beim Projekt erstellen unter SCADA).
    Dort kannst du das gewohnte VBA Object Model verwenden. Auch wenn das VBA und C# Object Model fast ident sind, gibt es doch kleine aber feine Unterschiede.

    Wie genau der Ablauf von deiner Steuerung ist, sollte in diesem Sinne relativ egal sein.


    Zwecks der vorherigen Frage:
    Die ProjectExtension ist einfach eine Klasse die vom Interface IProjectServiceExtension erbt. Würde die nicht implementiert sein würde das AddIn einfach nicht aufgerufen werden.
    Innerhalb dieser Klasse wird eben dann die Klasse "TommyClass" deklariert und dementsprechend Werte zugewiesen.
    Ebenfalls abonniert die TommyClass auch noch das Event "_Changed" und "_BulkChanged" von der Klasse ProjectExtension.

    Hier wird es bald kompliziert das ganze zu erklären weil dir dort leider das Grundwissen fehlt was genau ein Event ist und wieso es abonniert werden muss.


    Hoffe ich konnte dir trotzdem noch etwas weiterhelfen.

Similar Threads

  1. Wie Siemens S7-300 mit PC-Verbinden?
    By Anaconda55 in forum Simatic
    Replies: 26
    Last Post: 10.06.2013, 19:32
  2. VBA - Probleme mit Commandbutton bei der Html - Erstellung aus Excel
    By DDuesentrieb in forum Hochsprachen - OPC
    Replies: 1
    Last Post: 18.01.2012, 22:19
  3. Replies: 5
    Last Post: 14.08.2011, 10:09
  4. Replies: 10
    Last Post: 22.03.2010, 21:16
  5. Wie kann ich in Excel 2007 mit VBA ein AddIn aktivieren?
    By godi in forum Hochsprachen - OPC
    Replies: 7
    Last Post: 02.04.2008, 09:42

Bookmarks

Posting Permissions

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