Tipo de Acesso
Área Acessada Descrição da Função Código(decimal) Código(hexa)
Acesso
a
Bits
Entradas Discretas Físicas
Read Discrete Inputs(Ler Entradas Discretas)
02 02
Bit Internos ou Saídas Discretas Físicas
Read Coils(Ler Saídas Discretas) 01 01
Write Single Coil(Escrever em uma Saída Discreta)
05 05
Write Multiple Coils(Escrever em Varias Saídas Discreta)
15 0F Acesso a registros (16 bits) Entradas Analógicas Físicas
Read Input Register (Ler Entrada Analógica)
04 04
Registros Internos ou
Saídas Analógicas Físicas
Read Holding Register (Ler Saída Analógica)
03 03
Write Single Register
(Escrever em uma Saída Analógica)
06 06
Write Multiple Register (Escrever em Várias Saídas Analógicas
Modbus
Função 01 (Read Coils)
0x01 – Código da função – Read Coils(Ler saídas discretas)
EHi – ELo – Índice do endereço da primeira coil(0x0000 – 0xFFFF)
QHi – QLo – Quantidade de coil a serem lidos(0x0000 – 0xFFFF)
Solicitação(Mestre)
0x01 EHi ELo QHi QLo
0x01 – Código da função – Read Coils(Ler saídas discretas)
NBy – Número de bytres necessários para transmitir a quantidade
de coils solicitadas
SCo – Byte contendo o status de 8 coils(LSB e MSB) o primeiro byte
contém o status da coil de menor indice de endereço Resposta(Escravo)
0x01 NBy SCo SCo
Mensagem de Erro(Escravo)
0x81 SCod 0x81 – Código de erro para a função Read Coils
Scod – Tipo de erro(0x01, 0x02, 0x03 ou 0x04) Exemplo :
Solicitar o status de coils a partir da posição 102 até a posição 112. Posição inicial : 102 – 1 = 101 0x0065 Quantidade : (112 – 102) + 1 = 11 0x0008 02 00 65 00 08 Solicitação(Mestre) 01 02 6B 05 Resposta Escravo Resposta :
Quantidades de bytes: 11 coils / 8 = 1,375 2 bytes 2 bytes = 0x02
status das coils 109 – 102 = 6B = 0110 / 1011 status das coils 112 – 110 = 05 = 0000 / 0101
Modbus
Função 02 (Read Discrete Inputs)
0x02: Código da função – Read Discrete Inputs (Ler entradas discretas)
EHi – ELo – Índice do endereço da primeira entrada(0x0000 – 0xFFFF)
QHi – QLo – Quantidade de entradas a serem lidos(0x0000 – 0xFFFF)
Solicitação(Mestre)
0x02 EHi ELo QHi QLo
0x02: Código da função – Read Discrete Inputs (Ler entradas discretas)
NBy – Número de bytes necessários para transmitir a quantidade
de entradas solicitadas
SCo – Byte contendo o status de 22 entradas(LSB e MSB) o primeiro byte
contém o status da entrada de menor indice de endereço Resposta(Escravo)
0x02 NBy SCo SCo
Mensagem de Erro(Escravo)
0x82 SCod
0x81 – Código de erro para a função Read Discrete Inputs Scod – Tipo de erro(0x01, 0x02, 0x03 ou 0x04)
Exemplo :
Solicitar o status das entradas discretas a partir da posição 197 até a posição 218. Posição inicial : 197 – 1 = 196 0x00C4 Quantidade : (218 – 197) + 1 = 22 0x0016 02 00 C4 00 16 Solicitação(Mestre) 02 03 AC DB Resposta Escravo Resposta :
Quantidades de bytes: 22 entradas / 8 = 2,75 3 bytes 3 bytes = 0x03
status dos inputs 204 - 197 = AC = 1010 / 1100 status dos inputs 212 - 205 = DB = 1101 / 1011 status dos inputs 218 - 213 = 35 = 0011 / 0101
Modbus
Função 03 (Read Holding Register)
0x03: Código da função – Read Holding Registers (Ler saídas analógicas/Registros)
EHi – ELo – Índice do endereço do primeiro holding register
(0x0000 – 0xFFFF)
QHi – QLo – Quantidade de holding register a serem lidos
(0x0000 – 0xFFFF) Solicitação(Mestre)
0x03 EHi ELo QHi QLo
0x03: Código da função – Read Discrete Inputs (Ler entradas discretas)
NBy – Número de bytes necessários para transmitir a quantidade
de input register( quantidade de holding register x 2 )
VRHi - VRLo – Valor do holding register, formato Big Endian
(HiByte + LoByte) Sendo que o primeiro par de bytes contém o valor do primeiro indice de endereço.
Resposta(Escravo)
0x03 NBy VRHi VRLo VRHi
Mensagem de Erro(Escravo)
0x83 SCod 0x83 Scod – Código de erro para a função Read Holdind Register – Tipo de erro(0x01, 0x02, 0x03 ou 0x04)
Exemplo :
Solicitar o valor dos holding register a parti r da posição 108 até a posição 110. Posição inicial : 107 – 1 = 107 0x006B Quantidade : (110 - 108) + 1 = 3 0x0003 03 00 6B 00 03 Solicitação(Mestre) 03 06 02 2B Resposta Escravo Resposta :
Quantidades de bytes: 3 holding registers = 6 bytes 6 bytes = 0x06 valor do registro 108 = 0x022B =555 valor do registro 109 = 0x0000 =0 valor do registro 110 = 0x0064 =100 00 VRLo 00 00 64
Modbus
Função 04 (Read Input Register)
0x04: Código da função – Read Input Registers (Ler entradas analógicas / Registros)
EHi – ELo – Índice do endereço do primeiro input register
(0x0000 – 0xFFFF)
QHi – QLo – Quantidade de input register a serem lidos
(0x0000 – 0xFFFF) Solicitação(Mestre)
0x04 EHi ELo QHi QLo
0x04: Código da função – Read Input Registers (Ler entradas analógicas)
NBy – Número de bytes necessários para transmitir a quantidade
de input register( quantidade de input register x 2 )
VRHi - VRLo – valor do input register, formato Big Endian
(HiByte + LoByte) Sendo que o primeiro par de bytes contém o valor do primeiro indice de endereço.
Resposta(Escravo)
0x04 NBy VRHi VRLo VRHi
Mensagem de Erro(Escravo)
0x84 SCod 0x84 Scod – Código de erro para a função Read Input Register – Tipo de erro(0x01, 0x02, 0x03 ou 0x04) Exemplo :
Solicitar o valor do input register da posição 9.
Posição inicial : 9 – 1 = 8 0x0008 Quantidade : 1 = 0x0001 04 00 08 00 01 Solicitação(Mestre) 04 02 00 0A Resposta Escravo Resposta :
Quantidades de bytes: 1 input registers x 2 = 2 bytes = 0x02 valor do registro 9 = 0x000A =10
Modbus
Função 05 (Write Single Coil)
0x05: Código da função – write single coil(escrever em uma saida)
EHi – ELo – Índice do endereço da coil (0x0000 – 0xFFFF)
VCHi – VCLo – valor a ser escrito na coil (0 = 0x0000 – 1= 0xFF00)
Solicitação(Mestre)
0x05 EHi ELo VCHi VCLo
A mensagem resposta reflete a mensagem solicitação Resposta(Escravo)
0x05 EHi ELo
Mensagem de Erro(Escravo)
0x85 SCod 0x84 Scod – Código de erro para a função write single coil – Tipo de erro(0x01, 0x02, 0x03 ou 0x04) Exemplo :
Escrever o valor “1” na coil 1275 Posição: 1275 - 1 = 1274 0x04F4 Quantidade 1 0x0001 05 04 FA FF 00 Solicitação(Mestre) 05 04 FA FF Resposta Escravo Resposta :
Reflexo da mensagem de solicitação
VCHi VCLo
Modbus
Função 06 (Write Single Register)
0x06: Código da função – write single Register(escrever em uma palavra)
EHi – ELo – Índice do endereço single register(0x0000 – 0xFFFF)
VCHi – VCLo – valor a ser escrito single registe (0 = 0x0000 – 1= 0xFF00)
Solicitação(Mestre)
0x06 EHi ELo VCHi VCLo
A mensagem resposta reflete a mensagem solicitação Resposta(Escravo)
0x06 EHi ELo
Mensagem de Erro(Escravo)
0x86 SCod 0x86 Scod – Código de erro para a função write single coil – Tipo de erro(0x01, 0x02, 0x03 ou 0x04) Exemplo :
Escrever o valor “1” na coil 1275 Posição: 1275 - 1 = 1274 0x04F4 Quantidade 1 0x0001 05 04 FA FF 00 Solicitação(Mestre) 05 04 FA FF Resposta Escravo Resposta :
Reflexo da mensagem de solicitação
VCHi VCLo
Modbus
Função 15 (Write Multiple Coils)
0x0F: Código da função – write multiple coils (escrever em várias saídas)
EHi – ELo – Índice do endereço single register (0x0000 – 0xFFFF)
QCHi – QCLo - Quantidade de coil a serem escritas( de 0x0001 a 0x07B0)
QBy – dividir a quantidade de coils por 8 e arrendondar para o próximo valor inteiro(se necessário)
VCo – valor a ser escrito nas coils. O bit menos significativo do primeiro
byte corresponde à primeira coil. Solicitação(Mestre)
0x0F EHi ELo QCHi QCLo
A mensagem resposta reflete a mensagem solicitação Resposta(Escravo)
0x0F EHi QCHi
Mensagem de Erro(Escravo)
0x0F SCod
0x8F – Código de erro para a função multiple write coils(
escrever em várias saídas)
Scod – Tipo de erro(0x01, 0x02, 0x03 ou 0x04) Exemplo :
Escrever em 10 coils a partir da posição 20 Valores a serem escritos :
Lidos da coil 29 para a coil 20
29 – 20 0 1 1 1 0 0 1 1 0 1 “28.756” e “12” em dois Posição: 20 – 1 = 19 0x0013
Quantidade de coils = 10 0x000A
Número de bytes : 10 / 8 = 1,25 ~ 2 0x02 27- 20 1 1 0 0 1 1 0 1 0xCD 29 – 28 0 0 0 0 0 0 0 1 0x01 0F 00 13 00 0A Solicitação(Mestre) 0F 00 13 00 Resposta Escravo Resposta :
Reflexo parcialmente da mensagem de solicitação
QCLo
0A
QBy VCo VCo VCo
Modbus
Função 16 (Write Multiple Registers)
0x10: Código da função – write multiple registers(escrever em várias saídas analógicas )
EHi – ELo – Índice do endereço do primeiro registro (0x0000 – 0xFFFF)
QRHi – QRLo - Quantidade de registros a serem escritas( de 0x0001 a 0x07B0)
QBy - Quantidade de bytes : Multiplicar a quantidade de registrospor 2
VCo – valor a ser escrito nos registros. Os primeiros dois bytes correspondem
Ao valor a ser escrito no primeiro registro, no formato BIG-ENDIAN (HYByte + LoByte)
Solicitação(Mestre)
0x10 EHi ELo QRHi QRLo
A mensagem resposta reflete parcialmente a mensagem solicitação Resposta(Escravo)
0x10 EHi ELo
Mensagem de Erro(Escravo)
0x90 SCod
0x90 – Código de erro para a função multiple write registers(
(escrever em várias saídas analógicas)
Scod – Tipo de erro(0x01, 0x02, 0x03 ou 0x04) Exemplo :
Escrever os valores “28.756” e 12 em dois registradores começando da posição 35.339 Posição: 35339– 1 = 35338 0x8A0A
Quantidade de registro= 2 0x0002
Quantidade de bytes : nr. Registros x 2 = 2 x 2 = 4 0x04
Primeiro valor, posição 35.339 : 28.756 0x7054 Segundo valor, posição 35340 : 12 0x000C
10 8A 0A 00 02
Solicitação(Mestre)
0F 00 13 00
Resposta Escravo
Resposta :
Reflexo parcialmente a mensagem de solicitação
QCHi
0A
QBy VRHi VRLo
04 70 54 QCLo
Modbus
Função 01 (Read Coils)
0x01 – Código da função – Read Coils(Ler saídas discretas)
EHi – ELo – Índice do endereço da primeira coil(0x0000 – 0xFFFF)
QHi – QLo – Quantidade de coil a serem lidos(0x0000 – 0xFFFF)
Solicitação(Mestre)
0x01 EHi ELo QHi QLo
0x01 – Código da função – Read Coils(Ler saídas discretas)
NBy – Número de bytres necessários para transmitir a quantidade
de coils solicitadas
SCo – Byte contendo o status de 8 coils(LSB e MSB) o primeiro byte
contém o status da coil de menor indice de endereço Resposta(Escravo)
0x01 NBy SCo SCo
Mensagem de Erro(Escravo)
0x81 SCod 0x81 – Código de erro para a função Read Coils
Scod – Tipo de erro(0x01, 0x02, 0x03 ou 0x04) Exemplo :
Solicitar o status de coils a partir da posição 102 até a posição 112. Posição inicial : 102 – 1 = 101 0x0065 Quantidade : (112 – 102) + 1 = 11 0x0008 02 00 65 00 08 Solicitação(Mestre) 01 02 6B 05 Resposta Escravo Resposta :
Quantidades de bytes: 11 coils / 8 = 1,375 2 bytes 2 bytes = 0x02
status das coils 109 – 102 = 6B = 0110 / 1011 status das coils 112 – 110 = 05 = 0000 / 0101