10-06-2022, 01:31 PM
As informações são armazenadas no dispositivo Slave em quatro tabelas diferentes onde duas tabelas armazenam valores discretos on/off (bobinas) e outras duas tabelas armazenam valores numéricos (registros).
Entenda duas tabelas para cada tipo devido ao fato de que uma tabela é apenas leitura (read-only) e a outra tabela é leitura-escrita (read-write) e indepedente da tabela, elas possuem as mesmas caracteristicas, sendo que:
Slave ID
Para cada Slave na rede é atribuido um unico endereço de 1 a 247 e quando o Master requisita dados, o primeiro byte da mesagem contem o endereço do Slave. Dessa forma, cada Slave sabe deve ou não ignorar a mensagem. Em outras palabras ele sabe se a mensagem é para ele ou não
Código de Função
O segundo byte da mensagem enviada pelo Master é o código de função e este numero diz ao escravo qual tabela deve acessar e se deve somente ler ou ler e escrever.
CRC
O CRC é uma checagem de redundancia ciclica e trata-se de dois bytes adicionais ao final de cada mensagem Modbus para detecção de erro. Cada byte na mensagem é utilizada para calcular o CRC e o dispositivo receptor também calcula o CRC e compara com o recebido pelo Master. Se qualquer bit enviado na mensagem estiver incorreto, o CRC calculado diferira do recebido e um erro será gerado.
Exemplo de Comando e Requisição Modbus
Imagine dois dispositivos interligados por uma rede serial que se comunica em Modbus. Em determinado momento, o Master precisa acessar os dispositivos Slave com endereço 17 e ler os valores de registro de saída analógica armazenada entre os endereços 40108 a 40110.
A requisição do Master para o exemplo acima ficara da seguinte forma:
11 03 006B 00003 7687, onde:
Assim que o dispositivo com o endereço 17 receber a mesagem do Master, ele responderá com a seguinte mensagem:
11 03 06 AE41 5642 4340 49AD, onde:
Entenda duas tabelas para cada tipo devido ao fato de que uma tabela é apenas leitura (read-only) e a outra tabela é leitura-escrita (read-write) e indepedente da tabela, elas possuem as mesmas caracteristicas, sendo que:
- Cada tabela pode ter até 9999 valores;
- Cada bobina ou contato é 1 bit atribuido a um endereço entre 0000 e 270E;
- Cada registro é 1 palavra (word) = 16 bits = 2 bytes e também podem ter endereço de dados entre 0000 e 270E.
Slave ID
Para cada Slave na rede é atribuido um unico endereço de 1 a 247 e quando o Master requisita dados, o primeiro byte da mesagem contem o endereço do Slave. Dessa forma, cada Slave sabe deve ou não ignorar a mensagem. Em outras palabras ele sabe se a mensagem é para ele ou não
Código de Função
O segundo byte da mensagem enviada pelo Master é o código de função e este numero diz ao escravo qual tabela deve acessar e se deve somente ler ou ler e escrever.
CRC
O CRC é uma checagem de redundancia ciclica e trata-se de dois bytes adicionais ao final de cada mensagem Modbus para detecção de erro. Cada byte na mensagem é utilizada para calcular o CRC e o dispositivo receptor também calcula o CRC e compara com o recebido pelo Master. Se qualquer bit enviado na mensagem estiver incorreto, o CRC calculado diferira do recebido e um erro será gerado.
Exemplo de Comando e Requisição Modbus
Imagine dois dispositivos interligados por uma rede serial que se comunica em Modbus. Em determinado momento, o Master precisa acessar os dispositivos Slave com endereço 17 e ler os valores de registro de saída analógica armazenada entre os endereços 40108 a 40110.
A requisição do Master para o exemplo acima ficara da seguinte forma:
11 03 006B 00003 7687, onde:
- 11: É o endereço do Slave (11hex = 17);
- 03: Código de Função 03 = ler registro de saída analogica;
- 006B: o endereço de dados do primeiro registro requisitado (006B hex =17, +40001 de offset = 40108);
- 0003: o número total de registros requisitados (ler 3 registros de 40108 a 40110);
- 7687: o CRC (cyclic redundancy check) para checagem de erro.
Assim que o dispositivo com o endereço 17 receber a mesagem do Master, ele responderá com a seguinte mensagem:
11 03 06 AE41 5642 4340 49AD, onde:
- 11: É o endereço do Slave (11hex = 17);
- 03: Códigode função 03 = ler registro de saida analogica;
- 06: O nhumero de bytes de dados contidos na mensagem (3 registros x 2 bytes cada = 6 bytes);
- AE41: O dado armazenado no registro 40108;
- 5642: O dado armazenado no registro 40109;
- 4340: O dado armazenado no registro 40110;
- 49AD: O CRC (cyclic redundancy check) para checagem de erro.