使用 Python 和 REST API 从 PLCnext 生成 PDF 报表
常被问及如何用 PLCnext 创建包含 PLC 程序过程数据的 PDF 报表。简便方法是用 Python 脚本通过 REST API 收集过程数据并在设备上创建 PDF。脚本创建由 PLC 上 IEC61131 功能块触发。
必要步骤:
为用户 "plcnext_firmware" 在 PLC 安装 pip。此用户为执行 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安装所需 Python 库:
python3 -m pip install requests
python3 -m pip install fpdf
- 创建 Python 脚本并复制到 PLC 的 /opt/plcnext/ 文件夹:
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 从 PLC 读取数据 ################################## 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'] ############### 时间戳 ############### 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') 创建新 PLC 项目。
在项目中创建可通过 REST API 访问的变量。局部变量需勾选 "HMI" 标签。
将 PLCnextBase 库导入项目。库在 PLCnext Store 可用。
创建程序使用 PBCL_LinuxShell 命令执行 Python 脚本。注意首次执行 FB 后 PLC 将执行暖启动。
- 下载并启动程序。脚本通过 xExecuteScript 变量执行。PDF 报表存储在 /opt/plcnext/ 文件夹。本地变量 xRetain 必须勾选 retain 标签。
注意:
Makers Blog 展示社区成员应用和用户故事,未经 Phoenix Contact 测试或审核。使用风险自负。
工业技术
- 刨床详解:定义、部件与类型全解析
- 30款顶级库存管理软件助您像专家一样掌控与追踪库存
- 电化学磨削(ECG)原理、优势与应用全解析
- 解读FDA医疗器械唯一标识(UDI)最终规则
- 防水标签为企业带来的5大核心优势
- HRS为欧盟资助穆尔西亚零液排放项目提供MVR蒸发系统
- 光敏电阻 (LDR) 光照检测电路设计全攻略:原理、运放/三极管/555 三种驱动方案与应用
- 应对贸易摩擦的三大实证策略
- 关键燃料系统组件驱动 New Flyer 创新巴士技术
- 《可能性创造者》第1期:Nora Toure——推动医疗行业工业4.0
- 电化学切割(ECC)优劣势全解析:二轴金属切断的明智之选?
- 手工数据采集:现代制造业的瓶颈所在