User: alciro    User
 

microPLC para arduino

Share |
 Descargas microPLC

2.4.1. Temporizador a impulso

Al activarse la entrada Set() del temporizador se activa la salida Q(), permaneciendo en este estado el tiempo programado en el temporizador, transcurrido éste, la salida Q() se pasa automáticamente a cero. Si la entrada del temporizador pasa a cero antes de que se realice la temporización, la salida también se pondrá a nivel bajo.

Diagrama del temporizador a impulso
Temporizador a impulso

Declaración del temporizador

TI ti1(5, T1S);	// Temporizador ti1, de 5 segundos

Código traducido del diagrama de contactos Ladder

// Temporizador ti1
ti1.Set(s._1);	// El temporizador se activa con la entrada s._1
k._1=ti1.Q();	// La salida .Q() del temporizador activa el relé k._1


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 |