User: alciro    User
 

microPLC para arduino

Share |
 Descargas microPLC

2. Programas para el microPLC

Programa básico de control del micro PLC para los micro controladores industriales AVR de 8bits, mediante placa arduino.

Text de entradas y de salidas

/*
*  Text de entradas y de salidas de Rele para el microPLC - arduino
*  
*  Descripción: Text de entradas y salidas de los reles de la placa microPLC 
*  los cmbios realizados en las entradas se reflejan en las salidas arduino.
*
*  Autor: Rafa Aranda
*  Fecha: 13-12-2013
*  Versión: 1.0
*/

// Pins de salida
#define Rele_1 6 
#define Rele_2 7 
#define Rele_3 8 
#define Rele_4 9 

// Pins de entrada (están ordenados de forma decreciente por necesidades del PCB)
#define In_1 5 
#define In_2 4 
#define In_3 3 
#define In_4 2

// Librerías 

// Funciones prototipo 
boolean GetInput(byte);

//  Variables globales

/*  setup
*  Tareas iniciales de preparación
*/
void setup(){
  
  // Establecer los pins de salida de los reles
  pinMode(Rele_1, OUTPUT);
  pinMode(Rele_2, OUTPUT);
  pinMode(Rele_3, OUTPUT);
  pinMode(Rele_4, OUTPUT);
  
  // Establecer los pins de entradas digitales optoacopladas
  pinMode(In_1, INPUT);
  pinMode(In_2, INPUT);
  pinMode(In_3, INPUT);
  pinMode(In_4, INPUT);
	 
  // Preparar las variables

}

/*  loop
*  Programa principal
*/
void loop() {
	// Activar los relés según el estado de las entradas 
	digitalWrite(Rele_1, GetInput(1)); 
	digitalWrite(Rele_2, GetInput(2)); 
	digitalWrite(Rele_3, GetInput(3)); 
	digitalWrite(Rele_4, GetInput(4)); 
	// Retardar el ciclo de muestreo de las entradas 100 segundos
	delay(100); 

}

/*  GetInput
*  Lee el estado de la entrada indicada en el parámetro y retorna el valor invertido
*  Las entradas funcionan con valores negativos
*		in: Entrada (1 a 4)
*		return: estado (true, false)	
*/
boolean GetInput(byte in){
	boolean estado = false;	
	switch(in){
		case 1:
			if(!digitalRead(In_1))estado=true;
			break;
		case 2:
			if(!digitalRead(In_2))estado=true;
			break;
		case 3:
			if(!digitalRead(In_3))estado=true;
			break;
		case 4:
			if(!digitalRead(In_4))estado=true;
			break;
	}
	return estado;
}

 

Loading

copyright © 2007-2024  www.alciro.org  All rights reserved.         
Share |