Genere Informes PDF desde PLCnext Usando Python y API REST
Me preguntaron con bastante frecuencia cómo se puede crear un informe PDF con datos de proceso del programa PLC usando PLCnext. Una forma fácil es usar un script Python que recopile datos de proceso vía API REST y cree el PDF en el dispositivo. La creación del script es disparada por un bloque de función en IEC61131 en el PLC.
Aquí están los pasos necesarios:
-
Instale pip en el PLC para el usuario "plcnext_firmware". Este es el usuario que usa el bloque de función que ejecuta el Python.
sudo passwd plcnext_firmware --> asigne una nueva contraseña su plcnext_firmware curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py python3 get-pip.py -
Instale las bibliotecas Python requeridas:
python3 -m pip install requests
python3 -m pip install fpdf
- Cree un script Python y cópielo a la carpeta /opt/plcnext/ en el PLC:
import requests
import json
import sys
from fpdf import FPDF
from datetime import datetime
sys.path.append('/opt/plcnext/.local/python3.10/site-packages/')
class PDF(FPDF):
def header(self):
self.image('Logo.png', 10, 8, 40) # opcional
self.set_font('Arial', 'B', 20)
self.cell(0,10,'Informe mensual', border=False, ln=True, align='C')
self.ln(20)
def footer(self):
self.set_y(-15)
self.set_font('Arial', 'I', 12)
self.cell(0,10,f'Página {self.page_no()}/{{nb}}',align='C')
################################## Leer datos del PLC vía REST ##################################
response = requests.get('https://192.168.178.10/_pxc_api/api/variables?paths=Arp.Plc.Eclr/INST_SolarEnergy.diPower', verify=False)
data = response.json()
variables = data['variables']
value = variables[0]['value']
############### Timestamp ###############
now = datetime.now()
current_time = now.strftime("%m.%d.%Y %H:%M:%S")
################ Crear PDF ################
pdf = PDF('P','mm','A4')
pdf.alias_nb_pages()
pdf.set_auto_page_break(auto=True, margin = 15)
pdf.add_page()
pdf.set_font('Arial', '', 12)
mes = 'La potencia de la bomba es ' + str(value) + ' W'
pdf.cell(200, 10, 'Informe '+current_time, ln=True)
pdf.cell(200, 10, txt = mes, ln=True)
pdf.output('Report.pdf')
-
Cree un nuevo proyecto PLC.
-
En el proyecto cree una variable que pueda accederse vía API REST. Para variables locales, la etiqueta "HMI" debe estar seleccionada.
-
Importe la biblioteca PLCnextBase al proyecto. La biblioteca está disponible en la PLCnext Store.
-
Cree un programa que use el comando PBCL_LinuxShell para ejecutar el script Python. Tenga en cuenta que el PLC hará un warmstart después de la primera ejecución del FB.
- Descargue e inicie el programa. El script se ejecuta vía la variable xExecuteScript. El informe pdf se almacena en la carpeta /opt/plcnext/. La variable local xRetain debe tener la etiqueta retain marcada.
Nota:
El Makers Blog muestra aplicaciones e historias de usuarios de miembros de la comunidad que no son probadas ni revisadas por Phoenix Contact. Úselas bajo su propio riesgo.
Tecnología Industrial
- Transistor 2N3771 NPN: Pinout, Características, Aplicaciones y Equivalentes
- Mantenimiento Productivo Total: una palanca de rendimiento probada
- Dominando el Mecanizado de Titanio: Seleccionando las Mejores Herramientas de Fresado para Superaleaciones
- Por qué el recubrimiento en polvo interno impulsa el éxito de su fabricación de metal
- Brighton NC reduce tiempo de cambio: Una historia de éxito
- Protegiendo tus datos: La guía definitiva para privacidad y seguridad IoT
- Optimice el Control de Inventario 2014 con Etiquetas de Activos
- La Evolución e Impacto de la Tecnología de Corte por Chorro de Agua
- Principales Formatos de Archivo CAD Usados en Fusion 360 – Referencia Rápida
- Prototipado de elastómeros: Guía profesional para manufactura rápida y rentable
- Inductores explicados: Tipos, funciones y aplicaciones