Você está na página 1de 211

VALTER LUS ARLINDO DE CAMARGO

DESENVOLVIMENTO E IMPLEMENTAO DE UMA PLATAFORMA PARA MONITORAMENTO ESTRUTURAL UTILIZANDO SENSORES EXTENSOMTRICOS CONECTADOS EM REDE

Londrina 2008

VALTER LUS ARLINDO DE CAMARGO

DESENVOLVIMENTO E IMPLEMENTAO DE UMA PLATAFORMA PARA MONITORAMENTO ESTRUTURAL UTILIZANDO SENSORES EXTENSOMTRICOS CONECTADOS EM REDE

Dissertao submetida ao Departamento de Engenharia Eltrica da Universidade Estadual de Londrina, como requisito parcial para obteno do ttulo de Mestre em Engenharia Eltrica.

Orientador: Prof. Dr. Fernando Cardoso Castaldo

Londrina 2008

VALTER LUS ARLINDO DE CAMARGO

DESENVOLVIMENTO E IMPLEMENTAO DE UMA PLATAFORMA PARA MONITORAMENTO ESTRUTURAL UTILIZANDO SENSORES EXTENSOMTRICOS CONECTADOS EM REDE
Esta dissertao foi julgada e aprovada para a obteno do Ttulo de Mestre em Engenharia Eltrica, no Programa de mestrado da Universidade Estadual de Londrina, Londrina, 10 de Maro de 2008.

BANCA EXAMINADORA

Prof. Dr. Fernando Cardoso Castaldo Presidente

Prof. Dr. Aleksander Sade Paterno Universidade do Estado de Santa Catarina (UDESC)

Prof. Dr. Carlos Jos M. da Costa Branco Universidade Estadual de Londrina (UEL)

Prof. Dr. Jos Alexandre de Frana Universidade Estadual de Londrina (UEL)

Prof. Dr. Marcelo Carvalho Tosin Universidade Estadual de Londrina (UEL)

Dedicatria

Para as minhas lhas Gabriela e Marcela. Para a minha esposa Ftima

Agradecimentos
Ao meu orientador, Prof. Dr. Fernando Cardoso Castaldo, sou imensamente grato pela orientao e pelas sugestes que enriqueceram o trabalho. Aos professores Dr. Ernesto Fernando Ferreyra Ramrez, Dr. Lcio dos Reis Barbosa, Dr. Marcelo Carvalho Tosin, Dr. Robinson Hoto, Dr. Tauk Abro e Dr. Walter Germanovix, pelo privilgio de t-los como meus professores durante os crditos. A professora Dra. Silvia Galvo de Souza Cervantes pelos valiosos conselhos e exemplo de prossionalismo. Aos meus colegas do mestrado: Alexandre Fenato, Cludio Lima Lopes Ferreira, Diogo Kaoru Takayama, Leonardo Dagui e Rodger Vitria Pereira, pelo companheirismo e amizade. Ao colega de prosso e amigo pessoal Prof. Ms. Claiton Moro Franchi pelos incentivos, conselhos e apoio incondicional. Aos Professores Dr. Carlos Henrique Zanelato Pantaleo, Dr. Dante Alves Medeiros Filho, Dra. Maria Madalena Dias e Ms. Evandro Cherubini Rolin, pela conana depositada em mim atravs da recomendao do meu nome para o programa de mestrado. A minha famlia pelo apoio durante esta jornada. A todos que de forma direta ou indireta colaboraram para a realizao deste trabalho.

Resumo
Este trabalho descreve o desenvolvimento de um sistema para medio de esforos e deformao mecnica em estruturas civis utilizando extensmetros eltricos de resistncia (StrainGauges), implementado por circuitos de condicionamento de sinais e com capacidade para comunicao de dados em rede. A motivao deste trabalho reside no aspecto relacionado segurana pblica com o monitoramento das condies estruturais em obras da construo civil. Em sistemas convencionais, quando se deseja medir simultaneamente vrios pontos espalhados espacialmente pela estrutura, utilizando um sistema de aquisio de dados centralizado, a ao deve percorrer um longo caminho, estando sujeita captao de radiao eletromagntica e atenuao de sinal, o que pode comprometer a conabilidade da medida. O sistema a ser desenvolvido deve atender a critrios tais como portabilidade, facilidade de calibrao e congurao, meio de transmisso convel e de baixo custo, assegurando uma maior conabilidade do sinal captado e reduo do custo da manuteno e de instalao. Para este propsito, ser empregada uma combinao de microcontroladores de baixo custo, operao atravs de software exvel e um sistema condicionador de sinal de alta ecincia, obtendo-se assim, uma alta taxa de coleta de dados com capacidade de comunicao em rede. O sistema desenvolvido apresenta caractersticas multifuno, ou seja, no limitado leitura apenas de sinais de esforos e deformaes, mas pode tambm ser utilizado, com as devidas adaptaes do sistema condicionador de sinal, para medio de sinais de outra natureza, como por exemplo, temperatura e umidade. Aps uma introduo aos princpios bsicos de medies utilizando extensmetros eltricos e de tcnicas de condicionamento do sinal, o sistema de comunicao em rede apresentado, seguido de uma discusso sobre o processo de aquisio de dados e calibrao. Finalmente, os resultados so apresentados e discutidos. PALAVRAS-CHAVE: Rede de Sensores; Extensmetros eltricos; Strain-gages; Monitoramento de estruturas; Instrumentao eletrnica; Sistema de Aquisio de Dados.

Abstract
This paper describes the development of a system for stress and mechanical deformation measurement in civil structures using strain gauges, implemented using a signal conditioning circuit and featured for network data communication. The motivation of this work is related with the concern of public safety with the monitoring of conditions of civil structures buildings. In conventional systems, when you wish to measure simultaneously several points spatially spreaded by the structure, using a centralized data acquisition system, the wiring should go a long way and therefore subject of capturing electromagnetic radiation and signal attenuation, which can compromise the reliability of the measurement. The system being developed must meet criteria such as portability, ease of calibration and conguration, means of transmission reliable and low cost, ensuring greater reliability the signal received and reducing the cost of maintenance and installation. For this purpose, will be employed a combination of lowcost microcontrollers, operating through exible software and a signal conditioning system, high-efciency, obtaining thus a high rate data collection with the ability of communication in network. The system developed gives multifunction characteristics, or is not only limited to reading stress and deformations, but can also be used, with appropriate adjustments to the system of signal conditioner, for measurement signals of other kinds, such as temperature and humidity. After an introduction to the basic principles of measurements using strain gauges and techniques of signal conditioning, the network communication system is presented, followed by a discussion of data acquisition system and its calibration process. Finally, the results are presented and discussed. KEYWORDS: Sensor Networks; Strain Gauges; Structural Health Monitoring; Electronic Instrumentation; Data Acquisition.

Lista de Figuras
1 2 3 4 5 6 7 8 9 10 11 12 13 14 Sistema convencional de aquisio de dados extensomtricos . . . . . . . . . Rede de sensores sem-os (wireless) integrada a uma estrutura . . . . . . . . Arquitetura do sistema desenvolvido neste trabalho . . . . . . . . . . . . . . Extensmetro Eltrico a o (wire gauges) . . . . . . . . . . . . . . . . . . . Extensmetro eltrico laminar (foil gauges) . . . . . . . . . . . . . . . . . . Extensmetro laminar tpico (foil gauges) . . . . . . . . . . . . . . . . . . . Deformao de um corpo submetido uma fora externa . . . . . . . . . . . Lei de Hooke - Tenso versus Deformao . . . . . . . . . . . . . . . . . . p. 4 p. 5 p. 6 p. 18 p. 18 p. 19 p. 19 p. 21 p. 22 p. 25 p. 27 p. 29 p. 29

Condutor de seo transversal circular . . . . . . . . . . . . . . . . . . . . . Curva dos fatores de sensibilidade de diversos materiais . . . . . . . . . . . . Diagrama de uma Ponte de Wheatstone bsica . . . . . . . . . . . . . . . . . Congurao utilizando 4 extensmetros ativos (full bridge) . . . . . . . . . Extensmetro ligado em um quarto de ponte . . . . . . . . . . . . . . . . . . Ponte de Wheatstone contendo dois elementos ativos idnticos e ligados em braos adjacentes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

p. 31

15

Ponte de Wheatstone contendo dois elementos ativos idnticos em ramos opostos e alimentada por uma fonte de tenso constante. . . . . . . . . . . . p. 32

16

Ponte de Wheatstone contendo dois elementos ativos idnticos e alimentada por uma fonte de corrente constante. . . . . . . . . . . . . . . . . . . . . . . p. 33 p. 34 p. 37 p. 40 p. 43

17 18 19 20

Efeito da ao na medio . . . . . . . . . . . . . . . . . . . . . . . . . . . Arquitetura geral do sistema proposto . . . . . . . . . . . . . . . . . . . . . Comunicao tipo mestre escravo (polling) . . . . . . . . . . . . . . . . . . Arquitetura tradicional de comunicao utilizando drivers . . . . . . . . . . .

21 22 23

Comunicao utilizando tecnologia OPC . . . . . . . . . . . . . . . . . . . . Mapeamento de Itens OPC . . . . . . . . . . . . . . . . . . . . . . . . . . . Estrutura organizacional de um servidor OPC contendo uma hierarquia de grupos e itens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

p. 44 p. 45

p. 45 p. 47 p. 50

24 25 26

Arquitetura sistema de aquisio de dados . . . . . . . . . . . . . . . . . . . Diagrama em blocos do terminal de rede desenvolvido . . . . . . . . . . . . A tenso de referncia proporcional a Ve, o que elimina os erros devido a variaes na alimentao (dessensibilizao da tenso da alimentao). . . .

p. 54 p. 55 p. 57

27 28 29

Amplicador de Instrumentao utilizando 3 amplicadores operacionais . . Diagrama eltrico (parcial) do circuito condicionador de sinal . . . . . . . . . Vista frontal esquemtica do conector de parafusos utilizado para as conexes dos extensmetros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

p. 58

30

Vista da implementao do conector de parafusos utilizado para as conexes dos extensmetros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 58 p. 59 p. 59 p. 60

31 32 33 34

Diagrama de ligao de 1/4 de ponte. . . . . . . . . . . . . . . . . . . . . . . Diagrama para ligao dos extensmetros em 1/2 ponte . . . . . . . . . . . . Diagrama para ligao dos extensmetros em ponte completa . . . . . . . . . Medio da tenso de sada de uma ponte ligada diretamente a um conversor AD (sem prvia amplicao do sinal). . . . . . . . . . . . . . . . . . . . .

p. 60

35 36 37

Obteno de uma resoluo de 12 bits a partir de um conversor AD de 21 bits. p. 62 Localizao do trimpot de ajuste de zero da ponte . . . . . . . . . . . . . . . Efeito termoeltrico formado pelas trilhas de cobre e os pinos do circuito integrado, quando as junes esto submetidas a diferentes temperaturas. . . p. 65 p. 63

38

Princpio de funcionamento das pontes com alimentao CA visando o cancelamento do erro de offset. . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 66 p. 66

39 40

Circuito de correo de desvios por combinao de software e hardware. . . . Resposta de sada de um ltro digital de mdia mvel contendo 11 pontos em reposta a um pulso retangular de entrada contaminado com rudo aleatrio (SMITH, 2007). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

p. 69

41 42 43 44

Encapsulamento do sensor de temperatura LM35 (TO-92) . . . . . . . . . . . Esquema eltrico da parte referente programao do endereo do terminal . Localizao da microchaves de endereamento na Placa de Circuito Impresso Esquema de Troca de Mensagens entre Mestre e Escravo no protocolo MODBUS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

p. 72 p. 73 p. 74

p. 76

45 46 47 48 49 50 51 52

Localizao do protocolo MODBUS em correspondncia ao modelo OSI/ISO. p. 77 Composio de um bilhete (mensagem) do protocolo MODBUS-ASCII . . . Composio de um bilhete (mensagem) do protocolo MODBUS-RTU . . . . Formato de transmisso serial de 1 byte do MODBUS-RTU com paridade . . Formato de transmisso serial de 1 byte do MODBUS-RTU sem paridade . . Exemplo comunicao MODBUS . . . . . . . . . . . . . . . . . . . . . . . Exemplo de Comunicao MODBUS - Resposta . . . . . . . . . . . . . . . Mquina de estados MODBUS-RTU TX e RX da estao escrava (MODBUSIRDA, 2007). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 89 p. 79 p. 80 p. 81 p. 82 p. 88 p. 88

53

Fotograa da primeira verso do terminal de rede implementado no microcontrolador AT89S8252 para validao do protocolo MODBUS . . . . . . . p. 93 p. 94 p. 94 p. 95

54 55 56 57

Tela ambiente de desenvolvimento MPLAB (MICROCHIP) . . . . . . . . . Diagrama esquemtico do gravador JDM. . . . . . . . . . . . . . . . . . . . Placa de Circuito Impresso do terminal de aquisio . . . . . . . . . . . . . . Fotograa da segunda verso do terminal de rede implementado em PIC 16F876 para validao do sistema . . . . . . . . . . . . . . . . . . . . . . .

p. 96

58 59 60 61 62

Pinagem dos conectores DB9 e DB25 na norma RS232 . . . . . . . . . . . . p. 101 Utilizao de repetidores (TRISTO, 2004). . . . . . . . . . . . . . . . . . . p. 104 Diagrama eltrico do conversor RS232/RS485 implementado . . . . . . . . . p. 110 Fotograa do Conversor RS232/RS485 Implementado . . . . . . . . . . . . p. 111 Criao de um novo canal de comunicao no KEPServerEx - etapa1 - Fornecimento do nome do canal . . . . . . . . . . . . . . . . . . . . . . . . . . p. 112

63

Criao de um novo canal de comunicao no KEPServerEx - Etapa 2 - Escolha do protocolo a ser utilizado . . . . . . . . . . . . . . . . . . . . . . . . p. 113

64

Criao de um novo canal de comunicao no KEPServerEx - Etapa 3 - Congurao dos parmetros de comunicao serial . . . . . . . . . . . . . . . . p. 113

65 66

Criao de um novo n na rede no software KepwareServer Modbus.

. . . . p. 114

Criao de um novo n na rede no software Kepware Server Modbus - etapa 1 - fornecer o nome do dispositivo. . . . . . . . . . . . . . . . . . . . . . . . p. 114

67

Criao de um novo n na rede no software Kepware Server Modbus - etapa 2 - fornecer o protocolo desejado. . . . . . . . . . . . . . . . . . . . . . . . p. 115

68

Criao de um novo n na rede no software Kepware Server Modbus - etapa3 - fornecer o endereo do novo terminal a ser criado. . . . . . . . . . . . . . . p. 115

69

Criao de um novo n na rede no software Kepware Server Modbus - etapa 4 - parmetros da comunicao. . . . . . . . . . . . . . . . . . . . . . . . . p. 116

70

Criao de um novo n na rede no software Kepware Server Modbus - etapa 5 - banco de dados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 116

71

Criao de um novo n na rede no software Kepware Server Modbus - etapa 6 - congurar os parmetros do protocolo Modbus. . . . . . . . . . . . . . . p. 117

72

Criao de um novo n na rede no software Kepware Server Modbus - etapa 7 - denio da quantidade de registradores existentes no dispositivo escravo. p. 117

73

Criao de um novo n na rede no software Kepware Server Modbus - etapa nal - dispositivo criado com sucesso. . . . . . . . . . . . . . . . . . . . . . p. 118

74 75 76 77 78 79 80 81

Criao de uma nova tag no software Kepware Server Modbus . . . . . . . . p. 118 Seleo no Elipse Scada do servidor OPC a ser utilizado . . . . . . . . . . . p. 119 Assistente do Elipse Scada para importao de tags do servidor OPC . . . . . p. 120 Tela do assistente de importao de tags com a operao j concluda. . . . . p. 120 Tela inicial do sistema supervisrio (Elipse Scada) . . . . . . . . . . . . . . p. 126 Tela do supervisrio (Elipse Scada) para a habilitao dos terminais . . . . . p. 126 Tela inicial do sistema supervisrio (Elipse Scada) . . . . . . . . . . . . . . p. 127 Tela de visualizao dos dados do histrico (Elipse Scada) . . . . . . . . . . p. 128

82 83 84

Tela do Elipse Scada para congurao das "penas" do histrico. Tela do Elipse Scada para congurao dos dados do histrico.

. . . . . . p. 128 . . . . . . . p. 129

Tela do Elipse Scada para congurao para recuperao de dados por consulta entre datas e horas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 129

85 86 87 88 89 90

Tela do Elipse Scada para congurar a Impresso dos dados do histrico. . . p. 130 Congurao da Comunicao no software MBPOLL . . . . . . . . . . . . . p. 132 Congurao dos Comandos no MBPOLL . . . . . . . . . . . . . . . . . . . p. 133 Trfego de dados no software MBPOLL . . . . . . . . . . . . . . . . . . . . p. 133 Nenhum erro em 14812 transaes utilizando o software Modbus Poll . . . . p. 134 Nenhum erro em 12545 transaes utilizando o software Modbus Tester Verso 0.3 (beta) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 134

91

Extensmetro eltrico ligado em congurao de 1/4 de ponte utilizado para o experimento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 136

92 93 94 95 96

Extensmetro CFG-5-120-C1-11 utilizado . . . . . . . . . . . . . . . . . . . p. 136 Congurao dos parmetros de Comunicao do Servidor OPC MODBUS . p. 137 Congurao do Servidor OPC MODBUS . . . . . . . . . . . . . . . . . . . p. 137 Tela de coleta de dados logo aps o sistema ter sido ligado (regime transiente) p. 138 Tela de coleta de dados mostrando estabilidade com o passar do tempo (regime permanente) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 139

97 98 99

Elemento utilizado como carga para o experimento . . . . . . . . . . . . . . p. 140 Teste de Repetibilidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 140 Curva de histerese para materiais elsticos . . . . . . . . . . . . . . . . . . . p. 141

100 Tela de Aquisio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 141 101 Grco mostrando a situao inicial do experimento . . . . . . . . . . . . . p. 142

102 Grco mostrando a evoluo da temperatura e da sensibilidade trmica do extensmetro durante a fase do aquecimento e desaquecimento. . . . . . . . p. 143

103 Utilizao de um extensmetro inativo para eliminar os efeitos da temperatura p. 144 104 DIAGRAMA ESQUEMTICO COMPLETO DO N DE REDE . . . . . . p. 156

LISTA DE SIGLAS E ABREVIAES


API CLP CMRR CRC CTS COM DSSS DDE ERP FCC FHSS GPRS GPS GSM IEEE IHM ISM ISO LAN MIPS MEMS OLE ODBC OPC OSI PLC RTD RTS RTUs SI SGDB UART UTP WAN Application Program Interface Controlador Lgico Programvel Commom Mode Rejection Ratio Cyclical Redundancy Checking Clear To Send Component Object Model Direct Sequence Spread Spectrum Dynamic Data Exchange Enterprise Resources Planning Federal Communications Commission Frequency Hopping Spread Spectrum General Packet Radio Service Global Positioning System Global System for Mobile communications Institute of Electrical and Electronics Engineers Interface Homem-Mquina Industrial, Scientic and Medical International Standards Organization Local Area Network Millions of Instructions Per Second Micro Electrical Mechanical Systems Object Linking and Embedding Open DataBase Connectivity OLE for Process Control Open System Interconnection Programmable Logic Controller Resistance Temperature Detector Request To Send Remote Terminal Units Sistema Internacional de Unidades Sistema Gerenciador do Banco de Dados Universal Asynchronous Receiver-Transmitter Unshielded Twisted Pair Wide Area Network

SCADA Supervisory Control and Acquisition Data System

Lista de Tabelas
1 2 3 4 5 6 7 Fatores de sensibilidade do extensmetro para alguns materiais Desempenho de sensores de temperatura . . . . . . . p. 26 p. 71 p. 82 p. 83 p. 83

. . . . . . . . . . . . . . . . . . .

Mapeamento das funes e memria do protocolo MODBUS . . . . . . . . . Mapeamento de Memria do terminal de rede (3xxxxx = Input Registers) . . Mapeamento de memria do terminal de rede (4xxxxx = Holding Registers) .

Distncias mximas de acordo com a velocidade utilizada . . . . . . . . . . . p. 104 Tempo de Estabilizao do sistema . . . . . . . . . . . . . . . . . . . . . . . p. 138

Sumrio

INTRODUO 1.1 1.2 MOTIVAO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CONTRIBUIES DESTE TRABALHO . . . . . . . . . . . . . . . . . . . 1.2.1 1.2.2 1.2.3 1.2.4 1.3 ASPECTOS SOCIAIS . . . . . . . . . . . . . . . . . . . . . . . . . ASPECTOS ECONMICOS . . . . . . . . . . . . . . . . . . . . . ASPECTOS AMBIENTAIS . . . . . . . . . . . . . . . . . . . . . . ASPECTOS CIENTFICOS . . . . . . . . . . . . . . . . . . . . . .

p. 1 p. 3 p. 6 p. 7 p. 7 p. 7 p. 8 p. 8 p. 8 p. 8 p. 9 p. 11 p. 11

OBJETIVOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.1 1.3.2 OBJETIVOS GERAIS . . . . . . . . . . . . . . . . . . . . . . . . . OBJETIVOS ESPECFICOS . . . . . . . . . . . . . . . . . . . . . .

1.4 2

ORGANIZAO DA DISSERTAO . . . . . . . . . . . . . . . . . . . .

REVISO DA LITERATURA 2.1 2.2 MONITORAMENTO ESTRUTURAL . . . . . . . . . . . . . . . . . . . . . UTILIZAO DE SENSORES INTELIGENTES PARA MONITORAMENTO ESTRUTURAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3 2.4 TRABALHOS RELACIONADOS . . . . . . . . . . . . . . . . . . . . . . . CONCLUSES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

p. 13 p. 15 p. 16 p. 17 p. 17 p. 19 p. 20

FUNDAMENTAO TERICA 3.1 EXTENSMETROS ELTRICOS DE RESISTNCIA . . . . . . . . . . . . 3.1.1 3.1.2 FATOR DE DEFORMAO () . . . . . . . . . . . . . . . . . . . . TENSO MECNICA . . . . . . . . . . . . . . . . . . . . . . . . .

3.1.2.1

RELAO ENTRE TENSO MECNICA E DEFORMAO . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 20 p. 21 p. 25 p. 26 p. 26 p. 28 p. 28 p. 29 p. 31 p. 32 p. 33 p. 34

3.1.3

RELAO ENTRE TENSO ELTRICA E DEFORMAO . . . 3.1.3.1 Medio da variao da resistncia dos extensmetros . . .

3.2

PONTE DE WHEATSTONE . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.1 3.2.2 CONFIGURAO BSICA DA PONTE . . . . . . . . . . . . . .

QUANTIDADE DE SENSORES . . . . . . . . . . . . . . . . . . . 3.2.2.1 3.2.2.2 3.2.2.3 3.2.2.4 3.2.2.5 Quatro elementos ativos . . . . . . . . . . . . . . . . . . . Um elemento ativo . . . . . . . . . . . . . . . . . . . . .

Dois elementos ativos com respostas opostas . . . . . . . . Dois elementos ativos idnticos . . . . . . . . . . . . . . . Ordem de grandeza . . . . . . . . . . . . . . . . . . . . .

3.2.3 3.2.4

EFEITO DA RESISTNCIA DA FIAO . . . . . . . . . . . . . . MEDIO DE TENSO MECNICA UTILIZANDO EXTENSMETROS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

p. 35 p. 35 p. 37 p. 38 p. 38 p. 39 p. 42 p. 42 p. 42 p. 46 p. 47 p. 48

3.2.5 4

RELAO ENTRE TENSO MECNICA E TENSO ELTRICA

PROJETO CONCEITUAL DO SISTEMA 4.1 4.2 4.3 4.4 4.5 TOPOLOGIA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DEFINIO DO SISTEMA DE AQUISIO DE DADOS . . . . . . . . . DEFINIO DO PROTOCOLO DE COMUNICAO . . . . . . . . . . . ESCOLHA DO MEIO DE TRANSMISSO . . . . . . . . . . . . . . . . . . SERVIDOR DE COMUNICAES . . . . . . . . . . . . . . . . . . . . . . 4.5.1 4.5.2 4.6 4.7 TECNOLOGIA OPC . . . . . . . . . . . . . . . . . . . . . . . . .

MESTRE MODBUS E SERVIDOR OPC . . . . . . . . . . . . . . .

SOFTWARE DE AQUISIO E TRATAMENTO DOS DADOS . . . . . . . PLANEJAMENTO PARA FUTURA INTEGRAO . . . . . . . . . . . . .

4.8 5

CAPACIDADE PARA EXPANSO FUTURA . . . . . . . . . . . . . . . .

p. 49 p. 50 p. 50 p. 51 p. 51 p. 51 p. 51 p. 51 p. 51 p. 51 p. 52 p. 53 p. 54 p. 55 p. 55 p. 56 p. 58 p. 59 p. 59 p. 60 p. 62 p. 62 p. 63

PROJETO, MONTAGEM E TESTES DO TERMINAL DE AQUISIO 5.1 5.2 VISO GERAL DO TERMINAL DA REDE . . . . . . . . . . . . . . . . . CARACTERSTICAS DESEJADAS . . . . . . . . . . . . . . . . . . . . . . 5.2.1 5.2.2 5.2.3 5.3 ALIMENTAO . . . . . . . . . . . . . . . . . . . . . . . . . . . . COMUNICAO . . . . . . . . . . . . . . . . . . . . . . . . . . . MEMRIA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

IMPLEMENTAO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3.1 ALIMENTAO . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5.4 5.5

MICROCONTROLADOR . . . . . . . . . . . . . . . . . . . . . . . . . . . QUESTES FUNDAMENTAIS SOBRE CIRCUITOS EM PONTE . . . . . 5.5.1 5.5.2 TENSO DE EXCITAO . . . . . . . . . . . . . . . . . . . . . . TENSO DE REFERNCIA . . . . . . . . . . . . . . . . . . . . .

5.6

CIRCUITO CONDICIONADOR DE SINAL . . . . . . . . . . . . . . . . . 5.6.1 AMPLIFICAO . . . . . . . . . . . . . . . . . . . . . . . . . . .

5.7

LIGAO DOS EXTENSMETROS . . . . . . . . . . . . . . . . . . . . . 5.7.1 5.7.2 5.7.3 LIGAO EM 1/4 DE PONTE . . . . . . . . . . . . . . . . . . . . LIGAO EM 1/2 DE PONTE . . . . . . . . . . . . . . . . . . . . LIGAO EM PONTE COMPLETA . . . . . . . . . . . . . . . . . Exemplo de clula de carga . . . . . . . . . . . . . . . . . . . . . .

5.8

CALIBRAO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.8.1 5.8.2 5.8.3 AJUSTE DE ZERO DO SISTEMA . . . . . . . . . . . . . . . . . . AJUSTE DE ZERO DA PONTE . . . . . . . . . . . . . . . . . . . . CANCELAMENTO DE DESVIOS PROVOCADOS PELA INSTRUMENTAO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.8.4 EFEITO TERMOELTRICO . . . . . . . . . . . . . . . . . . . . .

p. 64 p. 64

5.8.4.1 5.8.5 5.8.6 5.8.7 5.8.8 5.8.9

Desvio por deriva (offset Drift) do amplicador . . . . . .

p. 64 p. 65 p. 66 p. 67 p. 68 p. 68 p. 68 p. 68 p. 69 p. 71 p. 72

EXCITAO POR TENSO ALTERNADA . . . . . . . . . . . . . SOLUO ADOTADA PARA A CORREO DO OFFSET . . . . SOLUO ADOTADA PARA CORREO DE DRIFTS . . . . . . VALOR DE REFERNCIA DE CALIBRAO . . . . . . . . . . . FILTRAGEM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.8.9.1 5.8.9.2 5.8.9.3 Filtro analgico . . . . . . . . . . . . . . . . . . . . . . . Filtro digital . . . . . . . . . . . . . . . . . . . . . . . . . Listagem da rotina de mdia mvel . . . . . . . . . . . . .

5.9

MEDIO DA TEMPERATURA . . . . . . . . . . . . . . . . . . . . . . . 5.9.1 5.9.2 SENSOR DE TEMPERATURA . . . . . . . . . . . . . . . . . . . . INTERFACE DE CONTROLE DE CALIBRAO E DE ENDEREAMENTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.9.2.1 Endereamento . . . . . . . . . . . . . . . . . . . . . . .

p. 73 p. 73 p. 75 p. 75 p. 76 p. 76 p. 77 p. 78 p. 78 p. 78 p. 79 p. 80 p. 81 p. 82 p. 83

5.10 PROTOCOLO MODBUS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.10.1 DESCRIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.10.2 Modelo de Comunicao . . . . . . . . . . . . . . . . . . . . . . . . 5.10.3 Transaes entre dispositivos . . . . . . . . . . . . . . . . . . . . . . 5.10.4 Modbus e o Modelo OSI . . . . . . . . . . . . . . . . . . . . . . . . 5.10.4.1 Topologia Fsica . . . . . . . . . . . . . . . . . . . . . .

5.10.4.2 Modos de Transmisso . . . . . . . . . . . . . . . . . . . 5.10.4.3 Composio do bilhete MODBUS-ASCII . . . . . . . . . 5.10.4.4 RTU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.10.4.5 Composio do bilhete MODBUS-RTU . . . . . . . . . . 5.10.4.6 Deteco de Erros . . . . . . . . . . . . . . . . . . . . . . 5.10.5 MAPEAMENTO DE MEMRIA . . . . . . . . . . . . . . . . . . . 5.10.5.1 Funo 0x01 - Read Coil Status . . . . . . . . . . . . . . .

5.10.5.2 Funo 0x02 - Read Input Status . . . . . . . . . . . . . . 5.10.5.3 Funo 0x03 - Read Holding Registers . . . . . . . . . . . 5.10.5.4 Funo 0x04 - Read Input Registers . . . . . . . . . . . .

p. 84 p. 85 p. 86 p. 86 p. 87 p. 87 p. 88

5.10.5.5 Funo 0x05 - Force Single Coil . . . . . . . . . . . . . . 5.10.5.6 Funo 0x06 - Preset Single Register . . . . . . . . . . . . 5.10.5.7 Exemplo de Transao Modbus . . . . . . . . . . . . . . . 5.11 MQUINA DE ESTADOS MODBUS . . . . . . . . . . . . . . . . . . . . . 5.11.0.8 Listagem da rotina principal da mquina de estados ModbusRTU implementada . . . . . . . . . . . . . . . . . . . . . 5.11.1 ROTINA IMPLEMENTAO MQUINA DE ESTADOS TX . . . . 5.11.2 MQUINA DE ESTADOS RX . . . . . . . . . . . . . . . . . . . . 5.12 CONSTRUO DOS PROTTIPOS . . . . . . . . . . . . . . . . . . . . . 6 DESENVOLVIMENTO DO SISTEMA DE AQUISIO DE DADOS 6.1 INTERFACE DE COMUNICAO . . . . . . . . . . . . . . . . . . . . . . 6.1.1 6.1.2 6.1.3 6.1.4 6.1.5 6.1.6 6.1.7 6.1.8 6.1.9 TRANSMISSO SERIAL . . . . . . . . . . . . . . . . . . . . . .

p. 89 p. 90 p. 91 p. 92 p. 97 p. 98 p. 98 p. 98

DESCRIO DO BARRAMENTO RS232 . . . . . . . . . . . . . .

DESCRIO DOS SINAIS DO BARRAMENTO RS232 . . . . . . p. 100 LIMITAES DO RS232 . . . . . . . . . . . . . . . . . . . . . . . p. 101 DESCRIO DO BARRAMENTO RS485 . . . . . . . . . . . . . . p. 101 TIA/EIA-485 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 102 LINHAS DE COMUNICAO BALANCEADAS . . . . . . . . . . p. 102 RESISTORES DE TERMINAO . . . . . . . . . . . . . . . . . . p. 103 LIMITES DE DISTNCIA E VELOCIDADE . . . . . . . . . . . . p. 103

6.1.10 NMERO MXIMO DE DISPOSITIVOS NA REDE RS485 . . . . p. 103 6.1.11 ATERRAMENTO / INTERLIGAO DO COMUM . . . . . . . . . p. 105 6.1.12 CABOS DE LIGAO . . . . . . . . . . . . . . . . . . . . . . . . p. 105

6.2

CONVERSOR RS232/RS485 . . . . . . . . . . . . . . . . . . . . . . . . . p. 106 6.2.1 CONVERSOR RS232/RS485 DESENVOLVIDO . . . . . . . . . . p. 107

6.3 6.4 6.5 6.6 6.7

SOFTWARE SERVIDOR DE COMUNICAES (MESTRE MODBUS) . . p. 112 CRIAO DE UM NOVO CANAL NO SOFTWARE KEPServerEX . . . . p. 112 CRIAO DE UM NOVO DISPOSITIVO NO SOFTWARE KEPServerEX . p. 113 CONEXO DO SUPERVISRIO COM O SERVIDOR MODBUS . . . . . p. 118 SISTEMAS DE SUPERVISO E CONTROLE . . . . . . . . . . . . . . . . p. 121 6.7.1 6.7.2 INTERFACEAMENTO DOS SISTEMAS SUPERVISRIOS . . . . p. 122 COMPUTADOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 124

6.8

SOFTWARE DE AQUISIO DE DADOS . . . . . . . . . . . . . . . . . . p. 124 6.8.1 6.8.2 TELA PRINCIPAL . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 125 TELA HABILITAO TERMINAIS . . . . . . . . . . . . . . . . . p. 125

6.9

TELA DE AQUISIO DOS DADOS . . . . . . . . . . . . . . . . . . . . . p. 126 6.9.1 TELA DE HISTRICOS . . . . . . . . . . . . . . . . . . . . . . . p. 127 p. 131

RESULTADOS E DISCUSSES 7.1 7.2

CARACTERSTICAS TCNICAS DO SISTEMA DESENVOLVIDO . . . . p. 131 VALIDAO DA QUALIDADE DA COMUNICAO . . . . . . . . . . . p. 132 7.2.1 TESTES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 132

7.3

VALIDAO DA QUALIDADE DOS DADOS . . . . . . . . . . . . . . . . p. 135 7.3.1 7.3.2 PREPARAO DO EXPERIMENTO . . . . . . . . . . . . . . . . . p. 135 DESVIO COM O PASSAR DO TEMPO . . . . . . . . . . . . . . . p. 137

7.4

REPETIBILIDADE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 139 7.4.1 7.4.2 HISTERESE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 140 DERIVA DEVIDO TEMPERATURA . . . . . . . . . . . . . . . . p. 141 p. 145

CONCLUSES E SUGESTES PARA TRABALHOS FUTUROS

8.1 8.2 8.3 8.4

VIABILIDADE DO CONCEITO . . . . . . . . . . . . . . . . . . . . . . . . p. 145 LIMITAES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 146 SUGESTES PARA TRABALHOS FUTUROS . . . . . . . . . . . . . . . p. 147 CONSIDERAES FINAIS . . . . . . . . . . . . . . . . . . . . . . . . . . p. 148 p. 149

Referncias Bibliogrcas

INTRODUO

De acordo com Arms et al. (2004), o monitoramento das condies estruturais em obras da construo civil, indstria metal-mecnica, transportes e demais setores da atividade humana, podem trazer imensos benefcios sociedade, incluindo: menor ocorrncia de falhas em sistemas e estruturas, conservao de recursos naturais, aumento da produtividade em processos de fabricao, melhora no tempo de resposta em caso de emergncias e aumento da segurana pblica. Podem ser citados como exemplos de potenciais aplicaes do sensoriamento inteligente, a utilizao de sensores de esforos, deslocamentos ou corroso, integrados de forma permanente em pontes ou viadutos de maneira a detectar possveis deterioraes ou falhas estruturais que possam a vir causar acidentes. Outra aplicao seria na preveno contra desastres ambientais, atravs de uma rede de sensores capaz de detectar corroso, deteriorao ou vazamento, instalada em dutos transportadores de produtos qumicos cujo eventual vazamento seria danoso ao meio ambiente e aos seres vivos, como por exemplo, o petrleo e seus derivados. Tambm no monitoramento estrutural em veculos e equipamentos de misso crtica - onde falhas no podem ser toleradas, como por exemplo, aeronaves - um item de fundamental importncia para a segurana. Pode-se considerar ainda, o aumento da produtividade na indstria, a melhora na segurana pblica, otimizao do desempenho operacional de mquinas e equipamentos, enm, uma ampla gama de possibilidades com alcance social e econmico que se torna realidade graas ao advento de tecnologias cada vez mais presentes em nosso cotidiano. Particularmente, o monitoramento eletrnico inteligente de estruturas civis tem motivado diversos trabalhos na rea, principalmente naqueles pases sujeitos a maiores intempries da natureza, tais como enchentes freqentes, terremotos, tornados e outros fortuitos. A extenso dos danos causados na construo civil pode ser avaliada atravs de estratgias de Structural Health Monitoring and Damage Detection (DOEBLIN et al., 1996) que consiste basicamente no monitoramento contnuo das estruturas associadas s obras civis e monitoramento ambiental, alm da implementao de planos ecazes de manuteno da infraestrutura civil. Estas aes permitem ainda a reviso das tcnicas de projeto empregadas na construo civil no sentido de

adequ-las s condies ambientais vigentes. Assim, a avaliao dos esforos e a freqncia de ocorrncia contribuem para a determinao da vida til e integridade estrutural sob as mais diversas condies de operao. Deformaes de elevada magnitude e com taxas freqentes de repetio podem levar fadiga e ruptura do material. Ensaios de carregamento monitorados com sensores extensomtricos podem ser utilizados para se estimar as cargas aplicadas na estrutura e as deformaes correspondentes. Tambm possibilita a aquisio de dados para comprovao de modelos matemticos empregados em anlise estrutural, como por exemplo, distribui-se espacialmente em uma estrutura, uma determinada quantidade de sensores extensomtricos para coleta da tenso mecnica em pontos de interesse e realizam-se ensaios. Ao nal destes, os dados coletados podem ser utilizados para validao do modelo terico atravs da confrontao dos valores obtidos com os esperados. Assim, a partir da disponibilidade de tecnologias economicamente viveis, o monitoramento de condies estruturais das obras civis pode-se tornar uma prtica comum, apesar de ainda no existir no Brasil uma cultura nesse sentido. Isto devido s nossas prprias condies ambientais, relativamente estveis. Entretanto, imposies menores tais como deslocamento e acomodao de solo, vendavais, enchentes e at tremores de terra podem inigir esforos adicionais signicativos nas estruturas civis. Tais informaes seriam teis em caso de diagnsticos realizados por peritos em casos de falhas de projeto ou defeitos na construo. Por outro lado, o fator de segurana normalmente adotado pela prtica da engenharia poderia ser reavaliado, o que implicaria reduo de custos na indstria civil. Modelos matemticos estruturais poderiam ser revisados com base nas condies ambientais de determinada localidade e composio do solo. Os sensores poderiam ser alocados em pontos especcos da estrutura, atuando como caixas-pretas naqueles locais onde visualmente no se percebem sinais de esforo ou deformao. Medidas corretivas ou preventivas poderiam ento ser adotadas em caso de ocorrncia de esforos no previstos no projeto, tais como aqueles ocasionados por intempries ou acomodaes de solo. Para o nosso pas, a exemplo do que acontece em diversos outros, novas estratgias para manuteno, inspeo e controle da infraestrutura civil poderiam ser desenvolvidas visando prolongar a vida til destas. sabido que o regime de trabalho das estruturas atualmente diferente de quando foram construdas. Por exemplo, graas ao grande aumento de veculos em circulao nas ltimas dcadas, o trfego de veculos sobre as pontes aumentou consideravelmente, e por conseqncia, tambm os esforos sofridos pelas mesmas, requerendo uma maior manuteno. Com o advento das tecnologias relacionadas ao monitoramento contnuo de estruturas, tcnicas de diagnstico das condies estruturais podem ser ecientemente aplicadas, possibilitando a interveno quando necessrio e com economia de recursos.

Entretanto, o monitoramento contnuo apresenta alguns inconvenientes operacionais, tais como cabeamento e conexes eltricas associadas, disponibilidade de energia para operao e aquisio e transmisso de forma segura dos dados coletados (HEJLL, 2007). Outras contingncias referem-se ao custo de instalao e manuteno, proporcional ao nmero de sensores utilizados, necessrios a um adequado mapeamento da aplicao sob estudo. Redes de bra tica, apesar de serem versteis, apresentam como desvantagem a complexidade das conexes (LENG et al., 2005) enquanto que as solues wireless apresentam elevado custo por ponto de sensoriamento (LYNCH et al., 2001). O quesito conabilidade tambm um ponto de discusso entre os usurios desta tecnologia, pois o sistema transmissor/receptor necessrio para estabelecer a comunicao entre supervisor e os diversos pontos de monitoramento estar sujeito a interferncias eletromagnticas o que pode ocasionar um mau funcionamento e interpretao errnea de dados. Por outro lado, o uso de equipamentos certicados disponveis no mercado no so economicamente viveis para este tipo de aplicao.

1.1

MOTIVAO

No Brasil, os vrios grupos de pesquisa em estruturas que necessitam realizar ensaios extensomtricos em estruturas mecnicas e civis utilizam sistemas convencionais de aquisio (um nico equipamento centralizado utilizado para e condicionamento dos sinais) baseados em extensmetros eltricos de resistncia. Um diagrama de aplicao tpica mostrado na Figura 1. Tais sistemas apresentam como principal inconveniente a necessidade de cabeamento ponto a ponto entre cada sensor e o sistema de aquisio, o que torna a implementao em campo bastante difcil. Alm das diculdades operacionais, a ao que conduz o sinal eltrico proveniente de cada extensmetro est sujeita a interferncias externas, tais como rudo eltrico, captao de interferncias eletromagnticas, vibraes, umidade, variaes de temperatura, corroso, entre outros. importante ressaltar que nestes sistemas, transmitir analogicamente um sinal de alguns microvolts por alguns metros atravs de um cabo, alguns cuidados especiais devem ser tomados, incluindo: a blindagem do cabo, a correta disposio do mesmo atravs da estrutura e o adequado condicionamento do sinal (amplicao controlada, reduo dos nveis de rudo e ltragem). Aparentemente, baseado em depoimentos de alguns pesquisadores e consultas a fornecedores de sistemas de aquisio de dados, estes grupos no dispem de alternativas conveis e economicamente viveis para a realizao deste tipo de trabalho. Atualmente h uma grande quantidade de pesquisas visando solucionar os problemas apontados anteriormente. A maioria delas se concentra em solues sem-o (wireless). Basicamente so utilizadas quatro tecnologias (alm das proprietrias): Bluetooth regulada pela norma IEC

Figura 1: Sistema convencional de aquisio de dados extensomtricos 802.14.1 (BLUETOOTH-ORG, 2007), Wi- norma IEC 802.11 B/G (WI-FI-ORG, 2007) , Zigbee norma IEC 802.14.4 (ZIGBEE-ORG, 2007) e GPRS baseado na tecnologia celular GSM. No captulo REVISO DA LITERATURA sero apresentados os principais trabalhos recentes utilizando estas tecnologias para monitoramento estrutural. Estas solues apresentam grandes vantagens, entre as quais podemos citar: a aquisio e condicionamento local dos sinais, o que torna as medidas mais exatas e livres de interferncias; facilidade de implementao dos ns, uma vez que utilizam protocolos padronizados. Talvez a maior vantagem de todas seja a reduo do tempo de instalao devido a sua facilidade. No entanto, uma das grandes limitaes destes sistemas a necessidade de utilizao de baterias, as quais exigem uma manuteno constante. Outra limitao a distncia de alcance desses transmissores que variam de 10 metros a 100 metros em condies de visada direta, exceto para a tecnologia GPRS que possui uma potncia de transmisso maior. Ainda falando da tecnologia GPRS, pode-se ver que a potncia maior de transmisso uma desvantagem para aplicaes de monitoramento contnuo que utilizem sistemas alimentados por baterias, j que o consumo de energia elevado. Outra desvantagem dessa tecnologia que dependem do meio fsico de transmisso das concessionrias de telecomunicaes, cuja disponibilidade ca sujeita existncia de infraestrutura (torres de antenas) que atendam o local e alm disso, deve-se pagar uma taxa mensal pelo uso do canal. Pelas razes apresentadas anteriormente pode-se concluir que as tecnologias wireless, no atual estado da arte, ainda no so adequadas para o monitoramento das condies estruturais

Figura 2: Rede de sensores sem-os (wireless) integrada a uma estrutura em grandes estruturas, como por exemplo, em pontes. Para estas, os sensores devem ser integrados de forma permanente na estrutura, j que normalmente o monitoramento deve ser contnuo e as condies de acesso aos pontos de medio nem sempre so favorveis. Um diagrama ilustrativo de uma estrutura monitorada por sensores sem-os ilustrada na Figura 2. Buscando-se prover solues alternativas para o problema, a presente proposta visa desenvolver um sistema de monitoramento e aquisio de dados aplicado ao monitoramento de esforos (extensometria) em estruturas civis e mecnicas. O sistema baseado em uma rede de sensores conectados atravs de uma linha simples de comunicao e energia e uma interface grca para processamento e visualizao dos dados coletados. Um diagrama ilustrativo do sistema desenvolvido mostrado na Figura 3. Assim uma das grandes vantagens deste sistema a sua portabilidade e possibilidade de expanso. Por utilizar um protocolo aberto, robusto e altamente difundido pode ser utilizado com um grande nmero de outros equipamentos j existentes, tais como softwares de superviso e controle - os quais so, inclusive, utilizados no decorrer deste trabalho. Em um primeiro momento, o sistema desenvolvido atenderia grupos de pesquisa em estruturas, que necessitam monitorar esforos em seus objetos de estudos. Desta forma, a partir deste projeto pretende-se contribuir para a gerao de conhecimento tcnico e cientco, fo-

Figura 3: Arquitetura do sistema desenvolvido neste trabalho mentar uma cultura de monitoramento de condies estruturais na construo civil e indstria metal-mecnica a exemplo do que j ocorre em outros pases. Assim, entende-se que este projeto pode resultar em uma importante contribuio no sentido de prover estes grupos de pesquisa com ferramental de suporte realizao de suas atividades, bem como inserir no mercado produtos alternativos economicamente viveis com alto ndice de nacionalizao, o que diminui a dependncia de componentes importados. Durante o projeto foram previstos e incorporados elementos com caractersticas apropriadas uma futura integrao, o que reduziria os custos de um sistema de monitoramento estrutural. Assim, futuramente cada n da rede poderia ser implementado por um nico Circuito Integrado (CI) com funes de medio, calibragem, processamento e comunicao. Pretende-se, portanto, desenvolver uma tecnologia bsica de comunicao em rede para os sensores e projetar alguns dos circuitos constituintes do sistema, especicamente os circuitos analgicos, visando uma futura integrao. Isto, obviamente, ir requerer estudos adicionais objetivando assegurar uma forte competitividade ao produto.

1.2

CONTRIBUIES DESTE TRABALHO

A realizao deste projeto, no seu todo ou parte, envolve os seguintes aspectos:

1.2.1

ASPECTOS SOCIAIS

Como citado anteriormente, o monitoramento permanente pode implicar aumento na segurana pblica em relao s obras civis, desde que aes preventivas e corretivas sejam tomadas imediatamente ao se detectarem anormalidades. Tambm as comunidades locais atendidas pelo grupo de pesquisas em estruturas podem ser beneciadas atravs da prestao de servios de realizao de ensaios para as empresas e prossionais da regio. Outra contribuio do projeto o envolvimento de alunos de graduao e de mestrado assegurando a estes formao cientca complementar e esprito empreendedor, com formao de mo-de-obra qualicada em projetos que envolvem tecnologia de ponta, requisito bsico para que empresas de alta tecnologia se instalem localmente e gerem empregos diversos para a comunidade. Outro benefcio importante o aumento da interao universidade-empresa.

1.2.2

ASPECTOS ECONMICOS

A preveno de acidentes em estruturas civis e tomada antecipada de medidas corretivas ou preventivas gera uma grande economia para a sociedade, pois propicia a ampliao da vida til das estruturas existentes. Por outro lado, o dinheiro que seria aplicado na reconstruo de tais obras pode ser aplicado em outros setores mais carentes. Outro possvel ganho vem da otimizao de desempenho operacional de mquinas e equipamentos monitorados utilizados nos processos produtivos, pois possveis falhas poderiam ser previstas antecipadamente e medidas preventivas poderiam ser tomadas, evitando-se paradas na produo. Do lado da integrao universidade-empresa, h uma gerao e transferncia de tecnologia ao setor produtivo com um consequente incentivo ao projeto e desenvolvimento de circuitos eletrnicos no Brasil, o que diminui a dependncia aos dispositivos importados, com resultados favorveis balana comercial brasileira.

1.2.3

ASPECTOS AMBIENTAIS

A monitorao de estruturas pode prevenir desastres ambientais, tais como o derramamento acidental de leo em rios e riachos, vazamento de produtos txicos para a atmosfera e tambm ajudar na conservao de recursos naturais, atravs de substituio na construo civil de elementos no renovveis (ou de renovao demorada, como a madeira) por outros renovveis que apresentem caractersticas mecnicas equivalentes.

1.2.4

ASPECTOS CIENTFICOS

A principal contribuio deste trabalho consiste no desenvolvimento de uma tecnologia aplicada instrumentao eletrnica direcionada aos sistemas de aquisio e condicionamento de sinais bem como o desenvolvimento e adaptao de protocolos de comunicao viveis comercialmente. Os resultados destas pesquisas sero divulgados posteriormente para a comunidade cientca atravs de publicao dos resultados em peridicos e congressos. Outra contribuio imediata a gerao de trabalhos de mestrado na rea da engenharia eltrica.

1.3

OBJETIVOS

Visando delimitar o escopo deste trabalho, os objetivos foram divididos em duas categorias, a saber:

1.3.1

OBJETIVOS GERAIS

De acordo com a proposta inicialmente apresentada, o objetivo geral desta dissertao estudar, projetar, implementar e validar uma plataforma de aquisio de dados multiponto dedicado ao monitoramento de esforos mecnicos estruturais aplicado s obras da construo civil, indstria metal-mecnica e demais setores, utilizando para tanto, equipamentos de aquisio de dados de extensmetros eltricos conectados s estruturas mecnicas. Tais equipamentos devem possuir capacidade de troca de dados com uma unidade mestre atravs de um protocolo de comunicao digital convel, seguro e com taxa de resposta compatvel com os tempos envolvidos neste tipo de aplicao. Tambm inclui o desenvolvimento do programa computacional para parametrizao, captura, visualizao, armazenamento e gerenciamento dos dados coletados.

1.3.2

OBJETIVOS ESPECFICOS

Para se atingir os objetivos gerais deste trabalho, foi necessrio estabelecer objetivos mais detalhados, apresentados abaixo: Projeto e construo de um prottipo da unidade de rede para coleta de dados e validao. Projeto e construo de uma interface de comunicao entre o computador e a rede.

Desenvolvimento de um programa computacional para parametrizao, processamento e visualizao de dados utilizando sistemas supervisrios. Implementar e testar o software para monitoramento e parametrizao do terminais de aquisio de dados distribudos em rede local; Implementao, testes e qualicao de uma rede bsica de sensores. Divulgao de uma cultura associada ao monitoramento estrutural como aspecto bsico relacionado segurana pblica. Com base nas tarefas listadas acima, foi projetado um conjunto de equipamentos e programas computacionais com os quais foi possvel atingir o objetivo proposto inicialmente.

1.4

ORGANIZAO DA DISSERTAO

dada a seguir uma breve descrio do contedo desta dissertao. No Captulo REVISO DA LITERATURA feito um levantamento do estado atual da arte referente ao monitoramento estrutural e de redes de sensores. O objetivo fazer uma anlise dos sistemas semelhantes existentes, procurando determinar as caractersticas que concedem vantagens ou desvantagens, visando determinar as funcionalidades que deveriam ter o sistema aqui desenvolvido, de maneira que incorpore o melhor de cada tecnologia e tente superar alguma limitao destas, levando a um ganho de qualidade. No Captulo FUNDAMENTAO TERICA apresentado a fundamentao terica do trabalho, composta pelos estudos realizados sobre os princpios fsicos dos extensmetros eltricos, sistemas de aquisio e condicionamento de sinais tpicos para este tipo de aplicao e detalhamento de seus elementos constituintes. Tambm dada uma viso geral de redes industriais e uma breve descrio do protocolo Modbus. No Captulo PROJETO CONCEITUAL DO SISTEMA so denidas as caractersticas bsicas para o sistema. So descritos os procedimentos e apresentadas as razes pela escolha da metodologia utilizada para cada um dos componentes do sistema, envolvendo um detalhamento do objeto desta dissertao. No Captulo PROJETO DOS NS DE REDE desenvolvido o projeto em si dos ns do sistema de aquisio. So detalhados tanto o projeto terico quanto a construo prtica. Tambm mostrado como feita a calibrao do sistema.

10

No Captulo PROJETO DOS SOFTWARES DE AQUISIO so apresentados as descries dos softwares desenvolvidos no computador mestre visando adquirir os dados dos terminais de rede. Seu principal foco a modelagem e parametrizao do software de monitoramento e a implementao do sistema supervisrio. No Captulo RESULTADOS E DISCUSSES so apresentados e discutidos os resultados obtidos dos experimentos realizados em laboratrio e da utilizao dos softwares desenvolvidos. E no ltimo, CONCLUSES E TRABALHOS FUTUROS so apresentadas algumas consideraes nais com relao ao trabalho desenvolvido e algumas sugestes para aperfeioamentos.

REVISO DA LITERATURA

Este captulo aborda uma viso geral dos trabalhos relacionados ao tema desenvolvido. uma busca para conhecer o que existe atualmente sobre o assunto, procurando determinar as principais vantagens das tecnologias existentes e tambm determinar suas desvantagens, de forma a propor um sistema que incorpore os benefcios das tecnologias atuais e supere, em algum grau, suas limitaes.

2.1

MONITORAMENTO ESTRUTURAL

Segundo Hejll (2007), o monitoramento das condies estruturais denido como sendo um mtodo para monitoramento in loco e avaliao de desempenho de estruturas civis. Solues tecnologicamente viveis para monitoramento contnuo e ecaz esto sendo estudadas em diversos centros de pesquisa ao redor do mundo. A Universidade da Califrnia, campus Berkeley, desenvolveu uma plataforma de monitoramento baseada em uma arquitetura aberta de hardware e software denominada Mote Smart Sensor (HILL et al., 2000; NAGAYAMA, 2004) que consiste basicamente na implementao de um micro-sensor que utiliza um sistema de comunicao via rdio, o que possibilita a sua aplicao em monitoramento embarcado. Iniciativas como esta so suportadas pela DARPA1 , atravs de programas especcos, cujo objetivo desenvolver um dispositivo sensor autnomo com dimenses de 1mm3 para implementao de redes de sensores para monitoramento de variveis fsicas, qumicas e biolgicas. Tais iniciativas, entretanto, dependem do adequado suporte da indstria de semicondutores para a implementao dos circuitos e dispositivos integrados, tais como os MEMS2 . Na Universidade de Keio no Japo (LUI e TOMIZUKA, 2003), pesquisadores desenvolveram sensores de deformao e de tenso mecnica que no necessitam de alimentao contnua e podem ser diretamente envolvidos em concreto, sendo a transmisso da informao feita atravs de sinais de rdio. Outro trabalho na mesma linha de Williams et al. (1998) onde
1 2

DARPA = US Defense Advanced Research Projects Agency MEMS = Micro Electrical Mechanical Systems

12

apresentado uma nova idia - bastante interessante - de que os sensores integrados estrutura sejam auto-sucientes, ou seja, capazes de gerar a prpria energia de que necessitam. A prpria vibrao da estrutura seria utilizada para gerar a energia necessria para os elementos. Sensores adaptados a estruturas civis monitoram valores mximos de deformao elstica, acelerao, deslocamento, vibrao, energia absorvida e deformao plstica acumulada, no sentido de se avaliar as condies de estabilidade e danos causados s obras civis. Como resultado destas pesquisas, uma gama de sensores aplicados na construo civil relatada na literatura, alm do extensmetro padro. Em Lin et al. (2003), por exemplo, apresentado uma rede de sensores distribuda para monitoramento das condies estruturais de uma ponte. O princpio utilizado o da reectometria eltrica no domnio do tempo ETDR3 . Esta tcnica consiste na deteco do tempo de reexo de um pulso aplicado uma estrutura. Conforme tempo de resposta e o formato do sinal reetido, pode-se inferir os esforos a que a estrutura est submetida, detectar descontinuidades (por exemplo, rachaduras) e determinar precisamente o ponto destas ocorrncias. Assim no s se detectaria a existncia do problema, mas tambm sua localizao. Em Symans e Kelly (1999) proposto um mtodo utilizando tcnica neuro-fuzzy para minimizar os danos causados a estruturas em caso de terremotos. Sua proposta consiste na instalao de amortecedores semi-ativos controlados por um sistema computacional que detecta a ocorrncia do abalo ssmico, determina sua amplitude e atua ecazmente sobre os amortecedores. Sua proposta visa diminuir os efeitos nocivos dos terremotos atravs do monitoramento contnuo das estruturas. Em Elgamal et al. (2005) apresentado um sistema de aquisio de dados utilizando um computador, o qual responsvel pela coleta das informaes e pela deteco de possveis problemas, atravs da programao de um limiar de anormalidade fornecido previamente. Em caso de anormalidade enviado um alarme, atravs da internet, para os rgos responsveis pela manuteno das estruturas (pontes, no caso especco daquele estudo) para que tomem as providncias necessrias. Uma srie de sensores distribuda pela estrutura e a tarefa de decidir a normalidade ou no da condio atual decidida por algoritmos implementados no software residente do computador. Segundo os autores, nos Estados Unidos existe uma rede de infraestruturas que atinge o montante aproximado de 1 trilho de dlares. Evidentemente solues que detectem ou diminuam os danos causados por desastres naturais contribuem para a vitalidade da economia daquele pas, considerando os altos valores envolvidos. Foi criado um portal na internet (UCSD, 2007) onde so disponibilizados ferramentas para anlise das condies de estruturas.
3

ETDR = Electrical Time Domain Reectometry

13

Schulz e Sundaresan (2006) apresentaram um relatrio de testes para determinao das condies de fadiga dos diversos materiais utilizados em estruturas de turbinas elicas. Estas so compostas por centenas de unidades que se movimentam constantemente e sujeitas a esforos variados, conforme a fora, sentido e direo do vento. Portanto a monitorao permanente destas estruturas aumenta em muito a segurana das instalaes e diminui os custos de manuteno, j que esta pode ser feita imediatamente ao se detectar qualquer anormalidade, impedindo que o problema se agrave e cause falha sistmica, caso em que os prejuzos seriam maiores tanto pelo custo da substituio dos componentes danicados quanto pelos lucros cessantes durante o perodo em que a turbina caria parada para manuteno. Na tese de doutorado de Hejll (2007), so combinadas diversas tcnicas probabilsticas com a utilizao de equipamentos de monitorao em tempo real. Uma ao sugerida quando so comparados os dados atuais com as informaes estatsticas anteriores da estrutura sendo monitorada. Visando desenvolver um estudo comparativo entre o modelo terico e os resultados obtidos, Gomes e Calil Jnior (2005) desenvolveram um sistema para aquisio de esforos em silos horizontais. Os dados experimentais foram utilizados para validao do modelo terico proposto pelos autores. Existem inmeros outros trabalhos relativos ao tema. Um trabalho que faz uma reviso bibliogrca aprofundada destes pode ser encontrado em Sandoval (2004).

2.2

UTILIZAO DE SENSORES INTELIGENTES PARA MONITORAMENTO ESTRUTURAL

Pereira et al. (2003) apresentam as caractersticas de vrias tecnologias sem o e suas aplicaes. So discutidos os vrios aspectos de uma rede de sensores e suas aplicaes no mundo real. Nesse trabalho, mostrado as denies existentes, as principais caractersticas de uma rede de sensores, as mtricas de desempenho, a arquitetura, os modelos de comunicao e envio de dados existentes, os protocolos, a segurana entre outros pontos relevantes. So objetos de estudo do trabalho de Sandoval (2004) os chamados Sensores inteligentes ou smart-sensors - composto por um microcontrolador e um transceptor sem o. Sua pesquisa se concentra na plataforma Mote desenvolvida pela Universidade da Califrnia, campus Berkeley, que uma plataforma de desenvolvimento para aplicaes de monitoramento estrutural utilizando sensores inteligentes. composta por um ambiente de software e hardware que seguem a losoa de cdigo aberto. Foram desenvolvidas, para efeito de validao e testes,

14

unidades de rede sensoras, chamadas de Tadeo, compostas por um acelermetro, um microfone, um termistor e um foto-resistor. Raghuvanshi (2006) desenvolveu uma unidade sensora inteligente comparvel plataforma Mote, referenciada no pargrafo anterior. O protocolo de comunicao implementado foi o Zigbee, com taxa de transmisso de 250 kbps. Na validao do produto foi utilizada uma bateria de 580 AH para alimentar uma rede de sensores que funcionou por 254 dias. Bu (2005) apresenta um novo conceito de rede de controle chamada de Wireless ad-hoc control networks (WACNets). Tais sistemas consistem de um grande nmeros de ns contendo sensores e/ou atuadores, inteligncia local e controle e componentes para processamento de dados e comunicao. O tamanho, nmero, densidade, capacidade e dependncia do local de instalao destes ns so determinados pela aplicao especca em que so utilizados. Os protocolos e algoritmos existentes nos ns possuem a capacidade de auto-organizao e intercooperao. Naquele trabalho feita uma implementao utilizando sensores inteligentes compatveis com a norma IEEE 1451 e uma rede sem o Bluetooth foi utilizada. Os ns desenvolvidos contm controladores digitais locais e uma rede digital de comunicao que liga as unidades de rede a um computador central, responsvel pelas tarefas de superviso e sincronismo do sistema. Em Portugal, Morais et al. (2005) descrevem o desenvolvimento de um sistema automtico de medio utilizado na realizao de ensaios de ancoragens. O equipamento de medio utilizado baseado em sensores inteligentes (Smart-Sensor). A losoa do sistema descrito apresenta algumas semelhanas com o proposto neste trabalho, ou seja, unidades de aquisio descentralizada, condicionamento local dos sinais e posterior transmisso dos dados para uma unidade de aquisio mestre, responsvel pelo processamento das informaes coletadas. Chaves (2001) apresenta uma aplicao de coleta de amostras em associao com receptor GPS para determinar a localizao espacial do sensor. Em Xu et al. (2004) proposto uma rede de sensores sem o, batizada de Wisden, para monitoramento estrutural. Neste trabalho so abordadas as vantagens da aquisio de dados de forma descentralizada. O trabalho consiste em melhorar a qualidade do sinal transmitido por transmissores de RF de baixa potncia utilizando tcnica de Wavelets. Em Hill (2003) desenvolvido um sistema operacional, chamado de TinyOS, e trs plataformas de hardware visando atender ao monitoramento estrutural atravs de uma rede de comunicao sem os. Uma das plataformas desenvolvidas baseada no desenvolvimento de um circuito integrado que contm os principais elementos do terminal de aquisio, ou seja, a mquina de estados do protocolo de comunicaes e a interface de comunicao fsica.

15

Em Arms et al. (2004) descrita uma metodologia utilizada para desenvolver um sensor de o modular capaz de ser reprogramado atravs de um telefone celular a distncia. Foi produzida uma estao base com uma interface para um telefone celular. Isto permite o acesso remoto aos sensores de qualquer lugar onde haja comunicao via celular disponvel, mesmo a quilmetros de distncia. Os parmetros de operao, tais como: limiar de disparo, taxa de aquisio de dados, durao da coleta de amostras e nmero de canais ativos podem ser todos reprogramados remotamente. A estao base pode enviar comandos tipo broadcast tais como, sair do modo de baixo consumo (sleep), inicie a coleta de dados, ou volte ao modo de baixo consumo. Dysdenborg (2004) desenvolveu, na sua tese de doutorado, um sistema de comunicao de sensores orientada conexo, interligados em um sistema sem o baseado na tecnologia Bluetooth. Em Brownjohn et al. (2004) apresentado um caso de aplicao real, onde um viaduto de uma via expressa de Singapura foi instrumentado com sensores estticos. Nesta aplicao, os dados so gerenciados atravs de uma rede sem o e internet. Ilarionov et al. (2005) apresenta um sistema microcontrolado que faz a aquisio de temperatura e presso utilizando microcontroladores PIC16F873 (MICROCHIP).

2.3

TRABALHOS RELACIONADOS

Embora exista uma profuso de trabalhos relativos rede de sensores, foram procurados outros semelhantes a este aqui desenvolvido, escritos nas lnguas inglesa, portuguesa e espanhola e no foi encontrado nenhum trabalho acadmico que seja exatamente igual a este. O trabalho com o tema mais similar encontrado foi o de Simunic et al. (2001) que descreve a implementao de um novo sistema digital de aquisio de dados de extensmetros eltricos utilizados no monitoramento da ponte Maslenica na Crocia em substituio a um sistema de aquisio analgico anteriormente existente na mesma. A troca foi proposta devido s limitaes do sistema analgico. O sistema de aquisio baseado em CLPs e a rede escolhida foi a PROFIBUS DP. Escolha que segundo os autores ocorreu aps um minucioso estudo das opes existentes. O monitoramento analgico convencional foi comparado ao novo monitoramento digital e as vantagens da utilizao de sistemas de aquisio digital caram evidentes. Dentre estas os autores destacam: sistema de medio padronizado (equipamentos industriais ) grande nmero de canais de medida (mais de 100)

16

sistema aberto (possibilidade de expanso e desenvolvimento) Sinais padronizados Compatibilidade com sensores de sistemas convencionais maiores distncias entre os sensores e a unidade de aquisio de dados. reduo do cabeamento aplicabilidade de testes em campo. Na dissertao de mestrado de Mello (2007), sob o ttulo Um estudo da aplicao de redes de sensores para monitorao da proteo catdica em dutos feita uma aplicao de rede sem o para monitoramento do grau de corroso de dutos utilizados para transporte de petrleo ou de seus derivados. Neste trabalho so avaliados e comparados os protocolos para transmisso sem-o Zigbee e Directed Diffusion. O autor optou pela utilizao do ltimo. Um dos objetivos desse trabalho foi o de construir um sistema de baixssimo consumo, j que a alimentao dos mesmos seria a pilhas. Como era de se esperar, uma de suas limitaes a necessidade de manuteno peridica para troca das pilhas e baixo alcance dos transmissores. Na tese de doutorado de Penteado Neto (2005), apresentado um sistema de rede de sensores extensomtricos visando detectar a ruptura de cabos ou isoladores da rede de distribuio de energia eltrica. Em cada ponto monitorado colocado uma unidade de rede microcontrolada que condiciona os sinais e transmite os dados atravs de RF (Rdio Freqncia). Uma das limitaes deste projeto a diculdade da transmisso utilizando estes mdulos de RF sujeitos a grandes interferncias e rudos. Outra a necessidade de manuteno peridica para troca das pilhas.

2.4

CONCLUSES

Nota-se pelos trabalhos citados neste captulo que h uma grande quantidade deles utilizando solues sem-os para a tarefa de monitoramento estrutural. O tema atual e existem vrios grupos de pesquisas trabalhando para otimizar e viabilizar a utilizao de redes de sensores em larga escala. No entanto, algumas questes ainda no foram satisfatoriamente sanadas, tais como a autonomia das baterias, conabilidade e qualidade do meio de transmisso, padronizao dos protocolos de acesso e custos envolvidos - ainda signicativamente altos.

FUNDAMENTAO TERICA

Neste captulo so descritos os fundamentos tericos e os conceitos bsicos necessrios para o desenvolvimento do tema objeto deste trabalho. Sua leitura til para a compreenso dos procedimentos, tcnicas e mtodos utilizados.

3.1

EXTENSMETROS ELTRICOS DE RESISTNCIA

William Thomson, tambm conhecido como Lord Kelvin, foi o primeiro a relatar em 1856 que os condutores metlicos submetidos a esforos mecnicos mudam as caractersticas da sua resistncia eltrica. Kelvin observou que a resistncia de um o varia deterministicamente quando comprimido ou tracionado. Desta forma, se um condutor conectado a uma estrutura mecnica de maneira que a mudana em comprimento da estrutura igual a mudana de comprimento do condutor, ento a variao resistncia do o diretamente proporcional ao esforo sofrido (ANDOLFATO et al., 2007). Fundamentalmente, os extensmetros so projetados para converter deformaes lineares em sinais eltricos. Na prtica, os extensmetros eltricos de resistncia so mais conhecidos pelo seu nome em ingls, ou seja, strain gauges. Existem vrios tipos de extensmetros. Um extensmetro tpico mostrados na Figura 4. Os extensmetros laminares (foil gauges), como ilustrados nas Figuras 5 e 6, so os mais utilizados para aplicaes rotineiras. Constituem-se de lme metlico com uma geometria de dobras e montado sobre uma base polimrica. Alguns podem ser montados sobre uma base cermica. Em geral, os extensmetros a os so para aplicaes em altas temperaturas. Os extensmetros laminares apresentam as seguintes caractersticas (MADGETECH, 2007): Alta estabilidade.

18

Figura 4: Extensmetro Eltrico a o (wire gauges)

Figura 5: Extensmetro eltrico laminar (foil gauges) Bom fator de proporcionalidade. Preos razoveis. Baixa tenso eltrica de sada necessita de amplicao. O processo de fabricao deste formato feito com processos de foto corroso (photoetching). Como este processo verstil, uma grande quantidade de formatos est disponvel para as mais variadas aplicaes. O extensmetro mais curto disponvel da ordem de 0,2 mm; e o mais longo cerca de 100 mm. Os valores de resistncias padres so de 120 e 350 Ohms. Outros valores para aplicaes especiais de 500, 1000, e 5000 Ohms so tambm disponveis. Para a compreenso deste princpio ser feita a anlise que se segue.

19

Figura 6: Extensmetro laminar tpico (foil gauges)

3.1.1

FATOR DE DEFORMAO ()

Todos os corpos se deformam quando esto sob a ao de foras externas. Se um o submetido a um esforo de trao, ele vai se tornar ligeiramente mais longo e sua rea de seo transversal reduzida. Da mesma forma, se um o submetido a um esforo compressivo, sua rea de seo transversal aumenta. A Figura 7 ilustra esse fenmeno.

Figura 7: Deformao de um corpo submetido uma fora externa O comprimento inicial L atingir o valor LF aps a aplicao da fora. O fator de deformao () calculado atravs da equao: LF L L = L L

Verica-se que o fator de deformao () uma quantidade adimensional, no entanto, comum expressar o fator de deformao como a razo de duas unidades de comprimento, por exemplo, como m/m ou in/in. Como a tenso adimensional, no h necessidade de converso de unidade. A regio elstica dos materiais varia entre 0,05% a 0,2% ( = 0, 0005 a = 0, 002). Como os valores tpicos para os fatores de deformao so pequenos e menores que 0, 002, so normalmente expressos em unidades de micro-deformao (micro-strain) : Micro-deformao = deformao x 106 . Por exemplo, um fator de deformao de 0, 001 ser expresso por 1000 m/m ou 1mm/m. Em geral, o menor valor encontrado na prtica situa-se na faixa de unidades de m/m.

20

3.1.2

TENSO MECNICA

Para uma distribuio uniforme das foras resistivas internas em um determinado corpo, a tenso mecnica (stress) pode ser calculada dividindo-se a fora aplicada (F ) pela unidade de rea (A), matematicamente: F A

= onde: F = fora aplicada em Newtons (SI);

(3.1)

A = rea da seo transversal da barra em m2 (SI) = tenso mecnica em N/m2 = P a (Pascal) (SI) 3.1.2.1 RELAO ENTRE TENSO MECNICA E DEFORMAO

A relao entre a tenso aplicada e a deformao provocada obtida atravs da lei de Hooke:

E=

A constante de proporcionalidade (E) entre a tenso e o fator de deformao chamado de mdulo de elasticidade (tambm conhecido como mdulo de Young). Assim, a lei de Hooke estabelece uma relao linear entre a tenso e a deformao, ou seja,

= E Deve-se mencionar que esta lei vlida apenas para a regio elstica dos materiais, ou seja, quela na qual a deformao do material no irreversvel. Acima do limite elstico, denominada de deformao plstica, o material se deforma de maneira denitiva, onde a lei de Hooke no mais se aplica. Se a tenso continuar aumentando, existir um certo valor em que o material vai se quebrar ou cisalhar. A Figura 8 mostra um grco de tenso versus fator de deformao tpico (ANDOLFATO, apud FURMAN, 2003). Ento, desde que no se ultrapasse o limite de elasticidade do material, pode-se obter uma relao direta entre uma tenso mecnica e a deformao do material.

21

Figura 8: Lei de Hooke - Tenso versus Deformao

3.1.3

RELAO ENTRE TENSO ELTRICA E DEFORMAO

Os valores da deformao, da tenso mecnica e da fora aplicada a um corpo de prova esto intimamente relacionados. Existem vrias maneiras de se medir deformaes. Dentre estas, ser utilizado no presente trabalho, os extensmetros de resistncia eltrica. A equao da resistncia R de um o condutor dada por: L A

R= onde

(3.2)

= resistividade do condutor - resistncia especca do metal (m) L= comprimento do condutor (m) A= rea da seo transversal do condutor (m2 ) diferenciando a equao 3.2 resulta R R R d + dL + dA L A R L = A R = L A

dR =

(3.3)

22

L R = 2 A A e dividindo todos os membros da equao 3.3 por R


L L dR 2 = A d + A dL + A dA R R R R

substituindo R por

L , A

ca: dR = R
L A d L A A dL L A L A2 L A

dA

dR L A A L A = d + dL 2 dA R A L A L A L e nalmente: dR d dL dA = + R L A

(3.4)

Notar que esta equao relaciona variaes de resistncia eltrica do condutor com variaes de resistividade (o chamado termo piezoresistivo), com a deformao axial do condutor (a = dL/L) e o termo
dA A

representa a variao relativa na rea da seo transversal do con-

dutor devido a tenso exercida sobre o mesmo. Ser visto a seguir que dA/A e dL/L esto relacionados. Assim, se a variao de resistividade do condutor pequena, pode-se pensar em medir a deformao de um condutor metlico medindo-se a variao de sua resistncia eltrica. Ser mostrado a seguir como a deformao axial e a variao da rea transversal se relacionam.

Figura 9: Condutor de seo transversal circular Para um condutor de seo transversal circular, como mostrado na Figura 9, a rea dada por:

23

A=

D2 4 D dD 2

dA =

dA = A

D dD 2 D2 4

D 4 dD dD =2 2 2 D D

Para o caso de uma tenso axial, tem-se que dL L dD D

a =

t = onde a = fator de deformao axial no condutor

t = fator de deformao transversal no condutor A razo entre os fatores das deformaes transversal e axial o chamado mdulo de Poisson (). importante ressaltar que o mdulo de Poisson, da mesma forma que a resistividade e que o mdulo de elasticidade, uma propriedade do material. Por exemplo, para o ao varia de 0,25 a 0,3. Matematicamente, o coeciente de Poisson dado por: t a

= f atordedef ormacaotransversal = f atordedef ormacaoaxial

t =

dD = a D

(3.5)

dA dD =2 A D dA = 2a A

(3.6)

Se considerarmos a elongao de um o, L L + L, pelo efeito de Poisson vai haver tambm uma reduo da rea seccional, A A A. A partir da Equao 3.2 pode ser visto

24

que ambos os efeitos contribuem para o aumento da resistncia. Substituindo as equaes 3.5 e 3.6 na equao 3.4, temos dR d = + a 2t R dR d = + a 2(a ) R Desta forma, ento, relacionamos a variao de resistncia eltrica do condutor com a deformao axial: d dR = + a (1 + 2) R H ainda a considerar a variao relativa da resistividade e do mdulo de Poisson, mas estas so inuncias secundrias se o material no estiver sendo submetido a carregamentos extremos (por exemplo, oscilando em alta frequncia, o que pode resultar em aquecimento do elemento), isto , estes termos devem ser constantes na faixa de carregamento do material. Rearranjando, obtm-se: dR d 1 = a ( + 1 + 2) R a d 1 + 1 + 2 a

K=

onde K o fator de sensibilidade do extensmetro, tambm conhecido pelo seu nome original da lngua inglesa Gauge Factor (GF). O primeiro termo direita do sinal de igualdade o termo piezoresistivo, o qual se espera manter constante durante o carregamento do material. Assim sendo, chega-se a: dR = a K R

(3.7)

Esta expresso signica que a variao na resistncia diretamente proporcional ao fator de deformao axial da amostra. O fator de sensibilidade do extensmetro (K) depende das caractersticas de fabricao deste tais como: materiais utilizados, formas construtivas e tamanho, dentre outras. Este fator

25

determinado pelo fabricante pela medida R/R para uma amostra extrada de cada lote de produo e esta informao fornecida junto com o extensmetro. O valor de K aproximadamente constante para a maioria dos tipos de extensmetros e estudos experimentais mostram que apresentam valores na faixa de 2 4. Alm disso a quantidade (1 + 2) aproximadamente igual 1,6 para a maior parte destes materiais, o que signica que o termo um valor entre 0,4 2,4 (AGILENT TECHNOLOGIES, 1999). Tambm esto disponveis extensmetros de semicondutor. Estes apresentam uma alta sensibilidade negativa (isto , a resistncia diminui com a tenso aplicada) da ordem de -50 -200, mas por outro lado, so altamente no lineares. Na Figura 10 pode-se observar que o fator de sensibilidade do extensmetro corresponde taxa de inclinao da curva.
d 1 a

contribui com

Figura 10: Curva dos fatores de sensibilidade de diversos materiais Uma lista da ligas mais comuns empregadas na fabricao de extensmetros eltricos, juntamente com a sua sensibilidade, mostrada na Tabela 1. Os extensmetros mais comumente utilizados so os fabricados com liga de cobre-nquel, conhecidos como Constantan. 3.1.3.1 Medio da variao da resistncia dos extensmetros

A resoluo limite para a maioria dos extensmetros eltricos em torno de 1 m/m (1 ). Com um extensmetro de resistncia tpica de 120 e um fator do extensmetro (gauge factor) igual a 2, 0, implica que temos que ser capazes de detectar uma variao na resistncia de R = 120 2, 0 106 = 0, 00024. Enquanto que alguns multmetros digitais de preciso so capazes de medir tal ordem de resistncias, estes apresentam a desvantagem do

26

Tabela 1: Fatores de sensibilidade do extensmetro para alguns materiais Cobre Constantan Nquel Platina Prata 40% Ouro/Paldio Semicondutor Baixa Deformao 2,6 2,1 -12 6,1 2,9 0,9 -100 Alta Deformao 2,2 1,9 2,7 2,4 2,4 1,9 -600 Elongao mxima (%) 0,5 1,0 0,4 0,8 0,8

Fonte: DATAFORTH (2007) alto custo. Uma maneira bem mais simples e barata de se conseguir o mesmo resultado inserir o extensmetro em um circuito que seja capaz de detectar pequenas variaes nas resistncias, em vez de valores absolutos. Estes circuitos convertem a variao R em uma tenso eltrica proporcional a esta variao. O circuito mais comumente utilizado para esta tarefa a uma congurao chamada de Ponte de Wheatstone.

3.2

PONTE DE WHEATSTONE

A ponte de Wheatstone foi desenvolvida nos primrdios da eletrnica como uma maneira de medir com preciso valores de resistores sem necessitar de uma tenso de referncia ultra estvel ou um ohmmetro de alta impedncia. Embora as pontes resistivas sejam raramente utilizados para seu propsito original, elas continuam sendo largamente empregadas nas aplicaes de sensoriamento. Nesta seo sero discutidas algumas consideraes fundamentais na utilizao dessa topologia.

3.2.1

CONFIGURAO BSICA DA PONTE

A Figura 11 mostra o diagrama de uma ponte de Wheatstone clssica, onde a tenso de sada (V o) a diferena de tenso entre V o+ e V o . Quando utilizada em um sensor, o valor de um ou mais resistores vai se alterar de acordo com a intensidade da propriedade sendo medida. Estas mudanas na resistncia causam tambm uma alterao no valor da tenso de sada. A Equao 3.8 mostra que a tenso de sada, V o, uma funo da tenso de excitao e de todos os resistores componentes da ponte. R3 Ve R3 + R4

VCB = V o =

27

Figura 11: Diagrama de uma Ponte de Wheatstone bsica

VDB = V o+ =

R2 Ve R1 + R2

V o = V o+ V o

Vo=Ve

R2 R3 R1 + R2 R3 + R4

(3.8)

Embora a Equao 3.8 no seja muito elegante, ela pode ser simplicada para a maioria das pontes comumente utilizadas. A sada da ponte so mais sensveis a alteraes na resistncia quando V o+ e V o so iguais metade de V e. Esta condio facilmente atingida utilizandose quatro resistores iguais de valor R. Alteraes na resistncia causadas pela variao da propriedade sendo medida so consideradas pelo termo R. Resistores com o termo R so chamados de resistores "ativos". Nos quatro casos que se seguem, todos os resistores possuem o mesmo valor nominal R. Um, dois ou quatro resistores estaro ativos (tero um termo R). Na derivao destas equaes, R assumido ser positivo. Se a resistncia realmente diminui ento o termo R utilizado. No casos especiais abaixo, a magnitude de R a mesma pra todos os resistores ativos. Como regra geral, pode-se vericar que: alteraes de iguais valores em braos adjacentes cancelam-se mutuamente.

28

3.2.2

QUANTIDADE DE SENSORES

Os extensmetros podem ser dispostos em diferentes conguraes: 1/4 de ponte, 1/2 ponte ou ponte completa. Para utilizao na congurao em 1/4 de ponte, deve-se fornecer os outros 3 elementos resistivos da ponte de forma a complet-la. Temos ento as seguintes possibilidades de uso: 4 extensmetros (ponte completa) - Todos os ramos da ponte so extensmetros. necessrio apenas fornecer a tenso de excitao e medir a sada da ponte. 1 extensmetro (1/4 ponte) - Somente um extensmetro fornecido. O circuito de instrumentao dever fornecer os resistores necessrios para completar a meia ponte e alm disso, instalar um resistor adicional, do mesmo valor do extensmetro, no ramo adjacente ao do extensmetro. 2 extensmetros (1/2 ponte) - Somente dois dos extensmetros so fornecidos. O circuito de instrumentao deve fornecer os outros dois resistores necessrios para completar a ponte. 3.2.2.1 Quatro elementos ativos

No primeiro caso, todos os quatro elementos da ponte so ativos. A Figura 12 ilustra este caso. As resistncias de R2 e R4 aumentam com a intensidade da propriedade sendo medida, enquanto que o valor das resistncias R1 e R3 diminuem. Este caso tpico das clulas de carga que utilizam quatro extensmetros. A orientao fsica dos extensmetros determinam se seus valores iro aumentar ou diminuir quando a fora for aplicada. A Equao 3.9 mostra que esta congurao produz uma relao linear simples entre a tenso de sada (V o) e a alterao na resistncia (R). Esta congurao tambm fornece o maior sinal de sada. Deve-se notar que a sada no uma funo linear de R, mas sim da relao R/R. Isto uma diferena sutil, porm importante, porque a mudana na resistncia na maioria dos elementos sensores proporcional suas resistncias nominais. Da Equao 3.8, fazendo que R2 = R4 = R + R e R1 = R3 = R R tem-se que: R R

Vo=Ve

(3.9)

29

Figura 12: Congurao utilizando 4 extensmetros ativos (full bridge) 3.2.2.2 Um elemento ativo

O segundo caso um simples elemento ativo. Esta congurao utilizada frequentemente quando o custo ou a ao mais importante do que a amplitude do sinal. A Figura 13 ilustra esta situao.

Figura 13: Extensmetro ligado em um quarto de ponte Para a anlise que se segue, ser considerado que a tenso fornecida (V e) constante, que a impedncia de entrada do voltmetro innita e que a ponte est perfeitamente balanceada no incio (R = 0). Nestas condies, tem-se que a tenso de sada inicialmente nula (Vo = 0). A corrente que ui de A at B passando por D (ramo direito da ponte) dada por: Ve 2R + R

IADB =

30

A diferena de potencial sobre o extensmetro de resistncia R + R : Ve 2R + R

VAD = (R + R)

A diferena de potencial entre os pontos A e C dada por: Ve 2

VAC =

Por conseqncia, a tenso de sada do sistema (Vo ) dada por:

Vo = VAD VAC

Vo =

V e (R + R) V e 2R + R 2

Vo = V e

(2R + 2R 2R R) 4R + 2R R 4R + 2R

Vo = V e

(3.10)

Tipicamente a alterao na resistncia muito pequena comparada com o valor da resistncia original (R 1%), de maneira que podemos aproximar 4R + 2R 4R. Assim, = obtm-se: R 1 Ve 4 R

Vo = Lembrando que
R R

(3.11)

= K a , obtm-se, nalmente, a expresso para determinar o fator

de deformao axial: Vo 1 Ve K

a = 4

(3.12)

Observando-se a Equao 3.11 verica-se que a sada desta congurao tem apenas 1/4 da amplitude que teria se tivesse quatro elementos ativos. Outra considerao importante que a Equao 3.11 foi obtida supondo pequenas variaes de resistncias. Caso no seja este o caso, a sada no linear, causada pela existncia do termo R no denominador da Equao

31

3.10. No entanto, esta no linearidade pequena e determinstica e caso necessrio, pode ser corrigida atravs de software. 3.2.2.3 Dois elementos ativos com respostas opostas

O terceiro caso, mostrado na Equao 3.13, tem dois elementos ativos. Por exemplo, na Figura 14 ilustrada uma barra onde um elemento da ponte montado na regio de tenso (R + R) e o outro em compresso (R R). Desta maneira, suas resistncias variam em direes opostas (R e R). Ambos os resistores so colocados no mesmo lado da ponte (R1 e R2, ou R3 e R4). Como esperado, a sensibilidade o dobro da congurao que utiliza apenas um elemento ativo e metade daquela que utiliza quatro elementos ativos. A sada desta congurao uma funo linear de R/R. V e R 2 R

Vo=

(3.13)

Figura 14: Ponte de Wheatstone contendo dois elementos ativos idnticos e ligados em braos adjacentes. Tanto no segundo, quanto no terceiro caso apresentado acima, somente metade da ponte ativa. A outra metade simplesmente fornece uma tenso de referncia que igual metade de V e. Conseqentemente, no realmente necessrio que todos os quatro resistores da ponte tenham o mesmo valor nominal. importante somente que ambos os resistores do lado esquerdo da ponte sejam iguais um ao outro e que ambos os resistores do lado direito da ponte tambm sejam iguais um ao outro.

32

3.2.2.4

Dois elementos ativos idnticos

O quarto caso tambm utiliza dois elementos ativos, porm tm uma resposta parecida, ou seja, ambos aumentam ou diminuem de valor simultaneamente. Este o caso quando se utilizam dois extensmetros idnticos montados adjacentes um ao outro e com seus eixos em paralelo. Para ser efetivo, estes resistores devem estar nas diagonais da ponte (R1 e R3, ou R2 e R4). A Figura 15 ilustra esta situao.

Figura 15: Ponte de Wheatstone contendo dois elementos ativos idnticos em ramos opostos e alimentada por uma fonte de tenso constante. A vantagem bvia desta congurao que o mesmo tipo de elemento sensor pode ser utilizado em ambas as posies. A desvantagem o resultado no linear da sada causado pelo termo R no denominador da equao 3.14. No entanto, esta no linearidade determinstica e pode ser removida por software. R 2R + R

Vo=Ve

(3.14)

A no linearidade tambm pode ser eliminada alimentando-se a ponte com uma fonte de corrente constante em vez de uma fonte de tenso constante, conforme ilustrado na Figura 16. Neste caso a tenso de sada dada por Ie R 2

Vo= Onde Ie a corrente de excitao.

(3.15)

Deve se observar que V o na Equao 3.15 uma funo em termos de R, no da razo

33

Figura 16: Ponte de Wheatstone contendo dois elementos ativos idnticos e alimentada por uma fonte de corrente constante. R/R como nos casos anteriores. O entendimento dos quatro casos especiais apresentados anteriormente til quando se trabalha com elementos sensores individuais. Muitas vezes, no entanto, o sensor possui uma ponte interna com uma congurao desconhecida. Nestas situaes no realmente importante saber a congurao exata. O fabricante ir fornecer as informaes necessrias, tais como sensibilidade, erro de linearidade, tenso em modo comum e demais informaes relevantes. 3.2.2.5 Ordem de grandeza

O exemplo dado a seguir tem a nalidade de ilustrar a ordem de grandeza das unidades envolvidas. Exemplo: Um extensmetro tem resistncia nominal de 120 e um fator K = 2,06. Est instalado em congurao de 1/4 de ponte. Os demais resistores so de 120. Qual ser a tenso de sada da ponte com uma deformao de 1000 strain=1mm/m se a alimentao da mesma de 5 Volts? Inicialmente, se temos todos os resistores iguais na ponte, ento: Vo = R 1 Ve 4 R

Lembrando que tambm que R = a K R Assim, Vo = 1 V e a K 4

34

ento, Vo =
1 4

5(1000 106 ) 2, 06 = 2, 575 mV

3.2.3

EFEITO DA RESISTNCIA DA FIAO

As equaes fornecidas anteriormente para conguraes de extensmetros em 1/4, 1/2 e ponte completa assumem que a resistncia da ao desprezvel. Enquanto que ignorar estes efeitos pode ser benco para se entender o princpio bsico de medio utilizando pontes de Wheatstone, fazer isto na prtica pode ser uma grande fonte de erro. Quando os extensmetros esto distantes do local da instrumentao, o efeito da resistncia da ao adicionada ao circuito pode desbalancear a ponte. Por exemplo, para 30 m de o de cobre de bitola 26 AWG (133, 86/km) ir produzir uma resistncia adicional de: R =
133,86 1000

30 2 = 8, 03, que muito maior do que a variao de resistncia esperada devido

a deformaes por esforo para um extensmetro de 120. Alm de adicionar um erro por desvio intolervel, a resistncia da ao tambm dessensibiliza a sada da ponte. Alm disso, variaes na temperatura dos os tambm podem ser signicativas. Utilizando uma conexo a 6 os pode-se eliminar os efeitos da ao porque as resistncias afetam igualmente dois braos adjacentes da ponte. Como pode ser observado na Figura 17, alteraes na resistncia da ao no alteram a razo dos braos da ponte. Desse modo, so canceladas quaisquer alteraes nas resistncias devido ao ou a variao temperatura.

Figura 17: Efeito da ao na medio

35

3.2.4

MEDIO DE TENSO MECNICA UTILIZANDO EXTENSMETROS

Inicialmente deve-se selecionar o extensmetro dentre os ofertados por fabricantes. A varivel bsica o fator do extensmetro, K, fornecido nos catlogos. Este fator a razo entre a variao relativa da resistncia e a deformao axial. Depois de escolhido o mais adequado para a aplicao, o extensmetro deve ser instalado (colado) no material a ser testado e ligado ao circuito eletrnico (ponte de Wheatstone). O material dever ser submetido ao carregamento e a variao relativa da resistncia ser medida e ento a deformao axial poder ser calculada. Finalmente a tenso mecnica determinada utilizando se a lei de Hooke.

3.2.5

RELAO ENTRE TENSO MECNICA E TENSO ELTRICA

Lembrando que, para o caso de 4 elementos ativos, a equao da tenso da sada V o = V e R , R e que
dR R

R R

para pequenas variaes, temos que

R R

= a K. Substituindo obtm-se:

V o = V e a K Lembrando ainda que, a = Vo=


V eK E , E E Ve

obtm-se nalmente:
1 K

ou ainda =

Vo

Exemplo 1: Um extensmetro de fator K = 2 est montado em uma barra de ao retangular que tem mdulo de elasticidade E = 200GP a. A barra tem 3cm de largura e 1cm de altura e est sob a ao de uma fora de trao de 30kN . Determine a variao de resistncia do extensmetro se sua resistncia sem carga for de 120. Primeiro o clculo da tenso, = F/A, = 30kN/(3 102 m 1 102 m) = 1, 0 105 kN/m2 = 100M P a aps, o clculo da deformao com a equao de Hooke, a =
E

1,0102 M P a 200103 M P a

a = 5, 0 104 m/m = 500 strain = 0, 5mm/m A variao relativa da resistncia (R/R) o produto do fator de deformao (a ) pelo

36

fator do extensmetro (K), matematicamente:


R R R R

= a K = 5, 0 104 2, 0 = 1, 0 103 /

R =0, 12

PROJETO CONCEITUAL DO SISTEMA

Neste captulo so mostrados os materiais, procedimentos, tcnicas e mtodos utilizados para o projeto a nvel global. Nos captulos posteriores so detalhadas cada unidade aqui apresentada. Assim, o objetivo especco deste captulo apresentar uma viso geral do sistema, incluindo: 1. OS REQUISITOS BSICOS 2. ESTRUTURA GLOBAL 3. DEFINIO DOS COMPONENTES INTEGRANTES O projeto desenvolvido consiste, basicamente, em um sistema de aquisio de dados multi ponto dedicado ao monitoramento estrutural, conforme pode ser visto na Figura 18.

Figura 18: Arquitetura geral do sistema proposto

38

4.1

TOPOLOGIA

A idia principal que todos os sinais eltricos gerados pelos extensmetros devido aos esforos mecnicos presentes na estrutura sejam condicionados localmente atravs de circuitos analgicos dedicados presentes nos terminais da rede (n de rede). O sinal condicionado ento digitalizado e transmitido para a unidade gerenciadora, atravs de protocolo especco com vericao de redundncia, para se evitar erros de transmisso de dados. Uma das vantagens da transmisso de sinais digitalizados com modulao diferencial que estes so muito menos suscetves a rudos externos do que a transmisso de sinais analgicos da ordem de V por dezenas de metros de ao, como acontece nos sistemas convencionais. Assim, os tnues sinais gerados pelos sensores no necessitaro uir atravs do cabeamento, no estando, portanto, sujeitos a rudos externos. Assim, cada unidade de rede contm a instrumentao eletrnica associada aquisio, tratamento do sinal, calibrao do sistema de medida, converso analgico-digital e comunicao com uma unidade mestre remota, responsvel pelo gerenciamento do sistema de aquisio de dados. Toda a conexo entre os diversos ns da rede e o mestre feita atravs de um nico cabo tipo lgico UTP (Unshielded Twisted Pair) padro utilizado em redes Ethernet, que transporta dados e energia para os ns da rede. Portanto, os ns sero autnomos, ou seja, no necessitaro de fonte de energia disponvel in loco (embora tambm possam ter). Como cada unidade da rede recebe a energia a partir de um nico ponto central, no h necessidade de manuteno peridica nos pontos de monitoramento instalados, os quais so freqentemente de difcil acesso. Esta caracterstica torna o sistema de aquisio extremamente verstil para ns de monitoramento permanente de estruturas. A partir da unidade mestre, uma comunicao ser estabelecida com um computador pessoal para o processamento e tratamento grco dos sinais coletados a partir dos diversos pontos monitorados.

4.2

DEFINIO DO SISTEMA DE AQUISIO DE DADOS

Diferentemente das tecnologias wireless que operam em rede, onde cada n transmite simultaneamente as informaes, causando importante congestionamento no espectro eletromagntico, alm de cada ponto necessitar de fonte individual de energia, o que gera custo extra de manuteno, o sistema proposto opera sob outra losoa. Os pontos de monitoramento so permanentemente conectados estrutura civil ou mecnica e se comunicam individualmente

39

com a unidade remota mestre em intervalos de tempo exclusivos (time frames), o que garante a otimizao do consumo de energia. Cada ponto de medida (n da rede) incluir uma interface para sensoriar um extensmetro utilizado para monitoramento de esforos e instrumentao eletrnica associada aquisio, tratamento do sinal, calibrao do sistema de medida, converso analgico-digital e comunicao com uma unidade mestre. Embora os conversores analgico/digital do tipo delta-sigma popularizados recentemente possam ser utilizados de maneira simples e com sucesso na presente aplicao, optou-se por implementar o projeto utilizando amplicadores operacionais comuns. Duas das principais razes para essa escolha so a facilidade de aquisio e seu baixo custo, fatores essenciais para este projeto, j que um dos objetivos propostos o desenvolvimento de uma plataforma de baixo custo. Um dos maiores esforos, portanto, consistiu em conseguir um desempenho satisfatrio do sistema de condicionamento de sinais utilizando componentes que apresentam rudos intrnsecos maiores do que os dos amplicadores de instrumentao comerciais, valor de offset relativamente grande, deriva trmica considervel e baixa estabilidade com o passar do tempo. Todos estes fatores, a princpio, parecem contra-indicar a utilizao destes componentes. No entanto, este desao foi aceito e demandou uma grande carga de trabalho de pesquisa terica e experimental. A soluo encontrada para corrigir estas imperfeies, foi uma combinao de estratgias de hardware e de software. Uma vez que o sistema dispe de um microcontrolador, este foi utilizado para a tarefa de implementar os algoritmos de correo dos eventuais desvios. Na seo que trata dos terminais de rede sero detalhados os procedimentos e os cdigos de programao utilizados. Importante ressaltar que foram construdos prottipos para se validar as tcnicas propostas e, como ser visto no Captulo RESULTADOS E DISCUSSES, encontrouse uma soluo satisfatria para o problema.

4.3

DEFINIO DO PROTOCOLO DE COMUNICAO

Um aspecto importante considerado neste projeto, refere-se ao meio fsico de transmisso dos sinais digitais atravs de um barramento de comunicao, como por exemplo, a mxima taxa permissvel de transmisso de dados, o nmero admissvel de pontos de rede e o comprimento efetivo de cabo que pode ser utilizado. Com a nalidade de tornar o sistema de aquisio vivel economicamente, pretende-se utilizar cabos tipo UTP na conexo entre ns da rede e unidade mestre. A adequao entre a informao a ser transmitida (sinais digitais) e o canal de comunicao (par de os) essencial para o correto desempenho do sistema de aquisio projetado. Estes resultados garantem a funcionalidade do sistema de aquisio. Os tempos de

40

resposta dos diversos circuitos operando na rede devem ser adequados para a capacidade de transmisso da linha de comunicao de forma a assegurar que o mestre e os ns da rede se comuniquem corretamente. Tambm foi uma preocupao, o consumo e a distribuio eciente de energia. O protocolo de comunicao utilizado constitudo por camadas lgicas que empregam vericao de redundncia e controle de uxo (handshakings) entre unidades de rede e mestre. Basicamente, o mestre se comunica com a rede e indica qual a unidade alvo que deve transmitir os dados. Assim, a comunicao ser do tipo polling mestre-escravo. Esta forma de comunicao ilustrada na Figura 19.

Figura 19: Comunicao tipo mestre escravo (polling) Considerando que a linha de transmisso suporta uma taxa razovel de transmisso de sinais digitais, uma leitura completa dos dados de uma rede composta por 31 pontos feita em cerca de um segundo, valor que pode ser considerado adequado para monitoramento de estruturas estticas. Obviamente, o estudo tcnico posterior deste sistema dever indicar quais as prprias limitaes com relao ao nmero de pontos (carregamento) e velocidade de operao (taxa de transmisso e trfego). Inmeras so as possibilidades, que inclusive poderiam ser selecionadas via software. Um dos principais esforos na realizao deste projeto foi a implementao de uma interface de comunicao convel entre unidade mestre e unidades de rede, bem como a implementao de um protocolo de alto nvel, baseado na adequao de protocolos existentes, de forma assegurar uma comunicao ecaz e imune a interferncias externas.

41

Existem muitos protocolos ecientes para tal tarefa, dentre eles podemos citar: Ethernet, Fieldbus Foundation, Probus, Devicenet, Canopen, Modbus, etc. Cada um desses foi originalmente desenvolvido por um determinado fabricante, que posteriormente abriu o protocolo em resposta exigncia do mercado por conectividade. Visando escolher o protocolo mais adequado para ser implementado neste projeto, foram consultados (SNOWDON, 2002), onde os principais protocolos so comparados quando ao meio fsico: CAN, RS-485, Ethernet, I2C 1-Wire. Tambm os protocolos de camada mais alta so comparados: DeviceNet, CANOpen e CanKingdom. Tambm (DOEBELIN, 2004), apresenta em seu livro um captulo que trata exclusivamente de redes de comunicao utilizadas para aquisio de sinais, considerando tanto as analgicas quanto as digitais. So apresentadas tambm as redes de campo bsicas. Outros trabalhos tambm contriburam para o entendimento das caractersticas dos protocolos e anlises comparativas. Dentre os trabalhos, podemos citar: (TRISTO, 2004), (BOARETTO, 2005) e (ROSSI,2005). Depois de uma pesquisa das caractersticas dos principais protocolos existentes, optou-se pela utilizao do protocolo MODBUS RTU, pelas seguintes razes: Determinstico; Permite monitorar at 247 pontos de rede; Padronizado; Protocolo aberto com fcil acesso documentao; No necessrio o pagamento de Royalties; Seguro e Convel; Adequado para tratar os tempos de comunicao entre elementos envolvidos; Largamente difundido e utilizado, principalmente em ambientes industriais; Fcil implementao em microcontroladores de baixo custo. Inclusive, poderia ter se desenvolvido um novo protocolo para tal operao. No entanto, a grande vantagem de se utilizar um protocolo padro largamente difundido a existncia no

42

mercado de acessrios que permitem a sua integrao e expanso. No caso do protocolo MODBUS, pode-se utiliz-lo juntamente com uma ampla gama de produtos disponveis comercialmente, tais como: softwares supervisrios, gateway Ethernet TCP/IP e inclusive wireless, j que existem equipamentos que fazem a converso de MODBUS RTU (RS485) para redes sem o.

4.4

ESCOLHA DO MEIO DE TRANSMISSO

Como j mencionado no captulo anterior, o protocolo MODBUS est na camada equivalente camada de aplicao (camada 7) do modelo OSI/ISO e no especica o meio de transmisso. Para o protocolo MODBUS dois principais meios poderiam ser utilizados: serial ou TCP/IP. Por facilidade de implementao e baixo custo do produto nal - objetivos fundamentais do projeto - foi escolhida a comunicao serial. Note-se que, trabalhos posteriores podero incluir o meio de transmisso via TCP/IP mudando apenas a pilha da camada fsica do protocolo ora implementado. O padro RS485 normalmente utilizado, por ser muito robusto em relao imunidade contra interferncias ( por ser baseado em modulao diferencial de sinais), boa velocidade de transmisso (at 12 MB/s), bom alcance (1200 metros em 9600 BPS). Pelas caractersticas apresentadas de desempenho - mais do que sucientes para esta aplicao - o meio fsico de transmisso escolhido foi o RS-485.

4.5

SERVIDOR DE COMUNICAES

Para uma melhor compreenso do princpio de funcionamento do servidor de comunicaes utilizado neste projeto, nas sees que se seguem sero apresentados detalhes da tecnologia OPC, a qual utilizada para troca de dados com o sistema de aquisio.

4.5.1

TECNOLOGIA OPC

Um dos grandes problemas de se interfacear equipamentos e sistemas no cho de fbrica reside em se compatibilizar os protocolos da camada de aplicao. Imagine a tarefa de interfacear um sistema supervisrio com um CLP h alguns anos atrs. Vamos supor que este supervisrio fosse o Elipse E3 e que o CLP fosse uma CPU da famlia 5 da Rockwell. O Elipse E3 era fornecido em vrias verses. O CLP 5 pode se comunicar com diversas redes diferen-

43

tes, por exemplo, com uma rede com protocolo DH+ (proprietrio da Rockwell). O PC pode utilizar cartes de comunicao Rockwell, Sutherland-Schultz ou outro. O nmero de combinaes muito grande. Na prtica, teria que se utilizar ou desenvolver um drive que atendesse perfeitamente combinao: Sistema SCADA (existem dezenas)/sistema operacional (vrias opes), carto de comunicao PC/CLP (vrias fontes e possibilidade de rede). Isto signicava a existncia de centenas de drives de comunicao, que s atendiam a verses especcas da combinao de fatores apresentada acima. Um arranjo tpico para esta soluo apresentado na Figura 20.

Figura 20: Arquitetura tradicional de comunicao utilizando drivers No caso da arquitetura tradicional, servidores ou equipamentos tm interfaces/drivers diferentes para cada aplicao cliente. (Cada seta representa um software de driver ou interface). Embora o protocolo de um equipamento ou servidor no possa mudar, as arquiteturas das aplicaes clientes (fornecida por diversos vendedores) so diferentes. Isto leva a um aumento de trabalho, custo e tempo. Se o protocolo do equipamento ou do servidor alterado ou atualizado, ento a aplicao cliente tambm necessita ser modicada. Fica evidente a diculdade encontrada na poca pelos prossionais do setor de automao: conhecer e ter acesso a dezenas de produtos de fornecedores diferentes, todos incompatveis entre si. Pela necessidade urgente de padronizao, foi criado o padro OPC (OLE for Process Control) que baseado no modelo de comunicao entre aplicativos criado pela Microsoft e denominado OLE (Object Linking and Embedding), que uma maneira eciente de se estabelecer interfaces para aplicaes em substituio s chamadas de procedimento e as DLL usadas inicialmente para encapsular uma aplicao. O projeto foi inicialmente liderado pela Microsoft e, posteriormente, foi criada uma organizao independente chamada de OPC Foundation, responsvel pelo desenvolvimento de uma plataforma especca para componentes de automao

44

de processos. Na pgina (da internet) da fundao podem ser encontradas as especicaes do protocolo OPC. Esta tecnologia hoje o padro de fato da indstria. O OPC elimina a situao apontada anteriormente, pois um fabricante de CLP sempre fornecer com o seu equipamento um servidor OPC. O fabricante de SCADA tambm fornecer o cliente OPC. O mesmo acontece com um fornecedor de inversores, de rels inteligentes ou de qualquer outro dispositivo de aquisio de dados ou atuador. A arquitetura de uma plataforma utilizando tecnologia OPC mostrada na Figura 21.

Figura 21: Comunicao utilizando tecnologia OPC O OPC otimiza a interface entre aplicaes cliente e servidor fornecendo um mecanismo padro para comunicar dados de uma fonte de dados para qualquer aplicao cliente. Em outras palavras, o OPC a ferramenta Plug and Play para IHM e Automao. Para tanto, faz uso de um protocolo universalmente aceito e conhecido para envio de dados entre as fontes de dados (Servidor) e as aplicaes (Clientes), eliminando o uso de drivers e conversores, geralmente proprietrios, que criavam uma dependncia entre o usurio e o fornecedor daquele sistema proprietrio muitas vezes custosa e ineciente. As aplicaes precisam apenas saber como buscar dados de um servidor OPC, ignorando a implementao do dispositivo e o servidor precisa fornecer dados em um formato nico: servidor OPC. A estrutura organizacional de um servidor OPC tpico pode ser observada nas Figuras 22 e 23. O servidor OPC fornece dados de tempo real proveniente de sensores (temperatura, presso, etc.), comandos de controle (abrir, fechar, ligar, desligar, etc.), status de comunicao, dados de performance e estatstica do sistema, etc. Cada transao pode ter de 1 a milhares de itens de dados, o que torna o protocolo muito eciente. O OPC no resolve o problema de nomes globais. Deve-se saber exatamente em que servidor uma dada varivel pode ser encontrada.

45

Figura 22: Mapeamento de Itens OPC

Figura 23: Estrutura organizacional de um servidor OPC contendo uma hierarquia de grupos e itens Entre suas funes principais ele permite aplicao cliente: Gerenciar grupos: Criar, clonar e deletar grupos de itens, renomear, ativar, desativar grupos. Incluir e remover itens em um grupo. Navegar pelas tags existentes (browser interface). Ver os atributos ou campos associado a cada tag. Denir a linguagem de comunicao (pas) a ser usada. Associar mensagens signicativas a cdigos de erro Obter o status de funcionamento do servidor Ser avisada, caso o servidor saia do ar. O grupo de dados constitui uma maneira conveniente da aplicao organizar os dados de que necessita. O grupo pode ser ativado ou desativado como um todo. Cada tela sintica, receita,

46

relatrio e outros, pode usar um ou mais grupos. A interface de grupo permite aplicao cliente: Adicionar e remover itens dos grupos. Denir a taxa de leitura do dado no grupo. Ler e escrever valores para um ou mais itens do grupo. Assinar dados do grupo por exceo. Cada item um objeto OPC que proporciona uma conexo com uma entrada fsica de dados. Cada item fornece ao cliente informao de: valor, time stamp, qualidade do dado e tipo de dado. As leituras de dados podem ser de trs tipos: leitura cclica onde uma unidade lida periodicamente (polling), leitura assncrona (o cliente avisado quando a leitura se completa) e por exceo (assinatura). As duas primeiras trabalham sobre listas (subconjuntos) de um grupo e o servio de assinatura envia aos clientes qualquer item no grupo que mudar de valor. Cada grupo de dados pode ter uma taxa de leitura especca.

4.5.2

MESTRE MODBUS E SERVIDOR OPC

Resumindo: a comunicao entre programas aplicativos de diferentes fabricantes cou muito facilitada com o surgimento do padro OPC e portanto, ao se utilizar um produto que segue este padro no mais necessrio conhecer como os dados so armazenados internamente nos produtos de cada fabricante, s necessrio saber como acess-los. Atualmente existem dezenas de fabricantes de servidores OPC, todos com qualidades equiparveis, j que devem ser certicados pelo rgo responsvel pela tecnologia (OPC Foundation). Assim, o critrio de escolha recai na facilidade de acesso ao produto e custo de aquisio. Para este projeto foi escolhido o servidor OPC KEPServerEx, fabricado pela KEPWARE, que funciona como uma unidade mestre MODBUS, responsvel por controlar a transferncia das informaes do sistema supervisrio para os terminais da rede e vice-versa. A idia utilizar um servidor de comunicaes Modbus para comunicar-se com os elementos da rede de sensores e que este servidor de comunicaes tambm seja um servidor OPC, possibilitando assim, trocar dados com outros aplicativos clientes OPC. Desta maneira, o tratamento dos dados pode ser feito, por exemplo, utilizando-se um dos produtos do pacote Ofce da Microsoft, tais como: Excel, Word ou Access.

47

Tambm na rea de pesquisa das engenharias muito comum a utilizao de softwares de simulao e captura de dados, tais como o Matlab/Simulink, LabView e DasyLab. Foi pesquisado a possibilidade de se desenvolver aplicaes clientes OPC com estes para coletar e tratar dos dados recebidos. Concluiu-se que todos estes podem ser utilizados, j que clientes OPC podem ser construdos a partir deles.

4.6

SOFTWARE DE AQUISIO E TRATAMENTO DOS DADOS

Na rea da engenharia de controle e automao industrial comum a utilizao de sistemas supervisrios para realizar a tarefa de aquisio e tratamento de dados. Este tipo de software possui capacidade grca para visualizao em tempo real dos dados capturados a partir dos elementos sensores. Quase todos os sistemas supervisrios modernos dispem de recursos para se comunicarem com servidores OPC. Portanto, qualquer um poderia ser utilizado, dependendo apenas da disponibilidade. Por facilidade de acesso do autor ao produto, optou-se neste trabalho pela utilizao do software supervisrio Elipse Scada, que funcionar como um cliente OPC. A gura 24 ilustra a arquitetura do sistema proposto.

Figura 24: Arquitetura sistema de aquisio de dados O princpio de funcionamento para a leitura dos ns da rede o seguinte: O servidor Modbus solicita periodicamente os valores de temperatura e de fator de deformao das unidades escravas conectadas na rede (polling) e armazena estas informaes no banco de dados do servidor OPC. Quando o supervisrio necessitar de qualquer informao de uma unidade escrava,

48

por exemplo, a temperatura do terminal 17, o sistema supervisrio solicita esta informao para o servidor OPC que vai devolver o valor da ltima leitura efetuada. Quando o supervisrio desejar enviar uma determinada informao para uma unidade escrava, vai envi-la para o servidor OPC que se encarregar de enviar a solicitao ao mestre Modbus. Este por sua vez, enviar a informao para a unidade escrava. Notar que a codicao e decodicao do bilhete no formato Modbus feita automaticamente pelo servidor de comunicaes. Assim, o supervisrio s precisa saber o nome da varivel que deseja acessar e no detalhes de como a informao obtida.

4.7

PLANEJAMENTO PARA FUTURA INTEGRAO

Visando uma reduo do tamanho do n da rede e reduo dos custos para a produo de um sistema de monitoramento estrutural como o proposto, pretende-se, em um momento posterior, fazer que os ns de rede sejam implentados em um nico circuito integrado. Assim, o front-end analgico ser objeto de investigao para futura integrao e assim contribuir para a reduo do tamanho fsico do n da rede. Um dispositivo dummy strain-gauge ser utilizado in loco para ns de calibrao e compensao trmica. Circuitos compensados termicamente baseados em referncias de tenso do tipo band-gap (ALLEN et al., 1990), realizveis em tecnologia CMOS convencional, sero utilizados para assegurar a estabilidade da operao do sistema. Amplicadores diferenciais de ganho programvel com alta taxa de rejeio de modo comum (CMRR) e a subseqente ltragem para restrio de banda e incremento da resoluo compem a etapa nal da interface analgica. Esta dever ser integrada atravs do programa MOSIS (MOSIS, s.d.) de fabricao de circuitos integrados, o qual esta universidade dispe de acesso (UEL-04379, s.d.). Aps a captura e condicionamento dos sinais analgicos, os mesmos so digitalizados, novamente condicionados para adequao dos nveis de tenso e transmitidos atravs da linha. Um microcontrolador sincronizado com a unidade mestre comanda a seqncia de envio dos dados capturados, bem como recebe ordens da unidade remota, como por exemplo, para realizar a calibrao do sistema. Assim, assegura-se uma maior conabilidade na leitura dos dados bem como a integridade da prpria transmisso da informao, pois a aquisio e condicionamento do sinal so realizados localmente e a informao digitalizada antes de ser transmitida. A integrao total dos dispositivos constituintes do n de rede ser considerada, para ns de estudos de viabilidade tcnica e comercial do produto. Neste caso, a digitalizao dos dados dever ser realizada por um conversor AD a ser projetado e as funes do microcontrolador realizadas atravs de mquinas de estado sncronas simplicadas. Obviamente, esta etapa nal

49

de integrao demandar estudos adicionais no previstos para o perodo vigente deste projeto, o que sugere uma continuidade para o mesmo.

4.8

CAPACIDADE PARA EXPANSO FUTURA

Posteriormente, partindo-se do suporte de hardware disponvel e do protocolo desenvolvido, outras variveis podero ser igualmente monitoradas, tais como umidade e corroso, bastandose adequar o sensor interface de rede. Outros dispositivos alm do extensmetro eltrico de resistncia, como sensores de vibrao ou deslocamento tambm podero ser igualmente conectados permitindo o monitoramento de outras variveis, desde que a taxa de aquisio no exceda a capacidade de transmisso do protocolo.

PROJETO, MONTAGEM E TESTES DO TERMINAL DE AQUISIO

Neste captulo so detalhadas as estruturas de hardware e software desenvolvidas para implementar a formulao proposta no Captulo INTRODUO. So mostrados os aspectos construtivos da soluo proposta bem como suas caractersticas tcnicas.

5.1

VISO GERAL DO TERMINAL DA REDE

Na Figura 25 ilustrado o modelo do terminal de rede implementado. Sua estrutura composta por um circuito de condicionamento de sinais, um sensor de temperatura, um conversor analgico para digital, um microcontrolador e uma interface de comunicao. Tambm faz parte de cada unidade, um sistema conversor de energia de Corrente Contnua (CC).

Figura 25: Diagrama em blocos do terminal de rede desenvolvido

51

5.2
5.2.1

CARACTERSTICAS DESEJADAS
ALIMENTAO

Todos os ns devem ser alimentados pelo mesmo cabo que faz a conexo de rede. Assim, o sistema recebe uma tenso de 12V e deve convert-la em 5V que sero utilizados pelo microcontrolador e pelos elementos de condicionamento de sinais.

5.2.2

COMUNICAO

Conforme j discutido anteriormente no Captulo Projeto Conceitual, a comunicao utilizar o barramento RS-485 multi-ponto padronizado. Sua topologia de conexo ser do tipo barramento comum.

5.2.3

MEMRIA

Devem existir elementos sucientes de armazenamento para as variveis temporrias ou de execuo, para implementao do ltro de mdia mvel e memria EEPROM para armazenamento dos valores de calibrao do sistema.

5.3
5.3.1

IMPLEMENTAO
ALIMENTAO

Para a alimentao do sistema, foi utilizada uma fonte de alimentao de microcomputador. Sua escolha se deu pelos seguintes motivos: Facilidade de Aquisio; Baixo custo; Boa capacidade de fornecimento de energia.

5.4

MICROCONTROLADOR

Todo o funcionamento do sistema comandado e supervisionado por um microcontrolador. Ele responsvel pela implementao das rotinas do protocolo de comunicao, controle dos

52

circuitos de transmisso e de recepo de sinais, digitalizao (converso analgico/digital), deteco de modo unvoco do endereo do terminal (programado atravs de micro-chaves), armazenamento dos dados de calibrao em memria permanente do tipo EEPROM. Entre diversas opes do mercado foi escolhido o microcontrolador PIC16F876 fabricado pela MICROCHIP. Suas principais caractersticas so: Desempenho de at 5 MIPS quando utilizados com cristal de freqncia de 20 MHz. Nos microcontroladores PIC o sinal do clock internamente dividido por quatro. Assim, ao se utilizar um cristal de 4 MHz, a freqncia do barramento interno ser de 1 MHz, ou seja, cada ciclo de mquina dura 1s. Os microcontroladores PIC executam uma instruo a cada 1s , exceto para as instrues de desvio que consomem dois ciclos de mquina. Portanto, utilizando-se um cristal oscilador externo de 4 MHz obtm-se um desempenho prximo de 1 MIPS, o que adequado para esta aplicao. 8 kWords de memria de programa 368 bytes de memria de dados tipo RAM (memria voltil). 192 bytes de memria de dados tipo EEPROM (memria no voltil) Portas de entrada e sada - um total de 18 I/Os (entradas e sadas) separadas em 4 grupos denominados de portas, codicadas de A,B,C e D. 1 temporizador/contador de 16 bits e 2 de 8 bits. 4 canais de conversores analgico-digitais de 10 bits 1 USART - ou Receptor/Transmissor Assncrono Universal. Este elemento constitui o corao da comunicao serial a ser implementada. Internamente implementado em hardware que utilizado tanto na comunicao da transmisso quanto na recepo. Sua principal funo converter bytes em um uxo de bits correspondente e vice-versa, acrescentando alguns pulsos de controle para permitir a deteco de incio e trmino de transmisso (modo assncrono) e tambm de erros, quando utilizando deteco de paridade.

5.5

QUESTES FUNDAMENTAIS SOBRE CIRCUITOS EM PONTE

Existem vrias consideraes a serem feitas quando se est lidando com pontes de baixo sinal. As mais importantes questes sero discutidas a seguir.

53

5.5.1

TENSO DE EXCITAO

Os extensmetros eltricos requerem uma tenso de excitao para gerar uma tenso que represente o esforo medido. Pode-se utilizar o mtodo de tenso constante, corrente constante ou, ainda, por alimentao alternada. Enquanto pouco utilizada atualmente, por muitos anos a excitao CA de pontes resistivas foi um meio efetivo de se remover desvios de corrente contnua devido aos componentes eletrnicos (MAXIM-DALLAS, 2004). Se o sinal fornecido ponte uma tenso alternada, a tenso de sada da ponte tambm ser um sinal alternado. Este sinal pode ser acoplado capacitivamente, amplicado e ter seu nvel deslocado e a amplitude do sinal CA nal obtido ser independente de qualquer tenso contnua de desvio devido aos componentes eletrnicos. A amplitude dos sinais alternados podem ento ser medidos utilizando-se tcnicas especcas para medio de tenses alternadas. No entanto, so extremamente sensveis a capacitncias parasitas, o que torna esse mtodo inadequado quando os extensmetros estiverem instalados longes do sistema condicionador de sinal, uma vez que as capacitncias provocadas pela ao so signicativas. Outra questo que desfavorece seu uso a necessidade de manter o sinal de excitao CA extremamente estvel em amplitude, sendo que a exatido das medidas est diretamente relacionada com esta estabilidade. Para se conseguir isto, normalmente so necessrios circuitos adicionais que tornam mais complexo o circuito condicionador. Estes circuitos so responsveis por manter constante a amplitude do sinal mesmo em variaes signicativas de temperatura (o que no trivial) e tambm com o passar do tempo. No entanto, alguns de seus conceitos que a tornam atrativas, so aproveitados neste trabalho (de forma adaptada). Para o presente projeto foi denida a utilizao de tenso constante para a excitao da ponte. Lembrando que as deformaes nos extensmetros so detectadas como uma variao na tenso de sada do circuito em ponte, percebe-se que a sensibilidade diretamente proporcional tenso de excitao. Pode parecer primeira vista que se aplicarmos uma tenso grande o suciente na ponte, poderia-se aumentar a sensibilidade das medidas. No entanto, a potncia limite para estes elementos est em torno de 25 mW . Devido essa limitao so utilizadas baixas tenses para alimentao da ponte (entre 5 V e 10 V ). Para este projeto a alimentao da ponte de Wheatstone foi xada em 5V. Esse valor foi escolhido por atender ao compromisso entre uma aceitvel relao sinal-rudo e uma corrente mxima limitada, que no cause excesso de dissipao de potncia no extensmetro, o que poderia causar o efeito indesejvel de aquec-lo. Como conseqncia disto, o sinal de sada muito tnue e necessrio a utilizao amplicadores para aumentar a amplitude deste, antes de convert-lo para o formato digital.

54

5.5.2

TENSO DE REFERNCIA

Uma questo com a ponte que a sada um sinal diferencial com um sinal em modo comum igual metade da tenso de alimentao. Freqentemente o nvel deste sinal diferencial deve ser deslocado e convertido para um sinal referenciado ao terra antes de ir para o conversor AD. A Equao 3.8 mostra que a sada da ponte diretamente proporcional tenso de alimentao. Desta maneira, o circuito deve manter constante a tenso na mesma proporo da exatido desejada, ou deve compensar as variaes na tenso de alimentao. A maneira mais simples de compensar as alteraes na tenso de alimentao derivar a referncia do conversor AD diretamente dos ramos de excitao da ponte. Na Figura 26 a tenso de referncia do conversor AD vem do divisor de tenso colocado em paralelo com a ponte. Isto faz com que as variaes na tenso de alimentao sejam rejeitadas porque a tenso de referncia do conversor AD vai se alterar junto com a sensibilidade da ponte.

Figura 26: A tenso de referncia proporcional a Ve, o que elimina os erros devido a variaes na alimentao (dessensibilizao da tenso da alimentao). Uma abordagem alternativa poderia utilizar um canal adicional no conversor AD para medir a tenso de excitao da ponte. Neste caso, as alteraes de tenso da ponte seriam compensadas por software. A Equao 5.1 mostra a tenso de sada corrigida (V oc), como uma funo da tenso de sada medida (V om), a tenso de excitao medida (V em), e a tenso de excitao quando foi feita a calibrao (V eo). V eo V em

V oc = V om

(5.1)

55

5.6

CIRCUITO CONDICIONADOR DE SINAL

Na prtica, a medida de deformaes raramente envolvem quantidades maiores do que alguns mili-strains (1 103 ). Por exemplo, suponha um corpo de prova submetido a um esforo que gera uma deformao de 500 . Utilizando-se um extensmetro de fator de sensibilidade igual a 2 vai exibir uma alterao na resistncia eltrica de apenas 2 500 106 = 1 103 = 0,1%. Para um extensmetro de 120 , isto signica uma alterao de apenas 0,12 . Assim, o sistema condicionador de sinal deve ser capaz de medir variaes muito pequenas nas resistncias. Desta forma, a seleo adequada e uso da ponte, condicionamento do sinal, ao e componentes da aquisio de dados devem ser considerados para medidas conveis. Vrios requisitos de condicionamento de sinais devem ser considerados, conforme descrito a seguir.

5.6.1

AMPLIFICAO

Os extensmetros eltricos fornecem tipicamente baixos nveis de sinais, da ordem de microvolts. Desta forma, importante que o sinal seja primeiramente amplicado, antes de ser digitalizado. O circuito mostrado na Figura 27, funciona como um amplicador de instrumentao.

Figura 27: Amplicador de Instrumentao utilizando 3 amplicadores operacionais A nalidade desta congurao obter uma alta impedncia de entrada (idealmente innita) e uma boa taxa de rejeio em modo comum (Commom Mode Rejection Ratio - CMRR). Devese salientar ainda que a melhor taxa de rejeio obtida quando o valor de R2 for igual ao de R3 (FRADEN, 2004). Para amplicar o sinal proveniente da ponte foi utilizado um amplicador operacional de baixo custo (LM324) na congurao de amplicador de instrumentao. Esta congurao formada pelos amplicadores operacionais IC4A a IC4C e o ganho desta primeira etapa

56

controlado pelo resistor R1. Observar que o amplicador operacional da etapa de sada funciona como um subtrator utilizando o amplicador operacional IC4D, ou seja, faz a diferena entre os sinais amplicados na etapa anterior. Circuitos subtratores permitem que se obtenha na sada uma tenso igual diferena entre os sinais aplicados, multiplicada por um ganho (SEDRA e SMITH, 2004). A sada de IC4D conectada diretamente porta analgica do microcontrolador. De acordo com Webster (1999), se R2 =R3 ; R4 =R5 e R6 =R7 , o ganho de tenso do amplicador pode ser calculado por : R2 +1 R1 R6 R5

Av =

(5.2)

onde Av o ganho de tenso do estgio. Reportando se Figura 28 e considerando a Equao 5.2, tem-se que o ganho do estgio de amplicao do circuito desenvolvido dado por: 100k +1 1k 100k 100k

Av =

= 201

Este valor foi escolhido devido sensibilidade tpica das clulas de carga que de 2 mV /V . Como o circuito alimentado por 5 Volts, isto signica que o valor mximo de variao do sinal coletado na ponte ser de 10 mV . Quando isso ocorrer, o valor de fundo de escala ser de 2,01 Volts. Como o valor da tenso de referncia xada em 2,1 V , teremos como limite superior de 4,12 Volts e inferior de 0,99 Volts - valores satisfatrios para esta aplicao.

5.7

LIGAO DOS EXTENSMETROS

Para a descrio das ligaes dos extensmetros nas diversas conguraes ser utilizado como referncia o diagrama eltrico (parcial) mostrado na Figura 28. Observa-se que para que seja possvel as trs conguraes referidas anteriormente (, e ponte completa) sero utilizados 3 resistores internos para completar os outros "braos" da ponte de Wheatstone. Para a utilizao da congurao em de ponte deve ser fornecido um resistor adicional para simular o outro extensmetro adjacente. Para tanto utilizado um resistor de 121 (R18) em paralelo com um outro de 12 k (resistncia equivalente de 119,79 ). O valor timo destes foi determinado experimentalmente. Um dos lados dessa associao de resistores ligada ao terra e o outro no pino 2 do conector de parafusos (veja as Figuras 29 e 28).

Figura 28: Diagrama eltrico (parcial) do circuito condicionador de sinal


57

58

Figura 29: Vista frontal esquemtica do conector de parafusos utilizado para as conexes dos extensmetros

Figura 30: Vista da implementao do conector de parafusos utilizado para as conexes dos extensmetros Para fornecer os outros dois braos da ponte so utilizados os resistores (R10 e R12) de 1k (lme metlico de 0,1% tolerncia). Estes devem ser utilizados para completar a ponte quando for utilizado somente um extensmetro ( de ponte) ou dois extensmetros ( ponte). Para a descrio das ligaes fsicas dos extensmetros nas diversas conguraes ser utilizado como referncia o diagrama mostrado na Figura 29. Na Figura 30 pode-se observar o mesmo conector na placa j implementada.

5.7.1

LIGAO EM 1/4 DE PONTE

Esta congurao pode ser observada na Figura 31.

59

Figura 31: Diagrama de ligao de 1/4 de ponte.

5.7.2

LIGAO EM 1/2 DE PONTE

Esta congurao pode ser observada na Figura 32.

Figura 32: Diagrama para ligao dos extensmetros em 1/2 ponte

5.7.3

LIGAO EM PONTE COMPLETA

Esta congurao pode ser observada na Figura 33.

60

Figura 33: Diagrama para ligao dos extensmetros em ponte completa

Exemplo de clula de carga Um exemplo comum de uma ponte resistiva uma clula de carga com quatro elementos ativos. Quatro extensmetros eltricos so organizados em uma congurao em ponte e xados a uma estrutura rgida que se deforma levemente quando uma fora aplicada. A sensibilidade para uma clula de carga tpica de 2mV /V . A partir da equao 3.9 podemos ver que isto equivalente a uma alterao da resistncia em toda faixa de atuao de apenas 0,2% (ou 2000 ppm). Demonstrao:
Vo Ve

R R

R = R

2mV /V = 0, 002 = 0, 2% = 2000 ppm.

Se a sada da clula deve ser medida com uma resoluo de 12 bits, ento alteraes na resistncia de 0,5 ppm devem ser precisamente medidas (2103 /212 = 4, 88107 0, 5ppm). =

Figura 34: Medio da tenso de sada de uma ponte ligada diretamente a um conversor AD (sem prvia amplicao do sinal). Medir estas alteraes utilizando uma ponte (alimentada por 5V) ligada diretamente a um

61

conversor AD (conforme mostrado na Figura 34), sem amplicao prvia do sinal, requer que este seja de pelo menos 21 bits de resoluo. Demonstrao: Se a tenso da ponte de 5 V e a sensibilidade da clula de carga de 2mV /V , ento a faixa de variao da tenso de sada de 10mV (5V 2mV /V ). Se a resoluo desejada de 12 bits, ento a tenso mnima a ser detectada de: 10mV = 2, 44V 212 Ento, ao se utilizar um conversor AD alimentado com 5 Volts este dever ter esta resoluo. Assim, 5V = 2, 44V x onde x a faixa de valores do conversor. Ento esta deve ser: 5 2, 44 106

x 2.048.000 O prximo passo determinar a resoluo em termos de bits. Lembrando que x uma potncia de um nmero binrio. Ento

2b 2.048.000 onde b o nmero de bits.

log(2b ) log(2.048.000)

log(2.048.000) log(2)

b 20, 96 Esta situao ilustrada na Figura 35.

62

Figura 35: Obteno de uma resoluo de 12 bits a partir de um conversor AD de 21 bits. Alm da necessidade de um conversor AD de alta resoluo, a tenso de referncia do conversor AD precisa ser ultra estvel. Ela no pode-se alterar mais do que 0,5 ppm em toda faixa da temperatura de operao. Os resistores da clula de carga variam no apenas com a tenso mecnica aplicada estrutura. A expanso trmica da estrutura em que ela est acoplada e o coeciente de variao trmica do extensmetro vo causar alteraes na resistncias. Estas alteraes indesejveis podem ser to grandes, at mesmo maiores, do que as alteraes provocadas pelo esforo mecnico. No entanto, se as alteraes indesejadas ocorrerem igualmente em todos os ramos da ponte de resistores seus efeitos podem ser desprezados porque as alteraes cancelam-se mutuamente. O valor de R pode dobrar que a tenso de sada permanecer a mesma, desde que R tambm tenha dobrado seu valor. O exemplo acima mostra como uma ponte pode tratar facilmente a medida de pequenas variaes em resistncia. As sees seguintes cobrem os principais questes quando utilizando circuitos em ponte.

5.8

CALIBRAO

Para a exatido dos valores necessria a calibrao dos ns da rede. Alguns destes procedimentos so feitos de forma manual enquanto outros so feitos automaticamente via software. A seguir so detalhados os principais procedimentos para calibrao.

5.8.1

AJUSTE DE ZERO DO SISTEMA

Dependendo do brao da ponte que foi desbalanceado, vai existir uma tenso resultante que pode assumir valores positivos ou negativos. Por sua vez, o microcontrolador no atua com sinais negativos, razo pela qual se faz necessria a instalao de um trimpot R15, que

63

promove na sada do IC4D um deslocamento no nvel de tenso do sinal (offset), de modo a atender os requisitos de tenso do microcontrolador. Este trimpot ajustado para se obter uma tenso de 2,100 V na sada do amplicador IC4D. Para se realizar este procedimento, deve ser comutada uma micro-chave que vai habilitar a execuo de uma rotina de software, cuja nalidade comandar a chave analgica para curto-circuitar a entrada do amplicador de instrumentao e armazenar em memria o valor ajustado e tambm a temperatura em que o sistema foi calibrado. Estes valores sero utilizados posteriormente para realizar a autocalibrao do sistema, removendo derivas devido temperatura ou com o passar do tempo.

5.8.2

AJUSTE DE ZERO DA PONTE

Os sistema deve ter uma posio de repouso (posio de referncia). Esta ser tomada quando os extensmetros estiverem em condio normal (sem aplicao de carga). Neste caso um potencimetro dever ser ajustado at que no haja sinal de sada da ponte, ou seja, dever ser medido 2,100 Volts nesta posio. Para este ajuste, foi inserido no circuito o trimpot (R16) que funciona adicionando ou removendo resistncia em um dos braos da ponte at obter a condio balanceada. Na verdade, o valor nulo citado no pargrafo anterior relativo ao valor de referncia de 2,100 Volts, ou seja, deve-se ajustar o trimpot at que se obtenha este valor. A Figura 36 mostra a posio do trimpot R16.

Figura 36: Localizao do trimpot de ajuste de zero da ponte

64

5.8.3

CANCELAMENTO DE DESVIOS PROVOCADOS PELA INSTRUMENTAO

De acordo com Kester (2003), alguma fonte de erro de offset inevitvel em um sistema. Desvios (offset) provindos da ponte ou do condicionador de sinais desvia o sinal desejado do seu nvel de referncia. Compensar estas variaes fcil durante a calibrao j que o sinal permanece dentro da faixa de trabalho do sistema. Se o sinal diferencial da ponte est sendo convertido para um outro sinal referenciado ao terra, o desvio da ponte e amplicadores pode facilmente criar um sinal que teoricamente abaixo do terra. Quando isto ocorre ele cria um ponto morto. A sada do conversor AD vai permanecer marcando zero at que a sada da ponte se torne positiva o suciente para superar todos os desvios negativos do sistema. Para evitar isto, um intencional desvio positivo deve ser previsto no circuito. Este desvio assegura que a sada vai estar na sua regio de trabalho, mesmo se a ponte e os componentes associados tiverem efeitos de desvios negativos. Um problema que surge com essa soluo a reduo da faixa dinmica de trabalho. O ajuste dos desvios pode ser feito atravs de potencimetros mecnicos, potencimetros digitais ou ainda atravs de software.

5.8.4

EFEITO TERMOELTRICO

O efeito termoeltrico pasasita vai existir quando diferentes tipos de materiais forem conectados, como por exemplo, os pinos dos circuitos integrados e as trilhas de cobre da placa de circuito impresso, e cujas temperaturas de ambas as junes estejam em valores diferentes. O valor da tenso gerada pode ser de dezenas de microvolts para uma variao de apenas 1 C. O diagrama da Figura 37 mostra uma juno tpica com efeito termopar formado entre as trilhas de cobre da placa de circuito impresso e os pinos de um circuito integrado amplicador. A tenso gerada por efeito termoeltrico ca em torno de 35 V /C. Considerando os baixos valores de tenso tratados pelos circuitos amplicadores, pode-se vericar que este efeito no desprezvel. 5.8.4.1 Desvio por deriva (offset Drift) do amplicador

Desvio por deriva (offset drift) e rudos so os maiores problemas associados aos circuitos utilizando pontes. Na clula de carga do exemplo acima, a sada em plena escala da ponte 2 mV /V e a resoluo desejada de 12 bits. Se a clula de carga alimentada com uma fonte de 5 V , ento o valor de nal de escala ser de 10 mV e a exatido da medida deve ser de 2,5 V ou melhor. Dizendo de outra forma, um desvio de apenas 2,5 V ir criar um

65

Figura 37: Efeito termoeltrico formado pelas trilhas de cobre e os pinos do circuito integrado, quando as junes esto submetidas a diferentes temperaturas. erro de 1 bit. Isto um grande desao para os amplicadores convencionais de alta qualidade. O Amplicador OP07, por exemplo, tem um desvio mximo por temperatura de 1,3 V /C e uma deriva mxima devido ao tempo de funcionamento de 1,5 V por ms. Para manter estes valores extremamente baixos de desvios por temperatura ou por tempo de funcionamento, algum tipo de ajuste necessrio. Isto pode ser feito via hardware, software, ou atravs de uma combinao de ambos. A tenso de offset e a corrente de polarizao so outra fonte de erro. Qualquer desbalanceamento na corrente de polarizao vai produzir erro de offset. Somando-se a isso, a tenso de offset e corrente de polarizao so uma funo da temperatura. Idealmente para a tarefa de condicionamento de sinal de ponte de Wheatstone, devem ser utilizados amplicadores de instrumentao de alto desempenho, baixo offset, baixa deriva trmica, baixa corrente de polarizao e baixo rudo.

5.8.5

EXCITAO POR TENSO ALTERNADA

A excitao de uma ponte por tenso alternada pode remover ecazmente a tenso de offset do circuito em srie com a ponte at o conversor analgico/digital. O conceito simples. A tenso de sada da ponte medida em duas condies diferentes, conforme ilustrado na Figura 38. Na primeira medida obtm-se o valor VA , onde este valor da sada da ponte somado com o erro de offset da rede EOS . A polaridade da tenso de excitao da ponte revertida e uma segunda medida VB tomada. Subtraindo VB de VA leva a 2VO , e o termo EOS que representa o erro de offset cancelado, conforme mostrado na Figura 38. No entanto, a inverso da polaridade da tenso de excitao da ponte requer componentes adicionais especialmente desenvolvidos para essa nalidade, que devem possuir baixas perdas

66

Figura 38: Princpio de funcionamento das pontes com alimentao CA visando o cancelamento do erro de offset. de comutao e baixo rudo. O autor tentou esta soluo inicialmente e no conseguiu acesso a estes componentes no mercado nacional.

5.8.6

SOLUO ADOTADA PARA A CORREO DO OFFSET

A soluo adotada foi a proposta por Kester (2003), que apresenta uma forma de correo dos desvios utilizando uma chave de dois plos, dois contatos (DPDT) entre a ponte e o conversor, conforme pode ser visto na Figura 39.

Figura 39: Circuito de correo de desvios por combinao de software e hardware. Utilizando-se um circuito multiplexador pode-se implementar um sistema de auto-calibrao utilizando uma combinao de hardware e software. Utilizando-se o mesmo conceito das pontes CA discutidas anteriormente, tem-se o seguinte princpio de funcionamento: uma leitura do conversor AD feita quando a chave est na posio (x = xo e y = y0) e subtrada de outra leitura feita quando est na posio (x = x1 e y = y1). O resultado 2 V o Ganho.

67

Antes dos sinais irem para o amplicador, foi inserido um circuito multiplexador, cuja nalidade funcionar como uma chave analgica. Na rotina de software so feitas duas medies. A primeira capturando os sinais normais (reporte-se Figura 28 para a descrio que segue). Isto feito colocando-se ambos os sinais de controle A e B em nvel lgico baixo. Nesta condio, as sadas x e y recebero o sinal das entradas xo e yo, respectivamente, que correspondem aos sinais normais. Uma segunda medio feita, agora com A em nvel lgico alto e B em nvel lgico baixo, as sadas x e y recebero os sinais yo e xo, respectivamente, que correspondem aos sinais invertidos. Observe que a tenso de entrada (vin ) vai aparecer a cada medida em uma das entradas do amplicador de instrumentao com a polaridade trocada. Assim na primeira leitura teremos: V1 = vin + vos , enquanto que na segunda leitura teremos V2 = vin + vos . Se estas duas amostras so subtradas, obtm se:

V o = V1 V2 V o = (vin + vos ) (vin + vos ) = 2vin (5.3)

Conforme pode ser observado na Equao 5.3, o valor obtido com esse procedimento igual a 2vin . Se dividirmos este valor por dois, obtm-se o sinal original. O resultado um valor livre da tenso de offset provocada por efeitos termoeltricos ou de outra natureza. Assim, os problemas com desvios so simplesmente eliminados. Esta tcnica tambm melhora a relao sinal rudo por um fator de 2. A gura 39 ilustra o princpio de funcionamento deste estgio. Existe uma rotina de software que contnua e periodicamente amostra a entrada e se autoajusta para manter uma diferena mnima entre os pinos de entrada. Como este ajuste contnuo, desvios com o tempo ou com a temperatura torna-se uma funo do circuito de correo.

5.8.7

SOLUO ADOTADA PARA CORREO DE DRIFTS

Na Figura 28, o multiplexador IC5 funciona como uma chave analgica e utilizado para desconectar a sada da ponte do amplicador ao mesmo tempo que curto-circuita as entradas deste. Deixando o outro lado da ponte conectado entrada do amplicador, a tenso de entrada em modo comum mantida, eliminado desta maneira qualquer erro que possa ser causado em funo do erro por tenso em modo comum. Curto-circuitando-se as entradas do amplicador permite que uma medida do desvio de tenso (offset) seja feita. Esta leitura ento subtrada

68

das leituras normais subseqentes para remover o desvio. No entanto, ele no remove o desvio da ponte em si, mas apenas o dos componentes eletrnicos entre a ponte e o conversor AD. A sada da ponte medida em um determinado estado, sem carga, por exemplo. Ento uma carga aplicada clula e outra medida feita. A diferena entre estas duas medidas devido apenas ao estmulo aplicado. Tomando-se a diferena entre as leituras remove-se no somente os desvios internos devido aos componentes, mas tambm o desvio da prpria ponte.

5.8.8

VALOR DE REFERNCIA DE CALIBRAO

Valor de referncia de calibrao (shunt) uma maneira prtica de se certicar que o sistema est operando corretamente. Quando a resistncia de calibrao habilitada, uma resistncia adicionada ou removida de um dos braos da ponte. Isto tem o efeito equivalente a uma deexo forada do extensmetro, j que ir alterar a sua resistncia. Conhecendo-se o valor da resistncia introduzida, pode-se calcular a tenso de sada esperada. Atravs da leitura, pode-se comparar o valor esperado e o real e vericar se esto em conformidade. Embora os valores de calibrao possam ser armazenados em memria permanente do tipo EEPROM, deve-se considerar que estes so muito sensveis as condies ambientais do momento da calibrao, e portanto, o reaproveitamento desse valores encontra limitaes de praticidade.

5.8.9
5.8.9.1

FILTRAGEM
Filtro analgico

Com a nalidade de ltrar as freqncias altas, foram adicionados capacitores de 100 nF em paralelo com os resistores de realimentao dos amplicadores operacionais IC4A e IC4B, cuja a freqncia de corte dada por: fc =
1 2RC

Com os valores dos componentes utilizados, esta de 15,9 Hertz. 5.8.9.2 Filtro digital

De acordo com Smith (2007) o ltro de mdia mvel o tipo mais comum implementado em processadores digitais de sinais. Uma das principais razes sua facilidade de implementao e de uso. No entanto, apesar de sua simplicidade este tipo de ltro o mais indicado

69

para remoo de rudos aleatrios, devendo ser a tcnica de primeira escolha para ltragem no domnio do tempo. Em termos de equao, pode ser escrito como:
N 1

1 y[i] = N

x(i k)
k=0

onde y[] o sinal de sada, x[] o sinal de entrada e N o nmero de pontos discretos da janela. Quanto maior a janela, maior ser a relao sinal/rudo, j que pode-se demonstrar que este melhorado por um fator equivalente a N . Por exemplo, se forem utilizados 25 pontos para a janela do ltro, o rudo vai ser reduzido por um fator de 5. A Figura 40 ilustra a resposta do ltro de mdia mvel com janela de 11 pontos, para o processamento de um sinal de entrada contaminado com rudo aleatrio.

Figura 40: Resposta de sada de um ltro digital de mdia mvel contendo 11 pontos em reposta a um pulso retangular de entrada contaminado com rudo aleatrio (SMITH, 2007). Para o presente projeto, foi implementada uma rotina de ltro de mdia mvel conforme pode ser visto na listagem que se segue. Para tanto foi utilizado um buffer circular de 32 posies. Embora tenham sido reservadas 32 posies, o tamanho da janela parametrizvel. Por questes de velocidade de processamento, recomendvel que o tamanho da janela seja uma potncia de dois, ou seja, 2, 4, 8, 16 ou 32. Isto porque os compiladores utilizam, de forma muito eciente, a funo de deslocamento de bits para a direita (shift bit right) para fazer as divises. 5.8.9.3
{ ucWindow_Size = (UCHAR) gusRegHolding[NUMERO_PONTOS_JANELA_MEDIA_MOVEL]; ACC = num_amostras = pos_amostra_atual = 0;

Listagem da rotina de mdia mvel

if (ucWindow_Size != gusRegHolding[NUMERO_PONTOS_JANELA_MEDIA_MOVEL])

70

} if ( (ucWindow_Size < 1) || (ucWindow_Size > 32) ) { gusRegHolding[NUMERO_PONTOS_JANELA_MEDIA_MOVEL] = ucWindow_Size = 8; } /************************************************/ if (LENDO_RECALIBRACAO) { acc_cal += ustemp; LENDO_RECALIBRACAO=FALSE; LENDO_TEMPERATURA=TRUE; FIRST_READING=TRUE; Le_ADC(); } else if (LENDO_TEMPERATURA) // trata o canal temperature { acc_temp += ustemp; LENDO_TEMPERATURA=FALSE; } else { if ( ucWindow_Size == 1) // no est utilizando filtro mdia mvel { gusRegInputRegister[REG_INPUT_STRAIN_VALUE] = ustemp; } else { if (num_amostras < ucWindow_Size) { num_amostras++; } else { ACC -= } gusRegInputRegister[pos_amostra_atual+OFFSET_SAMPLE] = ustemp ; // duas leituras, uma s amostra ACC += ustemp; // soma a amostra atual gusRegInputRegister[REG_INPUT_STRAIN_VALUE] = ACC/num_amostras; if (SISTEMA_CALIBRADO && gusRegHolding[RECALIBRATION_ENABLED]) { gusRegInputRegister[REG_INPUT_STRAIN_VALUE] += diferenca_offset; } if (++pos_amostra_atual == ucWindow_Size) pos_amostra_atual = 0; } if (gusRegHolding[RECALIBRATION_ENABLED]) { if (RECALIBRANDO) { LENDO_RECALIBRACAO=TRUE; // AGORA VAI LER A recalibrao FIRST_READING=TRUE; Le_ADC(); } cont_aux_temp++; if (cont_aux_temp == 250) { cont_aux_temp = 0; acc_cal=0; acc_temp=0; RECALIBRANDO=TRUE; } else if (cont_aux_temp == 8) // 8 AMOSTRAS { if (SISTEMA_CALIBRADO) { offset_atual = (acc_cal >> 3); diferenca_offset = (signed int16) (gusRegHolding[VALOR_REFERENCIA_CALIBRACAO] - offset_atual); gusRegInputRegister[REG_OFFSET_DIF] = diferenca_offset; gusRegInputRegister[pos_amostra_atual+OFFSET_SAMPLE]; // elimina amostra mais antiga // est utilizando filtro mdia mvel // trata o canal strain

71

} temperatura_atual= (acc_temp >> 3); gusRegInputRegister[REG_INPUT_TEMPERATURE_VALUE] = temperatura_atual ; RECALIBRANDO=FALSE; } } else cont_aux_temp = 0; }

5.9

MEDIO DA TEMPERATURA

Como mostrado no Captulo FUNDAMENTAO TERICA, os extensmetros so bastante sensveis a variaes de temperatura, especialmente quando ligados na congurao de de ponte. Visando compensar estes efeitos (atravs de software), foi instalado um sensor de temperatura ambiente na placa de circuito impresso do terminal de aquisio. A temperatura ambiente comparada com a de calibrao e, em caso de desvio, um fator aplicado visando compensar o efeito dessa variao. Tabela 2: Desempenho de sensores de temperatura Tipo do Sensor Termistor RTD LM35 Linearidade Faixa pobre -80 a +150C boa -260 a +850C tima 0 a +100C Fonte: (LEONG, 2001) Sensibilidade tima pobre boa

Para se medir temperatura, vrias opes podem ser consideradas. Um dos elementos mais comuns utilizados so os termistores tipo NTC (negative temperature coefcient). Outro componente bastante utilizado o elemento RTD (Resistance Temperature Detector) que na verdade um termistor PTC (Positive Temperature Coefcient). Por exemplo, o PT100 um termistor de resistncia igual a 100 na temperatura de 0 C. Uma grande desvantagem da utilizao de termistores a necessidade de circuitos adicionais, tais como fornecimento de uma fonte de corrente constante insensveis a variaes de temperatura e amplicadores de instrumentao de baixo rudo e tambm baixa deriva trmica para condicionamento do sinal. Isto logicamente torna o sistema mais complexo e, portanto, mais dispendioso. Outra opo a utilizao de circuitos integrados especialmente projetados para medio de temperatura, como por exemplo, os tipos LM 335 e LM35 fabricados pela National Semiconductor e o tipo AD592 da Analog Devices. A seleo foi feita baseada nos seguintes parmetros: Linearidade

72

Faixa de operao Sensibilidade Facilidade de Implementao Custo Facilidade de Aquisio Um comparativo de desempenho de algumas caractersticas destes pode ser visto na Tabela 2. Por razes de custo, simplicidade de implementao, tima linearidade e faixa de operao compatvel, optou-se pelo sensor LM35, o qual ser descrito brevemente a seguir.

5.9.1

SENSOR DE TEMPERATURA

O sensor de temperatura LM35 um dispositivo de 3 terminais que fornece uma tenso de sada diretamente proporcional a temperatura. A tenso de sada de 10 mV/C, referenciado a partir de 0 C. Por exemplo, se a temperatura for de 30 C a sada ser de 300 mV. A exatido do dispositivo de 0,5 C para a faixa de 0 a 70 C. O LM35 pode ser alimentado com uma tenso que pode variar entre 5 Volts e 30 Volts. Este componente pode ser encontrado em diversos encapsulamentos, incluindo o tipo plstico TO-92 o qual foi utilizado neste projeto. A pinagem do LM35 vista na gura 41.

Figura 41: Encapsulamento do sensor de temperatura LM35 (TO-92) O microcontrolador PIC16F876 possui um conversor AD de 10 bits conectado a um multiplexador analgico interno que permite que cada pino da porta A seja utilizada como entrada analgica (desde que congurado para tal). Para a faixa de valores de 0 a 5 Volts, o conversor de 10 bits fornece uma resoluo de 5 mV (5V/1023) que compatvel com a preciso do LM35 (0,5 C = 5 mV). A funo para leitura da temperatura mostrado na listagem a seguir:

73

double getTemperature(int adcValue) { //10 bit adc return (adcValue/1023)*5; // clculo da Temperatura }

5.9.2

INTERFACE DE CONTROLE DE CALIBRAO E DE ENDEREAMENTO


Endereamento

5.9.2.1

O circuito do terminal possui tambm chaves para a seleo de endereo do mdulo para identicao do mesmo pela unidade mestre. O endereamento feito atravs de SW1, que um conjunto de microchaves (dip-switch) de 8 posies, permitindo enderear teoricamente at 256 endereos diferentes. No caso especco do MODBUS so utilizados, no mximo, 247 destes endereos. A Figura 42 ilustra como foi implementado eletricamente, enquanto que a Figura 43 mostra a sua localizao fsica na placa de circuito impresso.

Figura 42: Esquema eltrico da parte referente programao do endereo do terminal

74

Para interfacear a chave DIP com o microcontrolador foi utilizado um conversor paralelo/serial tipo 74HC165 (IC3). Sua utilizao se fez necessria devido a limitaes no nmero de pinos do microcontrolador. A aquisio do contedo das chaves feita ao se inicializar o sistema, via protocolo SPI. Este foi utilizado porque tambm pode ler e escrever em outros componentes do sistema, tais como o conversor serial para paralelo 74HC195 (IC6) e tambm para se comunicar com um conversor analgico/digital externo de maior resoluo, ou seja, o sistema j est preparado para futuros aperfeioamentos, sendo que a incluso de um conversor A/D de maior resoluo, externo ao microcontrolador, naturalmente, a primeira coisa a ser feita em caso de continuidade do projeto. A implementao foi feita atravs do seguinte trecho de cdigo:
var_input = spi_le_byte(); // l DIP SWITCH gucThisStationAddress = (var_input & 31); if (gucThisStationAddress == 0) gucThisStationAddress = 31; //comea com 31

Como pode ser observado, nesta implementao o nmero de ns foi limitado em 31 unidades. Isto devido ao circuito integrado utilizado para a comunicao RS485 que permite no mximo 32 unidades. Caso seja necessrio implementar uma rede maior, deve-se trocar o CI de comunicao. Existem hoje no mercado circuitos integrados que podem se comunicar com at 256 unidades simultaneamente.

Figura 43: Localizao da microchaves de endereamento na Placa de Circuito Impresso Para o sistema implementado, a velocidade selecionada foi de 9600 BPS, 8 BITS e SEM PARIDADE (Valor padro do Modbus-RTU).

75

Existe tambm um pino no transmissor que utilizado para a sua habilitao, o qual controlado pelo microcontrolador, no momento em que se faz necessria a transmisso de dados. Dessa forma, a transmisso no acontece de forma permanente, mas somente no momento em que for acionada pelo microcontrolador, reduzindo consumo de energia a aumentando a conabilidade. O trecho de cdigo a seguir ilustra como feito esse controle.
# d e f i n e HABILITA_TX d i s a b l e _ i n t e r r u p t s ( INT_RDA ) ; o u t p u t _ h i g h ( PIN_B0 ) ; # d e f i n e HABILITA_RX o u t p u t _ l o w ( PIN_B0 ) ; e n a b l e _ i n t e r r u p t s ( INT_RDA ) ;

Observar que a macro criada possibilita o envio de HABILITA_TX quando se desejar transmitir e HABILITA_RX quando se desejar voltar ao estado padro, que corresponde ao de car monitorando o meio de transmisso.

5.10

PROTOCOLO MODBUS

Esta seo tem a nalidade de descrever: 1. O protocolo Modbus Padro. 2. Como um dispositivo solicita o acesso a outro dispositivo. 3. Como este responder. 4. Como os erros sero detectados e informados. 5. Os comandos necessrios a este projeto. Maiores informaes podem ser obtidas em (MODBUS-IDA, 2007a), (MODBUS-IDA, 2007b) e ( MODICON, 2007).

5.10.1

DESCRIO

O protocolo Modbus foi desenvolvido em 1979 pela Modicon Industrial Automation Systems, hoje Schneider Electric, para comunicar um dispositivo mestre com outros dispositivos escravos (SEIXAS FILHO, 2006). um protocolo de especicao aberta desde o princpio. Este talvez o protocolo de mais larga utilizao em automao industrial, pela sua simplicidade e facilidade de implementao. Estas caractersticas zeram-no se tornar um padro amplamente utilizado, adotado por vrios fornecedores, sendo aplicado aos mais diversos nveis de aplicaes, inclusive sistemas de superviso.

76

Foi criada uma associao, Modbus-IDA, com ns no lucrativos agrupando usurios e fornecedores de dispositivos de automao que visam a adoo do pacote de protocolos Modbus e a evoluo da arquitetura de endereamento para sistemas de automao distribudos em vrios segmentos de mercado. Modbus-IDA fornece a infra estrutura para obter e compartilhar informao sobre os protocolos, suas aplicaes e a certicao de dispositivos visando simplicar a implementao pelos usurios.

5.10.2

Modelo de Comunicao

O protocolo Modbus baseado em um modelo de comunicao mestre-escravo, onde um nico dispositivo, o mestre, pode iniciar transaes. O demais dispositivos da rede (escravos) respondem, suprindo os dados requisitados pelo mestre ou executando uma ao por ele comandada. Os papis de mestre e escravo so xos, quando se utiliza comunicao serial, mas em outros tipos de rede, um dispositivo pode assumir ambos os papis, embora no simultaneamente.

5.10.3

Transaes entre dispositivos

As mensagens de consulta e de resposta tambm so chamadas de bilhetes. Na mensagem de consulta, o cdigo de funo informa ao dispositivo escravo com o respectivo endereo, qual a ao a ser executada. Os bytes de dados contm informaes como qual o registrador inicial e a quantidade de registros a serem lidos. O campo de vericao de erro permite ao escravo validar os dados recebidos. A Figura 44 ilustra uma transao tpica.

Figura 44: Esquema de Troca de Mensagens entre Mestre e Escravo no protocolo MODBUS Na mensagem de resposta, o cdigo de funo repetido de volta para o mestre. Os bytes de dados contm os dados coletados pelo escravo ou um cdigo informando um possvel erro ocorrido. Se um erro ocorre, o cdigo de funo modicado para indicar que a resposta de erro e os bytes de dados contm um cdigo que descrever o erro. A vericao de erro permite

77

ao mestre validar os dados recebidos. Durante a comunicao em uma rede Modbus, o protocolo determina como o dispositivo conhecer seu endereo, como reconhecer uma mensagem endereada para ele, como determinar o tipo de ao a ser tomada e como extrair o dado ou outra informao qualquer contida na mensagem. Se uma resposta necessria, como o dispositivo construir uma mensagem e a enviar. O mestre pode enderear mensagens para um escravo em particular ou enviar mensagens para todos (broadcast). Os escravos retornam uma mensagem somente para as consultas endereadas especicamente a ele. As mensagens broadcast no geram respostas.

5.10.4

Modbus e o Modelo OSI

O protocolo de comunicao de uma rede um conjunto de regras e convenes de linguagem que permite a conversao e troca de informao entre sistemas (TANEMBAUM, 1997). Os protocolos, atualmente adotados em redes industriais, so baseados em documento desenvolvido pela ISO (International Standards Organization). Esse documento, denominado OSI (Open System Interconnection) um modelo de referncia para o desenvolvimento de protocolos de comunicao. A estrutura do modelo de redes OSI baseada em sete camadas. Softwares desenvolvidos com base nesse modelo so ditos abertos, pois qualquer fabricante de equipamentos pode us-los para desenvolvimento de produtos para serem empregados em rede. O protocolo MODBUS pode ser enquadrado na camada 7 (Camada de Aplicao) do modelo OSI. A Figura 45 mostra a localizao do protocolo Modbus em relao as camadas do modelo OSI.

Figura 45: Localizao do protocolo MODBUS em correspondncia ao modelo OSI/ISO. Algumas caractersticas do protocolo Modbus so xas, como o formato da mensagem, funes disponveis e tratamento de erros de comunicao. Outras caractersticas so selecio-

78

nveis como o meio de transmisso, velocidade, timeout, bits de parada e paridade e o modo de transmisso (RTU os ASCII). A seleo do modo de transmisso dene como os dados sero codicados. Dene tambm uma estrutura de mensagens de comunicao usadas para transferir dados discretos e analgicos entre dispositivos microprocessados com deteco e informao sobre possveis erros ocorridos durante a transmisso. 5.10.4.1 Topologia Fsica

Referindo-se, ainda, Figura 45, pode-se observar que a camada 1 contm o meio fsico de transmisso (cabos condutores, bra ptica ou atmosfera) e a interface de rede, que converte a grandeza fsica em valor digital. Observar que, para o caso do protocolo Modbus, sua camada fsica de transporte pode ser as mais diversas, embora seja utilizada normalmente sobre conexes seriais padro RS-232/RS485. Tambm pode ser utilizado o TCP/IP sobre Ethernet, conhecido como MODBUS TCP/IP. Por sua vez, as conexes seriais podem ser: Ponto a Ponto com RS-232. Barramento Mutiponto com RS-485. 5.10.4.2 Modos de Transmisso

Existem dois modos de transmisso: 1. ASCII (American Code for Information Interchange) e 2. RTU (Remote Terminal Unit). Que so selecionados durante a congurao dos parmetros de comunicao. Nos protocolos MODBUS Plus e TCP/IP as mensagens so colocadas em quadros (frames), no sendo necessria a denio do modo de transmisso, usando sempre o modo RTU. O modo RTU tambm chamado de Modbus-B ou Modbus Binrio e o modo preferencial sugerido pela norma. 5.10.4.3 Composio do bilhete MODBUS-ASCII

A composio de um bilhete MODBUS-ASCII mostrada na Figura 46.

79

Incio :

Endereo 2 caracteres

Funo 2 caracteres

Dados N caracteres

LRC 2 Caracteres

Trmino CR LF

Figura 46: Composio de um bilhete (mensagem) do protocolo MODBUS-ASCII Cada byte da mensagem (bilhete) enviado como dois caracteres ASCII. Durante a transmisso, intervalos de at um segundo entre caracteres so permitidos, sem que a mensagem seja truncada. Algumas implementaes fazem uso de tais intervalos de silncio como delimitadores de m de mensagem, em substituio seqncia CR (Carriage Return) + LF (Line Feed). Cada byte contm um caractere ASCII entre 0 e 9, A a F. Para a vericao de erros so utilizados os bytes LRC (Longitudinal Redundancy Check) Denio do incio e m da mensagem ASCII: Inicia com o caractere : e termina com os caracteres CR seguido de LF . 10 bits por byte 1 start bit 7 bits de dados LSB enviado primeiro 1 bit de paridade (par/mpar) 1 stop bit 0 bit de paridade 2 stop bits 5.10.4.4 RTU

A mensagem deve ser transmitida de maneira contnua, j que pausas maiores que 3,5 caracteres indicam o trmino da transmisso. Os bytes so transmitidos em dgitos hexadecimais. Para a vericao de erros so utilizados os bytes do CRC (Cyclic Redundance Check) Denio do incio e m da mensagem Tempos de silncio de 3,5 caracteres. 11 bits por byte , sendo: 1 start bit

80

8 bits de dados LSb enviado primeiro 1 bit de paridade (par/mpar) 1 stop bit 0 bit de paridade 2 stop bits Como a comunicao a ser utilizada neste trabalho em modo RTU, vamos nos concentrar nesta forma de comunicao. 5.10.4.5 Composio do bilhete MODBUS-RTU

A composio de um bilhete MODBUS-RTU mostrada na Figura 47. Incio Silncio > 3,5 caractere Endereo 8 bits Funo 8 bits Dados n 8 bits CRC 16 bits Trmino Silncio > 3,5 caractere

Figura 47: Composio de um bilhete (mensagem) do protocolo MODBUS-RTU onde: Endereamento (1 byte) 0 : Usado para broadcast. 1 a 247 : Usados pelos escravos. A faixa de endereos vlidos vai de 0 a 247 (0x00 a 0xF7 hexadecimal), sendo que os dispositivos recebem endereos de um a 247. O endereo zero reservado para broadcast, ou seja, mensagens com esse valor de endereo so reconhecidas por todos os elementos da rede. Quando o mestre envia uma mensagem para os escravos, este campo contm o endereo do escravo. Quando o escravo responde, coloca seu prprio endereo neste campo. Cdigo da Funo (1 byte) Estabelece a ao a ser efetuada. 0 a 127 : Funes 128 a 255 : Informe de erro na transmisso.

81

Varia de 1 a 255 (0x01 a 0xFF), mas apenas a faixa de um a 127 (0x01 a 0x7F) utilizada, j que o bit mais signicativo reservado para indicar respostas de exceo. Normalmente, uma resposta inclui o cdigo de funo da requisio que lhe deu origem. No entanto, em caso de falha, o bit mais signicativo do cdigo ativado para indicar que o contedo do campo de dados no a resposta esperada, mas sim um cdigo de diagnstico. Bytes de Dados Informao adicionais necessrias. Endereos de memria Tamanho e contedo do campo de dados variam com a funo e o papel da mensagem, requisio ou resposta, podendo mesmo ser um campo vazio. Quantidade de itens transmitidos Quantidade de bytes do campo Vericao de Erros (2 bytes) CRC. 5.10.4.6 Deteco de Erros

H dois mecanismos para deteco de erros no protocolo Modbus serial: bits de paridade em cada caractere e o frame check sequence ao nal da mensagem. A vericao de paridade opcional em ambos os modos de transmisso, ASCII e RTU. Um bit extra adicionado a cada caractere de modo que ele contenha um nmero par ou mpar de bits ativos, caso sejam adotadas paridade par ou mpar respectivamente. A principal desvantagem desse mtodo sua incapacidade de detectar nmeros pares de inverses de bit. Caso no seja utilizado, o bit de paridade substitudo por um stop bit adicional. As Figuras 48 e 49 mostram os formatos dos bilhetes com paridade e sem paridade, respectivamente. O modo RTU utiliza como vericador de erro um valor 16 bits, o CRC, utilizando como polinmio, P (x) = x16 + x15 + . . . + x2 + 1. O registro de clculo do CRC deve ser inicializado com o valor 0xFFFF. MODBUS RTU, 8 BITS, C/ PARIDADE, 1 STOP BIT START 1 2 3 4 5 6 7 8 PAR STOP Figura 48: Formato de transmisso serial de 1 byte do MODBUS-RTU com paridade Observaes:

82

MODBUS RTU, 8 BITS, S/ PARIDADE, 2 STOP BIT START 1 2 3 4 5 6 7 8 STOP STOP Figura 49: Formato de transmisso serial de 1 byte do MODBUS-RTU sem paridade A vericao de erro efetuada opcionalmente pela paridade de cada byte transmitido e obrigatoriamente pelo mtodo CRC sobre toda a mensagem. O modo ASCII permite intervalos de tempo de at um segundo entre os caracteres sem provocar erros, mas sua mensagem tpica tem um tamanho duas vezes maior que a mensagem equivalente usando o modo RTU. O modo RTU transmite a informao com um menor nmero de bits, mas a mensagem deve ter todos os seus caracteres enviados em uma seqncia contnua. O dispositivo mestre espera uma resposta por um determinado tempo antes de abortar uma transao (timeout). O tempo deve ser longo o suciente para permitir a resposta de qualquer escravo. Se ocorre um erro de transmisso, o escravo no construir a resposta para o mestre. Ser detectado um timeout e o mestre tomar as providncias programadas.

5.10.5

MAPEAMENTO DE MEMRIA

Todo dispositivo em uma rede Modbus deve ter a sua memria dividida em registradores de 16 bits numerados conforme o modelo apresentado na Tabela 3. Tabela 3: Mapeamento das funes e memria do protocolo MODBUS Endereo registrador Dispositivo Funo Leitura Funo Escrita 0xxxx Solenides Sadas Discretas 1 5 ou 15 1xxxx Entradas Digitais 2 3xxxx Entradas Analgicas 4 4xxxx Memria Registradores 3 6 ou 16 A diviso baseada na estrutura de memria do dispositivo: Sadas discretas para os atuadores ON-OFF utilizam um bit. Cada registrador comporta 16 sadas. Entradas discretas para os sensores ON-OFF utilizam um bit. Cada registrador comporta 16 entradas.

83

Entradas analgicas utilizam registradores de 16 bits para os valores obtidos por conversores A/D a partir dos sinais dos sensores analgicos. Registradores de Memria com 16 bits para os valores utilizados internamente no dispositivo. Para o projeto aqui desenvolvido, as funes MODBUS correspondentes podem ser acessadas pelos endereos mostrados nas Tabelas 4 e 5. Tabela 4: Mapeamento de Memria do terminal de rede (3xxxxx = Input Registers) Endereo 300001 300002 300003 300004 300005 300006...300038 Funo REG_INPUT_STRAIN_VALUE REG_INPUT_TEMPERATURE_VALUE REG_OFFSET_DIF reservado OFFSET_SAMPLE AMOSTRA_MEDIA_MOVEL[32]

Tabela 5: Mapeamento de memria do terminal de rede (4xxxxx = Holding Registers) Endereo 400001 400002 400003 400004 400005 400006 400007 400008 400009 400010 400011 400012 Funo VALOR_REFERENCIA_CALIBRACAO VALOR_OFFSET_REFERENCIA_MAXIMO VALOR_TEMPERATURA_CALIBRACAO_SISTEMA VALOR_TEMPERATURA_CALIBRACAO_PONTE VALOR_TEMPERATURA_CALIBRACAO_SHUNT VALOR_SHUNT_CALIBRACAO NUMERO_PONTOS_JANELA_MEDIA_MOVEL REVERSE_READING_ENABLED RECALIBRATION_ENABLED VALOR EXTENSMETRO (120,350) FATOR DO EXTENSMETRO (GAGE-FACTOR) TIPO LIGAO (1/4, 2/4 ou 4/4)

A identicao dos comandos (funes) de leitura e escrita so diferentes de acordo com o tipo de dado a ser lido ou escrito. 5.10.5.1 Funo 0x01 - Read Coil Status

Finalidade: Efetua a leitura do estado das sadas discretas. Formato da Requisio:

84

Endereo do dispositivo...1 byte Cdigo de funo.............1 byte, 0x01 Endereo inicial ...............2 bytes Nmero de sadas.............2 bytes CRC ..................................2 bytes Formato da Resposta: Endereo do dispositivo...1 byte Cdigo de funo..............1 byte, 0x01 Tamanho da resposta .......1 byte, n Resposta......................... n bytes CRC .................................. 2 bytes 1 Em valores de 2 bytes, o byte mais signicativo por conveno representado primeiro. 2 Cada grupo de oito sadas representado por um byte, onde cada sada corresponde a um bit individual (1 = ligada, 0 = desligada). Esses bits so ordenados de acordo com os endereos das sadas, com o endereo inicial no bit menos signicativo. Caso haja mais de oito sadas os mltiplos bytes de resposta so tambm ordenados por endereo, com os bytes representando os menores endereos primeiro. 5.10.5.2 Funo 0x02 - Read Input Status

Finalidade: efetua a leitura do estado das entradas discretas. Formato da Requisio: Endereo do dispositivo...1 byte Cdigo de funo.............1 byte, 0x02 Endereo inicial ...............2 bytes Nmero de entradas .........2 bytes CRC .................................. 2 bytes Formato da Resposta: Endereo do dispositivo...1 byte

85

Cdigo de funo.............1 byte, 0x02 Tamanho da resposta .......1 byte, n Resposta...........................n bytes CRC ..................................2 bytes Byte mais signicativo representado primeiro. 2 A representao semelhante quela das sadas, ou seja, cada entrada corresponde a um bit, sendo esses bits agrupados de oito em oito em bytes. Bits e bytes so ordenados por endereo, de forma crescente a partir do bit menos signicativo do primeiro byte. 5.10.5.3 Funo 0x03 - Read Holding Registers

Finalidade: Efetua a leitura dos valores dos registradores de memria. Formato da Requisio: Endereo do dispositivo...1 byte Cdigo de funo.............1 byte, 0x03 Endereo inicial ...............2 bytes Nmero de registradores..2 bytes CRC ..................................2 bytes Formato da Resposta: Endereo do dispositivo...1 byte Cdigo de funo.............1 byte, 0x03 Tamanho da resposta .......1 byte, n Resposta...........................n bytes CRC ..................................2 bytes (Byte mais signicativo representado primeiro). Os registradores so representados por ordem crescente de endereo. Cada registrador armazena normalmente um valor de 16 bits, dois bytes, dos quais o mais signicativo vem representado primeiro. Registradores de 32 bits ocupam dois endereos consecutivos, com os 16 bits mais signicativos contidos no primeiro endereo.

86

5.10.5.4

Funo 0x04 - Read Input Registers

Finalidade: Efetua a leitura dos valores das entradas analgicas. Formato da Requisio: Endereo do dispositivo...1 byte Cdigo de funo.............1 byte, 0x04 Endereo inicial ...............2 bytes Nmero de registradores..2 bytes CRC .................................. 2 bytes Formato da Resposta: Endereo do dispositivo...1 byte Cdigo de funo.............1 byte, 0x04 Tamanho da resposta .......1 byte, n Resposta...........................n bytes CRC .................................. 2 bytes (Byte mais signicativo representado primeiro) 5.10.5.5 Funo 0x05 - Force Single Coil

Finalidade: Efetua a escrita de uma nica sada discreta. Esse valor permanece constante enquanto no for alterado por uma nova operao de escrita ou pela programao interna do dispositivo. Formato da Requisio: Endereo do dispositivo...1 byte Cdigo de funo.............1 byte, 0x05 Endereo ..........................2 bytes Valor ................................2 bytes (Ligado = 0xff00, desligado = 0x0000) FCS ..................................1 ou 2 bytes 1 Formato da Resposta: Cpia da requisio.

87

5.10.5.6

Funo 0x06 - Preset Single Register

Finalidade: Efetua a escrita de um valor em um registrador de memria. Assim como acontece para as sadas, o valor no registrador permanece constante enquanto no for alterado por operaes de escrita ou pelo prprio dispositivo. Formato da Requisio: Endereo do dispositivo...1 byte Cdigo de funo.............1 byte, 0x06 Endereo ..........................2 bytes Valor ................................2 bytes CRC ..................................2 bytes Formato da Resposta: Cpia da requisio. 1 Byte mais signicativo representado primeiro. 5.10.5.7 Exemplo de Transao Modbus

O Mestre solicita uma leitura dos registradores 40105 a 40107 do terminal da rede nmero 6. O primeiro byte a ser enviado o endereo do dispositivo, neste exemplo igual a 6. Observar que o endereo lgico dos registradores comea em 1, enquanto que o endereo fsico comea em 0. Assim h uma diferena de 1 dgito entre o endereo lgico e o endereo fsico do dispositivo. Por exemplo, o primeiro registrador o 40001, mas endereado como 40000. Portanto, no exemplo dado, o endereo inical desejado 40105, assim devemos endere-lo como 104, que transformado em hexadecimal ser 0x0068. Note que os registradores utilizam 16 bits para codicar a informao. Estes 16 bits so enviados em dois bytes separados (HIGH BYTE e LOW BYTE). O prximo byte a quantidade de registros a serem lidos. Neste caso, 3. E, por ltimo, so enviados os dois bytes de CRC na ordem inversa dos anteriores ou seja, primeiro o LOW BYTE e, depois, o HIGH BYTE. A composio deste bilhete pode ser observada na Figura 50. O escravo repete o cdigo da funo indicando uma resposta normal, conforme mostrado na Figura 51.

88

Nome do Campo Cabealho Endereo Cdigo da Funo Endereo Inicial (HI) Endereo Inicial (LO) Nm. Registros (HI) Nm. Registros (LO) Vericao de erro Terminador Total de Bytes

Solicitao Exemplo (HEX) 06 03 00 68 00 03

ASCII RTU : 0 6 0000 0110 0 3 0000 0011 0 0 0000 0000 6 8 0110 1000 0 0 0000 0000 0 3 0000 0011 LRC (2) CRC(2) CR LF 17 8

Figura 50: Exemplo comunicao MODBUS Resposta Exemplo (HEX) 06 03 03 02 2B 00 00 00 63

Nome do Campo Cabealho Endereo Cdigo da Funo Qtde. Bytes Dado (HI) Dado (LO) Dado (HI) Dado (LO) Dado (HI) Dado (LO) Vericao de erro Terminador Total de Bytes

ASCII : 0 6 0 3 0 3 0 2 2 B 0 0 0 0 0 0 6 3 LRC (2) CR LF 23

RTU 0000 0110 0000 0011 0000 0011 0000 0010 0010 1011 0000 0000 0000 0000 0000 0000 0110 0011 CRC (2) 11

Figura 51: Exemplo de Comunicao MODBUS - Resposta

5.11

MQUINA DE ESTADOS MODBUS

O diagrama de estados Modbus-RTU mostrado na Figura 52. A transio do "estado inicial" para o estado de "repouso" precisa de um intervalo de silncio do barramento de 3,5 vezes o tempo de cada caractere (t3,5). Isto assegura que, se o sistema tornar-se ativo durante a transmisso de um quadro, este bilhete (provavelmente incompleto) seja descartado. No modo RTU, o estado da conexo declarado em "repouso" se no for detectada nenhuma atividade de transmisso no barramento em um intervalo de tempo equivalente a 3,5 caracteres. Quando a conexo est no estado de repouso, cada caractere de transmisso detectado ser

89

Figura 52: Mquina de estados MODBUS-RTU TX e RX da estao escrava (MODBUS-IRDA, 2007). identicado como incio de um novo quadro. A conexo vai para o estado "recepo". O nal do quadro identicado quando nenhum caractere for recebido tendo passado um intervalo de tempo igual a t3,5. Aps a deteco do nal do quadro, um procedimento de clculo e vericao do valor de CRC (Cyclical Redundancy Checking) realizado. Depois disso, o campo de endereo vericado para se determinar se o bilhete endereado para o dispositivo. Se for, ser processado, caso contrrio, descartado. Tambm sero processados os do tipo broadcast, que so aqueles destinados a todas as estaes. 5.11.0.8 Listagem da rotina principal da mquina de estados Modbus-RTU implementada
{ ... switch(estate_main) { case STATE_MAIN_IDLE: if ( INICIANDO { disable_interrupts(GLOBAL); if (eMBRcvState == STATE_RX_IDLE) { INICIANDO=FALSE; HABILITA_TX printf("MODBUS RTU - VALTER L.A. CAMARGO\r\n"); HABILITA_RX Start_ADC();//D INCIO AO PROCESSO DE LEITURA ADC )

for(;;)

90

} enable_interrupts(GLOBAL); } break; case STATE_MAIN_FRAME_RECEIVED: if (Processa_bilhete() == MB_ER_NONE) // SE RECEBEU UM BILHETE VLIDO { if (Monta_bilhete_resposta()) estate_main = STATE_MAIN_START_TX; else estate_main = STATE_MAIN_IDLE; } else { estate_main = STATE_MAIN_IDLE; } break; case STATE_MAIN_START_TX: Liga_LED(LED_TX); delay_ms(4); HABILITA_TX enable_interrupts(INT_TBE); delay_ms(2); HABILITA_RX Desliga_LED(LED_TX); estate_main = STATE_MAIN_IDLE; } } } //ENABLE FLAG while (!FRAME_TRANSMITTED); // fica aqui at terminar a transmisso do bilhete

5.11.1

ROTINA IMPLEMENTAO MQUINA DE ESTADOS TX

Para a transmisso dos bilhetes foi utilizada uma interrupo. Quando se deseja inicar a transmisso, no programa principal habilitado um bit sinalizador de condio (ag) que ir forar o microcontrolador a gerar uma interrupo. A cada byte transmitido gerada uma nova interrupo e ento o prximo caractere transmitido. Isto se repete at que o ltimo byte do bilhete, quando ento a interrupo desabilitada. Na listagem a seguir mostrado como foi feita a implementao da mquina de estados de transmisso do protocolo Modbus-RTU.
/***************************/ #int_TBE void ISR_TBE(void) /***************************/ { while (!txsta.trmt); //aguarda at que a transmisso esteja completa (buffer empty) switch(eMBSndState) { case STATE_TX_IDLE: eMBSndState = STATE_TX_TRANSMITTING; FRAME_TRANSMITTED = FALSE; gucSndBufferPos=0; case STATE_TX_TRANSMITTING: if (gucSndBufferPos < gucSndBufferCount ) { putc(gucRcvBuffer[gucSndBufferPos++]); } else { disable_interrupts(INT_TBE); FRAME_TRANSMITTED = TRUE; eMBSndState=STATE_TX_IDLE; } } }

91

5.11.2

MQUINA DE ESTADOS RX

Da mesma forma que a mquina de estados TX, tambm foi utilizada uma interrupo para a rotina de recebimento dos bilhetes. O buffer gucRcvBuffer utilizado para armazenar os elementos do bilhete. A listagem a seguir ilustra esta rotina.
#int_RDA /*****************/ void ISR_RDA(void) /****************/ { UCHAR caracter; caracter = getc(); switch ( eMBRcvState ) { case STATE_RX_INIT: /*------------------------------------------------------------Se foi recebido um caracter quando estava inicializando, ento deve se aguardar at que o quadro termine. --------------------------------------------------------------*/ case STATE_RX_ERROR: /*---------------------------------------------------------------Se houve algum erro, deve-se esperar que todos os caracteres do quadro defeituoso seja recebido. -----------------------------------------------------------------*/ timeout = 1; break; case STATE_RX_IDLE: /*---------------------------------------------------------No estado repouso aguarda-se a chegada de um novo caracter. Quando for for recebido o primeiro caracter, grava-o na posio inicial do buffer, habilita os temporizadores e muda o estado para STATE_RX_RCV. ------------------------------------------------------------*/ expected = 8; //fnc 1 a 6 - numero de caracteres esperados para essas funes timeout = 8; // 4 x 4192 ms = 16384 us gucRcvBufferPos = 0; FLAG_LED_RX_ON =TRUE; // FLAG PARA LIGAR O LED RX (EM MAIN.C) eMBRcvState = STATE_RX_RCV; case STATE_RX_RCV: /*---------------------------------------------------------------------------Se foi recebido mais caracteres do que o mximo nmero possvel de bytes do quadro modbus, o quadro inteiro deve ser ignorado. -----------------------------------------------------------------------------*/ if( gucRcvBufferPos > 7) { // j foi recebido o endereo de destino e o cdigo da funo if ( (gucRcvBuffer[1] == 15) || (gucRcvBuffer[1] == 16) ) { /*------------------------------------------------------------15 = write N coil; func 15 for 0x00000 area 16 = write N regs; func 16 for 4x00000 area a contagem dos bytes SS FF AA AA LL LL BC ?? CR CR -------------------------------------------------------------*/ expected = 9 + gucRcvBuffer[6]; } } // if( gucRcvBufferPos > expected ) { eMBRcvState = STATE_RX_ERROR; } else { gucRcvBuffer[gucRcvBufferPos++] = caracter; } if (gucRcvBufferPos == expected ) timeout = 1; //old=gus3_5_timeout; }// endswitch /*-----------------------------------------------------------------------Reinicializa o temporizador a cada caracter recebido. Quando houver demora maior do que 3,5 vezes o tempo de cada quadro, o temporizador colocar a mquina de recepo no estado inicial -------------------------------------------------------------------*/ Reset_timer(timeout); }

92

5.12

CONSTRUO DOS PROTTIPOS

Foram desenvolvidas duas verses de unidades de rede. A primeira utilizando um microcontrolador AT89S8252 da Atmel e uma segunda utilizando o microcontrolador PIC16F876 da Microchip. Nos cdigos inseridos no anexo pode-se vericar que estes possuem regies exclusivas para cada um dos processadores. A seleo de qual implementao est sendo utilizada feita no arquivo de cabealho mb_slave.h. O autor inicialmente dispunha de placas de circuito impresso sem a montagem dos componentes de um equipamento desenvolvido para outra nalidade. Para sua implementao o autor j possua os microcontroladores utilizados nesta placa (AT89S8252), o gravador destes (LP-10 Minipa) e tambm o ambiente de desenvolvimento de programao (KEIL-C). Para adiantar os trabalhos, antes de se decidir pela aquisio dos microcontroladores denitivos, a idia era implementar o protocolo nestas placas para se ter uma noo do tamanho do cdigo nal. A partir disso seria denido qual o microcontrolador seria utilizado na segunda verso, que j incorporaria a interface analgica de condicionamento de sinal. A primeira verso foi utilizada durante toda fase de desenvolvimento do protocolo e depois de depurados os programas, o protocolo MODBUS-RTU funcionou como o esperado. Uma fotograa do terminal utilizado na primeira verso pode ser vista na Figura 53. A segunda fase, consistiu em adaptar o cdigo desenvolvido para a linha de microcontroladores 8051 (da qual o microcontrolador AT89S8252 faz parte) para a linha de microcontroladores PIC, o que demandou algum esforo, j que a forma de endereamento dos registradores bem diferente na famlia 8051 do que na famlia PIC. A seguir so descritos a metodologia e os componentes utilizados para a implementao da segunda verso, que utiliza o microcontrolador PIC16F877. Para a edio de diagramas eletro-eletrnicos e confeco do lay-out da placa de circuito impressa, foi utilizado o software Eagle 4.13 na verso freeware. Foram projetadas e confeccionadas placas do equipamento proposto. Existem vrias ferramentas de programao para a famlia de microcontroladores PIC, muitas delas apoiadas em programas para PC, como o MPLAB, compatveis com o Windows, que so ambientes para desenvolvimento de programas. Para o presente trabalho, o ambiente de desenvolvimento utilizado foi o MPLAB, da prpria Microchip. A Figura 54 mostra uma tela do ambiente de desenvolvimento MPLAB. As rotinas de programao foram escritas em linguagem C e compiladas utilizando-se o

93

Figura 53: Fotograa da primeira verso do terminal de rede implementado no microcontrolador AT89S8252 para validao do protocolo MODBUS compilador CCS Verso 4.038. Para gravao do programa na memria do PIC foi construdo um gravador, comandado pela porta serial baseado no modelo JDM, largamente difundido pela internet por robistas. A Figura 55 mostra o diagrama esquemtico do gravador JDM. O gravador foi construdo e funcionou corretamente na tarefa de programao.

94

Figura 54: Tela ambiente de desenvolvimento MPLAB (MICROCHIP)

Figura 55: Diagrama esquemtico do gravador JDM.

A Figura 56 mostra o diagrama da placa de circuito impresso produzida. Finalmente, a Figura 57 mostra uma fotograa do prottipo j implementado sicamente.

95

Figura 56: Placa de Circuito Impresso do terminal de aquisio

96

Figura 57: Fotograa da segunda verso do terminal de rede implementado em PIC 16F876 para validao do sistema

DESENVOLVIMENTO DO SISTEMA DE AQUISIO DE DADOS

O objetivo deste captulo mostrar a modelagem e a implementao do sistema de aquisio centralizado, responsvel pela coleta dos dados e de seu tratamento. Como j mencionado anteriormente, para a comunicao entre a rede de sensores e o microcomputador, fez-se uso no presente trabalho do protocolo Modbus-RTU, utilizando como meio fsico de transmisso um barramento serial que utiliza a interface RS485. Lembrando que os microcomputadores normalmente possuem uma interface serial RS232 nativa e que esta deve ser convertida numa outra do tipo RS485, atravs de um conversor de interface, para poder realizar a comunicao com a rede. Nas sees que se seguem sero apresentados os fundamentos de cada uma dessas interfaces e, na seqncia, ser apresentada a soluo aqui desenvolvida para fazer esta converso. Este captulo tambm trata do software de aquisio, o qual foi desenvolvido utilizando um sistema supervisrio - elemento bastante comum em ambientes industriais - principalmente pela sua facilidade e forma gil de lidar com informaes de tempo real e de trat-las gracamente. Tambm foi utilizado um gerenciador de protocolo que funciona como mestre MODBUS. Para que o supervisrio acesse os dados do mestre MODBUS necessrio estabelecer um mtodo de troca de informaes entre eles. Para essa tarefa, foi utilizada a tecnologia OPC. Desta maneira, a comunicao entre o mestre MODBUS e o sistema supervisrio feita de forma bidirecional, ou seja, os dados adquiridos do sistema conectado em rede so disponibilizados para o sistema supervisrio, tratados pela aplicao em nveis mais elevados, e devolvidos ao sistema via OPC. Uma breve descrio dos sistemas supervisrios e da tecnologia OPC apresentada para demonstrar os benefcios advindos do uso de ambos. Por m, so apresentados os passos necessrios para a congurao dos dois softwares, visando o estabelecimento da troca de dados entre estes.

98

6.1
6.1.1

INTERFACE DE COMUNICAO
TRANSMISSO SERIAL

Segundo Ferreira (2007), os padres RS232 e RS485, foram desenvolvidos pela Electronic Industry Association (EIA) para permitir a comunicao entre os perifricos e o computador independentemente do fabricante. Estes dois padres so destinados comunicao serial assncrona. Isto signica que cada bit transmitido usando um bit de incio, sete ou oito bits de dados, um bit de parada, e opcionalmente, um bit de paridade. O dado auto-sincronizado, isto quer dizer que uma vez que o transmissor e o receptor concordam com taxa de transmisso (baud rate), o tempo dos bits individuais baseado somente nos bit de incio (start bit) e de parada (stop bit) . Existem outros padres alternativos, tais como a comunicao sncrona e a comunicao paralela. A comunicao sncrona requer uma linha de sincronismo entre o transmissor e o receptor. A comunicao paralela tambm requer uma linha de sincronismo de sinais de controle e muitas linhas de dados. Utilizando-se a comunicao sncrona ou a paralela podem ser alcanadas maiores velocidades de transferncias de dados do que com a assncrona, mas so requeridos mais os de comunicao . Os padres RS232 e RS485 especicam as caractersticas do hardware do sistema de comunicao tais como nveis de tenso eltrica, resistncias terminais, comprimento do o, entre outros. A comunicao serial pode ser simplex (half-duplex) ou duplex (full-duplex). Na simplex, em um determinado instante, somente a transmisso ou a recepo pode ser feita. No modo duplex tanto a transmisso quanto a recepo so feitas ao mesmo tempo .

6.1.2

DESCRIO DO BARRAMENTO RS232

Este um dos tipos mais populares de padro de interface serial. Seu verdadeiro nome EIA-TIA-232-E. Foi desenvolvida pela Electronic Industry Association e a Telecomunication Industry Association (EIA-TIA) em 1962 e, popularmente conhecido como RS232 (o termo RS vem de Recomended Standard). Alm disso, este padro j foi atualizado 5 vezes com o objetivo de elevar o seu desempenho (FERREIRA, 2007). O nome ocial da interface RS232 Interface Between Data Terminal Equipment (DTE) and Data Circuit-Termination Equipment (DCE) Employing Serial Binary Data Interchange. Este tipo de interface garante a compatibilidade entre o computador servidor e os sistemas perifricos quanto a:

99

1. Tenso eltrica e nveis de sinais. 2. Congurao dos pinos dos conectores de interligao entre ambos os lados. 3. Mnima quantidade de informao de controle entre o servidor e os sistemas perifricos. Com relao s tenses e nveis de sinais, estes so: Nvel lgico alto : -3V a -15V (com carga) e -25V (sem carga, no mximo); Nvel lgico baixo : +3V a +15V (com carga) e +25V (sem carga, no mximo); O nvel lgico da regio entre -3V e +3VC indenido. As especicaes eltricas incluem especicaes de nvel de tenso, taxa de troca de sinais e impedncia da linha de comunicao. Como a interface RS232 foi denida em 1962, antes da lgica TTL, no nenhuma surpresa que este padro no utilize +5 Volt e terra (gnd) como nveis lgicos. Os 8 bits de dados transmitidos atravs da interface RS232 so acompanhados por mais dois bits: Um de incio (start bit) e outro de parada (stop bit). Cada caractere comea com um bit de incio (neste caso a a linha vai para o sinal lgico 1 exatamente por um perodo de um bit. O bit menos signicativo enviado em seguida. Para se delimitar o nal da transmisso utilizado o bit de parada logo aps o ltimo bit do caractere que est sendo enviado. Tambm, opcionalmente, a transmisso pode ser feita considerando a paridade (uma das formas para vericao de erro, relacionada com a probabilidade de troca de bits indevidamente durante a transmisso), neste caso o bit de paridade inserido na continuao do ltimo bit do caractere transmitido e antes do bit de parada. A interface RS232 tambm limita a taxa de subida mxima (slew rate) no drive de sada. Esta limitao foi includa para ajudar a reduzir a possibilidade de acoplamento capacitivo (cross-talk) entre sinais adjacentes. Se os tempos de subida e de descida so lentos, menor a possibilidade de se ter cross-talk, mas isto implica num comprometimento da velocidade de transmisso que pode ser alcanada. O mximo slew rate permitido 30V /s, o que limita a taxa de transmisso de dados. A impedncia da interface entre o drive e o receptor est bem denida. A carga vista pelo drive deve estar entre 3 k e 7 k. Tambm est muito bem denido o comprimento do o de comunicao, parmetros estreitamente relacionado com a mxima carga capacitiva, que da ordem de 2500 pF (FERREIRA, 2007).

100

6.1.3

DESCRIO DOS SINAIS DO BARRAMENTO RS232

Para a descrio a seguir sero utilizados os termos DTE (Data Terminal Equipment) que signica o lado do servidor de comunicao, normalmente um computador e o DCE (Data Circuit-Termination Equipment) que normalmente um equipamento dispositivo perifrico, como por exemplo, um modem. O padro RS232, possui as seguintes linhas de sinais: a) Transmitted Data (TD): a linha por onde os dados so transmitidos do DTE e recebidos pelo DCE. b) Received Data (RD): a linha por onde os dados so transmitidos do DCE e recebidos pelo DTE. c) Request to Send (RTS): Quando o DTE est pronto para transmitir para o DCE o sinal RTS levado para o nvel lgico um. Nos sistemas simplex ou duplex esta condio mantm o DCE em modo de recepo e inabilita o modo de transmisso. A condio de zero lgico do RTS mantm o DCE em modo de transmisso. Aps o sinal RTS ser ativado, o DCE deve ativar seu sinal CTS antes do comeo da comunicao. d) Clear to Send (CTS): CTS usado conjuntamente com RTS para oferecer o handshake entre o DTE e DCE. Aps o DCE ter detectado a ativao da linha RTS, ele vai ativar a linha CTS quando estiver pronto para a comunicao. e) Data Set Ready (DSR): Este sinal ativado pelo DCE para indicar que est conectado linha de telecomunicaes. f) Data Carrier Detect (DCD): Este sinal ativado pelo DCE quando est recebendo o sinal de um DCE remoto. Este sinal permanece ativado durante o tempo necessrio para a deteco do carrier do sinal. g) Data Terminal Ready (DTR): DTR indica o estado do DTE. Este sinal ativado quando o DTE est pronto para transmitir ou receber dados. O sinal DTR deve ser ativado antes que o DCE ative a linha DSR. h) Ring Indicator (RI): Quando o sinal RI ativado indica que uma sinal de chamada (ring) est sendo recebido pelo canal de comunicao. A Figura 58 mostra um resumo do que foi comentado nos pargrafos anteriores.

101

Figura 58: Pinagem dos conectores DB9 e DB25 na norma RS232

6.1.4

LIMITAES DO RS232

De acordo com Ferreira (2007), o barramento RS232 apresenta algumas limitaes, tais como: a) A interface RS232 no usa nvel convencional de tenso eltrica (TTL/CMOS). Isto implica na necessidade do uso de fontes de alimentao adicionais para atingir os nveis de tenso da interface. b) A mxima taxa de dados (velocidade de transmisso) de 115 kbps, a qual muito baixa para as aplicaes atuais. c) Mximo comprimento do o de comunicao: Este parmetro est ligado mxima especicao da capacitncia de carga. Tipicamente a mxima distncia entre DTE e DCE no podem ser superiores a 20 metros, mesmo para as velocidades mais baixas. Para velocidades maiores esta distncia ca limitada a dois metros ou menos, dependendo do cabo utilizado e das condies ambientais relativas interferncias eletromagnticas.

6.1.5

DESCRIO DO BARRAMENTO RS485

Segundo Tristo (2004), o padro RS-485 a tecnologia de transmisso mais freqentemente encontrada nas redes industriais. Sua aplicao est presente em todas as reas nas quais uma alta taxa de transmisso aliada a uma instalao simples e barata so necessrias. Um par tranado de cobre blindado o suciente neste caso. A tecnologia de transmisso RS-485 muito fcil de manusear. O uso de par tranado no requer nenhum conhecimento ou habilidade especial. Taxas de transmisso entre 9,6 kbps e 12

102

Mbps podem ser selecionadas, porm uma nica taxa de transmisso selecionada para todos dispositivos no barramento, quando o sistema inicializado. A norma RS485 dene um esquema de transmisso de dados, utilizando circuitos balanceados, que oferecem solues robustas para transmitir dados em longas distncias em ambientes ruidosos. adotada como camada fsica para a comunicao dos dados de diversos protocolos, como, por exemplo, PROFIBUS-DP, MODBUS, INTERBUS e muitos outros. Por isso, existe uma grande disseminao do padro devido s vantagens que o mesmo apresenta em ambientes industriais.

6.1.6

TIA/EIA-485

A norma TIA/EIA-485, conhecida popularmente como RS485, descreve uma interface de comunicao operando em linhas diferenciais capaz de se comunicar com 32 unidades de carga. Normalmente, um dispositivo transmissor/receptor corresponde a uma unidade de carga, o que faz com que seja possvel que at 32 dispositivos possam se comunicar entre si. Entretanto, existem dispositivos que consomem fraes de unidade de carga, o que aumenta o mximo nmero de dispositivos a serem interligados. O meio fsico mais utilizado um par tranado. Atravs deste nico par de os, cada dispositivo transmite e recebe dados. Cada dispositivo aciona o seu transmissor apenas no instante que necessita transmitir, mantendo-o desligado no resto do tempo de modo a permitir que outros dispositivos transmitam dados, o que caracteriza esta rede como simplex.

6.1.7

LINHAS DE COMUNICAO BALANCEADAS

O padro RS485 se caracteriza pela utilizao de um meio de comunicao diferencial (tambm conhecida como transmisso balanceada), utilizando um par de os tranados. Os circuitos transmissores e receptores adotados nestas interfaces utilizam como informao a diferena de potencial entre os condutores do par tranado. Os cdigos binrios so identicados pela polaridade (+ ou -) da diferena de tenso entre os condutores do par, ou seja, quando a tenso no condutor + for maior que no condutor -, caracterizado um nvel lgico 1; quando, ao contrrio, a tenso no condutor - for maior que no condutor +, caracterizado um nvel lgico 0. Uma margem de rudo de 200 mV denida para aumentar a tolerncia a interferncias. Esta tcnica resulta no cancelamento de rudos induzidos no meio de transmisso, pois se o mesmo rudo induzido nos 2 condutores, a diferena de tenso entre eles no se altera e a informao preservada. A interferncia eletromagntica emitida por um barramento de comunicao diferencial tambm menor que a emitida por barramentos de comunicao

103

no-diferenciais.

6.1.8

RESISTORES DE TERMINAO

A teoria das linhas de transmisso recomenda a necessidade de terminao de linhas de comunicao com um valor de impedncia correspondente impedncia caracterstica da linha. A correta terminao atenua reexes que distorcem os dados transmitidos, aumentando os limites de velocidade e/ou comprimento da rede. A impedncia caracterstica de um par tranado de aproximadamente 120, sendo este um valor adequado para o resistor de terminao a ser instalado. Outro assunto relacionado terminao o que fazer com os condutores no usados em um cabo de dados. Condutores no usados podero auto-ressonar e acoplar rudo aos condutores de dados. Se eles forem deixados abertos, eles iro ressonar em todos os tipos de freqncias; se forem aterrados em uma extremidade, iro ressonar em L/2 (L o comprimento do cabo); se forem aterrados nas duas extremidades, iro ressonar em L/4. A melhor maneira de minimizar a energia de um condutor no utilizado dissip-la em forma de calor. Para tanto, deve-se colocar resistores de terminao em ambas as extremidades do condutor para o terra. Os resistores devem possuir um valor igual impedncia caracterstica da linha, ou seja, em torno de 120 Ohms. Uma melhor alternativa utilizar cabos em que no sobrem condutores (NOVUS, 2007).

6.1.9

LIMITES DE DISTNCIA E VELOCIDADE

A norma RS485 especica um comprimento mximo de 1200 metros para os cabos. A velocidade mxima de comunicao (em bits por segundo bps) depende de caractersticas dos equipamentos instalados, da capacitncia dos cabos e dos resistores de terminao instalados. Como regra geral, quanto mais longos os cabos, menor deve ser a velocidade de comunicao. O comprimento mximo do cabo depende da velocidade de transmisso, conforme mostra a Tabela 6.

6.1.10

NMERO MXIMO DE DISPOSITIVOS NA REDE RS485

Todos os dispositivos so ligados uma estrutura de tipo barramento linear. A RS485 no dene o nmero mximo de dispositivos interligados em uma rede, e sim uma srie de parmetros que podem ser utilizados para o clculo deste limite. Alguns destes parmetros so os seguintes:

104

Tabela 6: Distncias mximas de acordo com a velocidade utilizada Velocidade (kbps) Distncia segmento (m) 9,6 1200 19,2 1200 93,75 1200 187,5 1000 500 400 1.500 200 12.000 100 Fonte: TRISTO (2004) Limite inferior para a resistncia de carga resultante no barramento. Valor de resistncia que cada dispositivo da rede representa no barramento, denominada Carga Unitria (15k). Valor mnimo de corrente que o driver (transmissor) de um dispositivo RS485 deve ser capaz de fornecer. A partir destes dados e considerando a necessidade de resistores de terminao nos dois extremos do barramento (correspondentes a 60), pode ser calculado o limite de 32 dispositivos com carga unitria para um barramento de comunicao RS485. Assim, um total mximo de 32 estaes podem ser conectadas a um nico segmento. Para assegurar uma operao livre de erros, o barramento deve ter um terminador (elemento responsvel pelo casamento de impedncia do barramento) no incio e m de cada segmento. No caso em que se necessite conectar de mais de 32 estaes ou no caso que a distncia total entre as estaes ultrapasse um determinado limite, devem ser utilizados repetidores para se interconectar diferentes segmentos do barramento. A Figura 59 ilustra como devem ser conectados os repetidores.

Figura 59: Utilizao de repetidores (TRISTO, 2004).

105

Atualmente so comercialmente disponveis equipamentos RS485 com carga inferior unitria, sendo usuais os valores de 1/2, 1/4 e 1/8 da carga unitria. Para ampliar o nmero de dispositivos de uma rede RS485 para 256, uma soluo possvel utilizar apenas dispositivos com 1/8 da carga unitria. Em aplicaes menores, onde o comprimento dos cabos da rede pequeno e/ou a velocidade de comunicao baixa, pode ser possvel eliminar os resistores de terminao. Isto permite aumentar a capacidade de dispositivos da rede de 32 para 282. A desvantagem bvia que a operao convel, nesta condio, no pode ser garantida.

6.1.11

ATERRAMENTO / INTERLIGAO DO COMUM

De acordo com Novus (2007) este talvez o tpico menos compreendido e que causa maiores problemas na instalao de redes RS485. Linhas de transmisso diferenciais utilizam como informao apenas a diferena de potencial existente entre os 2 condutores do par tranado, independente da diferena de potencial que eles apresentam em relao ao referencial de tenso (comum ou terra). Isto permite que mltiplos sistemas se comuniquem mesmo que uma referncia de potencial comum entre eles no seja estabelecida. No entanto, os circuitos eletrnicos de transmisso e recepo podem ser danicados se o par tranado apresentar um potencial excessivamente elevado em relao ao referencial (comum ou terra). A norma TIA/EIA-485 especica que a mxima diferena de potencial entre os equipamentos da rede deve estar entre 7V e +12V. Diferenas de potencial acima destes limites so usuais quando mltiplos dispositivos isolados eletricamente entre si so interligados apenas pelos pares diferenciais de comunicao. A utilizao de aterramento nos dispositivos, apesar de ajudar, no soluciona o problema em todas as situaes, pois em uma instalao industrial tpica a diferena de potencial entre aterramentos de locais afastados pode ser de muitos volts, podendo chegar a centenas de volts na ocorrncia de descargas atmosfricas. A melhor soluo para evitar a queima dos circuitos de comunicao adotar um condutor adicional que interligue o comum (ou terra) de todos os dispositivos da rede.

6.1.12

CABOS DE LIGAO

Os cabos de ligao representam a ligao fsica entre os transdutores e os sensores at aos condicionadores de sinais e/ou equipamentos de aquisio de dados. Os cabos de ligao, quando o condicionador de sinal e/ou o sistema de aquisio sicamente afastado do com-

106

putador, tambm fornecem a ligao fsica entre estes equipamentos e o computador. Nestas situaes estes cabos so comumente designados como cabos de comunicao tal como acontece na comunicao RS-232, RS-485, USB, etc. Em muitos dos sistemas de aquisio de dados, os cabos de ligao e comunicao representam o maior componente de todo o sistema, podendo tornar o sistema sensvel a rudo externo. Este componente passivo dos sistemas de aquisio muitas vezes negligenciado durante o desenvolvimento dos sistemas, tornando-se uma importante fonte de erro e incerteza. A utilizao de cabo blindado recomendada sempre que o custo mais elevado deste tipo de cabo no for um problema. A utilizao de cabo blindado com a malha adequadamente aterrada torna a rede mais imune a interferncias externas mesmo quando o cabo instalado prximo a fontes de rudo eltrico, como inversores de freqncia, mquinas de solda, chaves eletromagnticas e condutores de alimentao CA. Para reduzir custos, pode ser utilizado cabo tranado sem malha de blindagem, mas este deve ser instalado separado de condutores de alimentao CA e distante de fontes de rudo eltrico. Para a ligao dos barramentos de comunicao entre os dispositivos da rede, deve-se utilizar cabo tipo par tranado, tendo o cuidado de interconectar os terminais Comum de todos os dispositivos da rede. A bitola mnima recomendada para os condutores de comunicao 24 AWG (0, 2mm2 ). A adoo de um condutor adicional para interligao do comum de todos os dispositivos da rede altamente recomendada para se evitar a queima dos circuitos de comunicao de um ou mais equipamentos da rede.

6.2

CONVERSOR RS232/RS485

Sendo a norma RS232 a implementao padro para comunicao serial nos PCs, tem-se que fazer a converso dos sinais do padro RS232 para RS485 e vice-versa para que haja a comunicao correta entre os equipamentos que trabalham em uma rede industrial RS485 e o PC. Existem hoje no mercado vrios conversores para tal nalidade, que praticamente compatibilizam a comunicao serial entre os vrios padres. O padro serial RS232, sendo desenvolvido para rede ponto-a-ponto, orientado a conexo, ou seja, deve haver um dispositivo no outro lado da linha, pronto para receber e enviar os dados segundo este padro. nesse ponto que o conversor de padro opera. Tratando-se de um conversor de RS485 para RS232, este deve ter a capacidade da simulao de um dispositivo DCE de modo que responda s solicitaes do lado

107

RS232 para efetuar a conexo e a passagem dos dados para a RS485. Como a RS485 no um padro orientado conexo, a qualquer hora, qualquer equipamento poder transmitir seus dados na rede. neste ponto que entra a gura do mestre da rede para coordenar esse trfego (CUNHA, 2000). A comunicao serial do padro RS485 funciona de modo anlogo ao de uma porta serial de microcomputador (RS-232). A diferena entre os dois a forma como o sinal transmitido: de modo diferencial na RS-485 e como nvel lgico na RS-232. Como o modo diferencial no utiliza o sinal de terra (GND) para produzir os nveis lgicos, diminuem-se o efeito de rudos externos. Como vantagem, pode-se ter um comprimento maior de cabos. Outra diferena est na capacidade da RS-485 compor barramentos, permitindo a interligao de dispositivos em rede, enquanto que a RS-232 foi projetado para ligar somente dois terminais no modo ponto a ponto. Protocolos do tipo RS-485 e RS-232 transmitem at 8 bits de dados por quadro e tm o mesmo formato de quadro usado na porta serial via UART dos microcomputadores. O sincronismo feito quando se detecta o incio do quadro, sem a necessidade de se transmitir um sinal de clock para sincronizar a transmisso dos bits. Os protocolos PROFIBUS e MODBUS utilizam-se da camada fsica RS-485 e acrescentam outras informaes em cada quadro a ser transmitido, tal como vericao de erro, e utilizam mecanismos mais complexos para manter a integridade dos dados.

6.2.1

CONVERSOR RS232/RS485 DESENVOLVIDO

Primeiramente para o projeto deste conversor foi considerado uma questo de segurana. sabido que a diferena de potencial entre os terminais da rede e a fonte do computador podem causar srios problemas, podendo chegar at mesmo a danicar a porta serial. Um outro problema que pode surgir so os loops de corrente de terra, que provocam rudos indesejveis na comunicao. Portanto, foi denido que um dos requisitos para a interface de comunicao que esta deveria ser isolada galvanicamente. Para tanto, foram utilizados foto-acopladores nos circuitos de transmisso e recepo. Na fase de testes da primeira verso foram detectados alguns problemas. O primeiro deles que o handshake RTS/CTS, sob o sistema operacional Windows, no obedece rigidamente aos tempos especicados pela norma RS232. Assim, sob certas circunstncias - vrios programas em execuo simultnea, por exemplo - pode no funcionar adequadamente. Como no desejvel utilizar o protocolo RTS/CTS, pelos motivos apresentados anteriormente, e considerando que o meio de transmisso simplex, ou seja, somente um dos lados

108

pode transmitir a cada instante, foi necessrio a incluso de um elemento gerenciador do sentido de comunicao, ou seja, um elemento responsvel para determinar qual lado pode transmitir em um determinado instante. Para essa tarefa foi utilizado um microcontrolador da Atmel, AT89C1051 escolhido por seu baixo custo e alto desempenho. Outra questo que surgiu, que era necessrio ento, prover uma tenso positiva de aproximadamente 9 Volts para os circuitos de recepo foto-acoplados no lado do computador j que esta no proviria da linha RTS. Para tanto, foi projetado um inversor utilizando o CI 40106 de maneira a obter uma tenso positiva de aproximadamente +9 Volts a partir de uma negativa de -9 Volts retirada das linhas TX e DSR da comunicao RS232. A freqncia de oscilao do sistema inversor foi ajustada para aproximadamente 1,5 kHz. Para a descrio que se segue, reporte-se ao diagrama eltrico da Figura 60. A lgica de funcionamento do microcontrolador gerenciador de comunicaes a seguinte: A transmisso simplex, ou seja, somente um dos lados pode transmitir em um dado instante. Para este caso, signica que o barramento RS485 est transmitindo para a porta serial RS232 ou o contrrio. No CI que faz a interface de comunicao (IC2 - MAX481) existem dois pinos para determinar o sentido da transmisso. Estes esto ligados ao pino 19 do microcontrolador, o qual responsvel por fazer o controle. O sentido de transmisso padro, ou seja, aquele que selecionado ao se ligar o sistema, no sentido do barramento RS485 para a interface RS232. Estando ambos os lados em repouso, quando o lado do computador (RS232) comea a transmitir, o microcontrolador detecta o bit de incio do bilhete de transmisso e muda o sentido de transmisso da RS232 para a RS485. A cada byte recebido da interface RS232 ligado um temporizador de 4 milisegundos, o que signica que aps a transmisso do ltimo byte, depois de decorrido mais 4 milisegundos, o microcontrolador volta a habilitar o sentido de transmisso no sentido do barramento RS485 para RS232, onde ca aguardando pela resposta da unidade escrava. Para o projeto todos os diodos reticadores utilizados so do tipo schotky (cdigo BAT85), os quais so recomendados para este tipo de aplicao, graas a seu baixo tempo de recuperao reversa e baixa barreira de potencial (em torno de 200 mV). Tambm foram inseridos quatro LEDs para indicao da velocidade de transmisso atual e tambm da atividade de transmisso e recepo. Quando o microcontrolador detecta uma borda de descida, indicando o incio de uma nova transmisso, disparado um programa que se comporta como um mono-estvel que vai ligar o LED por 50 mili-segundos, tempo suciente para a percepo visual do evento.

109

Os foto-acopladores so do tipo 4N35, escolhidos pela relativa alta velocidade de comutao e alto fator de transferncia, em torno de 0,5 vezes o valor da corrente do LED. Isto necessrio j que a corrente disponvel pela interface RS232 limitada e deve ser suciente para o acionamento dos LEDs dos foto-acopladores. O programa foi desenvolvido em linguagem C e compilado com o software KEIL Verso 7.2. A gravao do microcontrolador foi feita utilizando-se um gravador universal LP-10 da Minipa. Aps a montagem da placa de circuito impresso denitiva (segunda verso - a primeira precisou ser modicada pelos motivos apresentados anteriormente) o sistema foi testado em velocidades de 4800 BPS, 9600 BPS e 19200 BPS, funcionando corretamente. Na Figura 61 pode ser vista uma foto do conversor j construdo na sua verso nal.

110

Figura 60: Diagrama eltrico do conversor RS232/RS485 implementado

111

Figura 61: Fotograa do Conversor RS232/RS485 Implementado

112

6.3

SOFTWARE SERVIDOR DE COMUNICAES (MESTRE MODBUS)

O sistema de superviso tem acesso s variveis da rede Modbus atravs de uma base de dados OPC. Mais especicamente, no sistema em questo, o supervisrio tem acesso s variveis dos elementos da rede por meio de um servidor de comunicaes mestre MODBUS-RTU, onde estas variveis podem ser: entradas analgicas ou digitais, sadas analgicas ou ainda sadas digitais. No sistema em questo, associam-se tags a valores de registradores dos terminais de rede. Assim, atravs do servidor de comunicao serial, os valores dos registradores so passados, em tempo real, s respectivas tags e vice-versa. Tais tags podem ser ainda processadas internamente pela aplicao supervisria atravs da execuo de scripts. Neste projeto ser utilizado como servidor OPC o produto KEPServerEx Verso 4.105 produzido pela KEPWARE Inc. e o cliente ser um sistema supervisrio Elipse Scada, Verso 2.29.

6.4

CRIAO DE UM NOVO CANAL NO SOFTWARE KEPServerEX

Primeiramente, necessria a criao de um canal de comunicao serial no servidor. Para tanto, deve-se acessar o menu principal e escolher a opo Edit New Channel aps o que dever aparecer a tela mostrada na Figura 62. Para este projeto o nome escolhido foi PORTASERIAL1.

Figura 62: Criao de um novo canal de comunicao no KEPServerEx - etapa1 - Fornecimento do nome do canal

113

Ao se "clicar" no boto Avanar ser apresentada a tela mostrada na Figura 63, onde deve-se escolher o protocolo a ser utilizado. Neste projeto o protocolo MODBUS SERIAL.

Figura 63: Criao de um novo canal de comunicao no KEPServerEx - Etapa 2 - Escolha do protocolo a ser utilizado Ao se "clicar" no boto Avanar ser apresentada a tela mostrada na Figura 64, onde devem ser informados os parmetros de comunicao da porta serial. Para este projeto os valores so: COM1, 9600 bps, 8 bits, Nenhuma Paridade, 1 Bit de Parada e linha RTS sempre ativada.

Figura 64: Criao de um novo canal de comunicao no KEPServerEx - Etapa 3 - Congurao dos parmetros de comunicao serial

6.5

CRIAO DE UM NOVO DISPOSITIVO NO SOFTWARE KEPServerEX

Os dispositivos existentes na rede de comunicao devem ser primeiramente congurados no servidor de comunicao Modbus.

114

Inicialmente deve ser congurada a porta serial que ir ser utilizada para a comunicao. Neste caso, foi utilizado a porta COM1 do computador. Para se incluir um novo dispositivo, deve-se fazer um "clique" com o boto direito do mouse sobre o nome dado porta serial, neste caso, PORTASERIAL1, quando ento deve aparecer um menu sensvel ao contexto, conforme ilustrado na Figura 65. Ao ser selecionada a opo do menu New Device, aberta uma seqncia de telas de auxlio de congurao. Este estilo de congurao tambm conhecido pelo seu nome original em ingls: Wizards.

Figura 65: Criao de um novo n na rede no software KepwareServer Modbus. A primeira tela tem a nalidade de congurar um nome para o novo dispositivo criado. Neste caso, deseja-se congurar o terminal de nmero 1, cujo nome ser Terminal01. Este procedimento ilustrado na Figura 66. Aps fornecido o nome deve-se "clicar" no boto avanar que chamar a prxima tela do tutor de congurao.

Figura 66: Criao de um novo n na rede no software Kepware Server Modbus - etapa 1 fornecer o nome do dispositivo. Na tela posterior deve ser congurado o protocolo desejado, neste caso Modbus. Isto porque este software tambm pode ser utilizado como servidor de comunicaes para outros protocolos. A Figura 67 ilustra essa etapa.

115

Figura 67: Criao de um novo n na rede no software Kepware Server Modbus - etapa 2 fornecer o protocolo desejado. Na seqncia, deve ser informado o endereo do dispositivo. Este pode ser fornecido no formato decimal, octal ou hexadecimal. No caso do terminal nmero 1 o formato irrelevante j que em qualquer formato seu valor ser o mesmo. Veja a Figura 68.

Figura 68: Criao de um novo n na rede no software Kepware Server Modbus - etapa3 fornecer o endereo do novo terminal a ser criado. Na prxima tela chamada devem ser congurados os parmetros de comunicao. Reportese Figura 69 para maiores detalhes. O primeiro parmetro (Connect timeout) diz respeito ao tempo de espera de resposta do escravo antes de relatar uma falha. Neste caso, o valor denido de 3 segundos. O segundo parmetro (Request timeout), o tempo (em milisegundos) em que ser solicitado uma nova resposta da estao escrava. No presente caso, este tempo foi xado em 1 segundo. O terceiro parmetro (Fail after) o nmero de vezes sucessivas que o programa vai aguardar antes de considerar o dispositivo em falha. Na seqncia, pedido para que se dena a ao requerida em relao criao do banco

116

Figura 69: Criao de um novo n na rede no software Kepware Server Modbus - etapa 4 parmetros da comunicao. de dados das tags, se este deve continuar a coletar informaes do ponto onde parou ou se exclui os registros anteriores e recomea novamente ao ser reiniciado o programa servidor. Isto pode ser vericado na Figura 70.

Figura 70: Criao de um novo n na rede no software Kepware Server Modbus - etapa 5 banco de dados. Na tela chamada na seqncia, devem ser congurados os parmetros do protocolo Modbus. O primeiro item (Use zero based addressing) diz se o endereamento dos dispositivos comea em zero ou em um. Isto porque podem existir dispositivos que obedecem a uma ou outra forma de numerao. O segundo item (First word low in 32 bit data types) informa qual a ordem dos bytes de dados, no caso de informaes de 32 bits. Lembrando que os registradores do padro Modbus so de 16 bits, assim se for desejado obter valor de 32 bits, dois registradores devem ser utilizados. Neste caso informa-se ao sistema qual a ordem do byte menos signicativo. Veja a Figura 71 para maiores detalhes.

117

Figura 71: Criao de um novo n na rede no software Kepware Server Modbus - etapa 6 congurar os parmetros do protocolo Modbus. A ltima tela diz qual o nmero de registradores de cada tipo existentes na unidade escrava. Para o caso das entradas e sadas digitais, o nmero de registradores a ser fornecido deve ser em mltiplos de 8 bits. O mesmo vale para os registradores de 16 bits (comandos 3xxxx e 4xxxxx). A Figura 72 mostra essa congurao.

Figura 72: Criao de um novo n na rede no software Kepware Server Modbus - etapa 7 denio da quantidade de registradores existentes no dispositivo escravo. Ao nalizar o tutor de congurao (wizard) deve aparecer o novo terminal criado na lista de dispositivos a serem monitorados pelo servidor de comunicaes, conforme pode ser visto na Figura 73. O prximo passo criar as tags desejadas para o n de rede criado. Isto consiste em se mapear os registradores internos dos escravos, estabelecendo uma relao entre os endereos fsicos de seus registradores e mnemnicos responsveis por identicar com mais facilidade a sua natureza ou funo. Para criar ou alterar uma tag j existente, basta "clicar" sobre o texto

118

Figura 73: Criao de um novo n na rede no software Kepware Server Modbus - etapa nal dispositivo criado com sucesso. que aparece no painel direita, quando ento ser chamada a tela mostrada na Figura 74. No caso da aplicao aqui descrita, o endereo do registrador 300002 responsvel por armazenar o fator de deformao atual do(s) extensmetro(s) conectado(s) unidade escrava em questo, enquanto que o endereo 300001 contm a temperatura da unidade.

Figura 74: Criao de uma nova tag no software Kepware Server Modbus

6.6

CONEXO DO SUPERVISRIO COM O SERVIDOR MODBUS

Na seo anterior foi mostrado como congurar o servidor de comunicao Modbus. Nesta, sero mostrados os passos para estabelecer uma comunicao entre os softwares do servidor

119

Modbus e o do supervisrio. Como j mencionado anteriormente, o software supervisrio utilizado nesta aplicao o Elipse Scada Verso 2.29. No Elipse Scada existe um mdulo responsvel pelo gerenciamento de todos os componentes do supervisrio, chamado de organizer. A partir dele, deve-se selecionar o item OPCServers e localizar o servidor OPC, conforme mostrado na Figura 75, para fazer a ligao das variveis do supervisrio (ELIPSE SCADA) com as do servidor de comunicaes OPC (KEPWARE SERVER).

Figura 75: Seleo no Elipse Scada do servidor OPC a ser utilizado Uma vez selecionado o servidor OPC a ser utilizado, o passo seguinte importar as tags para o supervisrio. Isto feito atravs da tecnologia selecionar, arrastar e soltar (select, drag and drop) do sistema operacional Windows. O assistente de importao pode ser visualizado na Figura 76. Na Figura 77 mostrada a situao nal com as tags j importadas do servidor OPC. A partir desse ponto, pode-se realizar diversas operaes de leitura e/ou escrita destas variveis, tais como associ-las objetos grcos de animao do supervisrio, armazenar em banco de dados, gerar grco de tendncias e/ou histricos, entre outras.

120

Figura 76: Assistente do Elipse Scada para importao de tags do servidor OPC

Figura 77: Tela do assistente de importao de tags com a operao j concluda.

121

6.7

SISTEMAS DE SUPERVISO E CONTROLE

Os sistemas de superviso e controle, tambm conhecidos por sistemas supervisrios ou pela sua abreviao da lngua inglesa SCADA (Supervisory Control And Data Acquisition system), so aplicativos usados em grande escala pela indstria que permitem que sejam monitoradas e rastreadas informaes do processo produtivo. Estes sistemas fornecem uma interface para a tarefa de aquisio de dados em tempo real. Por meio dele, as informaes podem ser visualizadas utilizando o recurso de quadros sinticos animados com indicaes instantneas das variveis de processo (vazo, temperatura, presso, volume, etc.). Tambm possvel estabelecer ponto de operao desejado do processo (set-point) ou controlar elementos distantes, abrir ou fechar vlvulas ou chaves, monitorar alarmes e armazenar informaes de processo. Os sistemas supervisrios podem gerenciar processos de qualquer tamanho ou natureza, sendo comum existir algumas centenas (e at mesmo alguns milhares) de pontos de entrada e sada. Desta forma, a escolha do software de superviso muito importante na estratgia de automao de uma empresa (ZEILMANN, 2001 - apud GONALVES, 2004). Suas unidades bsicas de dados so os "tags", nomes que associam um endereo ou registrador de um dispositivo ao sistema supervisrio. Os dados do processo so tratados como tags, sejam eles vindos de um CLP, de um servidor de protocolos de comunicao (via OPC) ou mesmo de um banco de dados. De acordo com Costa (1995), os sistemas supervisrios dos mais diversos fabricantes, oferecem em comum as seguintes funcionalidades: Um ambiente grco para a edio das telas de monitorao (que permite a criao de displays, botes, animaes, grcos com tendncias, etc.); Grcos de Tendncias e de Histricos; Relatrios; Clculos envolvendo funes matemticas diversas; Tratamento de alarmes; Arquivo de dados e interao com outros bancos de dados; Criao de estratgias de controle; Manipulao de Receitas pr-denidas;

122

Mecanismos de suporte congurao das aplicaes; Interface de comunicao com diversos tipos de redes, interfaces e protocolos; Importao e exportao de dados para planilhas de clculo; Editor de scripts (pequenos trechos de programas escritos em linguagem de programao). Normalmente, nas estaes remotas existem sensores conectados aos equipamentos a serem monitorizados que convertem parmetros fsicos, tais como velocidade, nvel de coluna de lquido e temperatura, para sinais digitais. O processo de aquisio de dados inicia-se nas estaes remotas com a leitura dos valores atuais dos dispositivos a que esto associados. Um servidor de protocolo de comunicaes responsvel por recolher estas informaes e envi-las para um sistema supervisrio num nico computador, ou distribudos por uma rede de computadores de modo a permitir o compartilhamento da informao proveniente dos sensores. Pode-se citar como exemplo de sistemas supervisrios que seguem o padro OPC: Elipse Scada, Elipse E3, Win-cc, I-Fix, Wonderware Intouch, Process View, Iconics e Cimplicity, entre outros.

6.7.1

INTERFACEAMENTO DOS SISTEMAS SUPERVISRIOS

Os sistemas supervisrios precisam trocar dados com outras aplicaes. Para tal tarefa podem ser utilizadas muitas tecnologias abertas, entre elas pode-se citar o ODBC (Open DataBase Connectivity), API (Application Program Interface), DDE (Dynamic Data Exchange) e OPC (OLE for Process Control). Atravs do uso destas tecnologias, o interfaceamento dos sistemas SCADA com outras aplicaes torna-se possvel. O ODBC uma interface de programao de aplicativos que so programados utilizando-se a linguagem SQL (Structured Query Language). A conexo lgica de uma base de dados ao sistema de superviso permite uma leitura e atualizao dos parmetros de uma rede ou de um CLP, o controle de um processo ou a alterao de um relatrio. Esta conexo com a base de dados feita atravs de uma interface normatizada ODBC. O desenvolvimento de API, que um modo de implementar um software, que pode ser, por exemplo, um gateway responsvel pelo gerenciamento da comunicao e que proporcione servios de aplicao entre um servidor Web e um servidor SGDB (Sistema Gerenciador de Banco de Dados). As APIS so pequenos trechos de programas (scripts) escritos em uma linguagem de programao, como por exemplo, o Visual Basic.

123

Atravs dos DDE, os supervisrios podem exportar e importar variveis de outro software, como por exemplo, um aplicativo do pacote Microsoft Ofce ou do Matlab, sendo que este ltimo conta com pacotes de software especcos para o controle de processos. O OPC uma tecnologia disponibilizada por alguma aplicao servidora de protocolo de comunicaes, como por exemplo, um servidor mestre MODBUS, que neste caso funciona como o servidor da aplicao. A interface OPC torna possvel a interoperabilidade entre aplicaes de automao e controle, sistemas de dispositivos de campo e aplicaes situadas em nveis mais altos na hierarquia de uma planta industrial.

124

6.7.2

COMPUTADOR

O computador utilizado pode inuenciar de modo preponderante a velocidade qual se pretende adquirir os dados e como tal a preciso, processamento e armazenamento dos dados. Existem diversos fatores na arquitetura do computador que afetam os parmetros referidos anteriormente, tais como o tipo de processador, as placas de expanso disponveis (ISA ou PCI), tempo de acesso ao disco rgido, utilizao de Acesso Direto Memria (DMA), etc. Estes se tornam extremamente relevantes quando se pretendem efetuar leituras com elevadas transferncia de dados, no sendo particularmente decisivos para a tarefa de medies de estruturas estticas, como o caso deste projeto. Assim os requisitos de capacidade de processamento do computador no crtico, podendo ser utilizado qualquer um que obedea as recomendaes mnimas do fabricante do sistema supervisrio e do gerenciador mestre Modbus, ou seja, processador Pentium III, 1 GHz velocidade de barramento e 512 MB de memria RAM. As aplicaes desenvolvidas so executadas no computador sobre o sistema operacional Windows.

6.8

SOFTWARE DE AQUISIO DE DADOS

Com a nalidade de validar os ns de rede e tambm da factibilidade do conceito, foi desenvolvido um sistema de aquisio de dados baseado em computadores pessoais que fornece interao e comunicao com os ns. O equipamento de aquisio de dados utiliza um software para coletar e visualizar os dados. No PC instalado um software que monitora, em tempo real, os sinais provenientes da rede de sensores. Existem diversos tipos de softwares disponveis para efetuar aquisio de dados, desde os especcos para determinadas aplicaes at plataformas de desenvolvimento de aplicaes de alto nvel. Em particular, as telas para o gerenciamento, monitoramento, controle, ensaios e simulaes do prottipo, foram geradas atravs do software supervisrio Elipse SCADA, da empresa Elipse Software Ltda. Escolheu-se este produto por ser um sistema SCADA com alguns recursos de comunicao com outros programas e ainda porque o laboratrio de automao industrial do CESUMAR, onde o autor trabalha, j possua licena de uso para este. Existem muitos sistemas similares a este no mercado, mas a escolha foi baseada nos critrios anteriormente mencionados.

125

Este tipo de ferramenta apresenta um conjunto de objetos grcos previamente denido, permitindo desenvolver programas para adquirir os sinais recebidos pelo equipamento de aquisio, transformando-os para as grandezas pretendidas. Tambm permite uma interao amigvel com o usurio e disponibiliza a este diversas possibilidades para tratar os dados provenientes da rede de comunicao. Assim, possvel visualizar os dados na tela do monitor, armazen-los em memria e acionar sinais de sada para aes de controle. O desenvolvimento de programas utilizando um sistema supervisrio orientada por telas (ou janelas) que funcionam sob o formato da possibilidade de abertura destas conforme a necessidade. possvel criar vrias formas de apresentao dos valores medidos, quer em termos de valor absoluto, quer em termos de grcos ou tabelas. Sero descritos a seguir a utilidade e o funcionamento daquelas mais importantes.

6.8.1

TELA PRINCIPAL

Na Figura 78 tem-se a tela principal da aplicao supervisria desenvolvida no Elipse Scada. A partir desta possvel acessar outras com funcionalidades especcas. A partir da tela principal, h um conjunto de botes que podem ser utilizados para chamar as seguintes telas: Congurao de Hardware. Congurao do Canal Carregar Congurao Aquisio e Visualizao Exportar Dados Sair.

6.8.2

TELA HABILITAO TERMINAIS

Existe uma tela para habilitar os terminais que sero monitorados. Na Figura 79 mostrado que esto sendo monitorados os valores dos terminais nmero 1, 8 e 17. Observe que a tela permite o gerenciamento de 32 sensores. O sistema pode, ainda, ser estendido para um nmero maior de sensores, limitados a 247 na rede MODBUS-RTU, tendo em vista que cada unidade sensora ter seu endereo prprio e diferente das demais.

126

Figura 78: Tela inicial do sistema supervisrio (Elipse Scada)

Figura 79: Tela do supervisrio (Elipse Scada) para a habilitao dos terminais

6.9

TELA DE AQUISIO DOS DADOS

Nesta tela, o usurio consegue visualizar os valores da variveis, tais como o fator de deformao e a temperatura dos sensores extensomtricos de um dos ns da rede, atravs de grcos

127

ou por meio de displays. A tela de aquisio dos dados pode ser vista na Figura 80. Nesta, h um objeto do tipo setpoint para digitar o valor do terminal que se deseja monitorar. Um grco de tendncia mostra os valores do fator de deformao e da temperatura a cada instante de tempo, atravs do qual pode-se acompanhar a realizao de ensaios. Dois botes, Iniciar e Finalizar, permitem disparar e nalizar o ensaio em qualquer instante de tempo.

Figura 80: Tela inicial do sistema supervisrio (Elipse Scada) Existe um objeto do tipo tabela para se visualizar os valores numricos das amostras sendo coletadas a cada instante. Tambm possvel mudar o tamanho da janela do ltro de mdia mvel do n da rede atravs desta tela.

6.9.1

TELA DE HISTRICOS

Tambm ao se selecionar o boto "clique aqui para visualizar gracamente os dados do histrico", abre-se a tela de visualizao dos grcos, denominada tela de Histricos. Por meio desta tela possvel gerar arquivos de dados histricos para posterior anlise e carregar antigos arquivos histricos. Na primeira aba visualizado o histrico desejado, conforme pode ser visto na Figura 81.

128

Figura 81: Tela de visualizao dos dados do histrico (Elipse Scada)

Na terceira aba visualizado as opes relativas as "penas" de marcao no grco. A palavra "penas" provavelmente seja inspirada nas canetas antigas. Aqui, signica o equivalente a uma caneta marcadora que desliza sobre um papel deixando marcada sua trajetria, ou seja, utilizada para compor grcos de evoluo de uma varivel ao longo do tempo. Isto pode ser visualizado na Figura 82.

Figura 82: Tela do Elipse Scada para congurao das "penas" do histrico.

Na quarta aba (conguraes) so denidos a base de dados desejada e as informaes da batelada que se deseja acessar. Na Figura 83 mostrada a tela para seleo do banco de dados a ser utilizado para armazenar os dados coletados.

129

Figura 83: Tela do Elipse Scada para congurao dos dados do histrico.

Na quinta aba (consulta) podem ser congurados os critrios de consulta, por lote, por data, etc. A Figura 84 ilustra essa situao.

Figura 84: Tela do Elipse Scada para congurao para recuperao de dados por consulta entre datas e horas.

A sexta tela (Figura 85) congura a impressora e imprime os dados do histrico. Diversas outras funes podem ser utilizadas. No entanto, por limitao de tamanho, s foram mostradas as principais.

130

Figura 85: Tela do Elipse Scada para congurar a Impresso dos dados do histrico.

RESULTADOS E DISCUSSES

Neste captulo so descritos os resultados obtidos com base em observaes colhidas dos prottipos desenvolvidos. Segue-se uma discusso dos mesmos procurando estabelecer uma correlao dos resultados obtidos com os esperados inicialmente.

7.1

CARACTERSTICAS TCNICAS DO SISTEMA DESENVOLVIDO

Protocolo: MODBUS-RTU. Interface de comunicao: RS485 par diferencial. Topologia: Barramento. Distncia mxima dos ns: 1200 metros (contados a partir da unidade mestre). Quantidade mxima de pontos: 32 (31 terminais mais a unidade mestre). Velocidade: 9600 BPS; Paridade: Nenhuma. Nmero de Bits: 8. Nmero de bits de parada: 1. Nmero mximo de Aquisies de cada n: 10 por segundo. Resoluo: 10 bits (210 =1024 divises). Extensmetros eltricos de resistncia de 120 . Congurao dos extensmetros em 1/4, 1/2 ou Ponte completa.

132

7.2

VALIDAO DA QUALIDADE DA COMUNICAO

Um dos maiores esforos deste trabalho foi no sentido de desenvolver um sistema de comunicao robusto e convel para a aquisio dos dados distribudos remotamente. Para tanto foi implementado no rmware de cada microcontrolador dos terminais de rede os comandos bsicos do protocolo MODBUS-RTU. No captulo anterior, DESENVOLVIMENTO DO SISTEMA DE AQUISIO DE DADOS, foi apresentado o conversor de interface RS232 para RS485. A seguir so mostrados os resultados dos testes de comunicaes realizados.

7.2.1

TESTES

Os procedimentos de testes para validar a implementao, envolveram a anlise do comportamento do prottipo utilizando softwares analisadores de protocolo de comunicao Modbus de dois fabricantes diferentes, cuja nalidade especca a de realizar a anlise da qualidade do bilhete e da qualidade da comunicao. Para a realizao dos experimentos, foram instaladas trs unidades de rede, a primeira com o nmero 1, foi instalada a 10 metros da unidade mestre. A segunda (nmero 8) foi instalada a 12 metros de distncia e a terceira (nmero 17) foi colocada a 15 metros. A primeira fase de testes consistiu em vericar a conformidade dos comandos Modbus implementados nas estaes escravas. Para tanto, foram congurados os parmetros de comunicao utilizando o software Modbus Poll, conforme mostrado na Figura 86 e selecionada como unidade de teste a estao nmero 8, conforme mostrado na Figura 87.

Figura 86: Congurao da Comunicao no software MBPOLL

133

Figura 87: Congurao dos Comandos no MBPOLL Foram enviados manualmente uma srie de bilhetes para a estao nmero 8, conforme mostrado na Figura 88. Todos os bilhetes foram transmitidos com sucesso pelo servidor Modbus e tambm foram obtidas com sucesso as respostas esperadas, o que indicou que os comandos implementados nas estaes escravas estavam funcionando adequadamente.

Figura 88: Trfego de dados no software MBPOLL O segundo teste foi realizado agora no modo automtico, ou seja, o mesmo bilhete retransmitido periodicamente em taxas de: 10, 5, 4, 2, 1 e 0,5 aquisies por segundo. Para essa tarefa tambm foi utilizada o software Modbus Poll. Para cada uma das funes Modbus (1xxxxx, 2xxxxx, 3xxxxx e 4xxxxx) foram feitas no mnimo 10.000 transaes com resultados excelentes. A Figura 89 mostra o resultado de uma bateria de testes, onde foram enviados 14.812 bilhetes para a estao nmero 8, a uma taxa de 4 bilhetes por segundo. Todos os bilhetes foram enviados com sucesso pela unidade mestre e a estao escrava nmero 8 tambm respondeu com sucesso a todas as solicitaes recebidas. Em nenhum caso houve um erro sequer. Aps os resultados animadores vericados anteriormente foi repetida a mesma seqncia

134

Figura 89: Nenhum erro em 14812 transaes utilizando o software Modbus Poll de testes, agora utilizando outro software analisador de protocolo, o Modbus Tester Verso 0.3 (beta). Foram enviados 12.545 bilhetes para a estao nmero 8, a uma taxa de 10 bilhetes por segundo. A Figura 90 mostra o software utilizado para a segunda seqncia de testes.

Figura 90: Nenhum erro em 12545 transaes utilizando o software Modbus Tester Verso 0.3 (beta) Os resultados foram similares aos da experincia anterior. Tambm no foi detectado nenhum erro. Outros testes foram realizados, utilizando outras estaes e outros comandos, com resultados semelhantes. Isto levou a concluir que os cdigos dos programas implementados no rmware das estaes escravas esto em conformidade com o padro do protocolo Modbus RTU e o meio fsico de comunicao utilizado (RS485) convel. Quanto a conabilidade do meio fsico, isto s veio a conrmar o resultado positivo vericado em outras milhares de aplicaes nas indstrias que o utilizam. Deve-se ressaltar que, pela prpria caracterstica do protocolo, mesmo que houvesse alguma transmisso com erro, o protocolo automaticamente descartaria o bilhete defeituoso.

135

7.3

VALIDAO DA QUALIDADE DOS DADOS

Nesta seo ser analisado a qualidade do sistema condicionador de sinais. Primeiramente foram feitos os ajustes de calibrao necessrios. Inicialmente foi ajustado o patamar de tenso de meia escala. Este valor foi xado em 2,100 Volts. O procedimento para calibrao foi descrito previamente no captulo anterior. Em seguida foi feito o ajuste de zero da ponte. Estando o n da rede calibrado, o prximo passo foi fazer a coleta dos dados a partir do sistema supervisrio.

7.3.1

PREPARAO DO EXPERIMENTO

A especicao do extensmetro a ser aplicado no trivial. Uma escolha adequada requer conhecimento de vrios aspectos relacionados ao objetivo de sua aplicao, ao processo de medio e aos materiais aplicados. Existe uma ampla gama de modelos, disponibilizados pelo mercado por diversos fabricantes. Para atender a nalidade do presente trabalho, foram utilizados extensmetros da marca Kyowa, do tipo KFG-5-120-C1-11, uniaxiais, cujas caractersticas passam a ser descritas (PENTEADO NETO, 2005). A denominao KFG diz respeito srie selecionada, e as letras iniciais so oriundas das palavras Kyowa Foil Gauges, relacionadas a extensmetros de uso geral e que possuem uma forma plana. Os extensmetros da srie KFG podem ser de trs tipos, denominados uni, bi ou triaxiais, em funo das direes nas quais se pretende medir os esforos mecnicos. As sries variam, ainda, em funo do material sobre os quais sero aplicados como, por exemplo: metais, concreto, materiais compsitos e papis. As sries so divididas, tambm, pela nalidade para as quais os extensmetros so especicados como, por exemplo, para a medio de trao; para o acompanhamento do desenvolvimento de ssuras e respectiva velocidade de propagao, medio de tenso residual, etc. O cdigo 5, diz respeito ao comprimento do extensmetro, que nesse caso de 5 milmetros. O cdigo 120, diz respeito resistncia hmica que de 120. C1 o lay-out do extensmetro, dentre os aproximadamente 40 modelos oferecidos pelo fabricante. O nmero 11 se refere ao coeciente de expanso linear que, neste caso, de 11, 7 106 /C Para a validao foram utilizados extensmetros modelo KFG-5-120-C1-11 (descrito no pargrafo anterior), compensado termicamente para estruturas de ao, de resistncia nominal de 120.2 0.2, Fator de Sensibilidade (Gauge-Factor) 2.11 1,0 % (@24 C). Fabricados pela Kyowa. Estes extensmetros foram ligados em congurao de 1/4 de ponte para medio de esforo devido ao momento etor aplicado a uma chapa de de ao plana de 150 mm de comprimento por 50 mm de largura e 1 mm de espessura. O extensmetro foi xado na regio

136

central da placa, eqidistante das extremidades. A Figura 91 mostra o extensmetro xado no elemento de teste.

Figura 91: Extensmetro eltrico ligado em congurao de 1/4 de ponte utilizado para o experimento Como j mencionado, o extensmetro utilizado do tipo laminar (foil gauge) cuja representao esquemtica pode ser vista na Figura 92.

Figura 92: Extensmetro CFG-5-120-C1-11 utilizado Os softwares mencionados anteriormente so s analisadores de protocolo e foram utilizados para validar a implementao do protocolo nos terminais de rede. Para a aquisio dos dados dos experimentos foi utilizado o servidor Modbus Kepware Server Verso 4.0. Como j explicado anteriormente, este funciona como um mestre Modbus e tambm como um servidor OPC. A congurao dos parmetros de comunicao pode ser vista na Figura 93.

137

Figura 93: Congurao dos parmetros de Comunicao do Servidor OPC MODBUS

Para o teste inicial, foram congurados trs ns de redes, com os nmeros 1, 8 e 17, respectivamente. A congurao dos ns pode ser visualizada na Figura 94.

Figura 94: Congurao do Servidor OPC MODBUS

7.3.2

DESVIO COM O PASSAR DO TEMPO

O sistema foi iniciado vrias vezes, conforme mostrado na Tabela 7.

138

Tabela 7: Tempo de Estabilizao do sistema nmero Tempo 1 2 3 4 5 6 7 8 9 10 2 min, 32 seg 2 min, 28 seg 2 min, 24 seg 2 min, 22 seg 2 min, 23 seg 2 min, 25 seg 2 min, 25 seg 2 min, 19 seg 2 min, 22 seg 2 min, 25 seg

Foram realizadas 10 seqncias de ligamento do sistema e aguardou-se at que casse estvel quando ento este tempo foi medido. Em todas as experincias o sistema cou ligado por 5 minutos quando ento era desligado. Aguardava-se outros 5 minutos para o resfriamento do sistema e em seguida era ligado novamente. O tempo mximo para estabilizao foi de 2 minutos e 32 segundos. O tempo mdio cou em torno de 2 minutos e 24 segundos. A Figura 95 ilustra o instante inicial de uma das experincias quando o sistema ainda estava em regime transiente.

Figura 95: Tela de coleta de dados logo aps o sistema ter sido ligado (regime transiente)

139

Depois de entrar em regime permanente, observou se que o sistema estvel com o passar do tempo. Isto pode ser vericado atravs da Figura 96.

Figura 96: Tela de coleta de dados mostrando estabilidade com o passar do tempo (regime permanente)

7.4

REPETIBILIDADE

O termo repetibilidade refere-se a capacidade de um instrumento fornecer a mesma leitura de peso para um determinado objeto e de retornar a zero aps cada ciclo de pesagem. O teste feito pesando-se repetidamente um mesmo objeto. Para a aquisio de dados foi utilizado o software Elipse Scada V. 2.9. A seqncia de procedimentos foi a seguinte: Inicialmente o sistema foi deixado em repouso at que o sistema se estabilizasse. Depois foi colocado e retirado alternadamente por 13 vezes um corpo de carga de 255 gramas (no caso foi utilizado como carga, a carcaa de um transformador). A Figura 97 mostra o corpo de prova colocado no elemento de medio, enquanto que a Figura 98 mostra a tela com o resultado das medies. Como resultado, quando aplicado a carga o resultado medido foi de 341 unidades 1, o que equivale a uma repetibilidade de 1 bit de resoluo do conversor AD (10 bits),valor que pode ser considerado excelente se levarmos em conta a limitao dos componentes utilizados.

140

Figura 97: Elemento utilizado como carga para o experimento

Figura 98: Teste de Repetibilidade

7.4.1

HISTERESE

Histerese uma propriedade dos materiais elsticos, resultando em diferentes indicaes de deformao para uma mesma fora aplicada, dependendo da direo da aplicao da fora, ou seja, se o carregamento est aumentando ou diminuindo sobre o corpo. mais pronunciado no ponto de meia escala. A Figura 99 mostra uma curva tpica.

141

Figura 99: Curva de histerese para materiais elsticos

Dois corpos de pesos diferentes foram adicionados um aps o outro sobre a chapa metlica que contm um extensmetro eltrico de resistncia. Foi observado que ao se retirar o segundo corpo a medida no retornou ao valor inicial antes da sua insero, mesmo aps um longo perodo, conrmando que o sistema de medida utilizado possui uma certa histerese associada. Isto pode ser observado na Figura 100.

Figura 100: Tela de Aquisio

7.4.2

DERIVA DEVIDO TEMPERATURA

A sensibilidade a deriva como uma variao em temperatura pode afetar a medida de um sistema. Basicamente esse parmetro diz qual deve ser o comportamento esperado com a variao da temperatura. Idealmente, o valor do extensmetro deveria mudar somente devido a deformaes da superfcie a que est xado. No entanto, tanto o material de que feito o extensmetro quanto o corpo de prova em que ele est xado tambm respondem a variaes de temperatura. Os fabricantes dos extensmetros tentam minimizar estes efeitos atravs da utilizao de materiais

142

que compensem a expanso trmica do material para o qual projetado. Enquanto que essa compensao reduz a sensibilidade trmica, esta no totalmente eliminada. O procedimento consistiu em colocar o conjunto do corpo de prova e o sistema de aquisio connados em uma caixa fechada, simulando uma estufa, de maneira que a temperatura fosse igual para ambos os elementos. Para tanto aguardou-se um tempo suciente para que o sistema entrasse em equilbrio trmico, caracterizado atravs da estabilidade dos valores de ambos os elementos: extensmetro e sensor de temperatura. Veja a Figura 101.

Figura 101: Grco mostrando a situao inicial do experimento A relao entre nmero de pontos da escala e temperatura pode ser obtida da seguinte forma: O LM35 fornece uma tenso proporcional de 10 mV/C a partir de 0C. Assim, se sua sada em um dado instante for de 200 mV, pode-se inferir que a temperatura de 20 C. Para aumentar a resoluo, foi acrescentado um amplicador de ganho igual a 1 +
10.2 3.3

= 4.09. Assim, para

cada grau a partir de zero, tem-se uma tenso de 40.9 mV na sada do amplicador. Esta tenso capturada pelo conversor AD. Como a resoluo de 10 bits (1024 pontos) e a alimentao de 5 Volts, pode-se obter a relao entre o nmero de pontos e a temperatura, na seguinte equao:

T = n 0.1194 onde T a temperatura em graus Celsius e n o nmero de pontos medido. O procedimento seguinte foi ligar um soprador trmico com jato direcionado para o interior do espao. A temperatura inicial era de 238 pontos 28.5 C, aps o aquecimento registrou-se =

143

um pico de 325 pontos 38.8 C. Os resultados podem ser vistos na Figura 102. Como pode-se = observar, o sistema manteve-se relativamente estvel, apesar da grande variao de temperatura a que o conjunto foi submetido, o que indica que o algoritmo implementado para correo dos desvios trmicos conforme descrito no Captulo PROJETO, MONTAGEM E TESTES DO TERMINAL DE AQUISIO, Sees 5.7 a 5.9, funcionou como esperado.

Figura 102: Grco mostrando a evoluo da temperatura e da sensibilidade trmica do extensmetro durante a fase do aquecimento e desaquecimento. Foi observado durante a fase de testes que, devido a inrcia, histerese e capacidade trmica dos materiais envolvidos, o sensor de temperatura detecta primeiro a variao do que o corpo de prova. Observou-se que aps o desligamento do soprador trmico, o valor da temperatura do sensor LM35 estabilizou muito mais rapidamente do que a do extensmetro, que ainda continuava a subir, demonstrando uma inrcia trmica maior do que a do sensor. Considerando que os materiais so diferentes na sua composio, massa, volume e geometria e tambm esto separados espacialmente, era esperado que os coecientes de transferncia de calor de ambos fossem diferentes, como de fato se comprovou. O prximo passo foi monitorar a curva de resposta do resfriamento de ambos por um tempo de cinco minutos, que tambm mostrou diferena signicativa entre a temperatura medida pelo sensor e a resposta do extensmetro, como j esperado. Como concluso, pode-se armar que a compensao de extensmetros ligados em congurao de de ponte s pode ser feita aps transcorrido um tempo suciente para que ambos, sensor e corpo de prova, atinjam a mesma temperatura. No entanto, isto dependente do material e das condies do local, sendo muito difcil a realizao deste procedimento. Recomendase, portanto, que sempre que possvel, se utilize a congurao de ponte utilizando um extensmetro inativo (dummy gauge) para compensao. Esta tcnica passa a ser descrita a seguir. Atravs da utilizao de dois extensmetros na ponte, o efeito da temperatura pode ser

144

praticamente eliminado. Por exemplo, na Figura 103 ilustrado uma congurao onde um extensmetros ativo (R + R), e um segundo extensmetro inativo (conhecido como dummy gauge) xado em uma pea do mesmo tipo de material que o extensmetro ativo. Assim, qualquer alterao da temperatura vai afetar ambos os extensmetros da mesma maneira. Ento, se a variao da temperatura for idntica para ambos, a razo entre suas resistncias no se altera e por conseqncia, tambm a tenso de sada V o permanece inalterada.

Figura 103: Utilizao de um extensmetro inativo para eliminar os efeitos da temperatura No entanto, como j prtica comum dos laboratrios de ensaios de esforos, deve se utilizar preferencialmente, a congurao em ponte completa utilizando 4 extensmetros ativos, onde os efeitos trmicos so auto-compensados.

CONCLUSES E SUGESTES PARA TRABALHOS FUTUROS

Este trabalho descreve o projeto, desenvolvimento, implementao e validao de um sistema conectado em rede para aquisio de dados de esforos em estruturas fsicas utilizando como elementos sensores os extensmetros eltricos de resistncia (strain gauges). O objetivo deste trabalho consistiu em se produzir uma interface de aquisio de dados distribuda em rede, a implementao de um protocolo de comunicao entre estas unidades remotas e um microcomputador, no qual desenvolveu-se um programa para a exibio dos resultados coletados nas unidades de rede. Neste captulo so elencados os pontos fortes e fracos identicados durante a produo deste trabalho. Algumas concluses so fornecidas e so apontadas possveis futuras direes para complement-lo.

8.1

VIABILIDADE DO CONCEITO

Foram construdos e testadas quatro unidades de rede no laboratrio experimental e em bancada, com sucesso. No que diz respeito rede de comunicao, tanto a recepo quanto a transmisso do sinal se mostraram conveis e livres de erros. Os resultados foram motivadores para que se persista conando nessa soluo. O sistema supervisrio mostrou-se eciente e robusto na tarefa de coleta, armazenamento e visualizao dos dados vindos da rede de sensores. Por meio de uma interface amigvel foi possvel a realizaco de ensaios. A leitura de outras variveis, tal como a temperatura tambm foi satisfatria. Os bons resultados apresentados pelo supervisrio demonstraram a potencialidade deste sistema e encoraja o prosseguimento desta soluo para a implementao de novas funcionalidades eventualmente necessrias.

146

A losoa empregada para a leitura dos valores dos extensmetros, o tratamento eletrnico de sinal, tanto em nvel de hardware quanto em nvel de software, se mostrou consistente. Em relao ao tempo de resposta do conjunto, este se mostrou adequado ao objetivo proposto incialmente de monitorao de estruturas estticas. ainda importante ressaltar que, com o desenvolvimento desse sistema, o projeto e a construo da plataforma de aquisio e seus elementos de apoio, como o aplicativo de software, foi possvel agregar know-how nacional e local nesta rea de desenvolvimento. Os resultados obtidos com a utilizao do prottipo em experimentos pilotos so encorajadores, pois indicam que os conceitos apresentados aqui, tanto os sistemas de hardware e software desenvolvidos, so viveis.

8.2

LIMITAES

O protocolo MODBUS-RTU foi o protocolo escolhido por apresentar diversas vantagens, tais como: a interoperabilidade, o determinismo, a conabilidade dos dados, entre outras. O propsito no foi resolver um problema isolado, e sim estender a soluo encontrada para outras aplicaes. A aplicao desenvolvida, da coleta de dados de sensores distribudos em rede, forneceu subsdios importantes para o desenvolvimento proposto. Apesar de ter atingido os objetivos propostos inicialmente, esta implementao merece aperfeioamentos em alguns aspectos. O consumo de energia relativamente alto, principalmente pela utilizao de sensores extensomtricos de baixa resistencia hmica, que cam constantemente drenando energia. Para reduzir o consumo de corrente pela ponte de Wheatstone, poderia-se considerar a utilizao de extensmetros de maior resistncia, ou ainda, implementar circuitos de controle de alimentao, que somente seria ligada no instante de se obterem as amostras. Tambm poderia-se considerar o uso de circuitos integrados dedicados operao em ponte, mas com baixo consumo de potncia. Outra limitao est associada resoluo obtida de 10 bits. Embora satisfatria para aplicaes que envolvam grandes variaes relativas do valor de carga, como foi o caso da aplicao deste projeto, pode no ser adequada para outras, que necessitem detectar pequenas variaes.

147

8.3

SUGESTES PARA TRABALHOS FUTUROS

Os resultados obtidos com o prottipo mostram que o mesmo atende s expectativas inicialmente denidas e possibilitam a abertura de oportunidades para a continuidade do trabalho visando otimiz-lo ainda mais. Podemos sugerir, por exemplo: Os sistemas comerciais prossionais utilizam normalmente resoluo de 12 bits. Este ndice de desempenho pode ser facilmente atingido se forem utilizados conversores analgico/digital tipo delta-sigma de 21 ou 24 bits, relativamente fceis de se encontrar atualmente no mercado e mais baratos que de outras tecnologias. Determinar a viabilidade de uso de uma fonte de energia alternativa, que atenda a demanda operacional do sistema, tal como, por exemplo, uso da energia solar. O sistema desenvolvido incorpora algumas das vantagens dos sistemas sem-os, tal qual a aquisio e condicionamento local dos sinais e facilidade de instalao. Embora originalmente o sistema proposto no tenha sido desenvolvido para ser wireless, tambm h a possibilidade de vir a ser. O protocolo de comunicao utilizado para este projeto o MODBUS-RTU que dene apenas a camada 7 (camada de aplicao) do modelo ISO/OSI (MODBUS-IDA, 2007a) e portanto no especica a camada fsica de transmisso, que pode ser serial cabeada, serial bra tica, Ethernet TCP/IP ou qualquer outra compatvel, inclusive sem-os. Pode-se implementar ainda um sistema misto contendo elementos cabeados e sem-os, pois existem no mercado equipamentos que fazem a converso de protocolos (gateways), como por exemplo de MODBUS-RTU para ETHERNET sem o (802.11b/g), MODBUS-RTU/ZIGBEE, MODBUS-RTU/BLUETOOTH e mais recentemente surgiram alguns fabricantes oferecendo conversores GPRS/MODBUS, que podem permitir o acesso rede de sensores atravs de um aparelho celular. Assim se cada unidade for acoplada a um desses conversores o sistema passa a ser tambm sem-o, necessitando apenas a adio dos equipamentos de converso e de uma fonte de alimentao externa. Neste caso, os eventos seriam hierarquizados, podendo ser comunicados por e-mail, sms, utilizados para acionamento de processos de segurana e controle da concessionria de pedgio (como por exemplo, em monitoramento de pontes), e armazenados em banco eletrnico de dados. Futuramente o front-end analgico do sistema de aquisio poderia ser implementado por um nico chip com funes de medio, calibragem, processamento e comunicao. Pode-se integrar os mdulos analgicos atravs do programa MOSIS (MOSIS, s.d.) de fa-

148

bricao de circuitos integrados, de forma a reduzir custos em caso de eventual produo em escala do equipamento. Nas unidades de rede poderiam ser includos outros recursos adicionais, tais como monitoramento de outras grandezas, tais como corroso, umidade, etc. Aprimoramento de estruturas do software, como por exemplo: aperfeioamento da interface usurio sistema, melhoria das rotinas de armazenamento busca, e apresentao de dados na tela; gerao de relatrios de forma que possam estar disponveis por acesso remoto, via Pager, Internet e outros; Estudar a possibilidade de medir os esforos estruturais pelo sistema piezoeltrico com utilizao, por exemplo, de cristais de quartzo, como alternativa extensometria. Incorporao de unidades de medidas de efeitos dinmicos das estruturas, como, por exemplo, vibraes.

8.4

CONSIDERAES FINAIS

Como considerao nal, ca a sugesto de que o modelo desenvolvido possa, numa etapa posterior, ser transferida para uma empresa do setor produtivo e a transformao da unidade prottipo em produto. Com isto, haveria um envolvimento contnuo entre o meio acadmico e o setor empresarial, possibilitando futuras cooperaes na continuidade deste projeto contribuindo para o desenvolvimento da tecnologia nacional.

149

Referncias Bibliogrcas
AGILENT TECHNOLOGIES, application Note 290-1Practical Strain Gage Measurements, 1999. ALLEN, P., E.; GEIGER, R.L.; STRADER, N.R., Design Techniques for Analog and Digital Circuits. McGraw Hill. 1990. ANDOLFATO, Rodrigo P.; CAMACHO, Jefferson S. e BRITO, Gilberto A. de, Extensometria Bsica, Unesp Ilha Solteira, Ncleo de Ensino e Pesquisa da Alvenaria Estrutural, endereo: http://www.nepae.feis.unesp.br/Apostilas/Extensometria basica.pdf, acessado em 30/08/2007. ARMS, S.W., GALBREATH, J.H., NEWHARD, A.T., TOWNSEND, C.P., Remotely Reprogrammable Sensors for Structural Health Monitoring, Structural Materials Technology (SMT): NDE/NDT for Highways and Bridges, 16 September 2004, Buffalo, NY, USA, 2004. ARMS, S.W. e TOWNSEND, C.P., Wireless Strain Measurement Systems - Applications & Solutions, NSF-ESF Joint Conference on Structural Health Monitoring, Strasbourg, France, Oct 3-5, 2003. BAGESTEIRO, L. B. Desenvolvimento de uma plataforma para anlise de foras produzidas por pessoas. Dissertao (Mestrado em Engenharia Mecnica), UFRGS, Porto Alegre,1996 BIELEN, P.; LOSSIE, M., VANDEPITTE, D., "A low cost wireless multi-channel measurement system for strain gauges" PROCEEDINGS OF ISMA2002 - VOLUME II, 2002, http://www.isma-isaac.be/publications/PMA_MOD_publications/ISMA2002/663_670.pdf BLUETOOTH-ORG, Bluetooth Alliance, endereo http://www.bluetooth.org acessado em novembro de 2007. BOARETTO, Neury, TECNOLOGIA DE COMUNICAO EM SISTEMA SCADA ENFOQUE EM COMUNICAO WIRELESS COM ESPALHAMENTO ESPECTRAL, Dissertao (Mestrado em Engenharia de Produo), CEFET, PONTA GROSSA, 2005. BROWNJOHN, John; TJIN, Swee-Chuan; TAN, Guan-Hong, TAN, Boon-Leong e CHAKRABOORTY, Sushanta, A Structural Health Monitoring Paradigm for Civil Infrastructure, 1st FIG International Symposium on Engineering Surveys for Construction Works and Structural Engineering, Nottingham, United Kingdom, 28 June 1 July 2004. BU, Shengrong, Wireless Ad-Hoc Control Networks, Dissertao de Mestrado em Engenharia Eltrica, Escola de Engenharia Eltrica, Computao e Engenharia de Telecomunicaes da Universidade de WOLLONGONG, CHINA, 2005.

150

CASTALDO, F.C., Investigao de Rudo e Sensibilidade em MAGFETs e Avaliao de seu Emprego no Controle de Emisso Eletromagntica em Circuitos Integrados de Potncia. Tese (Doutorado em Engenharia Eltrica), UNICAMP, 2005. CLULA. Clulas de carga. Endereo: www.celuladecarga.com.br, acessado em, agosto de 2007. CHAVES, Joo Carlos, Uso da Tecnologia GPS na Monitorao de Deformao: Sistemas, Etapas e Experimentos. Tese (Doutorado em Engenharia Civil), USP - So Carlos, 2001. COSTA, Antnio Casimiro Ferreira da, NavCim Uma Arquitectura Distribuda de Suporte ao Controlo e Superviso em Tempo-real de Processos Industriais. Dissertao (Mestrado em Engenharia Electrotcnica e de Computadores), Universidade Tcnica de Lisboa, Setembro de 1995. CUNHA, Judson Michel. Prottipo de rede industrial utilizando o padro serial RS485 e protocolo modbus. 2000. 108 f. Trabalho de Concluso de Curso (Bacharelado em Cincias da Computao) - Centro de Cincias Exatas e Naturais, Universidade Regional de Blumenau, Blumenau. DATAFORTH, Dataforth Corporation - AN118, endereo: www.dataforth.com, acessado em agosto de 2007. DEMOLDER, S. e CARLSTER, A. V., The measuring of 1/f noise of thick and thin lm resistors, Journal of Physics E: Scientic Instrumentation, Vo. 13, 1980. DOEBELIN, Ernest O., Measurement Systems - Application and Design, 5 Ed., McGrawHill, 2004. DOEBLIN, S. W.; FARRAR, C. R.; PRIME, M. B.; SHEVITZ, D. W., Damage Identication and Health Monitoring of Structural and Mechanical Systems from Changes in Their Vibration Characteristics: A Literature Review, Los Alamos National Laboratory, LA, USA, 1996. DYDENSBORG, Mads Bondo, Connection Oriented Sensor Networks, Tese (Doutorado em Cincia da computao), Universidade de Copenhagen, Dinamarca, 2004. ELGAMAL, Ahmed; CONTE, Joel P.; YAN, Linjun; FRASER, Michael, A Framework for Monitoring Bridges and Civil Infrastructure, Department of Structural Engineering University of California, San Diego La Jolla, CA, 2005. FERREIRA, Elnatan Chagas, DEMIC DEPARTAMENTO DE ELETRNICA E MICROELETRNICA. So Paulo, Disponvel em:http://www.demic.fee.unicamp.br/~elnatan/ie321/ie321.htm. Acesso em: 05 out. 2007. FRADEN, Jacob, Handbook of modern sensors: physics, designs, and applications, Editora Springer, 3 Edio,589 p., 2004. FURMAN, B.J., ME 120 Experimental Methods Force, Torque, Stress, and Strain Measurement, 2003. GIACOLETTO, L. J., Electronics Designers Handbook, second edition, McGraw-Hill Book Company, New York, 1977.

151

GALBREATH, J. H., TOWSEND, C.P.; MUNDELL, S. W.; HAMEL, M. J.; ESSER, B.; HUSTON, D.; ARMS, S. W., Civil Structure Strain Monitoring with Power-Efcient High-Speed Wireless Sensor Networks, International Workshop for Structural Health Monitoring, Stanford, CA, September, 20, 2003. GOMES, Francisco Carlos; CALIL JNIOR, Carlito, Estudo terico e Experimental das Aes em Silos Horizontais, Cadernos de Engenharia de Estruturas, USP - So Carlos, v. 7, n. 24, p. 35-63, 2005. GONALVES, Luiz Fernando, Contribuies para o Estudo Terico e Experimental de Sistema de Gerao Distribuda, Dissertao (mestrado em Engenharia Eltrica), Universidade Federal do Rio Grande do Sul, Porto Alegre, maro de 2004. HEJLL, Arvid, Civil Structural Health Monitoring - Strategies, Methods and Applications, Tese (Doutorado em Engenharia Civil), Lule University of Technology, 2007. HILL, Jason Lester, System Architecture for Wireless Sensor Networks, Tese (Doutorado em Cincia da Computao), Universidade da Califrnia, Berkeley, 2003. HILL, JASON; SZEWCZYK, ROBERT; WOO, ALEC; HOLLAR, SETH; CULLER, DAVID; PISTER, KRISTOFER, System Architecture Directions for Networked Sensors,Proceedings of the Ninth International Conference on Achitetural Support for Programming Languagens and Operating Systems, pp. 93-104, Cambridge,MA, USA, 2000. endereo: http://www.tinyos.net/papers/tos.pdf., acessado em 30/08/2007. ILARIONOV, Rajcho; SIMEONOV, Ivan; KILIFAREV, Hristo, Information system with light display for visualization of temperature, pressure and time. International Conference on Computer Systems and Technologies - CompSysTech 2005, 2005. JDM PROGRAMMER, endereo: http://www.jdm.homepage.dk/newpics.htm, acessado em 15 de novembro de 2007. KESTER, Walt, Analog Devices Inc., Practical Design Techniques for sensor signal conditioning. Published by Analog Devices. KIJEWSKI-CORREA, T., HAENGGI, M. e ANTSAKLIS, P., Multi-scale wireless sensor networks for structural health monitoring, http://www.nd.edu/~pantsakl/publications/345ISHMII05.pdf, 2005. LIN, Mark W.; THADURI, Jagan; GOPU, Vijaya, A Distributed Strain Sensor for Bridge Monitoring, Department of Civil and Environmental Engineering, UTCA - University Transportation Center for Alabama, 2003. LEONG, Wai Yie, Smart Battery Monitoring System, Monograa (Bachelor of Engineering (Honours)), Department of Information Technology and Electrical Engineering, University of Queensland, USA, October, 2001. LENG, J. S. Structural Health Monitoring of Smart Civil Structures Using Fibre Optic Sensors, Electronic Publication www.NDT.net, Vol. 10, No. 5, Maio 2005. LUI, S.C.; TOMIZUKA, M., Strategic Research for Sensors and Smart Structures Technology First International Conference on Structural Health Monitoring and Intelligent Infrastructure (SHMII-12003), Tokyo, Japan, November 1315, 2003.

152

LYNCH, J. P.; LAW, K. H.; KIREMIDYIAN, A. S.; KENNY, T. W.; CARRYER, E.; PARTRIDGE, A., The Design of a Wireless Sensing Unit for Structural Health Monitoring. Proceedings os the 3rd International Workshop on Structural Health Monitoring. Stanford, CA, USA, September 12-14, 2001. LYNCH, J. P.; KINCHO, H. L.; KIREMIDJIAN, A., A wireless modular monitoring system for civil structures, Proceedings of the 20th International Modal Analysis Conference (IMAC XX), Los Angeles, CA, USA, February 4-7, 2002. MADGETECH, STRAIN GAGES Use with BRIDGE110 datalogger - Application Note, endereo: http://www.madgetech.com/pdf_les/app_notes/bridge110_app _note.pdf, acessado em agosto de 2007. MALLADI, R.; AGRAWAL, D. P., Current and future applications of mobile and wireless networks, Communications of the ACM, ACM Press, ISSN 0001- 0782,vol. 45, no. 10, pp 144-146, 2002. MAXIM-DALLAS, APPLICATION NOTE 3426 Resistive Bridge Basics: Part One, acessado em 30/08/2007 no emdereo eletrnico http://www.maxim-ic.com/an3426, 2004. MAXIM-DALLAS, APPLICATION NOTE 3545 Resistive Bridge Basics: Part Two, acessado em 30/08/2007 no emdereo eletrnico http://www.maxim-ic.com/an3545, 2004. Measurements Group, Strain Gage Measurement System, http://www.measurementsgroup.com/guide/ta/sgms/sgmsndex.htm, acessado em janeiro de 2007. MELLO, Alexandre Jos Tuoto Silveira, Um Estudo da Aplicao de Redes de Sensores para Monitorao da Proteo Catdica em Dutos, Dissertao (Mestrado em Engenharia Eltrica e Informtica Industrial), Universidade Tecnolgica Federal do Paran - Campus Curitiba, ABRIL-2007. MODBUS-IDA.ORG, MODBUS over Serial Line Specication and Implementation Guide V1.01 - 2006, endereo: http://www.modbus.org/, acessado em agosto 2007. MODBUS-IDA.ORG, MODBUS APPLICATION PROTOCOL SPECIFICATION V1.1a - 2006, endereo: http://www.modbus.org/, acessado em agosto 2007. MODICON, MODBUS PROTOCOL, endereo: http://www.http://www.modicon.com/ techpubs/toc7.html, acessado em agosto, 2007 MORAIS, P. Gil; SANTOS, C. Almeida; CARVALHO, Mariana R., Sistema Automtico de Medio para Ensaios de Ancoragens, Centro de Instrumentao Cientca (CIC) Departamento de Geotecnia (DG) Laboratrio Nacional de Engenharia Civil, Lisboa, Portugal, 2005. endereo: http://www.mosis.org. NAGAYAMA, T.; RUIZ-SANDOVAL, M.; SPENCER JR., B. F.; MECHITOV, K. A.; AGHA, G., Wireless Strain Sensor Development for Civil Infrastructure, 2004. NAPOLINANO, Flvio, Projeto de uma clula de carga para aplicao em suspenses veiculares, Dissertao (Mestrado em Engenharia Mecnica), UNICAMP, CAMPINAS - SP, 2000.

153

NAVES, E. L. M. Desenvolvimento de uma plataforma de fora para anlise da performance biomecnica. Dissertao (Mestrado em Engenharia Eltrica), UFU, 2001. NOVUS PRODUTOS ELETRNICOS LTDA, Conceitos bsicos de RS485 E RS422, endereo: www.novus.com.br, acessado em novembro de 2007 PANHAN, Andr Marcelo, Sistema de Aquisio de Dados e Monitoramento Remoto para Cmaras Frias e Sistemas de Refrigerao, Dissertao (Mestrado em Engenharia Eltrica), Faculdade de Engenharia Eltrica e de Computao - UNICAMP, CAMPINAS, 2002. PENTEADO NETO, Renato de Arruda, Sistemas para Deteco de Falta de Alta Impedncia e de Rompimento de Condutores em Redes de Distribuio de Energia Eltrica, Tese (Doutorado em Engenharia dos Materiais), Universidade Federal do Paran, CURITIBA, 2005. PEREIRA, Marluce R., AMORIM, Cludio L., CASTRO, Maria Clicia Stelling, Tutorial sobre Redes de Sensores, Departamento de Informtica e Cincia da Computao Instituto de Matemtica e Estatstica-CTC Universidade do Estado do Rio de Janeiro, Brasil, 2003. RAGHUVANSHI, Manish, Implementation of Wireless Sensor Mote , Dissertao de Mestrado em Tecnologia, DEPARTMENT OF NUCLEAR ENGINEERING AND TECHNOLOGY INDIAN INSTITUTE OF TECHNOLOGY, KANPUR, INDIA, 2006. ROSSI, Silvano Renato, Implementao de um N IEEE 1451, baseado em ferramentas abertas e padronizadas, para aplicaes em ambientes de instrumentao distribuda, Tese (Doutorado em Engenharia Eltrica), UNESP, Ilha Solteira, 2005. RUBIO, MRIO GONGORA, Curso de Introduo Instrumentao em Engenharia Mdulo Bsico, Instituto de Pesquisas Tecnolgicas do Estado de So Paulo IPT Diviso de engenharia Mecnica, So Paulo, 2000. SANDOVAL, Manuel E. Ruiz, Smart Sensors for Civil Infrastructure Systems, Tese (doutorado em Engenharia Civil e Cincias Geolgicas), Universidade de Notre Dame, Indiana, EUA, 2004. SATO, Flvio Hiochio, Automao do Sistema de Carregamento em Ensaios Estruturais, Dissertao ( Mestrado em Engenharia Civil), UNESP - ILHA SOLTEIRA, 2002. SEDRA e SMITH, Microeletrnica, 3 ed. , Prentice Hall, 2004. SEIXAS FILHO, Constantino, Captulo 3 -Protocolos Orientados a caracter, UFMG Departamento de Engenharia Eletrnica, 2006. SCHULZ, M.J.; SUNDARESAN, M.J., Smart Sensor System for Structural Condition Monitoring of Wind Turbines, National Renewable Energy Laboratory, May 30, 2002 April 30, 2006. SEIXAS, C., Arquiteturas de sistemas de automao - Uma introduo. endereo: http://www.cpdee.ufmg.br/~seixas/PaginaII/Download/IIDownload.htm. Acesso em: 16/03/2007 SERRANO, L. M. V.; ALCOBIA, C. J. O. P. J.; MATEUS, M. L. O. S.; SILVA, M. C. G., Sistemas de Aquisio, Processamento e Armazenamento de Dados, Universidade de Coimbra, Portugal, 2003.

154

SIMUNIC, Zelimir; GASPARAC, Ivan; PAVLOVIC, Bozidar, Implementation Of Digital Measurement System In Monitoring Of Structures. Construction Informatics Digital Library , 2001, endereo: http://itc.scix.net/paper ecce-2001-33.content, acessado em agosto de 2007. SMITH, Steven W., The Scientist and Engineers Guide to Digital Signal Processing, disponvel no endereo: http://www.dspguide.com, acessado em janeiro de 2007. SNOWDON, David, Hardware and Software Infrastructure for the Optimisation of Sunswift II, Monograa (Bacharelado em Engenharia), UNIVERSITY OF NEW SOUTH WALES, SCHOOL OF ELECTRICAL ENGINEERING & TELECOMMUNICATIONS SCHOOL OF COMPUTER SCIENCE & ENGINEERING, USA, 2002. SPENCER, B. F., Opportunities and Challenges for Smart Sensing Technology, Proceedings of the First International Conference on Structural Health Monitoring and Intelligent Infrastructure, Tokyo, Japan, 2003. SYMANS, Michael D. e KELLY, Steven W., Fuzzy Logic Control of Bridge Structures Using Intelligent Semi-Active Seismic Isolation Systems, Earthquake Engineering and Structural Dynamics, v. 28, 1999. TANEMBAUM, A. S., Redes de Computadores. Editora Campus, Rio de Janeiro, 1997 THOM, V., Galerkin Finite Element Methods for Parabolic Problems, Springer-Verlag, Berlin-Heidelber, 1997. TRISTO, Ivanio Machado, IMPLEMENTAO DO PROTOCOLO PROFIBUS PARA APLICAES INDUSTRIAIS BASEADAS EM MICROCONTROLADORES, Monograa (Trabalho de Concluso de Curso de Cincia da Computao) da Universidade Luterana do Brasil, cmpus Gravata, 2004. UCSD, endereo http://healthmonitoring.ucsd.edu, acessado em agosto de 2007

Projetos de Circuitos Integrados na Universidade Estadual de Londrina: Implementao Monoltica de Sensores de Corrente e Potncia Eltrica. Projeto de Pesquisa cadastro no. 04379. XU, Ning; RANGWALE, Sumit; CHINTALAPUDI, Krishn Kant; GANESAN, Deepak; BROAD, Alan; GOVINDAN, Ramesh; ESTRIN, Deborah, A Wireless Sensor Network For Structural Monitoring, SenSys04, Baltimore, Maryland, USA. ACM, November 35, 2004. WEBSTER, J.G., Measurement, Instrumentation and Sensors Handbook, CRC Press, 2617p, 1999. WILLIAMS, C.B.; PAVIC, A.; CROUCH, R.S. e WOODS, R.C., Feasibility study of vibration-electric generator for bridge vibration sensors. Proceedings of the 16th International Modal Analysis Conference IMAC, pp. 1111 1117, 1998. WI-FI-ORG, Wi-Fi Alliance, endereo: http://www.wi-.org acessado em novembro de 2007.

155

ZEILMANN, R. P. Uma estratgia Para Controle e Superviso de Processos Industriais Via Internet. Dissertao (Mestrado em Engenharia Eltrica), Universidade Federal do Rio Grande do Sul, Porto Alegre, 2002. ZIGBEE-ORG, Zigbee Specication, endereo : http://www.zigbee.org acessado em agosto de 2007.

156

ANEXO I - ESQUEMA ELTRICO COMPLETO DO TERMINAL DE REDE

Figura 104: DIAGRAMA ESQUEMTICO COMPLETO DO N DE REDE

157

ANEXO II - LISTAGEM DOS PROGRAMAS DO TERMINAL DE REDE


MB_SLAVE . H / * ARQUIVO CABEALHO COM AS DEFINIES DAS VARIVEIS , ENDEREOS DE DISPOSITIVOS DE ENTRADA E SADA E DEMAIS CONSTANTES UTILIZADAS POR TODOS OS PROGRAMAS DO SISTEMA * / # i f n d e f _MB_SLAVE # d e f i n e _MB_SLAVE TRUE # d e f i n e _PIC # d e f i n e WDT_EN TRUE # i f d e f _PIC # i n c l u d e <16 F876 . h> # d e v i c e = * =16 # d e v i c e a d c =10 # u s e f a s t _ i o (A) # u s e f a s t _ i o (B) # u s e f a s t _ i o (C) #FUSES XT #FUSES PUT #FUSES NOPROTECT #FUSES BROWNOUT #FUSES NOLVP #FUSES NOCPD #FUSES NOWRT #FUSES NODEBUG # i f WDT_EN #FUSES WDT # u s e d e l a y ( c l o c k =4000000 ,RESTART_WDT) # u s e r s 2 3 2 ( baud =9600 , x m i t =PIN_C6 , r c v =PIN_C7 , BRGH1OK, ERRORS) #else #FUSES NOWDT # u s e d e l a y ( c l o c k = 400 000 0) # u s e r s 2 3 2 ( baud =9600 , x m i t =PIN_C6 , r c v =PIN_C7 , BRGH1OK, ERRORS) # endif typedef int1 typedef unsigned char typedef unsigned int16 typedef unsigned int32 # d e f i n e LED_TX # d e f i n e LED_RX # d e f i n e LED_LEFT # d e f i n e LED_CENTER # d e f i n e LED_RIGHT # endif # i f d e f _8051 s b i t LED_RX s b i t LED_TX s b i t AF # d e f i n e ENABLE_WDT # d e f i n e RESET_WDT # d e f i n e SET_TIME_WDT_128MS # endif # d e f i n e LIGADO # d e f i n e DESLIGADO # d e f i n e BITS_UCHAR # i f n d e f TRUE # d e f i n e TRUE # endif # i f n d e f FALSE # d e f i n e FALSE # endif # d e f i n e MB_REG_WRITE # d e f i n e MB_REG_READ # d e f i n e MB_ADDRESS_BROADCAST # d e f i n e MB_ADDRESS_MIN # d e f i n e MB_ADDRESS_MAX # d e f i n e MB_FUNC_NONE # d e f i n e MB_FUNC_READ_COILS # d e f i n e MB_FUNC_READ_DISCRETE_INPUTS # d e f i n e MB_FUNC_READ_HOLDING_REGISTER # d e f i n e MB_FUNC_READ_INPUT_REGISTER 0 1 0 1 / * ENDEREO PARA BROADCAST DO MODBUS. * / / * MENOR ENDEREO POSSVEL * / 0 1 0 1 8U = P2 ^ 4 ; WMCON | = 1 ; WMCON | = 2 ; WMCON &= (2551286432); WMCON | = 1 2 8 ; = P2 ^ 0 ; / / p i n o 21>R7>Q1>R9>D3 = P2 ^ 2 ; / / p i n o 23 1 2 16 8 4 UCHAR; USHORT ; ULONG; / / LED1 QA / / LED2 QB / / LED5 QE / / LED4 QD / / LED3 QC BOOL; / / 0 ou 1 / / 0 255 / / Watch Dog Timer DISABLED / / Watch Dog Timer ENABLED / / C r y s t a l o s c <= 4mhz / / Power Up Timer / / Code n o t p r o t e c t e d from r e a d i n g / / R e s e t when b r o w n o u t d e t e c t e d / / No low v o l t a g e prgming , B3 ( PIC16 ) o r B5 ( PIC18 ) u s e d f o r I /O / / No EE p r o t e c t i o n / / Program memory n o t w r i t e p r o t e c t e d / / No Debug mode f o r ICD / / WDT HABILITADO

247 / * MAIOR ENDERECO POSSVEL * / 0 1 2 3 4

158

# d e f i n e MB_FUNC_WRITE_SINGLE_COIL # d e f i n e MB_FUNC_WRITE_SINGLE_REGISTER # d e f i n e MB_FUNC_DIAG_READ_EXCEPTION # d e f i n e MB_FUNC_DIAG_DIAGNOSTIC # d e f i n e MB_FUNC_DIAG_GET_COM_EVENT_CNT # d e f i n e MB_FUNC_DIAG_GET_COM_EVENT_LOG # d e f i n e MB_FUNC_WRITE_MULTIPLE_COILS # d e f i n e MB_FUNC_WRITE_MULTIPLE_REGISTERS # d e f i n e MB_FUNC_OTHER_REPORT_SLAVEID # d e f i n e MB_FUNC_READWRITE_MULTIPLE_REGISTERS # d e f i n e MB_FUNC_READ_DEVICE_IDENTIFICATION # d e f i n e MB_FUNC_ERROR / / Modbus C o i l s / / Digital Inputs / / Analog I n p u t s / / Modbus R e g i s t e r s Bits , binary values , f l a g s Binary i n p u t s Analog i n p u t s Analog v a l u e s , v a r i a b l e s 1 1 64 1 0 1

5 6 7 8 11 12 15 16 17 23 43 128 00001 10001 30001 40001 / * OFFSET DO ENDEREO DA ESTAO ESCRAVA NO QUADRO SER PDU * / / * OFFSET DO MODBUS PDU NO QUADRO SER PDU . * /

# d e f i n e MB_SER_PDU_ADDR_OFF # d e f i n e MB_SER_PDU_PDU_OFF # d e f i n e MB_PDU_SIZE_MAX # d e f i n e MB_PDU_SIZE_MIN # d e f i n e MB_PDU_FUNC_OFF # d e f i n e MB_PDU_DATA_OFF

/ * TAMANHO MXIMO DA PDU . * / / * CDIGO DA FUNO * /

/ * OFFSET DO CDIGO DA FUNO NA PDU . * / / * OFFSET PARA O DADO DE RESPOSTA NA PDU * / /* READ */ # d e f i n e MB_PDU_FUNC_READ_SIZE ( 4 ) # d e f i n e MB_PDU_FUNC_READ_REGCNT_MAX # d e f i n e MB_PDU_FUNC_READ_DISCCNT_MAX # d e f i n e MB_PDU_FUNC_READ_RSP_BYTECNT_OFF # d e f i n e MB_PDU_FUNC_READ_ADDR_OFF # d e f i n e MB_PDU_FUNC_READ_REG_START_OFF # d e f i n e MB_PDU_FUNC_READ_REGCNT_OFF # d e f i n e MB_PDU_FUNC_READ_COILCNT_OFF # d e f i n e MB_PDU_FUNC_READ_DISCCNT_OFF ( 0x007D ) ( 0x07D0 ) ( 0 x0078 ) ( MB_PDU_DATA_OFF ) ( MB_PDU_DATA_OFF ) ( MB_PDU_DATA_OFF ) ( MB_PDU_DATA_OFF + 2 ) ( MB_PDU_DATA_OFF + 2 ) ( MB_PDU_DATA_OFF + 2 )

# d e f i n e MB_PDU_FUNC_WRITE_MUL_COILS_REGCNT_MAX

/* WRITE */ # d e f i n e MB_PDU_FUNC_WRITE_SIZE ( 4 ) # d e f i n e MB_PDU_FUNC_WRITE_ADDR_OFF # d e f i n e MB_PDU_FUNC_WRITE_VALUE_OFF ( MB_PDU_DATA_OFF ) ( MB_PDU_DATA_OFF + 2 )

/* WRITE MULT */ /* READWRITE */ # d e f i n e MB_PDU_FUNC_READWRITE_SIZE_MIN # d e f i n e MB_PDU_FUNC_READWRITE_READ_ADDR_OFF # d e f i n e MB_PDU_FUNC_READWRITE_WRITE_ADDR_OFF # d e f i n e MB_PDU_FUNC_READWRITE_BYTECNT_OFF # d e f i n e MB_PDU_FUNC_READWRITE_READ_REGCNT_OFF # d e f i n e MB_PDU_FUNC_READWRITE_WRITE_REGCNT_OFF # d e f i n e MB_PDU_FUNC_READWRITE_WRITE_VALUES_OFF # d e f i n e MB_POS_START_PDU_RTU # d e f i n e MB_POS_START_PDU_ASCII # i f n d e f MB_PORT_HAS_CLOSE # d e f i n e MB_PORT_HAS_CLOSE 0 # endif # d e f i n e MB_FUNC_OTHER_REP_SLAVEID_BUF # i f n d e f _MBERRORCODE # d e f i n e _MBERRORCODE TRUE t y p e d e f enum { MB_ER_NONE, MB_ER_INV_REG_ADDRESS , MB_ER_INV_ARGUMENT, MB_ER_INVALID_PROTOCOL , MB_ER_PORT_SERIAL , MB_ER_PORT_TIMER , MB_ER_PORT_EVENT , MB_ER_TOO_LATE , MB_ER_IO , MB_ER_ILLSTATE , MB_ER_TIMEDOUT, MB_ER_CRC, MB_ER_PDU_LENGTH } MBErrorCode ; # endif # i f n d e f _MBEXCEPTION # d e f i n e _MBEXCEPTION TRUE MB_ER_NO_RESOURCES, / * SEM ERRO * / / * ENDEREO IEGAL DE REGISTRADOR * / / * ARGUMENTO ILEGAL * / / / PROTOCOLO_INVALIDO / / e r r o na p o r t a s e r i a l / / e r r o no t i m e r / / ERRO EM EVENTOS / / Recebeu o u t r a t r a n s m i s s o a n t e s de e n v i a r a r e s p o s t a a n t e r i o r / * RECURSOS INSUFICIENTES * / / * ERRO DE ENTRADA OU SAIDA * / / * A CAMADA DO PROTOCOLO EST EM UM ESTADO ILEGAL * / / * OCORREU UM ERRO POR ESGOTAMENTO DE TEMPO * / ( 32 ) 1 3 // : A( h ) A( l ) f n c ( 9 ) ( MB_PDU_DATA_OFF ) ( MB_PDU_DATA_OFF + 4 ) ( MB_PDU_DATA_OFF + 8 ) ( MB_PDU_DATA_OFF + 2 ) ( MB_PDU_DATA_OFF + 6 ) ( MB_PDU_DATA_OFF + 9 )

159

t y p e d e f enum { MB_EX_NONE = 0 x00 , MB_EX_ILLEGAL_FUNCTION = 0 x01 , MB_EX_ILLEGAL_DATA_ADDRESS = 0 x02 , MB_EX_ILLEGAL_DATA_VALUE = 0 x03 , MB_EX_SLAVE_DEVICE_FAILURE = 0 x04 , MB_EX_ACKNOWLEDGE = 0 x05 , MB_EX_SLAVE_BUSY = 0 x06 , MB_EX_MEMORY_PARITY_ERROR = 0 x08 , MB_EX_GATEWAY_PATH_FAILED = 0x0A , MB_EX_GATEWAY_TGT_FAILED = 0x0B } MBException ; # endif # i f n d e f _MBMODE # define t y p e d e f enum { MB_RTU, MB_ASCII , MB_TCP } MBMode ; # endif # i f n d e f _MBPARITY # define t y p e d e f enum { MB_PAR_NONE, MB_PAR_ODD, MB_PAR_EVEN } MBParity ; # endif # i f n d e f _MBRCVSTATE # define t y p e d e f enum { STATE_RX_INIT =0 , STATE_RX_IDLE , STATE_RX_RCV , STATE_RX_ERROR } MBRcvState ; # endif # i f n d e f _MSSNDSTATE # define t y p e d e f enum { STATE_TX_IDLE , STATE_TX_TRANSMITTING } MBSndState ; # endif # i f n d e f _STATE_MAIN # define t y p e d e f enum { STATE_MAIN_IDLE=0 , STATE_MAIN_FRAME_RECEIVED , STATE_MAIN_START_TX , STATE_MAIN_TRANSMITTING } state_main ; # endif /* v a r i v e i s e x t e r n a s */ # i f d e f _PIC static static static static static static static static static static static static static MBErrorCode eMBErrorCode ; MBException eMBException ; MBMode state_main MBSndState MBRcvState UCHAR UCHAR UCHAR UCHAR UCHAR UCHAR UCHAR eMBCurrentMode ; estate_main ; eMBSndState ; eMBRcvState ; var_output ; gucRcvAddress ; gucRcvFunction ; gucSndBufferCount ; gucSndBufferPos ; gucRcvBufferPos ; / / p o s i o de t r a n s m i s s o do c a r a c t e r a t u a l / / p o s i o de r e c e b i m e n t o do c a r a c t e r a t u a l / / ADDRESS = e n d e r e o r e c e b i d o // FUNCTION = FUNO RECEBIDA _STATE_MAIN TRUE / * O TRANSMISSOR EST NO ESTADO DE REPOUSO * / / * O TRANSMISSOR EST NO ESTADO TRANSMITINDO * / _MSSNDSTATE TRUE / * O RECEPTOR EST NO ESTADO DE REPOUSO * / / * UM QUADRO EST SENDO RECEBIDO * / _MBRCVSTATE TRUE / * SEM PARIDADE * / / * PARIDADE IMPAR * / / * PARIDADE PAR * / _MBPARITY TRUE / * MODO RTU * / / * MODO ASCII * / / * MODO TCP * / _MBMODE TRUE

gucThisStationAddress ; / / endereo desta estao

160

static static static // static static static static static static static static static static static static static static static static // static static static static # endif

UCHAR UCHAR BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL UCHAR UCHAR USHORT

gucPUCFrameLength ; g u c R c v B u f f e r [ MB_PDU_SIZE_MAX ] ; FLAG_FRAME_RECEIVED ; FRAME_RECEIVED ; FRAME_TRANSMITTED ; FLAG_STATE_RX_IDLE ; FLAG_LED_RX_ON ; LED_RX_ON ; FLAG_LED_RX_OFF ; LED_RX_OFF ; INICIANDO = TRUE ; CALIBRANDO_PONTE=FALSE ; CALIBRANDO_SISTEMA=FALSE ; CALIBRANDO_SHUNT=FALSE ; RECALIBRANDO=FALSE ; LENDO_TEMPERATURA=FALSE ; LENDO_RECALIBRACAO ; FIRST_READING ; SISTEMA_CALIBRADO ; c R x E r r o r F l a g = FALSE ; expected ; timeout ; offset_atual ; / / b u f f e r de r e c e p o ( tambm de TRANSMISSO)

/* f u n e s e x t e r n a s */ void Start_TX ( void ) ; // serial .c void Start_RX ( void ) ; v o i d In i t _ S E R I A L (USHORT usBaudRate , v o i d Liga_LED (UCHAR mask ) ; v o i d Desliga_LED (UCHAR mask ) ; v o i d s p i _ e s c r e v e _ b y t e (UCHAR dado ) ; v o i d Le_ADC ( v o i d ) ; # i f d e f _8051 v o i d e n a b l e _ i n t e r r u p t s (UCHAR i n t e r r u p t i o n ) ; v o i d d i s a b l e _ i n t e r r u p t s (UCHAR i n t e r r u p t i o n ) ; v o i d s e t _ t i m e r 2 (USHORT t i m e o u t ) ; # endif v o i d Init_TIMER ( v o i d ) ; / / porttimer2 . c / / porttimer2 . c / / mb_rtu . c v o i d S t a r t _ t i m e r (UCHAR t i m e o u t ) ; v o i d S t a r t _ t i m e r 2 (UCHAR t i m e o u t ) ; v o i d eMBRTUInit ( USHORT usBaudRate , MBParity e P a r i t y ) ; v o i d eMBRTUStart ( v o i d ) ; MBErrorCode eMBRTUReceive ( v o i d ) ; MBErrorCode # endif eMBRTUSend ( v o i d ) ; / / main . c / / main . c / / SERIAL . C MBParity e P a r i t y ) ; // serial .c

/ / portimer2 . c

161

MB_SLAVE . C /* F i n a l i d a d e : programa p r i n c i p a l p a r m e t r o s : nenhum r e t o r n o : nenhum */ # i n c l u d e < m b _ s l a v e . h> # i n c l u d e < m b _ c o n f i g . h> / / a l g u m a s f u n e s podem s e r i m p l e m e n t a d a s ou no / / o a r q u i v o de c a b e a l h o MB_CONFIG . H u t i l i z a d o p a r a c o n f i g u r a r / / as l i n h a s abaixo # i f FUNC_READ_COILS_ENABLED # include " Func_read_coils . c" # endif # i f FUNC_READ_DISCRETE_INPUTS_ENABLED # include " Func_read_discrete_inputs . c" # endif # i f FUNC_READ_HOLDING_REGISTER_ENABLED # include " Func_read_holding_register . c" # endif # i f FUNC_READ_INPUT_REGISTER_ENABLED / / 0X04 # include " Func_read_input_register . c" # endif # i f FUNC_WRITE_SINGLE_COIL_ENABLED # include " Func_write_single_coil . c" # endif # i f FUNC_WRITE_SINGLE_REGISTER_ENABLED / / 0X06 # include " Func_write_single_register . c" # endif # i f FUNC_DIAG_READ_EXCEPTION_ENABLED # include " Func_diag_read_exception . c" # endif # i f FUNC_DIAG_DIAGNOSTIC_ENABLED # include " Func_diag_diagnostic . c" # endif # i f FUNC_DIAG_GET_COM_EVENT_CNT_ENABLED # include " Func_diag_get_com_event_cnt . c " # endif # i f FUNC_DIAG_GET_COM_EVENT_LOG_ENABLED # include " Func_diag_get_com_event_log . c " # endif # i f FUNC_WRITE_MULTIPLE_COILS_ENABLED # include " Func_write_multiple_coils . c" # endif # i f FUNC_WRITE_MULTIPLE_REGISTERS_ENABLED # include " Func_write_multiple_registers . c" # endif # i f FUNC_OTHER_REPORT_SLAVEID_ENABLED # include " Func_other_report_slaveid . c" # endif # i f FUNC_READWRITE_MULTIPLE_REGISTERS_ENABLED # include " Func_readwrite_multiple_registers . c" # endif # i f FUNC_READ_DEVICE_IDENTIFICATION_ENABLED # include " Func_read_device_identification . c" # endif # i n c l u d e " mb_rtu . c " # i f d e f _PIC # include " porttimer2_PIC . c" # include " portserial_PIC . c" # include " spi . c" # i n c l u d e " portADC . c " # endif # i f d e f _8051 # include " porttimer2_8051 . c" # include " portserial_8051 . c" USHORT gus3_5_timeout ; MBErrorCode eMBErrorCode ; MBException eMBException ; MBMode eMBCurrentMode ; MBParity eMBParity ; state_main estate_main ; MBSndState eMBSndState ; MBRcvState eMBRcvState ; UCHAR gucRcvAddress ; / / ADDRESS = e n d e r e o r e c e b i d o UCHAR gucRcvFunction ; // FUNCTION = FUNO RECEBIDA UCHAR gucThisStationAddress ; / / endereo desta estao idata UCHAR g u c R c v B u f f e r [ MB_PDU_SIZE_MAX ] ; / / b u f f e r de r e c e p o idata UCHAR * pucPUCFrame ; UCHAR gucPUCFrameLength ; UCHAR gucSndBufferCount ; UCHAR gucSndBufferPos ; / / p o s i o de t r a n s m i s s o do c a r a c t e r a t u a l UCHAR gucRcvBufferPos ; / / p o s i o de r e c e b i m e n t o do c a r a c t e r a t u a l BOOL FRAME_RECEIVED=FALSE ; BOOL FRAME_TRANSMITTED=FALSE ; # endif /**********************************/ BOOL Executa_Comando ( v o i d ) /**********************************/ { switch ( gucRcvFunction ) { # i f FUNC_READ_COILS_ENABLED case MB_FUNC_READ_COILS : / / 1 Func_read_coils ( ) ; break ; # endif # i f FUNC_READ_DISCRETE_INPUTS_ENABLED case MB_FUNC_READ_DISCRETE_INPUTS : / / 2

162

Func_read_discrete_inputs ( ) ; break ; # endif # i f FUNC_READ_HOLDING_REGISTER_ENABLED case MB_FUNC_READ_HOLDING_REGISTER : / / 3 Func_read_holding_register ( ) ; break ; # endif # i f FUNC_READ_INPUT_REGISTER_ENABLED case MB_FUNC_READ_INPUT_REGISTER : / / 4 Func_read_input_register ( ) ; break ; # endif # i f FUNC_WRITE_SINGLE_COIL_ENABLED case MB_FUNC_WRITE_SINGLE_COIL : / / 5 Func_write_single_coil ( ) ; break ; # endif # i f FUNC_WRITE_SINGLE_REGISTER_ENABLED case MB_FUNC_WRITE_SINGLE_REGISTER : / / 6 Func_write_single_register (); break ; # endif # i f FUNC_DIAG_READ_EXCEPTION_ENABLED case MB_FUNC_DIAG_READ_EXCEPTION : / / 7 Func_diag_read_exception ( ) ; break ; # endif # i f FUNC_DIAG_DIAGNOSTIC_ENABLED case MB_FUNC_DIAG_DIAGNOSTIC : / / 8 Func_diag_diagnostic ( ) ; break ; # endif # i f FUNC_DIAG_GET_COM_EVENT_CNT_ENABLED case MB_FUNC_DIAG_GET_COM_EVENT_CNT : / / 11 Func_diag_get_com_event_cnt ( ) ; break ; # endif # i f FUNC_DIAG_GET_COM_EVENT_LOG_ENABLED case MB_FUNC_DIAG_GET_COM_EVENT_LOG : / / 12 Func_diag_get_com_event_log ( ) ; break ; # endif # i f FUNC_WRITE_MULTIPLE_COILS_ENABLED case MB_FUNC_WRITE_MULTIPLE_COILS : / / 15 Func_write_multiple_coils ( ) ; break ; # endif # i f FUNC_WRITE_MULTIPLE_REGISTERS_ENABLED case MB_FUNC_WRITE_MULTIPLE_REGISTERS : / / 16 Func_write_multiple_registers (); break ; # endif # i f FUNC_OTHER_REPORT_SLAVEID_ENABLED c a s e MB_FUNC_OTHER_REPORT_SLAVEID : / / 17 Func_other_report_slaveid ( ) ; break ; # endif # i f FUNC_READWRITE_MULTIPLE_REGISTERS_ENABLED case MB_FUNC_READWRITE_MULTIPLE_REGISTERS : / / 23 Func_readwrite_multiple_registers (); break ; # endif # i f FUNC_READ_DEVICE_IDENTIFICATION_ENABLED c a s e MB_FUNC_READ_DEVICE_IDENTIFICATION : Func_read_device_identification (); / / 43 s u b c o d i g o 14 break ; # endif default : eMBException =MB_EX_ILLEGAL_FUNCTION ; } r e t u r n ( eMBException ==MB_EX_NONE ) ; } /*********************************/ MBErrorCode D e c o d i f i c a _ f r a m e ( v o i d ) /********************************/ { # i f MB_ASCII_ENABLED i f ( g u c R c v B u f f e r [ 0 ] = = : ) / / MODBUS_ASCII { eMBCurrentMode = MB_ASCII ; r e t u r n eMBASCIIReceive ( ) ; } else / / MODBUS_RTU # endif { # i f MB_RTU_ENABLED eMBCurrentMode = MB_RTU; r e t u r n eMBRTUReceive ( ) ; /* e s t a funo r e t o r n a : * p u c R c v A d d r e s s = o e n d e r e o de d e s t i n o g u s R c v F u n c t i o n = o c d i g o da f u n o r e c e b i d a * p u s L e n g t h = tamanho t o t a l do PDU a s e r p r o c e s s a d o , ou s e j a , tamanho do pdu b y t e t o t a l de b y t e s b y t e CRC */ # endif } } /**************************************/

163

BOOL E x e c u t a _ C o m a n d o _ B r o a d c a s t i n g ( v o i d ) /**************************************/ { / / # d e f i n e PIN_ENABLE_ADDRESS_CHANGING PIN_AX // i f ( CMD_SET_SLAVE_ID ) // { // i f ( PIN_ENABLE_ADDRESS_CHANGING ) // e S t a t u s = eMBSetSlaveID ( 0 x34 , TRUE , gucMBSlaveID , 3 ) ; // } r e t u r n TRUE ; } /*********************************/ MBErrorCode P r o c e s s a _ b i l h e t e ( v o i d ) /*********************************/ { eMBErrorCode = MB_ER_NONE ; eMBException = MB_EX_NONE; i f ( D e c o d i f i c a _ f r a m e ( ) == MB_ER_NONE) / / s e b i l h e t e v l i d o { i f ( g u c R c v A d d r e s s == MB_ADDRESS_BROADCAST ) { Executa_Comando_Broadcasting ( ) ; } i f ( g u c R c v A d d r e s s == g u c T h i s S t a t i o n A d d r e s s ) / / s e o b i l h e t e p r a e s t a e s t a o p r o c e s s a . Caso c o n t r r i o , i g n o r a ! { Executa_Comando ( ) ; } } r e t u r n eMBErrorCode ; } /***************************************/ UCHAR M o n t a _ b i l h e t e _ r e s p o s t a ( v o i d ) /**************************************/ { UCHAR e S t a t u s ; if ( ( g u c R c v A d d r e s s == MB_ADDRESS_BROADCAST ) / / SE BROADCASTING || ( gucRcvAddress != g u c T h i s S t a t i o n A d d r e s s ) / / OU NO PR ESTA ESTAO ) { r e t u r n FALSE ; } # i f MB_ASCII_ENABLED i f ( eMBCurrentMode == MB_ASCII ) { e S t a t u s = eMBASCIISend ( ) ; } e l s e / / MB_RTU # endif { # i f MB_RTU_ENABLED e S t a t u s = eMBRTUSend ( ) ; /* e s t a funo r e t o r n a : p u c R c v A d d r e s s = o e n d e r e o de d e s t i n o * g u s R c v F u n c t i o n = o c d i g o da f u n o r e c e b i d a * p u s L e n g t h = tamanho t o t a l do PDU a s e r p r o c e s s a d o , ou s e j a , tamanho do pdu b y t e t o t a l de b y t e s b y t e CRC */ # endif } r e t u r n ( e S t a t u s == MB_ER_NONE ) ; } /*************************/ MBErrorCode e M B S t a r t ( v o i d ) /*************************/ { # i f MB_RTU_ENABLED i f ( eMBCurrentMode == MB_RTU) eMBRTUStart ( ) ; # endif # i f MB_ASCII_ENABLED i f ( eMBCurrentMode == MB_ASCII ) eMBASCIIStart ( ) ; # endif r e t u r n MB_ER_NONE ; } /**************************************/ MBErrorCode eMBInit ( MBMode eMode , UCHAR u c S l a v e A d d r e s s , USHORT usBaudRate , MBParity e P a r i t y ) /**************************************/ { MBErrorCode e S t a t u s = MB_ER_NONE ; /* check p r e c o n d i t i o n s */ i f ( ( u c S l a v e A d d r e s s == MB_ADDRESS_BROADCAST ) | | ( u c S l a v e A d d r e s s < MB_ADDRESS_MIN ) | | ( u c S l a v e A d d r e s s > MB_ADDRESS_MAX ) ) { e S t a t u s = MB_ER_INV_ARGUMENT ; } gucThisStationAddress = ucSlaveAddress ; s w i t c h ( eMode ) {

164

# i f MB_RTU_ENABLED c a s e MB_RTU: eMBRTUInit ( usBaudRate , e P a r i t y ) ; break ; # endif # i f MB_ASCII_ENABLED c a s e MB_ASCII : eMBASCIIInit ( usBaudRate , e P a r i t y ) ; break ; # endif default : e S t a t u s = MB_ER_INVALID_PROTOCOL ; } i f ( e S t a t u s == MB_ER_NONE ) { eMBCurrentMode = eMode ; } return eStatus ; }

/ / PROTOCOLO_INVALIDO ;

/******************/ void I n i t _ s y s ( void ) /******************/ { /* F i n a l i d a d e : i n i c i a l i z a o d a s v a r i v e i s do s i s t e m a p a r m e t r o s : nenhum r e t o r n o : nenhum */ # i f d e f _PIC Init_ADC ( ) ; / / INICIALIZA PORTA s e t _ t r i s _ b ( 0 b01111100 ) ; / / 0111 1100 = 0x7C B0B1=SADAS ; B2B6=ENTRADAS ; B7=SADA ; o u t p u t _ h i g h ( PIN_B7 ) ; o u t p u t _ h i g h ( PIN_B1 ) ; o u t p u t _ h i g h ( PIN_B0 ) ; s e t _ t r i s _ c ( 0 b11010000 ) ; / / 1101 0000 = 0xD0 C0C3=SADAS ; C4 ( SDI ) =ENTRADA; C5 (SDO) =SADA ; C6 , C7 =TX /RX (ENTRADAS) o u t p u t _ h i g h ( PIN_C5 ) ; o u t p u t _ h i g h ( PIN_C3 ) ; o u t p u t _ h i g h ( PIN_C2 ) ; o u t p u t _ h i g h ( PIN_C1 ) ; o u t p u t _ h i g h ( PIN_C0 ) ; s e t u p _ s p i ( FALSE ) ; s e t u p _ t i m e r _ 0 ( RTCC_INTERNAL ) ; # i f WDT_EN s e t u p _ w d t ( WDT_144MS ) ; # endif // s e t u p _ t i m e r _ 0 ( RTCC_INTERNAL ) ; / / o t i m e r 0 u t i l i z a d o p e l o WDT s e t u p _ t i m e r _ 1 ( T1_DISABLED ) ; s e t u p _ t i m e r _ 2 ( T2_DISABLED , 0 , 1 ) ; # endif # i f d e f _8051 /*** REGISTRO IE = I n t e r r u p t E n a b l e 7 6 5 4 3 2 1 0 EA X X ES ET1 EX1 ET0 EX0 1 0 0 0 0 0 0 0 ***/ IE = 0 ; /*** REGISTRO I P = I n t e r r u p t P r i o r i t y 7 6 5 4 3 2 1 0 X X X PS PT1 PX1 PT0 PX0 0 0 0 0 0 0 1 0 ****/ IP =0; /*** REGISTRO TMOD = Timer Mode 7 6 5 4 3 2 1 0 GATE1 C/ ~ T1 M11 M01 GATE0 C/ ~ T0 M10 M00 0 0 1 0 0 0 0 1 32 1 timer0 MODO 1 M1. 0 = 0 E M0. 0 = 1 16 BITS C / RECARGA P / SOFTWARE timer1 MODO 2 M1. 1 = 1 E M0. 1 = 0 8 BITS C / RECARGA AUTOMATICA ***/ / / # d e f i n e T0_CT_ 0 x04 / * Timer 0 C o u n t e r / Timer S e l e c t : 0= C o u n t e r , 1= Timer * / TMOD= 3 3 ; /*** REGISTRO TCON = Timer C o n t r o l 7 6 5 4 3 2 1 0 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 0 0 0 0 0 0 0 0 / *** TCON= 0 ; / / EN_LIGHT = RS = 1 ; / / TO and T1 PINS SET_TIME_WDT_128MS ; ENABLE_WDT; # endif } # i f d e f _8051 /************************/ v o i d d e l a y _ m s (UCHAR tempo ) /************************/ { unsigned i n t i ; f o r ( i =0; i <5000; i ++); } /*********************/

165

void r e s t a r t _ w d t ( void ) /*********************/ { RESET_WDT ; } # endif /********************************************/ void Salva_parametro_calibracao_sistema ( void ) /********************************************/ { /* F i n a l i d a d e : s a l v a r o s p a r m e t r o s de c a l i b r a o do s i s t e m a */ / / s a l v a t e m p e r a t u r a em que f o i c a l i b r a d o g u s R e g H o l d i n g [VALOR_TEMPERATURA_CALIBRACAO_SISTEMA] = g u s R e g I n p u t R e g i s t e r [ REG_INPUT_TEMPERATURE_VALUE ] ; g u s R e g H o l d i n g [ VALOR_REFERENCIA_CALIBRACAO] = o f f s e t _ a t u a l ; SISTEMA_CALIBRADO=TRUE ; } /******************************************/ void Salva_parametro_calibracao_ponte ( void ) /******************************************/ { /* Finalidade : s a l v a r a t e m p e r a t u r a em que o s i s t e m a f o i c a l i b r a d o */ g u s R e g H o l d i n g [VALOR_TEMPERATURA_CALIBRACAO_PONTE] = g u s R e g I n p u t R e g i s t e r [ REG_INPUT_TEMPERATURE_VALUE ] ; } /******************************************/ void Salva_parametro_calibracao_shunt ( void ) /******************************************/ { /* F i n a l i d a d e : s a l v a o v a l o r e a t e m p e r a t u r a em que f o i c a l i b r a d o */ g u s R e g H o l d i n g [VALOR_TEMPERATURA_CALIBRACAO_SHUNT] = g u s R e g I n p u t R e g i s t e r [ REG_INPUT_TEMPERATURE_VALUE ] ; g u s R e g H o l d i n g [VALOR_SHUNT_CALIBRACAO] = g u s R e g I n p u t R e g i s t e r [ REG_INPUT_STRAIN_VALUE ] ; } /************************************/ v o i d P r o c e s s a _ c h a v e s (UCHAR v a r _ i n p u t ) /************************************/ /* F i n a l i d a d e : d e t e c t a r qual chave f o i s e l e c i o n a d a e tomar as d e c i s e s c o r r e s p o n d e n t e s 00 = o p e r a o n o r m a l 01 = c a l i b r a o do s i s t e m a e q u i v a l e a f a z e r com que a s d u a s e n t r a d a s f i q u e m c u r t oc i r c u i t a d a s o que f e i t o com o s i n a l 02 02 = c a l i b r a o da p o n t e o o b j e t i v o z e r a r a t e n s o da p o n t e 03 = ( c h a v e 1 + c h a v e 2 ) = r e s i s t o r shunt = t o m a r o v a l o r de c a l i b r a o */ { BOOL DIP1 , DIP2 , DIP3 , DESLIGA_LEDS ; USHORT v a l o r _ a t u a l , v a l o r _ r e f _ m i n i m o , v a l o r _ r e f _ m a x i m o ; DIP1 = ( v a r _ i n p u t & 1 2 8 ) ? 1 : 0 ; DIP2 = ( v a r _ i n p u t & 6 4 ) ? 1 : 0 ; DIP3 = ( v a r _ i n p u t & 3 2 ) ? 1 : 0 ; DESLIGA_LEDS=FALSE ; i f ( CALIBRANDO_SISTEMA & ! DIP1 ) / / ESTAVA SOMENTE COM A CHAVE 1 ATIVADA { / / v e r i f i c a se d e s l i g o u a chave 1 Salva_parametro_calibracao_sistema ( ) ; DESLIGA_LEDS=TRUE ; } i f (CALIBRANDO_PONTE & ! DIP2 ) / / ESTAVA SOMENTE COM A CHAVE 2 ATIVADA { / / v e r i f i c a se d e s l i g o u a chave 2 Salva_parametro_calibracao_ponte ( ) ; DESLIGA_LEDS=TRUE ; } i f (CALIBRANDO_SHUNT & ! DIP3 ) / / ESTAVA SOMENTE COM A CHAVE 3 ATIVADA { / / v e r i f i c a se d e s l i g o u a chave 3 Salva_parametro_calibracao_shunt ( ) ; DESLIGA_LEDS=TRUE ; } CALIBRANDO_SISTEMA = ( DIP1 & ! DIP2 & ! DIP3 ) ; / / S PODE ESTAR LIGADA A CHAVE 1 CALIBRANDO_PONTE = ( ! DIP1 & DIP2 & ! DIP3 ) ; / / S PODE ESTAR LIGADA A CHAVE 2 CALIBRANDO_SHUNT = ( ! DIP1 & ! DIP2 & DIP3 ) ; / / s CHAVES 3 LIGADAS i f ( CALIBRANDO_SISTEMA | CALIBRANDO_PONTE) { valor_ref_minimo= g u s R e g H o l d i n g [ VALOR_REFERENCIA_CALIBRACAO]g u s R e g H o l d i n g [ VALOR_OFFSET_REFERENCIA_MAXIMO ] ; valor_ref_maximo= g u s R e g H o l d i n g [ VALOR_REFERENCIA_CALIBRACAO] + g u s R e g H o l d i n g [ VALOR_OFFSET_REFERENCIA_MAXIMO ] ; v a l o r _ a t u a l = g u s R e g I n p u t R e g i s t e r [ REG_INPUT_STRAIN_VALUE ] ; i f ( valor_atual < valor_ref_minimo )

166

{ Liga_LED ( LED_LEFT ) ; Desliga_LED ( LED_CENTER ) ; Desliga_LED ( LED_RIGHT ) ; } e l s e i f ( v a l o r _ a t u a l > valor_ref_maximo ) { Desliga_LED ( LED_LEFT ) ; Desliga_LED ( LED_CENTER ) ; Liga_LED ( LED_RIGHT ) ; } else { Desliga_LED ( LED_LEFT ) ; Liga_LED ( LED_CENTER ) ; Desliga_LED ( LED_RIGHT ) ; } } i f ( DESLIGA_LEDS ) { Desliga_LED ( LED_LEFT ) ; Desliga_LED ( LED_CENTER ) ; Desliga_LED ( LED_RIGHT ) ; } } /*************/ v o i d main ( v o i d ) /*************/ { /* programa p r i n c i p a l */ USHORT u s b a u d r a t e ; UCHAR v a r _ i n p u t , o l d _ v a r _ i n p u t = 0 ; BOOL CHANGED= 0 ; delay_ms ( 1 0 ) ; / / aguarda e s t a b i l i z a o Init_sys ( ) ; / / i n i c i a l i z a o sistema var_output = 255; / / t o d o s os l e d s apagados spi_escreve_byte ( var_output ); / / envia para a sada var_input = spi_le_byte ( ) ; / / l DIP SWITCH gucThisStationAddress = ( var_input & 31); i f ( g u c T h i s S t a t i o n A d d r e s s == 0 ) g u c T h i s S t a t i o n A d d r e s s = 3 1 ; / / comea com 31 u s b a u d r a t e =9600; / / v e l o c i d a d e p a d r o MODBUS RTU e M B I n i t (MB_RTU, g u c T h i s S t a t i o n A d d r e s s , u s b a u d r a t e , MB_PAR_NONE ) ; eMBStart ( ) ; for ( ; ; ) { # i f WDT_EN restart_wdt (); / / LIMPA O WDT # endif i f ( ! INICIANDO ) var_input = spi_le_byte ( ) ; i f ( o l d _ v a r _ i n p u t != v a r _ i n p u t ) { old_var_input = var_input ; CHANGED=TRUE ; } else CHANGED = FALSE ; i f (CHANGED | CALIBRANDO_PONTE | CALIBRANDO_SISTEMA | CALIBRANDO_SHUNT) Processa_chaves ( var_input ) ; /* */ / * TRATA AS VARIVEIS QUE PODEM SER CONFLITADAS NAS INTERRUPES * / /* */ d i s a b l e _ i n t e r r u p t s (GLOBAL ) ; /* */ / * VARIVEIS UTILIZADAS EM ISR_INT1 ************* FLAG_STATE_RX_IDLE=TRUE ; ( eMBRcvState ) FLAG_FRAME_RECEIVED = TRUE ; FLAG_LED_RX_OFF=TRUE ; ************* */ i f ( FLAG_STATE_RX_IDLE ) { FLAG_STATE_RX_IDLE=FALSE ; eMBRcvState = STATE_RX_IDLE ; } i f ( FLAG_FRAME_RECEIVED ) { FLAG_FRAME_RECEIVED=FALSE ; e s t a t e _ m a i n =STATE_MAIN_FRAME_RECEIVED ; } i f ( FLAG_LED_RX_ON ) { FLAG_LED_RX_ON=FALSE ; LED_RX_ON=TRUE ; } i f ( FLAG_LED_RX_OFF ) { FLAG_LED_RX_OFF=FALSE ;

167

LED_RX_OFF=TRUE ; } /* */ e n a b l e _ i n t e r r u p t s (GLOBAL ) ; /* */ i f (LED_RX_ON) { LED_RX_ON=FALSE ; Liga_LED ( LED_RX ) ; } i f ( LED_RX_OFF ) { LED_RX_OFF=FALSE ; Desliga_LED (LED_RX ) ; } switch ( estate_main ) { c a s e STATE_MAIN_IDLE : i f ( INICIANDO ) { d i s a b l e _ i n t e r r u p t s (GLOBAL ) ; i f ( eMBRcvState == STATE_RX_IDLE ) { INICIANDO=FALSE ; HABILITA_TX p r i n t f ( "MODBUS RTU VALTER L . A . CAMARGO\ r \ n " ) ; HABILITA_RX Start_ADC ( ) ; / / D INCIO AO PROCESSO DE LEITURA ADC } e n a b l e _ i n t e r r u p t s (GLOBAL ) ; } break ; c a s e STATE_MAIN_FRAME_RECEIVED : i f ( P r o c e s s a _ b i l h e t e ( ) == MB_ER_NONE) / / SE RECEBEU UM BILHETE VLIDO { if ( Monta_bilhete_resposta ()) e s t a t e _ m a i n = STATE_MAIN_START_TX ; else e s t a t e _ m a i n = STATE_MAIN_IDLE ; } else { e s t a t e _ m a i n = STATE_MAIN_IDLE ; } break ; c a s e STATE_MAIN_START_TX : Liga_LED ( LED_TX ) ; delay_ms ( 4 ) ; HABILITA_TX e n a b l e _ i n t e r r u p t s ( INT_TBE ) ; / / HABILITA FLAG w h i l e ( ! FRAME_TRANSMITTED ) ; / / f i c a a q u i a t t e r m i n a r a t r a n s m i s s o do b i l h e t e delay_ms ( 2 ) ; HABILITA_RX Desliga_LED ( LED_TX ) ; e s t a t e _ m a i n = STATE_MAIN_IDLE ; } } }

168

PORTADC . C # i f n d e f _ADC # d e f i n e _ADC # d e f i n e CHANNEL_TEMP 0 # d e f i n e CHANNEL_STRAIN 1 /********** f u n c i o n a m e n t o g e r a l do mdulo ADC INICIALIZADO ( Start_ADC d e n t r o de main , d e p o i s de e n v i a r a mensagem i n i c i a l ) HABILITANDO O TIMER2 PARA INTERROMPER A CADA 10 MS ISR_TIMER2 ( ) seta o canal e l i g a o t i m e r 0 p ar a a g u a r d a r e s t a b i l i z a o (20 us ) ISR_TIMER0 ( ) i n i c i a a l e i t u r a do ADC ISR_ADC coleta o valor lido *******/ /**********************/ v o i d Init_ADC ( v o i d ) /**********************/ { / * FINALIDADE : I n i c i a l i z a r o ADC * / s e t _ t r i s _ a ( 0 b11111111 ) ; s e t u p _ a d c _ p o r t s ( AN0_AN1_AN4_VREF_VREF ) ; s e t u p _ a d c (ADC_CLOCK_INTERNAL ) ; } /***********************/ v o i d Start_ADC ( ) /************************/ { / * a l e i t u r a do a d c comandada p e l o t i m e r 2 que i n t e r r o m p i d o a c a d a 10 ms s e t u p _ t i m e r _ 2 ( T2_DIV_BY_4 , 2 5 0 , 1 0 ) ; / / 10000 c y c l e s c l e a r _ i n t e r r u p t ( INT_TIMER2 ) ; e n a b l e _ i n t e r r u p t s ( INT_TIMER2 ) ; } /******************/ v o i d Le_ADC ( v o i d ) /******************/ { i f ( CALIBRANDO_SISTEMA | LENDO_RECALIBRACAO) { o u t p u t _ h i g h ( PIN_C0 ) ; o u t p u t _ l o w ( PIN_C1 ) ; } else { o u t p u t _ l o w ( PIN_C0 ) ; i f ( g u s R e g H o l d i n g [REVERSE_READING_ENABLED ] ) { i f ( FIRST_READING ) { o u t p u t _ l o w ( PIN_C1 ) ; } else { o u t p u t _ h i g h ( PIN_C1 ) ; } } else o u t p u t _ l o w ( PIN_C1 ) ; } i f (LENDO_TEMPERATURA) s e t _ a d c _ c h a n n e l (CHANNEL_TEMP ) ; else s e t _ a d c _ c h a n n e l ( CHANNEL_STRAIN ) ; /* PRECISO AGUARDAR PELO MENOS 20US a t que o s i n a l s e e s t a b i l i z e , a n t e s de f a z e r a l e i t u r a . */ delay_us (20); c l e a r _ i n t e r r u p t ( INT_AD ) ; e n a b l e _ i n t e r r u p t s ( INT_AD ) ; r e a d _ a d c (ADC_START_ONLY ) ; / / SOMENTE i n i c i a a c o n v e r s o } /****************/ # int_AD v o i d AD_isr ( v o i d ) /***************/ { s t a t i c UCHAR n u m _ a m o s t r a s =0 , p o s _ a m o s t r a _ a t u a l =0 , c o n t _ a u x _ t e m p =0 , ucWindow_size ; s t a t i c signed int16 diferenca_offset ; s t a t i c USHORT ACC=0 , a c c _ c a l =0 , a c c _ t e m p =0 , temperatura_atual , offset_atual , val1 , ustemp ; c l e a r _ i n t e r r u p t ( INT_AD ) ; i f ( FIRST_READING ) {

*/

169

v a l 1 = r e a d _ a d c (ADC_READ_ONLY ) ; FIRST_READING=FALSE ; Le_ADC ( ) ; return ; } u s t e m p = r e a d _ a d c (ADC_READ_ONLY) + v a l 1 ; u s t e m p = ( u s t e m p >> 1 ) ; / / d i v i d e p o r d o i s d u a s l e i t u r a s uma n i c a a m o s t r a /**********************************/ i f ( ucWindow_Size ! = g u s R e g H o l d i n g [NUMERO_PONTOS_JANELA_MEDIA_MOVEL ] ) { ucWindow_Size = (UCHAR) g u s R e g H o l d i n g [NUMERO_PONTOS_JANELA_MEDIA_MOVEL ] ; ACC = n u m _ a m o s t r a s = p o s _ a m o s t r a _ a t u a l = 0 ; } i f ( ( ucWindow_Size < 1 ) | | ( ucWindow_Size > 3 2 ) ) { g u s R e g H o l d i n g [NUMERO_PONTOS_JANELA_MEDIA_MOVEL] = ucWindow_Size = 8 ; } /************************************************/ i f (LENDO_RECALIBRACAO) { a c c _ c a l += u s t e m p ; LENDO_RECALIBRACAO=FALSE ; LENDO_TEMPERATURA=TRUE ; FIRST_READING=TRUE ; Le_ADC ( ) ; } e l s e i f (LENDO_TEMPERATURA) / / t r a t a o c a n a l t e m p e r a t u r e { a c c _ t e m p += u s t e m p ; LENDO_TEMPERATURA=FALSE ; } else / / t r a t a o canal strain { i f ( ucWindow_Size == 1 ) / / no e s t u t i l i z a n d o f i l t r o mdia mvel { g u s R e g I n p u t R e g i s t e r [ REG_INPUT_STRAIN_VALUE ] = u s t e m p ; } else / / e s t u t i l i z a n d o f i l t r o mdia mvel { i f ( n u m _ a m o s t r a s < ucWindow_Size ) { n u m _ a m o s t r a s ++; } else { ACC = g u s R e g I n p u t R e g i s t e r [ p o s _ a m o s t r a _ a t u a l +OFFSET_SAMPLE ] ; / / e l i m i n a amostra mais a n t i g a } g u s R e g I n p u t R e g i s t e r [ p o s _ a m o s t r a _ a t u a l +OFFSET_SAMPLE ] = u s t e m p ; / / d u a s l e i t u r a s , uma s a m o s t r a ACC += u s t e m p ; / / soma a a m o s t r a a t u a l g u s R e g I n p u t R e g i s t e r [ REG_INPUT_STRAIN_VALUE ] = ACC/ n u m _ a m o s t r a s ; i f ( SISTEMA_CALIBRADO && g u s R e g H o l d i n g [ RECALIBRATION_ENABLED ] ) { g u s R e g I n p u t R e g i s t e r [ REG_INPUT_STRAIN_VALUE ] += d i f e r e n c a _ o f f s e t ; } i f (++ p o s _ a m o s t r a _ a t u a l == ucWindow_Size ) pos_amostra_atual = 0; } i f ( g u s R e g H o l d i n g [ RECALIBRATION_ENABLED ] ) { i f (RECALIBRANDO) { LENDO_RECALIBRACAO=TRUE ; / / AGORA VAI LER A r e c a l i b r a o FIRST_READING=TRUE ; Le_ADC ( ) ; } c o n t _ a u x _ t e m p ++; i f ( c o n t _ a u x _ t e m p == 2 5 0 ) { cont_aux_temp = 0; a c c _ c a l =0; acc_temp =0; RECALIBRANDO=TRUE ; } e l s e i f ( c o n t _ a u x _ t e m p == 8 ) / / 8 AMOSTRAS { i f ( SISTEMA_CALIBRADO ) { o f f s e t _ a t u a l = ( a c c _ c a l >> 3 ) ; diferenca_offset = ( signed int16 ) ( g u s R e g H o l d i n g [ VALOR_REFERENCIA_CALIBRACAO ] o f f s e t _ a t u a l ) ; g u s R e g I n p u t R e g i s t e r [ REG_OFFSET_DIF ] = d i f e r e n c a _ o f f s e t ; } t e m p e r a t u r a _ a t u a l = ( a c c _ t e m p >> 3 ) ; g u s R e g I n p u t R e g i s t e r [ REG_INPUT_TEMPERATURE_VALUE ] = t e m p e r a t u r a _ a t u a l ; RECALIBRANDO=FALSE ; } } else cont_aux_temp = 0; } / * em algum o u t r o l u g a r d e v e r t e r s i d o e m i t i d o o comando : Le_ADC ( ) modos : ADC_START_AND_READ ( t h i s i s t h e d e f a u l t )

170

ADC_START_ONLY ( s t a r t s t h e c o n v e r s i o n and r e t u r n s ) ADC_READ_ONLY ( r e a d s l a s t c o n v e r s i o n r e s u l t ) */ } # endif

171

MB_RTU . H # i f n d e f _MB_RTU_H # d e f i n e _MB_RTU_H TRUE / * D e f i n e s */ # d e f i n e MB_SER_PDU_SIZE_MIN 4 / * TAMANHO MNIMO DO QUADRO Modbus RTU * / # d e f i n e MB_SER_PDU_SIZE_MAX 256 / * !TAMANHO MXIMO DO QUADRO Modbus RTU * / # d e f i n e MB_SER_PDU_SIZE_CRC 2 / * TAMANHO DO CAMPO CRC * / # d e f i n e MB_RTU_POS_ADDRESS 0 # d e f i n e MB_RTU_POS_FUNCTION 1 # d e f i n e MB_RTU_POS_REG_START 2 # d e f i n e MB_RTU_POS_REG_COUNT 3 # d e f i n e MB_RTU_POS_CRC 4 / / OS v e t o r e s a s e g u i r fazem o l o o kup t a b l e p a r a o c l c u l o do CRC c o n s t UCHAR aucCRCHi [ ] = { 0 x00 , 0xC1 , 0 x81 , 0 x40 , 0 x01 , 0xC0 , 0 x80 , 0 x41 , 0 x01 , 0xC0 , 0 x80 , 0 x41 , 0 x00 , 0xC1 , 0 x81 , 0 x40 , 0 x01 , 0xC0 , 0 x80 , 0 x41 , 0 x00 , 0xC1 , 0 x81 , 0 x40 , 0 x00 , 0xC1 , 0 x81 , 0 x40 , 0 x01 , 0xC0 , 0 x80 , 0 x41 , 0 x01 , 0xC0 , 0 x80 , 0 x41 , 0 x00 , 0xC1 , 0 x81 , 0 x40 , 0 x00 , 0xC1 , 0 x81 , 0 x40 , 0 x01 , 0xC0 , 0 x80 , 0 x41 , 0 x00 , 0xC1 , 0 x81 , 0 x40 , 0 x01 , 0xC0 , 0 x80 , 0 x41 , 0 x01 , 0xC0 , 0 x80 , 0 x41 , 0 x00 , 0xC1 , 0 x81 , 0 x40 , 0 x01 , 0xC0 , 0 x80 , 0 x41 , 0 x00 , 0xC1 , 0 x81 , 0 x40 , 0 x00 , 0xC1 , 0 x81 , 0 x40 , 0 x01 , 0xC0 , 0 x80 , 0 x41 , 0 x00 , 0xC1 , 0 x81 , 0 x40 , 0 x01 , 0xC0 , 0 x80 , 0 x41 , 0 x01 , 0xC0 , 0 x80 , 0 x41 , 0 x00 , 0xC1 , 0 x81 , 0 x40 , 0 x00 , 0xC1 , 0 x81 , 0 x40 , 0 x01 , 0xC0 , 0 x80 , 0 x41 , 0 x01 , 0xC0 , 0 x80 , 0 x41 , 0 x00 , 0xC1 , 0 x81 , 0 x40 , 0 x01 , 0xC0 , 0 x80 , 0 x41 , 0 x00 , 0xC1 , 0 x81 , 0 x40 , 0 x00 , 0xC1 , 0 x81 , 0 x40 , 0 x01 , 0xC0 , 0 x80 , 0 x41 , 0 x01 , 0xC0 , 0 x80 , 0 x41 , 0 x00 , 0xC1 , 0 x81 , 0 x40 , 0 x00 , 0xC1 , 0 x81 , 0 x40 , 0 x01 , 0xC0 , 0 x80 , 0 x41 , 0 x00 , 0xC1 , 0 x81 , 0 x40 , 0 x01 , 0xC0 , 0 x80 , 0 x41 , 0 x01 , 0xC0 , 0 x80 , 0 x41 , 0 x00 , 0xC1 , 0 x81 , 0 x40 , 0 x00 , 0xC1 , 0 x81 , 0 x40 , 0 x01 , 0xC0 , 0 x80 , 0 x41 , 0 x01 , 0xC0 , 0 x80 , 0 x41 , 0 x00 , 0xC1 , 0 x81 , 0 x40 , 0 x01 , 0xC0 , 0 x80 , 0 x41 , 0 x00 , 0xC1 , 0 x81 , 0 x40 , 0 x00 , 0xC1 , 0 x81 , 0 x40 , 0 x01 , 0xC0 , 0 x80 , 0 x41 , 0 x00 , 0xC1 , 0 x81 , 0 x40 , 0 x01 , 0xC0 , 0 x80 , 0 x41 , 0 x01 , 0xC0 , 0 x80 , 0 x41 , 0 x00 , 0xC1 , 0 x81 , 0 x40 , 0 x01 , 0xC0 , 0 x80 , 0 x41 , 0 x00 , 0xC1 , 0 x81 , 0 x40 , 0 x00 , 0xC1 , 0 x81 , 0 x40 , 0 x01 , 0xC0 , 0 x80 , 0 x41 , 0 x01 , 0xC0 , 0 x80 , 0 x41 , 0 x00 , 0xC1 , 0 x81 , 0 x40 , 0 x00 , 0xC1 , 0 x81 , 0 x40 , 0 x01 , 0xC0 , 0 x80 , 0 x41 , 0 x00 , 0xC1 , 0 x81 , 0 x40 , 0 x01 , 0xC0 , 0 x80 , 0 x41 , 0 x01 , 0xC0 , 0 x80 , 0 x41 , 0 x00 , 0xC1 , 0 x81 , 0 x40 } ; / * CRC16 T a b l e Low b y t e * / c o n s t UCHAR aucCRCLo [ ] = { 0 x00 , 0xC0 , 0xC1 , 0 x01 , 0xC3 , 0 x03 , 0 x02 , 0xC2 , 0xC6 , 0 x06 , 0 x07 , 0xC7 , 0 x05 , 0xC5 , 0xC4 , 0 x04 , 0xCC , 0x0C , 0x0D , 0xCD , 0x0F , 0xCF , 0xCE , 0x0E , 0x0A , 0xCA , 0xCB , 0x0B , 0xC9 , 0 x09 , 0 x08 , 0xC8 , 0xD8 , 0 x18 , 0 x19 , 0xD9 , 0x1B , 0xDB , 0xDA , 0x1A , 0x1E , 0xDE , 0xDF , 0x1F , 0xDD , 0x1D , 0x1C , 0xDC , 0 x14 , 0xD4 , 0xD5 , 0 x15 , 0xD7 , 0 x17 , 0 x16 , 0xD6 , 0xD2 , 0 x12 , 0 x13 , 0xD3 , 0 x11 , 0xD1 , 0xD0 , 0 x10 , 0xF0 , 0 x30 , 0 x31 , 0xF1 , 0 x33 , 0xF3 , 0xF2 , 0 x32 , 0 x36 , 0xF6 , 0xF7 , 0 x37 , 0xF5 , 0 x35 , 0 x34 , 0xF4 , 0x3C , 0xFC , 0xFD , 0x3D , 0xFF , 0x3F , 0x3E , 0xFE , 0xFA , 0x3A , 0x3B , 0xFB , 0 x39 , 0xF9 , 0xF8 , 0 x38 , 0 x28 , 0xE8 , 0xE9 , 0 x29 , 0xEB , 0x2B , 0x2A , 0xEA , 0xEE , 0x2E , 0x2F , 0xEF , 0x2D , 0xED , 0xEC , 0x2C , 0xE4 , 0 x24 , 0 x25 , 0xE5 , 0 x27 , 0xE7 , 0xE6 , 0 x26 , 0 x22 , 0xE2 , 0xE3 , 0 x23 , 0xE1 , 0 x21 , 0 x20 , 0xE0 , 0xA0 , 0 x60 , 0 x61 , 0xA1 , 0 x63 , 0xA3 , 0xA2 , 0 x62 , 0 x66 , 0xA6 , 0xA7 , 0 x67 , 0xA5 , 0 x65 , 0 x64 , 0xA4 , 0x6C , 0xAC , 0xAD , 0x6D , 0xAF , 0x6F , 0x6E , 0xAE , 0xAA , 0x6A , 0x6B , 0xAB , 0 x69 , 0xA9 , 0xA8 , 0 x68 , 0 x78 , 0xB8 , 0xB9 , 0 x79 , 0xBB , 0x7B , 0x7A , 0xBA , 0xBE , 0x7E , 0x7F , 0xBF , 0x7D , 0xBD , 0xBC , 0x7C , 0xB4 , 0 x74 , 0 x75 , 0xB5 , 0 x77 , 0xB7 , 0xB6 , 0 x76 , 0 x72 , 0xB2 , 0xB3 , 0 x73 , 0xB1 , 0 x71 , 0 x70 , 0xB0 , 0 x50 , 0 x90 , 0 x91 , 0 x51 , 0 x93 , 0 x53 , 0 x52 , 0 x92 , 0 x96 , 0 x56 , 0 x57 , 0 x97 , 0 x55 , 0 x95 , 0 x94 , 0 x54 , 0x9C , 0x5C , 0x5D , 0x9D , 0x5F , 0x9F , 0x9E , 0x5E , 0x5A , 0x9A , 0x9B , 0x5B , 0 x99 , 0 x59 , 0 x58 , 0 x98 , 0 x88 , 0 x48 , 0 x49 , 0 x89 , 0x4B , 0x8B , 0x8A , 0x4A , 0x4E , 0x8E , 0x8F , 0x4F , 0x8D , 0x4D , 0x4C , 0x8C , 0 x44 , 0 x84 , 0 x85 , 0 x45 , 0 x87 , 0 x47 , 0 x46 , 0 x86 , 0 x82 , 0 x42 , 0 x43 , 0 x83 , 0 x41 , 0 x81 , 0 x80 , 0 x40 } ; # endif

172

MB_RTU . C # i n c l u d e < m b _ s l a v e . h> # i n c l u d e < m b _ r t u . h> /************************************************/ USHORT usMBCRC16 ( c h a r * pucFrame , USHORT usLen ) /************************************************/ { UCHAR ucCRCHi = 0xFF ; UCHAR ucCRCLo = 0xFF ; UCHAR i I n d e x =0; USHORT usret ; w h i l e ( usLen ) { i I n d e x = ucCRCLo ^ * pucFrame ++; ucCRCLo = ucCRCHi ^ aucCRCHi [ i I n d e x ] ; ucCRCHi = aucCRCLo [ i I n d e x ] ; } u s r e t = ( ucCRCHi << 8 ) ; u s r e t += ucCRCLo ; / / r e t u r n ( ucCRCHi << 8 | ucCRCLo ) ; / / d e s t a m a n e i r a no f u n c i o n a = p o r qu ? ? ? ? ? ? ? return ( usret ); } /*************************************************************/ v o i d eMBRTUInit ( USHORT usBaudRate , MBParity e P a r i t y ) /*************************************************************/ { I n i t _ S ER I A L ( usBaudRate , e P a r i t y ) ; Init_TIMER ( ) ; } /**********************/ v o i d eMBRTUStart ( v o i d ) /**********************/ { e s t a t e _ m a i n = STATE_MAIN_IDLE ; eMBSndState = STATE_TX_IDLE ; eMBRcvState = STATE_RX_INIT ; / * INICIALMENTE O RECEPTOR EST NO ESTADO STATE_RX_INIT . l i g a s e o t e m p o r i z a d o r e a g u a r d as e a t que t r a n s c o r r a o tempo de 3 . 5 c a r a c t e r e s . Caso no h a j a r e c e b i m e n t o de nenhum c a r a c t e r d e n t r o d e s s e tempo , mudas e o e s t a d o p a r a STATE_RX_IDLE . I s t o g a r a n t e que a s camadas do p r o t o c o l o s i r o e s t a r a t i v a s se o barramento e s t i v e r l i v r e . */ Start_timer (1); } /******************************/ MBErrorCode eMBRTUReceive ( v o i d ) /******************************/ { / / CHECH LENGTH i f ( g u c R c v B u f f e r P o s < MB_SER_PDU_SIZE_MIN ) { eMBErrorCode = MB_ER_PDU_LENGTH ; } else { gucRcvAddress = gucRcvBuffer [ 0 ] ; / / endereo gucRcvFunction = gucRcvBuffer [ 1 ] ; / / funo gucPUCFrameLength = g u c R c v B u f f e r P o s 3 ; } / * V e r i f i c a o do CRC * / if ( usMBCRC16 ( g u c R c v B u f f e r , g u c R c v B u f f e r P o s ) ) { eMBErrorCode = MB_ER_CRC ; } r e t u r n ( eMBErrorCode ) ; } /******************************************************/ MBErrorCode eMBRTUSend ( v o i d ) /******************************************************/ { USHORT usCRC16 ; /* v e r i f i c a s e o r e c e p t o r e s t no e s t a d o de r e p o u s o ( IDLE_STATE ) . Caso no e s t e j a , s i g n i f i c a que o p r o c e s s a m e n t o do b i l h e t e e s t sendo muito l e n t o e o mestre j e s t enviando o u t r o b i l h e t e mesmo sem t e r p r o c e s s a d o o a n t e r i o r . e n t o deves e a b o r t a r o e n v i o do b i l h e t e de r e s p o s t a a t u a l */ i f ( eMBRcvState ! = STATE_RX_IDLE ) { /* O p r i m e i r o b y t e a s e r t r a n s m i t i d o a n t e s do Modbus PDU o e n d e r e o do e s c r a v o que j e s t a r m a z e n a d o em g u c R c v B u f f e r [ 0 ] */ i f ( eMBException ! = MB_EX_NONE ) { / * O c o r r e u uma e x c e o . Deve s e r c o n s t r u d o um q u a d r o de e r r o * / g u c R c v B u f f e r [ 1 ] | = MB_FUNC_ERROR ; / / comea em 1 g u c R c v B u f f e r [ 2 ] = eMBException ; gucPUCFrameLength = 2 ; } usCRC16 = usMBCRC16 ( g u c R c v B u f f e r , gucPUCFrameLength + 1 ) ; / / +1 p o r q u e i n i c i a com o nmero do t e r m i n a l g u c R c v B u f f e r [ gucPUCFrameLength + 1 ]= make8 ( usCRC16 , 0 ) ; / / r e g . v a l u e LSB g u c R c v B u f f e r [ gucPUCFrameLength + 2 ]= make8 ( usCRC16 , 1 ) ;

173

/ / r e g . v a l u e MSB g u c S n d B u f f e r C o u n t = gucPUCFrameLength + 3 ; / / 2 bytes crc + 1 byte endereo } else { eMBErrorCode = MB_ER_TOO_LATE ; } // r e t u r n ( eMBErrorCode ) ; }

174

PORTSERIAL_PIC . C # i f n d e f _PORT_SERIAL # d e f i n e _PORT_SERIAL TRUE # i n c l u d e " mb_slave . h " # d e f i n e HABILITA_TX d i s a b l e _ i n t e r r u p t s ( INT_RDA ) ; o u t p u t _ h i g h ( PIN_B0 ) ; # d e f i n e HABILITA_RX o u t p u t _ l o w ( PIN_B0 ) ; e n a b l e _ i n t e r r u p t s ( INT_RDA ) ;

# int_RDA /*****************/ v o i d ISR_RDA ( v o i d ) /****************/ { UCHAR c a r a c t e r ; caracter = getc ( ) ; s w i t c h ( eMBRcvState ) { c a s e STATE_RX_INIT : /* Se f o i r e c e b i d o um c a r a c t e r quando e s t a v a i n i c i a l i z a n d o , e n t o d e v e s e a g u a r d a r a t que o q u a d r o t e r m i n e . */ c a s e STATE_RX_ERROR : /* Se houve algum e r r o , deves e e s p e r a r que t o d o s o s c a r a c t e r e s do q u a d r o d e f e i t u o s o s e j a r e c e b i d o . */ timeout = 1; break ; c a s e STATE_RX_IDLE : /* No e s t a d o r e p o u s o a g u a r d as e a c h e g a d a de um novo c a r a c t e r . Quando f o r f o r r e c e b i d o o p r i m e i r o c a r a c t e r , g r a v ao na p o s i o i n i c i a l do b u f f e r , h a b i l i t a os t e m p o r i z a d o r e s e muda o e s t a d o p a r a STATE_RX_RCV . */ e x p e c t e d = 8 ; / / f n c 1 a 6 numero de c a r a c t e r e s e s p e r a d o s p a r a e s s a s f u n e s t i m e o u t = 8 ; / / 4 x 4192 ms = 16384 u s gucRcvBufferPos = 0; FLAG_LED_RX_ON =TRUE ; / / FLAG PARA LIGAR O LED RX (EM MAIN . C) eMBRcvState = STATE_RX_RCV ; c a s e STATE_RX_RCV : /* Se f o i r e c e b i d o m a i s c a r a c t e r e s do que o mximo nmero p o s s v e l de b y t e s do q u a d r o modbus , o q u a d r o i n t e i r o d e v e s e r i g n o r a d o . */ i f ( gucRcvBufferPos > 7) { / / j f o i r e c e b i d o o e n d e r e o de d e s t i n o e o c d i g o da f u n o i f ( ( g u c R c v B u f f e r [ 1 ] == 1 5 ) | | ( g u c R c v B u f f e r [ 1 ] == 1 6 ) ) { /* 15 = w r i t e N c o i l ; 16 = w r i t e N r e g s ; a c o n t a g e m d o s b y t e s : SS FF AA AA LL LL BC ? ? CR CR */ expected = 9 + gucRcvBuffer [ 6 ] ; } } i f ( gucRcvBufferPos > expected ) { eMBRcvState = STATE_RX_ERROR ; } else { g u c R c v B u f f e r [ g u c R c v B u f f e r P o s ++] = c a r a c t e r ; } i f ( g u c R c v B u f f e r P o s == e x p e c t e d ) timeout = 1; / / old=gus3_5_timeout ; } / / endswitch /* R e i n i c i a l i z a o temporizador a cada c a r a c t e r r e c e b i d o . Quando h o u v e r demora m a i o r do que 3 , 5 v e z e s o tempo de c a d a q u a d r o , o t e m p o r i z a d o r c o l o c a r a mquina de r e c e p o no e s t a d o i n i c i a l */ Reset_timer ( timeout ) ; } /***************************/ # int_TBE v o i d ISR_TBE ( v o i d ) /***************************/ { // while ( ! t x s t a . trmt ) ; / / a g u a r d a a t que a t r a n s m i s s o e s t e j a c o m p l e t a ( b u f f e r empty ) s w i t c h ( eMBSndState ) { c a s e STATE_TX_IDLE : eMBSndState = STATE_TX_TRANSMITTING ; FRAME_TRANSMITTED = FALSE ; gucSndBufferPos =0; c a s e STATE_TX_TRANSMITTING : i f ( gucSndBufferPos < gucSndBufferCount ) { putc ( gucRcvBuffer [ gucSndBufferPos + + ] ) ; } else { d i s a b l e _ i n t e r r u p t s ( INT_TBE ) ;

175

FRAME_TRANSMITTED = TRUE ; eMBSndState =STATE_TX_IDLE ; } } } # endif

176

PORTTIMER2_PIC . C # i f n d e f _PORT_TIMER # d e f i n e _PORT_TIMER TRUE # i n c l u d e " mb_slave . h " /****************/ v o i d Init_TIMER ( ) /****************/ { s e t u p _ t i m e r _ 1 ( T1_INTERNAL | T1_DIV_BY_1 ) ; e n a b l e _ i n t e r r u p t s (GLOBAL ) ; } /***************************************/ v o i d S t a r t _ t i m e r (UCHAR t i m e o u t ) /***************************************/ { /* timeout : 1 = 4096 c y c l e s 2 = 8192 c y c l e s 4 = 16384 c y c l e s */ USHORT tempo ; switch ( timeout ) { case 1: tempo = 0 xF000 ; //6 5535 409 5; break ; case 2: tempo = 0 xE000 ; //65 535 819 1; break ; case 4: tempo = 0 xC000 ; //65 535 163 83; break ; c a s e 8 : / / 8 TIMES tempo = 0 x8000 ; //65 535 327 67; break ; d e f a u l t : / / 12 TIMES tempo = 0 x3000 ; / / 53247 u s ; } s e t _ t i m e r 1 ( tempo ) ; c l e a r _ i n t e r r u p t ( INT_TIMER1 ) ; e n a b l e _ i n t e r r u p t s ( INT_TIMER1 ) ; } /***************************************/ v o i d R e s e t _ t i m e r (UCHAR t i m e o u t ) /***************************************/ { /* timeout : 1 = 4096 c y c l e s 2 = 8192 c y c l e s 4 = 16384 c y c l e s / * USHORT tempo ; switch ( timeout ) { case 1: tempo = 0 xF000 ; //6 5535 409 5; break ; case 2: tempo = 0 xE000 ; //6 5535 819 1; break ; case 4: tempo = 0 xC000 ; //65 535 163 83; break ; c a s e 8 : / / 8 TIMES tempo = 0 x8000 ; //65 535 327 67; break ; d e f a u l t : / / 12 TIMES tempo = 0 x3000 ; / / 53247 u s ; } s e t _ t i m e r 1 ( tempo ) ; c l e a r _ i n t e r r u p t ( INT_TIMER1 ) ; e n a b l e _ i n t e r r u p t s ( INT_TIMER1 ) ; } /****************/ # int_TIMER1 v o i d ISR_TIMER1 ( v o i d ) /****************/ / * g e r a d a uma i n t e r r u p o t o d a v e z que o tempo e x p i r a . * / { s w i t c h ( eMBRcvState ) { c a s e STATE_RX_INIT : / * a f a s e de i n i c i a l i z a o e s t t e r m i n a d a ? * / c a s e STATE_RX_ERROR : c a s e STATE_RX_IDLE : break ; c a s e STATE_RX_RCV : // finaliza / * Um q u a d r o f o i r e c e b i d o e o tempo t 3 5 e x p i r o u . Muda o f l a g i n d i c a n d o que um novo q u a d r o f o i r e c e b i d o * / FLAG_FRAME_RECEIVED = TRUE ; break ; } FLAG_STATE_RX_IDLE=TRUE ; FLAG_LED_RX_OFF=TRUE ; d i s a b l e _ i n t e r r u p t s ( INT_TIMER1 ) ; / / O t e m p o r i z a d o r s e a u t od e s a t i v a . Tem que s e r chamado e x p l i c i t a m e n t e de o u t r a r o t i n a } /****************/ # int_TIMER2

177

v o i d ISR_TIMER2 ( v o i d ) /****************/ { / * r o t i n a u t i l i z a d a p a r a i n d i c a r que t e r m i n o u a p r i m e i r a l e i t u r a do ADC * / FIRST_READING=TRUE ; Le_ADC ( ) ; } # endif

178

FUNC_READ_COILS . C # i f FUNC_READ_COILS_ENABLED # i f d e f _FUNC_READ_COILS return # endif # d e f i n e _FUNC_READ_COILS TRUE # d e f i n e REG_COILS_START 0 / / READ_COILS_OUTPUTS # d e f i n e REG_COILS_SIZE 64 # d e f i n e REG_COILS_COILCNT_MAX ( 0x07D0 ) # i f d e f _8051 i d a t a UCHAR g u c R e g C o i l [ REG_COILS_SIZE / 8 ] ; # endif # i f d e f _PIC UCHAR g u c R e g C o i l [ REG_COILS_SIZE / 8 ] ; # endif /******************************************************************************/ UCHAR x M B U t i l G e t B i t s (UCHAR * p o i n t e r , UCHAR u c B y t e O f f s e t , UCHAR u c B i t O f f s e t ) /******************************************************************************/ { UCHAR ucMask ; p o i n t e r += u c B y t e O f f s e t ; i f ( u c B i t O f f s e t == 8 ) / / r e t o r n a r o b y t e i n t e i r o return *pointer ; else { ucMask = 0 ; w h i l e ( u c B i t O f f s e t ) { ucMask = ( ucMask << 1 ) + 1 ; } r e t u r n ( * p o i n t e r & ucMask ) ; } } /**************************************************************************/ v o i d x M B U t i l S e t B i t s (UCHAR * p o i n t e r , UCHAR u c B y t e O f f s e t , UCHAR u c B i t O f f s e t ) /**************************************************************************/ { UCHAR ucMask ; p o i n t e r += u c B y t e O f f s e t ; ucMask = 1 ; w h i l e ( u c B i t O f f s e t ) { ucMask = ( ucMask << 1 ) ; } p o i n t e r | = ucMask ; * } /***************************************************************************************/ v o i d eMBRegCoilsCB ( UCHAR eMode , USHORT u s R c v R e g S t a r t , USHORT u s R c v C o i l C o u n t ) /***************************************************************************************/ { UCHAR ucBitOffset , cont_aux ; UCHAR ucByteOffset ; / * VERIFICA SE H REGISTRADORES MAPEADOS NESTE BLOCO . * / if ( ( u s R c v R e g S t a r t >= REG_COILS_START ) && ( ( u s R c v R e g S t a r t + u s R c v C o i l C o u n t ) <= ( REG_COILS_START + REG_COILS_SIZE ) ) ) { u c B y t e O f f s e t = (UCHAR) ( u s R c v R e g S t a r t REG_COILS_START ) ; s w i t c h ( eMode ) { / * L OS VALORES CORRENTES E PASSA DE VOLTA PARA A CAMADA DO PROTOCOLO * / c a s e MB_REG_READ : cont_aux =3; while ( usRcvCoilCount ) { u c B i t O f f s e t = ( UCHAR ) ( ( u s R c v C o i l C o u n t > 8 ) ? 8 : u s R c v C o i l C o u n t ) ; g u c R c v B u f f e r [ c o n t _ a u x ++] = xMBUtilGetBits ( gucRegCoil , u c B y t e O f f s e t , u c B i t O f f s e t ) ; u c B y t e O f f s e t ++; u s R c v C o i l C o u n t = u c B i t O f f s e t ; } break ; / * ATUALIZA OS VALORES ATUAIS DOS REGISTRADORES * / c a s e MB_REG_WRITE : while ( usRcvCoilCount ) { u c B i t O f f s e t = ( UCHAR ) ( ( u s R c v C o i l C o u n t > 8 ) ? 8 : u s R c v C o i l C o u n t ) ; xMBUtilSetBits ( gucRegCoil , u c B y t e O f f s e t , u c B i t O f f s e t ) ; u c B y t e O f f s e t ++; u s R c v C o i l C o u n t = u c B i t O f f s e t ; } break ; } / / ENDSWITCH } else { eMBException = MB_EX_ILLEGAL_DATA_ADDRESS ; } } /****************************************************************/ void Func_read_coils ( void )

179

/****************************************************************/ /* MB_FUNC_READ_COILS = FUNO 1 ESTA FUNO UTILIZADA PARA LER DE 1 A 2000 ENDEREOS CONTGUOS DE BOBINAS DE ESTADO . AS BOBINAS NA MENSAGEM DE RESPOSTA SO EMPACOTADAS NA FORMA DE UMA BOBINA PARA CADA BIT DE DADOS . SE A QUANTIDADE RETORNADA NO FOR UM MLTIPLO DE OITO , OS BITS RESTANTES SO COMPLETADOS COM ZEROS (EM DIREO AO BIT MAIS SIGNIFICATIVO ) . O CAMPO DE CONTADOR DE BYTES ESPECIFICA A QUANTIDADE DE BYTES COMPLETOS . PDU RX F u n c t i o n code 1 Byte 0 x01 S t a r t i n g Address 2 Bytes 0 x0000 t o 0xFFFF Quantity of c o i l s 2 Bytes 1 t o 2000 ( 0 x7D0 ) PDU e s p o n s e R F u n c t i o n code 1 Byte 0 x01 Byte count 1 Byte N* Coil Status n B y t e n = N o r N+1 *N = Q u a n t i d a d e de s a i d a s / 8 , s e o r e s t o d i f e r e n t e de z e r o e n t o N = N+1 Error F u n c t i o n code 1 Byte F u n c t i o n c o d e + 0 x80 E x c e p t i o n code 1 Byte 01 o r 02 o r 03 o r 04 / * { USHORT usRcvRegStart ; USHORT usRcvCoilCount ; UCHAR ucNBytes ; i f ( gucPUCFrameLength == ( MB_PDU_FUNC_READ_SIZE + MB_PDU_SIZE_MIN ) ) { u s R c v R e g S t a r t = ( g u c R c v B u f f e r [ 2 ] << 8 ) ; u s R c v R e g S t a r t += g u c R c v B u f f e r [ 3 ] ; u s R c v C o i l C o u n t = ( g u c R c v B u f f e r [ 4 ] << 8 ) ; u s R c v C o i l C o u n t += g u c R c v B u f f e r [ 5 ] ; / * V e r i f i c a s e o nmero de r e g i s t r a d o r e s a s e r e m l i d o s v l i d o . Caso no s e j a , r e t o r n a uma e x c e o de i l l e g a l d a t a v a l u e p a r a a camada Modbus * / if ( ( usRcvCoilCount > 0 ) && ( u s R c v C o i l C o u n t <= REG_COILS_COILCNT_MAX ) ) { / * T e s t a s e a q u a n t i d a d e de b o b i n a s m l t i p l o de o i t o . Caso no s e j a , o l t i m o b y t e p r e e n c h i d o com z e r o s n o s b y t e s m a i s s i g n i f i c a t i v o s * / ucNBytes = (UCHAR ) ( u s R c v C o i l C o u n t + 7) / 8 ; / * O p r i m e i r o b y t e s da r e s p o s t a contm o c d i g o da f u n o , * Vamos r e u t i l i z a r e s t e v a l o r , uma v e z que c o n t i n u a v l i d o . * / / / O s e g u n d o b y t e contm a q u a n t i d a d e de r e g i s t r a d o r e s . g u c R c v B u f f e r [ 2 ] = ucNBytes ; eMBRegCoilsCB ( MB_REG_READ, u s R c v R e g S t a r t , u s R c v C o i l C o u n t ) ; gucPUCFrameLength = ucNBytes + 2 ; } else { eMBException = MB_EX_ILLEGAL_DATA_VALUE ; } } else { / * No pode s e r uma r e q u i s i o v l i d a p a r a l e i t u r a de r e g i s t r a d o r de b o b i n a s , j que o c o m p r i m e n t o i n c o r r e t o . * / eMBException = MB_EX_ILLEGAL_DATA_VALUE ; } } # endif

180

READ_DISCRETE_INPUTS . C # i f FUNC_READ_DISCRETE_INPUTS_ENABLED # i f d e f _FUNC_READ_DISCRETE_INPUTS return # endif # d e f i n e _FUNC_READ_DISCRETE_INPUTS TRUE # d e f i n e REG_INPUT_DISCRETE_START 0 / / READ_DISCRETE_INPUTS # d e f i n e REG_INPUT_DISCRETE_SIZE 64 # i f d e f _8051 i d a t a UCHAR g u c R e g I n p u t D i s c r e t e [ REG_INPUT_DISCRETE_SIZE / 8 ] ; # endif # i f d e f _PIC UCHAR g u c R e g I n p u t D i s c r e t e [ REG_INPUT_DISCRETE_SIZE / 8 ] ; # endif /**********************************************************************************************/ v o i d eMBRegDiscreteCB ( UCHAR eMode , USHORT u s R c v R e g S t a r t , USHORT u s R c v D i s c r e t e C o u n t ) /**********************************************************************************************/ { UCHAR UCHAR ucBitOffset , cont_aux ; ucByteOffset ;

/ * V e r i f i c a s e e x i s t e m r e g i s t r a d o r e s mapeados n e s t e b l o c o * / if ( ( u s R c v R e g S t a r t >= REG_INPUT_DISCRETE_START ) && ( u s R c v R e g S t a r t + u s R c v D i s c r e t e C o u n t <= REG_INPUT_DISCRETE_START + REG_INPUT_DISCRETE_SIZE ) ) { u c B y t e O f f s e t = ( UCHAR ) ( u s R c v R e g S t a r t REG_INPUT_DISCRETE_START ) ; s w i t c h ( eMode ) { / * l o s v a l o r e s c o r r e n t e s e r e t o r n a p a r a a camada c o r r e s p o n d e n t e do p r o t o c o l o * / c a s e MB_REG_READ : cont_aux =3; while ( usRcvDiscreteCount ) { u c B i t O f f s e t = (UCHAR) ( ( u s R c v D i s c r e t e C o u n t > 8 ) ? 8 : u s R c v D i s c r e t e C o u n t ) ; g u c R c v B u f f e r [ c o n t _ a u x ++]= x M B U t i l G e t B i t s ( g u c R e g I n p u t D i s c r e t e , u c B y t e O f f s e t , u c B i t O f f s e t ) ; u c B y t e O f f s e t ++; u s R c v D i s c r e t e C o u n t = u c B i t O f f s e t ; } break ; / * A t u a l i z a os v a l o r e s a t u a i s dos r e g i s t r a d o r e s * / c a s e MB_REG_WRITE : while ( usRcvDiscreteCount ) { u c B i t O f f s e t = (UCHAR ) ( ( u s R c v D i s c r e t e C o u n t > 8 ) ? 8 : u s R c v D i s c r e t e C o u n t ) ; xMBUtilSetBits ( gucRegInputDiscrete , ucByteOffset , ucBitOffset ) ; u c B y t e O f f s e t ++; u s R c v D i s c r e t e C o u n t = u c B i t O f f s e t ; } break ; } / / ENDSWITCH } else { eMBException = MB_EX_ILLEGAL_DATA_ADDRESS ; } } /***********************************/ void F u n c _ r e a d _ d i s c r e t e _ i n p u t s ( void ) /***********************************/ /* 02 ( 0 x02 ) Read D i s c r e t e I n p u t s E s t a f u n o u t i l i z a d a p r a l e r de 1 a 2000 r e g i s t r a d o r e s c o n t g u o s de e n t r a d a s d i s c r e t a s no d i s p o s i t i v o r e m o t o . O b i l h e t e de r e q u i s i o e s p e c i f i c a o e n d e r e o i n i c i a l e o nmero de e n t r a d a s . O e n d e r e o d a s e n t r a d a s comeam em z e r o . D e s t a forma , a s e n t r a d a s de 1 a 16 s o e n d e r e a d a s como 015. As e n t r a d a s d i s c r e t a s na mensagem de r e s p o s t a s o e m p a c o t a d a s como uma e n t r a d a p a r a c a d a b i t do campo de d a d o s . O E s t a d o i n d i c a d o como 1= ON; 0= OFF . O b i t menos s i g n i f i c a t i v o do p r i m e i r o b y t e de d a d o s contm o e n d e r e o s o l i c i t a d o p e l o m e s t r e . Se a q u a n t i d a d e de e n t r a d a s r e t o r n a d a no um m l t i p l o de o i t o , o s b i t s r e s t a n t e s do l t i m o b y t e de d a d o s s e r o c o m p l e t a d o s com z e r o s ( n o s b i t s m a i s s i g n i f i c a t i v o s ) . B i l h e t e de r e q u i s i o F u n c t i o n code 1 Byte 0 x02 S t a r t i n g Address 2 Bytes 0 x0000 t o 0xFFFF Quantity of Inputs 2 Bytes 1 t o 2000 ( 0 x7D0 ) B i l h e t e de r e s p o s t a F u n c t i o n code 1 Byte 0 x02 Byte count 1 B y t e N* Input Status N* x 1 B y t e *N = Q u a n t i d a d e de e n t r a d a s / 8 , s e o r e s t o f o r d i f e r e n t e de z e r o e n t o N = N+1 B i l h e t e de e r r o Cdigo do e r r o 1 Byte 0 x82 Cdigo de e x c e o 1 Byte 01 o r 02 o r 03 o r 04 */ { USHORT usRcvRegStart ; USHORT usRcvDiscreteCount ; UCHAR ucNBytes ; i f ( gucPUCFrameLength == ( MB_PDU_FUNC_READ_SIZE + MB_PDU_SIZE_MIN ) ) { u s R c v R e g S t a r t = ( g u c R c v B u f f e r [ 2 ] << 8 ) ; usRcvRegStart |= gucRcvBuffer [ 3 ] ; u s R c v D i s c r e t e C o u n t = ( g u c R c v B u f f e r [ 4 ] << 8 ) ;

181

usRcvDiscreteCount |= gucRcvBuffer [ 5 ] ; / * v e r i f i c a s e o nmero de r e g i s t r a d o r e s a s e r e m l i d o s v l i d o . Caso no s e j a , r e t o r n a uma e x c e o do t i p o i l l e g a l d a t a v a l u e . */ i f ( ( u s R c v D i s c r e t e C o u n t > 0 ) && ( u s R c v D i s c r e t e C o u n t <= MB_PDU_FUNC_READ_DISCCNT_MAX ) ) { / * T e s t a s e a q u a n t i d a d e de b o b i n a s um m l t i p l o de o i t o . Caso no s e j a , o s b i t s no u t i l i z a d o s do l t i m o b y t e s o p r e e n c h i d o s com z e r o . * / ucNBytes = (UCHAR ) ( u s R c v D i s c r e t e C o u n t + 7) / 8 ; / * O p r i m e i r o b y t e do b i l h e t e de r e s p o s t a d e v e c o n t e r o c d i g o da f u n o , vamos r e u t i l i z a r e s t a v a l o r uma v e z que e s t e c o n t i n u a o mesmo * / / / O s e g u n d o contm a q u a n t i d a d e de r e g i s t r a d o r e s . g u c R c v B u f f e r [ 2 ] = ucNBytes ; eMBRegDiscreteCB ( MB_REG_READ, u s R c v R e g S t a r t , u s R c v D i s c r e t e C o u n t ) ; gucPUCFrameLength = ucNBytes + 2 ; } else { eMBException = MB_EX_ILLEGAL_DATA_VALUE ; } } else { / * No pode s e r uma r e q u i s i o l e g a l p o r q u e o c o m p r i m e n t o i n c o r r e t o . * / eMBException = MB_EX_ILLEGAL_DATA_VALUE ; } } # endif

182

FUNC_READ_HOLDING_REGISTER . C # i f FUNC_READ_HOLDING_REGISTER_ENABLED # i f d e f _FUNC_READ_HOLDING_REGISTER return # endif # d e f i n e _FUNC_READ_HOLDING_REGISTER TRUE # d e f i n e REG_HOLDING_START 0 # d e f i n e REG_HOLDING_NREGS 16 # d e f i n e VALOR_REFERENCIA_CALIBRACAO 0 # d e f i n e VALOR_OFFSET_REFERENCIA_MAXIMO 1 # d e f i n e VALOR_TEMPERATURA_CALIBRACAO_SISTEMA 2 # d e f i n e VALOR_TEMPERATURA_CALIBRACAO_PONTE 3 # d e f i n e VALOR_TEMPERATURA_CALIBRACAO_SHUNT 4 # d e f i n e VALOR_SHUNT_CALIBRACAO 5 # d e f i n e NUMERO_PONTOS_JANELA_MEDIA_MOVEL 6 # d e f i n e REVERSE_READING_ENABLED 7 # d e f i n e RECALIBRATION_ENABLED 8 # i f d e f _8051 i d a t a USHORT g u s R e g H o l d i n g [REG_HOLDING_NREGS ] ; # endif # i f d e f _PIC USHORT g u s R e g H o l d i n g [REG_HOLDING_NREGS ] ; # endif /***********************************************************************************/ void eMBRegHoldingCB ( USHORT u s A d d r e s s , USHORT usNRegs , UCHAR eMode ) /***********************************************************************************/ { USHORT iRegIndex ; UCHAR cont_aux ; if ( ( u s A d d r e s s >= REG_HOLDING_START ) && ( ( u s A d d r e s s + usNRegs ) <= ( REG_HOLDING_START + REG_HOLDING_NREGS) ) ) { i R e g I n d e x = u s A d d r e s s REG_HOLDING_START ; cont_aux =3; w h i l e ( usNRegs ) { g u c R c v B u f f e r [ c o n t _ a u x ++] = ( UCHAR ) ( g u s R e g H o l d i n g [ i R e g I n d e x ] >> 8 ) ; g u c R c v B u f f e r [ c o n t _ a u x ++] = ( UCHAR ) ( g u s R e g H o l d i n g [ i R e g I n d e x ] & 0 x00FF ) ; i R e g I n d e x ++; usNRegs; } } else { eMBException = MB_EX_ILLEGAL_DATA_ADDRESS ; } } /* Slave Address 01 Function 03 S t a r t i n g A d d r e s s High 00 S t a r t i n g A d d r e s s Low 00 Number o f P o i n t s High 00 Number o f P o i n t s Low 02 E r r o r Check Low C4 E r r o r Check High 0B Slave Address 01 Function 03 B y t e Count 04 Data , High Word , High B y t e 3F Data , High Word , Low B y t e 80 Data , Low Word , High B y t e 00 Data , Low Word , Low B y t e 00 E r r o r Check Low F7 E r r o r Check High CF */ /************************************/ void Func_read_holding_register ( void ) / / 0 x03 /************************************/ { USHORT usRcvRegStart ; USHORT usRcvRegCount ; i f ( gucPUCFrameLength == ( MB_PDU_FUNC_READ_SIZE + MB_PDU_SIZE_MIN ) ) { u s R c v R e g S t a r t = ( g u c R c v B u f f e r [ 2 ] << 8 ) ; usRcvRegStart |= gucRcvBuffer [ 3 ] ; usRcvRegCount = ( g u c R c v B u f f e r [ 4 ] << 8 ) ; usRcvRegCount | = g u c R c v B u f f e r [ 5 ] ; / * v e r i f i c a s e o nmero de r e g i s t r a d o r e s a s e r e m l i d o s v l i d o . Caso no s e j a , r e t o r n a uma e x c e o do t i p o i l l e g a l d a t a v a l u e . */ if ( ( usRcvRegCount > 0 ) && ( usRcvRegCount <= MB_PDU_FUNC_READ_REGCNT_MAX ) ) { / * r e u t i l i z a o c d i g o da f u n o no b i l h e t e de r e s p o s t a , uma v e z que e s t e a i n d a c o n t i n u a v l i d o e o mesmo * / / * O s e g u n d o b y t e da r e s p o s t a contm o nmero de b y t e s . * / g u c R c v B u f f e r [ 2 ] = ( UCHAR ) ( usRcvRegCount * 2 ) ;

183

/ * f a z uma chamada a f u n o a b a i x o p a r a c o m p l e t a r o b u f f e r com z e r o s , c a s o n e c e s s r i o . * / eMBRegHoldingCB ( u s R c v R e g S t a r t , usRcvRegCount , MB_REG_READ ) ; gucPUCFrameLength = 2 + usRcvRegCount * 2 ; } else { eMBException = MB_EX_ILLEGAL_DATA_VALUE ; } } else { / * No pode s e r uma r e q u i s i o v l i d a p o r q u e o c o m p r i m e n t o i n c o r r e t o . * / eMBException = MB_EX_ILLEGAL_DATA_VALUE ; } } # endif

184

FUNC_READ_INPUT_REGISTER . C # i f FUNC_READ_INPUT_REGISTER_ENABLED # i f n d e f _FUNC_READ_INPUT_REGISTER # d e f i n e _FUNC_READ_INPUT_REGISTER TRUE # d e f i n e REG_INPUT_REG_START 0 # d e f i n e REG_INPUT_REG_NREGS 42 / / d e f i n i o das posies # d e f i n e REG_INPUT_STRAIN_VALUE 0 # d e f i n e REG_INPUT_TEMPERATURE_VALUE 1 # d e f i n e REG_OFFSET_DIF 2 # d e f i n e OFFSET_SAMPLE 5 / / i n c i o de onde s e r o a r m a z e n a d a s a s a m o s t r a s # i f d e f _8051 i d a t a USHORT g u s R e g I n p u t R e g i s t e r [ REG_INPUT_REG_NREGS ] ; # endif # i f d e f _PIC USHORT g u s R e g I n p u t R e g i s t e r [ REG_INPUT_REG_NREGS ] ; # endif /**********************************************************************************/ v o i d eMBRegInputCB ( USHORT u s A d d r e s s , USHORT usNRegs ) /**********************************************************************************/ { UCHAR c o n t _ a u x ; USHORT i R e g I n d e x ; if ( ( u s A d d r e s s >= REG_INPUT_REG_START ) && ( u s A d d r e s s + usNRegs <= REG_INPUT_REG_START + REG_INPUT_REG_NREGS ) ) { i R e g I n d e x = ( USHORT ) ( u s A d d r e s s REG_INPUT_REG_START ) ; cont_aux =3; w h i l e ( usNRegs ) { g u c R c v B u f f e r [ c o n t _ a u x ++] = ( UCHAR ) ( g u s R e g I n p u t R e g i s t e r [ i R e g I n d e x ] >> 8 ) ; g u c R c v B u f f e r [ c o n t _ a u x ++] = ( UCHAR ) ( g u s R e g I n p u t R e g i s t e r [ i R e g I n d e x ] & 0xFF ) ; i R e g I n d e x ++; usNRegs; } } else { eMBException = MB_EX_ILLEGAL_DATA_ADDRESS ; } } /******************************************/ void F u n c _ r e a d _ i n p u t _ r e g i s t e r ( void ) / / 0X04 /******************************************/ { USHORT usRcvRegStart ; USHORT usRcvRegCount ; i f ( gucPUCFrameLength == ( MB_PDU_FUNC_READ_SIZE + MB_PDU_SIZE_MIN ) ) { u s R c v R e g S t a r t = ( g u c R c v B u f f e r [ 2 ] << 8 ) ; usRcvRegStart |= gucRcvBuffer [ 3 ] ; usRcvRegCount = ( g u c R c v B u f f e r [ 4 ] << 8 ) ; usRcvRegCount | = g u c R c v B u f f e r [ 5 ] ; / * v e r i f i c a s e o nmero de r e g i s t r a d o r e s a s e r e m l i d o s v l i d o . c a s o no s e j a , r e t o r n a uma e x c e o do t i p o i l l e g a l d a t a v a l u e . */ if ( ( usRcvRegCount ) && ( usRcvRegCount < MB_PDU_FUNC_READ_REGCNT_MAX ) ) { g u c R c v B u f f e r [ 2 ] = ( UCHAR ) ( usRcvRegCount * 2 ) ; eMBRegInputCB ( u s R c v R e g S t a r t , usRcvRegCount ) ; gucPUCFrameLength = 2 + usRcvRegCount * 2 ; } else { eMBException = MB_EX_ILLEGAL_DATA_VALUE ; } } else { eMBException = MB_EX_ILLEGAL_DATA_VALUE ; } } # endif # endif

185

FUNC_WRITE_SINGLE_COIL . C # i f FUNC_WRITE_SINGLE_COIL_ENABLED # include " func_utils . c" /* Recepo F u n c t i o n code 1 Byte 0 x05 Output Address 2 Bytes 0 x0000 t o 0xFFFF Output Value 2 Bytes 0 x0000 o r 0 xFF00 Exemplo de um b i l h e t e F o r c e S i n g l e C o i l S l a v e A d d r e s s 247 ( F7 ) F u n c t i o n Code 5 ( 0 5 ) C o i l A d d r e s s High O r d e r 0 ( 0 0 ) C o i l A d d r e s s Low O r d e r 9 ( 0 9 ) F o r c e D a t a High O r d e r 255 ( FF ) F o r c e D a t a Low O r d e r 0 ( 0 0 ) E r r o r Check (LRC o r CRC) Resposta F u n c t i o n code 1 Byte 0 x05 Output Address 2 Bytes 0 x0000 t o 0xFFFF Output Value 2 Bytes 0 x0000 o r 0 xFF00 Erro E r r o r code 1 Byte 0 x85 E x c e p t i o n code 1 Byte 01 o r 02 o r 03 o r 04 */ /********************************/ void F u n c _ w r i t e _ s i n g l e _ c o i l ( void ) / / 0 x05 /********************************/ { USHORT usRegAddress ; UCHAR ucByteOffset ; UCHAR *pointer ; u s R e g A d d r e s s = ( g u c R c v B u f f e r [ 2 ] << 8 ) ; usRegAddress | = gucRcvBuffer [ 3 ] ; if ( ( u s R e g A d d r e s s >= REG_COILS_START ) && ( u s R e g A d d r e s s <= REG_COILS_START + REG_COILS_SIZE ) ) { u c B y t e O f f s e t = (UCHAR) ( u s R e g A d d r e s s REG_COILS_START ) ; if ( ( g u c R c v B u f f e r [ 5 ] == 0 x00 ) && ( ( g u c R c v B u f f e r [ 4 ] == 0xFF ) || ( g u c R c v B u f f e r [ 4 ] == 0 x00 ) ) ) { p o i n t e r = gucRegCoil + ucByteOffset ; i f ( g u c R c v B u f f e r [ 4 ] == 0xFF ) * pointer = 1; else * pointer = 0; gucPUCFrameLength = 5 ; } else { eMBException = MB_EX_ILLEGAL_DATA_VALUE ; } } else { / * No pode s e r uma r e q u i s i o c o r r e t a , uma v e z que o c o m p r i m e n t o i n c o r r e t o . * / eMBException = MB_EX_ILLEGAL_DATA_ADDRESS ; } } # endif

186

FUNC_WRITE_SINGLE_REGISTER . C # i f FUNC_WRITE_SINGLE_REGISTER_ENABLED /* ( 0 x06 ) W r i t e S i n g l e R e g i s t e r E s t a f u n o u t i l i z a d a p a r a e s c r e v e r um n i c o r e g i s t r a d o r de memria i n t e r n a no d i s p o s i t i v o r e m o t o . O b i l h e t e e s p e c i f i c a o e n d e r e o em que d e v e s e r e s c r i t o . Os r e g i s t r a d o r e s devem s e r e n d e r e a d o s comeando em z e r o . D e s s a m a n e i r a o r e g i s t r a d o r 1 e n d e r e a d o como 0 . A r e s p o s t a n o r m a l uma c p i a do b i l h e t e de r e q u i s i o , r e t o r n a d a a p s o c o n t e d o do r e g i s t r a d o r t e r s i d o e s c r i t o . Requisio F u n c t i o n code 1 Byte 0 x06 R e g i s t e r Address 2 Bytes 0 x0000 t o 0xFFFF R e g i s t e r Value 2 Bytes 0 x0000 o r 0xFFFF Resposta F u n c t i o n code 1 Byte 0 x06 R e g i s t e r Address 2 Bytes 0 x0000 t o 0xFFFF R e g i s t e r Value 2 Bytes 0 x0000 o r 0xFFFF Erro E r r o r code 1 Byte 0 x86 E x c e p t i o n code 1 Byte 01 o r 02 o r 03 o r 04 */ /************************************/ v o i d F u n c _ w r i t e _ s i n g l e _ r e g i s t e r ( v o i d ) / / 0 x06 /************************************/ { USHORT u s Rc v R eg A d dr e s s ; USHORT usRcvRegValue ; USHORT usByteOffset ; i f ( gucPUCFrameLength == ( MB_PDU_FUNC_READ_SIZE + MB_PDU_SIZE_MIN ) ) { u s Rc v R eg A d dr e s s = ( g u c R c v B u f f e r [ 2 ] << 8 ) ; u s Rc v R eg A d dr e s s | = g u c R c v B u f f e r [ 3 ] ; usRcvRegValue = ( g u c R c v B u f f e r [ 4 ] << 8 ) ; usRcvRegValue | = g u c R c v B u f f e r [ 5 ] ; u s B y t e O f f s e t = u sR c v Re g A dd r e ss REG_HOLDING_START ; if ( ( u s R cv R e gA d d re s s >= REG_HOLDING_START ) && ( u s R cv R e gA d d re s s <= REG_HOLDING_START + REG_HOLDING_NREGS ) ) { g u s R e g H o l d i n g [ u s B y t e O f f s e t ] = usRcvRegValue ; gucPUCFrameLength = 5 ; } else { eMBException = MB_EX_ILLEGAL_DATA_ADDRESS ; } } else { eMBException = MB_EX_ILLEGAL_DATA_VALUE ; } } # endif

187

SPI . C # i f n d e f _SPI # define _SPI TRUE

# ifndef spi_sck / / D e f i n i e s d o s p i n o s de c o m u n i c a o # define spi_sck pin_c3 / / p i n o de c l o c k # define spi_sdi pin_c4 # define spi_sdo pin_c5 # d e f i n e LOAD o u t p u t _ l o w ( PIN_B1 ) ; d e l a y _ u s ( 1 ) ; o u t p u t _ h i g h ( PIN_B1 ) ; # d e f i n e LATCH o u t p u t _ l o w ( PIN_C2 ) ; d e l a y _ u s ( 1 ) ; o u t p u t _ h i g h ( PIN_C2 ) ; / / L l a t c h o u t p u t s H # endif /************************************/ void s p i _ e s c r e v e _ b i t ( boolean bit_wr ) /************************************/ / / e s c r e v e um b i t na i n t e r f a c e SPI { output_low ( spi_sck ) ; / / d e s a t i v a a l i n h a de c l o c k o u t p u t _ b i t ( spi_sdo , bit_wr ) ; / / c o l o c a o dado na s a d a output_high ( spi_sck ) ; / / a t i v a a l i n h a de c l o c k } /*********************************/ v o i d s p i _ e s c r e v e _ b y t e (UCHAR dado ) /*********************************/ / / e s c r e v e um b y t e na i n t e r f a c e SPI { UCHAR c o n t a = 8 ; / / e n v i a p r i m e i r o o MSB while ( conta ) { s p i _ e s c r e v e _ b i t ( ( s h i f t _ l e f t (& dado , 1 , 0 ) ) ) ; c o n t a ; } LATCH } /***********************/ boolean s p i _ l e _ b i t ( void ) /***********************/ / / l e um b i t na i n t e r f a c e SPI { output_low ( spi_sck ) ; output_high ( spi_sck ) ; return input ( spi_sdi ); } /***********************/ UCHAR s p i _ l e _ b y t e ( v o i d ) /***********************/ / / l um b y t e na i n t e r f a c e SPI { UCHAR c o n t a = 7 , dado = 0 ; LOAD s h i f t _ l e f t (& dado , 1 , i n p u t ( s p i _ s d i ) ) ; / / o b i t Qh j e s t d i s p o n v e l while ( conta ) { s h i f t _ l e f t (& dado , 1 , s p i _ l e _ b i t ( ) ) ; c o n t a ; } r e t u r n dado ; } /***********************/ v o i d Liga_LED (UCHAR mask ) /***********************/ { / / l e d l i g a d o em low ( 0 ) v a r _ o u t p u t &= ~mask ; spi_escreve_byte ( var_output ); } /***************************/ v o i d Desliga_LED (UCHAR mask ) /***************************/ { / / l e d d e s l i g a d o em h i g h ( 1 ) v a r _ o u t p u t | = mask ; spi_escreve_byte ( var_output ); } / / d e f i n i e s de comandos SPI p a r a memria / / # d e f i n e s p i _ r e a d _ c m d 0 x03 / / # d e f i n e s p i _ w r i t e _ c m d 0 x02 / / # d e f i n e s p i _ w r e n_ c m d 0 x06 / / # d e f i n e s p i _ w r d i _ c m d 0 x04 / / # d e f i n e s p i _ r d s r _ c m d 0 x05 / / # d e f i n e s p i _ w r s r _ c m d 0 x01 / / v o i d s p i _ e s c r e v e _ e e p r o m ( l o n g i n t e n d e r e c o , b y t e dado ) / / / / e s c r e v e um dado em uma d e t e r m i n a d a p o s i o da memria SPI //{ // output_low ( spi_cs ) ; / / s e l e c i o n a a memria // spi_escreve_byte ( spi_write_cmd ) ; / / e n v i a comando de e s c r i t a // s p i _ e s c r e v e _ b y t e ( e n d e r e c o > >8); / / e n v i a e n d e r e o MSB // spi_escreve_byte ( endereco ) ; / / e n v i a e n d e r e o LSB // s p i _ e s c r e v e _ b y t e ( dado ) ; / / e n v i a dado // output_high ( spi_cs ) ; / / d e s a t i v a l i n h a CS e i n i c i a a e s c r i t a // / / l e m b r es e de a g u a r d a r 5ms a n t e s de r e a l i z a r o u t r a e s c r i t a ou l e i t u r a //} // / / byte spi_le_eeprom ( long i n t endereco ) / / / / l um dado de uma d e t e r m i n a d a p o s i o da memria SPI //{

188

// b y t e dado ; // output_low ( spi_cs ) ; // s p i _ e s c r e v e _ b y t e ( spi_read_cmd ) ; / / e n v i a comando de l e i t u r a // s p i _ e s c r e v e _ b y t e ( e n d e r e c o >> 8 ) ; / / e n v i a e n d e r e o MSB // spi_escreve_byte ( endereco ) ; / / e n v i a e n d e r e o LSB // dado = s p i _ l e _ b y t e ( ) ; / / l o dado // output_high ( spi_cs ) ; / / d e s a t i v a l i n h a CS e t e r m i n a l e i t u r a //} // / / void s p i _ a t i v a _ e s c r i t a _ e e p r o m ( void ) / / / / h a b i l i t a a e s c r i t a na memria //{ // output_low ( spi_cs ) ; // s p i _ e s c r e v e _ b y t e ( spi_wren_cmd ) ; // output_high ( spi_cs ) ; //} // / / void s p i _ d e s a t i v a _ e s c r i t a _ e e p r o m ( void ) / / / / d e s a b i l i t a a e s c r i t a na memria SPI //{ // output_low ( spi_cs ) ; // s p i _ e s c r e v e _ b y t e ( spi_wrdi_cmd ) ; // output_high ( spi_cs ) ; //} // / / byte spi_le_status_eeprom ( void ) / / / / l e o r e g i s t r a d o r de e s t a d o da memria //{ // b y t e dado ; // output_low ( spi_cs ) ; // spi_escreve_byte ( spi_rdsr_cmd ) ; // dado = s p i _ l e _ b y t e ( ) ; // output_high ( spi_cs ) ; //} // / / v o i d s p i _ e s c r e v e _ s t a t u s _ e e p r o m ( b y t e dado ) / / / / e s c r e v e o dado no r e g i s t r a d o r de e s t a d o da memria SPI //{ // output_low ( spi_cs ) ; // s p i _ e s c r e v e _ b y t e ( spi_wrsr_cmd ) ; // s p i _ e s c r e v e _ b y t e ( dado ) ; // output_high ( spi_cs ) ; //} # endif

189

MB_CONFIG . H # i f n d e f _CONFIG # d e f i n e _CONFIG # i f d e f ENABLED # u n d e f ENABLED # endif # define ENABLED # define DISABLED

1 0

/ * D e f i n e s */ / * q u a i s t i p o s de p r o t o c o l o s e s t o a t i v a d o s * / # d e f i n e MB_RTU_ENABLED ENABLED / * Se o p r o t o c o l o RTU e s t h a b i l i t a d o * / # d e f i n e MB_ASCII_ENABLED DISABLED / * Se o p r o t o c o l o ASCII e s t h a b i l i t a d o * / # d e f i n e MB_TCP_ENABLED DISABLED / * o v a l o r do tempo l i m i t e p a r a o p r o t o c o l o Modbus ASCII . * * E s t e tempo no f i x o p a r a o Modbus ASCII e d e s t e modo , uma o p o a s e r c o n f i g u r a d a * Deve s e r i n f o r m a d o o tempo mximo a s e r a g u a r d a d o p e l o t e r m i n a l . */ # d e f i n e MB_ASCII_TIMEOUT_SEC 1 # define # define # define # define # define # define # define # define # define # define # define # define # define # define # define # define # define # endif MB_FUNC_HANDLERS_MAX PIN_ENABLE_RX_EXISTS FUNC_READ_COILS_ENABLED FUNC_READ_DISCRETE_INPUTS_ENABLED FUNC_READ_HOLDING_REGISTER_ENABLED FUNC_READ_INPUT_REGISTER_ENABLED FUNC_WRITE_SINGLE_COIL_ENABLED FUNC_WRITE_SINGLE_REGISTER_ENABLED FUNC_DIAG_READ_EXCEPTION_ENABLED FUNC_DIAG_DIAGNOSTIC_ENABLED FUNC_DIAG_GET_COM_EVENT_CNT_ENABLED FUNC_DIAG_GET_COM_EVENT_LOG_ENABLED FUNC_WRITE_MULTIPLE_COILS_ENABLED FUNC_WRITE_MULTIPLE_REGISTERS_ENABLED FUNC_OTHER_REPORT_SLAVEID_ENABLED FUNC_READWRITE_MULTIPLE_REGISTERS_ENABLED FUNC_READ_DEVICE_IDENTIFICATION_ENABLED 16 FALSE ENABLED / / f c n 01 ENABLED / / f c n 02 ENABLED / / f c n 03 ENABLED / / f c n 04 ENABLED / / f c n 05 ENABLED / / f c n 06 DISABLED / / f c n 07 DISABLED DISABLED DISABLED DISABLED / / f c n 15 DISABLED / / f c n 16 DISABLED DISABLED DISABLED