Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Industriële technologie

Naadloze gRPC-integratie: Python-scripts verbinden met PLCnext Engineer-projecten

De volgende informatie dient zowel als update als als uitbreiding op deze post uit 2022.

De aanpak werkt hetzelfde voor de AXC F 2152 en de AXC F 3152, het verschil zit in hoe de vereiste bibliotheken geïnstalleerd moeten worden.

BELANGRIJK: De aanpak is getest en werkt voor FW 2024.x en 2025.0

Voor de AXC F 2152:

De bibliotheken grpcio en grpcio-tools moeten off-device cross-gecompileerd en handmatig geïnstalleerd worden. Een overzicht van de aanpak die ik gebruik voor de cross-compilatie met QEMU is te vinden op dit forumbericht.

De cross-gecompileerde bibliotheken voor Python 3.11, samen met de rest van de bestanden om deze post te volgen, zijn beschikbaar gemaakt via deze link.

De volgende instructies laten je een container met Python 3.11 maken waarin je de scripts kunt draaien die gebruikmaken van gRPC.

  1. Met WinSCP (of andere software die toegang geeft tot het bestandssysteem van je controller), maak een map in /opt/plcnext voor de gRPC-communicatie, in dit voorbeeld noemen we die map "grpc2152". Binnen grpc2152, maak de volgende mappenstructuur.
grpc2152/ ├── include/ │ └── google/ │ └── (lege map voor nu) │ ├── whl_files311/ │ ├── grpcio-1.71.0-cp311-cp311-linux_armv7l.whl │ └── grpcio_tools-1.71.0-cp311-cp311-linux_armv7l.whl │ ├── generate_googlegrpc.py ├── grpc_test.py └── Readme.txt 
  1. Download de repository "https://github.com/PLCnext/gRPC" en haal daaruit de map "protobuf" en plaats die in de zojuist aangemaakte google-map. De resulterende mappenstructuur ziet er dan zo uit:
grpc2152/ ├── include/ │ └── google/ │ └── protobuf/ │ └── (inhoud van de protobuf-map uit de PLCnext GitHub-repo) │ ├── whl_files311/ │ ├── grpcio-1.71.0-cp311-cp311-linux_armv7l.whl │ └── grpcio_tools-1.71.0-cp311-cp311-linux_armv7l.whl │ ├── generate_googlegrpc.py ├── grpc_test.py └── Readme.txt 
  1. Maak een SSH-sessie naar je PLC, log in als root-gebruiker (su) en haal de slim-versie van Python 3.11 op. (op dit moment is internetverbinding nodig om de Python-image op te halen)
$ podman pull docker.io/library/python:3.11.10-slim-bookworm 
  1. Draai en koppel aan de container (de map grpc2152 koppelen als volume en een tweede volume (run) nodig voor de verbinding met de gRPC-socket):
$ podman run -it -v /opt/plcnext/grpc2152:/grpc2152 -v /run:/run --restart=always --name grpctester python:3.11.10-slim-bookworm /bin/bash 
  1. Eenmaal gekoppeld aan de console van de container, navigeer naar de map whl_files311 en installeer de grpcio-bibliotheken. (internetverbinding is nodig voor de afhankelijkheden)
 $ cd /grpc2152/whl_files311/ $ pip install *.whl 
  1. Ga terug naar de bovenliggende map grpc2152 binnen de container en voer het Python-script "generate_googlegrpc.py" uit (er moeten enkele berichten verschijnen -working!-)
 $ cd /grpc2152 $ python3 generate_googlegrpc.py 
  1. Zodra het script succesvol is uitgevoerd, zou een nieuwe map aanwezig moeten zijn (pxc_grpc). Binnen grpc2152 liggen de Python-snippets voor gRPC nu daar. Nu kun je de gRPC-functionaliteit testen met het voorbeeldproject en script.

  2. Download en start het PLCnext Engineer-project "TestingGRPC.pcwex" naar de controller.

  3. Test de gRPC-functionaliteit vanaf de console van de container door het script "grpc_test.py" uit te voeren. In het PLCnext Engineer-project, bij toegang tot de variabelen in debug-modus, moeten de variabelen gevuld worden met de waarden uit het script.

Voor de AXC F 3152.

Volg dezelfde procedure als hierboven voor de 2152, maar in stap 5 installeer je de bibliotheken direct vanaf pypi.org

 $ pip install grpcio==1.71.0 $ pip install grpcio-tools==1.71.0 

Datatypen en het gebruik van de code-snippets.

Nu, wanneer je gRPC wilt gebruiken voor het benaderen van variabelen, voeg de map toe waar de code-snippets gegenereerd zijn aan het Python-pad dat door je scripts gebruikt wordt en importeer de benodigde klassen (regel 6 tot 14 van het gegeven grpc_test.py-bestand).

Houd rekening met de datatypen die in de oude post aan het begin van dit artikel worden besproken.

Let op:

De Makers Blog toont toepassingen en gebruikersverhalen van community-leden die niet getest of beoordeeld zijn door Phoenix Contact. Gebruik ze op eigen risico.

Industriële technologie

  1. Fasediagrammen benutten om dampdrukkrommen nauwkeurig te voorspellen
  2. Hoe Schoeneck Containers productiestillstand voorkomt met i-Alert2
  3. SCADA-systemen & Industrie 4.0: Extern procesbeheer revolutioneren
  4. Supply Chain-Complexiteit Transformeren in Superieure Service-excellentie
  5. Overlapverbinding uitgelegd: typen, diagrammen en stapsgewijze snijgids
  6. Belangrijke impedantie-ontwerpstrategieën voor flex-rigid PCBs
  7. FPSO-bouw meesteren: uitdagingen overwinnen bij drijvende productie, opslag en lossing
  8. Gedraaide paren en schermkabels automatisch configureren in E3.series
  9. Additieve Productie Breidt Uit Naar Industriële Productie Buiten Desktop 3D-printen
  10. Metrische notatie: SI-voorvoegsels en het nieuwe decimaalteken-vrije elektrische formaat begrijpen
  11. Hoe de Ideale PCB-assemblagefabrikant te Selecteren: Expert 7-stappen Gids (Deel 2)