[850io] Sn_IR_CON , 통신 에러 관련

안녕하세요.

  1. if(getSn_IR(sn) & Sn_IR_CON)
    {

    	setSn_IR(sn,Sn_IR_CON);
     } 
    

    이게 어떠한 역활을 하는지 궁굼합니다.

  2. 산업용 pc → 스위칭 허브 → 2개 제품에(850io 보드 추가 하여 사용) 통신을 하고 있습니다. 1:2 입니다.

산업용PC에서는 PLC1 ip 설정, PLC2 IP 설정 따로 설정을 하였습니다.
저의 제품 PLC1(850io 추가된 것 ), PLC2 (850io 추가된 것 ) 에는 IP, MAC, GATEWAY, PORT 따로 설정했습니다.
저의 제품과 스위칭 허브를 전원 on/off 하다가 이상한점을 발견했는데 산업용PC에 보면 PLC1 데이터값이 PLC2에 똑같은 값을 표시하고 있습니다. 정상동작이면 PLC1, PLC2에 각기 다른 데이터가 들어와야 하는데 말이죠 지금 사진을 보면은 PLC1, PLC2 IP 같아서 사진처럼 나오는것 같습니다.
이게 스위칭 허브 문제때문에 그럴수도 있는건가요?
KakaoTalk_20180320_130956784|690x388](upload://1ecTpnn3EhX2TXRjnJdEO3Vznjk.jpg)

1번은

Interrupt Register 상태를 가져와서 그중 Connection interrupt register의 상태를 확인하는 부분입니다.
정상적으로 커넥션이 완료되면 Sn_IR_CON 에 해당 하는 비트가 1로 바뀝니다.
그 비트에 setSn_IR로 다시 1을 써주면 해당 인터럽트 레지스터가 초기화 되구요.

감사합니다.

안녕하세요.
위즈네트 입니다.

1번은 W5500소켓 인터럽트는 인터럽트가 발생하면 자동 Clear가 되지 않습니다.
그래서 setSn_IR을 해줘서 인터럽트 Clear를 해주는 것입니다.

2번은 제가 봤을 땐, 스위칭 허브의 문제라고 보긴 어렵습니다.
스위칭 허브는 단순 데이터 1:1로 받아와서 그대로 전달해주는 기능을 합니다.
해당 문제는 MCU의 코드 버그쪽으로 의심이 됩니다.

일단 기본적으로 W5500이 처음에 initializing을 할 때 반드시 W5500에 리셋을 해준 뒤 동작시키는 것을 추천드립니다. 혹시라도 W5500이 정상적으로 Reset이 걸리지 않은 상태에서 initial상태로 들어가면 원하는 동작이 되지 않을 수 있습니다.

감사합니다.

답변 남겨주셔서 감사합니다.

initializing 할 때 리셋을 2ms를 합니다.
코드 버그 의심이라면 코딩된 내용을 보여드리고 싶은데 혹시 개인 메일을 알려주시면 감사하겠습니다.
initializing 하는 부분과 소켓관련된 부분 및 receive , send 관련 부분을 보내드리겠습니다.

네 일단 보내주세요.
동작부분 전체를 보내주셔야 할 것 같습니다.
현재로선 send, receiver는 잘되는 것 같은데, MCU 내부 코드쪽 소켓 핸들링 쪽에서 문제가 발생한 것같은 느낌입니다.
edward@wiznet.io

다만, 코드상의 문제를 못찾는다면, 해당 장비 전체의 동작과 코드를 검토해야합니다.

감사합니다.

방금 메일 보냈습니다. 확인부탁드립니다. 감사합니다.

혹시 WIZ850io의 네트워크 정보가 저장되는 변수의 값이 중복으로 읽히는 것 아닌가요?

구성은 각 WIZ850io마다 설정하는 네트워크 정보 값을 각기 다른 변수 값에 저장하고 사용하시지 않나요?
WIZ850io는 SPI통신으로 단순 MCU로 부터 네트워크 정보를 받아들이고 동작하는 것 밖에 없습니다.
이미 칩으로 내부 동작이 구성 되어있기 때문입니다.

그러니 MCU로 부터 중복된 네트워크 값이 들어가는 것이 아닌가 하는 생각이 듭니다.

각 WIZ850io마다 동작은 같은 함수를 사용하더라도 네트워크 정보 값은 각가 다른 변수로 저장하여 동작할 수 있게 분리하시고, 내부 코드 측에서는 변수가 혹시나 중복되게 값을 읽어오지는 않는지 체크해보시길 바랍니다.

보내주신 코드는 단순 recv / send에 MODbus용 프로토콜 제어쪽이라 제가 볼게 없네요…

감사합니다.

답변주셔서 감사합니다. 방금 메일로 답변 드렸습니다. 확인부탁드리겠습니다.
감사합니다.

안녕하세요.
말씀과 같이 해보았지만 버그가 없어지지가 않습니다.
네트워크 1 정보, 네크워크 2 정보 현재 이렇게 나누어져 있던걸 네트워크 1로만 값을 저장하고 제품 하나면 연결 하여 전원을 ON/OFF 했습니다. 하지만 버그가 나타나는데 … 또 다른 방법이 없을까요 ?

안녕하세요.

지금으로썬 해당 버그가 MCU 동작에서 버그가 생겼을 것이란 생각이 드네요;
아니면 순차적으로 회로랑 PCB부터 검토를 시작해야할 것 같네요.

일단 메일에서 설명드렸던 바와 같이 해당 Flag가 정상적으로 세팅되는지랑, 네트워크 세팅들이 정상적으로 되는지 디버그 메세지로 계속 모니터링 확인이 필요할 것 같습니다.

문제를 다시 짚어봐야겠네요.
말씀하신 문제는, PLC1과 PLC2를 동시에 사용했을 때, 같은 네트워크 정보가 등록되는 문제 아닌가요??
안되시는 문제는 자세하게 다시 짚어주시면 좀 더 도움이 될 것 같습니다.

감사합니다.

답변주셔서 감사합니다.
PLC1 과 PLC2를 동시에 사용했을경우와 하나만 사용했을경우 버그가 나타납니다.
말씀해주신 flag와 네트워크 세팅을 보았지만 정상적으로 나타납니다. …
혹시 mac 정보와 dns 관련이 없는건가요 ??

image

안녕하세요.

그 버그라는 것이 동시에 사용했을 때, 같은 네트워크 정보가 2개의 장비에 동시에 설정이 되는 문제 아니었나요??

하나만 사용했을 때도 동일한 버그 현상이 나타난다는 것이 이해가 안됩니다.

설명해주신 것을 보면 PLC1 데이터 값이 PLC2에 똑같이 값을 표시하고 있다는데, PLC1 하나만 사용하고 PLC2는 사용하지 않는데도 똑같은 값을 표시한다는 말씀이신가요??

제가 말한게 맞다면, 다른쪽 문제로 보여집니다…

답변주셔서 감사합니다.
네 맞습니다…
그렇다면 산업용pc를 의심 해봐야 하는건가요 ??
허브를 거치지 않고 직접 연결해도 이런문제가 나타납니다.
아래 그림을 보시면


하나면 연결을 한 경우 입니다.

하나면 연결을 했는데 plc1데이터가 plc2에 나타납니다.

안녕하세요.

그러면 보드 문제라고 보긴 어렵습니다…

말씀하신대로 산업용 PC나 허브를 교체해서 테스트해보시는 방법이 필요합니다.

  1. 허브를 교체 후 테스트해도 동일한 증상이 나타나는지 확인.
    → 만약 동일한 증상이 나타난다면 산업용 PC측에서 데이터를 어떻게 처리하는지 알아야 할 것 같습니다.

감사합니다.

안녕하세요. 답변주셔서 감사합니다
보드 문제라고 보긴 어려운 이유가 있습니까??

이전에 설명드렸바와 같이 PLC1, PLC2 2개를 동시에 사용했을 때의 문제라고 가정하고 테스트를 진행습니다. 이 경우 보드의 문제라고 크게 생각이 됩니다. 근데 이 경우 PLC1하나만 사용하면 문제가 없어야 합니다.

근데 PLC1만 사용했을 때도 같은 문제가 나온다는건 완전 다른 이슈입니다.
PLC1, 2에서 데이터를 줘도 그걸 산업용 PC에서 디스플레이를 잘못하고 있는걸로 보여지기 때문입니다.

그래서 허브 쪽에서 제대로 데이터가 전달되는지 확인이 필요하고, 그 이후 산업용 PC에서 데이터를 어떻게 받아 디스플레이 하는지 확인이 필요합니다.