Especificaciones del formato de los ficheros cyloop

Este documento descrito la estructura de los ficheros utilizados por el software libre Cyloop desarrollado por Bernard Chardonneau (Francia) para almacenar las informaciones que este software permite tratar.

Los ficheros cuyo formato es descrito en este documento son llamados "ficheros cyloop".

La reproducción de este texto al idéntico, su traducción en otras lenguas y su difusión son libre.

En caso de diferencias de significado entre 2 versiones del texto escrito en lenguas diferentes, es la versión francesa es la que constituye la referencia.

Sufijo de los ficheros y formatos de datos utilizados

Los ficheros cyloop son del fichero cuyo nombre se termina por el sufijo .cyl o .CYL .
Se trata de ficheros binairios. Las informaciones que contienen son grabadas en los formatos siguientes :
Es posible de almacenar los valores numéricos de los octetos de peso fuerte a los octetos de pesos flojo (big endian) o de los octetos de pesos flojo a los octetos de peso fuerte (little endian).
No obstante, el orden de los octetos en los valores numéricos es indicado en el fichero cyloop.

Si los valores numéricos son almacenado del octeto de peso flojo al octeto de peso fuerte como es el caso sobre los PC (microprocesador Intel o compatible), el nombre de los ficheros cyloop se termina por el sufijo .cyl y los 3 premiers octetos del fichero cyloop son cyl (en cartas minúsculas).

Si los valores numéricos son almacenado del octeto de peso fuerte al octeto de peso flojo, el nombre de los ficheros cyloop se termina por el sufijo .CYL y los 3 premiers octetos del fichero cyloop son CYL (en cartas mayúsculas).

Finalmente, si el sistema de explotación utilizado no permite de escoger entre cartas minúsculas o de las cartas mayúsculas para los nombres de ficheros, es la firma del fichero cyloop (constituida por sus 3 premiers octetos) que permite definir el orden de los octetos en los valores numéricos.

Estructura de un fichero cyloop

Los ficheros cyloop tienen la estructura general siguiente :


Hay un caso particular para los ficheros cyloop que no almacenan que una sola variable sin nombre.
En este caso, los ficheros cyloop tienen la estructura siguiente :


El encabezamiento del fichero cyloop

El encabezamiento de un fichero cyloop es constituida de 16 octetos y contiene en el orden los campos siguientes :

TipoNombreDescripción
3 octetossignature Permite verificar que el fichero es bien un fichero cyloop al buen formato.
Contiene en el orden :
  • las caracteres cyl si los valores numéricos son almacenado del octeto de peso flojo al octeto de peso fuerte (es el caso sobre los PC),
  • las caracteres CYL si los valores numéricos son almacenado del octeto de peso fuerte al octeto de peso flojo.
  • octetnb_var Número de variables almacenado en el fichero cyloop.
  • Si nb_var = 0, el fichero cyloop almacena una sola variable que no posee de nombre.
  • Si nb_var > 0 (valor entre 1 y 255), el fichero cyloop almacena nb_var variables. Cada una puede ser identificada por su nombre o por un número correspondiente en su posición en la lista de las variables descritas al párrafo siguiente.
  • octetcaract_gen Campo de bits que define los característicos generales del fichero cyloop.
    Cada indicación es almacenado sobre un bit.
  • bit 0
  • cycle_decl Ciclo activado.
  • Si cycle_decl = 0, cada nuevo ciclo comienza inmediatamente al finalizar el precedente (funcionamiento por defecto de Cyloop).
  • Si cycle_decl = 1, es necesario de lanzar la manda cyldecl para arrancar un nuevo ciclo.
  • bit 1
  • temps_utc Comienzo de ciclos calculados en tiempo universal (UTC o GMT).
  • Si temps_utc = 0, los comienzos de ciclo son calculados por informe puntualmente local (que puede aplazarse si la hora de verano es aplicada una parte del año).
  • Si temps_utc = 1, los comienzos de ciclo son calculados por informe puntualmente en tiempo universal (UTC o GMT).
  • bit 2
  • cycle_ireg Utilización ciclo de duración irregular basada en el calendario.
  • Si cycle_ireg = 0, todos los ciclos tienen la misma duración que es fijada por el valor de duree_cycle.
  • Si cycle_ireg = 1, se utiliza un ciclo de duración irregular, mensual o anual.
  • bit 3
  • cycle_annuel Elección entre un ciclo mensual o anual.
    Este bit no es significativo que si el bit cycle_ireg es a 1
  • Si cycle_annuel = 0, el fichero cyloop funciona según un ciclo mensual que comienza en el primer día del mes.
  • Si cycle_annuel = 1, el fichero cyloop funciona según un ciclo anual que comienza en el primer día del año.
  • bits 4 a 7 no usados
  • Tienen que ser dejados a 0.
    octetetat_cyloop Bits de estado del fichero cyloop.
  • bit 0
  • heure_ete Este bit almacena si se estaba puntualmente de verano (bit a 1) o de invierno durante la última actualizado de los datos.
    No es significativo que si el bit temps_utc = 0 (hora local).
  • bits 1 a 7 no usados
  • ienen que ser dejados a 0.
    uint16nb_don_cycle Número de datos por ciclo de medida.
    Es el número de trozos de duración idéntica (eventualmente a un segundo cerca de) en el cual cada ciclo es recortado.
    uint32deb_cycle Instante de comienzo del ciclo corriente.
    Es el valor vuelto por la función time() en el momento del comienzo de este ciclo (número de segundos fluidos desde el 1.o de enero de 1970 en 0 H UTC).
    uint32duree_cycle Durado en segundos del ciclo corriente.

    La lista de las variables

    Esta lista no existe que si el valor nb_var del encabezamiento del fichero cyloop no es a 0. En este caso, la lista comporta nb_var elementos que tienen la estructura siguiente :

    El encabezamiento de una variable

    La encabezamiento de una variable es constituida de 6 o 8 octetos y contiene en el orden los campos siguientes :

    TipoNombreDescripción
    uint16der_enreg Número del último dato actualizada en el ciclo actual.
  • Si der_enreg = 0, se no ha todavía actualizado el dato en el ciclo actual.
  • En el caso contrario, der_enreg es comprendido entre 1 y nb_don_cycle.
  • octettypedon Campo de bits que define los característicos de la variable.
    Cada indicación es almacenado sobre un bit
  • bit 0
  • cmoy_sep Coeficiente coef_moy diferente para cada instante del ciclo.
  • Por defecto, (cmoy_sep = 0) el cálculo del valor mediano para cada dato de un ciclo es hecho por informe al valor del campo coef_moy definido al finalizar esta encabezamiento. El campo coef_moy contiene un valor en relación con el número de ciclos efectuados
  • Si cmoy_sep = 1, a cada una de los datos que corresponden en un instante del ciclo es asociada un valor coef_moy diferente.
  • bit 1
  • cpt_cycle_vide Apresamiento en cuenta de los ciclos vacíos en los cálculos de ponderación.
    Este bit no es significativo que si el valor del campo ponderation es diferente de 0.
  • Por defecto (cpt_cycle_vide = 0), si uno o varios ciclos se fluyen sin ninguna grabación de datos, son ignorados durante el próximo cálculo de ponderación de los datos ya grabados.
  • Si este bit es a 1, el cálculo de ponderación es realizado manteniendo cuenta de los ciclos vacíos.
  • bit 2
  • cumul_donnees Autorizar varias puestas en días en todo momento del ciclo.
  • Por defecto, durante un ciclo, cada una de los datos que corresponden en un instante del ciclo no puede ser actualizada que una vez.
  • Si este bit es a 1, un mismo dato puede ser actualizada varias veces de continuación.
  • bit 3
  • compteur Elección entre una variable que contiene valores o un contador de pasaje.
  • Por defecto (compteur = 0) es necesario de introducir un valor para actualizar el dato que corresponde en un instante del ciclo.
  • Si compteur = 1, la variable es un contador de pasajes que es incrementado automáticamente.
  • bit 4
  • donnees_32bits Formato de los datos para una variable contadora.
    Este bit no es significativo que si el bit compteur es a 1.
  • Por defecto (donnees_32bits = 0), los datos del contador son almacenado sobre 2 octetos (uint16).
  • Si donnees_32bits = 1, los datos del contador son almacenado sobre 4 octetos (uint32).
  • bit 5
  • val_float Formato de los datos para una variable clásica.
    Este bit no es significativo que si el bit compteur es a 0.
  • Por defecto (val_float = 0), los datos de la variable son entonces valores enteros sobre 4 octetos de tipo int32.
  • Si val_float = 1, los datos de la variable son almacenado en valores de tipo float.
  • bit 6
  • mem_min_max Memorización de los valores mínimo y máximo de los datos introducidos en todo momento del ciclo.
    Este bit no es significativo que si el bit compteur es a 0.
  • Por defecto (mem_min_max = 0), se almacena sólo una ordena eventualmente ponderada de los datos para cada instante del ciclo, así como una indicación para calcular su valor mediano.
  • Si mem_min_max = 1, los valores mínimo y máximo de los datos introducidos para cada uno de los instantes del ciclo son igualmente almacenado.
  • bit 7
  • cpt_toute_don Este bit no es significativo que si cmoy_sep = 1 y cumul_donnees = 1.
  • Si además, cpt_toute_don = 1, el valor coef_moy asociada en todo momento del ciclo es incrementada durante cada actualizada del dato correspondiente.
  • Si cpt_toute_don = 0, el incrementación no tiene lugar que durante la primera actualizada del dato para este instante del ciclo.
  • octetponderation Coeficiente de ponderación para los valores de los ciclos precedentes.
  • Si ponderation = 0, ninguna operación no es realizada sobre los datos ya almacenado durante un cambio de ciclo. Tiene cada nuevo ciclo, los nuevos datos se añaden a aquellas de los ciclos precedentes.
  • En el caso contrario (ponderation comprendido entre 1 y 255), los datos salidos de los ciclos precedentes son multiplicadas por (ponderation / 256). Es asimismo para el o los coeficiente(s) coef_moy almacenado.
    Así, los datos de los últimos ciclos toman más de importancia en el cálculo del valor mediano que aquellas de los ciclos más antiguos.

  • Si el bit cpt_cycle_vide del campo typedon es a 1 y que varios ciclos se han fluido sin actualizada de los datos, el cálculo de ponderación es efectuado para cada uno de estos ciclos.
  • uint16extention Campo disponible para una eventual utilización ulterior. A 0 mientras tanto.
    uint16coef_moy (opcional) Coeficiente que permite calcular el valor mediano de los datos almacenado para cada instante del ciclo.
  • Si el bit cmoy_sep del campo typedon es a 0, este coeficiente contiene un valor actualizado al principio de cada ciclo que permite el cálculo de los valores medianos de los datos para cada uno de los instantes del ciclo.
  • Si el bit cmoy_sep del campo typedon es a 1, este coeficiente no existe en el encabezamiento de la variable cyloop, pero un coeficiente asimismo naturaleza es almacenado separadamente en el fichero cyloop para cada uno de los instantes del ciclo.

  • Estructura de los datos de una variable

    Después de la encabezamiento de una variable, los datos asociados en esta variable son implantadas en la continuación.

    Se encuentra primeramente el conjunto de los datos relativos al primer instante del ciclo, después aquellas que implican el instante siguiente, y así sucesivamente.

    En funciones del valor de los bits cmoy_sep, compteur, donnees_32bits, val_float y mem_min_max del campo typedon que figura en el encabezamiento de la variable, puede tener una o varios valores almacenado para cada instante del ciclo, y varios formatos de almacenaje para cada una de estos valores.

    Un grupo de valores que corresponden en un instante del ciclo comporta en el orden :
    Al total, este grupo valioso aparece nb_don_cycle fois (valor definido en el encabezamiento del fichero) para almacenar el ciclo completo.

    Estructura de los datos para el variable contador

    Estructura de los datos para las variables "valor"