산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 산업기술

Pseudo TTY를 활용한 PLCnext PLC의 손쉬운 원격 RS232/RS485 연결

이 메이커 블로그 기사에서는 Com Server가 PLCnext 플랫폼에 제공하는 가능성과 이점에 대해 논의합니다.Pseudo TTY를 활용한 PLCnext PLC의 손쉬운 원격 RS232/RS485 연결

소개

Phoenix Contact가 PLC용으로 제공하는 확장 모듈은 예를 들어 다음과 같은 시리얼 어댑터가 될 수 있습니다:

모든 확장 모듈은 한 가지 공통점이 있습니다: 프로세스 데이터를 통해 순환적으로 접근할 수 있습니다. 이는 실시간 애플리케이션에서 시리얼 장치와 직접 상호작용할 수 있는 가능성을 제공합니다.

어떤 경우에는 이것이 원하는 것이 아닙니다. 대신 기존 (C/C++) 라이브러리를 재사용하고 실시간 컨텍스트가 필요하지 않습니다. 그러나 이러한 라이브러리는 일반적으로 COM 또는 TTY 인터페이스에 직접 접근하도록 프로그래밍되어 있음을 알게 될 것입니다.

PLCnext Control에 TTY 인터페이스를 생성하는 두 가지 옵션이 있습니다:

  1. PLCnext Runtime 내부에서 AXL 또는 IL 시리얼 어댑터용 TTY 인터페이스를 생성하는 일부 함수(C++ / C#)를 구현합니다.
  2. GW Device Server 같은 COM-Server 장치 사용

GW Device Server는 투명한 TCP to Serial 인터페이스를 제공합니다. Socat 같은 도구를 사용하면 시리얼/TCP 트래픽을 직접 pseudo TTY 인터페이스로 전달할 수 있습니다. GW Device Server 사용은 TLS 암호화 채널을 통해 원격 위치의 시리얼 장치와 통신할 가능성도 제공합니다.

참고

이 튜토리얼에서 PLC는 클라이언트 역할을 수행하며 GW Device Server에 연결을 설정합니다.

(그러나 PLC Socat을 리스닝 옵션으로 전환하고 GW가 클라이언트로 능동적으로 PLC에 연결하도록 하는 것도 가능합니다.)

설정

Pseudo TTY를 활용한 PLCnext PLC의 손쉬운 원격 RS232/RS485 연결

GW Device Server 설정

웹 기반 관리를 통해 GW Device Server에 연결합니다. GW Device Server의 기본 IP 주소는 192.168.254.254입니다.

다음 설정을 사용합니다:

LAN 설정 - 보안
시리얼 설정

GW Device Server 테스트

PLC를 이더넷으로 GW Device Server에 연결하고 GW Device Server의 두 DSUB 어댑터를 서로 연결하여 올바르게 설정되었는지 빠르게 테스트할 수 있습니다.

Telnet 도구를 사용하여 빠르게 테스트할 수 있습니다. 이 도구로 PLC에서 GW Device Server의 포트 8000/COM1로 데이터를 보내고 시리얼 케이블을 통해 포트 8001/COM2로 전달된 후 PLC에서 다시 수신할 수 있습니다.

다음 명령어를 사용합니다:

ssh admin@192.168.1.10
sudo passwd root
su root
ip addr add 192.168.254.10 dev eth0
telnet 192.168.254.254 8000
## 다른 셸 세션 열기
telnet 192.168.254.254 8001
# 메시지 입력
Pseudo TTY를 활용한 PLCnext PLC의 손쉬운 원격 RS232/RS485 연결

Socat 빌드

Linux OS에서 Socat을 쉽게 빌드하기 위해 다음 명령어를 사용합니다:

mkdir tmp
cd tmp
git clone git://repo.or.cz/socat.git
cd socat
## TODO: 자신의 SDK 위치로 수정
source /opt/pxc/release/axcf2152/2020/0/environment-setup-cortexa9t2hf-neon-pxc-linux-gnueabi
. /opt/pxc/release/axcf2152/2020/0/site-config-cortexa9t2hf-neon-pxc-linux-gnueabi
mkdir install
autoconf
./configure $CONFIGURE_FLAGS --prefix=$(pwd)/install --enable-openssl-method
make -j2
make install

Socat 배포 및 설치

Socat 설치를 배포하기 위해 다음 스크립트를 실행합니다:

cd tmp
mkdir -p deploy
cd deploy
mkdir -p usr
cp -r ../../Daemon/* .
cp -r ../socat/install/* usr/
# 패키지 생성
tar -cf ../socat-binaries.tar .
cd ..
scp socat-binaries.tar admin@192.168.188.41:~
ssh -ttt admin@192.168.188.41 \
"mkdir -p /opt/plcnext/socat-binaries && \
tar -xf /opt/plcnext/socat-binaries.tar -C /opt/plcnext/socat-binaries"

배포 후 이제 PLC에 SSH로 접속할 수 있습니다. 따라서 먼저 다음 명령어를 실행하여 PLC의 디렉토리와 설정 파일을 준비합니다:

deploy$ ssh admin@192.168.1.10
admin@192.168.1.10:~$ su root
root@192.168.1.10$ mkdir -p /etc/default/socat
root@192.168.1.10$ touch /etc/default/socat/socat.conf
root@192.168.1.10$ touch /etc/init.d/SocatDaemon

이제 socat.conf 파일을 수정하여 시리얼 인터페이스 매개변수를 필요에 맞게 구성합니다.

nano /etc/default/socat/socat.conf

파일 내용은 다음과 같습니다.

TARGETIP="192.168.254.254"
TARGETPORT="8000"
TTYNAME="/dev/ttyGWDeviceServer"
OPTIONS="pty,link=$TTYNAME tcp-connect:$TARGETIP:$TARGETPORT,forever,interval=15"
BAUD="9600"
PARITY=""
DATABITS="csN 8"
STOPBITS="-cstopb"
FLOWCONTROLL=""

추가 매개변수를 수정해야 한다면 SocatDaemon 파일도 수정해야 합니다. TTY 매개변수에 대한 자세한 정보는 stty 매뉴얼 페이지에서 찾을 수 있습니다.

이제 GW Device Server에 Socat 데몬을 사용하여 자동으로 연결하는 SocatDaemon 파일을 생성합니다.

참고:

이 SocatDaemon 파일은 오류/연결 끊김 관리 등이 없는 예제입니다. please.

nano /etc/init.d/SocatDaemon

파일 내용은 다음과 같습니다.(코드 보기/숨기기 클릭)

이제 모든 설정 파일이 준비되었으므로 Socat 바이너리를 설정하고 Socat 데몬을 등록할 수 있습니다.

chmod +x /etc/init.d/SocatDaemon
cd /opt/plcnext/socat-binaries
chmod +x usr/bin/*
cp -r usr /
update-rc.d -s -v SocatDaemon 99
/etc/init.d/SocatDaemon start

모든 것이 올바르게 설정되었다면 ps -e | grep socat 같은 명령어로 실행 중인 데몬을 볼 수 있습니다. cat /var/log/socat.log에 있는 Socat 로그도 확인할 수 있습니다.

터미널에서 TTY 인터페이스 접근

이제 TTY 인터페이스를 통해 메시지를 보낼 수 있습니다.

sudo echo "PLC to GW $var" > /dev/GWDeviceServer

pseudo TTY를 지속적으로 테스트하려면 다음 같은 명령어를 사용하세요:

while true; do sleep 5 && sudo echo "PLC to GW $var" >/dev/ttyUSB0 && var=$((var+1)); done

들어오는 트래픽은 cat /dev/GWDeviceServer 실행으로 표시할 수 있습니다. 이제 어떤 애플리케이션이든 GW Device Server에 연결된 시리얼 장치에 직접 연결된 것처럼 접근할 수 있습니다.

산업기술

  1. 산업용 PLC가 가변 속도 드라이브를 구동하는 방식
  2. PCB 비아 텐팅(Via Tenting) 설명: 이점, 공정, 모범 사례
  3. 클라우드 모니터링: 실시간 자산 관리를 위한 원격 제어 시스템
  4. 현대 산업을 위한 원격 생산 제어의 5가지 핵심 이점
  5. PLCnext 디바이스에서 grpcurl로 안전한 원격 gRPC 접근 구현
  6. SNMP로 PLCnext Control 장치 최적화: 실용 가이드
  7. PLCnext에서 클러스터 관리: Kubernetes로 산업 자동화 활용하기
  8. Tableau 대시보드로 PLCnext 실시간 모니터링하기
  9. PLCnext 클라우드 데이터로 Power BI 대시보드 만들기
  10. Azure IoT Hub의 PLCnext Control용 실시간 Grafana 대시보드 만들기