W5500构建冗余网络的工业实践:深度剖析
W5500构建冗余网络的工业实践:深度剖析
W5500 기반 산업용 이중화 통신 설계 지침
Summary
산업 현장에서는 EMI, 전원 변동, 장거리 배선으로 인해 소프트웨어 TCP/IP 스택이 지연 변동과 교착을 유발할 수 있습니다. WIZnet W5500은 하드웨어 TCP/IP와 8소켓, 32KB 버퍼로 프로토콜 처리를 MCU에서 분리합니다. Heartbeat와 PHY 링크 검증을 결합하면 false connection을 빠르게 감지해 전환 실패를 줄일 수 있습니다.
1. 이 문서의 범위
대상 시스템
SCADA/변전소 원격 측정 장치
공장 자동화 설비(PLC 연동, 모션 제어 단말)
통신 가용성이 안전/품질에 직접 영향이 있는 장치
다루는 이중화의 종류
✅ 논리 이중화: 주/보조 서버·게이트웨이, 이중 세션(소켓) 운용
⚠️ 물리 이중화(케이블/포트 단선 대응)는 “확장 설계”에서 별도로 규정
2. 문제 정의(현장 관점)
2.1 현장에서 자주 발생하는 증상
TCP 재연결 지연(초 단위)
프로토콜 예외 처리로 MCU 제어 루프 지연
스택 교착/워치독 리셋
2.2 가장 위험한 함정: False Connection
소켓 상태는 ESTABLISHED처럼 보임
그러나 실제 데이터(페이로드)가 왕복되지 않음
→ 장애 감지가 늦고, 개입 타이밍을 놓침
결론: “소켓 상태만”으로 정상 판단하면 안 됨.
3. 설계 목표(한 줄 정의)
MCU는 제어에 집중
네트워크는 W5500이 처리
정상 판정은 ‘실데이터’로 확인
전환은 상태 머신으로 제어
4. W5500을 선택하는 기술 근거
Hardwired TCP/IP: TCP/UDP/IP/ARP를 하드웨어로 처리 → MCU 부하/지연 변동 완화
8 소켓: 주/보조/진단 채널을 분리 운용 가능
32KB 버퍼: 순간적인 재전송/지연 상황에서 상위 앱 영향 감소
5. 설계 요구사항
[R1] 정상 판정은 PHY + 소켓 + Heartbeat 3중 조건(AND)
[R2] 전환 시 disconnect → close 절차 및 반환값 검사
[R3] ISR은 플래그만, SPI 접근/전환은 메인 루프에서
[R4] 중요 레지스터는 write 후 read-back 검증 + 재시도
[R5] 논리/물리 이중화의 한계를 문서에 명확히 표기
6. 아키텍처
6.1 구성 요소 역할 분리
MCU
Health 판정(링크/세션/Heartbeat)
Failover 상태 머신 실행
제어/측정 태스크 수행
W5500
TCP/IP 하드웨어 처리
소켓 채널 제공
PHY 링크 상태 제공(PHYCFGR)
6.2 권장 소켓 할당
Socket 0: Primary 통신
Socket 1: Backup 통신(대기 또는 Probe)
Socket 2~: 진단/브로드캐스트/이중 보고(확장)
7. 정상 판정 규칙(가장 중요)
정상(Healthy)은 아래 3개가 모두 참일 때만 인정합니다.
PHY 링크 업
PHYCFGR의 링크 상태 비트 확인
소켓 상태 정상
Sn_SR == SOCK_ESTABLISHED(운용 모드에 맞게 조정)
Heartbeat 왕복 성공
PING 송신 → PONG 수신
타임아웃/연속 실패 횟수 기준 설정
권장: false connection 방지를 위해 “소켓만 정상”은 정상으로 판단하지 않음.
8. 인터럽트/루프 처리 원칙
ISR: fault_pending = 1 같은 플래그만 세팅
메인 루프: 플래그 확인 후 레지스터 읽기/쓰기 및 상태 머신 실행
효과
잡음으로 이벤트가 몰려도 ISR 과부하로 제어 루프가 흔들리는 문제를 억제
FAQ (W5500 중심)
Q1. 왜 W5500을 선택합니까?
W5500은 Hardwired TCP/IP로 프로토콜 처리를 MCU에서 분리합니다. 결과적으로 CPU 점유율과 지연 변동을 줄이는 방향이며, 현장의 예외/재전송 상황에서도 제어 태스크의 결정론을 유지하는 데 유리합니다. 8소켓과 32KB 버퍼는 주/보조/진단 채널을 분리 운용하도록 설계를 단순화합니다.
Q2. MCU와 연결 방식은?
MCU는 SPI로 W5500을 제어하고, 필요 시 INTn을 EXTI로 연결합니다. 링크 확인은 PHYCFGR 기반이 기본입니다. 보드 환경(배선/접지/디커플링)에 따라 SPI 안정성이 달라질 수 있으므로, 중요 레지스터는 write 후 read-back 검증을 권장합니다.
Q3. 이 설계에서 W5500의 역할은?
W5500은 TCP/IP 처리를 하드웨어로 수행하고, 소켓 기반 채널을 제공합니다. MCU는 PHY/소켓/Heartbeat를 조합해 Health를 판정하고, Failover 정책(전환 조건, 복귀 정책)을 상태 머신으로 실행합니다. 즉 “통신 처리”와 “판단/정책”의 역할 분리를 전제로 합니다.
Q4. 초보자가 구현할 때 가장 어려운 부분은?
드라이버 호출보다 “정상 판정 규칙”과 “전환 상태 머신”이 어렵습니다. 소켓 상태만으로 정상 판단을 하면 false connection을 놓치기 쉽습니다. PHY 링크(PHYCFGR), 소켓 상태, Heartbeat 왕복을 동시에 만족하는 규칙을 먼저 고정하고, 절체 순서(disconnect/close/connect)와 반환값 검사를 포함해 상태 전이를 명확히 정의하는 것이 중요합니다.
Q5. W5500과 LwIP+외부 PHY의 차이는?
LwIP+PHY는 유연하지만 프로토콜 처리·예외 케이스를 MCU가 직접 부담하므로 CPU 점유율과 지연 변동이 커질 수 있습니다. W5500은 하드웨어 스택으로 이 부담을 분리해 결정론을 확보하는 방향입니다. 단, 케이블 단선까지 포함한 완전 이중화는 듀얼 NIC 또는 링 토폴로지 같은 물리 설계가 추가로 필요합니다.

