Удаленный gRPC с помощью grpcurl
ВНИМАНИЕ! Процедура, описанная в этом блоге, использует функции PLCnext Runtime, которые в настоящее время не поддерживаются. Используйте эти функции на свой страх и риск и ни в коем случае не используйте их в рабочих приложениях.
Из проекта gRPCurl github:
В последних версиях встроенного ПО можно было получить доступ к серверу gRPC на устройствах PLCnext Control, но только с помощью клиентов gRPC, работающих на локальном устройстве. В предыдущих сообщениях блога Makers приводились примеры клиентов gRPC, написанных на C# и Python.
В будущих версиях прошивки также можно будет получить доступ к серверу gRPC на устройствах PLCnext Control с удаленного устройства. На самом деле эта функция уже включена в версию прошивки 2022.6, но она все еще находится в разработке и в настоящее время не поддерживается. В этой статье описывается, как активировать эту функцию в целях тестирования и разработки с помощью клиента gRPC с открытым исходным кодом под названием gRPCurl.
Обратите внимание, что сервер gRPC должен НЕ в настоящее время доступны удаленно в рабочих приложениях.
Процедура
На устройстве PLCnext Control (с прошивкой 2022.6)
- Редактировать файл
/etc/plcnext/Packages.acf.settings
и измените значение переменной окруженияARP_PACKAGE:Arp.Services.GrpcRemote
до"true"
В будущем этот параметр будет выполняться на странице "Системные службы" системы управления через веб-интерфейс.
-
Проверьте содержимое файла
/opt/plcnext/config/Services/Grpc/Remote.grpc.config
. Вы должны увидеть значение"0.0.0.0:50051"
для адреса сокета слушателя. Это означает, что сервер gRPC будет прослушивать порт 50051 для сообщений от клиентов gRPC. -
Перезапустите среду выполнения PLCnext.
На удаленном устройстве
-
Установите gRPCurl, следуя инструкциям на Github.
-
Загрузите
protobuf
каталог, содержащий файлы определения службы gRPC, из репозитория PLCnext/gRPC на Github -
В командной строке введите
grpcurl
команда для чтения температуры платы в устройстве управления 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
... где -import-path
— это путь к каталогу protobuf, а IP-адрес — это адрес устройства управления PLCnext.
Ответ должен быть объектом JSON, содержащим температуру платы в градусах Цельсия:
{
"ReturnValue": {
"TypeCode": "CT_Int8",
"Int8Value": 43
}
}
Часто задаваемые вопросы
Это возможно, но grpcurl
потребуется собрать из исходного кода для целевой платформы, а учитывая количество зависимостей, это, вероятно, будет непросто.
Для получения дополнительной помощи...
Используйте grpcurl -help
чтобы получить дополнительную информацию о доступных параметрах.
По вопросам о сервере gRPC в среде выполнения PLCnext обращайтесь на форум сообщества PLCnext.
Промышленные технологии
- С# с использованием
- Удаленный мониторинг погоды с помощью Raspberry Pi
- Использование ИК-пульта дистанционного управления с Raspberry Pi без LIRC
- 5 преимуществ дистанционного управления производством
- Удаленный gRPC с помощью grpcurl
- Управление кластером на PLCnext?
- Информационная панель PLCnext Tableau
- Отчеты PLCnext Power BI
- Информационные панели PLCnext Grafana
- Java-приложение на PLCnext Control