Vous êtes sur la page 1sur 27

Motores I Automao I Energia I Transmisso & Distribuio I Tintas

Modbus RTU CFW700


Manual do Usurio

Manual do Usurio Modbus RTU


Srie: CFW700 Idioma: Portugus N do Documento: 10000832468 / 01

Data da Publicao: 05/2011

Sumrio

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

1 2

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


2.1 RS485 ................................................................................................................................................. 7 2.1.1 Caractersticas da interface RS485 ......................................................................................... 7 2.1.2 Pinagem do Conector................................................................................................................ 7 2.1.3 Resistor de terminao ............................................................................................................. 7 2.1.4 Conexo com a Rede RS485 .................................................................................................... 7

PARAMETRIZAO.....................................................................................................9
3.1 SMBOLOS PARA DESCRIO DAS PROPRIEDADES ................................................................. 9 P0105 SELEO 1/2 RAMPA................................................................................................................. 9 P0220 SELEO FONTE LOCAL/REMOTO ............................................................................................ 9 P0221 SELEO REFERNCIA LOCAL .................................................................................................. 9 P0222 SELEO REFERNCIA REMOTA............................................................................................... 9 P0223 SELEO GIRO LOCAL ................................................................................................................ 9 P0224 SELEO GIRA/PARA LOCAL ..................................................................................................... 9 P0225 SELEO JOG LOCAL .................................................................................................................. 9 P0226 SELEO GIRO REMOTO............................................................................................................. 9 P0227 SELEO GIRA/PARA REMOTO.................................................................................................. 9 P0228 SELEO JOG REMOTO .............................................................................................................. 9 P0308 ENDEREO SERIAL....................................................................................................................... 9 P0310 TAXA DE COMUNICAO SERIAL ............................................................................................ 10 P0311 CONFIGURAO DOS BYTES DA INTERFACE SERIAL.......................................................... 10 P0313 AO PARA ERRO DE COMUNICAO................................................................................... 10 P0314 WATCHDOG SERIAL ................................................................................................................... 11 P0316 ESTADO DA INTERFACE SERIAL .............................................................................................. 11 P0680 ESTADO LGICO ......................................................................................................................... 11 P0681 VELOCIDADE DO MOTOR EM 13 BITS ..................................................................................... 12 P0682 PALAVRA DE CONTROLE VIA SERIAL ...................................................................................... 13 P0683 REFERNCIA DE VELOCIDADE VIA SERIAL ............................................................................ 14 P0695 VALOR PARA AS SADAS DIGITAIS........................................................................................... 14 P0696 VALOR 1 PARA SADAS ANALGICAS ..................................................................................... 15 P0697 VALOR 2 PARA SADAS ANALGICAS ..................................................................................... 15

PROTOCOLO MODBUS RTU ....................................................................................16


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

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


5.1 FUNES DISPONVEIS E TEMPOS DE RESPOSTA .................................................................. 18 CFW700 | 3

Sumrio

5.2

MAPA DE MEMRIA....................................................................................................................... 18

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


6.1 6.2 6.3 6.4 6.5 FUNO 03 READ HOLDING REGISTER................................................................................... 20 FUNO 06 WRITE SINGLE REGISTER..................................................................................... 20 FUNO 16 WRITE MULTIPLE REGISTERS ............................................................................. 21 FUNO 43 READ DEVICE IDENTIFICATION ........................................................................... 22 ERROS DE COMUNICAO .......................................................................................................... 22

FALHAS E ALARMES RELACIONADOS COM A COMUNICAO MODBUS RTU24


A128/F228 TIMEOUT NA RECEPO DE TELEGRAMAS ................................................................... 24

I.

APNDICES................................................................................................................25
APNDICE A. APNDICE B. TABELA ASCII ................................................................................................................. 25 CLCULO DO CRC UTILIZANDO TABELAS................................................................ 26

CFW700 | 4

Sobre o Manual

SOBRE O MANUAL
Este manual fornece a descrio necessria para a operao do inversor de frequncia CFW700 utilizando o protocolo Modbus. Este manual deve ser utilizado em conjunto com manual do usurio do CFW700. 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.

CFW700 | 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 da interface serial RS485 disponvel para o produto, bem como a descrio detalhada do protocolo Modbus RTU para utilizao desta interface.

CFW700 | 6

Descrio das Interfaces

2 DESCRIO DAS INTERFACES


O inversor de frequncia CFW700 possui uma interface RS485 padro no produto. A seguir so apresentadas informaes sobre a conexo e instalao do equipamento em rede. 2.1 2.1.1 RS485 Caractersticas da interface RS485

Interface segue o padro EIA/TIA-485. Pode operar como escravo da rede Modbus RTU. Possibilita comunicao utilizando taxas de 9600 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.1.2 Pinagem do Conector

A conexo para a interface RS485 est disponvel atravs do conector XC1 utilizando a seguinte pinagem:
Tabela 2.1: Pinagem do conector para RS485 Pino 10 9 8 Nome A-Line (-) B-Line (+) GND Funo RxD/TxD negativo RxD/TxD positivo 0V isolado do circuito RS485

2.1.3

Resistor de terminao

Para cada segmento da rede RS485, necessrio habilitar um resistor de terminao nos pontos extremos do barramento principal. O inversor de frequncia CFW700 possui chaves que podem ser ativadas (colocando ambas as chaves S2 na posio ON) para habilitar o resistor de terminao.

Figura 2.1: Resistor de terminao e conector da interface RS485

2.1.4

Conexo com a Rede RS485

Para a ligao do inversor de frequncia CFW700 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.
1

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

CFW700 | 7

Descrio das Interfaces

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.

CFW700 | 8

Parametrizao

3 PARAMETRIZAO
A seguir sero apresentados apenas os parmetros do inversor de frequncia CFW700 que possuem relao direta com a comunicao Modbus RTU. 3.1 SMBOLOS PARA DESCRIO DAS PROPRIEDADES
RO CFG Parmetro somente de leitura Parmetro somente alterado com o motor parado

P0105 SELEO 1/2 RAMPA P0220 SELEO FONTE LOCAL/REMOTO P0221 SELEO REFERNCIA LOCAL P0222 SELEO REFERNCIA REMOTA P0223 SELEO GIRO LOCAL P0224 SELEO GIRA/PARA LOCAL P0225 SELEO JOG LOCAL P0226 SELEO GIRO REMOTO P0227 SELEO GIRA/PARA REMOTO P0228 SELEO JOG REMOTO Estes parmetros so utilizados na configurao da fonte de comandos para os modos local e remoto do produto. Para que o equipamento seja controlado atravs da interface Modbus RTU, deve-se selecionar uma das opes serial disponveis nos parmetros. A descrio detalhada destes parmetros encontra-se no manual de programao do inversor de frequncia CFW700.

P0308 ENDEREO SERIAL Faixa de 1 a 247 Valores: Propriedades: CFG Grupo de acesso via HMI: Padro: 1

NET

Descrio: Permite programar o endereo utilizado para comunicao serial do equipamento. necessrio que cada equipamento da rede possua um endereo diferente dos demais.

CFW700 | 9

Parametrizao

P0310 TAXA DE COMUNICAO SERIAL Faixa de Valores: 0 = 9600 bits/s 1 = 19200 bits/s 2 = 38400 bits/s 3 = 57600 bits/s Propriedades: CFG Grupo de acesso via HMI: NET Padro: 1

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.

P0311 CONFIGURAO DOS BYTES DA INTERFACE SERIAL Faixa de Valores: 0 = 8 bits de dados, sem paridade, 1 stop bit 1 = 8 bits de dados, paridade par, 1 stop bit 2 = 8 bits de dados, paridade mpar, 1 stop bit 3 = 8 bits de dados, sem paridade, 2 stop bits 4 = 8 bits de dados, paridade par, 2 stop bits 5 = 8 bits de dados, paridade mpar, 2 stop bits Propriedades: CFG Grupo de acesso via HMI: NET Padro: 1

Descrio: Permite a configurao do nmero de bits de dados, paridade e stop bits nos bytes da interface serial. Esta configurao deve ser a mesma para todos os equipamentos conectados na rede.

P0313 AO PARA ERRO DE COMUNICAO Faixa de Valores: 0 = Inativo 1 = Para por Rampa 2 = Desabilita Geral 3 = Vai para Local 4 = Vai para Local e mantm comandos e referncia 5 = Causa Falha Propriedades: CFG Grupo de acesso via HMI: NET Padro: 0

Descrio: Este parmetro permite selecionar qual a ao deve ser executada pelo equipamento, caso ele seja controlado via rede e um erro de comunicao seja detectado.
Tabela 3.1: Opes para o parmetro P0313 Opo 0 = Inativo 1 = Para por Rampa 2 = Desabilita Geral 3 = Vai para Local 4 = Vai para Local e mantm comandos e referncia Descrio Nenhuma ao tomada, inversor permanece no estado atual. O comando de parada por rampa executado, e o motor para de acordo com a rampa de desacelerao programada. O inversor desabilitado geral, e o motor para por inrcia. O inversor comandado para o modo local. O inversor comandado para o modo local, mas os comandos de habilitao e a referncia de velocidade recebidos via rede so mantidos em modo local, desde que o inversor seja programado para utilizar, em modo local, comandos e referncia de velocidade via HMI. No lugar de alarme, um erro de comunicao causa uma falha no inversor, sendo necessrio fazer o reset de falhas do inversor para o retorno da sua operao normal.

5 = Causa Falha

CFW700 | 10

Parametrizao

So considerados erros de comunicao os seguintes eventos: Comunicao Serial (RS485): Alarme A128/Falha F228: timeout da interface serial. As aes descritas neste parmetro so executadas atravs da escrita automtica dos respectivos bits no parmetro de controle da interface de rede que corresponde falha detectada. Desta forma, para que os comandos escritos neste parmetro tenham efeito, necessrio que o equipamento esteja programado para ser controlado via a interface de rede utilizada. Esta programao feita atravs dos parmetros P0220 at P0228.

P0314 WATCHDOG SERIAL Faixa de 0,0 a 999,0s Valores: Propriedades: CFG Grupo de acesso via HMI: Padro: 0,0

NET

Descrio: Permite programar um tempo para a deteco de erro de comunicao via interface serial. Caso o inversor fique sem receber telegramas vlidos por um tempo maior do que o programado neste parmetro, ser considerado que ocorreu um erro de comunicao, mostrado o alarme A128 na HMI (ou falha F228, dependendo da programao feita no P0313) e a ao programada no P0313 ser executada. Aps energizado, o inversor comear a contar este tempo a partir do primeiro telegrama vlido recebido. O valor 0,0 desabilita esta funo.

P0316 ESTADO DA INTERFACE SERIAL Faixa de Valores: 0 = Inativo 1 = Ativo 2 = Erro de Watchdog Propriedades: RO Grupo de acesso via HMI: NET Padro: -

Descrio: Permite identificar se o carto de interface serial RS485 est devidamente instalado, e se a comunicao serial apresenta erros.
Tabela 3.2: Valores para o parmetro P0316 Valores 0 = Inativo Descrio Interface serial inativa. Ocorre quando o equipamento no possui carto de interface RS485 instalado. No deve ser indicado no CFW700. Carto de interface RS485 instalado e reconhecido. Interface serial ativa, mas detectado erro de comunicao serial alarme A128/falha F228.

1 = Ativo 2 = Erro de Watchdog

P0680 ESTADO LGICO Faixa de 0000h a FFFFh Valores: Propriedades: RO Grupo de acesso via HMI: NET Descrio: Permite a monitorao do estado do drive. Cada bit representa um estado: CFW700 | 11 Padro: -

Parametrizao

Bits

15

14 Reservado

13 Subtenso

12 LOC/REM

11

10 Sentido de Giro

9 Habilitado Geral

8 Motor Girando

7 Em Alarme

6 Em modo de configurao

5 Segunda Rampa

4a0 Reservado

Em Falha

Funo

Tabela 3.3: Funes dos bits para o parmetro P0680 Bits Bits 0 a 3 Bit 4 Parada Rpida Ativa Bit 5 Segunda Rampa Valores Reservado. 0: Drive no possui comando de parada rpida ativo. 1: Drive est executando o comando de parada rpida. 0: Drive est configurado para utilizar como rampa de acelerao e desacelerao para o motor a primeira rampa, programada nos parmetros P0100 e P0101. 1: Drive est configurado para utilizar como rampa de acelerao e desacelerao para o motor a segunda rampa, programada nos parmetros P0102 e P0103. 0: Drive operando normalmente. 1: Drive em modo de configurao. Indica uma condio especial na qual o inversor no pode ser habilitado: Executando rotina de auto-ajuste. Executando rotina de start-up orientado. Executando funo copy da HMI. Executando rotina auto-guiada do carto de memria flash. Possui incompatibilidade de parametrizao. Sem alimentao no circuito de potncia do drive. Obs.: possvel obter a descrio exata do modo especial de operao no parmetro P0692. 0: Drive no est no estado de alarme. 1: Drive est no estado de alarme. Obs.: o nmero do alarme pode ser lido atravs do parmetro P0048 Alarme Atual. 0: Motor est parado. 1: Drive est girando o motor velocidade de referncia, ou executando rampa de acelerao ou desacelerao. 0: Drive est desabilitado geral. 1: Drive est habilitado geral e pronto para girar motor. 0: Motor girando no sentido reverso. 1: Motor girando no sentido direto. 0: Funo JOG inativa. 1: Funo JOG ativa. 0: Drive em modo local. 1: Drive em modo remoto. 0: Sem subtenso. 1: Com subtenso. Reservado 0: Drive no est no estado de falha. 1: Alguma falha registrada pelo drive. Obs.: O nmero da falha pode ser lido atravs do parmetro P0049 Falha Atual.

Bit 6 Em Modo de Configurao

Bit 7 Em Alarme Bit 8 Rampa Habilitada (RUN) Bit 9 Habilitado Geral Bit 10 Sentido de Giro Bit 11 JOG Bit 12 LOC/REM Bit 13 Subtenso Bit 14 Reservado Bit 15 Em Falha

P0681 VELOCIDADE DO MOTOR EM 13 BITS Faixa de - 32768 a 32767 Valores: Propriedades: RO Grupo de acesso via HMI: NET Padro: -

Descrio: Permite monitorar a velocidade do motor. Esta palavra utiliza resoluo de 13 bits com sinal para representar a rotao sncrona do motor: P0681 = 0000h (0 decimal) P0681 = 2000h (8192 decimal) velocidade do motor = 0 velocidade do motor = rotao sncrona

Valores de velocidade intermedirios ou superiores podem ser obtidos utilizando esta escala. Por exemplo, para um motor de 4 polos e 1800 rpm de rotao sncrona, caso o valor lido seja 2048 (0800h), para obter o valor em rpm deve-se calcular: CFW700 | 12

JOG

Parametrizao

8192 => 1800 rpm 2048 => Velocidade em rpm Velocidade em rpm = 1800 2048 8192 Velocidade em rpm = 450 rpm

Valores negativos para este parmetro indicam motor girando no sentido reverso de rotao.

P0682 PALAVRA DE CONTROLE VIA SERIAL Faixa de 0000h a FFFFh Valores: Propiedades: RW Grupo de acesso via HMI: NET Padro: 0000h

Descrio: Palavra de comando do drive via interface Modbus RTU. Este parmetro somente pode ser alterado via interface serial. Para as demais fontes (HMI, etc.) ele se comporta como um parmetro somente de leitura. Para que os comandos escritos neste parmetro sejam executados, necessrio que o inversor esteja programado para ser controlado via serial. Esta programao feita atravs dos parmetros P0105 e P0220 at P0228. Cada bit desta palavra representa um comando que pode ser executado no produto.
0 15 a 8 7 Reset de Falhas 6 Parada Rpida 5 Utiliza Segunda Rampa 4 3 2 Sentido de Giro 1 Habilita Geral 0

Reservado

LOC/REM

Funo

Tabela 3.4: Funes dos bits para o parmetro P0682 Bits Bit 0 Gira/Para Bit 1 Habilita Geral Bit 2 Sentido de Giro Bit 3 JOG Bit 4 LOC/REM Bit 5 Utiliza Segunda Rampa Valores 0: Para motor por rampa de desacelerao. 1: Gira motor de acordo com a rampa de acelerao at atingir o valor da referncia de velocidade. 0: Desabilita geral o drive, interrompendo a alimentao para o motor. 1: Habilita geral o drive, permitindo a operao do motor. 0: Sentido de giro do motor oposto ao da referncia (sentido reverso). 1: Sentido de giro do motor igual ao da referncia (sentido direto). 0: Desabilita a funo JOG. 1: Habilita a funo JOG. 0: Drive vai para o modo local. 1: Drive vai para o modo remoto. 0: Drive utiliza como rampa de acelerao e desacelerao do motor os tempos da primeira rampa, programada nos parmetros P0100 e P0101. 1: Drive utiliza como rampa de acelerao e desacelerao do motor os tempos da segunda rampa, programada nos parmetros P0102 e P0103. 0: No executa comando de parada rpida. 1: Executa comando de parada rpida. Obs.: quando o tipo de controle (P0202) for V/F ou VVW no se recomenda a utilizao desta funo. 0: Sem funo. 1: Se em estado de falha, executa o reset do drive. Reservado.

Bit 6 Parada Rpida Bit 7 Reset de Falhas Bits 8 a 15

CFW700 | 13

Gira/Para

JOG

Parametrizao

P0683 REFERNCIA DE VELOCIDADE VIA SERIAL Faixa de -32768 a 32767 Valores: Propiedades: RW Grupo de acesso via HMI: NET Padro: 0

Descrio: Permite programar a referncia de velocidade para o motor via interface Modbus RTU. Este parmetro somente pode ser alterado via serial. Para as demais fontes (HMI, etc.) ele se comporta como um parmetro somente de leitura. Para que a referncia escrita neste parmetro seja utilizada, necessrio que o produto esteja programado para utilizar a referncia de velocidade via serial. Esta programao feita atravs dos parmetros P0221 e P0222. Esta palavra utiliza resoluo de 13 bits com sinal para representar a rotao sncrona do motor: P0683 = 0000h (0 decimal) P0683 = 2000h (8192 decimal) referncia de velocidade = 0 referncia de velocidade = rotao sncrona

Valores de referncia intermedirios ou superiores podem ser programados utilizando esta escala. Por exemplo, para um motor de 4 polos e 1800 rpm de rotao sncrona, caso deseje-se uma referncia de 900 rpm, devese calcular:
1800 rpm => 8192 900 rpm => Referncia em 13 bits Referncia em 13 bits = 900 8192 1800 Referncia em 13 bits = 4096 => Valor correspondente a 900 rpm na escala em 13 bits

Este parmetro tambm aceita valores negativos para inverter o sentido de rotao do motor. O sentido de rotao da referncia, no entanto, depende tambm do valor do bit 2 da palavra de controle P0682: Bit 2 = 1 e P0683 > 0: referncia para o sentido direto Bit 2 = 1 e P0683 < 0: referncia para o sentido reverso Bit 2 = 0 e P0683 > 0: referncia para o sentido reverso Bit 2 = 0 e P0683 < 0: referncia para o sentido direto

P0695 VALOR PARA AS SADAS DIGITAIS Faixa de 0000h a 001Fh Valores: Propiedades: RW Grupo de acesso via HMI: NET Padro: 0000h

Descrio: Possibilita o controle das sadas digitais atravs das interfaces de rede (Serial, CAN, etc.). Este parmetro no pode ser alterado atravs da HMI. Cada bit deste parmetro corresponde ao valor desejado para uma sada digital. Para que a sada digital correspondente possa ser controlada de acordo com este contedo, necessrio que sua funo seja programada para Contedo P0695, nos parmetros P0275 a P0279.

CFW700 | 14

Parametrizao

Bits

15 a 5 Reservado

4 Valor para DO5

3 Valor para DO4

2 Valor para DO3

1 Valor para DO2

0 Valor para DO1

Funo

Tabela 3.5: Funes dos bits para o parmetro P0695 Bits Bit 0 Valor para DO1 Bit 1 Valor para DO2 Bit 2 Valor para DO3 Bit 3 Valor para DO4 Bit 4 Valor para DO5 Bits 5 a 15 Valores 0: sada DO1 aberta. 1: sada DO1 fechada. 0: sada DO2 aberta. 1: sada DO2 fechada. 0: sada DO3 aberta. 1: sada DO3 fechada. 0: sada DO4 aberta. 1: sada DO4 fechada. 0: sada DO5 aberta. 1: sada DO5 fechada. Reservado.

P0696 VALOR 1 PARA SADAS ANALGICAS P0697 VALOR 2 PARA SADAS ANALGICAS Faixa de -32768 a 32767 Valores: Propriedades: Net Grupo de acesso via HMI: NET Padro: 0

Descrio: Possibilita o controle das sadas analgicas atravs das interfaces de rede (Serial, CAN, etc.). Estes parmetros no podem ser alterados atravs da HMI. O valor escrito nestes parmetros utilizado como valor para a sada analgica, desde que a funo da sada analgica desejada seja programada para Contedo P0696 / P0697, nos parmetros P0251, P0254. O valor deve ser escrito em uma escala de 15 bits (7FFFh = 32767) 2 para representar 100% do valor desejado para a sada, ou seja: P0696 = 0000h (0 decimal) P0696 = 7FFFh (32767 decimal) valor para a sada analgica = 0 % valor para a sada analgica = 100 %

Neste exemplo foi mostrado o parmetro P0696, mas a mesma escala utilizada para o parmetro P0697. Por exemplo, deseja-se controlar o valor da sada analgica 1 atravs da serial. Neste caso deve fazer a seguinte programao: Escolher um dos parmetros P0696, P0697 para ser o valor utilizado pela sada analgica 1. Neste exemplo, vamos escolher o P0696. Programar, na funo da sada analgica 1 (P0254), a opo Contedo P0696. Atravs da interface de rede, escrever no P0696 o valor desejado para a sada analgica 1, entre 0 e 100 %, de acordo com a escala do parmetro. NOTA! Caso a sada analgica seja programada para operar de -10V at 10V, valores negativos para estes parmetros devem ser utilizados para comandar as sadas com valores negativos de tenso, ou seja, -32768 at 32767 representa uma variao de -10V at 10V na sada analgica.

Para a resoluo real da sada, consulte o manual do produto.

CFW700 | 15

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. A comunicao Modbus RTU do inversor de frequncia CFW700 foi desenvolvida com base nos seguintes documentos: MODBUS Protocol Reference Guide Rev. J, MODICON, June 1996. MODBUS Application Protocol Specification, MODBUS.ORG, December 28th 2006. MODBUS over Serial Line, MODBUS.ORG, December 20th 2006. Nestes documentos esto definidos os formatos das mensagens utilizados pelos elementos que fazem parte da rede Modbus, os servios (ou funes) que podem ser disponibilizados via rede, e tambm como estes elementos trocam dados na rede. 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 inversor de frequncia CFW700 utiliza somente o modo RTU para a transmisso de telegramas. Os bytes so de acordo com a configurao feita atravs do P0311. 4.2 ESTRUTURA DAS MENSAGENS NO MODO RTU

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

Escravo (telegrama de resposta):


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

4.2.1

Endereo

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

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

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

CFW700 | 16

Protocolo Modbus RTU

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. 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 inversor de frequncia ir descartar os bytes j recebidos e montar um novo telegrama com os bytes que estiverem sendo transmitidos. Para taxas de comunicao superiores a 19200 bits/s, os tempos utilizados so os mesmos que para esta taxa. A tabela a seguir nos mostra os tempos para diferentes taxas de comunicao:

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

T11 bits Tentre bytes T3,5x

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

CFW700 | 17

Operao na Rede Modbus RTU Modo Escravo

5 OPERAO NA REDE MODBUS RTU MODO ESCRAVO


Como escravo da rede Modbus RTU, o inversor de frequncia CFW700 possui as seguintes caractersticas: Conexo da rede via interface serial RS485. Taxa de comunicao, formato dos bytes e endereamento definidos atravs de parmetros. Permite a parametrizao e controle do inversor de frequncia atravs do acesso a parmetros. 5.1 FUNES DISPONVEIS E TEMPOS DE RESPOSTA

Na especificao do protocolo Modbus RTU so definidas funes utilizadas para acessar diferentes tipos de dados. No CFW700, os parmetros foram definidos como sendo registradores do tipo holding. Para acessar estes dados, foram disponibilizados os seguintes servios (ou funes): Read Coils 3 Descrio: leitura de bloco de bits do tipo coil. Cdigo da funo: 01. Read Discrete Inputs1 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 Registers1 Descrio: leitura de bloco de registradores do tipo input. Cdigo da funo: 04. Write Single Coil1 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 Coils1 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 de 2 a 10 ms, para qualquer uma das funes acima. 5.2 MAPA DE MEMRIA

A comunicao Modbus para o inversor de frequncia CFW700 baseada na leitura/escrita de parmetros do equipamento. Toda a lista de parmetros do equipamento disponibilizada como registradores de 16 bits do tipo holding. O endereamento dos dados feito com offset igual a zero, o que significa que o nmero do

Funes utilizadas para acesso aos dados utilizados pela funo SoftPLC.

CFW700 | 18

Operao na Rede Modbus RTU Modo Escravo

parmetro equivale ao nmero do registrador. A tabela a seguir ilustra o endereamento dos parmetros, que podem ser acessados como registradores do tipo holding.
Tabela 5.1: Mapa de memria para a interface Modbus RTU Nmero do Parmetro P0000 P0001 ... P0100 ... Endereo do dado Modbus Decimal Hexadecimal 0 0000h 1 0001h ... 100 ... ... 0064h ...

Para a operao do equipamento, necessrio ento conhecer a lista de parmetros do produto. Desta forma pode-se identificar quais dados so necessrios para monitorao dos estados e controle das funes. Dentre os principais parmetros pode-se citar: Monitorao (leitura): P0680 (holding register 680): Palavra de estado P0681 (holding register 681): Velocidade do motor Comando (escrita): P0682 (holding register 682): Palavra de comando P0683 (holding register 683): Referncia de velocidade Consulte o manual de programao para a lista completa de parmetros do equipamento. NOTA! Todos os parmetros so tratados como registradores do tipo holding. Dependendo do mestre utilizado, estes registradores so referenciados a partir do endereo base 40000 ou 4x. Neste caso, o endereo para um parmetro que deve ser programado no mestre o endereo mostrado na tabela acima adicionado ao endereo base. Consulte a documentao do mestre para saber como acessar registradores do tipo holding. Deve-se observar que parmetros com a propriedade somente leitura apenas podem ser lidos do equipamento, enquanto que demais parmetros podem ser lidos e escritos atravs da rede. Alm dos parmetros, outros tipos de dados como marcadores de bit, word ou float tambm podem ser acessados utilizando a interface Modbus RTU. Estes marcadores so utilizados principalmente pela funo SoftPLC disponvel para o CFW700. Para a descrio destes marcadores, bem como o endereo para acesso via Modbus, deve-se consultar o Manual da SoftPLC.

CFW700 | 19

Descrio Detalhada das Funes

6 DESCRIO DETALHADA DAS FUNES


Neste item feita uma descrio detalhada das funes disponveis no inversor de frequncia CFW700 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. Os valores transmitidos so sempre nmeros inteiros, independente de possurem representao com casa decimal. Desta forma, o valor 9,5 seria transmitido como sendo 95 (5Fh) via serial. Consulte a lista de parmetro do CFW700 para obter a resoluo utilizada para cada parmetro. 6.1 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):
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 da velocidade do motor (P0002) e corrente do motor (P0003) de escravo no endereo 1 (supondo P0002 = 1000 rpm e P0003 = 3,5 A). Endereo: 1 = 01h (1 byte) Nmero do primeiro parmetro: 2 = 0002h (2 bytes) Valor do primeiro parmetro: 1000 = 03E8h (2 bytes) Valor do segundo parmetro: 35 = 0023h (2 bytes)
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 00h 02h 00h 02h 65h CBh

Campo
Endereo do escravo Funo Byte Count P0002 (high) P0002 (low) P0003 (high) P0003 (low) CRCCRC+

Valor
01h 03h 04h 03h E8h 00h 23h 3Bh 9Ah

6.2

FUNO 06 WRITE SINGLE REGISTER

Esta funo utilizada para escrever um valor para um nico registrador. 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+

CFW700 | 20

Descrio Detalhada das Funes

Exemplo: escrita da referncia de velocidade (P0683) em 900 rpm (supondo velocidade sncrona de 1800 rpm), para o escravo no endereo 3. Endereo: 3 = 03h (1 byte) Nmero do parmetro: 683 = 02AB (2 bytes) Valor para o parmetro: 1000h (2 bytes)
Pergunta (Mestre) Resposta (Escravo)

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

Valor
03h 06h 02h ABh 10h 00h F5h B0h

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
03h 06h 02h ABh 10h 00h F5h B0h

Note que para esta funo, a resposta do escravo uma cpia idntica da requisio feita pelo mestre. 6.3 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 tempo de acelerao (P0100) igual a 1,0s e tempo de desacelerao (P0101) igual a 2,0s, de um escravo no endereo 15. Endereo: 15 = 0Fh (1 byte) Nmero do primeiro parmetro: 100 = 0064h (2 bytes) Valor para o primeiro parmetro: 10 = 000Ah (2 bytes) Valor para o segundo parmetro: 20 = 0014h (2 bytes)
Pergunta (Mestre) Resposta (Escravo)

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

Valor
0Fh 10h 00h 64h 00h 02h 04h 00h 0Ah 00h 14h E0h 91h

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

Valor
0Fh 10h 00h 64h 00h 02h 01h 39h

CFW700 | 21

Descrio Detalhada das Funes

6.4

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 inversor de frequncia CFW700, 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 (CFW700). 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 CFW700 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:
Pergunta (Mestre) Resposta (Escravo)

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

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

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

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

Neste exemplo, o valor dos objetos no foi representado em hexadecimal, mas sim utilizando os caracteres ASCII correspondentes. Por exemplo, para o objeto 02h, o valor 'V1.00' foi transmitido como sendo cinco caracteres ASCII, que em hexadecimal possuem os valores 56h ('V'), 31h ('1'), 2Eh ('.'), 30h ('0') e 30h ('0'). 6.5 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. CFW700 | 22

Descrio Detalhada das Funes

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):
Pergunta (Mestre) Resposta (Escravo)

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

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

Campo
Endereo do escravo Funo Cdigo de erro CRCCRC+

Valor
01h 86h 02h C3h A1h

CFW700 | 23

Falhas e Alarmes Relacionados com a Comunicao Modbus RTU

7 FALHAS E ALARMES RELACIONADOS COM A COMUNICAO MODBUS RTU


A128/F228 TIMEOUT NA RECEPO DE TELEGRAMAS Descrio: Alarme que indica falha na comunicao serial. Indica que o equipamento parou de receber telegramas seriais vlidos por um perodo maior do que o programado no P0314. Atuao: O parmetro P0314 permite programar um tempo dentro do qual o inversor de frequncia dever receber ao menos um telegrama vlido via interface serial RS485 com endereo e campo de checagem de erros corretos caso contrrio ser considerado que houve algum problema na comunicao serial. A contagem do tempo iniciada aps a recepo do primeiro telegrama vlido. Esta funo pode ser utilizada para qualquer protocolo serial suportado pelo inversor de frequncia. Depois de identificado o timeout na comunicao serial, ser sinalizada atravs da HMI a mensagem de alarme A128 ou falha F228, dependendo da programao feita no P0313. Para alarmes, caso a comunicao seja restabelecida, a indicao do alarme ser retirada da HMI. Possveis Causas/Correo: Verificar instalao da rede, cabo rompido ou falha/mal contato nas conexes com a rede, aterramento. Garantir que o mestre envie telegramas para o equipamento sempre em um tempo menor que o programado no P0314. Desabilitar esta funo no P0314.

CFW700 | 24

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

CFW700 | 25

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. O algoritmo foi obtido e explicado nos documentos referenciados no item 4.
/* 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); }

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

CFW700 | 26

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

Vous aimerez peut-être aussi