Оптимизация PLCnext REST API: Настройка Reverse Proxy
PLCnext REST Interface — фантастический инструмент как для представления, так и для приема данных от бэкенд-системы. REST, или REpresentational State Transfer, — это стиль программной архитектуры, состоящий из рекомендаций и лучших практик для создания масштабируемых веб-сервисов. Уже есть много отличной информации на PLCnext infoportal, обязательно проверьте её! URI, предоставляемые прошивкой PLCnext, идеальны, если вы строите систему с нуля. Однако они не идеальны, если вы хотите адаптировать существующий REST-интерфейс на PLCnext. Этот блог покажет, как настроить свои собственные URI и связать их с вашими переменными с помощью reverse proxy. Начнем с настройки небольшого примера и будем развивать его!
Предварительные требования
Я использую контроллер AXC F 2152 с FW2020.6 и PLCnext Engineer 2020.6. Но то же самое должно быть возможно с предыдущими версиями позже 2020.0. Я буду использовать PuTTY для настройки SSH-соединения и Postman для обработки HTTP-запросов. Я отключил аутентификацию для целей разработки, вы не должны делать то же самое в продакшене! Инструкции для PLCnext Engineer будут даны очень высокого уровня, не уверены, что делать? Посмотрите на PLCnext infoportal и инструкционные видео и/или сравните с примером проекта! Контроллер, который я использую, имеет IP-адрес 192.168.10.10, пожалуйста, измените это на IP-адрес, который вы используете.
Пример
В этом блоге я буду использовать простой UDT насоса в качестве примера. Вы можете скачать пример программы с этой страницы GitHub, или, конечно, создать свой собственный. Отключите использование «user management» в настройках eHMI и создайте глобальную переменную. Используйте эту переменную на странице eHMI, чтобы мы могли использовать её в API.
Первый API-вызов
Может быть, сначала мы должны узнать, что именно мы собираемся изменить через несколько мгновений!
Давайте отправим GET-запрос, чтобы получить значение нашего первого насоса.
Используйте Postman для отправки GET-запроса на следующий URI:
GET https://192.168.10.10/_pxc_api/api/variables?paths=Arp.Plc.Eclr/Pump1
(Вы можете изменить Pump1 на свою переменную)
Результат:
{
"apiVersion": "1.4.0.0",
"projectCRC": 3448945666,
"userAuthenticationRequired": true,
"variables": [
{
"path": "Arp.Plc.Eclr/Pump1",
"value": {
"xStatus": false,
"iNumberOfStarts": 0,
"sStatus": ""
}
}
]
}
Настройка пользовательской конечной точки
Откройте сессию оболочки, создайте пароль root и войдите как пользователь root.
Далее введите следующую команду в терминале, перейдите в «конец» терминала и будьте осторожны, не вводите ничего в это время!
nano /etc/nginx/nginx.conf
Скопируйте и вставьте следующую часть в терминал и сохраните с ctrl + s и закройте с ctrl + x.
location /Pump1 {
proxy_pass https://127.27.0.1:443/_pxc_api/api/variables?paths=Arp.Plc.Eclr/Pump1;
}
Отправка запроса на новую конечную точку
Отправьте новый GET-запрос с Postman, на этот раз на следующий URI:
GET https://192.168.10.10/Pump1
Получили тот же ответ? Поздравляю, ваш прокси настроен успешно!
Настройка нескольких насосов
Хорошо, а что если у меня несколько насосов? Ну, один подход может быть создание массива, содержащего наши UDT насосов. Вы можете получить весь массив, вызвав переменную, или только нужный элемент, указав индекс в квадратных скобках, например Pump2[1] даст вам элемент с индексом 1 в массиве Pump2.
Но это не тема этого блога. Мы также можем настроить прокси так, чтобы получить доступ к нескольким насосам.
Измените текст, вставленный на предыдущих шагах, чтобы соответствовать следующей схеме:
location /pumps {
proxy_pass https://127.27.0.1:443/_pxc_api/api/variables?paths=Arp.Plc.Eclr;
}
Отправка GET-запроса с Postman на первый URI даст то же, что и раньше. Отправка GET-запроса на второй URI даст массив того же типа данных.
https://192.168.10.10/pumps/Pump1
https://192.168.10.10/pumps/Pump2
Теперь у вас должно быть все, чтобы соответствовать любой схеме API, с которой вы сталкиваетесь, и интегрировать её в ваше устройство PLCnext!
Дополнительное чтение
Промышленные технологии
- Термореактивные пластики vs Термопластики: Понимание ключевых различий и применений
- Эволюция умного дома: что будущее готовит для коннектед жилья
- Откройте CONNEX™: ведущая платформа нетворкинга цепочек поставок для производителей
- Будьте первым выбором: 26 обязательных пунктов чек-листа для успеха B2B-закупок
- Раскрытие ценности: оптимизированная обратная логистика повышает ROI и лояльность клиентов
- Возрождение обратных аукционов: расширение возможностей поставщиков в ценовых войнах
- Максимизируйте эффективность: экспертные советы для вашей системы сканирования склада
- Максимизируйте ROI от инвестиций в генерацию лидов
- Внедрение Индустрии 4.0: Испания в глобальном ландшафте
- Мастерство Edge AI-инференса: практическое руководство к действительным инсайтам