0% acharam este documento útil (0 voto)
22 visualizações16 páginas

Protocolo MODBUS para Medidores KRON

1) O documento descreve o protocolo MODBUS utilizado na comunicação com os medidores MKM da Kron Instrumentos Elétricos. 2) O protocolo permite a conexão de até 247 módulos MKM em uma linha RS-485 utilizando os parâmetros de comunicação padrão MODBUS. 3) O documento lista as funções MODBUS disponíveis nos medidores MKM, como ler registradores de entrada e saída, forçar saídas e ler o status do dispositivo.

Enviado por

Gabriel Fuchs
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
22 visualizações16 páginas

Protocolo MODBUS para Medidores KRON

1) O documento descreve o protocolo MODBUS utilizado na comunicação com os medidores MKM da Kron Instrumentos Elétricos. 2) O protocolo permite a conexão de até 247 módulos MKM em uma linha RS-485 utilizando os parâmetros de comunicação padrão MODBUS. 3) O documento lista as funções MODBUS disponíveis nos medidores MKM, como ler registradores de entrada e saída, forçar saídas e ler o status do dispositivo.

Enviado por

Gabriel Fuchs
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

MKM PROTOCOLO MODBUS

KRON INSTRUMENTOS ELÉTRICOS

MKM

PROTOCOLO MODBUS
Rev. 1.4

Características
A comunicação baseada no protocolo MODBUS possibilita a conexão com até 247 módulos MKM
numa linha RS-485.

Especificações:

• Baud Rate = 9600 ou 19200 bps


• Parity = nenhuma
• Stop Bit = 2
• Data Bit = 8
• RTU (Remote Terminal Unit) - Modo de transmissão no qual os dados são transmitidos como
caracteres de 8 bits.

MASTER (PC) SLAVE (MKM)


Endereço do Slave Endereço do Slave
8 bits 8 bits
Código da Função Código da Função
8 bits 8 bits
Dado Dado
N * 8 bits N * 8 bits
Error check Error Check
16 bits 16 bits
Intervalo de Silêncio Intervalo de Silêncio
T1 T2 T3 T1 T2 T3

A interface de comunicação é do padrão 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 exceção da velocidade, os demais
parâmetros são fixos. A especificação da velocidade é feita na especificação do pedido e, uma vez
definida, esta não mais poderá ser alterada.

Apenas o master pode começar um diálogo com os slaves, sendo este diálogo do tipo question/reply
(endereço de apenas um slave) ou endereçando a mensagem para todos os slaves (endereço 0 =
broadcast) sem obter um reply.

No protocolo MODBUS, o instrumento sai de fábrica com apenas o número de série programado,
ficando a cargo do usuário definir um endereço na rede para o dispositivo que vai de 1 até 247.

\eng\mkm\doc\protocolo modbus\rev1_4\[Link] MEDIDORES KRON - 1/16


MKM PROTOCOLO MODBUS

Algoritmo
Uma mensagem é iniciada com um intervalo de silêncio de no mínimo 3,5 vezes a velocidade de
comunicação de um caracter. Por exemplo, a 9600 bps, um caracter leva 1,15ms para ser transmitido
(8N2 = 11 bits), portanto deve haver um silêncio na rede de 4 ms antes de uma mensagem ser
transmitida. O número máximo de caracteres numa mensagem é 29.

A rede é monitorada continuamente pelo slave, incluindo durante o intervalo de silêncio. Quando o
1o. caracter é recebido, cada dispositivo decodifica-o para verificar se é o seu endereço. Se não for, o
dispositivo deve aguardar que a rede fique em silêncio ( sem transmissão ) por 3,5 vezes a velocidade
de comunicação de um caracter. Se o endereço for o do dispositivo, o mesmo deve receber todo o resto
do frame. O fim do frame é indicado pelo intervalo de silêncio. Uma mensagem deve ser transmitida
como uma cadeia continua de bytes.

Quando ocorrer erro de comunicação, uma retransmissão (retry) para o mesmo slave deve esperar no
mínimo 3 segundos.

Procedimento para cálculo do CRC


No modo RTU, é incluído na mensagem um error-checking baseado no método CRC que verifica se a
mensagem recebida está correta.

O CRC contém dois bytes e é calculado pelo dispositivo transmissor, que anexa o CRC na mensagem.
O dispositivo receptor recalcula o CRC após a recepção da mensagem e compara o valor calculado
com o valor recebido. Se os valores não são iguais, a mensagem é descartada.

O algoritmo para cálculo do CRC é:

1. Preencha um registro de 16 bits com 1s (0xFFFF)


2. Faça um OR EXCLUSIVE entre o registro (lsb) e o byte de transmissão
3. Desloque o registro obtido 1 bit à direita
4. Se o bit menos significativo do registro for igual a 1, faça um OR EXCLUSIVE com os seguintes
16 bits:
10100000 00000001
MSB LSB
5. Repita os passos 3 e 4 oito vezes
6. Repita os passos 2,3,4 e 5 para todos os bytes da mensagem
7. O conteúdo final do registro é o valor do CRC que é transmitido no final da mensagem começando
com o byte menos significativo.

A seguir uma função para cálculo do CRC escrita em C:

void main()
{
unsigned char buf_485[30];
union CRC
{ unsigned char c_crc[2];
unsigned int i_crc;
} crc;

crc.i_crc = 0;
buf_485[0] = 0x1B; // Endereço do Slave
buf_485[1] = 0x04; // Função MODBUS: Read Input Register
buf_485[2] = 0x00; // Registro inicial para ler (MSB)

MEDIDORES KRON - 2/16


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] = [Link][0]; // CRC (LSB)
buf_485[7] = crc.c_crc[1]; // CRC (MSB)
}

#define NUM_SHIFT 8
#define POLINOMIAL 0xA001 // Polinomial constant (RTU mode)

unsigned int MB_CalcCRC (unsigned char num_of_char, unsigned char *ptr_num,


register unsigned int checksum)
{
char i,j;

// for all char


for (i=0; i < num_of_char; i++)
{
// execute XOR
checksum ^= *ptr_num;
ptr_num++;

// shift checksum 1 bit right


for (j=1; j < NUM_SHIFT+1; j++)
{
// if LSBit = 0
if ((checksum & 0x01) == 0)
checksum >>= 1;
else
checksum = (checksum >> 1) ^ POLINOMIAL;
}
}
return(checksum);
}

Código do Dispositivo
Este documento apresenta as funções MODBUS disponíveis para toda a linha de dispositivos MKM.
Para distinguir as características conforme o modelo do MKM, é fornecido um código que indica
quais funções MODBUS estão disponíveis para um instrumento em particular. Consulte mais adiante
neste manual a função “Report Slave ID (17)” para obter o código do dispositivo.

Os códigos válidos são:

DISP. CÓDIGO CHIP PIC DESCRIÇÃO


TKE-485 0x01 --- 16C622 TKE-01( p/ ReportSlaveId)
TKE-485 0x71 --- 16C622 TKE-01 (p/ ReportSlaveIdKron)

MKM 0x60 CISS-4010S 16C66 “MKM-120”

MKM 0x72 CISS-4010S 16C66 MKM-01 sem Demanda


MKM 0x73 CISS-4010S 16C66 MKM-01 com Demanda Ativa
MKM 0x74 CISS-4010S 17C756 MKM-01 com Demanda Ativa e Aparente

MKM 0x80 CISS-4010S 17C756 MKM-01 com Memória de Massa

MEDIDORES KRON - 3/16


MKM PROTOCOLO MODBUS

Funções MODBUS
As funções MODBUS para o MKM são:

• Read Input Status (2)


• Read Holding Register (3)
• Read Input Register (4)
• Force Single Coil * (5)
• Preset Single Register * (6)
• Read Exception Status (7)
• Preset Multiple Register * (16)
• Report Slave ID (17)
• Exception Response (ERROR)

* Broadcast - funções que podem ser endereçadas para todos os slaves (endereço 0)

Read Input Status (2)

Esta função permite ler o estado das portas de entrada e saída digitais do instrumento. Os seguintes
registros estão disponíveis:

ENDEREÇO REGISTRO DESCRIÇÃO TIPO RANGE


10001 EDP-1 Entrada Digital de Pulso 1 BIT 0=0FF / 1=ON
10002 EDP-2 Entrada Digital de Pulso 2 BIT 0=0FF / 1=ON
10003 SD-1 Saída 1 BIT 0=0FF / 1=ON
10004 SD-2 Saída 2 BIT 0=0FF / 1=ON

O código do MKM e os registros válidos para esta função são:

REGISTROS VÁLIDOS 0x60 0x72 0x73 0x74 0x80


10001 à 10004 √

Os frames desta função para o master e slave são:

Função
MASTER
Endereço 0x02 0x00 0x00 0x00 0x04 CRC
do Slave 8 bit – 8 bit

(1) Registro
inicial para ler Total de
registros para ler

(1) O registro inicial para ler é obtido removendo o indicativo (número 1) e subtraindo o resultado por
1. No exemplo, o registro 10001 (decimal) é transmitido como 0x0000 (hexadecimal): 10001 = 0001
= (0001 - 1) = 0000 = 0x0000 hexadecimal.

SLAVE
Endereço 0x02 0x01 ESTADO CRC
do Slave 8 bit 8 bit - 8 bit

Byte Count Estado das Entradas e Saídas

MEDIDORES KRON - 4/16


MKM PROTOCOLO MODBUS

O estado das entradas e saídas digitais deve ser interpretado conforme tabela abaixo, onde bit 1 indica
porta ligada e bit 0 indica porta desligada.

BIT D7 D6 D5 D4 D3 D2 D1 D0
REGISTRO --- --- --- --- SD-2 SD-1 EDP-2 EDP-1

Read Holding Register (3)

Esta função permite ler os registros de configuração do instrumento. Os seguintes registros estão
disponíveis:

REGISTRO DESCRIÇÃO TIPO RANGE


TP Relação do Transformador de Potência IEEE754 32-bit floating point ----
TC Relação do Transformador de Corrente IEEE754 32-bit floating point ----
KE Relação Watt-horas por pulso unsigned int 16-bit 0 à 65535
TL Tipo de Ligação unsigned int 8-bit 0 à 255
TI Tempo de Integração em minutos unsigned int 8-bit 0 à 60

Os registros TP e TC indicam a relação do transformador de potência ou corrente, o registro KE


indica quantos Wh eqüivale um pulso (caso o dispositivo não possua saída de pulsos, KE deve ser
igual a zero). TI é o tempo de integração em minutos para o cálculo da Demanda e da Máxima
Demanda. Para o tipo de ligação (TL) siga a tabela abaixo:

TIPO DE LIGAÇÃO TL
4 FIOS - 3 ELEMENTOS 0
4 FIOS - 2 ELEMENTOS 1
4 FIOS - 1 ELEMENTO 2
3 FIOS - 3 ELEMENTOS 16
3 FIOS - 2 ELEMENTOS 17
3 FIOS - 1 ELEMENTO 18
3 FIOS - 2 ELEMENTOS (Delta TL48) 48
3 FIOS - 2 ELEMENTOS (Delta TL80) 80

Os registros são endereçados da seguinte forma:

ENDEREÇO REGISTRO DESCRIÇÃO


40001 TP IEEE 32-bit fp 1a. parte (F2,F1)
40002 TP IEEE 32-bit fp 2a. parte (F0,EXP)
40003 TC IEEE 32-bit fp 1a. parte (F2,F1)
40004 TC IEEE 32-bit fp 2a. parte (F0,EXP)
40005 KE unsigned int 16-bit (LSB,MSB)
40006 TL / TI unsigned int 8-bit (LSB) / unsigned int 8-bit (MSB)

Observe que para cada registro temos dois bytes. Os frames desta função para o master e slave são:
Função
MASTER
Endereço 0x03 0x00 0x02 0x00 0x02 CRC
do Slave 8 bit - 8 bit

(1) Registro
inicial para ler Total de
registros para ler

MEDIDORES KRON - 5/16


MKM PROTOCOLO MODBUS

(1) O registro inicial para ler é obtido removendo o indicativo (número 4) e subtraindo o resultado por
1. No exemplo, o registro 40003 (decimal) é transmitido como 0x0002 (hexadecimal): 40003 = 0003
= (0003 - 1) = 0002 = 0x0002 hexadecimal.

SLAVE
Endereço 0x03 0x04 0x00 0x80 0x89 0x44 CRC
do Slave 8 bit - 8 bit

Byte Count

Reg. 40004 = 0x8944


Reg. 40003 = 0x0080

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.

MEDIDORES KRON - 6/16


MKM PROTOCOLO MODBUS

Read Input Register (4)

Esta função permite ler os registros no qual as grandezas elétricas estão armazenadas. Os seguintes
registros estão disponíveis no MKM:

ENDEREÇO REG. DESCRIÇÃO TIPO RANGE


30001, 30002 NS Número de Série Unsigned int 32-bit (MSB,LSB)
30003, 30004 U Tensão Trifásica (V) IEEE 32-bit fp (F2,F1,F0,EXP)
30005, 30006 I Corrente Trifásica (A) IEEE 32-bit fp (F2,F1,F0,EXP)
30007, 30008 FP Fator de Potência Trifásico IEEE 32-bit fp (F2,F1,F0,EXP)
30009, 30010 S Potência Aparente Trifásica (VA) IEEE 32-bit fp (F2,F1,F0,EXP)
30011, 30012 Q Potência Reativa Trifásica (VAr) IEEE 32-bit fp (F2,F1,F0,EXP)
30013, 30014 P Potência Ativa Trifásica (W) IEEE 32-bit fp (F2,F1,F0,EXP)
30015, 30016 F Freqüência (Hz) IEEE 32-bit fp (F2,F1,F0,EXP)
30017, 30018 U1 Tensão Linha 1 (V) IEEE 32-bit fp (F2,F1,F0,EXP)
30019, 30020 U2 Tensão Linha 2 (V) IEEE 32-bit fp (F2,F1,F0,EXP)
30021, 30022 U3 Tensão Linha 3 (V) IEEE 32-bit fp (F2,F1,F0,EXP)
30023, 30024 I1 Corrente Linha 1 (A) IEEE 32-bit fp (F2,F1,F0,EXP)
30025, 30026 I2 Corrente Linha 2 (A) IEEE 32-bit fp (F2,F1,F0,EXP)
30027, 30028 I3 Corrente Linha 3 (A) IEEE 32-bit fp (F2,F1,F0,EXP)
30029, 30030 P1 Potência Ativa Linha 1 (W) IEEE 32-bit fp (F2,F1,F0,EXP)
30031, 30032 P2 Potência Ativa Linha 2 (W) IEEE 32-bit fp (F2,F1,F0,EXP)
30033, 30034 P3 Potência Ativa Linha 3 (W) IEEE 32-bit fp (F2,F1,F0,EXP)
30035, 30036 Q1 Potência Reativa Linha 1 (VAr) IEEE 32-bit fp (F2,F1,F0,EXP)
30037, 30038 Q2 Potência Reativa Linha 2 (VAr) IEEE 32-bit fp (F2,F1,F0,EXP)
30039, 30040 Q3 Potência Reativa Linha 3 (VAr) IEEE 32-bit fp (F2,F1,F0,EXP)
30041, 30042 S1 Potência Aparente Linha 1 (VA) IEEE 32-bit fp (F2,F1,F0,EXP)
30043, 30044 S2 Potência Aparente Linha 2 (VA) IEEE 32-bit fp (F2,F1,F0,EXP)
30045, 30046 S3 Potência Aparente Linha 3 (VA) IEEE 32-bit fp (F2,F1,F0,EXP)
30047, 30048 FP1 Fator de Potência Linha 1 IEEE 32-bit fp (F2,F1,F0,EXP)
30049, 30050 FP2 Fator de Potência Linha 2 IEEE 32-bit fp (F2,F1,F0,EXP)
30051, 30052 FP3 Fator de Potência Linha 3 IEEE 32-bit fp (F2,F1,F0,EXP)
30053, 30054 EA+ Energia Ativa Positiva (KWh) IEEE 32-bit fp (F2,F1,F0,EXP) 0,0 à 99.999.999,0
30055, 30056 ER+ Energia Reativa Positiva (KVArh) IEEE 32-bit fp (F2,F1,F0,EXP) 0,0 à 99.999.999,0
30057, 30058 EA- Energia Ativa Negativa (KWh) IEEE 32-bit fp (F2,F1,F0,EXP) 0,0 à -99.999.999,0
30059, 30060 ER- Energia Reativa Negativa (KQh) IEEE 32-bit fp (F2,F1,F0,EXP) 0,0 à -99.999.999,0
30061, 30062 MDA Máx. Demanda Ativa (KW) IEEE 32-bit fp (F2,F1,F0,EXP)
30063, 30064 DA Demanda Ativa (KW) IEEE 32-bit fp (F2,F1,F0,EXP)
30065, 30066 MDS Máx. Demanda Aparente (KVA) IEEE 32-bit fp (F2,F1,F0,EXP)
30067, 30068 DS Demanda Aparente (KVA) IEEE 32-bit fp (F2,F1,F0,EXP)

O código do MKM e os registros válidos para esta função são:

REGISTROS VÁLIDOS 0x60 0x72 0x73 0x74 0x80


30001 à 30060 √
30001 à 30064 √ √
30001 à 30068 √ √

O MKM código 0x60 difere no tratamento dos seguintes registros:

ENDEREÇO REG. DESCRIÇÃO TIPO RANGE


30057, 30058 EDP-1 Contador da EDP-1 IEEE 32-bit fp (F2,F1,F0,EXP) 0,0 à 9.999.999,0
30059, 30060 EDP-2 Contador da EDP-2 IEEE 32-bit fp (F2,F1,F0,EXP) 0,0 à 9.999.999,0

MEDIDORES KRON - 7/16


MKM PROTOCOLO MODBUS

Os frames desta função para o master e slave são:


Função
MASTER
Endereço 0x04 0x00 0x0E 0x00 0x02 CRC
do Slave 8 bit - 8 bit

(1) Registro
inicial para ler (2) Total de
registros para ler

(1) O registro inicial para ler é obtido removendo o indicativo (número 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 máximo podem ser lidos 12 registros (6 grandezas elétricas) para cada requisição.

SLAVE
Endereço 0x04 0x04 0x00 0x00 0x70 0x42 CRC
do Slave 8 bit - 8 bit

Byte Count

Reg. 30016 = 0x7042


Reg. 30015 = 0x0000
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 contém a frequência (30015 e
30016) e obteve como resposta o valor 0x00007042 (IEEE 32-bit floating point). Convertendo este
valor para decimal temos que Frequência = 60,0 Hz.

Force Single Coil (5)

Esta função permite executar os seguintes comandos no MKM:

COMANDO DESCRIÇÃO 0x60 0x72 0x73 0x74 0x80


001 Zera Demanda Ativa (DA) √ √ √ √
002 Zera Demanda Aparente (DS) √ √
003 Zera Máxima Demanda Ativa (MDA) √ √ √ √
004 Zera Máxima Demanda Aparente (MDS) √ √
005 Zera Energia Ativa Positiva (EA+) √ √ √ √ √
006 Reinicializa Dispositivo √ √ √ √ √
007 Sincroniza Cálculo da Demanda √ √ √ √
021 Zera Contador EDP-1 √
022 Zera Contador EDP-2 √
031 Liga / Desliga SD-1 √
032 Liga / Desliga SD-2 √
040 Zera Energias, Demandas e Contadores EDPs √ √ √ √
050 Zera Energia Reativa Positiva (ER+) √ √ √ √ √
051 Zera Energia Ativa Negativa (EA-) √ √ √ √
052 Zera Energia Reativa Negativa (ER-) √ √ √ √
080 Zera Conteúdo da Memória de Massa √

MEDIDORES KRON - 8/16


MKM PROTOCOLO MODBUS

Os frames desta função para o master e slave são:

Função
MASTER
Endereço 0x05 0x00 0x04 0xFF 0x00 CRC
do Slave 8 bit - 8 bit

(1) Comando (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 saídas digitais. Ignorado pelos outros
comandos

O Slave retorna uma cópia do frame recebido. Para o exemplo acima:

SLAVE
Endereço 0x05 0x00 0x04 0xFF 0x00 CRC
do Slave 8 bit - 8 bit

Preset Single Register (6)

Esta função serve para programar um dos registros de configuração do instrumento (“Holding
Registers”). Para saber quais são estes registros consulte a função “Read Holding Register (3)”. Os
frames desta função para o master e slave são:
Função
MASTER
Endereço 0x06 0x00 0x05 0x00 0x01 CRC
do Slave 8 bit - 8 bit

(1) Registro para Valor para ser


programar programado

(1) O registro para programar é obtido removendo o indicativo (número 4) e subtraindo o resultado
por 1. No exemplo, o registro 40006 (decimal) é transmitido como 0x0005 (hexadecimal): 40006 =
0006 = (0006 - 1) = 0005 = 0x0005 hexadecimal.
Função
SLAVE (echo of the command received)
Endereço 0x06 0x00 0x05 0x00 0x01 CRC
do Slave 8 bit - 8 bit

(1) Registro para Valor para ser


programar programado
Para esta função o slave retorna uma cópia do comando recebido. No exemplo anterior o master
programou o registro 40006 (TL - Tipo de Ligação) com o valor 01: 4 fios - 2 elementos.

MEDIDORES KRON - 9/16


MKM PROTOCOLO MODBUS

Read Exception Status (7)

Permite checar a integridade do dispositivo. Os códigos retornados pelo instrumento são:

CÓDIGO DESCRIÇÃO
0x00 Funcionamento correto
0x01 Inversão de Fase ou falta de Fase
0x02 Erro matemático
0x04 Overflow na geração do Pulso de Energia
0x08 Excedido o limite permitido para Urms e/ou Irms
0x10 Sistema reinicializado incorretamente
0x80 Falha Memória de Massa

Observe que o código é binário, ou seja, pode haver uma combinação de códigos. Assim, um código de
erro 09 identifica um código de erro 01 mais código 08.

Os frames desta função para o master e slave são:

MASTER
Endereço 07 CRC
do Slave 8 bit - 8 bit

SLAVE
Endereço 07 Código CRC
do Slave 8 bit - 8 bit

Preset Multiple Register (16)

Esta função serve para programar vários registros de configuração do instrumento (“Holding
Registers”). Para saber quais são estes registros consulte a função “Read Holding Register (3)”.

Os frames desta função para o master e slave são:


Função
MASTER
Endereço 0x10 0x00 0x00 0x00 0x02 0x04 0x00 0x80 0xBB 0x44 CRC
do Slave 8 bit - 8 bit

(1) Registro inicial


para programar Reg 40001 = Reg 40002 =
Quantidade 0x0080 0xBB44
Byte Count
de registros

(1) O registro inicial para programar é obtido removendo o indicativo (número 4) e subtraindo o
resultado por 1. No exemplo, o registro 40001 (decimal) é transmitido como 0x0000 (hexadecimal):
40001 = 0001 = (0001 - 1) = 0000 = 0x0000 hexadecimal.

Função
SLAVE
Endereço 0x10 0x00 0x00 0x00 0x02 CRC
do Slave 8 bit - 8 bit

(1) Registro inicial Quantidade


para programar

MEDIDORES KRON - 10/16


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

Atenção: O frame transmitido pelo master não deve exceder 29 bytes.

Report Slave Id ( 17)

Esta função permite identificar um dispositivo na rede através de um código conhecido.

MASTER
Slave 0x11 CRC
Address 8 bit - 8 bit

SLAVE
Endereço 0x11 Byte CÓDIGO ON / Versão Config CRC
do Slave Count OFF Software uração

Onde:
• Byte Count = Sempre 0x04
• CÓDIGO = Código do Dispositivo
• ON / OFF = Sempre ON → 0xFF
• Versão Software = 1.0 (10 decimal) a 25.5 (255 decimal)
• Configuração = D7: Protocolo MODBUS
D6: Protocolo Kron
D5: Largura do Pulso de Energia
D4: Chip utilizado
D3: Chip utilizado
D2: 9600 bps
D1: 4800 bps
D0: 2400 bps

O bit D5 do byte CONFIGURAÇÃO descreve a largura do pulso de energia:

D5 LARGURA DO PULSO
0 200ms
1 25ms

Para o MKM, os seguintes chips podem ser utilizados:

D4 D3 CHIP UTILIZADO
0 0 SAMES 9603
0 1 SAMES 9604
1 0 CISS 4010S

Por exemplo, supondo o seguinte dispositivo:

• MKM-01 com Demanda


• Endereço: 100
• Versão Software: 16.0
• Protocolo: MODBUS
• Largura Pulso: 200ms
• Chip Utilizado: CISS 4010S
• Baud Rate: 9600 bps

MEDIDORES KRON - 11/16


MKM PROTOCOLO MODBUS

MASTER
0x64 0x11 CRC

SLAVE
0x64 0x11 0x04 0x73 0xFF 0xA0 0x94 CRC

Exception Response (ERROR)

Os erros de comunicação detectados pelo slave são manipulados de duas maneiras:

1. “No reply”: Caso o slave detecte um erro no formato dos dados, CRC, etc, ele ignorará a
mensagem não gerando um reply (resposta).

2. Exception Response: O slave enviará um frame com um código de erro

SLAVE
Endereço 0x80 + Função Código CRC
do Slave de Erro 8 bit - 8 bit

Número da
função enviada
pelo master com
o bit 7 = 1

Os possíveis códigos de erro são:

Código de Erro Descrição


01 Ilegal Function
02 Ilegal Data Address
03 Ilegal Data Value

MEDIDORES KRON - 12/16


MKM PROTOCOLO MODBUS

Funções Especiais MODBUS para o MKM


As funções especiais MODBUS para o MKM são:

• ConfigAddress (0 / 0x42)
• ReadAddress (0 / 0x71)
• ConfigNSerie (0 / 0x72)
• ReadPartidas (0 / 0x75)
• ReportSlaveIdKron (0 / 0x76)
• ReadNSerie (0 / 0x77)
• ConfigDisp (0 / 0x78)
• ReadConfigDisp (0 / 0x79)

ConfigAddress ( 0 / 0x42)

Esta função, embora seja especial, é compatível com os dispositivos Electrex e TKE-01. O slave não
deverá gerar reply e, no caso do MKM, este não necessita estar com o jumper CONFIGURAÇÃO.

Esta função permite configurar o endereço de um dispositivo através de seu número de série. Os
endereços válidos vão de 1 até 247, sendo que cada dispositivo deve possuir um endereço único na
rede. Para certificar-se que o endereço desejado já não está cadastrado em outro dispositivo, antes de
executar esta função envie, por exemplo, a função 07 com o endereço desejado para a rede. Caso você
não obtenha resposta, significa que nenhum dispositivo foi configurado com este endereço.

MASTER
0x00 0x42 Número de Série do Dispositivo Novo Endereço CRC
8 bit - 8 bit - 8 bit - 8 bit 8 bit 8 bit - 8 bit

Por exemplo, supondo um dispositivo com número de série 21000, para configurá-lo para o endereço
100:
MASTER
0x00 0x42 0x00 0x00 0x52 0x08 0x64 CRC

Observe que o dispositivo não gera reply.

ReadAddress ( 0 / 0x71)

Esta é uma função proprietária KRON e não funcionará nos dispositivos Electrex. Embora esta função
seja broadcast (endereço = 0) ela gera reply, fugindo da regra do protocolo.

MASTER
0x00 0x71 Número de Série do Dispositivo CRC
8 bit - 8 bit - 8 bit - 8 bit 8 bit - 8 bit

SLAVE
Slave Address 0x71 Número de Série do Dispositivo CRC
8 bit - 8 bit - 8 bit - 8 bit 8 bit - 8 bit
Por exemplo, supondo um dispositivo com Número de Série 21000 e endereço 100:

MASTER
0x00 0x71 0x00 0x00 0x52 0x08 CRC

SLAVE
0x64 0x71 0x00 0x00 0x52 0x08 CRC

MEDIDORES KRON - 13/16


MKM PROTOCOLO MODBUS

ConfigNSerie (0 / 0x72)

Esta é uma função proprietária KRON e não funcionará nos dispositivos Electrex. Esta função não
gera reply e o Número de Série do dispositivo deve ser lido através da função Read Input Register (4)
ou da função especial ReadNSerie(0x77).

O dispositivo MKM deverá estar com o jumper CONFIGURAÇÃO . Cuidado deve ser tomado caso
haja uma rede de dispositivos para que apenas um dispositivo esteja com o jumper.

MASTER
0x00 0x72 Número de Série do Dispositivo CRC
8 bit - 8 bit - 8 bit - 8 bit 8 bit - 8 bit

Por exemplo, para programar o Número de Série 37520 num dispositivo:

MASTER
0x00 0x72 0x00 0x00 0x92 0x90 CRC

ReadPartidas ( 0 / 0x75)

Esta é uma função proprietária KRON e não funcionará nos dispositivos Electrex. Embora esta função
seja broadcast (endereço = 0) ela gera reply, fugindo da regra do protocolo.

MASTER
0x00 0x75 Número de Série do Dispositivo CRC
8 bit - 8 bit - 8 bit - 8 bit 8 bit - 8 bit

SLAVE
Slave Address 0x75 Número de Série do Dispositivo Contador de Partidas CRC
8 bit - 8 bit - 8 bit - 8 bit 8 bit - 8 bit 8 bit - 8 bit

Por exemplo, supondo um dispositivo com Número de Série 21000, endereço 100 e Contador de
Partidas = 64321.

MASTER
0x00 0x75 0x00 0x00 0x52 0x08 CRC

SLAVE
0x64 0x75 0x00 0x00 0x52 0x08 0xFB 0x41 CRC

ReportSlaveIdKron ( 0 / 0x76)

Esta é uma função proprietária KRON e não funcionará nos dispositivos Electrex. Embora esta função
seja broadcast (endereço = 0) ela gera reply, fugindo da regra do protocolo.
Ela tem a mesma finalidade da função “Report Slave Id (17)”, exceto que esta função envia o número
de série enquanto a outra envia o endereço.

MASTER
0x00 0x76 Número de Série do Dispositivo CRC
8 bit - 8 bit - 8 bit - 8 bit 8 bit - 8 bit

SLAVE
Slave 0x76 Número de Série Byte CODIGO ON / Versão Config CRC
Address Count OFF Software uração

MEDIDORES KRON - 14/16


MKM PROTOCOLO MODBUS

Consulte a função “Report Slave Id (17) para obter mais detalhes do frame retornado pelo slave.

ReadNSerie ( 0 / 0x77)

Esta é uma função proprietária KRON e não funcionará nos dispositivos Electrex. Embora esta função
seja broadcast (endereço = 0) ela gera reply, fugindo da regra do protocolo. É necessário que o
dispositivo esteja com o jumper CONFIGURAÇÃO para que ele possa responder a esta função, além
do que deve-se tomar cuidado para que apenas um dispositivo esteja com este jumper na rede.

MASTER
0x00 0x77 CRC
8 bit - 8 bit

SLAVE
Slave Address 0x77 Número de Série do Dispositivo CRC
8 bit + sig.,8 bit,8 bit, 8 bit - sig. 8 bit - 8 bit

Por exemplo, supondo um dispositivo com Número de Série 21000 e endereço 100:

MASTER
0x00 0x77 CRC

SLAVE
0x64 0x77 0x00 0x00 0x52 0x08 CRC

ConfigDisp ( 0 / 0x78)

Esta função permite configurar parâmetros genéricos do firmware como constantes, deltas, registros
de calibração, etc. Estes parâmetros são gravados numa NVRAM. É possível, inclusive, no futuro
substituir funções como ConfigNSerie por esta função. Para obter uma lista dos parâmetros consulte a
documentação do projeto do firmware. Esta função não gera reply e é necessário a colocação do
jumper de CONFIGURAÇÃO .

MASTER
0x00 0x78 Número de Reg. Byte byte 1 byte 2 byte (bytecount) CRC
Série Inicial Count

Bytes dos parâmetros começando


do registro inicial
ReadConfigDisp ( 0 / 0x79)

Esta função permite ler os parâmetros genéricos do firmware como constantes, deltas, registros de
calibração, etc., configurados através da função “ConfigDisp”. Estes parâmetros estão armazenados
numa NVRAM. É possível, inclusive, no futuro substituir funções como “ReadPartidas” por esta
função. Para obter uma lista dos parâmetros consulte a documentação do projeto do firmware.

NÃO é necessário a colocação do jumper de CONFIGURAÇÃO .

MASTER
0x00 0x79 Número Reg. Byte CRC
de Série Inicial Count

Quantidade de
bytes p/ ler

MEDIDORES KRON - 15/16


MKM PROTOCOLO MODBUS

SLAVE
Slave 0x79 Número Reg. Byte byte 1 byte 2 byte (bytecount) CRC
Address de Série Inicial Count

Bytes dos parâmetros começando


do registro inicial

Timing
Os seguintes tempos devem ser respeitados na comunicação entre o Master e o Slave:

Ação Equate
Retry para um mesmo slave DELAY_RETRY_SEND_FRAME
Delay para iniciar a transmissão de um frame DELAY_SEND_FRAME
Aguardar a recepção de um frame TIMEOUT_RECEIVE_FRAME
Delay para transmitir um byte do frame DELAY_SEND_BYTE
Aguardar a recepção de um byte do frame TIMEOUT_RECEIVE_BYTE
Tempo para confirmar silêncio na rede CONFIRM_SILENT

Independente da velocidade de comunicação, os seguintes tempos do master são sempre os mesmos:

DELAY_RETRY_SEND_FRAME 3 segundos
DELAY_SEND_FRAME > 10 ms
TIMEOUT_RECEIVE_FRAME 1 segundo

Para 9600 bps, o master e o slave devem possuir os seguintes tempos:

DELAY MASTER SLAVE


DELAY_SEND_FRAME > 10 ms 4 ms
TIMEOUT_RECEIVE_FRAME 1 segundo ∞
DELAY_SEND_BYTE < 3 ms 1 ms
TIMEOUT_RECEIVE_BYTE - 3 ms
CONFIRM_SILENT - 3 ms

MEDIDORES KRON - 16/16

Você também pode gostar