Escolar Documentos
Profissional Documentos
Cultura Documentos
Relatorio Modbus - PAA
Relatorio Modbus - PAA
A comunicao de dados seriais assncrona (sem linha de Clock) aquela pela qual os bits de um
dado (ex.: dado ou byte = 8 bits) so disponibilizados no terminal TxD (do microcontrolador)
sequncialmente ou em srie, por um intervalo de tempo equivalente a 1/ ("baud rate") . O termo
"baud rate" comumente traduzido por "Taxa de Transmisso". Um valor conservador para "baud
rate" 9600 bps ("bits per seconds"), nesse caso o tempo de cada bit na figura abaixo seria de
4
1/ 9600=1,04166 . 10 s , aproximadamente 100 us (microsegundos).
https://wcscnet.com/wp-content/uploads/2014/11/Figure11.gif
Na Figura acima podemos notar o uso dos termos MARCA e ESPAO ("Mark" e "Space") para os
nveis lgicos '1' e 0', respectivamente e 3 (trs) Campos distintos :
"Start Bit" : responsvel por "acordar/despertar" o dispositivo receptor alertando-o que uma
transmisso est a caminho;
"Data Bits" : So os 8 (oito) bits do dado sendo transmitido. A transimisso comea pelo bit 0 (o bit
menos significativo). Podendo ser 7 (sete) o nmero de bits mas, em desuso ;
["Parity Bit"] ; Esse campo no est representado na figura. Seria mais uma seo com pontilhados
e o nmero 8 inscrito nela. Serviria para verificao da integridade dos bits anteriormente
transmitidos (bits 0 a 7). Pode-se convencionar Paridade Par ou mpar ("Even" ou "Odd"). Se o
convencionado fosse Paridade Par e o nmero de bits iguais a '1' no campo "Data bits" fosse 4
(par) o bit de paridade transmitido seria de nvel lgico '1', pois quatro um nmero par. A
verificao da integridade consiste em contar o nmero de bits recebidos iguais a um ( se um
nmero para ou mpar) e comparar com o "Parity Bits" computado pelo transimissor. Essa tcnica
no cem por cento eficaz mas, agrega confiabilidade s comunicaes de dados. Para maiores
explicaes consulte outras referncias [Parity].
"Stop Bit(s)": O bit de parada, isto , um bit de separao entre um dado transmitido e outro. Pode
ser entendido como um tempo que dado ao receptor para armazenar a informao recm recebida.
Pode se no total de 1 1,5 ou 2 "Stop Bits" (1,5 : [1/(baud rate)] * 1,5 ) .
http://i.stack.imgur.com/FYkfN.png
Um Microcontrolador que contenha uma U(S)ART ["Universal (Syncrhonous) Asynchronous
Receiver Transmitter"], ou um hardware especfico que seja capaz de emitir um "Start Bit", os oito
bits de "Data Bits", um "Stop Bit" para cada Dado, o faz em nveis lgicos '0' e '1' ou em nveis
digitais TTL/CMOS, conforme a tecnologia empregada.
Para a comunicao serial assncrona com um Computador Pessoal (originalmente denominado PC)
via interface RS-232 necessrio a utilizao de "Line Drivers" e "Line Receivers" ou Circuitos
Integrados (C.I.) capazes de converter o sinal digital em tenses especificadas pelo pelo padro RS232. O padro RS-232 foi originalmente criado para comicao com Teleimpressoras e Modens.
Oportunamente, vale dizer que esse padro serve somente para comunicaes ponto-a-ponto ("peerto-peer") no admitindo assim, nenhuma configurao de conexo em redes.
Um Circuito Integrado (C.I.) clssico que contm "Line Drivers" e "Line Receivers" para RS-232
o componente MAX-232 da empresa Maxim. Na Figura abaixo um circuito tpico usando esse C.I.
apresenta em seu lado esquerdo o conector "COM DB9" de um PC, o "MAX232" ao centro e do
lado direito onde se l "TTL CMOS" o Microcontrolador
http://www.aquaphoenix.com/hardware/ledlamp/reference/max232_diagram.gif
O papel do do MAX232 o de converter os sinais MARCA para uma tenso negativa (-V) e
ESPAO para uma tenso positiva (+V). Observe na Figura abaixo que o ESPAO de "Start Bit"
foi convertido para uma tenso +V (no especificada mas, entre +3V e +15V) e que o "b0" (bit zero
do "Data Bits") de nvel lgico '1' foi convertido para MARCA para uma tenso -V (entre -3V e
-15V). Para deixar clara a utilizao do MAX232, o Microcontrolador tem seu pino TxD conectado
ao pino 11 do MAX232 (entrada digital TTL/CMOS) e no pino 14 esses nveis lgicos so
convertidos para as tenses positiva e negativa do padro RS-232, na outra extremidade de um cabo
fica o conector DB-9 o qual conectado em um PC. Por outro lado, o pino 12 do MAX232 tras o
sinal serial recebido e convertido para os nvies digitais TTL/CMOS.
http://upload.wikimedia.org/wikipedia/commons/thumb/b/b0/Rs232_oscilloscope_trace.svg/722pxRs232_oscilloscope_trace.svg.png
Nos Microcomputadores Arduino pode-se usar a Classe "Serial" e seus mtodos (funes membro
da Classe) para inicializar, verificar, receber e transmitir "Data Bits[Begin]
1
Serial.begin(speed, config);
Inicializar USART
Serial.begin(speed);
Serial.available();
int Serial.read();
Serial.write(val);
Serial.write(str);
Serial.write(buf, len);
Serial.flush();
Serial.print(val);
10
Serial.print(val, format);
O parmetro opcional "config" pode definir por meio de constantes definidas no arquivo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
}
void loop() {
// transmitir dados somente aps receber dados
if (Serial.available() > 0) {
// l byte que chegou
incomingByte = Serial.read();
// Mostra o que recebeu
Serial.print("I received: ");
Serial.println(incomingByte, DEC);
}
}
A forma de se testar esse programa pelo uso do "serial monitor" identificvel pelo smbolo a lente
de aumento. Abaixo esto os "prints" dos valores transmitidos e dos recebidos.
int analogValue = 0;
void setup() {
// open the serial port at 9600 bps:
Serial.begin(9600);
}
void loop() {
// read the analog input on pin 0:
analogValue = analogRead(0);
// print it out in many formats:
Serial.println(analogValue);
// print as an ASCII-encoded decimal
Serial.println(analogValue, DEC); // print as an ASCII-encoded decimal
Serial.println(analogValue, HEX); // print as an ASCII-encoded hexadecimal
Serial.println(analogValue, OCT); // print as an ASCII-encoded octal
Serial.println(analogValue, BIN); // print as an ASCII-encoded binary
// delay 1000 milliseconds before the next reading:
delay(1000);
}
V R=(V S+ VN )(V S + V N )
V R=V S + V N + V SV N
V R =2 V S
http://upload.wikimedia.org/wikipedia/commons/thumb/e/e7/DiffSignaling.png/435pxDiffSignaling.png
Topologias de Redes
Redes de computadores
podem ser implementadas em diversas topologias ou
configuraes[Topologias de Rede], tais como: Anel , Estrela , Malha, rvore ou Barramento
("Bus" ou "Multi-point") . Uma das topologias mais comuns [Topologia RS485] para a
implementao de uma rede RS-485 do tipo Barramento. Esse tipo de rede requer "Line Drivers"
e "Line Receivers" apropropriados, tais como os da linha MAX485, cujas principais caractersticas
so: possibilidade de operao at 2,5 Mbps ("Mega bits per second") e conexo de at 32
receptores na rede.
http://pt.wikipedia.org/wiki/Topologia_de_rede#/media/File:BusNetwork.svg
http://www.lammertbies.nl/picture/rs485_network_topology.png
Na Figura acima, cada tem com a denominao "Node" corresponde a um Ponto ou N da rede.
Como exemplo poderia-se considerar que o elemento "Node 1" fosse o Mestre ("Master") e todos os
demais "Nodes" fossem Escravos ("Slaves"). Nesse exemplo o dispositivo Mestre deseja realizar
uma comunicao com um dos Ns, assim ele deve tramitir um pacote ("packet") de dados ou um
telegrama ("telegram") endereado ao N com o qual deseja-se comunicar-se. Dessa forma apenas o
"Line Driver" do Mestre (o tringulo com a letra "S" nele inscrito) estaria apto ou habilitado
("enable") a transmitir; todos os outros "Line Drives" estariam desabilitados ("disable"). Por
conseguinte, todos os "Line Receivers" dos Escravos estariam habilitados a receber dados exceto o
do Mestre. Numa segunda etapa o Escravo endereado enviaria um telegrama ao Mestre com a
informao requisitada.
Para concluir as explicao a respeito do enlace fsico, considere o grfico abaixo no qual so
http://www.chipkin.com/articles/wp-content/uploads/2007/04/rs-485_waveform.png
Protocolo Modbus
O protocolo Modbus foi desenvolvido pela empresa Modicom em 1979 para uso particular mas
posteriormente tornou-se um protocolo aberto e passou a ser usado amplamente em equipamentos
que se comunicam em rede, principalmente para Redes Industriais de Computadores.
O protocolo Modbus opera sob uma rede de topologia de barramento onde h apenas um
equipamento que atua como Mestre ("Master") e os demais como Escravos ("Slaves"). Todas a
comunicaes se originam no Mestre, cabendo aos Escravos decodificar ("compreeder") os
comandos nelas embutidas e responder ou realizar algum trabalho, quando for o caso.
O uso do termo "protocolo" implica no uso de regras e/ou procedimentos, tais quais os que so
aplicados em cerimoniais (ex.: colao de grau, tribunal do juri, etc.) onde h uma ordem
cronolgica para o desenvolvimento das aes (abertura; composio da mesa; discursos; etc.) ou
mesmo no que acontece quando se atende ao telefone em uma empresa em que o funcionrio diz
seu nome, departamento, faz uma saudao e se coloca a disposio. nesse sentido que usado o
termo "protocolo" no que diz respeito a uma rede de computadores industriais. A ttulo de
ilustrao, considere a Figura a seguir na qual o "Client" faz um pedido ao "Server". O "Server"
realiza alguma operao interna e fornece a informao ao "Client". Que fique claro, o dispositivo
que inicia a comunicao ("Client") o Mestre !
O meio fsico no qual o protocolo Modbus deve ser implementado a rede RS-485 para a topologia
de barramento. Pode-se usar uma rede Ethernet, cuja topologia em rvore, para a implementao
de Modbus/TCP. Excepcionalmente, pode-se implementar uma rede ponto-a-ponto com apenas um
Mestre e um Escravo. Neste caso uma rede RS-232 o bastante (ou USB no caso de um
Computador Pessoal e um Arduino ). Na Figura abaixo pode-se verificar as diversidade de
topologias que se aplicam ao protocolo Modbus.
O protocolo Modbus pode operar em dois modos: 1- ASCII ("American Standard Code for
Information Interchange"); 2- RTU ("Remote Terminal Unit").
No modo ASCII os bytes so codificados usando-se sua respectiva tabela. Ex: 04h : 30h 34h
Assim cada byte convertido em dois bytes (caracteres ASCII). Torna a comunicao um tanto
O protocolo Modbus tem seus "malotes", um para cada finalidade. Quando se deseja acessar tal
finalidade usa-se o "malote" tal, tanto para enviar quanto para receber. Mais especificamente o
protocolo Modbus usa o modelo de dados baseado em tabelas que do acesso a "Discrete Inputs",
"Coils", "Input Registers" e "Holding Registers", respecitivamente: Entradas Digitais,
Bobinas/contatores/reles, Registradores de Entradas e Registradores de Manuteno ou de uso
gearal. Note na Figura abaixo o tipo do objeto ("Object type") e o tipo de ao que se pode realizar
com ele ("Type of").
A biblioteca Modbus ("SimpleModbusSlaveV10") para Arduino "simple-modbus " pode ser obtida
on-line [1]. Esse pacote oferece duas bibliotecas para que se possa implementar o Protocolo
Modicom Modbus RTU com Microcomputadores Arduino podendo ele desempenhar o papel de
Mestre ("Master") ou de Escravo ("Slave") em uma rede. Essas bibliotecas so
SimpleModbusMaster e SimpleModbusSlaver, respectivamente.
Na biblioteca SimpleModbusSlaveV10 so implementadas as funes 3 e 15
"SimpleModbus is a collection of Arduino libraries that enables you to communicate serially using the
Modicon Modbus RTU protocol. Both SimpleModbusMaster & SimpleModbusSlave implements function 3
and 16 in addition SimpleModbusMaster implements function 1, 2, 4 and 15. Broadcasting is supported on
both libraries for function 16 and 15 on the master. Both libraries share the exact same API. There are only
two required functions modbus_update() and modbus_configure(). Both libraries have been tested
extensively on commercial equipment like LS Industrial PLC's, Schneider equipment, Ascon equipment,
Siemens PLC's, Selco alarm panels and various commercial panel meters and indicators. In addition to this
SimpleModbusSlave has also been tested on LS InfoU SCADA system, Mango M2M SCADA, FreeSCADA
2, Modbus Poll, the free QModbus slave tester and the very handy modbus slave tester, Mtester "
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#define
LED 9
Logo aps o login surge a tela inicial a partir da qual, pelo icone "Data Sources" pode-se escolher
qual o protocolo de comunicao que ser usado
A escolha pelo "Modbus serial", que deve ser adicionado clicando-se no icone destacado na
Figura abaixo.
Esta seo moutrou o "Resultado: 1023" relativo leitura do holding register ao qual est associado
o pontencimentro cuja leitura fora feita pela funo ...
Nesta seo so mostradas duas caixas. Na caixa da esquerda o Scadabr informa ter encontrado o
"n 1" e na da direita mostrado o valor "03ff", isto , o valor 1023 lido do potencimetro/trim-pot.
Deve-se dar um Nome, tal como Arduino; deve-se clicar no "disquete" para salvar as configuraes.
Os prximos passos devem ser no sentido de se adiciona "data points" . Para isso dev-se clicar no
bloco tipo "lego".
Todos os "data points" inseridos sero do tipo "holding register" visto que a biblioteca xxxx s
implementa um subconjunto do protocolo modbus.
Nas figuras a seguir so mostradas as inseres dos "data points" ADC_VAL e PWM_VAL (esses
so os mesmos nomes que aparecem nas linhas nn e nn do programa exemplo. Isso no
obrigatrio mas sim o nmero do ndice que os identificam). Note que no "data point" ADC_VAL
foi desmarcada a opo "configurvel" por se tratar de uma entrada ou um "data point" de entrada e
que para PWM_VAL foi marcado com "configurvel" pois por meio do ScadaBr pode-se enviar um
valor para configurar o a largura de pulso do PWM do Microcontrolador no Arduino.
Os prximos passos devem ser dados no sentido de se definir a interface grfica do supervisrio
(lembre-se "scada" = "supervisory control and data analys" / controle supervisrio e analise de
dados).
Referncias
[1] https://code.google.com/p/simple-modbus/
[Parity] http://en.wikipedia.org/wiki/Parity_bit
[Begin] http://www.arduino.cc/en/Serial/Begin
[] http://en.wikipedia.org/wiki/Serial_port
http://en.wikipedia.org/wiki/Asynchronous_serial_communication
http://en.wikipedia.org/wiki/RS-232
[] RS-485 LINE DRIVER] http://cds.linear.com/image/3111.png
[Topologia RS485] http://www.lammertbies.nl/comm/info/RS-485.html
[Topologia de Rede] http://pt.wikipedia.org/wiki/Topologia_de_rede
[] http://www.siongboon.com/projects/2006-03-06_serial_communication/
[ScadaBr] http://www.scadabr.com.br/