Manual Protocolo Modbus KS 3000 Rev.1.0
Manual Protocolo Modbus KS 3000 Rev.1.0
1. Características
A comunicação baseada no protocolo MODBUS possibilita a conexão com até 247 instrumentos
em uma rede RS-485.
RTU (Remote Terminal Unit): Modo de transmissão no qual os dados são transmitidos como
caracteres de 8 bits.
A seguir, formatos e velocidades disponíveis para transmissão de dados.
VELOCIDADE
9600 bps
19200 bps (em estudo, favor consultar suporte)
38400 bps (em estudo, favor consultar suporte)
57600 bps (em estudo, favor consultar suporte)
115200 bps (em estudo, favor consultar suporte)
O usuário pode configurar os parâmetros de comunicação serial via interface serial. Algumas funções
e registros de comunicação estão presentes somente a partir das versões 1.5 e/ou 2.8 de firmware.
2. Código do Dispositivo
Código do instrumento: 0xF2
3. Detalhes do Protocolo Modbus
Funções MODBUS:
As funções do protocolo Modbus implementadas para o KS-3000 são:
Exemplos:
QTDE MÁXIMA DE
ENDEREÇO DESCRIÇÃO FORMATO
CARACTERES (BYTES)
43.001 a 43.008 16 Descrição do Módulo Bluetooth. ASCII
43.011 a 43.018 16 Senha de Autenticação do Módulo Bluetooth ASCII
Em cada registro serão enviados dois caracteres ASCII. O último caractere da string deve ser sempre 0x00
para identificar seu final. Se não forem utilizados todos os caracteres, os dados enviados após o 0x00
serão ignorados.
Por exemplo:
Para escrever a Descrição “Mult-k NG” (sem aspas).
43.001 = 0x4D75
43.002 = 0x6C74
43.003 = 0x2D6B
43.004 = 0xA04E
43.005 = 0x4700
Neste caso, como a descrição tem menos que 15 caracteres, o usuário deverá escrever qualquer valor nos
registros 43.006 a 43.008, já que estes serão ignorados devido ao valor 0x00 no byte menos significativo
do registro 43.005. Este valor 0x00 indica o fim da string.
Observação1: Não é possível ler ou escrever somente em parte dos registros. É necessário ler todos os
registros de uma só vez. Por exemplo, se o usuário quiser ler somente os quatro primeiros caracteres da
descrição, ele não conseguirá usar apenas os registros 43.001 a 43.002, sendo obrigado a ler do 43.001 a
43.008. O mesmo raciocínio é estendido para os registros da Senha de Autenticação.
Observação2: Para que as alterações acima sejam gravadas, é preciso mandar um Coil de Reset do
Aparelho, após concluir procedimentos de ajuste. Isso se deve ao fato de que a atualização de informações
é feita na Inicialização do Módulo Bluetooth.
No processo de fabricação, a descrição padrão do módulo Bluetooth é gravada assim que é definido o
número de série do medidor. Exemplificando, a descrição padrão será “KS_0000001”, onde 0000001 é o
número de série que foi gravado.
A Senha Padrão, “1234”, também é gravada automaticamente neste processo.
6.5 HOLDING REGISTERS – CONFIGURAÇÃO DE REDE WI-FI:
Utilizados para configurar o endereço IP do equipamento, máscara de sub-rede, gateway padrão
e endereço de DNS. As novas configurações só passam a valer após o reset do medidor (necessário envio
do Coil de reset após a configuração).
(1) O conteúdo destes bytes é obtido ao realizar a subtração do registro a partir do qual se deseja
realizar a configuração (43101) em relação ao registro inicial (40001); o resultado deve ser
convertido para padrão hexadecimal: 3100 (dec) 0C1C (hex);
(2) A programação do endereço de IP segue o padrão LSB...MSB. Logo as parcelas iniciais do
endereço estão presentes no registro 43102 e as iniciais no registro 43101. Os dados devem ser
transmitidos em formato hexadecimal.
Resposta recebida do dispositivo escravo:
QTDE MÁXIMA DE
ENDEREÇO DESCRIÇÃO FORMATO
CARACTERES (BYTES)
Nome ou IP do
43.205 a 43.220 32 ASCII
servidor de tempo
* Se o campo de fuso horário for configurado com valor fora do range especificado, o equipamento irá
assumir fuso horário igual a zero.
** Se o intervalo de sincronismo for configurado como zero, o sincronismo com o servidor de tempo será
desabilitado, independente da configuração feita no HR 40.007.
Abaixo exemplo de leitura de configuração dos registros para:
Fuso-horário = -3
Int. de sincronismo = 720 minutos
Servidor SNTP = "a.st1.ntp.br”
*A programação de até 20 grandezas para publicação em nuvem está disponível a partir da versão 2.8 de
firmware. Para versões anteriores, o limite é de 10 grandezas.
Observação: Somente as 10 primeiras grandezas (até o registro 42.111) serão consideradas quando o
meio de comunicação for LoRa.
Até a versão 2.7 de firmware
QTDE MÁXIMA DE
ENDEREÇO DESCRIÇÃO FORMATO
CARACTERES (BYTES)
43.461 a 43.495 70 URL do Broker MQTT ASCII
43.496 a 43.498 6 Porta do Broker MQTT ASCII
43.499 a 43.511 26 Username ASCII
43.512 a 43.541 60 Token ASCII
43.542 a 43.551 20 Nome/Descrição do Medidor ASCII
43.552 a 43.571 40 Tópico de Publicação ASCII
QTDE MÁXIMA DE
ENDEREÇO DESCRIÇÃO FORMATO
CARACTERES (BYTES)
43.461 a 43.495 70 URL do Broker MQTT ASCII
43.496 a 43.498 6 Porta do Broker MQTT ASCII
43.499 a 43.517 38 Username ASCII
43.518 a 43.552 70 Token ASCII
43.553 a 43.565 26 Nome/Descrição do Medidor ASCII
43.566 a 43.595 60 Tópico de Publicação ASCII
Os registros de token, nome do medidor, URL e porta do broker e Username devem ser enviados no
formato ASCII. O último caractere de cada string deve ser sempre 0x00 para identificar o fim da mesma.
Se não forem utilizados todos os caracteres, os dados enviados após o 0x00 serão ignorados. Não é
necessário enviar 0x00 se o dado ocupar todo o espaço reservado a ele.
Observação1: Deve-se lembrar que é permitido ler no máximo 32 Holding Registers e escrever no máximo
22 Holding Registers de uma só vez. Portanto, a leitura e escrita da faixa que começa a partir do registro
43.461 deve ser fracionada.
Observação 2: As novas configurações só passam a valer após o reset do medidor (necessário envio do
Coil de reset após a configuração).
Abaixo configuração dos registros para:
Broker = m15.cloudmqtt.com
Porta = 17368
Usuername = fvaujpmv
Token = dHgnnRMzDfxa
Intervalo de envio = 1 minuto
Grandezas = U0, I0, P1, P2, P3, FP0, EA+
Nome = default_desc
* Os registros correspondentes ao “Device EUI” contém o número de identificação do módulo LoRa, Este número é
exclusivo para cada instrumento e fornecido pelo fabricante (formato HEX). Portanto, este campo não poderá ser
alterado (somente leitura).
*Os registros Application EUI, Application Key, Network Session Key, Application Session Key e Device Address
devem ser enviados no formato HEX.
*O Application Key só deve ser preenchido caso a forma de ativação no Network Server seja OTAA. Neste caso, pode-
se ignorar os registros Network Session Key, Application Session Key e Device Address. Se a forma de ativação no
Network Server for ABP, o Application Key pode ser ignorado, mas os registros Network Session Key, Application
Session Key e Device Address devem ser preenchidos.
No exemplo seguinte, o módulo LoRa está configurado para fazer 2 retransmissões, DR1, Classe C,
Mensagem com confirmação, Ativação ABP, ADR OFF, Rede Pública.
30.201, 30.202 C8 EA+ Energia Ativa Positiva (KWh) IEEE 32-bit fp (F2,F1,F0,EXP)
30.301, 30.302 12C ***** EAD+ Delta de Energia Ativa Positiva (KWh) IEEE 32-bit fp (F2,F1,F0,EXP)
30.303, 30.304 12E ***** ERD+ Delta de Energia Reativa Positiva (KVArh) IEEE 32-bit fp (F2,F1,F0,EXP)
30.305, 30.306 130 ***** EAD- Delta de Energia Ativa Negativa (KWh) IEEE 32-bit fp (F2,F1,F0,EXP)
30.307, 30.308 132 ***** ERD- Delta de Energia Reativa Negativa (KVArh) IEEE 32-bit fp (F2,F1,F0,EXP)
30.309, 30.310 134 ***** ESD Delta de Energia Aparente (kVAh) IEEE 32-bit fp (F2,F1,F0,EXP)
30.311, 30.312 136 ***** EA1D+ Delta de Energia Ativa Positiva Fase 1 (KWh) IEEE 32-bit fp (F2,F1,F0,EXP)
30.313, 30.314 138 ***** ER1D+ Delta de Energia Reativa Positiva Fase 1 (KVArh) IEEE 32-bit fp (F2,F1,F0,EXP)
30.315, 30.316 13A ***** EA1D- Delta de Energia Ativa Negativa Fase 1 (KWh) IEEE 32-bit fp (F2,F1,F0,EXP)
30.317, 30.318 13C ***** ER1D- Delta de Energia Reativa Negativa Fase 1 (KVArh) IEEE 32-bit fp (F2,F1,F0,EXP)
30.319, 30.320 13E ***** EA2D+ Delta de Energia Ativa Positiva Fase 2 (KWh) IEEE 32-bit fp (F2,F1,F0,EXP)
30.321, 30.322 140 ***** ER2D+ Delta de Energia Reativa Positiva Fase 2 (KVArh) IEEE 32-bit fp (F2,F1,F0,EXP)
30.323, 30.324 142 ***** EA2D- Delta de Energia Ativa Negativa Fase 2 (KWh) IEEE 32-bit fp (F2,F1,F0,EXP)
30.325, 30.326 144 ***** ER2D- Delta de Energia Reativa Negativa Fase 2 (KVArh) IEEE 32-bit fp (F2,F1,F0,EXP)
30.327, 30.328 146 ***** EA3D+ Delta de Energia Ativa Positiva Fase 3 (KWh) IEEE 32-bit fp (F2,F1,F0,EXP)
30.329, 30.330 148 ***** ER3D+ Delta de Energia Reativa Positiva Fase 3 (KVArh) IEEE 32-bit fp (F2,F1,F0,EXP)
30.331, 30.332 14A ***** EA3D- Delta de Energia Ativa Negativa Fase 3 (KWh) IEEE 32-bit fp (F2,F1,F0,EXP)
30.333, 30.334 14C ***** ER3D- Delta de Energia Reativa Negativa Fase 3 (KVArh) IEEE 32-bit fp (F2,F1,F0,EXP)
30.335, 30.336 14E ***** ES1D Delta de Energia Aparente Fase 1 (kVAh) IEEE 32-bit fp (F2,F1,F0,EXP)
30.337, 30.338 150 ***** ES2D Delta de Energia Aparente Fase 2 (kVAh) IEEE 32-bit fp (F2,F1,F0,EXP)
30.339, 30.340 152 ***** ES3D Delta de Energia Aparente Fase 3 (kVAh) IEEE 32-bit fp (F2,F1,F0,EXP)
31.201, 31.202 4B0 ****** EA1+ Energia Ativa Positiva Fase 1 (KWh) IEEE 32-bit fp (F2,F1,F0,EXP)
31.203, 31.204 4B2 ****** ER1+ Energia Reativa Positiva Fase 1 (KVArh) IEEE 32-bit fp (F2,F1,F0,EXP)
31.205, 31.206 4B4 ****** EA1- Energia Ativa Negativa Fase 1 (KWh) IEEE 32-bit fp (F2,F1,F0,EXP)
31.207, 31.208 4B6 ****** ER1- Energia Reativa Negativa Fase 1 (KVArh) IEEE 32-bit fp (F2,F1,F0,EXP)
31.209, 31.210 4B8 ****** EA2+ Energia Ativa Positiva Fase 2 (KWh) IEEE 32-bit fp (F2,F1,F0,EXP)
31.211, 31.212 4BA ****** ER2+ Energia Reativa Positiva Fase 2 (KVArh) IEEE 32-bit fp (F2,F1,F0,EXP)
31.213, 31.214 4BC ****** EA2- Energia Ativa Negativa Fase 2 (KWh) IEEE 32-bit fp (F2,F1,F0,EXP)
31.215, 31.216 4BE ****** ER2- Energia Reativa Negativa Fase 2 (KVArh) IEEE 32-bit fp (F2,F1,F0,EXP)
31.217, 31.218 4C0 ****** EA3+ Energia Ativa Positiva Fase 3 (KWh) IEEE 32-bit fp (F2,F1,F0,EXP)
31.219, 31.220 4C2 ****** ER3+ Energia Reativa Positiva Fase 3 (KVArh) IEEE 32-bit fp (F2,F1,F0,EXP)
31.221, 31.222 4C4 ****** EA3- Energia Ativa Negativa Fase 3 (KWh) IEEE 32-bit fp (F2,F1,F0,EXP)
31.223, 31.224 4C6 ****** ER3- Energia Reativa Negativa Fase 3 (KVArh) IEEE 32-bit fp (F2,F1,F0,EXP)
31.225, 31.226 4C8 ****** ES1 Energia Aparente Fase 1 IEEE 32-bit fp (F2,F1,F0,EXP)
31.227, 31.228 4CA ****** ES2 Energia Aparente Fase 2 IEEE 32-bit fp (F2,F1,F0,EXP)
31.229, 31.230 4CC ****** ES3 Energia Aparente Fase 3 IEEE 32-bit fp (F2,F1,F0,EXP)
* O valor máximo do contador de pulsos é 9.999.999. Quando este limite for ultrapassado, os contadores retornarão ao
valor zero.
** Estes registros retornam sempre o valor zero, pois não há no KS-3000 uma terceira entrada digital nem uma segunda
saída digital. Estão no mapa para manter compatibilidade deste modelo com os medidores Konect. Podem ser enviados para
servidor em nuvem, porém, sempre serão transmitidos com valor zero.
*** Status da carga, atrelado ao disparo da função horímetro. 0 = OFF; 1 = ON. Disponível a partir da versão 2.8 de firmware.
**** Exemplo de valor do Horímetro, Valor: 45.50. Este valor indica que o horímetro está marcando o tempo de 45 horas e
30 minutos. O horímetro atende o padrão comercial 1/100 e tem resolução de 36 segundos. Disponível a partir da versão
2.8 de firmware.
***** Os cálculos dos Deltas de Energias serão realizados quando pelo menos uma das condições abaixo for verdadeira:
- LoRa Habilitado.
- WiFi e MQTT habilitados.
Caso nenhuma das opções acima esteja habilitada, os valores dos Deltas de Energias serão sempre 0.
A base de tempo para o cálculo dos Deltas vai depender do intervalo de publicação de LoRa ou MQTT. Caso ambos estejam
desabilitados, será considerado o intervalo de armazenamento da memória de massa.
Por exemplo, se o intervalo de publicação do MQTT está configurado para 15 minutos, teremos os cálculos dos Deltas de
Energia sendo realizados a cada 15 minutos.
Códigos de Erro.
ENDEREÇO REG. DESCRIÇÃO FORMATO
33.901 Erro Código de Erro* Int 16-bit (MSB,LSB)
33.902 ErroInt Reservado -
33.903 ErroWF Código de Erro - Módulo Wi-Fi** Int 16-bit (MSB,LSB)
* Para maiores detalhes consulte os itens 10 e 11.
(1) O registro inicial para ler é obtido removendo o indicativo (número 3) e subtraindo o resultado
por 1. No exemplo, o registro 30003 (decimal) é transmitido como 0x0002 (hexadecimal): 30003
- 30001 = 00002 = 0x0002 hexadecimal.
(2) Total de registros que podem ser lidos.
A resposta do Slave:
O registro byte count é igual ao total de registros a serem lidos vezes 2, pois cada registro possui 2 bytes.
No exemplo acima, o master pediu uma leitura dos registros que contém a tensão trifásica (30003 e
30004) e obteve como resposta o valor 0x00006143 (IEEE 32-bit floating point). Convertendo esse valor
para decimal, temos que a Tensão Trifásica = 225,00 Vc.a.
(1) O registro inicial para ler é obtido removendo o indicativo (número 3) e subtraindo o resultado por 1. No
exemplo, o registro 30027 (decimal) é transmitido como 0x001A (hexadecimal):
A resposta do Slave:
O registro byte count é igual ao total de registros a serem lidos vezes 2, pois cada registro possui 2 bytes.
No exemplo acima o master pediu uma leitura dos registros que contém a frequência da fase A (30027 e 30028) e
obteve como resposta o valor 0x00007042 (IEEE 32-bit floating point). Convertendo esse valor para decimal, temos
que a frequência medida pelo canal A é 60 Hz.
MAC Address
WI-FI:
Versão de Firmware do Módulo Wi-Fi ou LoRa (disponível a partir da versão 2.8 de firmware):
COMANDO DESCRIÇÃO
001 Reseta DEMANDA ATIVA
002 Reseta DEMANDA APARENTE
003 Reseta MÁXIMA DEMANDA ATIVA
004 Reseta MÁXIMA DEMANDA APARENTE
005 Reseta ENERGIA ATIVA POSITIVA
006 Reinicializa Dispositivo
007 Sincroniza Cálculo da DEMANDA
008 Reset DEMANDA REATIVA
009 Reset DEMANDA DE CORRENTE
021 Reseta contador da entrada digital EDP1
022 Reseta contador da entrada digital EDP2
031 Liga/Desliga SD1 (0-desliga/1-liga)
040 Reseta todas as ENERGIAS, DEMANDAS e contadores das entradas digitais
050 Reseta ENERGIA REATIVA POSITIVA
051 Reseta ENERGIA ATIVA NEGATIVA
052 Reseta ENERGIA REATIVA NEGATIVA
054 Reseta ENERGIA APARENTE
062 Reseta o Horímetro*
090 Restaura os parâmetros do medidor para os padrões de fábrica
091 Reseta o bloco de controle do buffer MQTT*
(1) Este registro é obtido subtraindo 1 do comando desejado. No exemplo o comando 006 é enviado
como 0x0005.
(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.
Para esta função, o slave retorna uma cópia do comando recebido. No exemplo anterior o master
programou o registro 40006 com o valor 00 01, tipo de ligação “00 – Três elementos, 4fios” e tempo de
integração para cálculo de demanda de 1 minuto.
LSB
MSB
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.
LSB
MSB
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.
(1) O registro 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. Na sequência, é necessário informar a
quantidade de registros que serão programados e também o número de bytes equivalente. Os 4 bytes
posteriores são preenchidos com o valor de interesse, codificado em ponto flutuante.
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.
SLV:
Dado
D7 D6 D5 D4 D3 D2 D1 D0
Onde:
Byte Count = sempre 0x04
Código = Código do Dispositivo, Exemplo: F2 – KS-3000
ON/OFF = Versão Especial = Para modelo padrão, retorna FF.
“18” = Versão de Firmware = O número 18 representa versão 1.8 de firmware.
XX = Reservado
No exemplo abaixo, a peça possui número de série 21000 e foi configurada com endereço “100”.