Genere informes PDF desde PLCnext usando Python y REST API
Con frecuencia me preguntaron cómo se puede crear con PLCnext un informe en PDF con datos de proceso del programa PLC. Una forma sencilla es utilizar un script de Python que recopila datos del proceso a través de la API REST y crea el PDF en el dispositivo. La creación del script se activa mediante un bloque de funciones en IEC61131 en el PLC.
Estos son los pasos necesarios:
-
Instale pip en el PLC para el usuario "plcnext_firmware". Este es el usuario que utiliza el bloque de funciones que ejecuta Python.
sudo passwd plcnext_firmware --> assign a new password su plcnext_firmware curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py python3 get-pip.py -
Instale las bibliotecas de Python necesarias:
python3 -m solicitudes de instalación de pip
python3 -m pip instalar fpdf
- Cree un script Python y cópielo en la carpeta /opt/plcnext/ del 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) # optional
self.set_font('Arial', 'B', 20)
self.cell(0,10,'Monthly report', 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'Page {self.page_no()}/{{nb}}',align='C')
##################################
Read data from the PLC via 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")
################
Create 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 = 'The power of the pump is ' + str(value) + ' W'
pdf.cell(200, 10, 'Report '+current_time, ln=True)
pdf.cell(200, 10, txt = mes, ln=True)
pdf.output('Report.pdf')
-
Cree un nuevo proyecto de PLC.
-
En el proyecto, cree una variable a la que se pueda acceder a través de la API REST. Para variables locales, se debe seleccionar la etiqueta "HMI".
-
Importe la biblioteca PLCnextBase al proyecto. La biblioteca está disponible en PLCnext Store.
-
Cree un programa que utilice el comando PBCL_LinuxShell para ejecutar el script Python. Tenga en cuenta que el PLC realizará un arranque en caliente después de la primera ejecución del FB.
- Descargue e inicie el programa. El script se ejecuta mediante la variable xExecuteScript. El informe en PDF se almacena en la carpeta /opt/plcnext/. La variable local xRetain debe tener marcada la etiqueta de retención.
Nota:
El Makers Blog muestra aplicaciones e historias de usuarios de miembros de la comunidad que Phoenix Contact no prueba ni revisa. Úselos bajo su propio riesgo.
Tecnología Industrial
- Proceso paso a paso de ensamblaje de PCB sin plomo
- Explosión del pasado:por qué los fabricantes deberían involucrarse más en los aprendizajes registrados
- La importancia de la metrología en la fabricación
- Conceptos básicos de la sierra:tipos, usos y cómo elegir la adecuada
- Cómo la tecnología de gemelos digitales está reduciendo la brecha de talento de fabricación
- Cómo la Industria 4.0 está transformando la manufactura esbelta
- Por qué importan las tolerancias dimensionales
- Cómo construir relaciones más sólidas en la cadena de suministro con las pymes
- Competir en la industria espacial:una guía para los fabricantes de Pensilvania
- TODO LO QUE NECESITA SABER SOBRE EL FRESADO DE FORMAS
- Aspectos clave que debe saber sobre el moldeo por inyección de dos disparos