gRPC Reflection을 사용해 Python 스크립트를 PLCnext Engineer 프로젝트에 원활하게 연결
이 포스트는 2025년 다른 포스트를 보완하는 역할을 합니다.
파일과 라이브러리는 이전 포스트의 동일한 GitHub 저장소에서 찾을 수 있습니다.
이 접근 방식은 AXC F 2152와 AXC F 3152 모두에 적용됩니다. 차이점은 다시 한 번 필요한 라이브러리를 설치하는 방법에 있습니다.
중요: 이 접근 방식은 FW 2025.X에서 테스트되어 작동하는 것으로 확인되었습니다.
AXC F 2152의 경우:
grpcio와 grpcio-reflection 라이브러리는 장치 외부에서 교차 컴파일되어 수동으로 설치해야 합니다. 이 라이브러리들(Python 3.12용으로 이미 교차 컴파일됨)은 GitHub 저장소에서 사용할 수 있습니다.
알림: 이전 포스트와 달리 Reflection을 사용하면 protobuf 파일의 사용과 컴파일을 완전히 건너뛸 수 있습니다. 다음 지침을 통해 Python 3.12를 사용하는 컨테이너를 생성해 gRPC를 활용하는 스크립트를 실행할 수 있습니다.
- /opt/plcnext에 gRPC 통신용 폴더를 생성합니다. 이 예제에서는 해당 폴더에 "grpc2152"라는 이름을 부여합니다. grpc2152 내에 다음 폴더 구조를 생성합니다:
grpc2152/ ├──── whl_files312/ │ └─── (주어진 GitHub 저장소의 whl_files312 폴더 내용) │ └── gRPC_with_Reflection_26_0.py
- SSH 세션을 통해 PLC에 접속하고, root 사용자로 로그인(su)한 후 Python 3.12의 슬림 버전을 가져옵니다(이 시점에서 인터넷 연결이 필요함):
$ podman pull docker.io/library/python:3.12.13-slim
- 컨테이너를 실행하고 연결합니다(grpc2152 폴더를 볼륨으로 연결하고, grpc 소켓 연결에 필요한 두 번째 볼륨(run) 연결):
$ podman run -it -v /opt/plcnext/grpc2152/:/grpc2152 -v /run/:/run --restart=always --name grpctester python:3.12.13-slim /bin/bash
- 컨테이너 콘솔에 연결되면 whl_files312 폴더로 이동해 필요한 grpcio 라이브러리를 설치합니다.
$ cd /grpc2152/whl_files312/ $ pip install *.whl
-
GitHub 저장소에서 PLCnext Engineer 프로젝트 "TestingGRPC.pcwex"를 다운로드하고 시작합니다.
-
컨테이너 콘솔에서 "gRPC_with_Reflection_26_0.py" 스크립트를 실행해 gRPC 기능을 테스트합니다. 디버그 모드에서 변수 내용이 스크립트의 텍스트 값으로 채워지고 PLCnext Engineer 프로젝트에서 읽은 후 콘솔에도 표시되어야 합니다.
AXC F 3152의 경우.
2152에 주어진 절차를 따르되, 저장소의 라이브러리 대신 pypi.org에서 직접 라이브러리를 설치합니다.
$ pip install grpcio==1.76.0 $ pip install grpcio-reflection==1.76.0
참고:
Makers Blog는 Phoenix Contact에서 테스트하거나 검토하지 않은 커뮤니티 구성원의 애플리케이션과 사용자 스토리를 보여줍니다. 자신의 책임 하에 사용하세요.