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.
Hola!
Que hay de las estructuras compuestas por varios tipos de dato?
He visto que en algún ejemplo la has utilizado pero podrías explicarlo un poco más detenidamente!
Gracias por compartir con nosotros tus conocimientos!
Precisamente es el motivo de esta entrada y me explico. Cuando utilice las estructuras en un post anterior pensé que seria bueno repasar los tipos de datos. Este es el primer post al respecto. Quiero repasar con mas detalle los tipos de tiempo, los tipos de datos definidos por el usuario (que son a los que te refieres) y hacer algun ejemplo.
Dentro de los tipos definidos están: Arrays, Pointers, Enumerating Data Types, Structures, Alias Data Types y Subrange Data Types. Y los equivalentes en vb.net.
Otro aspecto que me parece interesante es comparar las funciones, los funtion block y los programas con los “equivalentes” en vb.net. En este caso uso las comillas puesto que la programación en vb.net vas un poco mas allá.