Caminho:  Equipamentos (Dispositivos) > SCA06 > Ladder > Communication Network > CANopen >

CO_SDORead

Leitura SDO em rede CANopen

Previous pageReturn to chapter overviewNext page

Bloco que executa uma leitura de dados via SDO de um escravo remoto em rede CANopen.

 

Representação Ladder

 

CO_SDOREAD_block

 

Estrutura do Bloco

 

Tipo de Variável

Nome

Tipo de Dado

Descrição

VAR_INPUT

Execute

BOOL

Habilitação do bloco

NodeID#

BYTE

Endereço do escravo

Index#

WORD

Indice do objeto a ser acessado no escravo

SubIndex#

BYTE

Sub-índice do objeto

Size#

BYTE

Tamanho do dado acessado, em bytes

Timeout#

WORD

Tempo de espera máximo para chegada do dado, a partir do início da solicitação [ms]

VAR_OUTPUT

Done

BOOL

Habilitação de saída

Active

BOOL

Sinalizador de aguardo de resposta

Busy

BOOL

Sinalizador de que o cliente SDO está ocupado com outra requisição

Error

BOOL

Sinalizador de erro na execução

ErrorID

BYTE USINT

Identificador do erro ocorrido

Value

BYTE USINT

Variável que armazena os dados recebidos

VAR

CO_SDOREAD_INST_0

CO_SDOREAD

Instância de acesso à estrutura do bloco

 

Funcionamento

 

Este bloco, quando detecta uma borda de subida em Execute, verifica se o cliente SDO no endereço especificado em NodeID# está livre para envio de dados (variável Busy em nível FALSE). Caso esteja, envia a requisição de leitura para o objeto de tamanho Size# localizado em Index# e SubIndex# e seta a saída Active, resetando-a ao receber a resposta do escravo. Os dados recebidos são armazenados na variável Value. Caso o escravo não esteja livre, o bloco aguarda Busy ir para nível FALSE para reenviar a solicitação.

 

wpshelp_common_fig_note

NOTA!

Caso Execute vá para nível FALSE e Busy ainda esteja em nível TRUE, a requisição é cancelada.

 

wpshelp_common_fig_note

NOTA!

Value é um array de tamanho igual a Size#. É importante verificar esta compatibilidade para não gerar erros no bloco.

 

wpshelp_common_fig_note

NOTA!

Somente é possível ler um objeto (BYTE, WORD, DWORD) por bloco. Não é possível ler um array de objetos.

 

Quando Execute possui valor FALSE, Done permanece FALSE. A saída Done só é ativada quando o bloco termina a execução com sucesso, permanecendo em nível TRUE até que Execute receba FALSE.

 

Caso haja algum erro na execução, a saída Error é ativada e ErrorID exibe o código do erro segundo a tabela abaixo.

 

Código

Descrição

0

Executado com sucesso

1

Cartão não pode executar a função

2

Timeout na resposta do escravo

3

Escravo retornou erro

 

Fluxograma do Bloco

 

CO_SDOREAD_flowchart

 

Exemplo em Ladder

 

CO_SDOREAD_example01

 

O exemplo acima requisita leitura do dado de tamanho SIZE, localizado em INDEX - SUBINDEX, do equipamento NODEID. Esse dado é repassado a VALUE. 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

   ERROR : BOOL;

   INDEX, TIMEOUT : WORD;

   NODEID, SUBINDEX : BYTE;

   VALUE : UDINT;

   CO_SDOREAD_INST_0 : FB_CO_SDOREAD;

END_VAR

 

CO_SDOREAD_INST_0.Execute := DI1;

CO_SDOREAD_INST_0(

NodeId:=NODEID,

   Index:=INDEX,

   SubIndex:=SUBINDEX,

   Size:=4,

   Timeout:=TIMEOUT);

ERROR := CO_SDOREAD_INST_0.Error;

VALUE := CO_SDOREAD_INST_0.Value;

DO1 := CO_SDOREAD_INST_0.Done;