IEC 61131-3

**IEC 61131-3** é a terceira parte (de 10) da norma estándar internacional IEC 61131 para controladores lóxicos programables, primeiramente publicada en decembro de 1993 pola Comisión Electrotécnica Internacional. A actual (e terceira) edición foi publicada en febreiro de 2013).

Parte 3 de IEC 61131 ocúpase da arquitectura básica do software e das linguaxes de programación do programa de control no PLC. Define dous estándares gráficos e dous estándares de programación textual:

*Ladder diagramas (LD), grafica
*Funcción diagrama de bloques (FBD), grafica
*Texto Estruturado (ST), textual
*Lista de Instrucións (IL), textual (desaprobado na terceira edición desta norma)
*Función secuencial de caracteres (SFC), ten elementos para organizar programas para o tratamento de control secuencial e paralelo.

## Tipos de datos 
* Tipo de dato elemental
** Bit Strings – grupos de valores on/off
*** BYTE  –  8 bit (1 byte)
*** WORD  – 16 bit (2 byte)
*** DWORD – 32 bit (4 byte)
*** LWORD – 64 bit (8 byte)
** INTEGER – números enteiros (Considerando byte de 8 bits)
*** SINT  – enteiro curto asinado (1 byte)
*** INT – enteiro asinado (2 byte)
*** DINT – enteiro dobre asinado (4 byte)
*** LINT – enteiro longo asinado (8 byte)
*** USINT  – enteiro curto sen asinar (1 byte)
*** UINT – enteiro sen asinar (2 byte)
*** UDINT – enteiro dobre sen asinar (4 byte)
*** ULINT – enteiro longo sen asinar (8 byte)
** REAL – punto flotante IEC 60559 (similar a IEEE 754-2008)
*** REAL  – (4 byte)
*** LREAL – (8 byte)
**Duración
*** TIME  – (Tamaño non especificado)
*** LTIME – (8 byte)
** Data
*** DATE – data de calendario (Tamaño non especificado)
*** LDATE – data de calendario (Tamaño non especificado)
** Hora do día
*** TIME_OF_DAY / TOD – hora do reloxio (Tamaño non especificado)
*** LTIME_OF_DAY / LTOD – hora de reloxio (8 byte)
** Data e hora do día
*** DATE_AND_TIME / DT  – hora e data (Tamaño non especificado)
*** LDATE_AND_TIME / LDT  – hora e data (8 byte)
** Carácter / Carácter restrinxido
*** CHAR – carácter sinxelo-byte (1 byte)
*** WCHAR – carácter dobre-byte (2 byte)
*** STRING – Variable-lonxitude carácter restrinxido sinxelo-byte
*** WSTRING – Variable-lonxitude dobre-byte carácter sinxelo

*Tipos Xenericos de Datos – Só dispoñible para input / output/ en-out variables de sistem-definidos *Program Organisation Units* (POUs, ver abaixo)
** ANY
*** ANY_DERIVED
*** ANY_ELEMENTARY
**** ANY_MAGNITUDE
***** ANY_NUM
****** ANY_REAL: LREAL, REAL
****** ANY_INT
******* ANY_UNSIGNED: ULINT, UDINT, UINT, USINT
******* ANY_SIGNED: LINT, DINT, INT, SINT
***** ANY_DURATION: TIME, LTIME
**** ANY_BIT: LWORD, DWORD, WORD, BYTE, BOOL
**** ANY_CHARS
***** ANY_STRING: STRING, WSTRING
***** ANY_CHAR: CHAR, WCHAR
**** ANY_DATE: DATE_AND_TIME (DT), DATE_AND_TIME(LDT), DATE, TIME_OF_DAY (TOD), LTIME_OF_DAY(LTOD)
* Tipos de datos definidos polo usuario
** Enumerados tipo datos
** Enumerados tipo datos con nome de valor
** Tipo de datos del subrango - pon límites ao valor i.e., INT(4 .. 20) para corrente
** Tipo de datos Matriz - múltiples valores almacenados na mesma variable de arquivo.
** Tipo de datos estruturados - Composición de varias variables e tipos.
** Tipo de datos directamente derivados - tipo derivado dun dos tipos anteriores para dar un novo nome e valor inicial como tipo.
** Referencias – unha especie de punteiro fortemente mecanografiado. Se prohibe a operación aritmética do valor deste tipo.

## Variables 
Atributos das Variables: RETAIN, CONSTANT, AT
* Global
* Direct (local)
* I/O Mapping – Input, Output, I/O
* External
* Temporary

## Ligazóns externas 
* PLCopen
* IEC 61131-3:2013 Programmable controllers - Part 3: Programming languages

## Notas