Você está na página 1de 17

MODBUS

O padro MODBUS define um Protocolo de mensagens na camada de aplicao, posicionado no 7 nvel do Modelo de Referncia OSI que prov comunicao cliente/servidor entre dispositivos conectados a diferentes tipos de barramentos ou topologias de rede. Este padro tambm especifica um protocolo de comunicao serial para requisies MODBUS entre um mestre e um ou vrios escravos.

1. Protocolo Modbus em Linha Serial


O protocolo Serial Mobus um protocolo mestre-escravo. Este protocolo pertence a 2a camada do Modelo de Referncia OSI. Um sistema operando como mestre-escravo possui um n mestre, que emite comandos explcitos para um dos ns escravos e processa a sua resposta. Tipicamente os escravos no iro transmitir dados sem uma requisio do n mestre e no se comunicam com outros escravos. Na camada fsica os sistemas Modbus em linhas seriais podem usar diferentes interfaces fsicas (RS485, RS232, etc.). A interface RS485 de 2 fios a mais comum. No entanto, a interface RS485 de 4 fios tambm pode ser implementada. A interface serial RS232 s poder ser utilizada quando uma comunicao ponto a ponto de curta distncia for requerida. A figura abaixo mostra uma representao geral dos protocolos Modbus frente as 7 camadas do modelo de referncia OSI.

Protocolo Modbus e o Modelo de Referncia OSI

O protocolo de mensagens Modbus na camada de aplicao prov comunicao cliente/servidor entre dispositivos conectados em diferentes barramentos e topologias de rede. No protocolo Modbus operando em linha serial s existe um cliente, que o n mestre da linha serial. Os ns escravos operam como servidores.

Camada de Enlace de Dados Modbus


1.1.1 Princpio do Protocolo Modbus Mestre-Escravo

O protocolo Modbus operando em linha serial um protocolo mestre-escravos. Isso significa que somente um mestre conectado ao barramento ao mesmo tempo. Quanto aos escravos, um ou mais ns (nmero mximo de 247) podem ser conectados a este mesmo barramento. Uma comunicao Modbus sempre iniciada pelo mestre. O n escravo nunca ir transmitir dados sem receber uma requisio do n mestre. Os ns escravos nunca iro se comunicar entre eles. O n mestre inicia somente uma transao Modbus por vez. O n mestre emite uma requisio para um n escravo em dois modos:

Unicast o mestre enderea a somente um escravo. Depois de receber e processar a requisio, o escravo retorna uma mensagem de resposta para o mestre. Neste modo, uma transao Modbus consiste de 2 mensagens: uma requisio do mestre e uma resposta do escravo. Cada escravo deve ter um endereo nico (de 1 a 247) de forma a poder ser endereado independentemente de outros ns.

Modo Unicast

Broadcast o n mestre pode enviar uma mensagem para todos os escravos. Nenhuma resposta deve ser retornada para requisies broadcast enviadas pelo mestre. As requisies broadcast so necessariamente mensagens de escrita. Todos os dispositivos devem aceitar mensagens broadcast para escrita. O endereo 0 reservado para identificar uma mensagem broadcast.

Modo Broadcast

1.1.2 Regras de Endereamento Modbus

O espao de endereamento Modbus compreende 256 diferentes endereos.

0 Endereo de Broadcast

De 1 a 247 Endereo individual dos escravos

De 248 a 255 Reservado

O endereo 0 reservado para broadcast. Todos os escravos devem reconhecer o endereo de broadcast. O mestre Modbus no tem endereo especfico, somente os ns escravos devem ter um endereo. Os endereos devem ser nicos em um barramento Modbus serial.

1.1.3 Descrio do Quadro Modbus

O protocolo de aplicao Modbus define uma simples unidade de dados de protocolo (Protocol Data Unit PDU) independentemente das camadas adjacentes.

Unidade de Dados do Protocolo Modbus

As caractersticas do protocolo Modbus em um barramento ou topologia de rede especfica introduzem alguns campos adicionais ao PDU. O cliente que inicializa uma transao Modbus constri um Modbus PDU e, ento adiciona campos para que construa o PDU apropriado para uma dada comunicao.

Quadro para Modbus em Barramento Serial

Em uma comunicao Modbus sobre barramento serial, o campo endereo contm o endereo de um determinado escravo. Como descrito anteriormente, os endereos vlidos para ns escravos esto na faixa de 0 a 247 decimal. Quando utilizado o endereo 0, a mensagem um broadcast, portando todos os ns escravos estaro sendo endereados. Os escravos so individualmente endereados na faixa de 1 a 247. Um mestre enderea um escravo colocando o endereo do escravo no campo endereo da mensagem. Quando o escravo retorna sua resposta, ele coloca o seu prprio endereo no campo endereo da mensagem de resposta para permitir que o mestre identifique qual escravo est respondendo. O cdigo de funo indica para o servidor que tipo de ao deve se executada. O cdigo de funo pode ser seguido por um campo de dados que contm parmetros da requisio e da resposta. O campo de verificao de erro resultado de um clculo de verificao de redundncia que adicionado ao contedo da mensagem. Dois mtodos para clculo so usados, dependendo do modo de transmisso que est sendo utilizado (RTU ou ASCII).

1.1.4 Diagramas de Estado Mestre / Escravo

A camada de enlace de dados Modbus compreende duas sub-camadas:

O protocolo Mestre / Escravo; O modo de transmisso RTU ou ASCII.

Abaixo temos a descrio dos diagramas de estado de um mestre e um escravo, que so independentes do modo de transmisso utilizado. A recepo e o envio de um quadro Modbus so descritos abaixo.

1.1.4.1 Diagrama de Estado de um Mestre Modbus

O diagrama abaixo descreve o comportamento de um mestre Modbus.

Diagrama de Estados do Mestre

Abaixo temos algumas consideraes a respeito do diagrama de estados apresentado:

Estado idle (ocioso) - Nenhuma requisio pendente. Este o estado inicial aps a alimentao de um n mestre. Uma requisio somente pode ser enviada a partir de um estado idle. Depois de enviar uma requisio, o mestre sai do modo idle e no pode enviar uma segunda requisio at voltar a este modo;

Quando uma requisio enviada para um nico escravo, o mestre entra em um estado de espera por resposta (Waiting for Reply) e um contador de espera iniciado. Este contador previne o mestre de ficar indefinidamente no modo de espera de resposta. O valor do tempo de espera por uma resposta dependente da aplicao;

Quando uma resposta recebida, o mestre verifica o resposta antes de iniciar o processamento dos dados. A verificao pode resultar em um erro. Exemplos de possveis erros so a resposta por um escravo no esperado ou um erro no quadro recebido. No caso de uma resposta recebida por um escravo no esperado, o contador de espera continuara sendo executado. No caso de um erro ser detectado no quadro recebido, uma nova tentativa deve ser executada;

Se nenhuma resposta recebida o contador expira e um erro gerado. Ento o mestre entra no modo idle, habilitando uma requisio para nova tentativa. O nmero mximo de tentativas definido nas configuraes do mestre;

Quando uma mensagem broadcast enviada no barramento serial, nenhuma resposta retornada pelos escravos. Contudo, um tempo de espera respeitado pelo mestre no sentido de permitir que qualquer escravo processe a requisio antes que o mestre envie uma nova mensagem. Portanto, o mestre entra em um estado de espera (Waiting Turnaround Delay) antes de voltar para o estado idle e, portanto, antes de ser capaz de enviar outra requisio;

Em modo unicast o tempo de espera deve ser escolhido de forma que qualquer escravo possa processar a requisio e retornar uma resposta. No modo broadcast o tempo de espera deve ser longo o suficiente para que qualquer escravo processe somente a requisio e esteja apto a receber uma nova requisio. Devido a isso, o tempo de espera em modo broadcast deve ser menor que em modo unicast. Tipicamente o tempo de espera em modo unicast de 1 segundo at vrios segundos para uma comunicao em 9600 bauds e o tempo de espera em modo broadcast entre 100ms e 200ms.

A verificao de erro no quadro consiste de: 1) Verificao de paridade aplicada a cada caracter; 2) Verificao de redundncia aplicada a todo o quadro.

O diagrama de estados intencionalmente muito simples. Este no leva em considerao o acesso ao meio, enquadramento de mensagem ou retransmisso em caso de erros.

1.1.4.2 Diagrama de Estado de um Escravo Modbus

Abaixo temos o diagrama de estados de um escravo Modbus:

Diagrama de Estados do Escravo

A seguir temos algumas consideraes a respeito do diagrama de estados apresentado:

Estado idle - Nenhuma requisio pendente. Este o estado inicial aps a alimentao de um n escravo;

Quando uma requisio recebida, o escravo verifica o pacote antes de executar a ao solicitada no pacote. Diferentes erros podem ocorrer: erro do formato da requisio, ao invlida, etc. No caso de um erro, uma resposta deve ser enviada para o mestre;

Uma mensagem unicast requer que uma resposta seja formatada e enviada para o mestre assim que a ao requisitada completada;

Se um escravo detecta um erro no quadro recebido, nenhuma resposta retornada para o mestre;

Os contadores de diagnstico Modbus so definidos e devem ser gerenciados por qualquer escravo no sentido de prover informaes de diagnstico. Estes contadores de diagnstico podem ser adquiridos atravs da funo de diagnstico Modbus.

1.1.4.3 Diagrama de tempos da comunicao Mestre / Escravo

O diagrama abaixo apresenta 3 cenrios especficos de comunicao Modbus Mestre / Escravo:

Cenrios de comunicao Mestre / Escravo Modbus

Observaes:

A durao das fases de requisio, resposta e broadcast depende de caractersticas da comunicao (comprimento do quadro e processamento);

A durao das fases de espera e tratamento dependem do tempo de processamento da requisio necessrio para a aplicao contida nos ns escravos.

1.1.5 Modos de Transmisso Serial

Os dois modos de transmisso serial so definidos como: Modo RTU (Remote Terminal Unit) e modo ASCII. Estes modos definem o contedo em bits dos campos das mensagens transmitidas serialmente no barramento. Eles determinam como a informao empacotada nos campos das mensagens e, posteriormente, como so decodificadas. O modo de transmisso (e o padro da porta serial) deve ser o mesmo em todos os dispositivos conectados a linha serial. Embora o modo ASCII seja requirido em algumas aplicaes especficas, interoperabilidade entre dispositivos Modbus pode ser alcanada somente se cada dispositivo tiver o mesmo modo de transmisso. Todos os dispositivos devem implementar o modo RTU. A modo de transmisso ASCII opcional. Os dispositivos devem ser configurados pelos usurios para o modo de transmisso desejado, RTU ou ASCII. O modo padro deve ser RTU.

1.1.5.1 Modo de Transmisso RTU

Quando dispositivos se comunicam em um barramento serial Modbus utilizando o modo RTU, cada byte (8 bits) na mensagem ir conter 2 caracteres hexadecimais de 4 bits. A principal vantagem deste modo que sua maior densidade de caracteres permite um melhor processamento de dados do que o modo ASCII para o mesmo baud rate. Cada mensagem deve ser transmitida em um fluxo contnuo de caracteres.

O formato para cada byte no modo Modbus RTU : Sistema de codificao: Binrio de 8 bits Bits or Byte: 1 bit de incio 8 bits de dados, sendo o de menor significado enviado primeiro. 1 bit de paridade 1 bit de parada

Paridade par requerida, outros modos (paridade impar, sem paridade) podem ser utilizados. No sentido de garantir maior compatibilidade com outros produtos recomendado suportar o modo sem paridade. O modo de paridade padro deve ser paridade par.

Como os caracteres so transmitidos serialmente: Cada caracter enviado nesta ordem (da esquerda para a direita). Bit menos significante ... Bit mais significante.

Sequncia de bits no modo RTU com paridade

Os dispositivos podem aceitar configuraes para verificao de paridade par, impar e sem paridade. Se o modo sem paridade implementado, um bit de parada adicional deve ser transmitido para preencher o quadro de caracter mantendo o padro de comunicao assncrona com 11 bits.

Sequncia de bits no modo RTU sem paridade

Campo de Verificao de Quadro: Verificao Cclica de Redundncia (CRC)

Descrio do Quadro

Quadro de Mensagem RTU

1.1.5.1.1 Enquadramento de Mensagens Modbus RTU

Uma mensagem Modbus colocada pelo transmissor em um quadro que tem um comeo e fim bem definidos. Isto permite que dispositivos que recebam um novo quadro conheam o incio da mensagem e tambm quando a mesma completada. Mensagens parciais devem ser detectadas e erros devem ser gerados como resultado desta deteco. No modo RTU, os quadros de mensagem so separados por um intervalo de silncio de pelo menos 3.5 tempos de caracter. Nas figuras abaixo, este tempo apresentado como t3,5.

Quadro de mensagem Modbus

O quadro inteiro da mensagem deve ser transmitido com um fluxo constante de caracteres. Se um tempo de silncio maior do que o tempo de 1,5 caracter for detectado o quadro da mensagem declarado incompleto e deve ser descartado pelo receptor.

Observao: A implementao do driver de recepo Modbus RTU deve implicar na gerencia de uma srie de interrupes devido aos tempos de 1,5 e 3,5 caracteres.

Com altas taxas de comunicao (baud rate), este gerenciamento leva a grande carga de CPU. Consequentemente estes 2 temporizadores devem ser respeitados estritamente quando o baud rate igual ou menor do que 19200 Bps. Para baud rates maiores do que 19200 Bps, um valor fixo de 2 tempos deve ser usado: recomendado o uso do valor de 750 s para o tempo entre caracteres (t1,5) e um valor de 1,750 ms para o tempo entre quadros (t3,5). A figura abaixo apresenta o diagrama de estados do modo de transmisso RTU. Tanto o ponto de vista do mestre quanto do escravo so analisados no mesmo diagrama.

Diagrama de Estados do Modo Modbus RTU

Abaixo temos algumas consideraes a respeito do diagrama de estados apresentado:

A transio do estado inicial (Initial State) para o modo ocioso (Idle) necessita de um tempo de espera de t3,5. Esta ao garante o tempo de espera entre quadros;

O estado ocioso o estado normal quando os estados de transmisso (emission) e de recepo (reception) no esto ativos;

No modo RTU, o enlace de comunicao declarado ocioso quando no existir nenhuma transmisso ativa depois de um intervalo de tempo de pelo menos 3,5 caracteres;

Quando o enlace est em estado ocioso, cada caracter transmitido detectado no enlace definido como um incio de um quadro. O enlace passa para o estado

ativo. Estando em estado ativo, o fim do quadro detectado quando a transmisso de caracteres no enlace interrompida por um intervalo de tempo superior a 3,5 caracteres;

Aps a deteco do fim do quadro, o clculo de CRC e verificao realizado. Aps o campo de endereo analisado para determinar se o quadro destinado a este dispositivo. Se no for, o quadro descartado. Para reduzir o tempo de processamento da recepo, o campo do endereo pode ser analisado assim que for recebido sem esperar o fim do quadro. Neste caso o CRC ser calculado e verificado somente se o quadro destinado a este escravo (quadros broadcast inclusive).

1.1.5.1.2 Verificao do CRC

O modo RTU inclui um campo de verificao de erro que baseado em um mtodo de Verificao cclica de Redundncia (CRC) includo no contedo da mensagem. O campo de CRC verifica o contedo da mensagem inteira. O campo de CRC contm um valor de 16-bits implementado como dois bytes de 8 bits. O campo de CRC includo como ltimo campo da mensagem. Quando isto realizado, o byte de menor ordem do campo anexado primeiro, seguido pelo byte de maior ordem. O byte CRC de maior ordem o ltimo byte enviado na mensagem. O valor do CRC calculado pelo dispositivo que transmitiu o quadro. O dispositivo que recebe o quadro recalcula o CRC durante a recepo da mensagem, e compara o campo de CRC recebido com o CRC calculado. Se os valores no so iguais, o dispositivo retorna um erro. O clculo do CRC iniciado carregando-se um registrador de 16 bits com todos os bits 1's (65535 decimal). Ento um processo se inicia aplicando-se sucessivamente bytes de 8 bits ao contedo deste registrador. Somente os 8 bits de dados so utilizados para a gerao do CRC. Os bits de incio, parada e paridade no participam do clculo do CRC. Durante a gerao do CRC, cada caracter de 8 bits passa por uma operao de ou exclusivo com o contedo do registrador de 16 bits. Ento o resultado desta operao deslocado no sentido do bit menos significativo com o bit mais significativo sendo preenchido por um zero. O bit menos significativo extrado e examinado. Se este bit for 1, o contedo do registrador sofre nova operao de ou exclusivo com o polinmio

gerador do CRC16. Se o bit for 0, nenhum ao executada. Este processo repetido at que 8 deslocamentos tenham sido realizados. Depois do ltimo deslocamento, o prximo byte de 8 bits sofre o mesmo processo de ou exclusivo e deslocamentos descrito acima. O contedo final do registrador, depois de todos os bytes da mensagem terem passado por este processo, o valor do CRC. Quando o CRC anexado a mensagem, o byte de menor ordem ser anexado primeiro, seguido pelo byte de maior ordem. Abaixo apresentado o fluxograma do clculo do CRC para o quadro Modbus. As seguintes consideraes so necessrias para a anlise da figura:

XOR = ou exclusivo N = nmero de bits de informao POLY = polinmio de gerao do CRC 16 (1010 0000 0000 0001) Polinmio de gerao utilizado = 1 + X2+X15+X16 No CRC 16 o primeiro byte transmitido o de menor significado.

Fluxograma do clculo de gerao do CRC