IEC61131-3 Tipos de Dados
- Paulo Ricardo Siqueira Soares
- Sep 18, 2023
- 4 min read
A IEC61131-3 além de definir as linguagens, também definem os tipos de dados que são utilizados dentro dos CLP's.
Temos assim aqui os tipos de dados primários:
Esses tipos de dados são os mais primários que utilizamos para expressar o formato da informação que será utilizada dentro do software.
Grupo de bits
BOOL - 1 bit(0,1)
BYTE - 8 bits (1 byte)
WORD - 16 bits (2 Bytes)
DWORD - 32 bits (4 bytes)
LWORD - 64 bits (8 bytes)
Inteiros - (utilizando bytes - 8 bits para definir o tamanho)
SINT - Signed Short Integer / Inteiro curto com sinal (1 byte)
INT - Signed Integer / Inteiro com Sinal (2 bytes)
DINT - Signed Double Integer / Duplo Inteiro com Sinal (4 Bytes)
LINT - Signed Long Integer / Inteiro longo com Sinal (8 Bytes)
USINT - Unsigned Short Integer / Inteiro curto sem Sinal (1 Byte)
UINT - Unsigned Integer / Inteiro sem Sinal (2 Byte)
UDINT - Unsigned Double Integer / Inteiro sem Sinal (4 Byte)
ULINT- Unsigned Long Integer / Inteiro longo sem Sinal (8 Bytes)
Reais
REAL – (4 byte)
LREAL – Real Longo - (8 byte)
Duration (Duração)
Os tipos de duração, procuram padronizar a forma como os fabricantes tratam e apresentam a duração do tempo dentro dos CLPs.
TIME – (implementer specific) - Seu tamanho é especificado por quem implementa (o fabricante do equipamento) - a forma literal é T#5m90s15ms.
LTIME - (8 bytes) - A forma literal deve se estender até nano segundos! - T#5m90s15ms542us15ns
Date - Data, tipos específicos para lidar com datas
DATE – calendar date (implementer specific) - Seu tamanho é especificado por quem implementa (o fabricante do equipamento).
LDATE – calendar date (8 byte, estendida em nano segundos a partir de 1970-01-01)
Time of day - hora do dia
TIME_OF_DAY / TOD –Hora do Relógio - Seu tamanho é especificado por quem implementa (o fabricante do equipamento);
LTIME_OF_DAY / LTOD – Hora do Relógio estendida até nano segundos (8 byte)
Date and time of Day - Data e Hora
DATE_AND_TIME / DT – Data e Hora - Seu tamanho é especificado por quem implementa (o fabricante do equipamento);
LDATE_AND_TIME / LDT – Data e Hora - (8 byte, estendida em nano segundos a partir de 1970-01-01)
Character / Character string - Caracteres e Strings
CHAR – Caracter de byte Simples - (1 byte, caracteres limitados de 0 to 255 da ISO/IEC 10646 - Universal Coded Char Set - UCS)
WCHAR – Caracter de byte Duplo (2 bytes, caracteres limitados de 0 to 65535 da ISO/IEC 10646 - Universal Coded Char Set - UCS)
STRING – Formada por caracteres de byte simples. os literais são especificados em um aspas simples, 'Olha só a minha String'.
WSTRING – Formada por caracteres de duplo byte. os literais são especificados em um aspas duplas, "Olha só a minha String".
Tipo de Dados Genéricos
A norma também descreve os tipos de dados genéricos e seus escopos, mas basicamente são permitidas para entradas, saídas, entrada-saida dos programas, rotinas e funções.
Os tipos genéricos são chamados de ANY, e aqui segue a sua organização hierárquica:
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)
Quer uma tabela com os valores, bom a Wikipédia tem um artigo sobre a norma bem legal com uma tabela (é tem artigo aqui e lá, e vai ter coisa repetida? vai ter a norma é uma só ué!, mas tem coisa diferente então pode ler os 2 que vale a pena!) - https://pt.wikipedia.org/wiki/IEC_61131-3.
User Defined Data Types - Tipo de dados definido pelo usuário - UDT
Chegamos ao ponto mais legal da norma na minha opinião é que é garantir tipo de dados definidos pelo usuário, ou a famosa UDT, extremamente importante para a organização do software, permitindo que você crie estrutura de dados heterogêneas, que refletem a sua real necessidade (falo um pouco sobre isso aqui: https://www.plcengsoft.com/post/estrutura-de-dados-com-plc)
User-defined Data Types
Enumerated data type -Tipos numéricos;
Enumerated data type witn named value - Consiste em valores nomeados que representam uma constante integral, algumas vezes são chamados de constantes enumeradas - (basicamente suas constantes!);
Subrange data type – tipo de dados com limites ou seja dentro de um range- Por exemplo um INT (0-100) para armazenar apenas valores dentro desse range;
Array data type – um array (vetor uni ou multi-dimensional), de tipo de dados;
Structured data type – Composição estruturada por diversos tipos de dados;
Directly derived data type – Tipo de dados derivado de outra tipo de dado.
References – Ponteiro para referência, no caso proibido operações aritméticas dentro da declaração do tipo.
Variáveis:
E como os programas gerenciam internamente a memória? Para tanto existe um mecanismo denominado vinculação: ele consiste em ligar uma entidade abstrata interna definida no código do programa (pelo programador) a uma parte da finita memória, essas entidades são denominadas variáveis do programa e a região a que são vinculadas de células de memória.
Um programa pode requerer quantas células de memória adicional precisar através do uso de variáveis. Cada variável conterá seu próprio nome e seu tipo. Devido ao caráter formal de requisição de memória as variáveis precisam ser referenciadas no programa antes de serem utilizadas. Esse referenciamento é denominado declaração de variáveis.
A Norma define atributos para as variáveis:
RETAIN: Atributo para que o valor da variável fique em uma área de memória retentiva do controlador, permitindo seu valor manter-se após um "warm-restart".
CONSTANT: Informa que a variável é uma constante e seu valor inicial atribuído não é modificado.
AT: indica onde a variável esta localizada na memória, utilizado por exemplo para direcionar a variável a uma área de memória específica M de um CLP ou mapear uma entrada ou saída, ex: BT_START:BOOL AT % I.0
Escopo
As variáveis podem ter escopo
Global - (Acessível a todas rotinas, programas, etc do CLP)
I/O Mapping - Entradas, Saídas do CLP
External - permite acesso externo com o caminho completo da variável quando dentro de uma determinada rotina.
Temporária: sua existência é somente dentro da função/rotina e seus valores são perdidos ao fim da execução da rotina e função, liberando o espaço de memória para a próxima função/Rotina executada pelo SCAN do CLP
Bem esse foi o artigo sobre os tipos de dados e variáveis dentro da IEC 61131-3, é um artigo resumido e que já saiu longo.
Até o próximo artigo,
Bibliografia:
IEC61131-3 - https://webstore.iec.ch/publication/4552
Proposed corrections to the IEC 61131-3 standard, Mário de Sousa, October 2010, - https://www.sciencedirect.com/science/article/abs/pii/S0920548910000346



Comments