SAT
Satura Value de acordo com os limites definidos por Minimum e Maximum e, em seguida, armazena o resultado em Result.
Representação em Ladder
Estrutura de blocos
| Tipo de variável | Nome | Tipo de dado | Descrição |
|---|---|---|---|
| VAR_INPUT | EN | BOOL | Habilita o bloco. |
| VAR_INPUT | Value | BYTE USINT SINT WORD UINT INT DWORD UDINT DINT REAL | Valor de referência. |
| VAR_INPUT | Minimum | BYTE USINT SINT WORD UINT INT DWORD UDINT DINT REAL | Valor de saturação mais baixo. |
| VAR_INPUT | Maximum | BYTE USINT SINT WORD UINT INT DWORD UDINT DINT REAL | Valor de saturação superior. |
| VAR_OUTPUT | Q | BOOL | Indica que ocorreu saturação no processo. |
| VAR_OUTPUT | Result | BYTE USINT SINT WORD UINT INT DWORD UDINT DINT REAL | Resultado da operação. |
Operação
Quando EN é TRUE, o bloco verifica se Value está dentro dos limites Minimum e Maximum.
Se Value estiver dentro do intervalo configurado, Result recebe Value. Se Value for maior que Maximum, Result recebe Maximum. Se Value for menor que Minimum, Result recebe Minimum.
Se a operação for concluída sem erros, Done é definido. Se ocorrer um erro na operação, Done permanece FALSE e Result mantém seu valor anterior.
Quando EN é FALSE, Result permanece inalterado e Done permanece FALSE.
Fluxograma de execução

Exemplos
- Exemplo em Diagrama Ladder
- Exemplo em Texto Estruturado
Este exemplo passa o valor de VALUE para RESULT porque ele não é menor que MINIMUM nem maior que MAXIMUM. O bloco é concluído com êxito e desativa Q porque não ocorreu saturação.
Este exemplo passa MAXIMUM para RESULT porque VALUE é maior que MAXIMUM. O bloco é concluído com êxito e ativa Q porque ocorreu saturação.
Este exemplo passa MINIMUM para RESULT porque VALUE é menor que MINIMUM. O bloco é concluído com êxito e ativa Q porque ocorreu saturação.
Este exemplo passa MAXIMUM para RESULT porque VALUE é maior que MAXIMUM. O bloco é concluído com êxito e ativa Q porque ocorreu saturação.
O código em Structured Text a seguir aplica a mesma lógica mostrada no exemplo em Ladder.
VAR
VALUE : INT := 700;
MINIMUM : INT := 300;
MAXIMUM : INT := 500;
RESULT : INT;
END_VAR
RESULT := FB_SAT(
EN:=DI1,
Value:=VALUE,
Minimum:=MINIMUM,
Maximum:=MAXIMUM,
Q=>DO1);