Análisis de la respuesta temporal del pinout del PLC M-DUINO

Análisis técnico del rendimiento del pinout del PLC industrial M-DUINO
20 de junio de 2023 por
Análisis de la respuesta temporal del pinout del PLC M-DUINO
Boot & Work Corp. S.L., Ricard Franch Argullol

 Introduction

M-Duino PLC

En este post, aprenderás más sobre el rendimiento del PLC M-DUINO pinout tiempo de respuesta, examinando su capacidad para detectar y responder a los cambios en las entradas, así como la capacidad de las señales de salida.

Las mediciones de este blog se han realizado utilizando las funciones por defecto de Arduino IDE. Se podrían conseguir velocidades más rápidas utilizando otras librerías como la digitalWriteFast, o manipulando directamente los pines a través de los registros del Arduino.

 Requisitos

Si deseas medir las características del PLC, también necesitarás un osciloscopio preciso capaz de leer en la escala de 100ns.

 Salida digital

Las salidas digitales del PLC M-DUINO se conectan a los pines directos del Arduino Mega, utilizando algunos circuitos para adaptar los niveles de voltaje. Recuerda que el voltaje de salida depende del pin QVdc, puedes aprender más sobre ellos en este post sobre salidas digitales.

Las salidas digitales se pueden analizar con un osciloscopio y este sencillo código, donde realizamos múltiples escrituras en el pin Q0.0 cada 100µs.

void setup() {}
void loop() {
  digitalWrite(Q0_0, LOW);
  delayMicroseconds(100);
  digitalWrite(Q0_0, HIGH);
  delayMicroseconds(100);
}

Utilizando un osciloscopio, puedes observar que los tiempos de la señal de salida son los siguientes:

  • Tiempo de subida: 476ns
  • Tiempo de caída:  42.8µs

El tiempo de caída es considerablemente mayor que el de subida, lo que afecta a la frecuencia máxima de salida que puedes alcanzar.  Aquí hay algunas mediciones:

Frecuencia de salida
PeriodoAncho de pulso
Retraso
6.849kHz
146µs
106µs70µs
4.866kHz
205.5µs
136.5µs
100µs
1.953kHz
512µs286µs250µs

Utilizando un retardo de 70µs, se puede conseguir una frecuencia de conmutación de 6,849 kHz en cualquier salida digital, aunque con un ciclo de trabajo del 72%. Si se necesita estrictamente un ciclo de trabajo del 50%, habrá que aumentar el retardo hasta 250µs, para obtener una señal de 1,953 kHz con un ciclo de trabajo del 55,86%. Aunque es posible utilizar retardos más cortos, hacerlo puede producir una señal que se desvía de la forma cuadrada del pulso. En concreto, sin retardo, la señal pasa de 5 V a 4,3 V antes de volver a su nivel de tensión original. 

 Entrada digital

Las entradas digitales de los PLCs M-DUINO también están conectadas a pines directos del Arduino Mega. Estas entradas interpretan tensiones entre 0-5V como BAJA y tensiones entre 5-24V como ALTA, y están opto-aisladas. Además, I0.5 e I0.6 son pines de interrupción, lo que significa que pueden disparar interrupciones de Arduino.

El siguiente código se puede utilizar para medir el tiempo de muestreo de una entrada digital utilizando la función digitalRead(). Tomamos 10^6 lecturas y calculamos el tiempo medio de ejecución y el tiempo máximo.

#define N_TIMES 1000000

unsigned long t1, t2, t_max, t_average;

void setup() {
Serial.begin(115200);

t_max = 0;
t_average = 0;

for (long i = 0; i<N_TIMES; i++) {
t1 = micros();
digitalRead(I0_5);
t2 = micros();
t_average += (t2-t1);
if (t_max < t2-t1) t_max = t2-t1;
}

Serial.print("Max time: ");
Serial.println(t_max);
Serial.print("Average time: ");
Serial.println(t_average/(float)N_TIMES);
}

void loop() {}

Los resultados para la entrada I0.0 son un tiempo de ejecución máximo de 12µs y una media de 5,65µs. Esto se traduce en una frecuencia de muestreo máxima de 176,9 kHz.

La entrada I0.5 (interrupción) tiene un tiempo de ejecución máximo de 16 µs y una media de 8,23 µs. Esto se traduce en una frecuencia de muestreo máxima de 121,51 kHz. La mayoría de las muestras tardan 8µs, pero hay algunas que tardan 16µs.

Las entradas analógicas (I0.7 - I0.12) también pueden utilizarse como entradas digitales (7-24V), por lo que su velocidad puede comprobarse utilizando este mismo código. Su tiempo de lectura máximo y medio es el mismo que el de las entradas digitales normales: 12µs y 5,65µs, respectivamente.

 Salida analógica

Los PLCs M-DUINO disponen de entre 3 y 9 salidas analógicas, dependiendo del modelo de PLC, cada una conectada a un pin directo de Arduino. Estas salidas pueden tomar cualquier valor entre 0V y 10V, con 8 bits de resolución. Para saber más, visita nuestro blog sobre salidas analógicas.

Para medir el tiempo de respuesta de las salidas analógicas podemos utilizar un osciloscopio y el siguiente código para medir los tiempos de subida y bajada de la señal:

void setup() {}
void loop() {
  analogWrite(A0_5, 255);
  delay(150);
  analogWrite(A0_5, 0);
  delay(150);
}

Midiendo con un osciloscopio obtenemos los siguientes tiempos:

  • Tiempo de subida: 150 ms
  • Tiempo de caída: 252 ms

Considering 252ms as the worse time, we can achieve a signal frequency output of 2Hz.

 Entrada analógica

Las entradas analógicas permiten medir tensiones entre 0V y 10V, devolviendo un valor con una resolución de 10 bits (0-1023). Puedes encontrar más información en esta entrada del blog sobre entradas analógicas.

Este código, que mide el tiempo de ejecución máximo y medio de la función analogRead(), puede utilizarse para averiguar su tiempo de muestreo:

#define N_TIMES 1000
unsigned long t1, t2, t_max, t_average;
void setup() {
  Serial.begin(115200);
  t_max = 0;
  t_average = 0;
  for (long i = 0; i<N_TIMES; i++) {
    t1 = micros();
    analogRead(I0_7);
    t2 = micros();
    t_average += (t2-t1);
    if (t_max < t2-t1) t_max = t2-t1;
  }
  Serial.print("Max time: ");
  Serial.println(t_max);
  Serial.print("Average time: ");
  Serial.println(t_average/(float)N_TIMES);
}
void loop() {}

Como resultado, obtenemos un tiempo de ejecución máximo de 204µs y una media de 112,89µs. Por tanto, podemos alcanzar una frecuencia de muestreo máxima de 8858,2Hz.

 Pines directos

Los PLCs M-DUINO también tienen algunos pines conectados directamente al Arduino Mega en su interior, que funcionan a niveles de 5V:

  • RX0

  • TX0

  • RX1

  • TX1

  • MISO

  • MOSI

  • SCK

  • Pin 2

  • Pin 3

  • SCL

  • SDA

Salida

La frecuencia de salida máxima que podemos alcanzar utilizando el IDE de Arduino y la función digitalRead() es de 77kHz, que se puede observar con un osciloscopio ejecutando este código:

void setup() {
  pinMode(2, OUTPUT);
}

void loop() {  
  digitalWrite(2, HIGH);
  digitalWrite(2, LOW);
}

Entrada

Los pines directos también pueden utilizarse como entrada, en cuyo caso la función digitalRead() tiene estas características:

  • Tiempo medio de lectura: 8,23µs.
  • Tiempo máximo de lectura: 16µs.

 Summary

Entradas

Tipo de entrada
Frecuencia de muestreo - Media
Frecuencia de muestreo - Tiempo máximo de lectura
Interrupción digital (IX.5-6)121.51kHz (8.23µs)62.5kHz (16µs)
Digital optosiaslada (IX.0-4)
176.99kHz (5.65µs)
83.3kHz (12µs)
Digital no optpaislada (IX.7-12)
176.99kHz (5.65µs)83.3kHz (12µs)
Analógica (IX.7-12)8.858kHz (112.89µs)4.9kHz (204µs)
Pines directos
121.51kHz (8.23µs)62.5kHz (16µs)

Salidas

Tipo de salida
Frecuencia de señal - Máxima estable
Frecuencia de señal - Máxima
Tiempo de subida
Tiempo de caída
Digital (QX.0-7)1.953kHz (55.86%)
6.849kHz (72.6%)476ns
42.8µs
Analógica (AX.5-7)2Hz (50%)
2.48Hz (37.31%)150ms
252ms
Pines directos
77kHz (53.7%)77kHz (53.7%)200ns
200ns

 Conclusion

Conclusión

En este post, has aprendido sobre el rendimiento de la respuesta temporal del pinout M-DUINO PLC, examinando su capacidad para detectar y responder a los cambios en las entradas, así como la capacidad de las señales de salida..

Te hemos contado:

  • cómo las salidas digitales pueden alcanzar una frecuencia de conmutación de hasta 6,849 kHz,
  • cómo las entradas digitales pueden muestrear a una frecuencia de hasta 176,9 kHz, y
  • cómo las salidas analógicas pueden producir un rango de tensión de 0-10V.

También has aprendido a medir estas características utilizando un osciloscopio y algún código sencillo.

Si conoces las capacidades y limitaciones de la distribución de pines del PLC M-DUINO, podrás utilizarlo de forma más eficaz en sus proyectos y aplicaciones.

Buscar en nuestro blog

Análisis de la respuesta temporal del pinout del PLC M-DUINO
Boot & Work Corp. S.L., Ricard Franch Argullol 20 de junio de 2023
Compartir

¿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.


Industrial PLC comparison >>>