Python と REST API を使用して PLCnext から PDF レポートを生成
PLC プログラムからのプロセス データを含む PDF レポートを PLCnext でどのように作成できるかという質問をよく受けました。簡単な方法は、REST API 経由でプロセス データを収集し、デバイス上で PDF を作成する Python スクリプトを使用することです。スクリプトの作成は、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 インストール リクエスト
python3 -m pip install fpdf
<オル> 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')
<オル> 新しい PLC プロジェクトを作成します。
プロジェクトで、REST API 経由でアクセスできる変数を作成します。ローカル変数の場合は、「HMI」タグを選択する必要があります。
<オル>
PLCnextBase ライブラリをプロジェクトにインポートします。このライブラリは PLCnext ストアで入手できます。
PBCL_LinuxShell コマンドを使用して Python スクリプトを実行するプログラムを作成します。 PLC は FB の最初の実行後にウォームスタートを実行することに注意してください。
<オル>
注:
Makers Blog には、フエニックス・コンタクトによってテストまたはレビューされていないアプリケーションとコミュニティ メンバーのユーザー ストーリーが表示されます。ご自身の責任で使用してください。
産業技術