Akses gRPC Jarak Jauh Aman dengan grpcurl pada Perangkat PLCnext
PERINGATAN: Prosedur yang dijelaskan dalam blog ini menggunakan fitur PLCnext Runtime yang saat ini tidak didukung. Gunakan fitur ini dengan risiko Anda sendiri, dan pastikan tidak menggunakan fitur ini dalam aplikasi produksi.
Dari proyek github gRPCurl:
Dalam versi firmware terbaru, telah mungkin untuk mengakses server gRPC pada perangkat PLCnext Control, tetapi hanya menggunakan klien gRPC yang berjalan di perangkat lokal. Postingan Makers Blog sebelumnya telah memberikan contoh klien gRPC yang ditulis dalam C# dan Python.
Dalam versi firmware mendatang, juga akan mungkin untuk mengakses server gRPC pada perangkat PLCnext Control dari perangkat jarak jauh. Fitur ini sebenarnya sudah termasuk dalam versi firmware 2022.6, tetapi masih dalam pengembangan dan saat ini tidak didukung. Artikel ini menjelaskan cara mengaktifkan fitur ini untuk tujuan pengujian dan pengembangan, menggunakan klien gRPC open-source yang disebut gRPCurl.
Harap diperhatikan bahwa server gRPC TIDAK harus diakses secara jarak jauh dalam aplikasi produksi saat ini.
Prosedur
Pada perangkat PLCnext Control (dengan firmware 2022.6)
- Edit berkas
/etc/plcnext/Packages.acf.settings dan ubah nilai variabel lingkungan ARP_PACKAGE:Arp.Services.GrpcRemote ke "true"
Di masa depan, pengaturan ini akan dilakukan melalui halaman "System Services" Web Based Management.
Pada perangkat jarak jauh
-
Instal gRPCurl menggunakan petunjuk di Github.
-
Unduh direktori protobuf, yang berisi berkas definisi layanan gRPC, dari repositori PLCnext/gRPC di Github
-
Pada baris perintah, keluarkan perintah grpcurl untuk membaca suhu papan di perangkat PLCnext Control:
grpcurl -insecure -import-path Documents/plcnext-grpc/protobuf -proto Device/Interface/IDeviceStatusService.proto -d '{"identifier":"Status.Board.Temperature.Centigrade"}' 192.168.1.10:50051 Arp.Device.Interface.Services.Grpc.IDeviceStatusService/GetItem
... di mana -import-path adalah jalur ke direktori protobuf, dan alamat IP adalah alamat perangkat PLCnext Control.
Balasan harus berupa objek JSON yang berisi suhu papan dalam derajat Celsius:
{ "ReturnValue": { "TypeCode": "CT_Int8", "Int8Value": 43 } }
FAQ
Ini mungkin mungkin, tetapi grpcurl perlu dibangun dari sumber untuk platform target, dan dengan banyak dependensi mungkin tidak akan sederhana.
Untuk bantuan lebih lanjut ...
Gunakan grpcurl -help untuk mendapatkan lebih banyak informasi tentang opsi yang tersedia.
Untuk pertanyaan tentang Server gRPC di PLCnext Runtime, silakan gunakan PLCnext Community Forum.