Vous êtes sur la page 1sur 40

Motores I Automao I Energia I Transmisso & Distribuio I Tintas

Modbus RTU PLC300


Manual do Usurio

Manual do Usurio Modbus RTU


Srie: PLC300 Idioma: Portugus N do Documento: 10000850708 / 03
Data da Publicao: 04/2013

Sumrio

SUMRIO
SUMRIO ..................................................................................................................................3 SOBRE O MANUAL .................................................................................................................5
ABREVIAES E DEFINIES.................................................................................................... 5 REPRESENTAO NUMRICA................................................................................................... 5 DOCUMENTOS.......................................................................................................................... 5

1 2

INTRODUO COMUNICAO SERIAL ................................................................... 6 DESCRIO DAS INTERFACES......................................................................................7


2.1 RS232 .............................................................................................................................. 7 2.1.1 Caractersticas da interface RS232 ............................................................................. 7 2.1.2 Pinagem do Conector................................................................................................. 7 2.1.3 Conexo com a Rede RS232....................................................................................... 7 2.2 RS485 .............................................................................................................................. 7 2.2.1 Caractersticas da interface RS485 ............................................................................. 7 2.2.2 Pinagem do Conector................................................................................................. 7 2.2.3 Indicaes................................................................................................................. 8 2.2.4 Chaves para Habilitao do Resistor de Terminao.................................................... 8 2.2.5 Conexo com a Rede RS485....................................................................................... 8

CONFIGURAO DAS INTERFACES .............................................................................9


3.1 CONFIGURAO RS232 ................................................................................................... 9 BAUD RATE............................................................................................................................... 9 PARIDADE................................................................................................................................. 9 STOP BITS ................................................................................................................................ 9 3.2 CONFIGURAO RS485 ................................................................................................. 10 BAUD RATE............................................................................................................................. 10 PARIDADE............................................................................................................................... 10 STOP BITS .............................................................................................................................. 10 MODO DE OPERAO............................................................................................................. 10 ENDEREO DO ESCRAVO........................................................................................................ 11

PROTOCOLO MODBUS RTU.........................................................................................12


4.1 MODOS DE TRANSMISSO ............................................................................................ 12 4.2 ESTRUTURA DAS MENSAGENS NO MODO RTU .............................................................. 12 4.2.1 Endereo................................................................................................................. 12 4.2.2 Cdigo da Funo.................................................................................................... 12 4.2.3 Campo de Dados ..................................................................................................... 12 4.2.4 CRC ........................................................................................................................ 12 4.2.5 Tempo entre Mensagens .......................................................................................... 13

OPERAO NA REDE MODBUS RTU MODO ESCRAVO ...................................... 14


5.1 FUNES DISPONVEIS E TEMPOS DE RESPOSTA ......................................................... 14 5.2 MAPA DE MEMRIA....................................................................................................... 15 5.2.1 Marcadores de Sistema de Leitura %SB / %SW / %SD............................................ 15 5.2.2 Marcadores de Sistema de Escrita %CB / %CW / %CD........................................... 15 5.2.3 Inputs %IB / %IW / %ID ......................................................................................... 15 5.2.4 Outputs %QB / %QW / %QD.................................................................................. 15 5.2.5 Inputs de rede %IB / %IW / %ID............................................................................. 16 5.2.6 Outputs de rede %QB / %QW / %QD...................................................................... 16 5.2.7 Marcadores em Memria %MB / %MW / %MD ....................................................... 16 PLC300 | 3

Sumrio
5.3 ACESSO AOS DADOS..................................................................................................... 16

DESCRIO DETALHADA DAS FUNES ................................................................. 20


6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 6.10 FUNO 01 READ COILS ............................................................................................. 20 FUNO 02 READ INPUT DISCRETE............................................................................. 20 FUNO 03 READ HOLDING REGISTER........................................................................ 20 FUNO 04 READ INPUT REGISTER............................................................................. 21 FUNO 05 WRITE SINGLE COIL.................................................................................. 21 FUNO 06 WRITE SINGLE REGISTER ......................................................................... 22 FUNO 15 WRITE MULTIPLE COILS ........................................................................... 22 FUNO 16 WRITE MULTIPLE REGISTERS ................................................................... 23 FUNO 43 READ DEVICE IDENTIFICATION ................................................................. 24 ERROS DE COMUNICAO......................................................................................... 25

OPERAO NA REDE MODBUS RTU MODO MESTRE......................................... 27


7.1 BLOCOS PARA A PROGRAMAO DO MESTRE.............................................................. 27 7.1.1 MB Read Binary Leitura de Bits .............................................................................. 27 7.1.2 MB Read Register Leitura de Registradores............................................................ 28 7.1.3 MB Write Binary Escrita de Bits .............................................................................. 30 7.1.4 MB Write Register Escrita de Registradores............................................................ 31 7.1.5 MB Master Control/Status Controle e Estado do Modbus RTU ................................. 33 7.1.6 MB Slave Status Estado dos Escravos da Rede Modbus RTU................................... 34

MARCADORES DE SISTEMA PARA RS232 E RS485................................................. 36


8.1 8.2 MARCADORES DE SISTEMA DE LEITURA ....................................................................... 36 MARCADORES DE SISTEMA DE ESCRITA....................................................................... 36

I.

APNDICES ......................................................................................................................38
APNDICE A. TABELA ASCII.................................................................................................. 38 APNDICE B. CLCULO DO CRC UTILIZANDO TABELAS ....................................................... 39

PLC300 | 4

Sobre o Manual

SOBRE O MANUAL
Este manual fornece a descrio necessria para a operao do controlador programvel PLC300 utilizando o protocolo Modbus RTU. Este manual deve ser utilizado em conjunto com manual do usurio do PLC300. ABREVIAES E DEFINIES ASCII CRC EIA TIA RTU American Standard Code for Information Interchange Cycling Redundancy Check Electronic Industries Alliance Telecommunications Industry Association Remote Terminal Unit

REPRESENTAO NUMRICA Nmeros decimais so representados atravs de dgitos sem sufixo. Nmeros hexadecimais so representados com a letra h depois do nmero. Nmeros binrios so representados com a letra b depois do nmero. DOCUMENTOS O protocolo Modbus RTU foi desenvolvido baseado nas seguintes especificaes e documentos:
Documento MODBUS Application Protocol Specification, December 28th 2006. MODBUS Protocol Reference Guide, June 1996. MODBUS over Serial Line, December 20th 2006. Verso V1.1b Rev. J V1.02 Fonte MODBUS.ORG MODICON MODBUS.ORG

Para obter esta documentao, deve-se consultar a MODBUS.ORG, que atualmente a organizao que mantm, divulga e atualiza as informaes relativas ao protocolo Modbus.

PLC300 | 5

Introduo Comunicao Serial

1 INTRODUO COMUNICAO SERIAL


Em uma interface serial os bits de dados so enviados sequencialmente atravs de um canal de comunicao ou barramento. Diversas tecnologias utilizam comunicao serial para transferncia de dados, incluindo as interfaces RS232 e RS485. As normas que especificam os padres RS232 e RS485, no entanto, no especificam o formato nem a sequncia de caracteres para a transmisso e recepo de dados. Neste sentido, alm da interface, necessrio identificar tambm o protocolo utilizado para comunicao. Dentre os diversos protocolos existentes, um protocolo muito utilizado na indstria o protocolo Modbus RTU. A seguir sero apresentadas caractersticas das interfaces seriais RS232 e RS485 disponveis para o produto, bem como a descrio detalhada do protocolo Modbus RTU para utilizao destas interfaces.

PLC300 | 6

Descrio das Interfaces

2 DESCRIO DAS INTERFACES


O controlador programvel PLC300 possui uma interface RS232 e uma interface RS485 padro no produto. A seguir so apresentadas informaes sobre a conexo e instalao do equipamento em rede. 2.1 2.1.1 RS232 Caractersticas da interface RS232

Interface segue o padro EIA/TIA-232. Opera com o protocolo Modbus RTU no modo escravo apenas, configurado para o endereo de rede 1. Possibilita comunicao utilizando taxas de 1200 at 57600 Kbit/s. Permite a conexo entre o equipamento e o mestre da rede (ponto-a-ponto). Distncia mxima para ligao entre os dispositivos: 10 metros. Pinagem do Conector

2.1.2

A conexo para a interface RS232 est disponvel atravs do conector XC3 utilizando a seguinte pinagem:
Tabela 2.1: Pinagem do conector para RS232 Pino 9 10 11 Nome TX RX GND Funo Transmisso de dados (ligado ao RX do mestre) Recepo de dados (ligado ao TX do mestre) Referncia para circuito RS232

2.1.3

Conexo com a Rede RS232

Os sinais RX e TX do escravo devem ser ligados respectivamente aos sinais TX e RX do mestre, alm da conexo do sinal de referncia (GND). A interface RS232 muito susceptvel a interferncias. Por este motivo, o cabo utilizado para comunicao deve ser o mais curto possvel sempre menor que 10 metros e deve ser colocado em separado da fiao de potncia que alimenta outros equipamentos. RS485 Caractersticas da interface RS485

2.2 2.2.1

Interface segue o padro EIA/TIA-485. Pode operar como escravo ou mestre da rede Modbus RTU. Possibilita comunicao utilizando taxas de 1200 at 57600 Kbit/s. Interface isolada galvanicamente e com sinal diferencial, conferindo maior robustez contra interferncia eletromagntica. Permite a conexo de at 32 dispositivos no mesmo segmento. Uma quantidade maior de dispositivos pode ser conectada com o uso de repetidores 1. Comprimento mximo do barramento de 1000 metros. Pinagem do Conector

2.2.2

A conexo para a interface RS485 est disponvel atravs do conector XC3 utilizando a seguinte pinagem:
Tabela 2.2: Pinagem do conector para RS485 Pino 12 13 14 Nome A-Line (-) B-Line (+) GND Funo RxD/TxD negativo RxD/TxD positivo 0V isolado do circuito RS485

O nmero limite de equipamentos que podem ser conectados na rede tambm depende do protocolo utilizado.

PLC300 | 7

Descrio das Interfaces


2.2.3 Indicaes

Alm dos marcadores de sistema, que fornecem diversas informaes sobre a interface RS485, o controlador programvel PLC300 possui um LED bicolor verde e vermelho na parte frontal do produto utilizado para indicao da interface Serial.

Figura 2.1: LED de indicao da interface Serial

Durante a inicializao do equipamento, ambos os LEDs so acesos para teste por um perodo de aproximadamente 500 ms alternadamente. Aps este perodo, para a interface RS485, eles faro as seguintes indicaes. LED Verde: acende sempre que um telegrama transmitido pela interface RS485. LED Vermelho: acende sempre que um byte recebido incorretamente (erro de paridade ou frame) ou detectado erro de CRC no telegrama recebido pela interface RS485. Chaves para Habilitao do Resistor de Terminao

2.2.4

Para cada segmento da rede RS485, necessrio habilitar um resistor de terminao nos pontos extremos do barramento principal. O PLC300 possui chaves (S1) que podem ser ativadas (colocando ambas as chaves na posio ON) para habilitar o resistor de terminao. 2.2.5 Conexo com a Rede RS485

Para a ligao do equipamento utilizando a interface RS485, os seguintes pontos devem ser observados: recomendado o uso de um cabo com par tranado blindado. Recomenda-se tambm que o cabo possua mais um fio para ligao do sinal de referncia (GND). Caso o cabo no possua o fio adicional, deve-se deixar o sinal GND desconectado. A passagem do cabo deve ser feita separadamente (e se possvel distante) dos cabos para alimentao de potncia. Todos os dispositivos da rede devem estar devidamente aterrados, preferencialmente na mesma ligao com o terra. A blindagem do cabo tambm deve ser aterrada. Habilitar os resistores de terminao apenas em dois pontos, nos extremos do barramento principal, mesmo que existam derivaes a partir do barramento.

PLC300 | 8

Configurao das Interfaces

3 CONFIGURAO DAS INTERFACES


Para realizar a configurao das interfaces RS232 e RS485, atravs do Setup do controlador programvel PLC300 so disponibilizados os seguintes menus: 3.1 CONFIGURAO RS232

BAUD RATE Faixa de Valores: 0 = 1200 bit/s 1 = 2400 bit/s 2 = 4800 bit/s 3 = 9600 bit/s 4 = 19200 bit/s 5 = 38400 bit/s 6 = 57600 bit/s Padro: 4

Descrio: Permite programar o valor desejado para a taxa de comunicao da interface serial, em bits por segundo. Esta taxa deve ser a mesma para todos os equipamentos conectados na rede. PARIDADE Faixa de Valores: 0 = sem paridade 1 = paridade mpar 2 = paridade par Padro: 2

Descrio: Permite a configurao da paridade nos bytes da interface serial. Esta configurao deve ser a mesma para todos os equipamentos conectados na rede. STOP BITS Faixa de Valores: 0 = 1 stop bit 1 = 2 stop bits Padro: 0

Descrio: Permite a configurao dos stop bits nos bytes da interface serial. Esta configurao deve ser a mesma para todos os equipamentos conectados na rede. NOTA! O endereo do escravo Modbus RTU via interface RS232 fixo em 1.

PLC300 | 9

Configurao das Interfaces


3.2 CONFIGURAO RS485

BAUD RATE Faixa de Valores: 0 = 1200 bit/s 1 = 2400 bit/s 2 = 4800 bit/s 3 = 9600 bit/s 4 = 19200 bit/s 5 = 38400 bit/s 6 = 57600 bit/s Padro: 4

Descrio: Permite programar o valor desejado para a taxa de comunicao da interface serial, em bits por segundo. Esta taxa deve ser a mesma para todos os equipamentos conectados na rede. PARIDADE Faixa de Valores: 0 = sem paridade 1 = paridade mpar 2 = paridade par Padro: 2

Descrio: Permite a configurao da paridade nos bytes da interface serial. Esta configurao deve ser a mesma para todos os equipamentos conectados na rede. STOP BITS Faixa de Valores: 0 = 1 stop bit 1 = 2 stop bits Padro: 0

Descrio: Permite a configurao dos stop bits nos bytes da interface serial. Esta configurao deve ser a mesma para todos os equipamentos conectados na rede. MODO DE OPERAO Faixa de Valores: 0 = escravo 1 = mestre Padro: 1

Descrio: Via interface RS485, o PLC300 possui dois modos de operao na rede Modbus RTU: utilizados na configurao e programao em ladder do produto. Para maiores informaes sobre este modo de operao, consulte o item 5. Mestre: como mestre da rede, o PLC300 disponibiliza blocos em ladder para envio de comandos para os escravos da rede, conforme configurado nestes blocos. Neste modo, no ser possvel acessar os dados e configuraes do PLC300 via interface RS485. Apenas um mestre pode estar configurado para operar no barramento RS485. Para maiores informaes sobre este modo de operao, consulte o item 7 e a documentao do software de programao WPS.

Escravo: como escravo da rede, ele disponibiliza funes para leitura e escrita dos dados e marcadores

PLC300 | 10

Configurao das Interfaces


ENDEREO DO ESCRAVO Faixa de Valores: 1 a 247 Padro: 1

Descrio: Permite configurar o endereo do PLC300 como escravo na rede Modbus RTU via interface RS485. Este endereo utilizado apenas se a interface estiver programada no modo escravo, no possui funo se o PLC300 for programado como mestre da rede.

PLC300 | 11

Protocolo Modbus RTU

4 PROTOCOLO MODBUS RTU


O protocolo Modbus foi inicialmente desenvolvido em 1979. Atualmente, um protocolo aberto amplamente difundido, utilizado por vrios fabricantes em diversos equipamentos. 4.1 MODOS DE TRANSMISSO

Na especificao do protocolo esto definidos dois modos de transmisso: ASCII e RTU. Os modos definem a forma como so transmitidos os bytes da mensagem. No possvel utilizar os dois modos de transmisso na mesma rede. O controlador programvel PLC300 utiliza somente o modo RTU para a transmisso de telegramas. Os bytes so de acordo com a configurao feita atravs do setup do equipamento. 4.2 ESTRUTURA DAS MENSAGENS NO MODO RTU

A rede Modbus RTU utiliza o sistema mestre-escravo para a troca de mensagens. Permite at 247 escravos, mas somente um mestre. Toda comunicao inicia com o mestre fazendo uma solicitao a um escravo, e este responde ao mestre o que foi solicitado. Em ambos os telegramas (pergunta e resposta), a estrutura utilizada a mesma: Endereo, Cdigo da Funo, Dados e CRC. Apenas o campo de dados poder ter tamanho varivel, dependendo do que est sendo solicitado. Mestre (telegrama de requisio):
Endereo (1 byte) Funo (1 byte) Dados da requisio (n bytes) CRC (2 bytes)

Escravo (telegrama de resposta):


Endereo (1 byte) Funo (1 byte) Dados da resposta (n bytes) CRC (2 bytes)

4.2.1

Endereo

O mestre inicia a comunicao enviando um byte com o endereo do escravo para o qual se destina a mensagem. Ao enviar a resposta, o escravo tambm inicia o telegrama com o seu prprio endereo. O mestre tambm pode enviar uma mensagem destinada ao endereo 0 (zero), o que significa que a mensagem destinada a todos os escravos da rede (broadcast). Neste caso, nenhum escravo ir responder ao mestre. 4.2.2 Cdigo da Funo

Este campo tambm contm um nico byte, onde o mestre especifica o tipo de servio ou funo solicitada ao escravo (leitura, escrita, etc.). De acordo com o protocolo, cada funo utilizada para acessar um tipo especfico de dado. Para a lista de funes disponveis para acesso aos dados, consulte o item 5. 4.2.3 Campo de Dados

Campo com tamanho varivel. O formato e contedo deste campo dependem da funo utilizada e dos valores transmitidos. Este campo est descrito juntamente com a descrio das funes (ver item 5). 4.2.4 CRC

A ltima parte do telegrama o campo para checagem de erros de transmisso. O mtodo utilizado o CRC16 (Cycling Redundancy Check). Este campo formado por dois bytes, onde primeiro transmitido o byte menos significativo (CRC-), e depois o mais significativo (CRC+). A forma de clculo do CRC descrita na especificao do protocolo, porm informaes para sua implementao tambm so fornecidas no Apndice B.

PLC300 | 12

Protocolo Modbus RTU


4.2.5 Tempo entre Mensagens

No modo RTU no existe um caracter especfico que indique o incio ou o fim de um telegrama. A indicao de quando uma nova mensagem comea ou quando ela termina feita pela ausncia de transmisso de dados na rede, por um tempo mnimo de 3,5 vezes o tempo de transmisso de um byte de dados (11 bits). Sendo assim, caso um telegrama tenha iniciado aps a decorrncia deste tempo mnimo, os elementos da rede iro assumir que o primeiro caracter recebido representa o incio de um novo telegrama. E da mesma forma, os elementos da rede iro assumir que o telegrama chegou ao fim quando, recebidos os bytes do telegrama, este tempo decorra novamente. Se durante a transmisso de um telegrama, o tempo entre os bytes for maior que este tempo mnimo, o telegrama ser considerado invlido, pois o controlador programvel ir descartar os bytes j recebidos e montar um novo telegrama com os bytes que estiverem sendo transmitidos. Para taxas de comunicao superiores a 19200 bits/s, os tempos utilizados so os mesmos que para esta taxa. A tabela a seguir nos mostra os tempos para diferentes taxas de comunicao:

Tabela 4.1: Taxas de comunicao e tempos envolvidos na transmisso de telegramas Taxa de Comunicao 1200 bits/s 2400 bits/s 4800 bits/s 9600 bits/s 19200 bits/s 38400 bits/s 57600 bits/s T11 bits 9,167 ms 4,583 ms 2,292 ms 1,146 ms 573 s 573 s 573 s T3,5x 32,083 ms 16,042 ms 8,021 ms 4,010 ms 2,005 ms 2,005 ms 2,005 ms

T11 bits Tentre bytes T3,5x

= Tempo para transmitir uma palavra do telegrama. = Tempo entre bytes. = Intervalo mnimo para indicar comeo e fim de telegrama (3,5 x T11bits).

PLC300 | 13

Operao na Rede Modbus RTU Modo Escravo

5 OPERAO NA REDE MODBUS RTU MODO ESCRAVO


Como escravo da rede Modbus RTU, o controlador programvel PLC300 possui as seguintes caractersticas: Conexo da rede via interface serial RS232 ou RS485. Taxa de comunicao, formato dos bytes e endereamento 2 definidos atravs do setup do equipamento. Permite acesso a todos os marcadores e dados utilizados para programao em ladder do PLC300. NOTA! As interfaces RS232, RS485 (no modo escravo), USB e Ethernet, pelo fato de utilizarem as mesmas funes para acesso aos dados e programao do equipamento, no devem ser utilizadas simultaneamente para realizar funes de download de programa ou monitorao online do controlador programvel PLC300, pois podem ocorrer conflitos durante o acesso simultneo aos dados. 5.1 FUNES DISPONVEIS E TEMPOS DE RESPOSTA

Na especificao do protocolo Modbus so definidas funes utilizadas para acessar diferentes tipos de dados. No PLC300, para acessar estes dados, foram disponibilizados os seguintes servios (ou funes): Read Coils Descrio: leitura de bloco de bits do tipo coil. Cdigo da funo: 01. Read Discrete Inputs Descrio: leitura de bloco de bits do tipo entradas discretas. Cdigo da funo: 02. Read Holding Registers Descrio: leitura de bloco de registradores do tipo holding. Cdigo da funo: 03. Read Input Registers Descrio: leitura de bloco de registradores do tipo input. Cdigo da funo: 04. Write Single Coil Descrio: escrita em um nico bit do tipo coil. Cdigo da funo: 05. Write Single Register Descrio: escrita em um nico registrador do tipo holding. Cdigo da funo: 06. Write Multiple Coils Descrio: escrita em bloco de bits do tipo coil. Cdigo da funo: 15. Write Multiple Registers Descrio: escrita em bloco de registradores do tipo holding. Cdigo da funo: 16. Read Device Identification Descrio: identificao do modelo do dispositivo. Cdigo da funo: 43.

O tempo de resposta, do final da transmisso do mestre at o incio da resposta do escravo, varia desde o tempo mnimo entre bytes na comunicao Modbus RTU at o valor do ciclo de scan do equipamento.

Endereo programvel apenas para interface RS485, para interface RS232 o endereo fixo em 1.

PLC300 | 14

Operao na Rede Modbus RTU Modo Escravo


5.2 MAPA DE MEMRIA

O controlador programvel PLC300 possui diferentes tipos de dados acessveis atravs da comunicao Modbus. Estes dados so mapeados em endereos de dados e funes de acesso conforme descrito nos itens seguintes. NOTA! O software de programao WPS possui listas que permitem a visualizao de todos os tipos de marcadores disponveis para o PLC300. Nestas listas, existe um campo para indicao do endereo do registrador Modbus para acesso ao marcador. 5.2.1 Marcadores de Sistema de Leitura %SB / %SW / %SD

Os marcadores de sistema de leitura representam os dados do PLC300 utilizados para indicaes de estado e monitorao de funes do equipamento. Acesso: somente leitura. Tipo de dado: input register ou input discrete. Funes de acesso Modbus: 02 e 04. Faixa de endereo Modbus para acesso via input register: 3000 ... 4999. Faixa de endereo Modbus para acesso via input discrete: 0 ... 15999.

Os marcadores de sistema relacionados com a comunicao serial disponveis para o PLC300 esto descritos no item 8. Para a descrio de outros marcadores disponveis e funo de cada marcador, consulte o manual do usurio do PLC300. 5.2.2 Marcadores de Sistema de Escrita %CB / %CW / %CD

Os marcadores de sistema de escrita representam os dados do PLC300 utilizados para configurao e controle das funes do equipamento. Acesso: leitura/escrita. Tipo de dado: holding register ou coil. Funes de acesso Modbus: 01, 03, 05, 06, 15 e 16. Faixa de endereo Modbus para acesso via holding register: 3000 ... 4999. Faixa de endereo Modbus para acesso via coil: 0 ... 15999.

Os marcadores de sistema relacionados com a comunicao serial disponveis para o PLC300 esto descritos no item 8. Para a descrio de outros marcadores disponveis e funo de cada marcador, consulte o manual do usurio do PLC300. 5.2.3 Inputs %IB / %IW / %ID

Marcadores que representam dados relativos a entradas digitais e analgicas fsicas, disponveis no hardware do PLC300. Acesso: somente leitura. Tipo de dado: input register ou input discrete. Funes de acesso Modbus: 02 e 04. Faixa de endereo Modbus para acesso via input register: 5000 ... 5999. Faixa de endereo Modbus para acesso via input discrete: 16000 ... 23999.

Para a descrio exata de quais marcadores esto disponveis e funo de cada marcador, consulte o manual do usurio do PLC300. 5.2.4 Outputs %QB / %QW / %QD

Marcadores que representam dados relativos a sadas digitais e analgicas fsicas, disponveis no hardware do PLC300. Acesso: leitura/escrita. PLC300 | 15

Operao na Rede Modbus RTU Modo Escravo


Tipo de dado: holding register ou coil. Funes de acesso Modbus: 01, 03, 05, 06, 15 e 16. Faixa de endereo Modbus para acesso via holding register: 5000 ... 5999. Faixa de endereo Modbus para acesso via coil: 16000 ... 23999.

Para a descrio exata de quais marcadores esto disponveis e funo de cada marcador, consulte o manual do usurio do PLC300. 5.2.5 Inputs de rede %IB / %IW / %ID

Marcadores que representam dados relativos a valores recebidos atravs das interfaces de rede do PLC300. Possuem a mesma nomenclatura das entradas fsicas, mas sua numerao inicia a partir do marcador 2000 (exemplo: %IB2000). Acesso: somente leitura. Tipo de dado: input register ou input discrete. Funes de acesso Modbus: 02 e 04. Faixa de endereo Modbus para acesso via input register: 6000 ... 7999. Faixa de endereo Modbus para acesso via input discrete: 24000 ... 39999. Outputs de rede %QB / %QW / %QD

5.2.6

Marcadores que representam dados relativos a valores transmitidos atravs das interfaces de rede do PLC300. Possuem a mesma nomenclatura das sadas fsicas, mas sua numerao inicia a partir do marcador 2000 (exemplo: %QB2000). Acesso: leitura/escrita. Tipo de dado: holding register ou coil. Funes de acesso Modbus: 01, 03, 05, 06, 15 e 16. Faixa de endereo Modbus para acesso via holding register: 6000 ... 7999. Faixa de endereo Modbus para acesso via coil: 24000 ... 39999. Marcadores em Memria %MB / %MW / %MD

5.2.7

Marcadores de uso geral para programao em ladder do PLC300. Representam as variveis globais, criadas dinamicamente durante a elaborao do programa no software WPS. Acesso: leitura/escrita. Tipo de dado: holding register ou coil. Funes de acesso Modbus: 01, 03, 05, 06, 15 e 16. Marcadores volteis: Faixa de endereo Modbus para acesso via holding register: 8000 ... 27999. Faixa de endereo Modbus para acesso via coil: 40000 ... 49999. Marcadores retentivos Faixa de endereo Modbus para acesso via holding register: 28000 ... 47999. Faixa de endereo Modbus para acesso via coil: 50000 ... 59999.

A quantidade de marcadores disponveis nesta rea dependente dos marcadores criados no software de programao do PLC300. Para que seja possvel acessar o marcador desejado, primeiramente necessrio criar este marcador e fazer o download do programa do usurio utilizando o software de programao. NOTA! A quantidade de dados acessveis via coils e input discretes no corresponde a toda a rea em memria acessvel via registradores. Por exemplo, caso seja criada uma quantidade de marcadores em memria maior que a quantidade acessvel via coil (10000 bits = 1250 bytes), os marcadores adicionais somente podero ser acessados via holding registers. 5.3 ACESSO AOS DADOS

Cada uma das regies de memria descritas anteriormente distribuda em bytes. O protocolo Modbus, porm, permite que o acesso seja feito apenas por bits ou por registradores de 16 bits. Para acessar estas PLC300 | 16

Operao na Rede Modbus RTU Modo Escravo


regies de memria, necessrio ento fazer a relao entre o tipo e a numerao do dado no PLC300 com o tipo e o endereo Modbus. As tabelas a seguir mostram como feita a relao entre a numerao do dado no PLC300 e o endereo dos registradores Modbus que acessam estes dados.
Marcadores de Sistema de Leitura Numerao do Marcador Endereo do Registrador (input register) PLC300 Modbus %SB3001 %SB3000 3000 %SB3003 %SB3002 3001 ... %SB3101 ... %SB3100 3050 ... %CB3100 ... 3050 ... Inputs Endereo do Registrador (input register) Modbus 5000 5001 6000 ... Outputs Endereo do Registrador (holding register) Modbus 5000 5001 6000 ... %MB40000 ... 28000 ... ... ... %QB2000 ... ... %IB2000 ... ... ...

Marcadores de Sistema de Escrita Numerao do Marcador Endereo do Registrador (holding register) PLC300 Modbus %CB3001 %CB3000 3000 %CB3003 %CB3002 3001 %CB3101 ... Numerao do Marcador PLC300 %IB1 %IB0 %IB3 %IB2 %IB2001 ... Numerao do Marcador PLC300 %QB1 %QB0 %QB3 %QB2 %QB2001 ... %MB40001 ...

Marcadores (volteis e retentivos) Numerao do Marcador Endereo do Registrador (holding register) PLC300 Modbus %MB1 %MB0 8000 %MB3 %MB2 8001

A tabela a seguir exemplifica como calculado o endereo Modbus com acesso via registradores, para diferentes tipos de dados disponveis para o PLC300:
Dado %SW3002 %CW3030 %IB0 %MB11 Descrio Marcador de sistema de leitura, que representa o tempo de ciclo de scan. Marcador de sistema de escrita, para ajuste da hora do RTC. Inputs fsicos, representando as entradas digitais 1 at 8. Marcador em memria voltil, representando uma varivel global criada pelo usurio com tamanho de um byte. Marcador em memria retentivo, representando uma varivel global criada pelo usurio com tamanho de quatro bytes. Tipo do dado Input Register Holding Register Input Register Holding Register Holding Register Endereo base 3000 3000 5000 8000 Offset a partir do endereo base 2 bytes (1 word) 30 bytes (15 words) 0 bytes (0 words) 11 bytes (5 words) 4 bytes (2 words) Endereo Modbus 3001 3015 5000 byte baixo 8005 byte alto 28002 e 28003

%MD40004

28000

PLC300 | 17

Operao na Rede Modbus RTU Modo Escravo

De forma semelhante, o acesso via dados binrios (coils ou input discretes) tambm utiliza um endereo base mais o offset dados pelo nmero do marcador. No entanto, como cada byte possui oito bits, para cada byte a partir do endereo base devem ser adicionados oito bits no endereo para acesso via dados binrios. O formato e a funo do dado na rea de memria acessada, no entanto, no pr-definido, e depende da programao feita no software WPS. Por exemplo, para o marcador de memria %M_0 possvel criar as seguintes variveis no software WPS: com ou sem sinal. No acesso via registradores, como o protocolo Modbus permite o acesso de leitura ou escrita de pelo menos 16 bits, sempre que este marcador for lido ou escrito, os bytes %MB0 e %MB1 sero acessados. %MW0: marcador de word, ocupa dois bytes de memria, podendo representar um inteiro de 16 bits com ou sem sinal. Neste caso, os bytes %MB0 e %MB1 sero reservados para este marcador. %MD0: marcador de double, ocupa quatro bytes de memria, podendo representar um inteiro de 32 bits com ou sem sinal, ou ento uma varivel do tipo float. Neste caso, os bytes %MB0 at %MB3 sero reservados para este marcador. No acesso por registradores, necessrio fazer a leitura ou escrita de dois registradores em sequncia, com o valor menos significativo no primeiro registrador, para que os quatro bytes sejam acessados.
Tabela 5.1: Exemplo de endereamento de dados para marcadores volteis no PLC300 Tipo de Marcador End. Modbus Registrador (bit) 8000 (40000 ... 40015) 8001 (40016 ... 40031) 8002 (40032 ... 40047) 8003 (40048 ... 40063) Byte (%MB) X X X X X X X X Word (%MW) X X X X X Double (%MD) X

%MB0: marcador de byte, ocupa apenas um byte de memria, podendo representar um inteiro de 8 bits

De forma similar, possvel fazer o acesso aos dados utilizando as funes de acesso a bits. Neste caso, pode-se fazer acesso a um bit individualmente, ou a um grupo de bits que representa um marcador. Por exemplo, se for definido no software WPS um marcador do tipo word no endereo 8000 %MW0 possvel acessar este marcador, utilizando as funes de leitura ou escrita mltipla de coils, utilizando os bits 40000 at 40015. Nos endereos de memria do PLC300, variveis com tamanho superior a um byte so armazenadas sempre com o byte menos significativo primeiro. Desta fora, a disposio em memria para valores de Byte, Word ou Double segue o descrito pela tabela a seguir.
Tabela 5.2: Exemplo de endereamento de dados para marcadores volteis no PLC300 Tipo de Marcador End. Modbus Registrador (bit) 8000 (40000 ... 40015) 8001 (40016 ... 40031) 8002 (40032 ... 40047) 8003 (40048 ... 40063) Byte (%MB) %MB0 %MB1 %MB2 %MB3 %MB4 %MB5 %MB6 %MB7 Valor nico Valor nico Valor nico Valor nico Valor nico Valor nico Valor nico Valor nico Word (%MW) %MW0 %MW2 %MW4 %MW6 Valor -signf. Valor +signf. Valor -signf. Valor +signf. Valor -signf. Valor +signf. Valor -signf. Valor +signf. Double (%MD) %MD0 Valor -signf. ... Valor +signf %MD4 Valor -signf. ... Valor +signf

Como o protocolo Modbus define que, para transmitir um registrador de 16 bits, deve-se transmitir sempre o byte mais significativo primeiro, ao acessar qualquer registrador, o endereo seguinte de memria transmitido primeiro. Desta forma, caso sejam lidos 4 registradores em sequncia, a partir do registrador 8000, o contedo de cada registrador ser transmitido da seguinte forma: PLC300 | 18

Operao na Rede Modbus RTU Modo Escravo


2 Registrador 8001 %MB3 %MB2

1 Registrador 8000 %MB1 %MB0

3 Registrador 8002 %MB5 %MB4

4 Registrador 8003 %MB7 %MB6

NOTA! Para o controlador programvel PLC300, o tamanho mximo de cada telegrama, incluindo endereo, funo, campo de dados e CRC, no deve ultrapassar 67 bytes.

PLC300 | 19

Descrio Detalhada das Funes

6 DESCRIO DETALHADA DAS FUNES


Neste item feita uma descrio detalhada das funes disponveis no controlador programvel PLC300 para comunicao Modbus RTU. Para a elaborao dos telegramas, importante observar o seguinte: 6.1 Os valores so sempre mostrados em hexadecimal. O endereo de um dado, o nmero de dados e o valor de registradores so sempre representados em 16 bits. Por isso, necessrio transmitir estes campos utilizando dois bytes superior (high) e inferior (low). Os telegramas, tanto para pergunta quanto para resposta, no podem ultrapassar 64 bytes. FUNO 01 READ COILS

L o contedo de um grupo de bits internos que necessariamente devem estar em sequncia numrica. Esta funo possui a seguinte estrutura para os telegramas de leitura e resposta (cada campo representa um byte):
Pergunta (Mestre) Endereo do escravo Funo Endereo do bit inicial (byte high) Endereo do bit inicial (byte low) Quantidade de bits (byte high) Quantidade de bits (byte low) CRCCRC+ Resposta (Escravo) Endereo do escravo Funo Campo Byte Count (no. de bytes de dados) Byte 1 Byte 2 Byte 3 etc... CRCCRC+

Cada bit da resposta colocado em uma posio dos bytes de dados enviados pelo escravo. O primeiro byte recebe os 8 primeiros bits a partir do endereo inicial indicado pelo mestre. Os demais bytes continuam a sequncia, caso o nmero de bits de leitura seja maior que 8. Caso o nmero de bits lidos no seja mltiplo de 8, os bits restantes do ltimo byte devem ser preenchidos com 0 (zero). Exemplo: leitura dos 8 bits do marcador de sada 2000, mapeado como coil a partir do endereo 24000, supondo este marcador com o valor 100 (64h). Endereo: 1 = 01h Nmero do bit inicial: 24000 = 5DC0h Nmero de bits lidos: 8 = 0008h
Pergunta (Mestre) Resposta (Escravo)

Campo
Endereo do escravo Funo Bit inicial (high) Bit inicial (low) Quantidade de bits (high) Quantidade de bits (low) CRCCRC+

Valor
01h 01h 5Dh C0h 00h 08h 2Eh 5Ch

Campo
Endereo do escravo Funo Byte Count Estado dos bits 1 at 8 CRCCRC+

Valor
01h 01h 01h 64h 50h 63h

6.2

FUNO 02 READ INPUT DISCRETE NOTA! A funo 02 Read Input Discrete possui exatamente a mesma estrutura da funo 01. Somente o cdigo da funo e os dados acessveis so diferentes.

6.3

FUNO 03 READ HOLDING REGISTER

L o contedo de um grupo de registradores, que necessariamente devem estar em sequncia numrica. Esta funo possui a seguinte estrutura para os telegramas de leitura e resposta (cada campo representa um byte):

PLC300 | 20

Descrio Detalhada das Funes


Pergunta (Mestre) Endereo do escravo Funo Endereo do registrador inicial (byte high) Endereo do registrador inicial (byte low) Quantidade de registradores (byte high) Quantidade de registradores (byte low) CRCCRC+ Resposta (Escravo) Endereo do escravo Funo Campo Byte Count Dado 1 (high) Dado 1 (low) Dado 2 (high) Dado 2 (low) etc... CRCCRC+

Exemplo: leitura do marcador em memria %MD0, representando um float IEEE que ocupa 4 bytes em memria. Supondo o valor do float igual 1,0 (3F800000h em representao de float IEEE). Endereo: 1 = 01h Endereo do registrador inicial: 8000 = 1F40h Quantidade de registradores lidos: 2 = 0002h
Pergunta (Mestre) Resposta (Escravo)

Campo
Endereo do escravo Funo Registrador inicial (high) Registrador inicial (low) Quantidade de registradores (high) Quantidade de registradores (low) CRCCRC+

Valor
01h 03h 1Fh 40h 00h 02h 02h 08h

Campo
Endereo do escravo Funo Byte Count Valor do float (low-high) Valor do float (low-low) Valor do float (high-high) Valor do float (high-low) CRCCRC+

Valor
01h 03h 04h 00h 00h 3Fh 80h F7h CFh

6.4

FUNO 04 READ INPUT REGISTER NOTA! A funo 04 Read Input Register possui exatamente a mesma estrutura da funo 03. Somente o cdigo da funo e os dados acessveis so diferentes.

6.5

FUNO 05 WRITE SINGLE COIL

Esta funo utilizada para escrever um valor para um nico bit (coil). O valor para o bit representado utilizando dois bytes, onde o valor FF00h representa o bit igual a 1, e o valor 0000h representa o bit igual a 0 (zero). Esta funo possui a seguinte estrutura (cada campo representa um byte):
Pergunta (Mestre) Endereo do escravo Funo Endereo do bit (byte high) Endereo do bit (byte low) Valor para o bit (byte high) Valor para o bit (byte low) CRCCRC+ Resposta (Escravo) Endereo do escravo Funo Endereo do bit (byte high) Endereo do bit (byte low) Valor para o bit (byte high) Valor para o bit (byte low) CRCCRC+

Exemplo: escrita do primeiro bit do marcador de sada %QB0, mapeado como coil a partir do endereo 16000. Endereo: 1 = 01h Nmero do bit: 16000 = 3E80h Valor para o bit: 1, logo o valor que deve ser escrito FF00h

PLC300 | 21

Descrio Detalhada das Funes


Pergunta (Mestre) Resposta (Escravo)

Campo
Endereo do escravo Funo Nmero do bit (high) Nmero do bit (low) Valor para o bit (high) Valor para o bit (low) CRCCRC+

Valor
01h 05h 3Eh 80h FFh 00h 80h 3Ah

Campo
Endereo do escravo Funo Nmero do bit (high) Nmero do bit (low) Valor para o bit (high) Valor para o bit (low) CRCCRC+

Valor
01h 05h 3Eh 80h FFh 00h 8Ah 3Ah

Note que para esta funo, a resposta do escravo uma cpia idntica da requisio feita pelo mestre. 6.6 FUNO 06 WRITE SINGLE REGISTER

Esta funo utilizada para escrever um valor para um nico registrador. Esta funo possui a seguinte estrutura (cada campo representa um byte):
Pergunta (Mestre) Endereo do escravo Funo Endereo do registrador (byte high) Endereo do registrador (byte low) Valor para o registrador (byte high) Valor para o registrador (byte low) CRCCRC+ Resposta (Escravo) Endereo do escravo Funo Endereo do registrador (byte high) Endereo do registrador (byte low) Valor para o registrador (byte high) Valor para o registrador (byte low) CRCCRC+

Exemplo: escrita do marcador de sistema de escrita %CB3000. Como a escrita feita sempre enviando um registrador de 16 bits, os bytes mapeados nos endereos %CB3000 e %CB3001 sero escritos. Endereo: 1 = 01h Endereo do registrador inicial: 3000 = 0BB8h Valor para o marcador: 50 = 0032h
Pergunta (Mestre) Resposta (Escravo)

Campo
Endereo do escravo Funo Registrador (high) Registrador (low) Valor (high equivale ao valor para %CB3001) Valor (low equivale ao valor para %CB3000) CRCCRC+

Valor
01h 06h 0Bh B8h 00h 32h 8Ah 1Eh

Campo
Endereo do escravo Funo Registrador (high) Registrador (low) Valor (high equivale ao valor para %CB3001) Valor (low equivale ao valor para %CB3000) CRCCRC+

Valor
01h 06h 0Bh B8h 00h 32h 8Ah 1Eh

Note que para esta funo, a resposta do escravo uma cpia idntica da requisio feita pelo mestre. 6.7 FUNO 15 WRITE MULTIPLE COILS

Esta funo permite escrever valores para um grupo de bits (coils), que devem estar em sequncia numrica. Tambm pode ser usada para escrever um nico bit (cada campo representa um byte).
Pergunta (Mestre) Endereo do escravo Funo Endereo do bit inicial (byte high) Endereo do bit inicial (byte low) Quantidade de bits (byte high) Quantidade de bits (byte low) Campo Byte Count (no. de bytes de dados) Byte 1 Byte 2 Byte 3 etc... CRCCRC+ Resposta (Escravo) Endereo do escravo Funo Endereo do bit inicial (byte high) Endereo do bit inicial (byte low) Quantidade de bits (byte high) Quantidade de bits (byte low) CRCCRC+

PLC300 | 22

Descrio Detalhada das Funes

O valor de cada bit que est sendo escrito colocado em uma posio dos bytes de dados enviados pelo mestre. O primeiro byte recebe os 8 primeiros bits a partir do endereo inicial indicado pelo mestre. Os demais bytes (se o nmero de bits escritos for maior que 8) continuam a sequncia. Caso o nmero de bits escritos no seja mltiplo de 8, os bits restantes do ltimo byte devem ser preenchidos com 0 (zero). Exemplo: escrita de 16 bits a partir do marcador de sada %QW0, mapeado como coil a partir do endereo 16000. Endereo: 1 = 01h Nmero do primeiro bit: 16000 = 3E80h Quantidade de bits: 16 = 0010h Valor para os bits 0 at 7: 10 = 0Ah Valor para os bits 8 at 15: 20 = 14h
Pergunta (Mestre) Resposta (Escravo)

Campo
Endereo do escravo Funo Bit inicial (byte high) Bit inicial (byte low) Quantidade de bits (byte high) Quantidade de bits (byte low) Byte Count Valor para os bits Valor para os bits CRCCRC+

Valor
01h 0Fh 3Eh 80h 00h 10h 02h 0Ah 14h 24h 8Ch

Campo
Endereo do escravo Funo Bit inicial (byte high) Bit inicial (byte low) Quantidade de bits (byte high) Quantidade de bits (byte low) CRCCRC+

Valor
01h 0Fh 1Fh 40h 00h 10h 52h 07h

6.8

FUNO 16 WRITE MULTIPLE REGISTERS

Esta funo permite escrever valores para um grupo de registradores, que devem estar em sequncia numrica. Tambm pode ser usada para escrever um nico registrador (cada campo representa um byte).
Pergunta (Mestre) Endereo do escravo Funo Endereo do registrador inicial (byte high) Endereo do registrador inicial (byte low) Quantidade de registradores (byte high) Quantidade de registradores (byte low) Campo Byte Count (n de bytes de dados) Dado 1 (high) Dado 1 (low) Dado 2 (high) Dado 2 (low) etc... CRCCRC+ Resposta (Escravo) Endereo do escravo Funo Endereo do registrador inicial (byte high) Endereo do registrador inicial (byte low) Quantidade de registradores (byte high) Quantidade de registradores (byte low) CRCCRC+

Exemplo: escrita do marcador de memria de escrita %MD0, representando um valor inteiro de 32 bits 4 bytes em memria. Supondo o valor a ser escrito igual a 16909060 decimal (01020304h) Endereo: 1 = 01h Endereo do registrador inicial: 8000 = 1F40h Quantidade de registradores escritos: 2 = 0002h

PLC300 | 23

Descrio Detalhada das Funes


Pergunta (Mestre) Resposta (Escravo)

Campo
Endereo do escravo Funo Registrador inicial (high) Registrador inicial (low) Quantidade de registradores (high) Quantidade de registradores (low) Byte Count Valor para o inteiro (low-high) Valor para o inteiro (low-low) Valor para o inteiro (high-high) Valor para o inteiro (high-low) CRCCRC+

Valor
01h 10h 1Fh 40h 00h 02h 04h 03h 04h 01h 02h BAh 7Bh

Campo
Endereo do escravo Funo Registrador inicial (high) Registrador inicial (low) Quantidade de registradores (high) Quantidade de registradores (low) CRCCRC+

Valor
01h 10h 1Fh 40h 00h 02h 47h C8h

6.9

FUNO 43 READ DEVICE IDENTIFICATION

Funo auxiliar, que permite a leitura do fabricante, modelo e verso de firmware do produto. Possui a seguinte estrutura:
Pergunta (Mestre) Endereo do escravo Funo MEI Type Cdigo de leitura Nmero do Objeto CRCCRC+ Resposta (Escravo) Endereo do escravo Funo MEI Type Conformity Level More Follows Prximo objeto Nmero de objetos Cdigo do primeiro objeto Tamanho do primeiro objeto Valor do primeiro objeto (n bytes) Cdigo do segundo objeto Tamanho do segundo objeto Valor do segundo objeto (n bytes) etc... CRCCRC+

Esta funo permite a leitura de trs categorias de informaes: Bsica, Regular e Estendida, e cada categoria formada por um grupo de objetos. Cada objeto formado por uma sequncia de caracteres ASCII. Para o controlador programvel PLC300, apenas informaes bsicas esto disponveis, formadas por trs objetos: Objeto 00h VendorName: representa o nome do fabricante do produto. Objeto 01h ProductCode: formado pelo cdigo do produto (PLC300). Objeto 02h MajorMinorRevision: indica a verso de firmware do produto, no formato 'VX.XX'.

O cdigo de leitura indica quais as categorias de informaes so lidas, e se os objetos so acessados em sequncia ou individualmente. No caso, o PLC300 suporta os cdigos 01 (informaes bsicas em sequncia), e 04 (acesso individual aos objetos). Os demais campos so especificados pelo protocolo e possuem valores fixos. Exemplo: leitura das informaes bsicas em sequncia, a partir do objeto 02h, de um equipamento no endereo 1:

PLC300 | 24

Descrio Detalhada das Funes


Pergunta (Mestre) Resposta (Escravo)

Campo
Endereo do escravo Funo MEI Type Cdigo de leitura Nmero do Objeto CRCCRC+

Valor
01h 2Bh 0Eh 01h 02h 70h 77h

Campo
Endereo do escravo Funo MEI Type Cdigo de leitura Conformity Level More Follows Prximo Objeto Nmero de objetos Cdigo do Objeto Tamanho do Objeto Valor do Objeto CRCCRC+

Valor
01h 2Bh 0Eh 01h 81h 00h 00h 01h 02h 05h 'V1.00' 3Ch 53h

Neste exemplo, o valor dos objetos no foi representado em hexadecimal, mas sim utilizando os caracteres ASCII correspondentes. Por exemplo, para o objeto 02h, o valor 'V1.00' foi transmitido como sendo cinco caracteres ASCII, que em hexadecimal possuem os valores 56h ('V'), 31h ('1'), 2Eh ('.'), 30h ('0') e 30h ('0'). 6.10 ERROS DE COMUNICAO Erros de comunicao podem ocorrer tanto na transmisso dos telegramas quanto no contedo dos telegramas transmitidos. De acordo com o tipo de erro, o escravo poder ou no enviar resposta para o mestre. Quando o mestre envia uma mensagem para um escravo configurado em um determinado endereo da rede, este no ir responder ao mestre caso ocorra um dos seguintes eventos: Erro no bit de paridade. Erro no CRC. Timeout entre os bytes transmitidos (3,5 vezes o tempo de transmisso de um byte).

Nestes casos, o mestre dever detectar a ocorrncia do erro pelo timeout na espera da resposta do escravo. No caso de uma recepo com sucesso, durante o tratamento do telegrama, o escravo pode detectar problemas e enviar uma mensagem de erro, indicando o tipo de problema encontrado: Funo invlida (cdigo do erro = 1): a funo solicitada no est implementada para o equipamento. Endereo de dado invlido (cdigo do erro = 2): o endereo do dado (registrador ou bit) no existe. Valor de dado invlido (cdigo do erro = 3): ocorre nas seguintes situaes: Valor est fora da faixa permitida. Escrita em dado que no pode ser alterado (registrador ou bit somente leitura). NOTA! importante que seja possvel identificar no mestre qual o tipo de erro ocorrido para poder diagnosticar problemas durante a comunicao. No caso da ocorrncia de algum destes erros, o escravo deve retornar uma mensagem para o mestre que indica o tipo de erro ocorrido. As mensagens de erro enviadas pelo escravo possuem a seguinte estrutura:
Pergunta (Mestre) Endereo do escravo Funo Dados CRCCRC+ Resposta (Escravo) Endereo do escravo Funo (com o bit mais significativo em 1) Cdigo do erro CRCCRC+

Exemplo: mestre solicita para o escravo no endereo 1 a escrita no registrador 2900 (supondo registrador 2900 como sendo inexistente):

PLC300 | 25

Descrio Detalhada das Funes


Pergunta (Mestre) Resposta (Escravo)

Campo
Endereo do escravo Funo Registrador (high) Registrador (low) Valor (high) Valor (low) CRCCRC+

Valor
01h 06h 0Bh 54h 00h 00h CAh 3Eh

Campo
Endereo do escravo Funo Cdigo de erro CRCCRC+

Valor
01h 86h 02h C3h A1h

PLC300 | 26

Operao na Rede Modbus RTU Modo Mestre

7 OPERAO NA REDE MODBUS RTU MODO MESTRE


Alm da operao como escravo, o controlador programvel PLC300 tambm permite a operao como mestre da rede Modbus RTU. Para esta operao, necessrio observar os seguintes pontos: Somente a interface RS485 permite operao como mestre da rede. necessrio programar, nas configuraes do produto, o modo de operao como Mestre, alm da taxa de comunicao, paridade e stop bits, que devem ser as mesmas para todos os equipamentos da rede. O mestre da rede Modbus RTU no possui endereo, logo o endereo configurado no PLC300 no utilizado. O envio e recepo de telegramas via interface RS485 utilizando o protocolo Modbus RTU programado utilizando blocos em linguagem de programao ladder. necessrio conhecer os blocos disponveis e o software de programao em ladder para poder programar o mestre da rede. As seguintes funes esto disponveis para envio de requisies pelo mestre Modbus: Funo 01: Read Coils Funo 02: Read Discrete Inputs Funo 03: Read Holding Registers Funo 04: Read Input Registers Funo 05: Write Single Coil Funo 06: Write Single Register Funo 15: Write Multiple Coils Funo 16: Write Multiple Registers BLOCOS PARA A PROGRAMAO DO MESTRE

7.1

Para o controle e monitorao da comunicao Modbus RTU utilizando o controlador programvel PLC300, foram desenvolvidos os seguintes blocos, que devem ser utilizados durante a programao em ladder. 7.1.1 MB Read Binary Leitura de Bits

Bloco para leitura de bits. Permite fazer a leitura de at 128 bits em sequncia do escravo destino, utilizando as funes 1 (Read Coils) e 2 (Read Discrete Inputs) do Modbus.

Possui uma entrada de habilitao do bloco Execute e uma sada Done, que ativada aps o trmino da execuo com sucesso da funo. Aps a transio positiva de Execute um novo telegrama enviado pelo mestre Modbus RTU quando a interface serial RS485 estiver livre. Ao trmino com sucesso da operao resposta recebida do escravo a sada Done ativada, permanecendo ativa enquanto a entrada estiver ativa, e os dados recebidos so copiados para Value. Em caso de erro na execuo da requisio, a sada Error ativada, e o cdigo do erro colocado em ErrorID. Entradas: <arg0>: SlaveAddress VAR_IN: inserir uma varivel (tag). Tipos de dados: BYTE Descrio: Endereo do escravo destino 1 a 247. <arg1>: Function# VAR_IN: inserir uma constante. Tipos de dados: BYTE Descrio: Cdigo da funo de leitura: 1= "Read Coils"; 2= "Read Discrete Inputs". PLC300 | 27

Operao na Rede Modbus RTU Modo Mestre


<arg2>: InitialDataAddress VAR_IN: inserir uma varivel (tag). Tipos de dados: WORD Descrio: Endereo do bit inicial 0 a 65535. <arg3>: NumberOfData VAR_IN: inserir uma varivel (tag). Tipos de dados: BYTE Descrio: Nmero de bits lidos em sequncia a partir do endereo inicial 1 a 128. <arg4>: Timeout# VAR_IN: inserir uma constante. Tipos de dados: WORD Descrio: Tempo de espera para chegada da resposta do escravo, a partir do incio do envio pelo mestre 20 a 5000 ms. <arg5>: Offset# VAR_IN: inserir uma constante. Tipos de dados: BOOL Descrio: Indica se o endereo do dado programado em InitialDataAddress# possui offset, ou seja, se o endereo do dado programado no bloco deve ser subtrado de 1 para enviar pela rede Modbus: FALSE= "Sem Offset"; TRUE= "Com Offset de 1". Sadas: <arg6>: Active VAR_OUT: inserir uma varivel (tag). Tipos de dados: BOOL Descrio: Bloco ativo, requisio de leitura enviada para o escravo e aguardando resposta. Nota: A varivel tem que ter permisso de escrita. <arg7>: Busy VAR_OUT: inserir uma varivel (tag). Tipos de dados: BOOL Descrio: Bloco habilitado, mas recurso no est disponvel (interface RS485 ocupada com outra requisio), aguardando liberao para que a solicitao seja enviada pelo bloco. Se a entrada de habilitao for retirada enquanto o bloco faz esta indicao, a requisio descartada. Nota: A varivel tem que ter permisso de escrita. <arg8>: Error VAR_OUT: inserir uma varivel (tag). Tipos de dados: BOOL Descrio: Erro na execuo da requisio. Nota: A varivel tem que ter permisso de escrita. <arg9>: ErrorID VAR_OUT: inserir uma varivel (tag). Tipos de dados: BYTE ou USINT Descrio: Em caso de erro na requisio, indica o tipo de erro ocorrido. Resultados possveis: 0= "Executado com sucesso"; 1= "Algum dado de entrada invlido"; 2= "Mestre no habilitado"; 4= "Timeout na resposta do escravo"; 5= "Escravo retornou erro". Nota: A varivel tem que ter permisso de escrita. <arg10>: Value VAR_OUT: inserir uma varivel (tag). Tipos de dados: BOOL[1 ... 128] Descrio: Varivel ou array onde sero salvos os dados lidos do escravo. Nota: A varivel tem que ter permisso de escrita. 7.1.2 MB Read Register Leitura de Registradores

Bloco para leitura de registradores de 16 bits. Permite fazer a leitura de at 16 registradores em sequncia do escravo destino, utilizando as funes 3 (Read Holding Registers) e 4 (Read Input Registers) do Modbus.

PLC300 | 28

Operao na Rede Modbus RTU Modo Mestre

Possui uma entrada de habilitao do bloco Execute e uma sada Done, que ativada aps o trmino da execuo com sucesso da funo. Aps a transio positiva de Execute um novo telegrama enviado pelo mestre Modbus RTU quando a interface serial RS485 estiver livre. Ao trmino com sucesso da operao resposta recebida do escravo a sada Done ativada, permanecendo ativa enquanto a entrada estiver ativa, e os dados recebidos so copiados para Value. Em caso de erro na execuo da requisio, a sada Error ativada, e o cdigo do erro colocado em ErrorID. Entradas: <arg0>: SlaveAddress VAR_IN: inserir uma varivel (tag). Tipos de dados: BYTE Descrio: Endereo do escravo destino 1 a 247. <arg1>: Function# VAR_IN: inserir uma constante. Tipos de dados: BYTE Descrio: Cdigo da funo de leitura: 3= "Read Holding Registers"; 4= "Read Input Registers". <arg2>: InitialDataAddress VAR_IN: inserir uma varivel (tag). Tipos de dados: WORD Descrio: Endereo do registrador inicial 0 a 65535. <arg3>: NumberOfData VAR_IN: inserir uma varivel (tag). Tipos de dados: BYTE Descrio: Nmero de registradores lidos a partir do endereo inicial 1 a 16. <arg4>: Timeout# VAR_IN: inserir uma constante. Tipos de dados: WORD Descrio: Tempo de espera para chegada da resposta do escravo, a partir do incio do envio pelo mestre 20 a 5000 ms. <arg5>: Offset# VAR_IN: inserir uma constante. Tipos de dados: BOOL Descrio: Indica se o endereo do dado programado em InitialDataAddress# possui offset, ou seja, se o endereo do dado programado no bloco deve ser subtrado de 1 para enviar pela rede Modbus: FALSE= "Sem Offset"; TRUE= "Com Offset de 1". Sadas: <arg6>: Active VAR_OUT: inserir uma varivel (tag). Tipos de dados: BOOL Descrio: Bloco ativo, requisio de leitura enviada para o escravo e aguardando resposta. Nota: A varivel tem que ter permisso de escrita. <arg7>: Busy VAR_OUT: inserir uma varivel (tag). Tipos de dados: BOOL Descrio: Bloco habilitado, mas recurso no est disponvel (interface RS485 ocupada com outra requisio), aguardando liberao para que a solicitao seja enviada pelo bloco. Se a entrada de habilitao for retirada enquanto o bloco faz esta indicao, a requisio descartada. Nota: A varivel tem que ter permisso de escrita. PLC300 | 29

Operao na Rede Modbus RTU Modo Mestre


<arg8>: Error VAR_OUT: inserir uma varivel (tag). Tipos de dados: BOOL Descrio: Erro na execuo da requisio. Nota: A varivel tem que ter permisso de escrita. <arg9>: ErrorID VAR_OUT: inserir uma varivel (tag). Tipos de dados: BYTE ou USINT Descrio: Em caso de erro na requisio, indica o tipo de erro ocorrido. Resultados possveis: 0= "Executado com sucesso"; 1= "Algum dado de entrada invlido"; 2= "Mestre no habilitado"; 4= "Timeout na resposta do escravo"; 5= "Escravo retornou erro". Nota: A varivel tem que ter permisso de escrita. <arg10>: Value VAR_OUT: inserir uma varivel (tag). Tipos de dados: BYTE[1 ... 32], SINT[1 ... 32], USINT[1 ... 32], WORD[1 ... 16], UINT[1 ... 16], INT[1 ... 16], DWORD[1 ... 8], UDINT[1 ... 8], DINT[1 ... 8] ou REAL[1 ... 8] Descrio: Varivel ou array onde sero salvos os dados lidos do escravo. Nota: A varivel tem que ter permisso de escrita. NOTA! O protocolo Modbus RTU, utilizando as funes 3 e 4, permite a leitura de registradores de 16 bits apenas. Para leitura de dados com mais de 16 bits (um REAL, por exemplo), possvel fazer a leitura de mltiplos registradores, e salvar o valor em uma varivel com tamanho maior que 16 bits. importante que a quantidade de registradores lidos seja compatvel com o tamanho da varivel ou do array onde os dados sero salvos. 7.1.3 MB Write Binary Escrita de Bits

Bloco para escrita de bits. Permite fazer a escrita de at 128 bits utilizando as funes 5 (Write Single Coil) e 15 (Write Multiple Coils) do Modbus.

Possui uma entrada de habilitao do bloco Execute e uma sada Done, que ativada aps o trmino da execuo com sucesso da funo. Aps a transio positiva de Execute um novo telegrama enviado pelo mestre Modbus RTU quando a interface serial RS485 estiver livre. Ao trmino com sucesso da operao resposta recebida do escravo a sada Done ativada, permanecendo ativa enquanto a entrada estiver ativa. Em caso de erro na execuo da requisio, a sada Error ativada, e o cdigo do erro colocado em ErrorID. Entradas: <arg0>: SlaveAddress VAR_IN: inserir uma varivel (tag). Tipos de dados: BYTE Descrio: Endereo do escravo destino 1 a 247. <arg1>: Function# VAR_IN: inserir uma constante. Tipos de dados: BYTE Descrio: Cdigo da funo de escrita: 5= "Write Single Coil"; 15= "Write Multiple Coils".

PLC300 | 30

Operao na Rede Modbus RTU Modo Mestre


<arg2>: InitialDataAddress VAR_IN: inserir uma varivel (tag). Tipos de dados: WORD Descrio: Endereo do bit inicial 0 a 65535. <arg3>: NumberOfData VAR_IN: inserir uma varivel (tag). Tipos de dados: BYTE Descrio: Nmero de bits escritos em sequncia a partir do endereo inicial 1 a 128. <arg4>: Timeout# VAR_IN: inserir uma constante. Tipos de dados: WORD Descrio: Tempo de espera para chegada da resposta do escravo, a partir do incio do envio pelo mestre 20 a 5000 ms. <arg5>: Offset# VAR_IN: inserir uma constante. Tipos de dados: BOOL Descrio: Indica se o endereo do dado programado em InitialDataAddress# possui offset, ou seja, se o endereo do dado programado no bloco deve ser subtrado de 1 para enviar pela rede Modbus: FALSE= "Sem Offset"; TRUE= "Com Offset de 1". <arg6>: Value VAR_IN: inserir uma varivel (tag). Tipos de dados: BOOL[1 ... 128] Descrio: Varivel ou array com os dados que sero escritos no escravo. Sadas: <arg7>: Active VAR_OUT: inserir uma varivel (tag). Tipos de dados: BOOL Descrio: Bloco ativo, requisio de escrita enviada para o escravo e aguardando resposta. Nota: A varivel tem que ter permisso de escrita. <arg8>: Busy VAR_OUT: inserir uma varivel (tag). Tipos de dados: BOOL Descrio: Bloco habilitado, mas recurso no est disponvel (interface RS485 ocupada com outra requisio), aguardando liberao para que a solicitao seja enviada pelo bloco. Se a entrada de habilitao for retirada enquanto o bloco faz esta indicao, a requisio descartada. Nota: A varivel tem que ter permisso de escrita. <arg9>: Error VAR_OUT: inserir uma varivel (tag). Tipos de dados: BOOL Descrio: Erro na execuo da requisio. Nota: A varivel tem que ter permisso de escrita. <arg10>: ErrorID VAR_OUT: inserir uma varivel (tag). Tipos de dados: BYTE ou USINT Descrio: Em caso de erro na requisio, indica o tipo de erro ocorrido. Resultados possveis: 0= "Executado com sucesso"; 1= "Algum dado de entrada invlido"; 2= "Mestre no habilitado"; 4= "Timeout na resposta do escravo"; 5= "Escravo retornou erro". Nota: A varivel tem que ter permisso de escrita. 7.1.4 MB Write Register Escrita de Registradores

Bloco para escrita de registradores. Permite fazer a escrita de at 16 registradores utilizando a funo 6 (Write Holding Register) ou 16 (Write Multiple Registers) do Modbus.

PLC300 | 31

Operao na Rede Modbus RTU Modo Mestre

Possui uma entrada de habilitao do bloco Execute e uma sada Done, que ativada aps o trmino da execuo com sucesso da funo. Aps a transio positiva de Execute um novo telegrama enviado pelo mestre Modbus RTU quando a interface serial RS485 estiver livre. Ao trmino com sucesso da operao resposta recebida do escravo a sada Done ativada, permanecendo ativa enquanto a entrada estiver ativa. Em caso de erro na execuo da requisio, a sada Error ativada, e o cdigo do erro colocado em ErrorID. Entradas: <arg0>: SlaveAddress VAR_IN: inserir uma varivel (tag). Tipos de dados: BYTE Descrio: Endereo do escravo destino 1 a 247. <arg1>: Function# VAR_IN: inserir uma constante. Tipos de dados: BYTE Descrio: Cdigo da funo de escrita: 6= "Write Single Register"; 16= "Write Multiple Registers". <arg2>: InitialDataAddress VAR_IN: inserir uma varivel (tag). Tipos de dados: WORD Descrio: Endereo do registrador inicial 0 a 65535. <arg3>: NumberOfData VAR_IN: inserir uma varivel (tag). Tipos de dados: BYTE Descrio: Nmero de registradores escritos a partir do endereo inicial 1 a 16. <arg4>: Timeout# VAR_IN: inserir uma constante. Tipos de dados: WORD Descrio: Tempo de espera para chegada da resposta do escravo, a partir do incio do envio pelo mestre 20 a 5000 ms. <arg5>: Offset# VAR_IN: inserir uma constante. Tipos de dados: BOOL Descrio: Indica se o endereo do dado programado em InitialDataAddress# possui offset, ou seja, se o endereo do dado programado no bloco deve ser subtrado de 1 para enviar pela rede Modbus: FALSE= "Sem Offset"; TRUE= "Com Offset de 1". <arg6>: Value VAR_IN: inserir uma varivel (tag). Tipos de dados: BYTE[1 ... 32], USINT[1 ... 32], SINT[1 ... 32], WORD[1 ... 16], UINT[1 ... 16], INT[1 ... 16], DWORD[1 ... 8], UDINT[1 ... 8], DINT[1 ... 8] ou REAL[1 ... 8] Descrio: Varivel ou array com os dados que sero escritos no escravo. Sadas: <arg7>: Active VAR_OUT: inserir uma varivel (tag). Tipos de dados: BOOL Descrio: Bloco ativo, requisio de escrita enviada para o escravo e aguardando resposta. Nota: A varivel tem que ter permisso de escrita.

PLC300 | 32

Operao na Rede Modbus RTU Modo Mestre


<arg8>: Busy VAR_OUT: inserir uma varivel (tag). Tipos de dados: BOOL Descrio: Bloco habilitado, mas recurso no est disponvel (interface RS485 ocupada com outra requisio), aguardando liberao para que a solicitao seja enviada pelo bloco. Se a entrada de habilitao for retirada enquanto o bloco faz esta indicao, a requisio descartada. Nota: A varivel tem que ter permisso de escrita. <arg9>: Error VAR_OUT: inserir uma varivel (tag). Tipos de dados: BOOL Descrio: Erro na execuo da requisio. Nota: A varivel tem que ter permisso de escrita. <arg10>: ErrorID VAR_OUT: inserir uma varivel (tag). Tipos de dados: BYTE ou USINT Descrio: Em caso de erro na requisio, indica o tipo de erro ocorrido. Resultados possveis: 0= "Executado com sucesso"; 1= "Algum dado de entrada invlido"; 2= "Mestre no habilitado"; 4= "Timeout na resposta do escravo"; 5= "Escravo retornou erro". Nota: A varivel tem que ter permisso de escrita. NOTA! O protocolo Modbus RTU, utilizando a funo 16, permite a escrita de registradores de 16 bits apenas. Para escrita de dados com mais de 16 bits (um REAL, por exemplo), possvel fazer a escrita de mltiplos registradores, e utilizar como fonte dos dados uma varivel com tamanho maior que 16 bits. importante que a quantidade de registradores escritos seja compatvel com o tamanho da varivel ou do array de onde os dados sero utilizados. 7.1.5 MB Master Control/Status Controle e Estado do Modbus RTU

Bloco para controle e monitorao do mestre da rede Modbus RTU. Sempre que uma rede Modbus RTU for montada com o PLC300 como mestre da rede, recomenda-se utilizar este bloco para obter informaes sobre o estado da comunicao.

Possui uma entrada de habilitao do bloco Execute e uma sada Done que ativada aps o trmino da execuo da funo. Enquanto a entrada de habilitao Execute estiver ativa, os dados de entrada so utilizados e os dados de sada so atualizados. Caso a entrada seja zerada, os valores de entrada so desconsiderados e os argumentos de sada so zerados. A sada Done reflete o valor da entrada. Entradas: <arg0>: DisableComm VAR_IN: inserir uma constante ou uma varivel (tag). Tipos de dados: BOOL Descrio: Permite desabilitar o mestre Modbus. Ao desabilitar o mestre, os contadores e marcadores de status do mestre Modbus RTU tambm so zerados: 0= "Mestre em execuo"; 1= "Desabilita mestre". Sadas: PLC300 | 33

Operao na Rede Modbus RTU Modo Mestre


<arg1>: CommDisabled VAR_OUT: inserir uma varivel (tag). Tipos de dados: BOOL Descrio: Indica se o mestre est ou no desabilitado. Pode ocorrer por solicitao do usurio ou caso a interface esteja programada para operar como escravo da rede: 0= "Mestre habilitado"; 1= "Mestre desabilitado". Nota: A varivel tem que ter permisso de escrita. <arg2>: TxCounter VAR_OUT: inserir uma varivel (tag). Tipos de dados: WORD ou UINT Descrio: Contador de requisies enviadas pelo mestre da rede para os escravos. zerado sempre que o equipamento for desligado ou o mestre for desabilitado 0 a 65535. Nota: A varivel tem que ter permisso de escrita. <arg3>: RxCounter VAR_OUT: inserir uma varivel (tag). Tipos de dados: WORD ou UINT Descrio: Contador de telegramas recebidos pelo mestre da rede. zerado sempre que o equipamento for desligado ou o mestre for desabilitado 0 a 65535. Nota: A varivel tem que ter permisso de escrita. <arg4>: NoAnswerCounter VAR_OUT: inserir uma varivel (tag). Tipos de dados: WORD ou UINT Descrio: Contador de requisies do mestre que no foram respondidas pelos escravos. zerado sempre que o equipamento for desligado ou o mestre for desabilitado 0 a 65535. Nota: A varivel tem que ter permisso de escrita. <arg5>: ErrorResponseCounter VAR_OUT: inserir uma varivel (tag). Tipos de dados: WORD ou UINT Descrio: Contador de requisies do mestre e que os escravos responderam com alguma resposta de erro. O cdigo do erro pode ser obtido no marcador que indica o cdigo do ltimo erro detectado. zerado sempre que o equipamento for desligado ou o mestre for desabilitado 0 a 65535. Nota: A varivel tem que ter permisso de escrita. <arg6>: LastErrorSlaveAddress VAR_OUT: inserir uma varivel (tag). Tipos de dados: BYTE ou USINT Descrio: Indica o endereo do escravo no qual foi detectado o ltimo erro de comunicao. zerado sempre que o equipamento for desligado ou o mestre for desabilitado 0 a 247. Nota: A varivel tem que ter permisso de escrita. <arg7>: LastErrorResult VAR_OUT: inserir uma varivel (tag). Tipos de dados: BYTE ou USINT Descrio: Indica o resultado da operao timeout ou resposta de erro, conforme ERROR ID do bloco para o escravo no qual foi detectado o ltimo erro de comunicao. zerado sempre que o equipamento for desligado ou o mestre for desabilitado: 0= "Sem erro detectado"; 4= "Timeout na resposta do escravo"; 5= "Escravo retornou erro". Nota: A varivel tem que ter permisso de escrita. <arg8>: LastErrorCode VAR_OUT: inserir uma varivel (tag). Tipos de dados: BYTE ou USINT Descrio: Indica o cdigo do erro, no caso do mestre receber resposta de erro de algum escravo. zerado sempre que o equipamento for desligado ou o mestre for desabilitado 0 a 255. Nota: A varivel tem que ter permisso de escrita. NOTA! Os dados acessados utilizando este bloco tambm esto disponveis atravs de marcadores de sistema de leitura e escrita, conforme descrito no item 8. 7.1.6 MB Slave Status Estado dos Escravos da Rede Modbus RTU

Bloco para monitorao dos escravos da rede Modbus RTU. Deve ser utilizado caso seja desejado identificar problemas na comunicao do mestre com algum escravo da rede Modbus RTU. PLC300 | 34

Operao na Rede Modbus RTU Modo Mestre

Possui uma entrada de habilitao do bloco Execute e uma sada Done que ativada aps o trmino da execuo da funo. Enquanto a entrada de habilitao Execute estiver ativa os dados de entrada so utilizados e os dados de sada so atualizados a cada execuo do bloco. A sada Done reflete o valor da entrada. Entradas: <arg0>: ErrorsToSetOffline# VAR_IN: inserir uma constante. Tipos de dados: BYTE Descrio: Permite programar, para este bloco, a quantidade de erros de comunicao que o mestre deve identificar at que a comunicao com um escravo da rede seja considerada offline. considerado erro de comunicao toda requisio (leitura ou escrita) que o mestre enviou para um escravo e no recebeu resposta ou a resposta recebida possua erro de CRC. <arg1>: AddressSlave1# VAR_IN: inserir uma constante. <arg2>: AddressSlave2# VAR_IN: inserir uma constante. <arg3>: AddressSlave3# VAR_IN: inserir uma constante. <arg4>: AddressSlave4# VAR_IN: inserir uma constante. Tipos de dados: BYTE Descrio: Permite programar o endereo de at 4 escravos, cuja quantidade de erros de comunicao sero monitorados para saber se esto online ou offline. Caso a quantidade de erros de comunicao em sequncia, detectados nos blocos de leitura e escrita via Modbus, atinja o valor programado em ErrorsToSetOffline, a sada respectiva acionada. Caso deseje-se monitorar um nmero menor de escravos, pode-se deixar qualquer das entradas em zero: 0= "Ignora entrada"; 1 a 247. Sadas: <arg5>: GeneralOffline# VAR_OUT: inserir uma varivel (tag). Tipos de dados: BOOL Descrio: Se qualquer uma das sadas dos escravos indicados for acionada, esta sada tambm ser acionada. Funciona como uma lgica OU entre as 4 sadas de indicao dos escravos. Nota: A varivel tem que ter permisso de escrita. <arg6>: Slave1Offline# VAR_OUT: inserir uma varivel (tag). <arg7>: Slave2Offline# VAR_OUT: inserir uma varivel (tag). <arg8>: Slave3Offline# VAR_OUT: inserir uma varivel (tag). <arg9>: Slave4Offline# VAR_OUT: inserir uma varivel (tag). Tipos de dados: BOOL Descrio: Sada acionada caso a quantidade de erros de comunicao em sequncia para os escravos indicados nas respectivas entradas atinja o valor programado em ErrorsToSetOffline. Nota: A varivel tem que ter permisso de escrita.

PLC300 | 35

Marcadores de Sistema para RS232 e RS485

8 MARCADORES DE SISTEMA PARA RS232 E RS485


Para interfaces seriais RS232 e RS485, foram disponibilizados os seguintes marcadores de sistema de leitura (%S) e marcadores de sistema de escrita (%C), para controle e monitorao: 8.1 MARCADORES DE SISTEMA DE LEITURA

Estado do Mestre Modbus (RS485): conjunto de marcadores de leitura que indicam o estado do mestre Modbus, alm de informaes para diagnstico da rede. Marcador Descrio %SB3100 Estado do mestre Modbus: 0 = Operao normal. 1 = Mestre desabilitado. %SB3101 Reservado. %SW3102 Contador de requisies feitas pelo mestre. Contador incrementado toda vez que um novo telegrama enviado pelo mestre da rede Modbus RTU. zerado sempre que atingir o limite mximo. %SW3104 Contador de respostas recebidas com sucesso. Contador incrementado toda vez que o mestre receber uma resposta com sucesso de um escravo da rede. zerado sempre que atingir o limite mximo. %SW3106 Contador de requisies sem resposta timeout. Contador incrementado toda vez que ocorrer timeout para uma requisio feita pelo mestre da rede Modbus RTU para um escravo. zerado sempre que atingir o limite mximo ou a interface for desabilitada. %SW3108 Contador de respostas com erro recebidas. Contador incrementado toda vez que o escravo retornar uma resposta de erro para uma requisio feita pelo mestre Modbus RTU. zerado sempre que atingir o limite mximo ou a interface for desabilitada. Sempre que este erro for detectado, os dados para o endereo do escravo, tipo de erro e cdigo do erro sero salvos nos marcadores %SB3110 at %SB3112. %SB3110 ltimo erro ocorrido: endereo do escravo. %SB3111 ltimo erro ocorrido: tipo de erro. 0 = Sem erro. 4 = Timeout na resposta. 5 = Escravo retornou resposta de erro. zerado sempre que a interface for desabilitada %SB3112 ltimo erro ocorrido: cdigo do erro recebido, caso o tipo seja resposta de erro. zerado sempre que a interface for desabilitada %SB3113 Reservado. Estado do escravo Modbus (RS485): conjunto de marcadores de leitura que indicam a quantidade de telegramas enviados e recebidos pelo escravo Modbus RTU. Marcador Descrio %SW3120 Nmero de telegramas recebidos. Especifico para o modo escravo. %SW3122 Nmero de telegramas transmitidos. Especifico para o modo escravo.

8.2

MARCADORES DE SISTEMA DE ESCRITA

Configurao da Interface RS232: conjunto de marcadores de escrita para programar as configuraes da interface RS232. Tambm so acessveis atravs do menu Setup. Marcador Descrio %CB3060 Reservado. %CB3061 Reservado. %CB3062 Formato dos bytes: 0 = sem paridade, 1 stop bit 1 = paridade mpar, 1 stop bit 2 = paridade par, 1 stop bit 3 = reservado 4 = sem paridade, 2 stop bits 5 = paridade mpar, 2 stop bits 6 = paridade par, 2 stop bits %CB3063 Taxa de comunicao para RS232: 0 = 1200 bit/s 1 = 2400 bit/s 2 = 4800 bit/s 3 = 9600 bit/s 4 = 19200 bit/s 5 = 38400 bit/s 6 = 57600 bit/s

PLC300 | 36

Marcadores de Sistema para RS232 e RS485


Configurao da Interface RS485: conjunto de marcadores de escrita para programar as configuraes da interface RS485. Tambm so acessveis atravs do menu Setup. Marcador Descrio %CB3068 Endereo serial (modo escravo) 1 ... 247. %CB3069 Modo de operao: 0 = Escravo Modbus RTU. 1 = Mestre Modbus RTU. %CB3070 Formato dos bytes: 0 = sem paridade, 1 stop bit 1 = paridade mpar, 1 stop bit 2 = paridade par, 1 stop bit 3 = reservado 4 = sem paridade, 2 stop bits 5 = paridade mpar, 2 stop bits 6 = paridade par, 2 stop bits %CB3071 Taxa de comunicao para RS485: 0 = 1200 bit/s 1 = 2400 bit/s 2 = 4800 bit/s 3 = 9600 bit/s 4 = 19200 bit/s 5 = 38400 bit/s 6 = 57600 bit/s Controle do Mestre Modbus (RS485): conjunto de marcadores de escrita para controle do mestre Modbus. Marcador Descrio %CW3100 Controle do mestre Modbus: 0 = Operao normal. 1 = Desabilita interface.

PLC300 | 37

Apndices

I. APNDICES
APNDICE A. TABELA ASCII
Tabela I.1: Caracteres ASCII Dec 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Hex 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F Chr NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US Dec 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 Hex 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F Chr Sp ! " # $ % & ' ( ) * + , . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? Dec 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 Hex 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F Chr @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ Dec 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 Hex 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F Chr ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ DEL

(Null char.) (Start of Header) (Start of Text) (End of Text) (End of Transmission) (Enquiry) (Acknowledgment) (Bell) (Backspace) (Horizontal Tab) (Line Feed) (Vertical Tab) (Form Feed) (Carriage Return) (Shift Out) (Shift In) (Data Link Escape) (Device Control 1) (Device Control 2) (Device Control 3) (Device Control 4) (Negative Acknowledgement) (Synchronous Idle) (End of Trans. Block) (Cancel) (End of Medium) (Substitute) (Escape) (File Separator) (Group Separator) (Record Separator) (Unit Separator)

PLC300 | 38

Apndices

APNDICE B. CLCULO DO CRC UTILIZANDO TABELAS A seguir apresentada uma funo, utilizando linguagem de programao "C", que implementa o clculo do CRC para o protocolo Modbus RTU. O clculo utiliza duas tabelas para fornecer valores pr-calculados dos deslocamentos necessrios para a realizao do clculo.
/* Table of CRC values for highorder byte */ static unsigned char auchCRCHi[] = { 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40

0x40, 0x41, 0x41, 0x40, 0x41, 0x40, 0x40, 0x41, 0x41, 0x40, 0x40, 0x41, 0x40, 0x41, 0x41, };

/* Table of static char 0x00, 0xC0, 0xCC, 0x0C, 0xD8, 0x18, 0x14, 0xD4, 0xF0, 0x30, 0x3C, 0xFC, 0x28, 0xE8, 0xE4, 0x24, 0xA0, 0x60, 0x6C, 0xAC, 0x78, 0xB8, 0xB4, 0x74, 0x50, 0x90, 0x9C, 0x5C, 0x88, 0x48, 0x44, 0x84,

CRC values for loworder byte */ auchCRCLo[] = { 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06, 0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x0D, 0xCD, 0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09, 0x08, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A, 0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3, 0x11, 0xD1, 0xD0, 0x31, 0xF1, 0x33, 0xF3, 0xF2, 0x32, 0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A, 0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0xE9, 0x29, 0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF, 0x2D, 0xED, 0xEC, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26, 0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0x61, 0xA1, 0x63, 0xA3, 0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67, 0xA5, 0x65, 0x64, 0xAD, 0x6D, 0xAF, 0x6F, 0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA, 0xBE, 0x7E, 0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x75, 0xB5, 0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71, 0x70, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92, 0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B, 0x99, 0x59, 0x58, 0x49, 0x89, 0x4B, 0x8B, 0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42, 0x43, 0x83, 0x41, 0x81, 0x80, 0x40

0x04, 0xC8, 0xDC, 0x10, 0xF4, 0x38, 0x2C, 0xE0, 0xA4, 0x68, 0x7C, 0xB0, 0x54, 0x98, 0x8C, };

/* The function returns the CRC as a unsigned short type */ unsigned short CRC16(puchMsg, usDataLen) unsigned char *puchMsg; /* message to calculate CRC upon unsigned short usDataLen; /* quantity of bytes in message { unsigned char uchCRCHi = 0xFF; /* high byte of CRC initialized unsigned char uchCRCLo = 0xFF; /* low byte of CRC initialized unsigned uIndex; /* will index into CRC lookup table while (usDataLen--) /* pass through message buffer { uIndex = uchCRCLo ^ *puchMsgg++; /* calculate the CRC uchCRCLo = uchCRCHi ^ auchCRCHi[uIndex}; uchCRCHi = auchCRCLo[uIndex]; } return (uchCRCHi << 8 | uchCRCLo); }

*/ */ */ */ */ */ */

PLC300 | 39

WEG Equipamentos Eltricos S.A. Jaragu do Sul SC Brasil Fone 55 (47) 3276-4000 Fax 55 (47) 3276-4020 So Paulo SP Brasil Fone 55 (11) 5053-2300 Fax 55 (11) 5052-4212 automacao@weg.net www.weg.net

Vous aimerez peut-être aussi