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

CO_SDOWrite

Escrita SDO em rede CANopen

Previous pageReturn to chapter overviewNext page

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

 

Representação Ladder

 

CO_SDOWRITE_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]

Value

BYTE USINT

Variável que possui os dados a serem escritos

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

VAR

CO_SDOWRITE_INST_0

CO_SDOWRITE

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 escrita 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. 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_SDOWRITE_flowchart

 

Exemplo em Ladder

 

CO_SDOWRITE_example01

 

O exemplo acima requisita escrita do dado contido em VALUE, de tamanho SIZE, no local INDEX - SUBINDEX do equipamento NODEID. 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_SDOWRITE_INST_0 : FB_CO_SDOWrite;

END_VAR

 

CO_SDOWRITE_INST_0.Execute := DI1;

CO_SDOWRITE_INST_0(

NodeId:=NODEID,

   Index:=INDEX,

   SubIndex:=SUBINDEX,

   Size:=4,

   Timeout:=TIMEOUT,

   Value:=VALUE);

ERROR := CO_SDOWRITE_INST_0.Error;

DO1 := CO_SDOWRITE_INST_0.Done;