Académique Documents
Professionnel Documents
Culture Documents
Sumrio
SUMRIO
SUMRIO ..................................................................................................................................3 SOBRE O MANUAL .................................................................................................................5
ABREVIAES E DEFINIES.................................................................................................... 5 REPRESENTAO NUMRICA................................................................................................... 5 DOCUMENTOS.......................................................................................................................... 5
1 2
Sumrio
5.3 ACESSO AOS DADOS..................................................................................................... 16
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
PLC300 | 6
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
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
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.
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
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
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
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
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)
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
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
= 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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