Cómo utilizar las entradas de interrupción con las placas Arduino industriales
Trabajar con un controlador lógico programable para automatización industrial
16 marzo, 2021 por
Cómo utilizar las entradas de interrupción con las placas Arduino industriales
Boot & Work Corp. S.L., Amil Shrivastava

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 muchas aplicaciones en el mundo real y es una parte importante de la automatizaci√≥n. Estas interrupciones pueden ser generadas externamente con la ayuda de 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í


Hardware


Para este tutorial, el controlador industrial a utilizar es un M-DUINO PLC Arduino Ethernet 58 IOs Analógico/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 también permiten:

    • HIGH¬†para disparar la interrupci√≥n siempre que el pin est√© alto.

ATENCI√ďN: La placa Leonardo NO PERMITE:

    • LOW para activar la interrupci√≥n siempre que el pin est√© bajo


Código

// Interrupt Example. Industrial Shields PLCs. 
// Board used M-DUINO PLC Arduino Ethernet 58 IOs Analog/Digital PLUS 
///////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 su PLC industrial perfecto

Leer >>

Interrupción externa mediante un sensor de etiquetas capacitivo con un PLC basado en Arduino

Leer >>

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

Leer >>

Encuentra lo que buscas. ¬°Busca en nuestro Blog!

Cómo utilizar las entradas de interrupción con las placas Arduino industriales
Boot & Work Corp. S.L., Amil Shrivastava
16 marzo, 2021
Compartir
Archivar

¬ŅEst√°s buscando tu Controlador L√≥gico Programable ideal?

Echa un vistazo a esta comparativa de producto de varios controladores industriales basados en Arduino.

Comparamos entradas, salidas, comunicaciones y otras especificaciones con las de los equipos de otras marcas destacadas.


Comparación PLC industrial >>>

¬ŅQuieres m√°s informaci√≥n?

¬°Rellena el formulario!

¬°Cu√©ntame m√°s!