Você está na página 1de 10

Protocolo de comunicao MODBUS

Adelino Silva e Mrio Felgueiras Alunos do Mestrado em Engenharia Electrotcnica e de Computadores Sistemas e Planeamento Industrial Redes de Campo e de Instrumentao 1890340@isep.ipp.pt (AS), 1890243@isep.ipp.pt (MF) Resumo
O Modbus um protocolo aberto e dos mais simples utilizados na automao industrial (Industrial Automation System IAS) bem como na gesto tcnica de edifcios (Building Management Systems BMS). Em 2004 foi criada uma organizao (associao de fabricantes aberta a utilizadores e integradores) sem fins lucrativos, a comunidade Modbus-IDA dedicada divulgao e evoluo do protocolo Modbus. O Modbus foi introduzido no mercado pela Modicon (agora Schneider Electric) em 1979, rapidamente se tornou num padro industrial e tem sido implementado por centenas de fabricantes nas mais variadas aplicaes e segmentos industriais. A sua popularidade aumentou devido sua simplicidade de implementao bem como pela disponibilidade de cdigo fonte gratuito na internet. hexadecimal onde apenas permitido a existncia de um nico master podendo ter vrios slaves. Modbus ASCII (American Standard Code for Information Interchange) tambm utiliza o RS-232 e RS485 como meio de transmisso. A transmisso dos dados neste caso realizada em formato ASCII. Apenas permitida a existncia de um master podendo ter vrios slaves. Modbus TCP/IP (Transmission Control Protocol, Internet Protocol) [6] utiliza, como meio fsico de transmisso uma rede ethernet [7]. Os dados so transmitidos em formato hexadecimal. Esta variante permite utilizar vrios masters e vrios slaves numa mesma rede. Modbus Plus uma variante ainda proprietria da Schneider Electric. Neste protocolo tambm possvel utilizar vrios masters e vrios slaves. O meio fsico utilizado o RS485. Este protocolo no abordado neste documento. Existem outras variantes, resultantes das limitaes do protocolo, nomeadamente referentes ao tamanho das mensagens. Estas variantes, desenvolvidas por alguns fabricantes, no so analisadas neste documento. Apenas as variantes RTU, ASCII e TCP/IP fazem parte da comunidade Modbus-IDA.

1. Introduo
Este documento descreve as vrias variantes do protocolo Modbus. De uma forma simples so descritas as funcionalidades de cada uma das variantes nomeadamente das variantes base do protocolo, RTU (Remote Terminal Unit) e ASCII (American Standard Code for Information Interchange) [1]. O protocolo Modbus foi criado em 1979 pela Modicon uma empresa do grupo Schneider Electric [2]. Mais tarde, a Schneider Electric, decidiu disponibilzar o protocolo Modbus a toda a comunidade. Desta forma, foi criado o website www.Modbus-IDA.org [3] em conjunto com um grupo de fabricantes onde possvel fazer o download do cdigo fonte do protocolo Modbus bem como obter ajuda na resoluo de questes relacionadas com o protocolo. Este site pertence, agora, a uma comunidade composta por todas as empresas e entidades que de alguma forma esto ligadas a este protocolo. Neste documento feita uma abordagem a todas as variantes do Modbus. Modbus RTU (Remote Terminal Unit), a variante mais comum, e a base de outras, utiliza o RS-232 (EIA/TIA 232) [4] ou RS-485 (EIA/TIA-485) [5] como meio fsico de transmisso. A transmisso de dados realizada em

2. A comunidade Modbus-IDA
Modbus-IDA uma comunidade de entidades independentes e fabricantes de equipamentos que tem como objectivo regular e desenvolver o protocolo Modbus e as suas variantes. Modbus-IDA est sediada nos Estados Unidos da Amrica (EUA) e reconhecida como uma organizao sem fins lucrativos. Entre as vrias actividades da Modbus-IDA podem-se destacar as seguintes: Participao em actividades que tm como objectivo a realizao de standards; Liderar a evoluo do protocolo Modbus e das suas variantes; Incentivar a utilizao do Modbus em vrios meios fsicos;

Desenvolver e manter um programa de ensaios de conformidade de forma a garantir a compatibilidade dos equipamentos em Modbus; Disponibilizar informao a utilizadores e fabricantes acerca do protocolo.

protocolo de comunicao em todos os equipamentos ligados nos barramentos e nas redes. O protocolo Modbus define um PDU independente do meio fsico a utilizar. A construo do protocolo Modbus em determinado barramento ou rede pode introduzir campos adicionais na Application Data Unit (ADU).

No site est disponvel uma diversidade de informao tcnica relacionada com o protocolo Modbus bem como uma lista exaustiva de fabricantes de equipamentos, integradores de sistema utilizando Modbus, membros da comunidade e outras informaes relacionadas com o protocolo Modbus.

Fig. 2. Mensagem genrica em Modbus A ADU construda pelo client que inicia a comunicao. O tamanho do ADU varivel podendo ter no mximo 256 bytes. A funcion code indica ao server que aco deve realizar. O campo funtion code no PDU tem o tamanho de 1 (um) byte. So vlidos cdigos entre 1 e 255 (os cdigos entre 128 e 255 est reservado para funes de exception response - funes de resposta para indicar erros na mensagem recebida). Quando uma mensagem enviada do client para o server o campo function code transmite a tarefa que o server deve executar. Existem algumas function codes s quais possvel acrescentar sub-function codes para determinadas tarefas. O campo data das mensagens enviadas do client para o server contm informao adicional que o server utiliza para levar a cabo a tarefa indicada pela function code. Este campo pode conter endereos de sadas e/ou entradas, a quantidade de itens a tratar, etc. O campo data pode no existir caso a function code no necessite deste. Se no houver qualquer erro identificado pelo server ento no campo data da response ao client enviada a informao solicitada. Se existir um erro a relatar ao client ento o server coloca o cdigo do erro neste campo. Para algumas function codes o campo data da response igual ao campo data na request, esta situao acontece quando a tarefa pedida uma funo de escrita. O campo data existe sempre numa mensagem de response. Na response o server utiliza a mesma function code enviada pelo client. Apenas quando h um erro a relatar ao client o server utiliza um function code diferente. Nesta situao o server coloca o MSB (Most Significant Bit) do function code recebido a 1. O protocolo Modbus define trs PDU, a saber: Modbus request, mensagem enviada do client para o server a solicitar determinada informao ou para executar uma qualquer tarefa; Modbus response, mensagem enviada do server para o client com a informao pedida pelo client

2. Especificao do protocolo de aplicao


Modbus um protocolo de comunicao de dados situado na camada 7 do modelo OSI (Open Systems Interconnection) [8] que fornece um servio do tipo client/server (cliente/servidor) entre equipamentos ligados a um barramento ou a uma rede. Modbus um protocolo request/reply (pedido/resposta) que oferece um servio baseado em function codes (cdigos de funo) pr-determinados e bem definidos. Os function codes so funes do Protocol Data Unit (PDU) do Modbus. O protocolo Modbus permite uma fcil implementao de comunicaes em vrios tipos de arquitecturas de rede. Podem ser utilizados vrios meios fsicos, tais como RS232, RS485 e ethernet.

Fig. 1. Exemplo de uma arquitetura que utiliza vrios meios fsicos com o protocolo Modbus O protocolo nico para qualquer tipo de arquitectura de rede bem como para qualquer tipo de equipamento seja ele um controlador ou um sensor. A utilizao de gateways permite interligar vrios barramentos e redes mantendo sempre o Modbus como

ou a confirmao de que a tarefa solicitada ser executada; Modbus exception response, mensagem enviada do servidor para o client com informao de que no possvel tratar o pedido solicitado.

O Modbus request defenido como: mb_req_pdu = {function_code, request_data}, onde function_code = [1 byte] Modbus function code, request_data = [n bytes] este campo dependente da function code e contm informao de acordo com esta. O Modbus response defenido como: mb_rsp_pdu = {function_code, response_data}, onde function_code = [1 byte] Modbus function code, response_data = [n bytes] este campo dependente da function code e contm informao de acordo com esta. O Modbus exception response defenido como: mb_excep_rsp_pdu = {exception-function_code, exception_code}, onde exception-function_code = [1 byte] Modbus function code + 0x80, exception_code = [1 byte] Modbus exception code de acordo com o protocolo Modbus No protocolo Modbus existem trs tipos de function codes, a saber: Public function codes. Funes definidas e garantidas como nicas sendo validadas pela comunidade Modbus_IDA. Estas funes so standard pelo que devem estar implementadas em todo o equipamento que utilize o protocolo Modbus. User-defined function codes. Funes definidas pelo utilizador. Estas funes s estaro disponveis nos equipametos onde o utilizador as implementar. Reserved function codes. Funes utilizadas por alguns fabricantes, no esto disponveis para o utilizador. So 19 as public function code que podem ser utilizadas por um master para solicitar tarefas a um slave: Read coils (0x01). Esta funo utilizada para ler o estado de sadas (outputs). Read discrete Inputs (0x02). Esta funo utilizada para ler o estado de entradas (inputs). Read holdings registers (0x03). Esta funo utilizada para ler os valores dos holding registers. Read input registers (0x04). Esta funo utilizada para ler os valores dos input registers. Write sigle coil (0x05). Esta funo utilizada para forar uma sada (output).

Write sigle register (0x06). Esta funo utilizada para forar um valor de holding register. Read exception status (0x07). Esta funo utilizada para obter informao de status. Diagnostics (0x08). Esta funo utilizada para realizar testes porta de comunicao. Get comm event counter (0x0B). Esta funo utilizaa para obter vrias informaes de status. Get comm event log (0x0C). Esta funo utilizada para obter vrias informaes de status. Write multiple coils (0x0F). Esta funo utilizada para forar vrias sadas (outputs). Write multiple registers (0x10). Esta funo utilizada para forar o valor de vrios holding register. Report slave ID (0x11). Esta funo utilizada para obter o ID e vrias informaes de status. Read file record (0x14). Esta funo utilizada para ler vrios registos. Write file record (0x15). Esta funo utilizada para gravar vrios registos. Mask write register (0x16). Esta funo utilizada para fazer alteraes em registos utilizando funes lgicas. Read/write multiple registers (0x17). Esta funo permite executar uma tarefa de escrita e de leitura com a mesma request. Read FIFO queue (0x18). Esta funo permite ler informaes do contedo da tabela de FIFO. Encapsulated interface transport (0x2B). Funo reservada. CANopen general reference request and response PDU (0x2B / 0x0D). Esta funo serve para encapsular servios de forma a permitir a troca de informaes com um sistema CAN [9]. Read device identification (0x2B / 0x0E). Esta funo permite obter informaes acerca do equipamento.

Alm das function codes enumeradas atrs o utilizador poder definir mais function codes na gama ainda no ocupada. Desta forma o utilizador dever programar as function codes que criar em todos os equipamentos ligados no barramento ou rede. S assim ser possvel que todos os equipamentos possam interpretar as mensagens a ele destinado. Quando um client envia um request para um server o client espera uma resposta normal. Uma de quatro situaes podem acontecer aps o request do client. Se o server recebe um request sem erros de comunicao e pode trat-lo normalmente ento o server envia ao client uma resposta normal.

Se o server no recebe um determinado request ento tambm no enviar qualquer resposta. Desta forma o client, aps um determinado tempo, verificar que o request no ter sido tratado pelo server. Se o server recebe um request e detecta um erro de comunicao, ento no ser enviado qualquer resposta. Desta forma o client, aps um determinado tempo, verificar que o request no ter sido tratado pelo server. Se o server recebe um request e no detectado qualquer erro de comunicao mas no consegue execut-lo ento enviada uma resposta (exception response) ao client com informao desse erro.

Sendo um protocolo master/slave, em determinado sistema, apenas existe um master. o master que responsvel por estabelecer o nicio de qualquer comunicao. Os slaves apenas respondem ao master quando por ele solicitado. Os slaves no comunicam entre si. Ao nvel fsico o Modbus pode fazer uso de vrios tipos de interfaces RS232 e RS485. Em RS232, como uma comunicao ponto a ponto, apenas possvel ter um master e um slave. Em RS485 possvel ter vrios slaves mas um nico master.

3.1 Princpios do protocolo master/slave


O protocolo do Modbus em linha srie um protocolo master/slave. Apenas um master pode existir. At 247 slaves podem existir em determinado barramento. Apenas o master pode iniciar qualquer comunicao. Os slaves apenas respondem aos pedidos do master. Os slaves no comunicam entre si. O master estabelece uma comunicao numa das seguintes formas: Unicast mode. O master envia uma mensagem para um determinado slave. Aps receber e tratar a mensagem o slave envia uma resposta para o master. Broadcast mode. O master envia uma mensagem para todos os slaves. Todos os slaves executam a mensagem mas no enviada qualquer resposta para o master.

As mensagens de exception response tm dois campos diferentes de uma resposta normal. No campo function code, numa resposta normal, o server envia o mesmo function code da request no function code da response. Todas as function codes tm o bit mais significativo (MSB Most Significant Bit) a 0 (zero). Nas mensagens de exception response o server coloca o MSB a 1 (um). Desta forma as function codes dos request apenas diferem das function codes das exception responses no MSB. Assim o client ao receber uma resposta com o MSB do function code a 1 (um) sabe que uma resposta de erro e ento ir procurar no campo data o respectivo cdigo da excepton code. No campo data, numa resposta normal, o server envia as informaes pedidas pelo client. Numa mensagem exception response o server envia o cdigo do erro em causa. Os cdigos de erro (exception codes) so, partida, conhecidos pelo client e pelos servers.

3.2 Endereamento
O master no possui endereo. Os slaves podem utilizar os endereos de 1 a 247 no podendo haver slaves com o mesmo endereo. O master utiliza o endereo 0 (zero) quando pretende enviar uma mensagem para todos os slaves do barramento (broadcast message).

3. Modbus em linha srie


Modbus um protocolo master/slave (mestre/escravo). Este protocolo est situado ao nvel da camada 2 do modelo OSI.

3.3 Descrio da frame do Modbus


O protocolo Modbus define um PDU independente do meio fsico a utilizar.

Fig. 4. Protocol Data Unit (PDU) em Modbus A construo da mensagem do protocolo Modbus em determinado meio fsico realizada com a introduo de campos adicionais ao PDU. O client que inicia a

Fig. 3. Modbus RTU e Modbus ASCII no modelo OSI

comunicao constri a PDU ao qual adiciona o campo address field com o endereo do slave para o qual pretende enviar a mensagem e ainda acrescenta o campo de verificao de erros CRC ou LRC (Cyclical Redundancy Checking, Longitudinal Redundancy Checking).

Fig. 5. Protocol Data Unit (PDU) em Modbus quando em linha srie A frame do protocolo Modbus em linha srie fica com o aspecto representado na fig. 5. Existem 4 campos numa frame em que semelhante quando enviado pelo client ou pelo server. Address field. Quando a PDU enviada pelo client este o endereo do slave para qual a mensagem destinada. Quando o client pretende enviar a mensagem para todos os slaves do barramento utiliza o endereo 0 (zero), endereo de broadcast. Quando a mensagem enviada pelo slave este endereo o seu prprio endereo, desta forma o client ao receber esta mensagem sabe qual a origem desta. Function code. Esta a funo que o client indica ao slave para executar. Na resposta do slave este campo igual quando no h erros na mensagem. Quando o slave no consegue executar determinada funo pedida pelo client ento na resposta o slave coloca um 1 (um) no MSB do function code. Data. Na mensagem enviada pelo client neste campo colocada a informao adicional ao campo anterior. Quando da resposta do server neste campo colocada a informao pedida pelo client. Quando o server envia uma exception response neste campo colocado o respectivo cdigo de erro. Este campo pode no existir caso a function code no necessite de dados adicionais. CRC ou LRC (Cyclical Redundancy Checking, Longitudinal Redundancy Checking). Campo para verificao de erros na frame. Este campo calculado aquando do envio da mensagem e verificado durante a recepo da mensagem.

mensagem deve ser transmitida numa sequncias de palavras. palavra acrescentado 1 (um) bit de start (incio), 1 (um) bit para controlo de paridade e 1 (um) bit de stop (fim). Assim cada palavra formada da seguinte forma: 1 (um) bit de start + 8 bits de data + 1 (um) bit de paridade + 1 (um) bit de stop. Assim cada palavra em Modbus RTU tem o tamanho de 11 bits. Os bits de data so transmitidos do bit menos significativo (LSB Least Significant Bit) para o bit mais significativo (MSB Most Significant Bit). O bit de paridade, por defeito, par (even parity), mas tambm pode ser mpar (odd parity) ou sem paridade (no parity). Todos os equipamentos ligados no barramento ou rede devem ter a paridade configurada da mesma forma. Quando no utilizada a paridade (no parity) ento passa a haver 2 stop bits, desta forma a palavra mantm o tamanho de 11 bits. Adicionalmente deteco de erro ao nvel da palavra tambm realizada a deteco de erro ao nvel da frame. No caso da trasmisso em RTU o mtodo utilizado tem o nome de CRC. Uma determinada mensagem (frame) deve ser transmitida por uma sequncia de palavras sem interrupo. Entre cada frame deve haver uma interrupo (silncio na linha) de pelo menos 3,5 vezes o tempo de um caracter.

Fig. 6. Sequncia de frames sem erros Caso a frame ainda no tenha sido totalmente recebida e seja detectado um silncio na linha superior a 1,5 vezes o tempo de um caracter ento a mensagem descartada pelo receptor e interpretado como um erro.

Fig. 7. Sequncia de frames com erro Como foi referido anteriormente, em Modbus RTU, realizada uma verificao de erros na frame com o mtodo CRC. Esta verificao sempre realizada mesmo que no esteja implementada a verificao de paridade (no parity). O campo CRC o ltimo da frame. O campo CRC tem o tamanho de 16 bits. Neste campo no utilizado o start e stop bit nem a paridade.

3.4 Modo de transmisso em RTU


A comunicao Modbus em RTU, quando em linha srie, cada byte (8 bits) de mensagem enviado por 2 caracteres hexadecimal, isto , uma palavra. Cada

Assim uma frame em Modbus RTU tem a seguinte constituio: Address field: 1 (um) byte (11 bits); Function code: 1 (um) byte (11 bits); Data: de 0 (zero) at 252 bytes (cada byte tem 11 bits); CRC: 2 bytes (16 bits).

Todos os caracteres de uma frame so enviados em hexadecimais codificados pela tabela ASCII. Todos os equipamentos monitorizam a linha constantemente de forma a detectar o caracter de incio de frame :. Tipicamente os caracteres podem ter um intervalo de transmisso at 1 (um) segundo, quando este tempo excedido interpretado como erro na transmisso. Tempos diferentes podem ser configurados pelo utilizador. Assim uma frame em Modbus ASCII tem a seguinte constituio: Start: 1 (um) caracter (10 bits); Address field: 2 caracteres (20 bits); Function code: 2 caracteres (20 bits); Data: de 0 (zero) at 2x252 caracteres (cada caracter tem 10 bits); LRC: 2 caracteres (16 bits); End: 2 caracteres, CR + LF (20 bits).

Fig. 8. Frame em Modbus RTU

3.5 Modo de transmisso em ASCII


A comunicao Modbus em ASCII, quando em linha srie, cada byte de mensagem enviado como 2 (dois) caracteres ASCII. Este modo menos eficiente do que o Modbus RTU uma vez que em Modbus ASCII cada byte de mensagem necessita de dois caracteres (duas palavras). O Modbus ASCII, como menos eficiente, apenas utilizado quando o meio fsico ou o equipamento no permite utilizar o Modbus RTU. Cada mensagem deve ser transmitida numa sequncia de palavras. palavra acrescentado 1 (um) bit de start (incio), 1 (um) bit para controlo de paridade e 1 (um) bit de stop (fim). Assim cada palavra formada da seguinte forma: 1 (um) bit de start + 7 bits de data + 1 (um) bit de paridade + 1 (um) bit de stop. Desta forma cada palavra em Modbus ASCII tem o tamanho de 10 bits. Os bits de data so transmitidos do bit menos significativo (LSB Least Significant Bit) para o bit mais significativo (MSB Most Significant Bit). O bit de paridade, por defeito, par (even parity), mas tambm pode ser mpar (odd parity) ou sem paridade (no parity). Todos os equipamentos ligados no barramento ou rede devem ter a paridade configurada da mesma forma. Quando no utilizada a paridade (no parity) ento passa a haver 2 stop bits, desta forma a palavra mantm o tamanho de 10 bits. Adicionalmente deteco de erro ao nvel da palavra tambm realizada a deteco de erro ao nvel da frame. No caso da trasmisso em Modbus ASCII o mtodo utilizado tem o nome de LRC. Uma determinada mensagem (frame) deve ser transmitida por uma sequncia de palavras sem interrupo. O incio de uma frame identificada pelo caracter ASCII : (dois pontos, em ASCII 3A) e o final da frame identificado por dois caracteres ASCII CR e LF (Carriage Return, Line Feed, em ASCII 0D e 0A).

Fig. 9. Frame em Modbus ASCII

3.6 Mtodos de verificao de erros


H duas verificaes de erros introduzidas nas mensagens (frames), mtodo CRC para Modbus RTU e LRC para Modbus ASCII. Ambas as verificaes so realizadas ao nvel do equipamento. Aquando da transmisso o equipamento calcula e introduz o bit de paridade e o CRC ou LRC na frame. Na recepo o equipamento calcula a paridade e o CRC ou LRC e compara com os valores na frame recebida. Se houver diferenas a frame descartada. Neste caso o receptor no envia qualquer mensagem de confirmao, desta forma, aps um tempo determinado, o emissor no recebendo resposta gera um erro. Qualquer mensagem que no chegue a determinado receptor tambm no ir ser gerada mensagem de resposta, desta forma, aps um tempo determinado, o emissor no recebendo resposta gera um erro. A nica situao em que o emissor (no caso sempre o master) recebe uma informao de erro do receptor (no caso sempre o slave) acontece quando o server no consegue executar a tarefa solicitada pelo client. Nesta situao o slave envia uma mensagem (exception response) com um cdigo pr-estabelecido do tipo de erro detectado ao client.

3.6.1 Verificao de paridade Esta verificao realizada ao nvel da palavra em Modbus RTU e ao nvel do caracter em Modbus ASCII. O utilizador pode configurar 3 tipos de paridade, a saber; par (even), mpar (odd) ou sem paridade (no parity). Se for configurada uma paridade even ou odd, a quantidade de bits a 1 contada na parte da data (em Modbus RTU 8 bits e em Modbus ASCII 7 bits). No bit de paridade colocado 0 ou 1 para que a soma anterior com o bit de parida seja par (even) ou mpar (odd) de acordo com o configurado. Quando o utilizador faz uma configurao sem verificao de paridade (no parity), este bit substitudo por 1 (um) bit stop adicional para que a palavra em Modbus RTU tenha 11 bits e o caracter em Modbus ASCII 10 bits. 3.6.2 Verificao de erro na frame De acordo com o protocolo Modbus utilizado esta verificao toma duas formas. Em Modbus RTU o mtodo utilizado tem o nome de Cyclical Redundancy Checking (CRC). Este mtodo verifica toda a frame. Este mtodo independente da verificao de paridade configurada. Em Modbus ASCII o mtodo utilizado tem o nome de Longitudinal Redundancy Checking (LRC). Este mtodo verifica toda a frame com excepo dos caracteres de start e end. Este mtodo independente da verificao de paridade configurada. 3.6.2.1 Cyclical Redundancy Checking (CRC) em Modbus RTU Mtodo de verificao de erros na frame utilizado em Modbus RTU. O campo do CRC composto por 2 bytes (16 bits). O valor do CRC calculado pelo emissor da mensagem que anexa frame, ltimo campo. O receptor que recebe a mensagem calcula o CRC durante a transmisso e compara este valor com o enviado na mensagem. Se estes valores forem diferentes gerado um erro e a mensagem descartada. O receptor no envia qualquer mensagem de erro para o emissor. Este mtodo faz um clculo de ou exclusivo entre cada byte da frame (no considerado o start bit, stop bit e o bit de paridade) e o byte inferior do CRC (inicialmente o CRC toma o valor de FFFF em hexadecimal), deslizando os bits a cada sequncia.

3.6.2.2 Longitudinal Redundancy Checking (LRC) em Modbus ASCII Mtodo de verificao de erros na frame utilizado em Modbus ASCII. O campo do LRC composto por um byte. O valor do LRC calculado pelo emissor da mensagem que anexa frame antes do campo de end. O receptor que recebe a mensagem calcula o LRC durante a transmisso e compara este valor com o enviado na mensagem. Se estes valores forem diferentes gerado um erro e a mensagem descartada. O receptor no envia qualquer mensagem de erro para o emissor. Este mtodo faz a soma sucessiva dos bytes da frame (no considerado o campo de start e de end) e descartando o excedente de 8 bits.

3.7 Meio fsico


As variantes de protocolo Modbus RTU e Modbus ASCII podem ser implementados em linha srie RS232 ou RS485. Em RS232 (EIA/TIA-232) apenas possvel ter um master e um slave. A limitao a um slave imposta pela norma que regula o RS232. Este meio fsico apenas permite ligar dois equipamentos. Este barramento est limitado a cerca de 20 metros de comprimento. Em RS485 (EIA/TIA-485) apenas possvel ter um master mas permitido ter mais do que um slave. Para a quantidade mxima de slaves deve ser consultado, alm da especificao da EIA/TIA-485, o datasheet do fabricante do equipamento em questo. Um barramento deste tipo pode ter mais de 1.000 metros. Dever ser levado em conta o tipo de cabo a utilizar neste barramento uma vez que este tem uma influncia directa no comprimento mximo do barramento. O baud rate (taxa de transmisso) permitido em Modbus est dependente do comprimento do barramento onde esto ligados os equipamentos. O baud rate tambm influenciado pelo tipo de cabo utilizado. Deve ser consultado o datasheet dos equipamentos a utilizar de forma a verificar as recomendaes do fabricante.

4. Modbus sobre TCP/IP


De forma a aumentar a velocidade do protocolo Modbus bem como incrementar a sua versatibilidade foi desenvolvido uma nova variante que pudesse utilizar a ethernet como meio fsico. Assim nasceu o protocolo Modbus TCP/IP que acrescenta simplicidade do Modbus as vantagens do TCP/IP sobre ethernet. Esta variante, lanada em 1999, foi o primeiro protocolo aberto a utilizar o TCP/IP sobre ethernet.

O protocolo Modbus TCP/IP no mais do que o protocolo Modbus RTU encapsulado numa trama TCP/IP.

Se esta rede ethernet tiver ligao internet ento ainda possvel fazer qualquer tarefa em qualquer ponto do mundo como se se estivesse no mesmo edifcio do equipamento. A acrescentar a todas estas vantagens o IEC (International Electrotechnical Commission) [11] ir integrar o Mosbus TCP/IP nas prximas edies das suas normas IEC 61158 e IEC61784-2.

4.1. Descrio protocolo Modbus TCP/IP


O protocolo Modbus define um PDU independente do meio fsico a utilizar. Fig. 10. Modbus TCP/IP no modelo OSI Com a utilizao da ethernet como meio fsico fez com que o Modbus passasse a fronteira da planta industrial ou das salas tcnicas em edifcios. Com este novo meio fsico possvel utilizar o Modbus em todo o local onde exista rede ethernet, isto o Modbus chega agora a todo o local onde exista um computador com ligao rede ethernet ou internet. A acrescentar a estas vantagens fsicas h o facto dos protocolos Modbus serem abertos no havendo lugar a pagamento de licenas a qualquer entidade. A ethernet j o meio fsico mais utilizado tanto no meio industrial como fora deste. A oferta de acessrios e recursos enorme e em franco desenvolvimento. Existe ainda equipamentos que facilmente permitem expandir a rede via cabo (wired) ou mesmo via rdio (wireless) e implementar polticas de segurana. O Modbus pode tirar partido de todas estas vantagens do TCP/IP sobre ethernet sem necessidade de desenvolver equipamentos prprios para a construo e manuteno da rede. Havendo determinado equipamento ligado a uma rede ethernet possvel ter uma diversidade de servios adicionais, tais como: Servio de email: o equipamento pode enviar para uma lista de emails informaes de eventos, avarias, alarmes, etc. Desta forma a necessidade de uma qualquer interveno tcnica ter lugar mais rapidamente. Acesso a uma base de dados para registo de eventos e/ou avarias. Desta forma a capacidade de armazenamento do histrico no est limitada capacidade de armazenamento do equipamento. Possibilidade de existir vrios pontos de monitorizao atravs de computadores com SCADA (Supervisory Control And Data Acquisition) [10].

Fig. 11. Mensagem genrica em Modbus A construo da mensagem do protocolo Modbus em determinado meio fsico realizada com a introduo de campos adicionais ao PDU. O client que inicia a comunicao constri a PDU ao qual adiciona os campos necessrios transmisso da mensagem no meio em questo.

Fig. 12. Application Data Unit (ADU) em Modbus sobre TCP/IP Em Modbus TCP/IP um campo especfico acrescentado ao PDU do Modbus. Este campo tem o nome de MBAP Header (Modbus Application Protocol Header). Em Modbus TCP/IP no utilizado verificao de erros na frame de igual forma ao CRC do Modbus RTU ou LRC do Modbus ASCII. O Modbus TCP/IP deixa a verificao de erros na frame a cargo dos protocolos TCP/IP e ethernet. Este header (cabealho) contm informaes diferentes quando comparadas com o ADU utilizada no Modbus RTU em linha srie: Sobre TCP, no MBAP header, includa informao do comprimento da frame para que o receptor possa identificar os limites da mensagem mesmo que esta tenha sido dividida em vrios pacotes.

O endereo do slave substitudo por um unit identifier no MBAP Header; Todos os request e responses so construdos de tal forma que o receptor consiga verificar que a mensagem terminou. Para os function codes onde o PDU tem um comprimento fixo, apenas o function code suficiente. Para function codes que necessitam de enviar dados adicionais na request ou na response o campo data inclui um byte de contagem;

No Modbus TCP/IP qualquer equipamento pode ser client e server simultaneamente. No Modbus TCP/IP possvel ter mais do que um master. Na configurao ethernet com a utilizao de bridges, routers e gateways possvel, no mesmo sistema, ter equipamentos ligados em ethernet e outros ligados em linha srie. Qualquer master ligado na rede ethernet pode comunicar com outro equipamento ligado em qualquer local do sistema esteja ele ligado na ethernet ou ligado num barramento srie que por sua vez estar ligado ethernet atravs de uma gateway.

O nmero de slaves e masters numa rede ethernet depende das caractersticas dos equipamentos. Numa rede ethernet possvel haver mais do que uma transaco em simultneo. ainda possvel, no caso de dois equipamentos terem caractersticas slave e master, haver duas comunicaes em curso simultaneamente entre estes dois equipamentos. O equipamento ter a porta TCP 502 para troca de mensagens no server e uma outra qualquer porta para troca de mensagens no client. A porta TCP 502 est reservada para comunicaes Modbus TCP/IP. Em Modbus TCP/IP um client pode estabelecer outras comunicaes sem a primeira ter finalizado. O controlo do fluxo de mensagens gerido pelos protocolos TCP/IP e ethernet. Uma frame TCP apenas transporta uma frame Modbus de cada vez. No possvel encapsular dois Modbus PDU em uma frame TCP.

5. Concluso
O Modbus um protocolo master/slave. Apenas o master pode estabelecer uma comunicao. Aos slaves apenas permitido responder s solicitaes do master. Quando um slave tem informaes para disponibilizar a outros slaves este tem de esperar que o master lhe questione e este que distribuir a informao pelos outros slaves. Com a variante Modbus TCP/IP esta limitao ultrapassada uma vez que todo o equipamento pode ter capacidade de master e slave simultaneamente. A soluo TCP/IP pode no ser a melhor para algumas aplicaes que exigem tempos de resposta no compatveis com os fornecidos pelo TCP/IP. A soluo Modbus, em qualquer uma das suas variantes, deve ser sempre levada em conta numa deciso. Este protocolo tem como grandes vantagens a sua fcil implementao, no necessita de grandes recursos ao nvel do equipamento e meio fsico e a sua utilizao livre de encargos de licenas. As duas formas de deteco de erro, em Modbus RTU e Modbus ASCII, so simples e de grande eficcia. Em Modbus TCP/IP a deteco de erros ao nvel da frame fica responsabilidade dos protocolos TCP/IP e ethernet.

4.2. Descrio do MBAP header


O MBAP header contm os seguintes campos: Transaction Identifier. Identificao da request/response. Esta identificao criada pelo client quando envia uma request. O server, na response, utiliza a mesma identificao da request. Este campo tem o tamanho de 2 bytes. Protocol Identifier. Identificao do protocolo utilizado quando em sistemas complexos. O Modbus identificado com 0 (zero). Campo com tamanho de 2 bytes. Lenght. Number de bytes que se seguem a este campo. Inclui os campos Unit Identifier e data. Este campo tem o tamanho de 2 bytes. Unit Identifier. Identificao do slave ao qual se destina a mensagem caso este esteja conectado rede atravs de uma gateway, isto , ligado em suporte fsico diferente do client. Este campo tem o tamanho de 1 (um) byte. Uma comunicao em Modbus TCP/IP requer o estabelecimento de uma ligao TCP entre o client e o server. Esta ligao pode ser realizada pelo mdulo de aplicao ou pelo mdulo de gesto de ligaes TCP. No primeiro caso necessrio que a aplicao utilize recursos especiais para a gesto das ligaes, enquanto que no segundo caso todo o processo de ligaes realizado automaticamente, desta forma o utilizador apenas se concentra no envio e recepo de mensagens em Modbus.

6. Notas
Este documento foi realizado no mbito do trabalho a apresentar na disciplina de Redes de Campo e de Instrumentao do Mestrado em Engenharia Electrotcnica e de Computadores ramo de Sistemas e Planeamento Industrial do 1 Semestre do 1 Ano do Ano lectivo de 2007/08.

7. Acrnimos
De forma a facilitar a leitura deste documento optou-se por realizar uma lista de acrnimos. ADU ASCII Application Data Unit American Standard Code for Information Interchange BMS Building Management Systems CAN Controller Area Network CR Carriage Return CRC Cyclical Redundancy Checking EIA Electronic Industries Alliance FIFO First In, First Out IAS Industrial Automation System IEC International Electrotechnical Commission IP Internet Protocol LF Line Feed LRC Longitudinal Redundancy Checking LSB Least Significant Bit MBAP Modbus Application Protocol MSB Most Significant Bit OSI Open Systems Interconnection PDU Protocol Data Unit RTU Remote Terminal Unit SCADA Supervisory Control And Data Acquisition TCP Transmission Control Protocol TIA Telecommunications Industry Association

[4] The RS232 standard, a tutorial with signal names and definitions http://www.camiresearch.com/Data_Com_Basics/RS232_standa rd.html [5] Guidelines for proper wiring of an RS485 Network

http://www.maximic.com/appnotes.cfm/appnote_number/763 [6] RFC 793 - Transmission Control Protocol


http://www.faqs.org/rfcs/rfc793.html [7] Ethernet technologies

http://www.cisco.com/univercd/cc/td/doc/cisintwk/ito_doc /ethernet.htm#wp1026438
[8] Hubert Zimmermann, OSI Reference Model The ISO Model of Architecture for Open Systems Interconnection

http://www.comsoc.org/livepubs/50_journals/pdf/RightsM anagement_eid=136833.pdf
[9] Controller Area Network (CAN) http://can-cia.org [10] SCADA http://en.wikipedia.org/wiki/SCADA [11] International Electrotechnical Commission

http://www.iec.ch/
[12] Modbus Application Protocol Specification V1.1b, www.Modbus-IDA.org, 28 de Dezembro de 2006. [13] Modbus over Serial Line, Specification and Implementation Guide V1.02, www.Modbus.org/, 20 de Dezembro de 2006. [14] Modbus Messaging on TCP/IP Implementation Guide V1.0b, www.Modbus-IDA.org, 24 de Outubro de 2006. [15] FieldServer Technologies, www.fieldserver.com. www.protocessor.com,

8. Referncias
[1] ASCII table and description http://asciitable.com [2] Schneider Electric http://www.schneider-electric.com [3] Modbus-IDA the architecture for distributed automation, www.Modbus.org

10

Você também pode gostar