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