Caminho:  Equipamentos (Dispositivos) > CFW300-2 > Ladder > Communication Network > Modbus RTU >

MB_WriteBinary

Escrita de Binários em rede Modbus RTU

Previous pageReturn to chapter overviewNext page

Bloco que executa uma escrita de até 128 dados binários (via Write Single Coil ou Write Multiple Coils) em um escravo em rede Modbus RTU.

 

Representação Ladder

 

MB_WRITEBINARY_block

 

Estrutura do Bloco

 

Tipo de Variável

Nome

Tipo de Dado

Descrição

VAR_INPUT

Execute

BOOL

Habilitação do bloco

SlaveAddress

BYTE

Endereço do escravo

Function#

BYTE

Código da função de escrita

InitialDataAddress

WORD

Endereço do bit inicial onde os dados serão escritos

NumberOfData

BYTE

Número de bits a serem escritos (1 a 128)

Timeout#

WORD

Tempo máximo de espera pela resposta do escravo [ms]

Offset#

BOOL

Indicação de offset em InitialDataAddress, ou seja, necessidade de subtrair 1 deste número

Value

BOOL

Variável que armazena 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 a interface RS485 está ocupada com outra requisição

Error

BOOL

Sinalizador de erro na execução

ErrorID

BYTE

Identificador do erro ocorrido

VAR

MB_WRITEBINARY

_INST_0

MB_WRITEBINARY

Instância de acesso à estrutura do bloco

 

Funcionamento

 

Este bloco, quando detecta uma borda de subida em Execute, verifica se o escravo Modbus RTU no endereço especificado em SlaveAddress está livre para envio de dados (variável Busy em nível FALSE). Caso esteja, envia a requisição de escrita dos valores de Value em um número de bits indicado por NumberOfData no endereço InitialDataAddress utilizando a função escolhida em Function# 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 NumberOfData. É importante verificar esta compatibilidade para não gerar erros no bloco.

 

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

Algum dado de entrada inválido

2

Mestre não habilitado

4

Timeout na resposta do escravo

5

Escravo retornou erro

 

Fluxograma do Bloco

 

MB_WRITEBINARY_flowchart

 

Exemplo em Ladder

 

MB_WRITEBINARY_example01

 

O exemplo acima requisita escrita do dado contido em VALUE, de tamanho descrito por DATA_COUNT, nos endereços posicionados a partir de INIT no escravo Modbus RTU de endereço SLAVE através da função Write Single Coil. 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

   SLAVE : BYTE := 1;

   INIT : WORD;

   VALUE : ARRAY [0..4] OF BOOL;

   MB_WRITEBINARY_INST_0 : FB_MB_WriteBinary;

END_VAR

 

MB_WRITEBINARY_INST_0.Execute := DI1;

MB_WRITEBINARY_INST_0(

   SlaveAddress:=SLAVE,

   Function:=5,

   InitialDataAddress:=INIT,

   NumberOfData:=4,

   Timeout:=30,

   Offset:=1,

   Value:=VALUE);

DO1 := MB_WRITEBINARY_INST_0.Done;