Saltar a contenido

Ejemplo de scripting: integración del editor en los componentes CoDeSys

Esta solución de script permite la optimización cuando se trabaja con diferentes tipos de componentes que se basan igualmente en CoDeSys pero que requieren diferentes entornos de planificación de proyectos.

Archivos necesarios para esta función de script

Nombre de archivo Descripción Funcionalidad
ScriptBeforeEdit.exe Se proporciona en el paquete de scripts En función del ID del tipo de componente, enlaza el archivo de proyecto de forma configurable con un editor
ScriptBeforeEdit.ini Puede editarse con un editor de texto Define el script BeforeEdit para un ID de tipo de componente específico
ScriptBeforeCompare.exe Se proporciona en el paquete de scripts Configura el proceso de comparación para el editor en función del ID del tipo de componente
ScriptBeforeCompare.ini Puede editarse con un editor de texto Define el script BeforeCompare para un ID de tipo de componente específico
Codesys_editor.script Puede editarse con un editor de texto Script procesado por el intérprete de scripts

Las soluciones de script pueden utilizarse independientemente unas de otras.

Requisitos de la solución de script

Los respectivos editores CoDeSys deben ser accesibles localmente bajo una ruta uniforme, es decir, para varios equipos esta ruta de acceso local debe ser la misma.

Configurar el script

Activar ScriptBeforeEdit.exe

Copie la aplicación en la pestaña Directorio de scripts del servidor para la actualización automática del cliente.

Editar ScriptBeforeEdit.ini

Le recomendamos que añada cualquier archivo ScriptBeforeCompare.ini existente del directorio Directorio de scripts del servidor. Si este archivo (aún) no existe, utilice la plantilla del paquete de scripts.

  1. Active el script CoDeSys editor introduciendo la conexión del ID del tipo de componente al script en la sección [General].
  2. Si se van a vincular varios tipos de componentes diferentes al script, se debe hacer una nueva entrada para cada ID de tipo de componente.
  3. Guarde el archivo.
  4. Copie el archivo en la pestaña Scripts del Servidor para la actualización automática del cliente.

Ejemplo:

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

Un ejemplo concreto:

[General]
5A527AA2D4A846208BB8648EED1146BD=Codesys_editor

Editar Codesys_editor.script 1

  1. Abra el CoDeSys_editor.script en el editor de texto.
  2. Edite la aplicación de scripts ScriptBeforeEdit.
  3. Si es necesario, realice los ajustes indicados en la tabla siguiente.
  4. Guarde el archivo.
  5. Copie el archivo en la pestaña Scripts del Servidor para la actualización automática del cliente.

Script

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
}

Personalizaciones

Línea 5:

Aquí se asigna un ID del tipo de componente a un editor específico.

A $def::var1 sólo se le asigna como valor la definición de la ruta del editor si el ID del tipo de componente coincide con el de la tarea.
Por lo tanto, se aplica lo siguiente: $def::var1 = If component type ID then use editor.
La sintaxis de script para esto es: $def::var1 = $func::getifcomponenttypeid(<ID de tipo de componente>,<Editor>)
<ID de tipo de componente> debe sustituirse ahora por el identificador de tipo de componente específico que debe vincularse a un editor específico.
<Editor> debe sustituirse ahora por la ruta absoluta al editor que debe vincularse al identificador de tipo de componente.
Ejemplo:$def::var1 = $func::getifcomponenttypeid(5A527AA2D4A846208BB8648EED1146BD, C:\Archivos de programa\myeditor.exe)

Líneas 6, 7:

Estas líneas pueden eliminarse si no se necesitan más asignaciones de editor. La configuración se lleva a cabo como en la línea 5, y también se pueden insertar más líneas para asignaciones de editor adicionales.

Línea 9:

Todas las asignaciones del editor deben realizarse antes de esta línea. Si se llama al script aunque (todavía) no se haya tenido en cuenta el ID del tipo de componente en la asignación del editor, el script finaliza en esta línea. Se ejecuta la lógica estándar para abrir el editor.

Activar ScriptBeforeCompare.exe

Copie la aplicación en el Directorio de scripts del servidor y en el Directorio de scripts del servidor para la actualización automática del cliente.

Editar ScriptBeforeCompare.ini

Le recomendamos que añada cualquier archivo ScriptBeforeCompare.ini existente del Directorio de scripts del servidor. Si este archivo (aún) no existe, utilice la plantilla del paquete de scripts.

Info

Los ajustes para ScriptBeforeCompare.ini deben hacerse dos veces, una para la configuración en el Directorio de scripts del servidor para la actualización automática del cliente y otra para la configuración en el directorio de scripts del cliente. Aunque los archivos de configuración para servidor y cliente tienen el mismo nombre, pueden tener contenidos diferentes (relacionados con configuraciones de script para otros componentes).

  1. Active el script CoDeSys editor introduciendo la conexión del ID del tipo de componente al script en la sección [General].
  2. Si se van a vincular varios tipos de componentes diferentes al script, se debe hacer una nueva entrada para cada ID de tipo de componente.

Ejemplo:

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

Ejemplo concreto:

[General]
5A527AA2D4A846208BB8648EED1146BD=Codesys_editor

Ampliar la lista de activación

  1. El evento BeforeCompare tiene en cuenta una lista de IDs de tipos de componentes para los que se va a activar el script (lista de activación).
  2. En esta lista, utilice las claves CTIDn para enumerar todos los ID de tipo de componente para los que se va a ejecutar el script. Añada aquí los ID de tipo de componente de los componentes CoDeSys.
  3. Guarde el archivo.
  4. Copie el archivo en la pestaña Directorio de scripts del servidor.

Ejemplo:

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

Un ejemplo concreto:

[CTIDs]
12675=I
CTID0=581E9C1B48714ED6ADEE19E5351811BB

Editar Codesys_editor.script 2

  1. Abra el CoDeSys_editor.script en el editor de texto.
  2. Edite la aplicación de scripts ScriptBeforeCompare.
  3. Si es necesario, realice los ajustes indicados en la tabla siguiente.
  4. Guarde el archivo.
  5. Copie el archivo en el Directorio de scripts del servidor para la actualización automática del cliente y en el Directorio de scripts del servidor.

Script 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
    }
}

Personalizaciones 2

Línea 5:

Se asigna un ID de tipo de componente específico a un editor específico.
A component type ID is defined as a condition. $def::var1 sólo se le asigna como valor a la definición de la ruta del editor si el ID del tipo de componente coincide con el de la tarea.
Por lo tanto, se aplica lo siguiente: $def::var1 = Condition (ID de tipo de componente, editor).
<ID de tipo de componente> debe sustituirse ahora por el ID de tipo de componente específico que debe vincularse a un editor específico. <Editor> debe sustituirse ahora por la ruta absoluta al editor que debe vincularse al ID de tipo de componente.
Ejemplo:
$def::var1 = $func::getifcomponenttypeid(5A527AA2D4A846208BB8648EED1146BD, C:\Archivos de programa\myeditor.exe)

Líneas 6, 7:

Estas líneas pueden eliminarse si no se necesitan más asignaciones de editor. La configuración se lleva a cabo como en la línea 5, y también se pueden insertar más líneas para asignaciones de editor adicionales.

Contenido relacionado