GRPC jarak jauh menggunakan grpcurl
PERINGATAN:Prosedur yang dijelaskan dalam blog ini menggunakan fitur PLCnext Runtime yang saat ini tidak didukung. Gunakan fitur ini dengan risiko Anda sendiri, dan yang pasti jangan gunakan fitur ini dalam aplikasi produksi.
Dari proyek github gRPCurl:
Dalam versi firmware terbaru, server gRPC dapat diakses di perangkat Kontrol PLCnext, tetapi hanya menggunakan klien gRPC yang berjalan di perangkat lokal. Entri Blog Pembuat sebelumnya telah memberikan contoh klien gRPC yang ditulis dalam C# dan Python.
Dalam versi firmware mendatang, server gRPC juga dapat diakses di perangkat PLCnext Control dari jarak jauh perangkat. Sebenarnya fitur ini sudah termasuk dalam firmware versi 2022.6, tetapi ini 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 perhatikan bahwa server gRPC seharusnya TIDAK saat ini dapat diakses dari jarak jauh dalam aplikasi produksi.
Prosedur
Pada perangkat Kontrol PLCnext (dengan firmware 2022.6)
- Edit file
/etc/plcnext/Packages.acf.settings
dan ubah nilai variabel lingkungan ARP_PACKAGE:Arp.Services.GrpcRemote
ke "true"
Di masa mendatang, pengaturan ini akan dilakukan melalui halaman "Layanan Sistem" Manajemen Berbasis Web.
-
Periksa isi file /opt/plcnext/config/Services/Grpc/Remote.grpc.config
. Anda akan melihat nilai "0.0.0.0:50051"
untuk alamat soket pendengar. Ini berarti bahwa server gRPC akan mendengarkan pesan dari klien gRPC pada port 50051.
-
Mulai ulang PLCnext Runtime.
Di perangkat jarak jauh
-
Instal gRPCurl menggunakan petunjuk di Github.
-
Unduh protobuf
direktori, yang berisi file definisi layanan gRPC, dari repositori PLCnext/gRPC di Github
-
Pada baris perintah, keluarkan grpcurl
perintah untuk membaca suhu papan di perangkat Kontrol PLCnext:
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 Kontrol PLCnext.
Balasan harus berupa objek JSON yang berisi suhu papan dalam derajat Celcius:
{
"ReturnValue": {
"TypeCode": "CT_Int8",
"Int8Value": 43
}
}
FAQ
Ini mungkin saja, tetapi grpcurl
perlu dibangun dari sumber untuk platform target, dan mengingat jumlah dependensi yang mungkin tidak sederhana.
Untuk bantuan lebih lanjut ...
Gunakan grpcurl -help
untuk mendapatkan informasi lebih lanjut tentang opsi yang tersedia.
Untuk pertanyaan tentang Server gRPC di PLCnext Runtime, silakan gunakan Forum Komunitas PLCnext.