Pular para o conteúdo principal

Texto Estruturado (ST)

O Texto Estruturado (ST - Structured Text) é uma linguagem de programação definida pela norma IEC 61131-3. É uma linguagem textual, semelhante a linguagens de alto nível como Pascal e C, que permite escrever programas de forma clara e organizada. Com ela, é possível realizar atribuições, chamar blocos de função e, dependendo do equipamento utilizado, executar instruções condicionais e de repetições. Sua sintaxe simples facilita o entendimento e oferece ao programador mais flexibilidade em relação ao Ladder, especialmente em tarefas que envolvem lógica detalhada e operações matemáticas.

Elementos do Texto Estruturado - Expressão

As expressões são estruturas que, ao serem avaliadas, resultam em um valor de um determinado tipo de dado. Elas são formadas por operadores e operandos. Os operandos podem ser literais, variáveis, chamadas de funções ou métodos com retorno, instâncias de blocos funcionais com resultado ou até mesmo outras expressões. Já os operadores são símbolos que representam operações aritméticas, lógicas ou funções, sendo aplicados conforme o tipo de dado e seguindo regras específicas de prioridade.

Elementos do Texto Estruturado - Atribuição

A atribuição substitui o valor atual de uma variável pelo resultado da avaliação de uma expressão. Ela é composta por uma variável à esquerda, seguida pelo operador de atribuição :=, a expressão a ser avaliada e, por fim, o ponto e vírgula ; que encerra a instrução.

Exemplo

Abaixo, pode-se observar cinco exemplos diferentes de atribuição em Texto Estruturado.

VAR
A : REAL;
B : REAL;
END_VAR

B := 10; // Atribuição do valor de um literal.
A := B; // Atribuição do valor de uma variável.
A := (B + 5); // Atribuição do valor resultante de uma operação.
A := FB_POW(B, 2); // Atribuição do valor resultante de uma função.

Elementos do Texto Estruturado - Comparação

A comparação retorna um valor booleano como resultado. Ela deve ser composta por um operando à esquerda, seguido por um operador de comparação e, em seguida, por um segundo operando à direita. O resultado da comparação pode ser atribuído a uma variável.

Exemplo

O exemplo abaixo mostra uma comparação que verifica se um operando é maior ou igual a outro.

VAR
A : INT;
B : INT;
END_VAR

B := A >= 0;

Elementos do Texto Estruturado - Chamadas

Em Texto Estruturado, existem dois tipos principais de chamadas: chamadas de funções e chamadas de blocos funcionais.

1 - Chamada de Função

As funções são chamadas por meio de uma instrução composta pelo nome da função seguido por uma lista de parâmetros entre parênteses. Elas retornam um valor diretamente, que pode ser atribuído a uma variável.

Exemplo

O exemplo abaixo mostra a utilização da função para calcular a raiz quadrada de um operando.

VAR
A : REAL;
B : REAL := 81;
END_VAR

A := FB_SQRT(B, 2);

Ao final da execução do código, o valor de A será 9.0.

2 - Chamada de Bloco Funcional

Os blocos funcionais são chamados por meio do nome da instância do bloco, seguido por uma lista de parâmetros entre parênteses. O estado interno do bloco é mantido entre execuções e os valores de saída podem ser acessados por meio de seus atributos.

Exemplo

O exemplo abaixo demonstra o uso de um bloco funcional contador crescente (FB_CTU) em Texto Estruturado. O contador é utilizado para contar pulsos a partir de uma entrada digital (DI1) e acionar uma saída (DO1) quando um valor pré-definido (30) é alcançado.

VAR
PRESET : UINT := 30;
COUNT : UINT;
CTU_INST_0 : FB_CTU;
END_VAR

CTU_INST_0.CU := DI1;
CTU_INST_0(R := DI2, PV := PRESET);
COUNT := CTU_INST_0.CV;
DO1 := CTU_INST_0.Q;