Los bloques de memoria o datablocks es una potente configuración del e-connect que permite realizar consultas de datos a dispositivos conectados como PLC's, realizar cálculos complejos, escribir datos a los dispositivos según condiciones específicas o enviar información al servidor central en caso que sea necesario.
En el siguiente apartado vamos a detallar su uso y se verán algunos ejemplos comunes de su utilización en producción real.
Datablock
Definición de un bloque de memoria disponible para el sistema. El bloque de memoria puede ser interno para la realización de cálculos o puede ser la definición de un bloque de memoria de un PLC externo. En cada caso, debemos especificar el dispositivo asociado al bloque de memoria (ver Dispositivos).
La configuración es la siguiente:
- id: identificador único del bloque de memoria
- db: identificador del bloque de memoria en caso de conexión con PLC (DB1, DM1000, etc.)
- name: nombre asociado al bloque de memoria y utilizado en las expresiones
- device: identificador del dispositivo asociado al bloque de memoria
- permissions: permisos asociados al bloque de memoria. Los valores posibles son R (lectura), W (escritura). Por defecto son de lectura
- sendcondition: expresión utilizada para enviar los datos del bloque de memoria a la plataforma central (cloud) (Expression)
Cada bloque de memoria, tiene la definición de los datos disponibles:
- type: tipo de datos (BOOL, BYTE, WORD, DWORD, INT, DINT, REAL, STRING, ARRAY, INTERNAL_VARIABLE, DATE_TIME (sólo Siemens), DOUBLE, DATE_TIME_UTC)
- name: nombre vinculado y identificador del dato. Utilizado para en las expresiones o paneles de control (cloud)
- size: total de elementos en caso del tipo ARRAY o STRING
- bitendian: LSB o MSB (por defecto MSB)
- compress: compresión de datos en caso de tipo ARRAY o STRING
- expression: expresión a ejecutar para calcular el valor del dato (opcional)
- millis: milisegundos para la ejecución de la expresión. Si no se define el valor, la expresión se ejecuta de forma contínua
- index: solo para dispositivos OPCUADevice. Nos indica el indice de datos del nodo OPCUA
Cada dato puede tener una definición de bits asociado. La definición es la siguiente:
- name: nombre asociado al bit y necesario para expresiones o paneles de control (cloud)
- position: posición dentro del valor de datos (índice del bit)
- forced: valor forzado (true o false)
A continuación tenemos una configuración básica de un bloque de memoria:
<datablock id="1000" name="DB2" device="102" permissions="R" sendcondition="1=1"> <data type="WORD" name="D1" bitendian="MSB"></data> </datablock>
Bloques predefinidos
Existen una série de bloques de memoria predefinidos para el módulo de producción disponible para el sistema. Estos bloques son los siguientes:
- PRODUCTION
- PRODUCTION_MANAGEMENT
Producción
Bloque de definición de la configuración de los datos de producción:
<datablock id="DB1" name="PRODUCTION" device="101" permissions="R" sendcondition="PRODUCTION.IS_MODIFIED=1"> <data type="BYTE" name="PRODUCTION_STATUS"> <bit name="CYCLE" position="0"></bit> <bit name="EMERG" position="1"></bit> <bit name="STATE_PIECE" position="2"></bit> <bit name="SEND" position="3"></bit> </data> <data type="DWORD" name="PRODUCTION_COUNT"> <data type="DWORD" name="STOP_TYPE"></data> </datablock>
- PRODUCTION_STATUS
- CYCLE: bit que nos indica si la máquina está produciendo
- EMERG: bit que nos indica si la máquina está en parada de emergencia (0=> Emergencia activa, 1=> Emergencia no activa)
- STATE_PIECE (opcional): nos indica si la pieza es conforme o no. Sólo si la máquina dispone de esta información
- SEND (opcional): bit que nos indica que se puede enviar la información al cloud. Si no se indica se envía de forma automática al finalizar el ciclo
- PRODUCTION_COUNT (opcional): contador de producción durante el ciclo
- STOP_TYPE (opcional): nos indica el tipo de parada antes de iniciar el ciclo
Gestión de producción
Bloque de definición del control del estado de la producción de la máquina:
<datablock id="DB2" name="PRODUCTION_MANAGEMENT" device="005" permissions="R" sendcondition="PRODUCTION_MANAGEMENT.IS_MODIFIED=1"> <data type="WORD" name="PRODUCTION_MANAGEMENT_STATUS" bitendian="LSB"> <bit name="START_END_PRODUCTION" position="0"></bit> </data> <data type="DATE_TIME" name="PRODUCTION_DATE"></data> <data type="DATE_TIME" name="PRODUCTION_END_DATE"></data> <data type="STRING" compress="true" name="REFERENCE" size="18"></data> <data type="STRING" compress="true" name="WORKER_CODE" size="18"></data> <data type="STRING" compress="true" name="OF" size="18"></data> </datablock>