Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Industriële technologie

PDF-rapporten genereren vanuit PLCnext met Python en REST API

Ik werd vaak gevraagd hoe een PDF-rapport met procesdata uit het PLC-programma gemaakt kan worden met PLCnext. Een eenvoudige manier is om een Python-script te gebruiken dat procesdata verzamelt via de REST API en de PDF op het apparaat aanmaakt. Het aanmaken van het script wordt getriggerd door een functieblok in IEC61131 op de PLC.

Hier zijn de benodigde stappen:

  1. Installeer pip op de PLC voor de gebruiker "plcnext_firmware". Dit is de gebruiker die gebruikt wordt door het functieblok dat de Python uitvoert.

     sudo passwd plcnext_firmware --> wijs een nieuw wachtwoord toe su plcnext_firmware curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py python3 get-pip.py 
  2. Installeer de benodigde Python-bibliotheken:

python3 -m pip install requests

python3 -m pip install fpdf

  1. Maak een Python-script en kopieer het naar de /opt/plcnext/ map op de 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) # optioneel self.set_font('Arial', 'B', 20) self.cell(0,10,'Maandrapport', 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'Pagina {self.page_no()}/{{nb}}',align='C') ################################## Data uitlezen van de 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'] ############### Tijdstempel ############### now = datetime.now() current_time = now.strftime("%m.%d.%Y %H:%M:%S") ################ PDF aanmaken ################ 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 = 'Het vermogen van de pomp is ' + str(value) + ' W' pdf.cell(200, 10, 'Rapport '+current_time, ln=True) pdf.cell(200, 10, txt = mes, ln=True) pdf.output('Report.pdf') 
  1. Maak een nieuw PLC-project.

  2. Maak in het project een variabele die via de REST API bereikbaar is. Voor lokale variabelen moet de "HMI"-tag geselecteerd zijn.

  1. Importeer de PLCnextBase-bibliotheek in het project. De bibliotheek is beschikbaar in de PLCnext Store.

  2. Maak een programma dat het PBCL_LinuxShell-commando gebruikt om het Python-script uit te voeren. Let op: de PLC voert een warmstart uit na de eerste uitvoering van het FB.

  1. Download en start het programma. Het script wordt uitgevoerd via de xExecuteScript-variabele. Het PDF-rapport wordt opgeslagen in de /opt/plcnext/ map. De lokale variabele xRetain moet het retain-vinkje hebben aangevinkt.

Let op:

De Makers Blog toont toepassingen en gebruikersverhalen van community-leden die niet getest of beoordeeld zijn door Phoenix Contact. Gebruik ze op eigen risico.

Industriële technologie

  1. Kennismaking met Ken Baker: DVIRC's nieuwe Raadslid met 40 jaar industriële expertise
  2. Hoe COVID-10 Bedrijven Voor De Lange Termijn Hervormt
  3. Top 7 Voordelen Van Kunststof Spruitgieten Voor OEM's En Snelle Prototyping
  4. Alibaba Richt Zich op Noord-Amerikaanse MKB met Nieuw B2B-initiatief
  5. Een L293D Motordriver Aansluiten op een DC-Motor met Arduino – Stap-voor-Stap Handleiding
  6. Top 25 Maximo Software Consultants voor Uw EAM Succes
  7. Rock Pi: Krachtige Alternatief voor Raspberry Pi
  8. E3.series database sjablonen: Efficiënte componentzoekacties
  9. Duifstaartverbindingen: definitie, toepassingen en voordelen in houtbewerking
  10. Gelijkrichterschakelingen: Fundamenten, Werking en Ontwerprichtlijnen
  11. Waarom Edge Computing essentieel is voor IoT: Real-time prestaties ontgrendelen