User: alciro    User
 

microPLC para arduino

Share |
 Descargas microPLC

2.4.3. Generador de pulsos

Con el generador de pulsos podemos obtener un tren de impulsos digitales programable con control del tiempo en estado on y off.

Al activarse la entrada Set() (flanco ascendente) el generador se activa entregando los impulsos programados en la salida Q(), finalizado el número de pulsos programados N() el generador se detiene y la salida Q() permanece a nivel bajo. Si N() es cero la generación de impulsos es continua y solo se detiene si se activa la entrada Reset() .

Generador de pulsos

Funciones del generador de impulsos

pulseX.Time(int) Establecer el tiempo en estado ON del pulso, en unidades de TBase().

pulseX.Toff(int) Establecer el tiempo en estado OFF del pulso, en unidades de TBase().

pulseX.N(int) Número de pulsos a generar.

Si el valor se establece a cero, el generador es continuo.

int pulseX.getN(int) Contador de pulsos generados.

Entrega el contador de pulsos (valor actual del pulso).


Declaración del generador

PULSE tp(1, 1, T1S, 0);	// Iniciamos el temporizador t1 con 1 segundo en ON y 1 segundo en OFF, impulsos continuos


Código traducido del diagrama de contactos Ladder

// A. Activación del generador controlada por S1
tp.Set(s._1);
// B. La salida de los pulsos Q() se asignan a la salida K1
k._1=tp.Q();


Ejemplo de utilización

/*
*  Temporizador a impulsos el microPLC - arduino
*  
*  Descripción: Programa de temporización de impulsos
*
*  Autor: Rafa Aranda
*  Fecha: 19-02-2014
*  Versión: 1.0
*/

// Asignación de Pins a Salidas digitales
#define Out_1 6 
#define Out_2 7 
#define Out_3 8 
#define Out_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 
#include "microPLC.h"

// Funciones prototipo 
void getInputs(void);
void setOutputs(void);

//  Variables globales

//Definición de las variables de trabajo
m4bits s;	// Entradas del microPLC
m4bits k;	// Salidas del microPLC
m4bits m1;	// Memoria temporal

// microPLC
microPLC uPLC;	// Declaración del microPLC

// Contadores y temporizadores
TI	ti1(5, T1S);	// Iniciamos el temporizador ti1 con 5 segundos

/*  setup
*  Tareas iniciales de preparación
*/
void setup(){
	// Establecer los pins de salida de los relés
	pinMode(Out_1, OUTPUT);
	pinMode(Out_2, OUTPUT);
	pinMode(Out_3, OUTPUT);
	pinMode(Out_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
	uPLC.init(); // Iniciar funciones del tiempo
}

/*  loop
*  Programa principal
*/
void loop() {
	getInputs();    // Leer las entradas digitales
	
	// Temporizador t1
	ti1.Set(s._1);	// Entrada del temporizador
	k._1=ti1.Q();	// Salida del temporizador
	
	setOutputs();   // Activar las salidas
	delay(1);	// CicloScan + 1ms, retardo para anti-rebotes
}

/*  GetInputs
*  Lee el estado de la entrada indicada en el parámetro y lo asigna invertido a las variables de trabajo	
*/
void getInputs(void){
	s._1=!digitalRead(In_1);
	s._2=!digitalRead(In_2);
	s._3=!digitalRead(In_3);
	s._4=!digitalRead(In_4);
}

/*  setOutputs
*  asigna el estado de las varibles de trabajo a las salidas digitales	
*/
void setOutputs(void){
	digitalWrite(Out_1, k._1);
	digitalWrite(Out_2, k._2);
	digitalWrite(Out_3, k._3);
	digitalWrite(Out_4, k._4);
}
Loading

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