Interaksi gRPC Lokal dengan Kontrol PLCnext melalui grpcurl di OCI Container
Ini adalah bagian terbaru dari seri tentang penggunaan gRPC untuk berinteraksi dengan PLCnext Runtime di perangkat Kontrol PLCnext.
Postingan sebelumnya dalam seri ini meliputi:
- Mengambil gRPC jarak jauh menggunakan grpcurl
- Amankan gRPC jarak jauh menggunakan grpcurl
- GRPC jarak jauh menggunakan refleksi
Artikel yang tercantum di atas menunjukkan cara mengakses server gRPC pada perangkat Kontrol PLCnext dari jarak jauh perangkat klien. Postingan ini memberikan contoh lokal klien gRPC - yaitu klien gRPC yang berjalan pada perangkat Kontrol PLCnext, yang mengakses server gRPC pada perangkat yang sama.
Contoh lain dari lokal Klien gRPC pada perangkat Kontrol PLCnext dapat ditemukan di sini:
- Cara membuat klien untuk server gRPC Kontrol PLCnext di C#
- Gunakan gRPC untuk menghubungkan skrip Python dengan Proyek Engineer PLCnext.
Karena tidak ada perangkat lunak klien gRPC yang diinstal pada perangkat Kontrol PLCnext sebagai standar, artikel ini menunjukkan cara menjalankan klien gRPC (dalam hal ini, grpcurl) dalam container OCI menggunakan Podman dan image yang sesuai dari dockerhub.
Prasyarat
-
Perangkat Kontrol PLCnext yang sesuai, dengan akses internet. Contoh:AXC F 3152 dengan firmware versi 2025.0 atau lebih baru; AXC F 1252 dengan firmware versi 2026.0 atau lebih baru. Saat ini, gambar OCI yang digunakan dalam artikel ini tidak tersedia untuk target armv7 seperti AXC F 2152.
-
Di browser, buka situs Manajemen Berbasis Web (WBM) di perangkat dan, di halaman Layanan Sistem, pastikan fitur GRPC LOCAL SERVER diaktifkan.
Prosedur:
-
Buka sesi shell aman pada perangkat Kontrol PLCnext menggunakan akun pengguna admin.
-
Di sesi shell, jalankan perintah berikut:
podman pull docker.io/fullstorydev/grpcurl:latest-alpine
Tindakan ini akan mengunduh gambar OCI yang berisi alat baris perintah grpcurl ke perangkat Kontrol PLCnext.
-
Cantumkan layanan gRPC yang tersedia di perangkat Kontrol PLCnext lokal:
podman run -it --rm -v /run/plcnext/:/run/plcnext/ --userns=keep-id docker.io/fullstorydev/grpcurl:latest-alpine --plaintext unix:///run/plcnext/grpc.sock list
Tanggapan:
Arp.Device.Interface.Services.Grpc.IDeviceControlService
Arp.Device.Interface.Services.Grpc.IDeviceInfoService
Arp.Device.Interface.Services.Grpc.IDeviceSettingsService
Arp.Device.Interface.Services.Grpc.IDeviceStatusService
Arp.Io.Axioline.Services.Grpc.IAcyclicCommunicationService
Arp.Io.Axioline.Services.Grpc.IAxioMasterService
Arp.Plc.Gds.Services.Grpc.IDataAccessService
Arp.Plc.Gds.Services.Grpc.IForceService
Arp.Plc.Gds.Services.Grpc.ISubscriptionService
Arp.Services.DataLogger.Services.Grpc.IDataLoggerService2
Arp.Services.NotificationLogger.Services.Grpc.INotificationLoggerService
Arp.System.Commons.Services.Io.Grpc.IDirectoryService
Arp.System.Commons.Services.Io.Grpc.IFileService
Arp.System.Commons.Services.Io.Grpc.IFileSystemInfoService
Arp.System.Lm.Services.Grpc.ILicenseStatusService
Arp.System.Nm.Services.Grpc.INotificationManagerService
Arp.System.Security.Services.Grpc.IAuthenticationService
Arp.System.Um.Services.Grpc.IAuthorizationInfoService
Arp.System.Um.Services.Grpc.IPasswordAuthenticationService
grpc.reflection.v1.ServerReflection
grpc.reflection.v1alpha.ServerReflection
-
(Opsional) Buat alias untuk menyederhanakan perintah grpcurl berikutnya:
alias grpcurl="podman run -it --rm -v /run/plcnext/:/run/plcnext/ --userns=keep-id docker.io/fullstorydev/grpcurl:latest-alpine"
-
Ambil suhu papan dari perangkat Kontrol PLCnext:
grpcurl -format json -d '{"identifier":"Status.Board.Temperature.Centigrade"}' --plaintext unix:///run/plcnext/grpc.sock Arp.Device.Interface.Services.Grpc.IDeviceStatusService.GetItem
Tanggapan:
{
"_ReturnValue": {
"TypeCode": "CT_Int8",
"Int8Value": 46
}
}
Catatan:
Blog Pembuat menampilkan aplikasi dan kisah pengguna anggota komunitas yang tidak diuji atau ditinjau oleh Phoenix Contact. Gunakan dengan risiko Anda sendiri.