Introducción
En este post, aprenderás las nociones básicas para trabajar con las salidas analógicas de los controladores lógicos programables Raspberry Pi de Industrial Shields. Al leer este post, entenderás cómo conectar y configurar las salidas analógicas de tu industrial Raspberry Pi PLC controller.
Lecturas previas
Te recomendamos que leas lo siguientes posts para entender el programa de este blog. Hemos utilizados las siguientes entradas para hacer este ejemplo:
Requisitos
Para trabajar con salidas digitales, necesitará cualquiera de nuestros controladores industriales para la automatización industrial:
Configuración de los conmutadores
La mayoría de las salidas digitales están siempre conectadas a la Raspberry interna, pero en algunos casos, los usuarios pueden elegir entre una configuración especial de periféricos o un GPIO cambiando la posición de los Interruptores Dip.
Cada interruptor puede seleccionar solo una configuración. Por ejemplo, en este caso puedes ver la configuración de GPIOs de un PLC 21+ basado en Raspberry Pi. Si pones el interruptor en la posición derecha (ON) en la parte inferior, se activará la salida Q0.0 y podrás trabajar como digital. Si el interruptor está en la posición izquierda (OFF), activará la salida como analógica. Observa que cada interruptor tiene dos configuraciones diferentes: debe seleccionar la opción derecha (ON) o la izquierda (OFF).
A0.0 Desactivado - Q0.0 Activado
A0.0 Activado - Q0.0 Desactivado
Hardware
La imagen siguiente muestra cómo conectar una salida digital al PLC:
Software
Cómo trabajar con Bash Scripts
Raspberry Pi PLC tiene scripts bash por defecto para trabajar con las entradas. Todos los scripts de entradas y salidas deben ser ejecutados desde la ruta correcta. Depende del tipo de escudo de la E/S ejecutada. En función de la zona de la E/S que necesites activar, debes ejecutar los scripts desde una ruta específica:
Zona Analógica/Digital
> cd /home/pi/test/analog
Zona Relé
> cd /home/pi/test/relay
La función set inicializará el pin. Proporcionarás el pin con el que vas a trabajar y el valor que se establecerá. Para la opción analógica, el valor trabajará en un rango de 0 a 4095, siendo éste el máximo valor posible (10 Vdc).
Por defecto, si no se proporciona ninguna opción de valor, se inicializará como 50% para las salidas analógicas. Si se elige cualquier otra opción, un código de error le avisará. Para llamar a la función, debe hacer lo siguiente:
> ./set-digital-output <output> <value>
Por defecto, si no se proporciona la opción de valor, se inicializará como 50% para las salidas analógicas. Si eliges cualquier otra opción, un código de error te avisará. Para llamar a la función, debes hacer lo siguiente:
Los pines que pueden funcionar con ambas configuraciones analógicas/digitales son:
Q0.5 | Q1.5 | Q2.5 |
Q0.6 | Q1.6 | Q2.6 |
Q0.7 | Q1.7 | Q2.7 |
Ejemplo:
> ./set-analog-output A0.5 2048
> ./set-analog-output A0.5 4096
> ./set-analog-output A0.5 0
> ./set-analog-output A0.5 stop
> ./set-digital-output Q0.5 1
Cómo trabajar con Python
Los comandos bash son la base para trabajar fácilmente con el PLC industrial Raspberry. Para trabajar con archivos python, si quieres interactuar con las IOs del PLC, tendrás que llamar a estos scripts.
Para editar los archivos, trabajarás con el editor Nano incluido por defecto y con Python3.
> nano analog_outputs.py
Python te permite ejecutar un comando de shell que se almacena en una cadena utilizando la función os.system(). Para poder trabajar con ella, tendrás que importar su librería al principio del archivo. Además, incluirás la librería de tiempo para invocar un retardo de 2 segundos.
import os
import time
En este programa de ejemplo, cambiarás los valores de la salida A0.5 del PLC industrial Raspberry Pi. Para ello, implementarás un bucle que incrementará cada 2 segundos el valor de la salida en un 25% y lo reseteará tras alcanzar el 100%.
import os
import time
os.system("echo Start")
while True:
try:
os.system("sudo ./set-analog-output A0.5 0")
time.sleep(2)
os.system("sudo ./set-analog-output A0.5 1024")
time.sleep(2)
os.system("sudo ./set-analog-output A0.5 2048")
time.sleep(2)
os.system("sudo ./set-analog-output A0.5 3072")
time.sleep(2)
os.system("sudo ./set-analog-output A0.5 4095")
time.sleep(2)
except KeyboardInterrupt:
os.system("sudo ./set-analog-output A0.5 0")
os.system("echo End")
break
Para ejecutar el programa Python, lo llamarás como sigue:
> python3 analog_outputs.py
Para salir del programa basta con pulsar ^C.