Sie sind auf Seite 1von 47

Introduccin Grafcet a

Arduino

Arduino
Es una compaa de hardware libre y una
comunidad tecnolgica que disea y
manufactura placas de desarrollo de
hardware
y
software,
compuesta
respectivamente por circuitos impresos que
integran un microcontrolador y un entorno de
desarrollo (IDE), en donde se programa cada
placa.
Arduino se enfoca en acercar y facilitar el uso
de la electrnica y programacin de sistemas
embebidos en proyectos multidisciplinarios.

Toda la plataforma, tanto para sus


componentes de hardware como de software,
son liberados bajo licencia de cdigo abierto
que permite libertad de acceso a los mismos.

Descripcin del hardware Arduino UNO

Entradas y salidas digitales

Entradas y salidas digitales

Entradas analgicas

Entradas Anlogas

Elementos

Elementos

Entradas digitales

Entradas digitales

Salidas digitales

IDE

IDE

Ejercicio 1

Entradas digitales

Entradas digitales

int led = 13;


// asigna a LED el valor 13
int boton = 2;
// asigna a botn el valor 2
int valor = 0;
// define el valor y le asigna el valor 0
void setup()
{
pinMode(led, OUTPUT); // configura el led (pin13) como salida
pinMode(boton, INPUT); // configura botn (pin7) como entrada
}
void loop()
{
valor = digitalRead(boton); //lee el estado de la entrada botn
digitalWrite(led, valor);
// enva a la salida ledel valor ledo
}

Ejercicio 2

Salidas digitales

int ledPin = 13; // pin 13 asignado para el LED de salida


int inPin = 2; // pin 2 asignado para el pulsador
void setup() // Configura entradas y salidas
{
pinMode(ledPin, OUTPUT); // declara LED como salida
pinMode(inPin, INPUT); // declara pulsador como entrada
}
void loop()
{
if (digitalRead(inPin) == HIGH) // testea si la entrada esta activa HIGH
{
digitalWrite(ledPin, HIGH); // enciende el LED
delay(1000); // espera 1 segundo
digitalWrite(ledPin, LOW); // apaga el LED
}
}

LENGUAJE GRAFCET

GRAFCET

Es una metodologa de expresin grfica como


solucin al desarrollo de programas de control
para sistemas secuenciales complejos

De donde viene el
nombre?
GRAfico
Funcional de
Control
de Etapas y
Transiciones

SIMBOLOGA DEL GRAFCET APLICADA A UN PROCESO SIMPLE

SECUENCIAS DIRECCIONADAS O ALTERNATIVAS


En este caso el ciclo puede variar en funcin de la condicin que
se cumpla. En la estructura mostrada, dada la etapa 0 se pueden
seguir dos ciclos diferentes dependiendo de cual de las dos
condiciones (X1 X2) se cumpla, slo una de ellas debe cumplirse
mientras la etapa 0 este activa.

SECUENCIAS SIMULTMEAS O
CONCURRENTES.
En las secuencias simultneas varios ciclos pueden estar
funcionando a la vez por activacin simultnea de las etapas.

GRAFCET Y SU SINTAXIS GRFICA

GRAFCET Y SU SINTAXIS GRFICA

GRAFCET Y SU SINTAXIS GRFICA

GRAFCET Y SU SINTAXIS GRFICA

GRAFCET Y SU SINTAXIS GRFICA

Ejercicio 2

PLANTEAMIENTO DE LA SITUACIN
Se requiere un sistema de control de nivel y temperatura en
un tanque.
Para ello se ha dispuesto de una vlvula de entrada VL1,
una vlvula de salida VL2, dos sensores de nivel NL0 y
NL1, un sensor de temperatura TMP y un calefactor RST.

DESCRIPCIN FUNCIONAL EN LENGUAJE NATURAL

El funcionamiento del controlador lgico aplicado al funcionamiento de un sistema


de nivel y temperatura, mostrando claramente las condiciones de interrelacin de
las variables involucradas en la operacin.
La condicin inicial es el tanque vaco, con la activacin del mando START se da la
orden de arranque, lo cual desencadena la apertura de la vlvula VL1, como
primera accin, inicindose el llenado. Cuando el nivel en el tanque alcanza el nivel
mnimo, determinado por NL0, se inicia la calefaccin simultneamente con el
llenado. El llenado y el calentamiento se dan en forma paralela. Cuando el nivel en
el tanque llega a NL1 el llenado se detiene y cuando la temperatura llega a TMP la
calefaccin tambin cesa.
Cuando ambos, tanto el nivel como la temperatura requerida, se alcanzan el tanque
se vaca. Esto se hace mediante la apertura de la vlvula de salida VL2. Cuando el
nivel en el tanque est por debajo de NL0, la secuencia puede ser reiniciada de
nuevo. Todas las acciones son permanentes no hay acciones impulso, por ejemplo,
la vlvula VL2 est abierta, variable booleana VL2=1.

const int final_1=21, final_2=22, final_3=23, final_4=24, boton_1=2, boton_2=3, boton_3=4,


boton_4=5, boton_5=6; // pines de entrada*************
const int led_1=12,led_2=11,led_3=10,led_4=9,led_5=8; // pines salida****************
int estado_final_1=0, estado_final_2=0, estado_final_3=0, estado_final_4=0,
estado_final_5=0; int estado_boton_1=0, estado_boton_2=0, estado_boton_3=0,
estado_boton_4=0, estado_boton_5=0;
boolean etapa_0=true, etapa_1=false, etapa_2=false, etapa_3=false, etapa_4=false,
etapa_5=false, etapa_6=false, etapa_7=false, etapa_8=false, etapa_9=false,
etapa_10=false;

void setup() {
pinMode(led_1, OUTPUT), (led_2, OUTPUT), (led_3, OUTPUT), (led_4, OUTPUT),
(led_5, OUTPUT);
pinMode(final_1,INPUT), (final_2,INPUT), (final_3,INPUT), (final_4,INPUT),
(boton_1,INPUT), (boton_2,INPUT), (boton_3,INPUT), (boton_4,INPUT),
(boton_5,INPUT);
}

void loop(){
estado_final_1= digitalRead(final_1); estado_final_2= digitalRead(final_2);
estado_final_3= digitalRead(final_3); estado_final_4= digitalRead(final_4);
estado_boton_1= digitalRead(boton_1); estado_boton_2= digitalRead(boton_2);
estado_boton_3= digitalRead(boton_1); estado_boton_4= digitalRead(boton_4);
estado_boton_5= digitalRead(boton_5);
//*******************
// etapa 1
if (etapa_0 == true && estado_boton_1==HIGH ) {
etapa_1=true; etapa_0=false; }
// etapa 2
if (etapa_1 == true && final_1==HIGH ) {
etapa_2=true; etapa_1=false; }
// etapa 3
if (etapa_2 == true && estado_boton_2==HIGH ) {
etapa_3=true; etapa_2=false;
}
// etapa 4
if (etapa_3 == true && final_2==HIGH ) {
etapa_4=true; etapa_3=false; }

void loop(){
estado_final_1= digitalRead(final_1); estado_final_2= digitalRead(final_2);
estado_final_3= digitalRead(final_3); estado_final_4= digitalRead(final_4);
estado_boton_1= digitalRead(boton_1); estado_boton_2= digitalRead(boton_2);
estado_boton_3= digitalRead(boton_1); estado_boton_4= digitalRead(boton_4);
estado_boton_5= digitalRead(boton_5);
//*******************
// etapa 1
if (etapa_0 == true && estado_boton_1==HIGH ) {
etapa_1=true; etapa_0=false; }
// etapa 2
if (etapa_1 == true && estado_final_1==HIGH ) {
etapa_2=true; etapa_1=false; }
// etapa 3
if (etapa_2 == true && estado_boton_2==HIGH ) {
etapa_3=true; etapa_2=false;
}
// etapa 4
if (etapa_3 == true && estado_final_2==HIGH ) {
etapa_4=true; etapa_3=false; }

// etapa 5
if (etapa_4 == true && estado_boton_3==HIGH ) {
etapa_5=true; etapa_4=false;
}
// etapa 0
if (etapa_5 == true && estado_final_3==HIGH ) {
etapa_0=true; etapa_5=false; }
//************************
if (etapa_1== true)
digitalWrite(led_1,HIGH);
else
digitalWrite(led_1,LOW);
if (etapa_2== true)
digitalWrite(led_2,HIGH);
else
digitalWrite(led_2,LOW);

if (etapa_3== true)
digitalWrite(led_3,HIGH);
else
digitalWrite(led_3,LOW);
if (etapa_4== true)
digitalWrite(led_4,HIGH);
else
digitalWrite(led_4,LOW);
if (etapa_5== true)
digitalWrite(led_5,HIGH);
else
digitalWrite(led_5,LOW);
}

Das könnte Ihnen auch gefallen