Vamos fazer um Atmega328P comunicar-se com o ScadaBR. Eu testei esse programa
com um Arduino Uno e funcionou muito bem. Para obter mais praticidade reso!"i uti!izar o Proteus para simu!ar o arduino Uno. A comunica#$o com o ScadaBR "ai fazer uso do protoco!o %odbus "amos precisar tamb&m de um emu!ador de porta seria! - o Virtua! Seria! Port Emu!ator ou outro e'ui"a!ente no meu caso criei um par de portas seriais ()%* e ()%2. A ()%* ficou sendo uti!izada pe!o componente ()%P+% do Proteus e a ()%2 ficou sendo uti!izada pe!o ScadaBR. ,a te!a abai-o temos o Virtua! Seria! Port Emu!ator apresentado o par de portas rec&m-criadas. Agora precisamos criar um pe'ueno circuito no Proteus com os componentes e-ibidos abai-o. .e"emos ter c/a"es e potenci0metros para simu!ar sensores e !ig1-!os aos pinos digitais e 2s entradas ana!3gicas bem como !igar !eds para simu!ar as cargas 'ue desa4amos acionar. ) nosso circuito ser1 capaz de !5 o estado !3gico de 6 c/a"es !5 www.mundoarduino.com a tens$o presente em 7 entradas ana!3gicas e acionar 6 cargas. 8amb&m n$o de"emos es'uecer de adicionar o componente ()%P+% respons1"e! pe!a comunica#$o seria! com o ScadaBR. 9a#amos as !iga#:es conforme a figura abai-o; (!icando no Atmega328P podemos configurar o micro para e-ecutar o ar'ui"o /e- respons1"e! pe!a imp!ementa#$o do protoco!o %odbus. Voc5 pode fazer o do<n!oad do ar'ui"o no site <<<.mundoarduino.com. www.mundoarduino.com ) componente ()%P+% de"er1 ser configurado conforme a figura abai-o
www.mundoarduino.com ) ScadaBR ficar1 respons1"e! pe!a e-ibi#$o dos estados das c/a"es !eitura das portas ana!3gicas e pe!a atua#$o das cargas no nosso caso as cargas s$o apenas !eds. Supondo 'ue "oc5 41 ten/a o ScadaBR insta!ado de"emos criar um .ata Sources para ser"ir de fonte de dados para o ScadaBR. Vamos adicionar um .ata Sources do tipo %odbus Seria!. (!icando no =cone do Data Sources e depois se!ecionando tipo Modbus Serial podemos testar a comunica#$o com o Proteus. .e"emos nos assegurar 'ue o %odbus Seria! este4a uti!izando a porta seria! e "e!ocidade correta. Se a simu!a#$o no Proteus esti"er rodando ao c!icarmos em Pesquisar por ns>desabi!ite o .ata Sources antes de eecutar a pes'uisa? ser1 !oca!izado o escra"o * 'ue & o atmega328P rodando no Proteus. (!icando em Ler dados se se!ecionarmos a 9ai-a de registros apropriada - Registrador olding! bem como o n@mero de registradores 'ue estamos uti!izando no nosso caso *6 registradores; A6 para as pinos digitais 7 para as entradas ana!3gicas e 6 para as cargas n3s teremos acesse direto ao "a!ores atuais dos registradores conforme "emos na figura abai-o; www.mundoarduino.com %as isso n$o & tudo n3s de"emos criar .ata um .ata Points para cada registrador .,o e-emp!o abai-o criamos um .ata Point para !5 a entrada ana!3gica do Atmega328P. www.mundoarduino.com Buando c!icarmos em adicionar ponto estaremos preparando um Data Point para o ScadaBR para !5 a entrada A.(A >pino 23? do Atmega328P. Se dese4armos !5 outra entrada ana!3gica de"emos da mudar o campo O""set#baseado e$ %& para * e assim sucessi"amente at& o "a!or C 'uando ent$o estaremos !endo todas as entradas ana!3gicas do Atmega328P.Ve4a na figura abai-o a configura#$o do data Point para !5 a entrada ana!3gica. Para as entradas ana!3gicas podemos inserir um fator mu!tip!icati"o e assim !ermos as tens:es presentes nos pinos "ariando de AV a CV e n$o de A a*A23. (!icando em Watch List Detalhes do Data Point Editar data Point poderemos atribuir uma m1scara e um sufi-o para a grandeza 'ue estamos medindo.Ve4a a figura abai-o; www.mundoarduino.com Vamos discutir mais sobre o c3digo 'ue roda no micro em outra oportunidade mas uma boa o!/ada no trec/o abai-o d1 a compreens$o necess1ria para estabe!ecer o O""set necess1rio para configurar os .ata Points tanto para as entradas digitais ana!3gicas bem como as rotinas necess1rias para escre"er nos pinos do Atmega328P e atuar cargas.) programa comp!eto pode ser bai-ado na +nternet D pes'uise no goog!e Emodbus s!a"e arduinoF e encontrar1 faci!mente o ar'ui"o .pde 'ue imp!ementa o protoco!o modbus. ) trec/o de c3digo abai-o cont5m a parte rea!mente importante com as modifica#:es necess1rias para traba!/a com o Atmega328P. enum G %BHSIAVE J * KL modbus s!a"e id LK MN KL s!a"e registers e-amp!e LK enum G %BHREOA %BHREO* %BHREO2 %BHREO3 %BHREO6 %BHREOC www.mundoarduino.com %BHREO7 %BHREOP %BHREO8 %BHREOQ %BHREO*A %BHREO** %BHREO*2 %BHREO*3 %BHREOS
KL tota! number of registers on s!a"e LK MN int regsR%BHREOSSN KL t/is is t/e s!a"eTs modbus data map LK "oid setup>? G
M "oid !oop>? G KL 8/is is a!! for t/e %odbus s!a"e LK updateHmbHs!a"e>%BHSIAVE regs %BHREOS?N
regsR%BHREOASJana!ogRead>A?N regsR%BHREO*SJana!ogRead>*?N regsR%BHREO2SJana!ogRead>2?N regsR%BHREO3SJana!ogRead>3?N regsR%BHREO6SJana!ogRead>6?N regsR%BHREOCSJana!ogRead>C?N regsR%BHREO7SJdigita!Read>*3?N regsR%BHREOPSJdigita!Read>*2?N regsR%BHREO8SJdigita!Read>**?N regsR%BHREOQSJdigita!Read>*A?N s<itc/ > regsR%BHREO*AS? G case *;
digita!Vrite>QW+OW?N breaUN case A; digita!Vrite>QI)V?N breaUN defau!t; digita!Vrite>QI)V?N M
s<itc/ > regsR%BHREO**S? G case *; www.mundoarduino.com
digita!Vrite>8W+OW?N breaUN case A; digita!Vrite>8I)V?N breaUN defau!t; digita!Vrite>8I)V?N M
s<itc/ > regsR%BHREO*2S? G case *;
digita!Vrite>PW+OW?N breaUN case A; digita!Vrite>PI)V?N breaUN defau!t; digita!Vrite>PI)V?N M
s<itc/ > regsR%BHREO*3S? G case *;
digita!Vrite>7W+OW?N breaUN case A; digita!Vrite>7I)V?N breaUN defau!t; digita!Vrite>7I)V?N M www.mundoarduino.com Ve4a o e-emp!o de configura#$o de um .ata Point para !5 uma c/a"e com o Atmega328P. E abai-o a configura#$o de um .ata Point para escre"er no Atmega328P um "a!or bin1rio e assim poder comandar cargas. www.mundoarduino.com ) prob!ema ent$o se resume em ter o cuidado de atribuir o n@mero do escra"o )ffset tipo de dados ade'uados corretos aos .ata Points e para fazer tudo isso basta obser"ar bem o trec/o do c3digo postado nesse tutoria!. )b"iamente "oc5 tamb&m & !i"re para bai-ar da internet a bib!ioteca %odbus para Arduino e a!ter1-!a para atender suas necessidades. www.mundoarduino.com Por fim c!icando em Watch list "oc5 poder1 acrescentar todos os .ata Points para "isua!izar aos "a!ores ne!es armazenados bem como a!terar o n="e! !3gico dos pinos configurados como sa=da e acionar as cargas a e!es !igadas. Ve4a a figura abai-o; www.mundoarduino.com www.mundoarduino.com