Escolar Documentos
Profissional Documentos
Cultura Documentos
PROTOCOLO MODBUS
Caractersticas
A comunicao baseada no protocolo MODBUS possibilita a conexo com at 247 mdulos MKM
numa linha RS-485.
Especificaes:
Baud Rate =
9600 ou 19200 bps
Parity
=
nenhuma
Stop Bit
=
2
Data Bit
=
8
RTU (Remote Terminal Unit) - Modo de transmisso no qual os dados so transmitidos como
caracteres de 8 bits.
MASTER (PC)
SLAVE (MKM)
Endereo do Slave
Endereo do Slave
8 bits
8 bits
Cdigo da Funo
Cdigo da Funo
8 bits
8 bits
Dado
Dado
N * 8 bits
N * 8 bits
Error check
Error Check
16 bits
16 bits
Intervalo de Silncio Intervalo de Silncio
T1 T2 T3
T1 T2 T3
A interface de comunicao do padro RS-485, a dois fios, half-duplex, baudrate de 9600 ou 19200,
1 start bit, 8 bits de dados, 2 stop bits e sem paridade. Com exceo da velocidade, os demais
parmetros so fixos. A especificao da velocidade feita na especificao do pedido e, uma vez
definida, esta no mais poder ser alterada.
Apenas o master pode comear um dilogo com os slaves, sendo este dilogo do tipo question/reply
(endereo de apenas um slave) ou endereando a mensagem para todos os slaves (endereo 0 =
broadcast) sem obter um reply.
No protocolo MODBUS, o instrumento sai de fbrica com apenas o nmero de srie programado,
ficando a cargo do usurio definir um endereo na rede para o dispositivo que vai de 1 at 247.
MKM
PROTOCOLO MODBUS
Algoritmo
Uma mensagem iniciada com um intervalo de silncio de no mnimo 3,5 vezes a velocidade de
comunicao de um caracter. Por exemplo, a 9600 bps, um caracter leva 1,15ms para ser transmitido
(8N2 = 11 bits), portanto deve haver um silncio na rede de 4 ms antes de uma mensagem ser
transmitida. O nmero mximo de caracteres numa mensagem 29.
A rede monitorada continuamente pelo slave, incluindo durante o intervalo de silncio. Quando o
1o. caracter recebido, cada dispositivo decodifica-o para verificar se o seu endereo. Se no for, o
dispositivo deve aguardar que a rede fique em silncio ( sem transmisso ) por 3,5 vezes a velocidade
de comunicao de um caracter. Se o endereo for o do dispositivo, o mesmo deve receber todo o resto
do frame. O fim do frame indicado pelo intervalo de silncio. Uma mensagem deve ser transmitida
como uma cadeia continua de bytes.
Quando ocorrer erro de comunicao, uma retransmisso (retry) para o mesmo slave deve esperar no
mnimo 3 segundos.
// Endereo do Slave
// Funo MODBUS: Read Input Register
// Registro inicial para ler (MSB)
MKM
PROTOCOLO MODBUS
buf_485[3] = 0x14;
// Registro inicial para ler (LSB)
buf_485[4] = 0x00;
// Total de registros para ler (MSB)
buf_485[5] = 0x02;
// Total de registros para ler (LSB)
crc.i_crc = MB_CalcCRC (6, buf_485, 0xFFFF);
buf_485[6] = crc.c.crc[0];
// CRC (LSB)
buf_485[7] = crc.c_crc[1];
// CRC (MSB)
}
#define NUM_SHIFT
#define POLINOMIAL
8
0xA001 // Polinomial constant (RTU mode)
Cdigo do Dispositivo
Este documento apresenta as funes MODBUS disponveis para toda a linha de dispositivos MKM.
Para distinguir as caractersticas conforme o modelo do MKM, fornecido um cdigo que indica
quais funes MODBUS esto disponveis para um instrumento em particular. Consulte mais adiante
neste manual a funo Report Slave ID (17) para obter o cdigo do dispositivo.
Os cdigos vlidos so:
DISP.
MKM
CDIGO
0x60
DESCRIO
MKM-120
MKM
MKM
MKM
0x72
0x73
0x74
MKM
0x80
MKM
PROTOCOLO MODBUS
Funes MODBUS
As funes MODBUS para o MKM so:
* Broadcast - funes que podem ser endereadas para todos os slaves (endereo 0)
REGISTRO
EDP-1
EDP-2
SD-1
SD-2
DESCRIO
Entrada Digital de Pulso 1
Entrada Digital de Pulso 2
Sada 1
Sada 2
TIPO
BIT
BIT
BIT
BIT
RANGE
0=0FF / 1=ON
0=0FF / 1=ON
0=0FF / 1=ON
0=0FF / 1=ON
0x60
0x72
0x73
MASTER
0x00 0x00
0x04
0x74
0x80
0x02
0x00
(1) Registro
inicial para ler
CRC
8 bit 8 bit
Total de
registros para ler
(1) O registro inicial para ler obtido removendo o indicativo (nmero 1) e subtraindo o resultado por
1. No exemplo, o registro 10001 (decimal) transmitido como 0x0000 (hexadecimal): 10001 = 0001
= (0001 - 1) = 0000 = 0x0000 hexadecimal.
Endereo
do Slave
0x02
Byte Count
SLAVE
0x01 ESTADO
8 bit
CRC
8 bit - 8 bit
Estado das Entradas e Sadas
MEDIDORES KRON - 4/12
MKM
PROTOCOLO MODBUS
O estado das entradas e sadas digitais deve ser interpretado conforme tabela abaixo, onde bit 1 indica
porta ligada e bit 0 indica porta desligada.
D7
BIT
REGISTRO ---
D6
---
D5
---
D4
---
D3
SD-2
D2
SD-1
D1
EDP-2
D0
EDP-1
DESCRIO
Relao do Transformador de Potncia
Relao do Transformador de Corrente
Relao Watt-horas por pulso
Tipo de Ligao
Tempo de Integrao em minutos
TIPO
IEEE754 32-bit floating point
IEEE754 32-bit floating point
unsigned int 16-bit
unsigned int 8-bit
unsigned int 8-bit
RANGE
------0 65535
0 255
0 60
TL
0
1
2
16
17
18
48
80
REGISTRO
TP
TP
TC
TC
KE
TL / TI
DESCRIO
IEEE 32-bit fp 1a. parte (F2,F1)
IEEE 32-bit fp 2a. parte (F0,EXP)
IEEE 32-bit fp 1a. parte (F2,F1)
IEEE 32-bit fp 2a. parte (F0,EXP)
unsigned int 16-bit (LSB,MSB)
unsigned int 8-bit (LSB) / unsigned int 8-bit (MSB)
Observe que para cada registro temos dois bytes. Os frames desta funo para o master e slave so:
Funo
Endereo
do Slave
(1) Registro
inicial para ler
0x03
MASTER
0x00 0x02 0x00
0x02
CRC
8 bit - 8 bit
Total de
registros para ler
MEDIDORES KRON - 5/12
MKM
PROTOCOLO MODBUS
(1) O registro inicial para ler obtido removendo o indicativo (nmero 4) e subtraindo o resultado por
1. No exemplo, o registro 40003 (decimal) transmitido como 0x0002 (hexadecimal): 40003 = 0003
= (0003 - 1) = 0002 = 0x0002 hexadecimal.
Endereo
do Slave
0x03
0x04
SLAVE
0x00 0x80
0x89
0x44
CRC
8 bit - 8 bit
Byte Count
O registro byte count igual ao total de registros para ler vezes 2, pois cada registro possui 2 bytes.
No exemplo anterior o master pediu uma leitura dos registros referentes ao TC (40003 e 40004) e
obteve como resposta o valor 0x00808944 (IEEE 32-bit floating point). Convertendo este valor para
decimal temos que TC = 1100,0.
MKM
PROTOCOLO MODBUS
REG.
NS
U
I
FP
S
Q
P
F
U1
U2
U3
I1
I2
I3
P1
P2
P3
Q1
Q2
Q3
S1
S2
S3
FP1
FP2
FP3
EA+
ER+
EAERMDA
DA
MDS
DS
DESCRIO
Nmero de Srie
Tenso Trifsica (V)
Corrente Trifsica (A)
Fator de Potncia Trifsico
Potncia Aparente Trifsica (VA)
Potncia Reativa Trifsica (VAr)
Potncia Ativa Trifsica (W)
Freqncia (Hz)
Tenso Linha 1 (V)
Tenso Linha 2 (V)
Tenso Linha 3 (V)
Corrente Linha 1 (A)
Corrente Linha 2 (A)
Corrente Linha 3 (A)
Potncia Ativa Linha 1 (W)
Potncia Ativa Linha 2 (W)
Potncia Ativa Linha 3 (W)
Potncia Reativa Linha 1 (VAr)
Potncia Reativa Linha 2 (VAr)
Potncia Reativa Linha 3 (VAr)
Potncia Aparente Linha 1 (VA)
Potncia Aparente Linha 2 (VA)
Potncia Aparente Linha 3 (VA)
Fator de Potncia Linha 1
Fator de Potncia Linha 2
Fator de Potncia Linha 3
Energia Ativa Positiva (KWh)
Energia Reativa Positiva (KVArh)
Energia Ativa Negativa (KWh)
Energia Reativa Negativa (KQh)
Mx. Demanda Ativa (KW)
Demanda Ativa (KW)
Mx. Demanda Aparente (KVA)
Demanda Aparente (KVA)
TIPO
Unsigned int 32-bit (MSB,LSB)
IEEE 32-bit fp (F2,F1,F0,EXP)
IEEE 32-bit fp (F2,F1,F0,EXP)
IEEE 32-bit fp (F2,F1,F0,EXP)
IEEE 32-bit fp (F2,F1,F0,EXP)
IEEE 32-bit fp (F2,F1,F0,EXP)
IEEE 32-bit fp (F2,F1,F0,EXP)
IEEE 32-bit fp (F2,F1,F0,EXP)
IEEE 32-bit fp (F2,F1,F0,EXP)
IEEE 32-bit fp (F2,F1,F0,EXP)
IEEE 32-bit fp (F2,F1,F0,EXP)
IEEE 32-bit fp (F2,F1,F0,EXP)
IEEE 32-bit fp (F2,F1,F0,EXP)
IEEE 32-bit fp (F2,F1,F0,EXP)
IEEE 32-bit fp (F2,F1,F0,EXP)
IEEE 32-bit fp (F2,F1,F0,EXP)
IEEE 32-bit fp (F2,F1,F0,EXP)
IEEE 32-bit fp (F2,F1,F0,EXP)
IEEE 32-bit fp (F2,F1,F0,EXP)
IEEE 32-bit fp (F2,F1,F0,EXP)
IEEE 32-bit fp (F2,F1,F0,EXP)
IEEE 32-bit fp (F2,F1,F0,EXP)
IEEE 32-bit fp (F2,F1,F0,EXP)
IEEE 32-bit fp (F2,F1,F0,EXP)
IEEE 32-bit fp (F2,F1,F0,EXP)
IEEE 32-bit fp (F2,F1,F0,EXP)
IEEE 32-bit fp (F2,F1,F0,EXP)
IEEE 32-bit fp (F2,F1,F0,EXP)
IEEE 32-bit fp (F2,F1,F0,EXP)
IEEE 32-bit fp (F2,F1,F0,EXP)
IEEE 32-bit fp (F2,F1,F0,EXP)
IEEE 32-bit fp (F2,F1,F0,EXP)
IEEE 32-bit fp (F2,F1,F0,EXP)
IEEE 32-bit fp (F2,F1,F0,EXP)
RANGE
0,0 99.999.999,0
0,0 99.999.999,0
0,0 -99.999.999,0
0,0 -99.999.999,0
0x60
0x72
0x73
0x74
0x80
REG.
EDP-1
EDP-2
DESCRIO
Contador da EDP-1
Contador da EDP-2
TIPO
IEEE 32-bit fp (F2,F1,F0,EXP)
IEEE 32-bit fp (F2,F1,F0,EXP)
RANGE
0,0 9.999.999,0
0,0 9.999.999,0
MKM
PROTOCOLO MODBUS
0x04
MASTER
0x00 0x0E 0x00
0x02
(1) Registro
inicial para ler
CRC
8 bit - 8 bit
(2) Total de
registros para ler
(1) O registro inicial para ler obtido removendo o indicativo (nmero 3) e subtraindo o resultado
por 1. No exemplo, o registro 30015 (decimal) transmitido como 0x000E (hexadecimal): 30015
= 0015 = (0015 - 1) = 00014 = 0x000E hexadecimal.
(2) No mximo podem ser lidos 12 registros (6 grandezas eltricas) para cada requisio.
Endereo
do Slave
0x04
0x04
SLAVE
0x00 0x00
0x70
0x42
CRC
8 bit - 8 bit
Byte Count
O registro byte count igual ao total de registros para ler vezes 2, pois cada registro possui 2 bytes.
No exemplo anterior o master pediu uma leitura dos registros que contm a frequncia (30015 e
30016) e obteve como resposta o valor 0x00007042 (IEEE 32-bit floating point). Convertendo este
valor para decimal temos que Frequncia = 60,0 Hz.
Force Single Coil (5)
Esta funo permite executar os seguintes comandos no MKM:
COMANDO
001
002
003
004
005
006
007
021
022
031
032
040
050
051
052
080
DESCRIO
Zera Demanda Ativa (DA)
Zera Demanda Aparente (DS)
Zera Mxima Demanda Ativa (MDA)
Zera Mxima Demanda Aparente (MDS)
Zera Energia Ativa Positiva (EA+)
Reinicializa Dispositivo
Sincroniza Clculo da Demanda
Zera Contador EDP-1
Zera Contador EDP-2
Liga / Desliga SD-1
Liga / Desliga SD-2
Zera Energias, Demandas e Contadores EDPs
Zera Energia Reativa Positiva (ER+)
Zera Energia Ativa Negativa (EA-)
Zera Energia Reativa Negativa (ER-)
Zera Contedo da Memria de Massa
MKM
PROTOCOLO MODBUS
0x05
0x00
MASTER
0x04 0xFF
0x00
(1) Comando
CRC
8 bit - 8 bit
(2) 0xFF00 = ON
0x0000 = OFF
(1) Este registro obtido subtraindo 1 do comando desejado. No exemplo o comando 005 enviado
como 0x0004.
(2) Utilizado para ligar (0xFF00) ou desligar (0x0000) as sadas digitais. Ignorado pelos outros
comandos
O Slave retorna uma cpia do frame recebido. Para o exemplo acima:
Endereo
do Slave
0x05
SLAVE
0x00 0x04 0xFF
0x00
CRC
8 bit - 8 bit
0x06
0x00
MASTER
0x05 0x00
0x01
CRC
8 bit - 8 bit
(1) O registro para programar obtido removendo o indicativo (nmero 4) e subtraindo o resultado
por 1. No exemplo, o registro 40006 (decimal) transmitido como 0x0005 (hexadecimal): 40006 =
0006 = (0006 - 1) = 0005 = 0x0005 hexadecimal.
Funo
Endereo
do Slave
MKM
PROTOCOLO MODBUS
DESCRIO
Funcionamento correto
Inverso de Fase ou falta de Fase
Erro matemtico
Overflow na gerao do Pulso de Energia
Excedido o limite permitido para Urms e/ou Irms
Sistema reinicializado incorretamente
Falha Memria de Massa
Observe que o cdigo binrio, ou seja, pode haver uma combinao de cdigos. Assim, um cdigo de
erro 09 identifica um cdigo de erro 01 mais cdigo 08.
Os frames desta funo para o master e slave so:
MASTER
Endereo 07
CRC
do Slave
8 bit - 8 bit
Endereo
do Slave
07
SLAVE
Cdigo
CRC
8 bit - 8 bit
0x10
0x00
0x00
0x00
MASTER
0x02 0x04 0x00 0x80 0xBB
Reg 40001 =
0x0080
Byte Count
0x44
CRC
8 bit - 8 bit
Reg 40002 =
0xBB44
(1) O registro inicial para programar obtido removendo o indicativo (nmero 4) e subtraindo o
resultado por 1. No exemplo, o registro 40001 (decimal) transmitido como 0x0000 (hexadecimal):
40001 = 0001 = (0001 - 1) = 0000 = 0x0000 hexadecimal.
Funo
Endereo
do Slave
0x10
0x00
SLAVE
0x00 0x00
0x02
CRC
8 bit - 8 bit
Quantidade
MKM
PROTOCOLO MODBUS
No exemplo acima o master programou os registros referentes ao TP (40001 e 40002) como 1500
(IEEE 32-bit float pointing = 0x0080BB44).
Ateno: O frame transmitido pelo master no deve exceder 29 bytes.
Slave
Address
Endereo 0x11
do Slave
Onde:
Byte Count
CDIGO
ON / OFF
XX XX
Byte
Count
MASTER
0x11
CRC
8 bit - 8 bit
SLAVE
CDIGO ON /
OFF
XX
XX
CRC
= Sempre 0x04
= Cdigo do Dispositivo
= Sempre ON 0xFF
= Reservado
Endereo
do Slave
SLAVE
0x80 + Funo Cdigo
de Erro
CRC
8 bit - 8 bit
Nmero da
funo enviada
pelo master com
o bit 7 = 1
Os possveis cdigos de erro so:
Cdigo de Erro
Descrio
01
Ilegal Function
02
Ilegal Data Address
03
Ilegal Data Value
MKM
PROTOCOLO MODBUS
(0 / 0x42)
ConfigAddress ( 0 / 0x42)
Esta funo, embora seja especial, compatvel com os dispositivos Electrex e TKE-01. O slave no
dever gerar reply e, no caso do MKM, este no necessita estar com o jumper CONFIGURAO.
Esta funo permite configurar o endereo de um dispositivo atravs de seu nmero de srie. Os
endereos vlidos vo de 1 at 247, sendo que cada dispositivo deve possuir um endereo nico na
rede. Para certificar-se que o endereo desejado j no est cadastrado em outro dispositivo, antes de
executar esta funo envie, por exemplo, a funo 07 com o endereo desejado para a rede. Caso voc
no obtenha resposta, significa que nenhum dispositivo foi configurado com este endereo.
0x00
0x42
MASTER
Nmero de Srie do Dispositivo
8 bit - 8 bit - 8 bit - 8 bit
Novo Endereo
CRC
8 bit
8 bit - 8 bit
Por exemplo, supondo um dispositivo com nmero de srie 21000, para configur-lo para o endereo
100:
MASTER
0x00 0x42
0x00 0x00 0x52 0x08
0x64
CRC
Observe que o dispositivo no gera reply.
Timing
Os seguintes tempos devem ser respeitados na comunicao entre o Master e o Slave:
Ao
Retry para um mesmo slave
Delay para iniciar a transmisso de um frame
Aguardar a recepo de um frame
Delay para transmitir um byte do frame
Aguardar a recepo de um byte do frame
Tempo para confirmar silncio na rede
Equate
DELAY_RETRY_SEND_FRAME
DELAY_SEND_FRAME
TIMEOUT_RECEIVE_FRAME
DELAY_SEND_BYTE
TIMEOUT_RECEIVE_BYTE
CONFIRM_SILENT
3 segundos
> 10 ms
1 segundo
MASTER SLAVE
> 10 ms
4 ms
1 segundo
< 3 ms
1 ms
3 ms
3 ms