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

Genereer PDF-rapporten vanuit PLCnext met behulp van Python en REST API

Regelmatig kreeg ik de vraag hoe met PLCnext een PDF-rapportage met procesgegevens uit het PLC-programma kan worden gemaakt. Een eenvoudige manier is om een ​​Python-script te gebruiken dat procesgegevens verzamelt via de REST API en de PDF op het apparaat aanmaakt. Het aanmaken van het script wordt geactiveerd door een functieblok in IEC61131 op de PLC.

Hier zijn de noodzakelijke stappen:

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

     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
    
  2. Installeer de vereiste Python-bibliotheken:

python3 -m pip installatieverzoeken

python3 -m pip installeer fpdf

  1. Maak een Python-script en kopieer het naar de map /opt/plcnext/ 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) # 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')
  1. Maak een nieuw PLC-project aan.

  2. Maak in het project een variabele aan die toegankelijk is via de REST API. Voor lokale variabelen moet de tag "HMI" worden geselecteerd.

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

  2. Maak een programma dat de opdracht PBCL_LinuxShell gebruikt om het Python-script uit te voeren. Houd er rekening mee dat de PLC een warmstart zal uitvoeren na de eerste uitvoering van de FB.

  1. Download en start het programma. Het script wordt uitgevoerd via de xExecuteScript-variabele. Het pdf-rapport wordt opgeslagen in de map /opt/plcnext/. Voor de lokale variabele xRetain moet de tag 'retain' zijn aangevinkt.

Opmerking:

Op de Makers Blog worden toepassingen en gebruikersverhalen van communityleden getoond die niet door Phoenix Contact zijn getest of beoordeeld. Gebruik ze op eigen risico.


Industriële technologie

  1. Hoe weet u of uw Big Data Project succesvol zal zijn?
  2. 4 meest populaire houtbewerkingsgereedschappen voor houtbewerkingsmachines gebruikt
  3. Design spotlight:aanpassing van additief naar spuitgieten
  4. Wat weet u over verschillende soorten PCB-oppervlakteafwerking -II
  5. Wat is technische tolerantie? - Definitie en typen
  6. Transmissielijnen van eindige lengte
  7. De 57 beste softwareoplossingen, systemen en hulpmiddelen voor het volgen van activa (om uw apparatuur en belangrijke fysieke activa te volgen)
  8. Aangepaste gitaarhardware bewerken
  9. Innoveren zonder uw R&D-budget te verliezen
  10. Kunstmatig neuraal netwerk kan draadloze communicatie verbeteren
  11. Zichtbaarheid cruciaal voor het beheren van supply chain-risico's