Python과 REST API로 PLCnext에서 PDF 보고서 생성
PLC 프로그램의 공정 데이터로 PDF 보고서를 어떻게 만들 수 있는지 자주 질문을 받았습니다. 쉬운 방법은 Python 스크립트를 사용해 REST API로 공정 데이터를 수집하고 장치에서 PDF를 생성하는 것입니다. 스크립트 생성은 PLC의 IEC61131 함수 블록에서 트리거됩니다.
필요한 단계는 다음과 같습니다:
-
사용자 "plcnext_firmware"용으로 PLC에 pip를 설치합니다. 이는 Python을 실행하는 함수 블록에서 사용되는 사용자입니다.
sudo passwd plcnext_firmware --> 새 암호 할당 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) # 선택 사항 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에서 테스트하거나 검토하지 않은 커뮤니티 구성원의 애플리케이션과 사용자 스토리를 보여줍니다. 자신의 책임 하에 사용하세요.