Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
TECNOLOGIA SUL-RIO-GRANDENSE
AUTOMAÇÃO INDUSTRIAL
Camaquã
2017
SUMÁRIO
Figura 1 - Maquete
A maquete que será utilizada para serem realizados os testes e fixadas as
caixas com os componentes eletrônicos segue abaixo:
1.2 CAIXAS
Figura 4 - Tampa
Assim como as caixas, também foram impressas duas tampas iguais. Nelas
serão colocados os sensores ultrassônicos, e, posteriormente, serão fixadas nas
caixas.
2. ELETRÔNICA
SI D11 D51
SO D12 D50
INT D2 D2
Figura 12 - Transistor
Outro componente presente no projeto é a fita de LEDs RGB que irá indicar a
situação das vagas do estacionamento de forma independente. Caso a vaga esteja
ocupada, somente os LEDs vermelhos ficarão ligados e, em contrapartida, se a vaga
estiver livre, ficarão ligados os LEDs verdes para vagas convencionais ou azuis para
vagas reservadas para portadores de deficiência. Suas especificações podem ser
vistas abaixo:
3.1 HISTÓRICO
3.4 ENDEREÇOS
CÓDIGO DA DESCRIÇÃO
FUNÇÃO
1 Leitura de bloco de bits do tipo coil (saída discreta).
2 Leitura de bloco de bits do tipo entradas discretas.
3 Leitura de bloco de registradores do tipo holding.
4 Leitura de bloco de registradores do tipo input.
5 Escrita em um único bit do tipo coil (saída discreta).
6 Escrita em um único registrador do tipo holding.
7 Ler o conteúdo de 8 estados de exceção.
8 Prover uma série de testes para verificação da comunicação e
erros internos.
11 Obter o contador de eventos.
12 Obter um relatório de eventos.
15 Escrita em bloco de bits do tipo coil (saída discreta).
16 Escrita em bloco de registradores do tipo holding.
17 Ler algumas informações do dispositivo.
20 Ler informações de um arquivo.
21 Escrever informações em um arquivo.
22 Modificar o conteúdo de registradores de espera através de
operações lógicas.
23 Combina ler e escrever em registradores numa única transação.
24 Ler o conteúdo da fila FIFO de registradores.
43 Identificação do modelo do dispositivo.
No modo RTU não existe um caractere específico que indique o início ou o fim
de um telegrama. A indicação de quando uma nova mensagem começa ou quando
ela termina é feita pela ausência de transmissão de dados na rede, por um tempo
mínimo de 3,5 vezes o tempo de transmissão de um byte de dados. Sendo assim,
caso um telegrama tenha iniciado após a decorrência desse tempo mínimo, os
elementos da rede irão assumir que o primeiro caractere recebido representa o início
de um novo telegrama. E da mesma forma, os elementos da rede irão assumir que o
telegrama chegou ao fim quando, recebidos os bytes do telegrama, este tempo
decorra novamente.
Se durante a transmissão de um telegrama o tempo entre os bytes for maior
que este tempo mínimo, o telegrama será considerado inválido, pois o controlador irá
descartar os bytes já recebidos e montará um novo telegrama com os bytes que
estiverem sendo transmitidos. O tempo para transmitir uma palavra do quadro varia
de 573us para taxas de comunicação acima de 19200bits/s e 9 ms para a taxa de
1200bits/s. O campo de checagem de erros é baseado no método CRC (Cyclical
Redundancy Checking).
4.1 EtherCard.h
4.2 Modbus.h
Modbus
ModbusSerial
ModbusIP
ModbusIP_ENC28J60
ModbusIP_ESP8266AT
#include <EtherCard.h>
#include <Modbus.h>
#include <ModbusIP_ENC28J60.h>
//declaração variáveis
const int LAMP1_COIL = 100;
const int ledPin = 9;
ModbusIP mb;
void setup() {
//configuração MAC
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
//configuração IP
byte ip[] = { 192, 168, 1, 120 };
mb.config(mac, ip);
pinMode(ledPin, OUTPUT);
mb.addCoil(LAMP1_COIL);
}
void loop() {
mb.task();
digitalWrite(ledPin, mb.Coil(LAMP1_COIL));
}
4.3 Ultrasonic.h
#include <Ultrasonic.h>
#define TRIGGER_PIN 12
#define ECHO_PIN 13
void setup()
{
Serial.begin(9600);
}
void loop()
{
float cmMsec, inMsec;
//leitura do tempo de resposta
long microsec = ultrasonic.timing();
Esta biblioteca trabalha com diversos modelos de sensor: SR04, SRF5, SRF06,
entre outros. O atraso é diminuído com esta biblioteca. Abaixo temos um exemplo de
como esta biblioteca funciona:
#define SONAR_NUM 15
#define MAX_DISTANCE 200
#define PING_INTERVAL 33
NewPing sonar[SONAR_NUM] = {
NewPing(41, 42, MAX_DISTANCE);
NewPing(43, 44, MAX_DISTANCE),
NewPing(45, 20, MAX_DISTANCE),
NewPing(21, 22, MAX_DISTANCE),
NewPing(23, 24, MAX_DISTANCE),
NewPing(25, 26, MAX_DISTANCE),
NewPing(27, 28, MAX_DISTANCE),
NewPing(29, 30, MAX_DISTANCE),
NewPing(31, 32, MAX_DISTANCE),
NewPing(34, 33, MAX_DISTANCE),
NewPing(35, 36, MAX_DISTANCE),
NewPing(37, 38, MAX_DISTANCE),
NewPing(39, 40, MAX_DISTANCE),
NewPing(50, 51, MAX_DISTANCE),
NewPing(52, 53, MAX_DISTANCE)
};
void setup() {
Serial.begin(115200);
pingTimer[0] = millis() + 75;
for (uint8_t i = 1; i < SONAR_NUM; i++)
pingTimer[i] = pingTimer[i - 1] + PING_INTERVAL;
}
void loop() {
for (uint8_t i = 0; i < SONAR_NUM; i++) {
if (millis() >= pingTimer[i]) {
pingTimer[i] += PING_INTERVAL * SONAR_NUM;
if (i == 0 && currentSensor == SONAR_NUM - 1) oneSensorCycle();
sonar[currentSensor].timer_stop();
currentSensor = i;
cm[currentSensor] = 0;
sonar[currentSensor].ping_timer(echoCheck);
}
}
}
void echoCheck() {
if (sonar[currentSensor].check_timer())
cm[currentSensor] = sonar[currentSensor].ping_result / US_ROUNDTRIP_CM;
}
void oneSensorCycle() {
for (uint8_t i = 0; i < SONAR_NUM; i++) {
Serial.print(i);
Serial.print("=");
Serial.print(cm[i]);
Serial.print("cm ");
}
Serial.println();
}
Programação final:
#include <NewPing.h>
//Declaração das variáveis e defines
#define BLUE 6
#define RED 7
const int ULTRA_1 = 0;
int aux;
float cm;
long ultTempo;
long tempoAtual;
int periodo;
ModbusIP mb;
void setup ()
{
//Endereço de MAC do módulo
byte mac [] = {0xDE, 0xAD, 0xBE, 0xEF, 0xEF, 0xFE, 0xED};
//Endereço de IP do módulo
byte ip [] = {192, 168, 0, 5};
//Configuração do módulo
mb.config (mac, ip);
aux = 0;
Serial.begin (115200);
//Definição dos leds como saída
pinMode (BLUE, OUTPUT);
pinMode (RED, OUTPUT);
void loop ()
{
cm = ultra.ping_cm();
ultTempo = tempoAtual;
}
5. SISTEMAS SUPERVISÓRIOS
Em virtude de não ser mais o carro chefe da empresa, essa oportuniza uma
versão gratuita do mesmo. Apesar dessa ser limitada em 20 tags, isso não tornou-se
um problema para o projeto, em razão de necessitarmos de apenas duas tags PLC
para o desenvolvimento da proposta. Assim, juntando esse quesito com o anterior, a
inclinação pelo Elipse Scada pareceu a mais óbvia para o grupo por permitir, na teoria,
a composição do trabalho sem nenhum grande obstáculo.
5.1.2 RECURSOS
5.1.2.1 LAYOUT
Figura 23 - Layout Elipse Scada
A seguir é apresentada uma lista com os principais objetos de tela que o Elipse
Scada oferece e suas respectivas funções.
5.1.2.2 TAGS
A seguir é apresentada uma lista com os tipos de tags que o Elipse Scada
oferece e suas respectivas funções.
5.1.2.3 SCRIPTS
5.1.3 COMUNICAÇÃO
PRINCIPAIS PARÂMETROS
P1; P2; P3; P4 Campos de entrada dos parâmetros do CLP.
Abortar em erro Possibilita a abertura de uma caixa de mensagem, em
caso de erro de comunicação, pleitando o
cancelamento da interligação.
Retentar comunicações Indica que driver pode tenta restabelecer a conexão
falhadas perdida.
No. de tentativas Número de tentativas no caso de erro de comunicação.
Ademais, foi habilita a leitura pelo scan e utilizado bastante o teste de conexão
de leitura, pois apenas mandamos o dado, se a vaga está ocupada ou não, do CLP
para o Elipse Scada. Esse emprego constante da alternativa, deu-se em razão da
necessidade de experimentar a conexão, o qual é facilitado com essa opção em
virtude de não precisarmos rodar a aplicação para avaliar
5.1.4 PROBLEMAS
5.2 MYDESIGNER
5.2.1.1 LAYOUT
Outra justifica para a escolha foi que para uso pessoais, como no caso do
projeto do estacionamento, a myScada o disponibiliza totalmente de graça, ainda que
quiséssemos comercialização o projeto, o custo cobrado pela empresa é muito inferior
a outros Scadas. Assim, juntando os quesitos apresentados, a inclinação pelo
myDesigner pareceu a mais óbvia para o grupo, após o fracasso com o Elipse Scada.
5.2.2 RECURSOS
5.2.2.1 LAYOUT
Figura 27 - Layout myDesigner
- Text Element – permite inserir uma mensagem na tela, que pode ser
atualiza com valores de tags.
- Image – propicia a inserção de imagens nos formatos PNG, JPG e
JPEG, as quais podem ser redimensionadas.
5.2.2.2 TAGS
5.2.2.3 SCRIPTS
5.2.3 COMUNICAÇÃO
Para voltar à página inicial deve-se clicar na Views, no canto superior esquerdo,
e escolher a opção “Home”, se o usuário quer sair do programa basta clicar no boneco,
no canto superior direito, assim, fazendo logoff da aplicação.
A partir dos testes realizados com o protótipo foi possível concluir que a escolha
do utilizar sensores ultrassônicos, ao invés de LDRs como no ano anterior, foi
adequada às aplicações propostas para o estacionamento, pois possibilitou uma
leitura menos instável. Além disso, pelo fato dos sensores ultrassônicos estarem muito
próximos um do outro, verificamos uma interferência entre eles, o que acarretou em
problemas de leitura. Para resolver o problema foi preciso isolar os sensores, o que
foi feito utilizando um pedaço de madeira.
O desenvolvimento do sistema de supervisão foi concluído e possibilitou a
visualização da situação das vagas através da tela de um computador, sem a
necessidade do motorista procurar as vagas livres pelo estacionamento e sim, ter a
possibilidade de localizá-las na tela. Isso foi possível através da utilização de Modbus,
que transmitiu a informação lida pelo sensor por meio de um cabo ethernet, para o
computador.
As aulas de redes, sistemas supervisórios e domótica foram de grande utilidade
para aplicarmos conhecimentos de eletrônica, programação e comunicação. Estudar
a construção da maquete, montar o circuito eletrônico, escrever a programação e
realizar a comunicação via Modbus enriqueceu o conhecimento de cada integrante do
grupo. Os testes e observações realizados a cada etapa do processo proporcionaram
maior compreensão e domínio dos assuntos.
REFERÊNCIAS BIBLIOGRÁFICAS
Monk, Simon. Projetos com arduino e android: use seu smartphone ou tablet para
controlar o arduino. Tradução: Anatólio Laschuk. Porto Alegre: Bookman, 2014.
McRoberts, Michael. Arduino básico; Tradução: Rafael Zanolli. São Paulo; Novatec
Editora, 2011.
Monk, Simon. Programação com Arduino: Começando com Sketches, 1ed; Grupo
A, 2013.
ECKEL, Tim. New Ping Library for Arduino. 2017. Disponível em:
http://playground.arduino.cc/Code/NewPing. Capturado em: 24 de outubro de 2016;
14h:32min:26seg.
ITEAD. Arduino Library for ultrasonic ranging module HC-SR04. 2010. Disponível
em: https://www.itead.cc/blog/arduino-library-for-ultrasonic-ranging-module-hc-sr04.
Capturado em:10 de setembro de 2016; 04h:04min:07seg.