Você está na página 1de 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

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

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

ACESSO AOS DADOS..................................................................................................... 16

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

I.

MARCADORES DE SISTEMA DE LEITURA ....................................................................... 36


MARCADORES DE SISTEMA DE ESCRITA....................................................................... 36

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

Fonte
MODBUS.ORG

Rev. J
V1.02

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

RS232

2.1.1

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.

2.1.2

Pinagem do Conector

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

2.1.3

Funo
Transmisso de dados (ligado ao RX do mestre)
Recepo de dados (ligado ao TX do mestre)
Referncia para circuito RS232

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.

2.2

RS485

2.2.1

Nome
TX
RX
GND

Caractersticas da interface RS485

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.

2.2.2

Pinagem do Conector

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.

2.2.4

Chaves para Habilitao do Resistor de Terminao

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:

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

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.

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)

Funo
(1 byte)

Dados da resposta
(n bytes)

CRC
(2 bytes)

Escravo (telegrama de resposta):


Endereo
(1 byte)

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
Tentre bytes
T3,5x

T11 bits

T3,5x

9,167 ms
4,583 ms
2,292 ms
1,146 ms
573 s
573 s
573 s

32,083 ms
16,042 ms
8,021 ms
4,010 ms
2,005 ms
2,005 ms
2,005 ms

= 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.

5.2.6

Outputs de rede %QB / %QW / %QD

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.

5.2.7

Marcadores em Memria %MB / %MW / %MD

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.

3050
...

%SB3100
...

%SB3101

...

...

Marcadores de Sistema de Leitura


Numerao do Marcador
Endereo do Registrador (input register)
PLC300
Modbus
%SB3001
%SB3000
3000
%SB3003
%SB3002
3001

3050
...

%CB3100
...

%CB3101

...

...

Marcadores de Sistema de Escrita


Numerao do Marcador
Endereo do Registrador (holding register)
PLC300
Modbus
%CB3001
%CB3000
3000
%CB3003
%CB3002
3001

6000
...

%IB2000
...

%IB2001

...

Inputs
Endereo do Registrador (input register)
Modbus
5000
5001

...

Numerao do Marcador
PLC300
%IB1
%IB0
%IB3
%IB2

6000
...

%QB2000
...

%QB2001

...

Outputs
Endereo do Registrador (holding register)
Modbus
5000
5001

...

Numerao do Marcador
PLC300
%QB1
%QB0
%QB3
%QB2

28000
...

%MB40000
...

%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

Descrio

%SW3002

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.

%CW3030
%IB0
%MB11

%MD40004

Tipo do
dado

Endereo
base

Input
Register
Holding
Register
Input
Register
Holding
Register

3000

Holding
Register

28000

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

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:

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

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)

Word
(%MW)

Double
(%MD)

X
X
X
X
X
X
X
X

X
X

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

1 Registrador 8000
%MB1

%MB0

2 Registrador
8001
%MB3
%MB2

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:
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.

6.1

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

Valor

Campo

Valor

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

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

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

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

Valor

Campo

Valor

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

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

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+

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

Valor

Campo

Valor

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

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

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

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

Valor

Campo

Valor

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

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

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

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

Valor

Campo

Valor

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+

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

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

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

Valor

Campo

Valor

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+

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

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

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

Valor

Campo

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

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

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

Valor

Campo

Valor

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

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

Endereo do escravo
Funo
Cdigo de erro
CRCCRC+

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

7.1

BLOCOS PARA A PROGRAMAO DO MESTRE

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

(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)

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

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,

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

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

/* 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