Zum Inhalt

Skriptbeispiel: Editorintegration für CoDeSys-Komponenten

Diese Skriptlösung ermöglicht eine Optimierung im Umgang mit unterschiedlichen Komponententypen, die gleichermaßen auf CoDeSys basieren, jedoch unterschiedliche Projektierungsumgebungen erfordern.

Erforderliche Dateien für diese Skriptfunktion

Dateiname Beschreibung Funktionsweise
ScriptBeforeEdit.exe Wird im Skriptpaket bereitgestellt Verknüpft in Abhängigkeit von der Komponententyp-ID die Projektdatei konfigurierbar mit einem Editor
ScriptBeforeEdit.ini Kann mit einem Texteditor bearbeitet werden Definiert das Skript BeforeEdit für eine bestimmte Komponententyp-ID
ScriptBeforeCompare.exe Wird im Skriptpaket bereitgestellt Konfiguriert den Vergleichsvorgang in Abhängigkeit von der Komponententyp-ID den erforderlichen Editor
ScriptBeforeCompare.ini Kann mit einem Texteditor bearbeitet werden Definiert das Skript BeforeCompare für eine bestimmte Komponententyp-ID
Codesys_editor.script Kann mit einem Texteditor bearbeitet werden Skript, das durch den Skript-Interpreter verarbeitet wird

Die Skriptlösungen können unabhängig voneinander angewendet werden.

Voraussetzungen für die Skriptlösung

Die jeweiligen CoDeSys-Editoren müssen lokal unter einem einheitlichen Pfad erreichbar sein, d.h. bei mehreren Rechnern muss dieser lokale Zugriffspfad gleich sein.

Skript einrichten

SkriptBeforeEdit.exe aktivieren

Kopieren Sie die Applikation in die Registerkarte Server-Skriptverzeichnis zur automatischen Client-Aktualisierung.

SkriptBeforeEdit.ini bearbeiten

Wir empfehlen Ihnen, eine möglicherweise bereits vorhandene Datei ScriptBeforeEdit.ini aus dem Server-Skriptverzeichnis zur automatischen Client-Aktualisierung zu ergänzen. Wenn diese Datei (noch) nicht vorhanden ist, verwenden Sie bitte die Vorlage aus dem Skriptpaket.

  1. Aktivieren Sie das CoDeSys-Editor-Skript, indem Sie in der Sektion [General] die Verbindung von der Komponententyp-ID zum Skript eintragen.
  2. Sollen mehrere unterschiedliche Komponententypen mit dem Skript gekoppelt werden, ist für jede Komponententyp-ID ein neuer Eintrag vorzunehmen.
  3. Speichern Sie die Datei.
  4. Kopieren Sie die Datei in die Registerkarte Server-Skriptverzeichnis zur automatischen Client-Aktualisierung.

Beispiel:

[General]
// Mapping for CoDeSys editor component types
{Component type ID}=Codesys_editor

Konkretes Beispiel:

[General]
5A527AA2D4A846208BB8648EED1146BD=Codesys_editor

Codesys_editor.script bearbeiten 1

  1. Öffnen Sie die Datei CoDeSys_editor.script im Texteditor.
  2. Bearbeiten Sie die Skriptapplikation ScriptBeforeEdit.
  3. Nehmen Sie ggf. die in der nachfolgenden Tabelle aufgelisteten Anpassungen vor.
  4. Speichern Sie die Datei.
  5. Kopieren Sie die Datei in die Registerkarte Server-Skriptverzeichnis zur automatischen Client-Aktualisierung.

Skript

Function ScriptBeforeEdit
{
// Assign the editors for the Codesys components
// here (component typeId <-> Codesys Editor)
$def::var1 = $func::getifcomponenttypeid(<Component type Id 1>,<Editor 1>)
$def::var1 = $func::getifcomponenttypeid(<Component type Id 2>,<Editor 2>)
$def::var1 = $func::getifcomponenttypeid(<Component type Id 3>,<Editor 3>)

exit.ifemptyvar $def::var1

$def::var2 = $vdog::specific->WorkingDir$vdog::specific->SelectedFile

call $def::var1
{
arg $def::var2
wait 0
rundir $def::var1
}

done
}

Anpassungen

Zeile 5:

Hier wird eine bestimmte Komponententyp-ID einem bestimmten Editor zugewiesen.

$def::var1 wird nur genau dann die Definition zum Editorpfad als Wert zugeordnet, wenn die Komponententyp-ID mit der des Jobs übereinstimmt.
Es gilt also: $def::var1 = Wenn KomponententypId dann verwende Editor
Die Skriptsyntax hierfür ist: $def::var1 = $func::getifcomponenttypeid(<KomponentenTypId>,<Editor>)
<KomponentenTypId>muss nun ersetzt werden durch die konkrete Komponententyp-ID, die mit einem bestimmten Editor verknüpft werden soll.
<Editor>muss nun ersetzt werden durch den absoluten Pfad zum Editor, der mit der Komponententyp-ID verknüpft werden soll.
Beispiel: $def::var1 = $func::getifcomponenttypeid(5A527AA2D4A846208BB8648EED1146BD, C:\Programme\myeditor.exe)

Zeilen 6, 7:

Diese Zeilen können entfernt werden, wenn keine weiteren Editorzuordnungen erforderlich sind. Die Konfiguration erfolgt wie in Zeile 5. Ebenso dürfen für zusätzliche Editorzuordnungen weitere Zeilen eingefügt werden.

Zeile 9:

Alle Editorzuordnungen müssen vor dieser Zeile erfolgen. Wird das Skript aufgerufen, obwohl die Komponententyp-ID in der Editorzuordnung (noch) nicht berücksichtigt wird, so wird das Skript genau in dieser Zeile beendet. Die Standardlogik zum Öffnen des Editors wird ausgeführt.

SkriptBeforeCompare.exe aktivieren

Kopieren Sie die Applikation ins Server-Skriptverzeichnis und ins Server-Skriptverzeichnis zur automatischen Client-Aktualisierung.

SkriptBeforeCompare.ini bearbeiten

Wir empfehlen Ihnen, eine möglicherweise bereits vorhandene Datei ScriptBeforeCompare.ini aus dem Server-Skriptverzeichnis zu ergänzen. Wenn diese Datei (noch) nicht vorhanden ist, verwenden Sie bitte die Vorlage aus dem Skriptpaket.

Info

Die Anpassungen für ScriptBeforeCompare.ini sind zweimal durchzuführen, einmal für die Konfiguration im Server-Skriptverzeichnis und einmal für die Konfiguration im Client-Skriptverzeichnis. Obwohl die Konfigurationsdateien für Server und Client den gleichen Namen haben, können sie unterschiedliche Inhalte haben (bezogen auf Skript-Konfigurationen für andere Komponenten).

  1. Aktivieren Sie das CoDeSys-Editor-Skript, indem Sie in der Sektion [General] die Verbindung von der Komponententyp-ID zum Skript eintragen.
  2. Sollen mehrere unterschiedliche Komponententypen mit dem Skript gekoppelt werden, ist für jede Komponententyp-ID ein neuer Eintrag vorzunehmen.

Beispiel:

[General]
// Mapping for CoDeSys editor component types
<Component type ID>=Codesys_editor

Konkretes Beispiel:

[General]
5A527AA2D4A846208BB8648EED1146BD=Codesys_editor

Aktivierungsliste erweitern

  1. Das Ereignis BeforeCompare berücksichtigt eine Liste an Komponententyp-IDs, für die das Skript aktiviert werden soll (Aktivierungsliste).
  2. In dieser Liste sind durch die Schlüssel CTIDn alle Komponententyp-IDs aufzulisten, für die das Skript ausgeführt werden soll. Hier ergänzen Sie die Komponententyp-IDs der CoDeSys-Komponenten.
  3. Speichern Sie die Datei.
  4. Kopieren Sie die Datei in die Registerkarte Server-Skriptverzeichnis.

Beispiel:

[CTIDs]
12675=I
CTID0=<Component type ID>
CTID1=<Component type ID>

Konkretes Beispiel:

[CTIDs]
12675=I
CTID0=581E9C1B48714ED6ADEE19E5351811BB

Codesys_editor.script bearbeiten 2

  1. Öffnen Sie die Datei CoDeSys_editor.script im Texteditor.
  2. Bearbeiten Sie die Skriptapplikation ScriptBeforeCompare.
  3. Nehmen Sie ggf. die in der nachfolgenden Tabelle aufgelisteten Anpassungen vor.
  4. Speichern Sie die Datei.
  5. Kopieren Sie die Datei in die Registerkarten Server-Skriptverzeichnis für die automatische Client-Aktualisierung und Server-Skriptverzeichnis.

Skript 2

Function ScriptBeforeCompare
{
    // Assign the editors for the Codesys components
    // here (ComponenttypId <-> Codesys Editor)
    $def::var1 = $func::getifcomponenttypeid(<CoDeSys ComponentTypeId 1>,<Editor for type 1>)
    $def::var1 = $func::getifcomponenttypeid(<CoDeSys ComponentTypeId 2>,<Editor for type 2>)
    $def::var1 = $func::getifcomponenttypeid(<CoDeSys ComponentTypeId 3>,<Editor for type 3>)

    // set the editor
    $def::var2 = $vdog::rootdir\VD$A\Configuration\Compare\AgentStation.ini
    file.append $def::var2
    {
        write.ini [CoDeSys]\7220=$def::var1
    }
}

Anpassungen 2

Zeile 5:

Hier wird eine bestimmte Komponententyp-ID einem bestimmten Editor zugeordnet.
Als Bedingung wird eine Komponententyp-ID definiert. $def::var1 wird nur genau dann die Definition zum Editorpfad als Wert zugeordnet, wenn die Komponententyp-ID mit der des Jobs übereinstimmt.
Es gilt also: $def::var1 = Bedingung (KomponententypId, Editor)\ <KomponentenTypId>muss nun ersetzt werden mit der konkreten Komponententyp-Id, die mit einem bestimmten Editor verknüpft werden soll.<Editor>muss nun ersetzt werden mit dem absoluten Pfad zum Editor, der mit der Komponententyp-Id verknüpft werden soll.
Beispiel:
$def::var1 = $func::getifcomponenttypeid(5A527AA2D4A846208BB8648EED1146BD, C:\Programme\myeditor.exe)

Zeilen 6, 7:

Diese Zeilen können entfernt werden, wenn keine weiteren Editorzuordnungen erforderlich sind. Die Konfiguration erfolgt wie in Zeile 5. Ebenso dürfen für zusätzliche Editorzuordnungen weitere Zeilen eingefügt werden.

Verwandte Themen