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.
- Active el script CoDeSys editor introduciendo la conexión del ID del tipo de componente al script en la sección [General].
- 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.
- Guarde el archivo.
- Copie el archivo en la pestaña Scripts del Servidor para la actualización automática del cliente.
Ejemplo:
Un ejemplo concreto:
Editar Codesys_editor.script 1¶
- Abra el
CoDeSys_editor.script
en el editor de texto. - Edite la aplicación de scripts ScriptBeforeEdit.
- Si es necesario, realice los ajustes indicados en la tabla siguiente.
- Guarde el archivo.
- 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).
- Active el script CoDeSys editor introduciendo la conexión del ID del tipo de componente al script en la sección [General].
- 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:
Ejemplo concreto:
Ampliar la lista de activación¶
- 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).
- 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.
- Guarde el archivo.
- Copie el archivo en la pestaña Directorio de scripts del servidor.
Ejemplo:
Un ejemplo concreto:
Editar Codesys_editor.script 2¶
- Abra el
CoDeSys_editor.script
en el editor de texto. - Edite la aplicación de scripts ScriptBeforeCompare.
- Si es necesario, realice los ajustes indicados en la tabla siguiente.
- Guarde el archivo.
- 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.