En esta entrada repasare los tipos de datos en Codesys y el equivalente en vb.net.

Resumen de tipos de datos estándar.

Tipo de dato Codesys vb.net Limites Uso memoria
BOOL BOOL Boolean TRUE ò FALSE 1 bit
BYTE BYTE Byte 0 a 255 8 Bit
WORD WORD UShort 0 a 65535 16 Bit
DWORD UInteger 0 a 4294967295 32 Bit
Simple integer SINT Sbyte -128 a 127 8 Bit
Unsigned Simple Integer USINT Byte 0 a 255 8 Bit
Integer INT Short -32768 a 32767 16 Bit
Unsigned integer UINT UShort 0 a 65535 16 Bit
Double integer DINT Integer -2147483648 a 2147483647 32 Bit
UDINT UInteger 0 a 4294967295 32 Bit
REAL Single* -3.402823 E38 a 3.402823 E38 32 Bit
LREAL Double* -1.79769313486231E308 a 1.79769313486232E308 64 Bit
Cadena de caracteres STRING String* Nota 1
TIME Date* T#0ms a T#71582m47s295ms 32 Bit
TIME_OF_DAY Date* TOD#00:00 a TOD#1193:02:47.295 32 Bit
Fecha DATE Date* D#1970-01-01 D#2106-02-06 32 Bit
Fecha y hora DATE_AND_TIME Date* DT#1970-01-01-00:00 a DT#2106-02-06-06:28:15 32 Bit

*Estos tipos no tienen una equivalencia exacta.

NOTA 1: El tamaño por defecto es 80, para otro numero de caracteres se debe especificar en la declaración (str:STRING(35):=’Esto es una declaración String’;). Uso de memoria [BYTE] = Tamaño + 1 Byte para carácter nulo de terminación.

Todos son bit.

Entiendo que en un principio esto puede ser un poco confuso. Para mi la clave está en pensar que todo son bit y lo único que cambia es la forma de interpretar estos bit. Para muestra un botón. En la siguiente figura puedes ver tres tipos diferentes de variables (INT, UINT, TIME) direccionadas a la misma área de memoria y como se visualizan en función del tipo. También he declarado 16 variables del tipo BOOL y los he asignados a cada bit de VarINT.

No todos son bit.

TwinCat, cuando corre en PC guarda los datos boolean en Byte. Si no utilizamos las variables direccionadas (AT %MX) no nos importara pero hay que tenerlo en cuenta cuando se direccionan.

Variables STRING.

Las variables string almacenan en BYTE el código ascii equivalente al carácter en cuestión. En la siguiente imagen puedes ver dos variables, la variable VarVer es un ARRAY (Matriz o vector) de 11 elementos (0 a 10) de tipo BYTE. La variable VarStr es una variable string(10), ambas están direccionadas en el mismo área de memoria, por lo tanto lo que escribimos en una, lo podemos ver en la otra. Como puedes comprobar en la tabla del código ascii, cada BYTE almacena el código ascii equivalente. También podréis ver que el ultimo BYTE se reserva para el caracter NUL(0).

Código ASCII.

Los 32 primeros códigos pertenecen al grupo de los no imprimibles y son utilizados para enviar códigos como retorno de carro, fin de mensaje en protocolos de comunicación, etc.

Tipos de datos de tiempo.

Creo que merecen un post exclusivo que le dedicaré en breve.