Генерация PDF-отчетов из PLCnext с помощью Python и REST API
Вот необходимые шаги: Установите pip на ПЛК для пользователя «plcnext_firmware». Это пользователь, который используется функциональным блоком, выполняющим Python. Установите необходимые Python-библиотеки: python3 -m pip install requests python3 -m pip install fpdf Создайте новый проект ПЛК. В проекте создайте переменную, к которой можно получить доступ через REST API. Для локальных переменных должен быть выбран тег «HMI». Импортируйте библиотеку PLCnextBase в проект. Библиотека доступна в PLCnext Store. Создайте программу, которая использует команду PBCL_LinuxShell для выполнения Python-скрипта. Имейте в виду, что ПЛК выполнит warmstart после первого выполнения ФБ. Блог Makers демонстрирует приложения и пользовательские истории членов сообщества, которые не тестировались и не проверялись Phoenix Contact. Используйте их на свой страх и риск.
sudo passwd plcnext_firmware --> назначьте новый пароль su plcnext_firmware curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py python3 get-pip.py
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') ################################## Чтение данных из ПЛК через 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") ################ Создание 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')
Примечание:
Промышленные технологии
- Топ-5 УФ-стойких пластиков для долговечной прочности
- Повышение долговечности пластиковых форм: передовые технологии поверхностного упрочнения
- 3D-решетчатые структуры: принципы проектирования и механическое поведение для передового аддитивного произв…
- Основные стратегии компоновки печатных плат для надежности и стоимостной эффективности
- Как улучшение качества движет операционным успехом в производстве
- Создание и 3D-печать функционального паяльного зажима
- Автоматизация склада: три ключевых решения для преодоления общих вызовов
- Фазосдвиговый генератор и варикапные умножители: принципы проектирования и применения
- Как COVID-19 срывает глобальные цепочки поставок
- Высокоскоростной ЧПУ-обрабатывающий центр: ключевые конфигурации и требования