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.
- Aktivieren Sie das CoDeSys-Editor-Skript, indem Sie in der Sektion [General] die Verbindung von der Komponententyp-ID zum Skript eintragen.
- Sollen mehrere unterschiedliche Komponententypen mit dem Skript gekoppelt werden, ist für jede Komponententyp-ID ein neuer Eintrag vorzunehmen.
- Speichern Sie die Datei.
- Kopieren Sie die Datei in die Registerkarte Server-Skriptverzeichnis zur automatischen Client-Aktualisierung.
Beispiel:
Konkretes Beispiel:
Codesys_editor.script bearbeiten 1¶
- Öffnen Sie die Datei
CoDeSys_editor.script
im Texteditor. - Bearbeiten Sie die Skriptapplikation ScriptBeforeEdit.
- Nehmen Sie ggf. die in der nachfolgenden Tabelle aufgelisteten Anpassungen vor.
- Speichern Sie die Datei.
- 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).
- Aktivieren Sie das CoDeSys-Editor-Skript, indem Sie in der Sektion [General] die Verbindung von der Komponententyp-ID zum Skript eintragen.
- Sollen mehrere unterschiedliche Komponententypen mit dem Skript gekoppelt werden, ist für jede Komponententyp-ID ein neuer Eintrag vorzunehmen.
Beispiel:
Konkretes Beispiel:
Aktivierungsliste erweitern¶
- Das Ereignis BeforeCompare berücksichtigt eine Liste an Komponententyp-IDs, für die das Skript aktiviert werden soll (Aktivierungsliste).
- 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.
- Speichern Sie die Datei.
- Kopieren Sie die Datei in die Registerkarte Server-Skriptverzeichnis.
Beispiel:
Konkretes Beispiel:
Codesys_editor.script bearbeiten 2¶
- Öffnen Sie die Datei
CoDeSys_editor.script
im Texteditor. - Bearbeiten Sie die Skriptapplikation ScriptBeforeCompare.
- Nehmen Sie ggf. die in der nachfolgenden Tabelle aufgelisteten Anpassungen vor.
- Speichern Sie die Datei.
- 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.