WIZnet Developer Forum

사용중 접속 튕김 현상

안녕하세요
W3150A+와 RTL8201BL을 연결하여 사용하고 있는데요
전원 투입 후 접속은 정상적으로 이루어 지고 있습니다.
통신도 잘 이루어 지고 있구요

그런데요, 접속이 되어 있는 상태에서 한동안 사용하지 않고 있다가
다음 액션을 위해 커맨드를 보내면 접속이 끊어진 상태가 되어 있습니다.
다시 리부팅을 하면 정상적으로 동작이 되는 데요~
아무런 감이 잡히지 않아 문의를 드립니다.

바로 바로, 수시로 발생하는 문제는 아닌데 계속 발생하고 있어서요
조언 부탁드립니다.

혹시요~ 칩셋 설정을 만져줄수 있는 프로그램 같은 것이 따로 있나요?

한정수 드림

문의 하신 사항 아래의 질문에 대해 질문 드립니다.

[quote]그런데요, 접속이 되어 있는 상태에서 한동안 사용하지 않고 있다가
다음 액션을 위해 커맨드를 보내면 접속이 끊어진 상태가 되어 있습니다.[/quote]

접속이 끊어지는 것이 PHY(RTL8201BL)쪽이 Link가 끊기는 것인가요?
아니면 W3150A+를 TCP mode로 사용중에 TCP Connection이 끊기는 것인가요?

PHY쪽 링크가 나가는 것이라면 W3150A+와 RTL8201BL의 Hardware Connection이나 회로도 첨부 부탁드립니다.
W3150A+를 사용하는TCP/UDP mode 쪽의 문제라면 사용하시는 App.이나 설정값에대한 설명 부탁드립니다.

감사합니다.

답변 주셔서 감사합니다.
TCP Mode로 사용하고 있습니다.
정확하게는 아직 파악하고 있지 않아서 도면과 헤더, 소스파일을 올립니다.
조언 부탁드립니다.

한정수 드림
WrxIII_Tcp_Ip.c (23.6 KB)
Defines.h (47.3 KB)
WRX-3-DSP & FPGA_VER02_130619.pdf (155 KB)

혹시나 해서 Lan Transformer 데이터 시트도 올려 드립니다.
지적 사항이 있으시면 첨언 부탁드립니다.
감사합니다.

한정수 드림
J1A121ZCD.pdf (200 KB)

먼저 네트워크 구성이 어떻게 되어있는지 설명 부탁드립니다.
그리고 '튕김 현상’이라는 것이 W3150의 status register가 closed 된 것인지(상대방의 disconnect 또는 Fin packet에 의한), timeout이 발생한 것인지 확인 해보세요.

그리고 테스트방향을 아래와 같이 잡으시면 좀 더 빠를 것 같네요.

  1. 3150의 네트워크 세팅이 날라가서 연결이 끊긴 거라면,
    접속이 끊긴 다음 W3150으로 ping테스트를 해보세요. ping reply가 없다면 네트워크 세팅이 변경이 되거나 리셋이 됬다는 의미로 볼수 있습니다.

  2. W3150이 서버든 클라이언트든 상대방과의 TCP connection이 끊긴 거라면
    연결이 끊어졌을 때 status register를 확인해보세요.
    만약 0x17(established)라면 물리적으로 끊긴 후 time out이 발생하여 close 됩니다.
    혹은 상대방에 의해 연결이 종료되는 것인지 확인해보세요.

그리고 가능하면 wireshark같은 패킷캡쳐 프로그램으로 주고 받는 패킷을 잡아보는게 문제를 확인하기 쉬울 겁니다.

답변 감사합니다.

사내 테스트 중인데요
pc와 제품을 크로스 케이블로 연결한 상태이며 현재로선 접속이 끊어지는 현상은 없습니다.
Socket 0 Status를 확인한 결과 0x17 이구요 이 상태에서 통신은 이루어지고 있습니다.

현장의 상황에선 ping reply가 없는 것 같습니다.
상대방에서 네트워크 세팅을 변경하지 않고 고정으로 사용을 하고 있는 상태인데요

PHY(RTL8201BL) 쪽인지 W3150A+ 쪽인지 감이 잡히지 않네요
W3150A+ 쪽은 괜찮은 것 같은데요
물리적으로 떨어진거라면 다시 붙어야될텐데 ping reply가 없구요

조언 부탁드립니다.

한정수 드림

정상적으로 IP address와 같은 Network Configuration이 완료되어진 상태라면
W3150A+는 펨웨어오 같은 S/W가 동작하지 않아도 ping replay되어야 합니다.

말씀하신대로 물리적으로 이상이 있을 수도 있고,
펨웨어 상에서 기대하신 것과 달리 W3150A+의 Address관련 Register에 어떠한 값이
Write되어 Network Configuration이 변경된 경우가 발생할 수도 있습니다.

Ping이 안되는 이유가 PHY쪽인지 아니면 펨웨어서 문제가 되는 부분은 없지 확인 하셔야 할 것같습니다.
감사합니다.

답변 주셔서 감사합니다.
좀더 확인해봅도록 하겠습니다.
도움주셔서 감사합니다.
한정수 드림

귀한 답변 주심에 감사드립니다.
든든한 힘이 되어 주시네요.

다름이 아니라 점검중에 궁금한 점이 세가지가 있어서 여쭙니다.
첫째는, 초기 전원을 투입한 뒤
UI에서 Connect 하면 socket0 status = 0x00
이후, UI에서 명령 커맨드를 보내면 socket0 status = 0x17 (established) 가 됩니다.
그런데 Close 명령을 보내거나, 랜 케이블을 제거해도 socket0 status = 0x17로 변화가 없습니다.
socket0 status의 레지스터 상태값의 변화가 맞는 것인지요?

둘째는, 정상적으로 TCP Mode로 Connection이 되어 있는 상태에서
즉, UI에서 접속이 되어 운영되고 있는 상태에서 -> socket0 status = 0x17 (established 상태)
랜 케이블을 뺏다가 십여분 후에 다시 랜 케이블을 연결한 후 명령 커맨드를 주면 정상적으로 동작을 합니다.

그런데, UI에서 Connection이 되어 운영되고 있는 상태에서 -> socket0 status = 0x17 (established 상태)
랜 케이블을 뺏다가 다시 랜 케이블을 연결한 후 Connect를 시도하면 이후로는 재 접속이 되지도 않고 재 접속할 방법이 없습니다.
어떻게 하면 전원을 껏다 키지 않고 재 접속이 되도록 할 수 있는지요

셋째는, 물리적으로 랜 케이블이 빠지거나 하면 일정시간 이후 자동으로 Close 된다고 하는데요
자동으로 Close 된 상태를 status 레지스터에서 확인 할 수 있는지요~

조언 부탁드립니다.

한정수 드림

  1. 물리적인 연결이 끊긴 이후 데이터 전송이 없을 경우 established로 유지되는 것이 맞습니다.
    그러나 데이터 전송이 한번이라도 있을경우 ACK를 받지 못하므로 RCR, RTR 세팅에 의한 재전송이 일어난 이후 time out이 발생하여 close 되게 됩니다.

  2. 먼저 W3150과 상대방이 close가 되었는지요??
    close가 안된 상태라면 둘 다 close가 되야지 접속이 가능하겠죠??
    만약 둘다 close가 된 상태라면 왜 안되는지는 상대방의 어플리케이션에 따라 달라질겁니다.
    예를 들어 window같은 경우 close 하게 된다고 해도 일정 시간동안 port번호를 기억하고 있습니다. 그렇기 때문에 동일 port로 접속이 불가능 하게 됩니다. 그리니 W3150의 펌웨어를 만드실때 재접속할 경우 sourse port번호를 바꿔서 접속을 시도해보세요(W3150이 client일 경우). 상대방이 client일 경우에도 동일하게 해보세요.

  3. 1번으로 답이 될겁니다.

주신 답변으로 여러 방면으로 시도하고 있습니다.
힘이 되어 주셔서 감사합니다.

W3150을 서버로, UI를 클라이언트로 붙여서 사용하고 있습니다.
UI를 붙였다가 Close를 보내면 UI도, W3150도 Close 됩니다.
그런데, UI에서 Close를 보냈는데 W3150이 Close가 안되는 현상이 관찰됩니다.
socket0 status = 0x17 (established 상태) 입니다.

UI를 다시 붙이려니 W3150이 Close가 되어 있지 않아서 붙지를 않는것 같습니다.
W3150을 껏다 키면 UI가 붙습니다.

socket0 status = 0x17 (established 상태) 입니다.

왜? 이런 현상이 생기는지 오리무중입니다.
이런 경우를 경험하신 사례가 있으신지요
조언 부탁드립니다.
감사합니다.
한정수 드림

아마도 W3150이 FIN packet을 받지 못해서 그런거 같은데요.
중간에 패킷이 손실 되었거나 그런경우로 보입니다.

Client에서 W3150으로 FIN을 보내면 W3150에서 FIN/ACK를 보냅니다.
Client에서는 이 FIN/ACK를 받지못하면 FIN을 재전송 하는 방법으로 바꿔보세요.

감사합니다.
약간씩 윤곽이 잡혀가는 듯 합니다.
주시는 도움이 큰 힘이 됩니다.

W3150쪽의 문제가 아닌 듯 합니다.

Client를 W3150에 붙인 후 Lan 케이블 빼거나, 접속을 불량하게 한 후에
Client에서 Close를 하면 Client는 Close 되었으나 실제 W3150은 Close가 되지 않은 상태가 됩니다.
그렇기 때문에 Client에서 W3150에 접속을 시도해도 붙지 않는 것 같습니다.

이때, Lan 케이블을 복원하고 W3150을 Close 시키고, 바로 Listen을 시킨 뒤 Client에서 재접속을 하면 잘 붙습니다.
W3150에서 Lan 케이블이 빠진 상태나 혹은, Lan 케이블이 연결되지 않은 상태를 확인 할 수 있는 방법이 있나요?
이러한 이벤트가 발생했을 때 W3150을 강제로 Close -> Listen 해주면 문제가 해결 될 것 같습니다.

이 부분에 대해 어떻게 보시는 지 조언 부탁드립니다.
감사합니다.

한정수 드림

LAN 케이블이 연결 되었는지 확인하기 위해서는 W3150이 아니라 PHY를 봐야 합니다.

phy를 내장하고 있는 W5000시리즈의 경우 W5100을 제외하고 phy status register가 있어서 이를 확인하거나
link연결이 되어있는지를 판단하는 pin이 있어 이를 보면 되지마 W3150은 phy가 없으므로 못한다고 보시면 됩니다.

즉, 아마도 phy에서 link pin이 있을 겁니다. 이를 MCU의 gpio로 연결하여 확인하면 물리적인 연결이 끊겼는지 확인이 가능할겁니다.

Copyright © 2017 WIZnet Co., Ltd. All Rights Reserved.