8 СЕМЕСТР / АСУ ЭТО / Wago-IO-PRO CAA 2.3.8.5 (5.10.2007) / WAGO manuals / 750-812 / m012800p
.pdf
5.3Funções comuns do acoplador/controlador
5.3.1Funções MODBUS implementadas
A tabela que se segue apresenta as funções que tanto o acoplador MODBUS como o controlador MODBUS suportam:
Código |
Função |
Descrição |
|
de função |
|
|
|
|
|
|
|
0x01 |
Read Coil Status |
Leitura de bits de entrada e de saída como Octet |
Funções são |
|
|
String. |
idênticas |
0x02 |
Read Input Status |
Leitura de bits de entrada como Octet String. |
|
|
|
|
|
0x03 |
Registros Read |
Leitura do número de palavras de entrada. |
Funções são |
|
Holding |
|
idênticas |
0x04 |
Registros Read Input |
Leitura do número de palavras de entrada. |
|
|
|
|
|
0x05 |
Force Single Coil |
Registrar bit de saída. |
|
|
|
|
|
0x06 |
Registros Preset |
Registra um valor em uma palavra de saída. |
|
|
Single |
|
|
0x0B |
Fetch Comm Event |
Leitura da palavra de status e contador de eventos. |
|
|
Ctr |
|
|
0x0F |
Force Multiple Coils |
Registra uma quantidade de bits de saída. |
|
|
|
|
|
0x10 |
Regist. Preset |
Registra uma quantidade de palavras de saída. |
|
|
Multiple |
|
|
Tabela 5.29: Funções implementadas
MODBUS / Configuração |
53 |
01-03-16 |
|
|
5.3.1.1 Aplicação das funções MODBUS
A vista geral gráfica mostra com que funções MODBUS é possível aceder aos dados da figura do processo.
Terminais de entrada |
750- |
400 |
400 |
467 |
467 |
400 |
467 |
400 |
400 |
467 |
Terminais de saída |
750- |
550 |
501 |
550 |
Read Holding Registers (0x03) |
Preset Single Register (0x06) |
Read Input Registers (0x04) |
Preset Multiple Registers (0x10) |
|
Endereços MODBUS |
|
Endereços MODBUS |
||
|
0x0000 |
Word12 |
|
0x0000 / 0x0200 |
Word12 |
|
0x0001 |
Word2 |
1 |
0x0001 / 0x0201 |
Word2 |
|
0x0002 / 0x0202 |
|
|||
|
0x0002 |
Word12 |
|
Word12 |
|
1 |
0x0003 |
Word2 |
|
0x0003 / 0x0203 |
Word2 |
0x0004 |
Word12 |
|
0x0004 / |
|
|
|
3 |
|
|||
|
0x0005 |
Word2 |
|
||
|
0x0204 |
|
|||
|
0x0006 |
Word12 |
|
|
|
|
|
|
|
||
|
0x0007 |
Word2 |
|
|
|
Read Holding Registers (0x03)
Read Input Registers (0x04)
3 0x0008 |
|
|
Endereços MODBUS |
|
|
|
|
0x0200 |
Word12 |
|
|
|
Word2 |
|
|
|
1 |
0x0201 |
|
|
|
|
||
|
|
0x0202 |
Word12 |
|
|
|
|
||
Read Coil Status (0x01) |
|
0x0203 |
Word2 |
|
Read Input Status (0x02) |
3 |
0x0204 |
|
|
|
|
|
||
|
Endereços |
|
|
|
|
MODBUS |
|
|
|
|
0x0000 |
|
Force Single Coil (0x05) |
|
|
0x0001 |
|
Force Multiple Coils (0x0F) |
|
|
0x0002 |
|
|
|
|
0x0003 |
|
Endereços MODBUS |
|
2 |
0x0004 |
|
0x0000 / 0x0200* |
|
0x0005 |
|
2 |
|
|
|
|
|
||
|
|
0x0001 / 0x0201* |
||
|
0x0006 |
|
||
|
|
|
|
|
|
0x0007 |
|
|
|
|
0x0008 |
|
Read Coil Status (0x01) |
|
|
0x0009 |
|
||
|
|
Read Input Status (0x02) |
||
|
|
|
||
|
|
|
Endereços MODBUS |
|
|
|
|
0x0200 |
|
|
|
|
2 |
|
|
|
|
0x0201 |
|
|
|
Valores com * são válidos a partir da versão 2.5 |
||
Figura 5.14: Vista geral das funções MODBUS, p. ex. no acoplador |
|
|
g012825p |
|
É sensato aceder aos sinais analógicos com as funções de registro e aos sinais binários com as funções Coil . Apesar de se aceder aos sinais binários através funções de registro por via da leitura e do registro, os endereços são deslocados se forem instalados outros terminais analógicos.
54 |
MODBUS / Configuração |
|
01-03-16 |
|
5.3.1.2 Status Read Coil (código de função 0x01):
Esta função lê o status dos bits de entrada e de saída (coils) no slave. A difusão não é suportada. No acoplador/controlador o número dos pontos I/O está limitada em 256.
Função! Consulta:
A consulta determina o endereço de partida e o número dos bits que devem ser lidos. O primeiro ponto é endereçado com 0. Em Modicon o endereçamento começa com 1 (0x01).
Na tabela que se segue apresenta-se um exemplo para uma consulta através da qual devem ser lidos os bits 0 a 7 do slave 11:
Nome do campo |
Exemplo |
RTU |
ASCII |
|
Start of frame |
- |
t1-t2-t3 |
”:” |
0x3a |
Slave address |
0x0B |
0x0B |
”0B” |
0x30, 0x42 |
Function code |
0x01 |
0x01 |
”01” |
0x30, 0x31 |
Starting address high |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
Starting address low |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
Number of points high |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
Number of points low |
0x08 |
0x08 |
”08” |
0x30, 0x38 |
Error Check (LRC / CRC) |
- |
0x3D |
”EC” |
0x45, 0x43 |
|
|
0x66 |
|
|
End of frame |
|
t1-t2-t3 |
- |
0xD, 0xA |
Tabela 5.30: Exemplo, status Read Coil |
|
|
|
|
Resposta:
Os valores atuais dos bits consultados são condensados no campo de dados. Um 1 corresponde ao estado ON e um 0 ao estado OFF. O bit com o valor mais baixo contém o primeiro bit da consulta. Os outros bits seguem-se de forma ascendente. Se o número das entradas não for múltiplo de 8, os bits restantes do último byte de dados são preenchidos com zeros. Se forem consultados mais bits do que as entradas ou saídas existentes no nó, os outros bits de entrada são colocadas em zero e as saídas obtêm o último valor válido.
Nome do campo |
Exemplo |
RTU |
ASCII |
|
Start of frame |
- |
t1-t2-t3 |
”:” |
0x3A |
Slave address |
0x0B |
0x0B |
”0B” |
0x30, 0x42 |
Function code |
0x01 |
0x01 |
”01” |
0x30, 0x31 |
Byte Count |
0x01 |
0x01 |
”01” |
0x30, 0x31 |
Data (point 8...0) |
0x12 |
0x12 |
”12” |
0x31, 0x32 |
Error Check (LRC / CRC) |
- |
0xD2 |
”E1” |
0x45, 0x31 |
|
|
0x5D |
|
|
End of frame |
- |
t1-t2-t3 |
- |
0xD, 0xA |
Tabela 5.31: Exemplo resposta, status Read Coil
MODBUS / Configuração |
55 |
01-03-16 |
|
|
O status das entradas 7 a 0 é indicado como valor byte 0x12 ou binário 0001 0010. A entrada 7 é o bit com o valor mais elevado deste byte e a entrada 0 o valor mais baixo. Por conseguinte, a atribuição é feita de 7 a 0 com OFF-OFF-OFF-ON-OFF-Off-ON- OFF.
Bit: |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
Coil: |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
56 |
MODBUS / Configuração |
|
01-03-16 |
|
5.3.1.3 Status Read Input (Código de função 0x02):
Esta função lê o status dos bits de entrada no slave. A difusão não é suportada. No acoplador/controlador o número dos pontos I/O está limitado em 256.
|
|
Consulta: |
|
|
|
|
|
Função! |
|
|
|
|
|
||
|
A consulta determina o endereço de partida e o número dos bits que devem ser lidos. |
||||||
|
|
||||||
|
|
O primeiro ponto é endereçado com 0. Em Modicon o endereçamento começa com 1 |
|||||
|
|
(0x01). |
|
|
|
|
|
|
|
Na tabela que se segue apresenta-se um exemplo para uma consulta através da qual |
|||||
|
|
devem ser lidos os bits 0 a 7 do slave 11: |
|
|
|
||
|
|
|
|
|
|
|
|
|
|
Nome do campo |
Exemplo |
RTU |
ASCII |
|
|
|
|
Start of frame |
- |
t1-t2-t3 |
”:” |
0x3a |
|
|
|
Slave address |
0x0B |
0x0B |
”0B” |
0x30, 0x42 |
|
|
|
Function code |
0x02 |
0x02 |
”02” |
0x30, 0x32 |
|
|
|
Starting address high |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
|
|
|
Starting address low |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
|
|
|
Number of points high |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
|
|
|
Number of points low |
0x08 |
0x08 |
”08” |
0x30, 0x38 |
|
|
|
Error Check (LRC / CRC) |
- |
0x79 |
”EC” |
0x45, 0x42 |
|
|
|
|
|
0x66 |
|
|
|
|
|
End of frame |
|
t1-t2-t3 |
- |
0xD, 0xA |
|
|
|
|
|
|
|
|
|
Tabela: 5.32: Exemplo consulta, status Read Input
Resposta:
Os valores atuais dos bits consultados são condensados no campo de dados. Um 1 corresponde ao estado ON e um 0 ao estado OFF. O bit com o valor mais baixo contém o primeiro bit da consulta. Os outros bits seguem-se de forma ascendente. Se o número das entradas não for múltiplo de 8, os bits restantes do último byte de dados são preenchidos com zeros. Se forem consultados mais bits do que as entradas ou saídas existentes no nó, os outros bits de entrada são colocados em zero.
Nome de campo |
Exemplo |
RTU |
ASCII |
|
Start of frame |
- |
t1-t2-t3 |
”:” |
0x3A |
Slave address |
0x0B |
0x0B |
”0B” |
0x30, 0x42 |
Function code |
0x02 |
0x02 |
”02” |
0x30, 0x32 |
Byte Count |
0x01 |
0x01 |
”01” |
0x30, 0x31 |
Data (point 8...0) |
0x12 |
0x12 |
”12” |
0x31, 0x32 |
Error Check (LRC / CRC) |
- |
0x22 |
”E0” |
0x45, 0x30 |
|
|
0x5D |
|
|
End of frame |
- |
t1-t2-t3 |
- |
0xD, 0xA |
Tabela 5.33: Exemplo resposta, status Read Input
MODBUS / Configuração |
57 |
01-03-16 |
|
|
O status das entradas 7 a 0 é indicado como valor byte 0x12 ou binário 0001 0010. A entrada 7 é o bit com o valor mais elevado deste byte e a entrada 0 o valor mais baixo. Por conseguinte, a atribuição é feita de 7 a 0 com OFF-OFF-OFF-ON-OFF-Off-ON- OFF.
Bit: |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
Coil: |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
58 |
MODBUS / Configuração |
|
01-03-16 |
|
5.3.1.4 Registro Read Holding (código de função 0x03)
Com esta função são lidos os conteúdos binários de registros holding nos slaves. A difusão não é suportada.. O número máximo é limitado em 128 registros em um frame.
Consulta:
Função! A consulta determina o endereço de partida (registro de partida) e o número dos registros que devem ser lidos.
O endereçamento começa com 0. Em Modicon o endereçamento começa com 1 (0x01).
Exemplo para uma consulta dos registros 0 e 1 do slave 11:
Nome do campo |
Exemplo |
RTU |
ASCII |
|
Start of frame |
- |
t1-t2-t3 |
”:” |
0x3a |
Slave address |
0x0B |
0x0B |
”0B” |
0x30, 0x42 |
Function code |
0x03 |
0x03 |
”03” |
0x30, 0x33 |
Starting address high |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
Starting address low |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
Number of points high |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
Number of points low |
0x02 |
0x02 |
”02” |
0x30, 0x32 |
Error Check (LRC / CRC) |
- |
0xC4 |
”F0” |
0x46, 0x30 |
|
|
0xA1 |
|
|
End of frame |
|
t1-t2-t3 |
- |
0xD, 0xA |
Tabela 5.34: Exemplo consulta, registro Read Holding
Resposta:
Os dados de registro são condensados como 2 bytes por registro. O primeiro byte contém os bits de valores elevados, o segundo byte os bits de valores baixos. Uma resposta à consulta acima indicada, apresenta-se conforme se segue:
Nome do campo |
Exemplo |
RTU |
ASCII |
|
Start of frame |
- |
t1-t2-t3 |
”:” |
0x3A |
Slave address |
0x0B |
0x0B |
”0B” |
0x30, 0x42 |
Function code |
0x03 |
0x03 |
”03” |
0x30, 0x33 |
Byte Count |
0x04 |
0x04 |
”04” |
0x30, 0x34 |
Data Hi (Register 0) |
0x3F |
0x3F |
”3F” |
0x33, 0x46 |
Data Lo (Register 0) |
0xFB |
0xFB |
”FB” |
0x46, 0x42 |
Data Hi (Register 1) |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
Data Lo (Register 1) |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
Error Check (LRC / CRC) |
- |
0x2D |
”B4” |
0x42, 0x34 |
|
|
0x61 |
|
|
End of frame |
- |
t1-t2-t3 |
- |
0xD, 0xA |
Tabela 5.35: Exemplo resposta, registro Read Holding
Os conteúdos do registro 0 são indicados por meio de dois valores de byte hexadecimais: 0x3F e 0xFB ou 16379 decimais. Os conteúdos do registro 1 são 0x00 e 0x00 ou 0 decimal.
MODBUS / Configuração |
59 |
01-03-16 |
|
|
5.3.1.5 Registro Read Input (código de função 0x04)
Esta função serve para ler um número de palavras de entrada (também designado ”registros de entrada”). A difusão não é suportada e o número é limitado em 128 registros em um frame.
|
|
A consulta determina o endereço de partida (registro de partida) e o número dos |
||||||
Função! |
||||||||
|
registros que devem ser lidos. |
|
|
|
|
|||
|
|
O endereçamento começa com 0. Em Modicon o endereçamento começa com 1 (0x01). |
||||||
|
|
Exemplo para uma consulta dos registros 0 e 1 do slave 11: |
||||||
|
|
|
|
|
|
|
|
|
|
|
Nome do campo |
Exemplo |
RTU |
ASCII |
|
|
|
|
|
Start of frame |
- |
t1-t2-t3 |
”:” |
0x3a |
|
|
|
|
Slave address |
0x0B |
0x0B |
”0B” |
0x30, 0x42 |
|
|
|
|
Function code |
0x03 |
0x03 |
”03” |
0x30, 0x33 |
|
|
|
|
Starting address high |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
|
|
|
|
Starting address low |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
|
|
|
|
Number of points high |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
|
|
|
|
Number of points low |
0x02 |
0x02 |
”02” |
0x30, 0x32 |
|
|
|
|
Error Check (LRC / CRC) |
- |
0xC4 |
”F0” |
0x46, 0x30 |
|
|
|
|
|
|
0xA1 |
|
|
|
|
|
|
End of frame |
|
t1-t2-t3 |
- |
0xD, 0xA |
|
|
Tabela 5.36: Exemplo consulta, registro Read Input
Resposta:
Os dados de registro são condensados como 2 bytes por registro. O primeiro byte contém os bits de valores elevados, o segundo byte os bits de valores baixos. Uma resposta à consulta acima indicada, apresenta-se conforme se segue:
Nome do campo |
Exemplo |
RTU |
ASCII |
|
Start of frame |
- |
t1-t2-t3 |
”:” |
0x3A |
Slave address |
0x0B |
0x0B |
”0B” |
0x30, 0x42 |
Function code |
0x03 |
0x03 |
”03” |
0x30, 0x33 |
Byte Count |
0x04 |
0x04 |
”04” |
0x30, 0x34 |
Data Hi (Register 0) |
0x3F |
0x3F |
”3F” |
0x33, 0x46 |
Data Lo (Register 0) |
0xFB |
0xFB |
”FB” |
0x46, 0x42 |
Data Hi (Register 1) |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
Data Lo (Register 1) |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
Error Check (LRC / CRC) |
- |
0x2D |
”B4” |
0x42, 0x34 |
|
|
0x61 |
|
|
End of frame |
- |
t1-t2-t3 |
- |
0xD, 0xA |
Tabela 5.37: Exemplo resposta, registro Read Input
Os conteúdos do registro 0 são indicados por meio de dois valores de byte hexadecimais: 0x3F e 0xFB ou 16379 decimais. Os conteúdos do registro 1 são 0x00 e 0x00 ou 0 decimal.
60 |
MODBUS / Configuração |
|
01-03-16 |
|
5.3.1.6 Force Single Coil (código de função 0x05):
Com a ajuda desta função é escrito um bit de saída individual. Esta função também pode ser enviada como difusão, sendo definido o mesmo bit em todos os slaves. No acoplador/controlador o número dos pontos I/O está limitado em 256.
Enecessesmioque Consulta:
O estado fique ON ou OFF é especificado como constante no campo de dados da consulta. Um valor de 0xFF00 define o bit de saída para 1, um valor de 0x00 para 0. Não estão especificados outros valores e não têm qualquer efeito sobre o estado das saídas. Neste exemplo, o bit 0 no slave 11 é definido para 1:
Nome do campo |
Exemplo |
RTU |
ASCII |
|
Start of frame |
- |
t1-t2-t3 |
”:” |
0x3a |
Slave address |
0x0B |
0x0B |
”0B” |
0x30, 0x42 |
Function code |
0x05 |
0x05 |
”05” |
0x30, 0x35 |
Coil address high |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
Coil address low |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
Force data high |
0xFF |
0xFF |
”FF” |
0x46, 0x46 |
Force data low |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
Error Check (LRC / CRC) |
- |
0x8C |
”F1” |
0x46, 0x31 |
|
|
0x90 |
|
|
End of frame |
|
t1-t2-t3 |
- |
0xD, 0xA |
Tabela 5.38: Exemplo consulta, Force Single Coil
Resposta:
A resposta é um eco da consulta. É dada uma resposta se tiver sido definido um bit.
Nome de campo |
Exemplo |
RTU |
ASCII |
|
Start of frame |
- |
t1-t2-t3 |
”:” |
0x3a |
Slave address |
0x0B |
0x0B |
”0B” |
0x30, 0x42 |
Function code |
0x05 |
0x05 |
”05” |
0x30, 0x35 |
Coil address high |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
Coil address low |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
Force data high |
0xFF |
0xFF |
”FF” |
0x46, 0x46 |
Force data low |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
Error Check (LRC / CRC) |
- |
0x8C |
”F1” |
0x46, 0x31 |
|
|
0x90 |
|
|
End of frame |
|
t1-t2-t3 |
- |
0xD, 0xA |
Tabela 5.39: Exemplo resposta, Force Single Coil
MODBUS / Configuração |
61 |
01-03-16 |
|
|
5.3.1.7 Registro Preset Single (Código de função 0x06):
Esta função escreve um valor em uma palavra de saída individual (também designado por ”Registro de saída”). Esta função também pode ser enviada como difusão, sendo definida a mesma palavra de saída em todos os slaves.
Função! Consulta:
O endereçamento começa com 0. Em Modicon o endereçamento começa com 1 (0x01). A consulta determina o endereço da primeira palavra de saída que deve ser definida.
O valor a definir é definido no campo de dados de consulta.
No exemplo o registro 0 é definido no slave 11.
Nome do campo |
Exemplo |
RTU |
ASCII |
|
Start of frame |
- |
t1-t2-t3 |
”:” |
0x3a |
Slave address |
0x0B |
0x0B |
”0B” |
0x30, 0x42 |
Function code |
0x06 |
0x06 |
”06” |
0x30, 0x36 |
Register address high |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
Register address low |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
Preset data high |
0x12 |
0x12 |
”12” |
0x31, 0x32 |
Preset data low |
0x34 |
0x34 |
”34” |
0x33, 0x34 |
Error Check (LRC / CRC) |
- |
0x8C |
”A9” |
0x41, 0x39 |
|
|
0x17 |
|
|
End of frame |
|
t1-t2-t3 |
- |
0xD, 0xA |
Tabela 5.40: Exemplo consulta, registro Preset Single
Resposta:
A resposta é um eco da consulta que é enviada depois de definir os registros.
Nome de campo |
Exemplo |
RTU |
ASCII |
|
Start of frame |
- |
t1-t2-t3 |
”:” |
0x3a |
Slave address |
0x0B |
0x0B |
”0B” |
0x30, 0x42 |
Function code |
0x06 |
0x06 |
”06” |
0x30, 0x36 |
Register address high |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
Register address low |
0x00 |
0x00 |
”00” |
0x30, 0x30 |
Preset data high |
0x12 |
0x12 |
”12” |
0x31, 0x32 |
Preset data low |
0x34 |
0x34 |
”34” |
0x33, 0x34 |
Error Check (LRC / CRC) |
- |
0x8C |
”A9” |
0x41, 0x39 |
|
|
0x17 |
|
|
End of frame |
|
t1-t2-t3 |
- |
0xD, 0xA |
Tabela 5.41: Exemplo resposta, registro Preset Single
62 |
MODBUS / Configuração |
|
01-03-16 |
|
