Tipos de Dados

Toda variável em um PLC recebe automaticamente o tipo de dados correto. A conversão só precisa ser ajustada na interface. Neste capítulo, os diferentes tipos de Antcas Control são explicados.

Valor Lógico BOOL

Este tipo pode ter apenas dois estados: Verdadeiro ou Falso. Na aplicação, em vez de uma variável, o valor pode ser definido com TRUE (verdadeiro) ou FALSE (falso).

Além disso, o tipo especial NULL é usado. Este estado é definido durante a inicialização de uma variável, ou seja, uma variável não escrita. Além disso, funções especiais são possíveis com NULL. Por exemplo, quando nenhum valor pode ser comunicado na interface.

Números Inteiros INT (Integer)

Um Integer é um número inteiro, como por exemplo, 0 ou 26. Além disso, o valor também pode ser negativo. Antcas Control trabalha com um PLC de 64 bits, que permite o cálculo de números muito grandes. O maior número é definido pela constante INT_MAX (9223372036854775807). O menor número está em INT_MIN ou INT_MAX+1, pois o sinal usa um bit. Todos os números fora do intervalo são aplicados em um Float com um expoente. O cálculo é então impreciso.

Um Integer pode receber o valor -0, que não é igual a FALSE. No entanto, a verificação com a função EQ(-0,0) resulta em TRUE. -0 pode ser definido apenas como uma string de caracteres '-0'.

Também é possível definir um valor Hex diretamente. Este começa com 0x ou 0X. Por exemplo, 0xFF se torna 255.

Números de Ponto Flutuante REAL (Float)

Um Float ou também valor Real é um número de ponto flutuante, como por exemplo, 0.1 ou 22.005 (com ponto). Expoentes também são suportados. Por exemplo, 10E2 para 1'000 ou 10e-2 para 0.1. A diferença entre maiúsculas e minúsculas não importa. Tentamos transformar o número em um Integer, pois o cálculo é mais simples para o PLC. Pode acontecer que os cálculos com números grandes se tornem imprecisos. O número máximo de casas decimais está fixado em 14 para aumentar o desempenho do PLC.

Números de ponto flutuante têm uma precisão limitada. Embora isso dependa do sistema, Antcas Control geralmente usa o Formato IEEE 754 Double Precision, que resulta em um erro máximo relativo de arredondamento na ordem de 1.11e-16. No entanto, operações aritméticas não elementares podem causar erros maiores e, naturalmente, a propagação do erro deve ser considerada se várias operações forem compostas.

Além disso, existem números racionais que podem ser representados exatamente como números de ponto flutuante na base 10, por exemplo 0.1 ou 0.7, mas não têm uma representação exata como números de ponto flutuante na base 2, que é usada internamente independentemente do tamanho da mantissa. Portanto, eles não podem ser convertidos para sua representação binária interna sem uma pequena perda de precisão. Isso pode levar a resultados confusos: FLOOR((0.1+0.7)*10) geralmente resultará em 7 em vez do resultado esperado de 8, pois a representação interna é algo como 7.9999999999999991118.

Portanto, nunca se deve confiar em números de ponto flutuante até a última casa decimal e nunca verificar diretamente a igualdade de números de ponto flutuante.

String STRING

Uma string ou também chamada de string é definida com uma aspa simples ' ' ou aspas duplas " ". Por exemplo, 'Texto 1' ou "Teste!". Com o bloco de função CONCAT, várias strings podem ser combinadas.

Um Line Feed ou nova linha pode ser criado com CTRL+Enter. Isso é então representado por uma seta ↵.

Um caractere de escape para a indicação de um ' ou " na própria string não é necessário. A string pode ser especificada diretamente com "Aqui há um \" caractere".

É possível declarar caracteres especiais diretamente. Para isso, a seguinte sequência de caracteres é especificada dentro da string com aspas duplas:

Sequência de Escape Abreviação ASCII
\\ Escaped \
\n LF
\r CR
\r\n CRLF
\0 NUL
\t TAB
\e ESC
\f FORMFEED
\x## Byte Arbitrário

Por exemplo, para declarar um byte arbitrário 126 ou 7E como número hexadecimal, a seguinte expressão é usada: "\x7E". Esta string corresponde então a "~".

Aqui, 7E serve como valor substituto. Todos os valores dentro dos números hexadecimais de 00 a FF podem ser especificados. Observe que o UTF-8 BOM "\xEF\xBB\xBF" é removido automaticamente pela maioria dos navegadores. É possível mascarar a string de caracteres. Para isso, um backslash líder é usado: "\\x7E", o que corresponde então a '\x7E'.

Atenção: Todas as strings fora do intervalo UTF-8 não podem ser armazenadas de forma remanente. Na visualização ao vivo, essas são exibidas em roxo escuro.

Veja também o artigo Conversão de Strings para Números.

Data e Hora DT (Date and Time)

Define uma data e hora com DT#, por exemplo, DT#2016-03-25-22:12:00. Os tempos são convertidos em um Integer em ms a partir da data 01.01.1970 (Este valor está na zona horária UTC/GMT).

Data D (Date)

Define uma data a partir da meia-noite com D#, por exemplo, D#2016-03-25. Os tempos são convertidos em um Integer em ms a partir da data 01.01.1970 (Este valor está na zona horária UTC/GMT).

Tempo T (Time)

Define um tempo em milissegundos com T#, por exemplo, T#5d3h5m11s500ms. Os tempos são convertidos em um Integer em ms.

Array

Um array não pode ser definido diretamente. No entanto, associações de uma variável com um ponto podem ser feitas. Veja Variáveis.

MUITO IMPORTANTE: Nunca defina um valor abaixo em um array. Por exemplo, set e set.p - O PLC irá travar aqui. E portanto não funcionará. Além disso, isso pode levar a erros inesperados.