Bloco que calcula o oposto (ou seja, o produto com -1) de um valor passado por Value, armazenando o resultado em Result.
Representação Ladder
![]()
Estrutura do Bloco
Tipo de Variável |
Nome |
Tipo de Dado |
Descrição |
VAR_INPUT |
EN |
BOOL |
Habilitação do bloco |
Value |
BYTE USINT SINT WORD UINT INT DWORD UDINT DINT REAL |
Variável de referência para a operação |
|
VAR_OUTPUT |
Done |
BOOL |
Fim de operação |
Result |
BYTE USINT SINT WORD UINT INT DWORD UDINT DINT REAL |
Variável que armazena o resultado da operação |
Funcionamento
Este bloco, quando tem um valor TRUE em EN, envia para a saída Result o oposto da variável Value. Não havendo erros, a variável Done é setada. Caso haja algum erro na operação, Done não é setado, permanecendo em estado FALSE, enquanto Result permanece com seu valor inalterado.
Quando EN possui valor FALSE, Result permanece inalterado e Done permanece em FALSE.
Fluxograma do Bloco

Exemplo em Ladder

O exemplo acima calcula o oposto da variável VALUE, cujo valor inicial é 21, armazenando o resultado final, -21, em RESULT.

O exemplo acima calcula o oposto da variável VALUE, cujo valor inicial é -56, armazenando o resultado final, 56, em RESULT.
]
O exemplo acima calcula o oposto da variável VALUE, cujo valor inicial é -128. O resultado final, 128, não pode ser armazenado em RESULT, pois ele está fora dos limites de valores aceitos pelo tipo SINT. Por isso, RESULT permanece inalterado e a saída fica desabilitada.
Exemplo em ST
O exemplo abaixo, exibe as instruções para aplicação do exemplo acima na linguagem ST.
VAR VALUE : SINT := -56; RESULT : SINT; END_VAR
RESULT := FB_NEG(EN:=DI1, Value:=VALUE, Done=>DO1);
|
|---|