Introducción
En este post, te explicamos cómo hacer lo básico para trabajar con las salidas digitales de los controladores lógicos programables Raspberry Pi de Industrial Shields. Entenderás cómo conectar y configurar las salidas digitales de tu controlador industrial Raspberry Pi PLC.
Lecturas previas
Te recomendamos que leas los siguientes posts para entender el programa de este blog. Hemos utilizado las siguientes entradas del blog para hacer este ejemplo:
Requisitos
Para trabajar con salidas digitales, necesitarás 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, el usuario puede elegir entre una configuración especial de periféricos o un GPIO cambiando la posición de los Conmutadores Dip.
Cada interruptor puede seleccionar solo una configuración. Por ejemplo, en este caso estás viendo la configuración de los GPIOs de un PLC de código abierto Raspberry Pi 21+. 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ás la salida como analógica. Tenga en cuenta 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
Todas las salidas digitales están optoaisladas (utilizan las mismas GND que el PLC). La imagen siguiente muestra cómo conectar una salida digital a su PLC:
Software
Cómo trabajar con scripts Bash
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 zona 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á el pin con el que va a trabajar y el valor que se establecerá. Para la opción digital, un 1 lógico encenderá el pin mientras que un 0 lo detendrá.
Por defecto, si no se proporciona la opción de valor, se inicializará como un 1 para las salidas digitales. Si se eliges cualquier otra opción, un código de error te avisará. Para llamar a la función, harás lo siguiente:
> ./set-digital-output <output> <value>
Hay algunos pines que pueden funcionar tanto en digital como en analógico. En este caso, si has utilizado estos pines antes en digital o analógico y quieres cambiar su modo, debes llamar a la función set, proporcionando stop a la opción de valor; de lo contrario habrá un error del sistema. Si hay un reinicio, no es necesario hacerlo.
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-digital-output Q0.5 1
> ./set-digital-output Q0.5 0
> ./set-digital-output Q0.5 stop
> ./set-analog-output A0.5 50
Cómo trabajar con Python
Los comandos bash son la base para trabajar fácilmente con el PLC basado en Raspberry Pi. 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 digital_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, necesitarás importar su librería al principio del archivo. Además, necesitarás incluir la librería time para invocar un retraso de 2 segundos.
import os
import time
En este programa de ejemplo, vas a hacer parpadear algunos de los leds digitales del PLC de la Raspberry industrial. Para ello, implementarás un bucle que los abrirá y apagará constantemente en un intervalo de 2 segundos.
import os
import time
os.system("echo Start")
while True:
try:
os.system("sudo ./set-digital-output Q0.0 1")
os.system("sudo ./set-digital-output Q0.1 1")
os.system("sudo ./set-digital-output Q0.2 1")
os.system("sudo ./set-digital-output Q0.3 1")
os.system("sudo ./set-digital-output Q0.4 1")
os.system("sudo ./set-digital-output Q0.5 1")
time.sleep(2)
os.system("sudo ./set-digital-output Q0.0 0")
os.system("sudo ./set-digital-output Q0.1 0")
os.system("sudo ./set-digital-output Q0.2 0")
os.system("sudo ./set-digital-output Q0.3 0")
os.system("sudo ./set-digital-output Q0.4 0")
os.system("sudo ./set-digital-output Q0.5 0")
time.sleep(2)
except KeyboardInterrupt:
os.system("sudo ./set-digital-output Q0.0 0")
os.system("sudo ./set-digital-output Q0.1 0")
os.system("sudo ./set-digital-output Q0.2 0")
os.system("sudo ./set-digital-output Q0.3 0")
os.system("sudo ./set-digital-output Q0.4 0")
os.system("sudo ./set-digital-output Q0.5 0")
os.system("echo End")
break
Para ejecutar el programa Python, lo llamarás como sigue:
> python3 digital_outputs.py
Para salir del programa basta con pulsar ^C.