Skip to main content

Formato de almacenamiento

Este capítulo describe el formato de almacenamiento basado en archivos. Esto incluye explicaciones sobre la codificación de texto de los archivos, la estructura de carpetas, el almacenamiento de objetos de programación y sus metadatos, así como el texto fuente en lenguajes estructurados y gráficos.

Codificación y formato de texto

Se siguen las mismas convenciones para cada archivo que se escribe. CODESYS File-Based Storage Esto permite que los proyectos sean portátiles entre sistemas operativos y crea diferencias claras en los sistemas de control de versiones.

  • Codificación: Todos los archivos de texto se escriben en UTF-8 sin el Marca de orden de bytes (BOM). Cuando se lee un archivo XML existente, se utiliza la codificación especificada. Un archivo existente Marca de orden de bytes Se tolera.

  • Fin de línea: Los archivos se escriben con el carácter de salto de línea (\n). Cuando se lee un archivo, tanto el salto de línea como el final de línea de Windows (\r\n ) son aceptados.

    Fin de línea en sistemas de control de versiones

    Configure el sistema de control de versiones de manera que los saltos de línea se conserven como final de línea para evitar diferencias innecesarias.

  • Sangría Los archivos JSON y XML se indentan con un carácter de tabulación por nivel de anidamiento.

Carpetas

Cada carpeta en el árbol del proyecto se convierte en un directorio con el mismo nombre. Una carpeta opcionalmente tiene un archivo de metadatos llamado .folder_meta.json Este archivo almacena el GUID del objeto de la carpeta y sus propiedades:

{
	"objectGuid": "1b3a0c5e-...",
	"properties": {
		"PropertyName": "PropertyValue"
	}
}

En CODESYS 3 Cada carpeta tiene un GUID de objeto. Esto está escrito en el .folder_meta.json archivo para que la carpeta pueda seguir siendo rastreada incluso después de renombrarla y moverla. properties El campo se escribe solo si la carpeta tiene propiedades. De lo contrario, se omite. En CODESYS 4, una carpeta no tiene un GUID de objeto. Una carpeta sin metadatos guardados no tiene un .folder_meta.json archivo.

Objetos de programación

Cada objeto de programación se guarda como un archivo de texto independiente. El nombre del archivo tiene la siguiente sintaxis:

<object name>.<class>.<language>

La parte de clase especifica el tipo de objeto y la parte de lenguaje especifica el lenguaje de implementación. Específicamente, la parte de lenguaje para texto estructurado es st Un ejemplo de un bloque de función en texto estructurado es: Timer.fb.st.

Tipo de objeto

Parte de la clase

Ejemplo

Programa

prg

Main.prg.st

Bloque de función

fb

Timer.fb.st

Función

fn

Add.fn.st

Método

meth

Start.meth.st

Acción

act

Reset.act.st

Transición

trans

Step1.trans.st

Propiedad de un POU

prop.st

Enabled.prop.st

Interfaz

itf

IMotor.itf

Método de interfaz

meth

Run.meth

Propiedad de interfaz

prop

Speed.prop

Estructura (DUT)

struct

Point.struct

Enumeración (DUT)

enum

Color.enum

Alias (DUT)

alias

Distance.alias

Sindicato (DUT)

union

Value.union

Lista de variables globales

gvl

Globals.gvl

Un objeto con objetos subordinados (por ejemplo, un bloque de función con métodos) se almacena como un directorio cuyo nombre termina con un circunflejo (^El objeto en sí es el archivo en este directorio. Los objetos subordinados se encuentran junto a él:

Timer.fb.st^/
    Timer.fb.st    (der Funktionsbaustein selbst)
    Start.meth.st    (eine Methode)
    Stop.meth.st    (eine Methode)

metadatos del objeto

Si un objeto contiene metadatos que no se pueden reconstruir de otra manera, el archivo comienza con un comentario de metadatos. Los ejemplos incluyen un GUID de objeto estable o propiedades de objeto. El comentario está marcado con (* METADATA … *) Los metadatos se almacenan en formato JSON.

(* METADATA
{
	"v3Meta": {
		"objectGuid": "e75fc257-..."
	}
}
*)

Si un objeto no contiene metadatos, no se escribe ningún comentario de metadatos y el archivo comienza directamente con el encabezado del objeto.

La información del proyecto (título, versión, autor, empresa, descripción y otras configuraciones) se almacena en el ProjectInfo.json archivo en el directorio raíz del proyecto.

Texto fuente de los objetos en texto estructurado

El texto estructurado se almacena como texto plano sin marcadores. La declaración siempre se escribe primero, seguida inmediatamente por la implementación.

ejemplo 1. Ejemplo

El siguiente ejemplo muestra el texto estructurado. PLC_PRG el programa en el PLC_PRG.prg.st archivo.

PROGRAM PLC_PRG
VAR
    nCounter : INT;
END_VAR
nCounter := nCounter + 1;
END_PROGRAM


Texto fuente de lenguajes gráficos

Lenguajes distintos del texto estructurado: los lenguajes gráficos, como el diagrama de escalera (LD), el diagrama de bloques de funciones (FBD), Gráfico de función continua (CFC) y Diagrama de Funciones Secuenciales (SFC) no se pueden escribir como texto estructurado. Para estos lenguajes, la declaración se almacena como texto plano. Sin embargo, la sección de implementación está delimitada por dos líneas que indican el lenguaje correspondiente.

FUNCTION_BLOCK TSSend
VAR_INPUT
    xExecute : BOOL;
END_VAR
__BEGIN_IMPLEMENTATION('CFC')
{
    ... die Implementierung im eigenen Format der Sprache ...
}
__END_IMPLEMENTATION
END_FUNCTION_BLOCK

La implementación comienza con el marcador __BEGIN_IMPLEMENTATION('<language>') que cita el idioma (por ejemplo, LD para diagrama de escalera, FBD para el diagrama de bloques de funciones, CFC para el gráfico de función continua, o SFC (para el diagrama de función secuencial). Se cerrará con el marcador __END_IMPLEMENTATION Todo lo que se encuentra entre los marcadores se almacena en el formato de texto del idioma correspondiente. Para los lenguajes gráficos integrados, este formato se utiliza como JSON, con una tabulación por nivel de anidamiento.

Los marcadores garantizan que la declaración se separe de forma fiable del contenido de la parte de implementación, independientemente de su contenido. No se necesitan ni se utilizan marcadores para el texto estructurado.

Objetos sin formato nativo

No todos los tipos de objetos tienen su propia representación de texto. Los objetos como las configuraciones de dispositivos y las configuraciones de tareas se guardan en un archivo de intercambio con la extensión xml.v3, que contiene el original CODESYS Serialización. Estos archivos siguen siendo archivos de texto y continuarán generando diferencias línea por línea en los sistemas de control de versiones. Este tipo de objetos se pueden migrar posteriormente a un formato nativo tan pronto como esté disponible.

Para obtener más información, consulte lo siguiente: Migrar objetos

Si el contenido de un objeto no se puede interpretar en absoluto, entonces el objeto permanece sin cambios, de modo que no se pierde información.