Welcome to our new forum
All users of the legacy CODESYS Forums, please create a new account at account.codesys.com. But make sure to use the same E-Mail address as in the old Forum. Then your posts will be matched. Close

Diskussion: Scripting - Beispiele und Rezepte

bombo
2011-04-10
2011-05-02
  • bombo - 2011-04-10

    Hallo

    gibt es eine Beschreibung bzw. eine Übersicht über die möglichen Scriptbefehle in Verbindung mit Codesys?

    Ich würde mir gerne ein Script basteln das folgendes macht:
    1. Ein bestehendes Projekt öffnen.
    2. Code in Form von PLCOpenXML importieren und den bestehenden Code ersetzen/überschreiben.
    3. Alles bereinigen.
    4. Projekt übersetzen.
    5. Einloggen und die bestehende Applikation ersetzen.
    6. PLC starten (RUN).
    7. Ausloggen, speichern und schließen.

    Vorab schon mal vielen Dank!

     
  • bombo - 2011-04-10

    Sorry, ganz vergessen:

    Eine Bootapplikation sollte natürlich auch noch erzeugt werden...

    Danke

     
  • Anonymous - 2011-04-11

    Originally created by: M.Schaber

    Hallo, Bombo,

    Die Dokumentation für die Skriptbefehle ist im Moment aus Zeitgründen leider noch in einer etwas provisorischen Form ausgeliefert - sie ist zwar inhaltlich vollständig, aber aus dem C# Quelltext autogeneriert und von der Form her noch nicht in die Online-Hilfe integriert. In der Online-Hilfe findet immerhin der Verweis darauf, wo die Hilfe-Datei liegt:

    Im CoDeSys Installationsverzeichnis im Unterverzeichnis CoDeSys\Online Help liegt eine Datei ScriptEngine.chm. Dort sind alle CoDeSys-spezifischen Schnittstellen dokumentiert, die für die ScriptEngine zur Verfügung stehen.

    In der Online-Hilfe ist das Skripting an folgenden Stellen dokumentiert:
    - Konzepte und Basiskomponenten > Skript Sprache: Allgemeine Informationen für den Einstieg inklusive Beispielen, und einer Kurzanleitung, wie ein Python-Programmierer die .NET-Schnittstellen der ScriptEngine.chm zu lesen hat.
    - Menübefehle nach Kategorien > Skripting: Die Menükommandos zum Ausführen von Skripten
    - Kommandozeilen-Optionen > --runscript: Die Kommandozeilenoptionen für Skripte ("Fernsteuern" von CoDeSys aus Batch-Dateien heraus).

    Ich habe gerade festgestellt, dass es die Tabelle mit den "Einstiegspunkten" leider nicht von unserer internen Spezifikation in die Hilfe geschafft hat, ich werde hier noch einen Artikel reinstellen, der den Einstieg etwas erklärt.

    (Update: Ich habe den Artikel jetzt in den Einstiegs-Thread eingehängt.)

     
  • bombo - 2011-04-14

    Hallo,

    Die Scripts via Python bieten wirklich viele schöne Möglichkeiten, z.B. zur automatisierten Konfiguration...
    Im Moment vermisse ich noch eine sehr wichtige Funktion: "Alles bereinigen".

    Derzeit müssen wir beim generieren vom PLC Projekt in ca. 80% aller Fälle die Funktion "Alles bereinigen" ausführen, ansonsten läuft das Werk einfach nicht richtig.

    Gibt es diese Funktion derzeit noch nicht oder habe ich sie vielleicht nur nicht gefunden?
    Bzw. wird es diese Funktion in naher Zukunft geben?

    Danke

     
  • Anonymous - 2011-04-15

    Originally created by: M.Schaber

    Hallo, Bombo,

    Die Funktion "Alles bereinigen" ist im Moment tatsächlich noch nicht vorhanden. Ich habe den Feature-Wunsch, die Build-Kommandos für die Skripte zur Verfügung zu stellen, mal in unsere interne Datenbank aufgenommen.

    Die ständige Notwendigkeit von "Alles bereinigen" deutet allerdings auf ein schwerwiegenderes Problem an anderer Stelle hin. Hier würde ich dringend empfehlen, dem Problem mit dem Support zusammen mal nachzugehen, damit das unabhängig davon behoben wird.

    M.Schaber

     
  • bombo - 2011-05-02

    Hallo

    kann man bei der Verwendung der Scripts eine Länder- bzw. Zeichenkodierung einstellen?
    Ich habe das Problem, dass bei der Pfadangabe einige Zeichen, wie z.B. "t" (..\temp..) als "Illegales Zeichen im Pfad" erkannt wird und das Script daher nicht ausgeführt wird.
    z.B.
    ...
    proj = projects.open("C:\temp\myPLC.project")
    ...

    Allein durch die Verwendung von: "# coding=utf-8" kann ich keinen Erfolg erziehlen...

    Danke

     
  • Anonymous - 2011-05-02

    Originally created by: M.Schaber

    Hallo, bombo,

    bombo hat geschrieben:
    kann man bei der Verwendung der Scripts eine Länder- bzw. Zeichenkodierung einstellen?

    Die Angabe der Zeichenkodierung geht, wie Du schon selbst erkannt hast, mittels eines Markers wie "# coding=utf-8" am Anfang der Datei. Allerdings betrifft das Umlaute, sowie alle weiteren nicht-ASCII-Zeichen - dein Problem ist ein anderes, da 't' ja im ASCII-Zeichensatz enthalten ist.

    bombo hat geschrieben:
    z.B.
    ...
    proj = projects.open("C:\temp\myPLC.project")
    ...

    Das Problem hier ist, dass der Backslash in Python - ähnlich wie in C# oder C - in String-Literalen als Escape-Zeichen für Steuerzeichen verwendet wird. Z. B. ist '\n' ein Zeilenumbruch und '\t' ein Tabulator - und der ist kein gültiges Zeichen in einem Dateinamen.

    In der Python-Dokumentation gibt es eine Liste aller Escape-Sequenzen.

    Es gibt hier drei Lösungen: Entweder man verwendet die Escape-Sequenz für den Backslash (also '\'), man verwendet Raw-Strings (gekennzeichnet durch ein 'r' vor dem ersten Anführungszeichen), oder man verwendet den '/' als Pfadtrenner, der in .NET alternativ erlaubt ist. Die Lösung sieht dann je nach dem so aus:

    proj = projects.open("C:\\temp\\myPLC.project") # Backslash mittels Backslash escapen
    proj = projects.open(r"C:\temp\myPLC.project")  # Raw-Strings
    proj = projects.open("C:/temp/myPLC.project")   # Alternativer Pfad-Trenner
    

    Grüße, Markus

     

Log in to post a comment.