Bloco que permite monitorar diversos estados do mestre da rede Modbus RTU.
Representação Ladder

Estrutura do Bloco
Tipo de Variável |
Nome |
Tipo de Dado |
Descrição |
VAR_INPUT |
Execute |
BOOL |
Habilitação do bloco |
DisableComm |
BOOL |
Desabilita a comunicação Modbus RTU |
|
VAR_OUTPUT |
Done |
BOOL |
Habilitação de saída |
CommDisabled |
BOOL |
Sinalizador de comunicação desabilitada |
|
TxCounter |
WORD UINT |
Contador de requisições enviadas |
|
RxCounter |
WORD UINT |
Contador de telegramas recebidos |
|
NoAnswerCounter |
WORD UINT |
Contador de requisições não respondidas |
|
ErrorResponseCounter |
WORD UINT |
Contador de respostas recebidas com informação de erro |
|
LastErrorSlaveAddress |
BYTE USINT |
Endereço do escravo no qual foi detectado o último erro de comunicação |
|
LastErrorResult |
BYTE USINT |
Resultado de operação do último erro de comunicação recebido (0 – Sem erro) (4 – Timeout de resposta) (5 – Escravo retornou erro) |
|
LastErrorCode |
BYTE USINT |
Código do último erro de comunicação recebido |
Funcionamento
Este bloco permanece ativo enquanto Execute está em nível TRUE, atualizando suas saídas de acordo com a monitoração do mestre e com as requisições de entrada. Quando Execute recebe nível FALSE, as entradas são ignoradas e as saídas são zeradas. A saída Done recebe nível TRUE quando Execute possui nível TRUE e o bloco finalizou sua execução.
Um nível TRUE em DisableComm desabilita a comunicação Modbus RTU e zera os contadores e marcadores de status do mestre. Estes marcadores e contadores são exibidos nas saídas do bloco, cada um contendo um dado correspondendo à sua descrição. Seus valores também são zerados no desligamento do mestre.
Fluxograma do Bloco

Exemplo em Ladder

O exemplo acima requisita dados de status do mestre da rede Modbus RTU, além de permitir desabilitar a comunicação através de DISABLE. Finalizado o bloco com sucesso, a saída Done é ativada.
Exemplo em ST
O exemplo abaixo, exibe as instruções para aplicação do exemplo acima na linguagem ST.
VAR DISABLE, MB_DISABLE : BOOL; COUNT_TX, COUNT_RX, COUNT_NOANSWER, COUNT_ERROR : WORD; LE_ADDRESS, LE_RESULT, LE_CODE : USINT; END_VAR
DO1 := FB_MB_MasterControlStatus( DisableComm:=DISABLE, Execute:=DI1, CommDisabled=>MB_DISABLE, TxCounter=>COUNT_TX, RxCounter=>COUNT_RX, NoAnswerCounter=>COUNT_NOANSWER, ErrorResponseCounter=>COUNT_ERROR, LastErrorSlaveAddress=>LE_ADDRESS, LastErrorResult=>LE_RESULT, LastErrorCode=>LE_CODE);
|
|---|