Según altos estándares industriales

Busca en nuestro Blog. Encontrarás múltiples aplicaciones, soluciones, ejemplos de código. Navega utilizando la nube de etiquetas o busca utilizando criterios específicos

Cómo utilizar las entradas de interrupción con las placas Arduino industriales

Trabajar con un controlador lógico programable para automatización industrial

 Introducción


Las interrupciones, como su nombre indica, son un método para detener el proceso que está ejecutando el procesador con el fin de ejecutar una subrutina más pequeña. Este método tiene mucha aplicación en el mundo real y es una parte importante de la automatización. Estas interrupciones pueden ser generadas externamente con la ayuda de un hardware como un interruptor o un sensor, o pueden ser generadas por software cuando se cumple una condición particular o se ha ejecutado un conjunto de instrucciones.

En este tutorial, aprenderás cómo utilizar las interrupciones de hardware en un PLC Arduino de Industrial Shields. Se trata de una visión general con un código de ejemplo para demostrar las capacidades con respecto a la gestión de las interrupciones y la ejecución de las placas que soportan esta característica. Para facilitar la comprensión y la demostración, haremos un bucle de una cadena de texto en el monitor de serie y lo interrumpiremos con algunos botones de hardware.

Requisitos

Configurar el IDE de Arduino con las librerías de Industrial Shields y su placa específica. Puedes encontrar el enlace al tutorial   aquí

Interrupt Inputs with Arduino

 Hardware

Para este tutorial, el controlador industrial a utilizar es un M-DUINO PLC Arduino Ethernet 58 IOs Analog/Digital PLUS

Si estás utilizando una placa diferente, asegúrate de que las entradas de interrupción están habilitadas y comprueba el estado del interruptor DIP. Puedes ir a la página de detalles técnicos de tu producto específico y comprobar la sección de hardware para asegurarte de que las interrupciones están habilitadas..





  Sintaxis

Para inicializar la entrada de interrupción en la placa, debes utilizar la función attachInterrupt() con los siguientes parámetros::

attachInterrupt(digitalPinToInterrupt(pin), ISR, mode) 

  • digitalPinToInterrupt(pin) --> Sirve para inicializar el pin dado y asignarlo como la interrupción.

  • pin --> En este caso, no se utilizará el número de pin de Arduino, sino los escritos en sus respectivas placas. Por ejemplo, "I1_5" para la placa que estás utilizando.

  • ISR --> ISR --> Esto significa Rutina de Servicio de Interrupción, es una función que es llamada cuando se dispara la interrupción. Esto no debe tomar ningún parámetro y no devuelve nada, sin embargo, puede pasar variables globales.

  • mode --> Especifica cuándo debe activarse una interrupción.

    • LOW para activar la interrupción siempre que el pin esté bajo.

    • CHANGE para activar la interrupción cuando el pin cambia de valor.

    • RISING para disparar cuando el pin pasa de bajo a alto.

    • FALLING para cuando el pin pasa de alto a bajo.

Las placas Due, Zero y MKR1000 permiten también:

    • HIGH para disparar la interrupción siempre que el pin esté alto.


 Código

// Interrupt Example. Industrial Shields PLCs. 
// Board used M-DUINO PLC Arduino Ethernet 58 IOs Analog/Digital PLUS
int val1,val2,val3,val4 = 0;
///////Setting up the board and the pins
void setup() {
  Serial.begin(9600L);
  
  //Initalizing interrupt I1_5
  attachInterrupt(digitalPinToInterrupt(I1_5), isrI1_5, LOW);
  
  //Initalizing interrupt I1_6
  attachInterrupt(digitalPinToInterrupt(I1_6), isrI1_6, CHANGE);
  
  //Initalizing interrupt I2_6
    attachInterrupt(digitalPinToInterrupt(I2_5), isrI2_5, RISING);
    
  //Initalizing interrupt I2_6
  attachInterrupt(digitalPinToInterrupt(I2_6), isrI2_6, FALLING);
}
/////// Printing a String every seconds in a loop continuously to interrupt
void loop() {
 Serial.println("*****/Industrial Shields PLCs // Open Source Technologies/*****");
 delay(1000);
}
///////Interrupt Service Routines
void isrI1_5(){
  Serial.println("!!!!INTERRUPT 1_5!!!!!"); //ISR for I1_5
  }  
void isrI1_6 (){    
  Serial.println("!!!!INTERRUPT 1_6!!!!!"); //ISR for I1_6
  }
void isrI2_5(){
  Serial.println("!!!!INTERRUPT 2_5!!!!!"); //ISR for I2_5
  }
void isrI2_6 (){    
  Serial.println("!!!!INTERRUPT 2_6!!!!!"); //ISR for I2_6
  }
/////////////End//////////////

Enlaces relacionados

Cómo encontrar mi PLC industrial ideal

Leer >>

Interrupción externa con un sensor de etiquetas capacitivo y un PLC Arduino

Leer >>

Interrupción externa mediante sensor de efecto hall con PLC basado en Arduino

Leer >>

¿Estás buscando tu PLC ideal?

Mira esta comparativa con otros controladores industriales

Comparamos entradas, salidas, comunicaciones y otras características con las de algunas de las marcas relevantes


Comparación de controladores PLC industriales >>

¿Quieres más información? 

¡Solo llena el formulario! 

¡Quiero saber más!  Por favor, llene el formulario correctamente.