Bloco que permite monitorar diversos estados do mestre da rede CANopen.
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 CANopen |
|
SendNMT |
BOOL |
Dispara envio de comando de gerenciamento |
|
NMTCommand |
BYTE |
Código do comando de gerenciamento a ser enviado |
|
NodeID |
BYTE USINT |
Endereço do escravo para envio do NMT |
|
VAR_OUTPUT |
Done |
BOOL |
Habilitação de saída |
CommDisabled |
BOOL |
Sinalizador de comunicação desabilitada |
|
BusPowerOff |
BOOL |
Sinalizador de falha na alimentação da interface CAN |
|
BusOff |
BOOL |
Sinalizador de erro de BusOff na interface CAN |
|
NMTCmdFeedback |
BOOL |
Sinalizador de comando NMT enviado pelo mestre |
|
ErrorCtrlFailure |
BOOL |
Sinalizador de erro de nodeguarding ou heartbeat em um dos escravos da rede |
|
InitFailure |
BOOL |
Sinalizador de erro na inicialização de um dos escravos da rede |
|
InitFinished |
BOOL |
Sinalizador de que o procedimento de inicialização dos escravos foi concluído |
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 CANopen e zera os contadores e marcadores de status do mestre.
Uma borda de subida em SendNMT envia um comando de gerenciamento (NMT) indicado em NMTCommand ao escravo de endereço NodeID.
As saídas recebem nível TRUE quando o status do mestre CANopen corresponde à sua descrição (comunicação desabilitada, falha na alimentação, etc).
Fluxograma do Bloco

Exemplo em Ladder

O exemplo acima requisita dados de status do mestre da rede CANopen, além de permitir desabilitar a comunicação através de DISABLE e enviar comandos NMT para NODEID através de SEND_COMM. 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, SEND_COMM, STATUS_DISABLED, STATUS_POWEROFF, STATUS_BUSOFF, STATUS_FB, STATUS_ERROR, STATUS_FAILURE, STATUS_FINISHED: BOOL; COMM, NODEID: BYTE; END_VAR
DO1 := FB_CO_MasterControlStatus( Execute:=DI1, DisableComm:=DISABLE, SendNMT:=SEND_COMM, NMTCommand:=COMM, NodeID:=NODEID, CommDisabled=>STATUS_DISABLED, BusPowerOff=>STATUS_POWEROFF, BusOff=>STATUS_BUSOFF, NMTCmdFeedback=>STATUS_FB, ErrorCtrlFailure=>STATUS_ERROR, InitFailure=>STATUS_FAILURE, InitFinished=>STATUS_FINISHED);
|
|---|