Integrasi gRPC yang Mulus:Hubungkan Skrip Python ke Proyek Insinyur PLCnext
Informasi berikut berfungsi sebagai pembaruan dan perluasan postingan ini mulai tahun 2022.
Pendekatannya sama untuk AXC F 2152 dan AXC F 3152, perbedaannya terletak pada cara menginstal perpustakaan yang diperlukan.
PENTING: Pendekatan ini telah diuji dan terlihat berfungsi untuk FW 2024.x dan 2025.0
Untuk AXC F 2152:
Pustaka grpcio dan alat grpcio perlu dikompilasi silang dari perangkat dan diinstal secara manual. Ikhtisar pendekatan yang saya ambil untuk melakukan kompilasi silang menggunakan QEMU dapat ditemukan di entri forum ini
Pustaka yang dikompilasi silang untuk Python 3.11, bersama dengan file lainnya setelah posting ini, telah tersedia melalui tautan ini
Petunjuk berikut memungkinkan Anda membuat container dengan Python 3.11 tempat Anda dapat menjalankan skrip yang menggunakan gRPC.
- Menggunakan WinSCP (atau perangkat lunak lain yang memungkinkan mengakses sistem file pengontrol Anda), buat folder di /opt/plcnext untuk digunakan untuk komunikasi gRPC, contoh ini akan menetapkan nama "grpc2152" ke folder tersebut. di dalam grpc2152, buat struktur folder berikut.
grpc2152/
├── include/
│ └── google/
│ └── (empty folder for now)
│
├── whl_files311/
│ ├── grpcio-1.71.0-cp311-cp311-linux_armv7l.whl
│ └── grpcio_tools-1.71.0-cp311-cp311-linux_armv7l.whl
│
├── generate_googlegrpc.py
├── grpc_test.py
└── Readme.txt
- Unduh repositori "https://github.com/PLCnext/gRPC" dan dari sana, ambil folder "protobuf" dan letakkan di dalam folder google yang telah dibuat sebelumnya. Struktur folder yang dihasilkan kemudian terlihat seperti ini:
grpc2152/
├── include/
│ └── google/
│ └── protobuf/
│ └── (content of the protobuf folder from the PLCnext github repo)
│
├── whl_files311/
│ ├── grpcio-1.71.0-cp311-cp311-linux_armv7l.whl
│ └── grpcio_tools-1.71.0-cp311-cp311-linux_armv7l.whl
│
├── generate_googlegrpc.py
├── grpc_test.py
└── Readme.txt
- Buat sesi SSH ke PLC Anda, login sebagai pengguna root (su) dan dapatkan versi ramping python 3.11. (pada titik ini, koneksi internet diperlukan untuk mendapatkan image python)
$ podman pull docker.io/library/python:3.11.10-slim-bookworm
- Jalankan dan lampirkan ke wadah (menghubungkan folder grpc2152 sebagai volume dan volume kedua (jalankan) yang diperlukan untuk koneksi ke soket grpc):
$ podman run -it -v /opt/plcnext/grpc2152:/grpc2152 -v /run:/run --restart=always --name grpctester python:3.11.10-slim-bookworm /bin/bash
- Setelah terpasang ke konsol kontainer, navigasikan ke folder whl_files311 dan instal perpustakaan grpcio. (koneksi internet diperlukan untuk dependensi)
$ cd /grpc2152/whl_files311/
$ pip install *.whl
- Kembali ke folder induk grpc2152 di dalam wadah dan jalankan skrip python "generate_googlegrpc.py" (beberapa pesan akan muncul -berfungsi!-)
$ cd /grpc2152
$ python3 generate_googlegrpc.py
-
Setelah skrip berhasil menyelesaikan eksekusi, folder baru akan muncul (pxc_grpc). Di dalam grpc2152, cuplikan python untuk grpc sekarang berada di sana. Sekarang Anda dapat menguji fungsionalitas gRPC dengan contoh proyek dan skrip.
-
Unduh dan mulai proyek PLCnext Engineer "TestingGRPC.pcwex" ke pengontrol.
-
Uji fungsionalitas gRPC dari konsol penampung dengan menjalankan skrip "grpc_test.py". Dalam proyek PLCnext Engineer, saat mengakses variabel dalam mode debug, konten variabel harus diisi dengan nilai dari skrip.
Untuk AXC F 3152.
Ikuti prosedur yang sama yang diberikan di atas untuk 2152 tetapi pada langkah 5, instal perpustakaan langsung dari pypi.org
$ pip install grpcio==1.71.0
$ pip install grpcio-tools==1.71.0
Jenis Data dan penggunaan cuplikan kode.
Sekarang, kapan pun Anda ingin menggunakan gRPC untuk mengakses variabel, sertakan folder tempat cuplikan kode dibuat ke jalur Python yang digunakan oleh skrip Anda dan impor kelas yang diperlukan (baris 6 hingga 14 dari file grpc_test.py yang diberikan).
Ingatlah untuk mempertimbangkan tipe data yang diuraikan dalam postingan lama yang saya sebutkan di awal artikel ini.
Catatan:
Blog Pembuat menampilkan aplikasi dan kisah pengguna anggota komunitas yang tidak diuji atau ditinjau oleh Phoenix Contact. Gunakan dengan risiko Anda sendiri.