WIZnet Developer Forum

Wiz108sr관련

수고하십니다.
wiz108sr을 사용하고 있는데 문의사항이 있어서요.
현재 Modbus TCP를 사용하려고 합니다. 그런데 rs485측에서 데이터 수신 및 송신은 잘 이루어지는데 wireshark로 데이터를 확인해보니 터치제품(Modbus TCP server)으로 통신하는 것과 wiz108sr이 통신하는 내용이 다르네요. 통신이 이뤄지지 않습니다. 문제를 해결할 수 있는 방법이 있는지 궁금합니다.
빠른 답변 바랍니다.
그럼 수고하세요.

안녕하세요.
WIZ108SR은 Serial to Ethernet 모듈 중 RS-422/485 통신 장치와 TCP 데이터 전송 장치 간의 데이터 송/수신을 지원하기 위한 제품으로써, 양 단 간 데이터 전송 기능을 담당합니다.

언급하신 내용만으로 정확한 제품 사용 구조를 알 수는 없습니다만,
Modbus TCP 제품군은 단순한 Serial Data를 전송하는 것이 아니라 Modbus TCP protocol로 serial data를 전송하여 서로 통신하도록 구현되어 있을 것으로 추정됩니다. 때문에 단순 serial data를 전달하는 WIZ108SR과 Modbus TCP 제품군 간의 통신이 이루어질 수 없을 것 같습니다.

이를 위해서는 WIZ108SR에 연결되는 serial 장치가 단순 Modbus 데이터가 아닌 Modbus TCP 데이터를 보내야 할 것으로 생각되며 단순 serial 데이터 (Modbus RTU/ASCII data ?) 를 전송하여 Modbus 통신을 수행하기 위해서는 Modbus TCP to RTU/ASCII gateway 장치를 활용하셔야 할 것으로 생각됩니다.

위즈네트에는 현재 Modbus TCP to RTU/ASCII gateway제품은 판매하지 않습니다.
감사합니다.

혹시 wireshark로 저장한 파일이 있는데 확인 가능하신지요? 현재 scada용 프로그램으로는 연결이 되는데 modbus poll이란 프로그램으로는 연결이 안돼서 그렇습니다.
이미 보드 설계를 해서 답을 찾아야해서요. 테스트로 scada용으로 확인을 했는데 실제 구현하는 쪽에서 사용하는 프로그램에선 통신이 되지않아 그렇습니다.
메일을 알려주시면 wireshark로 저장한 파일을 보내드리겠습니다.
그럼 수고하세요.

앞서 언급 드린대로 WIZ108SR은 serial (422/485) to Ethernet 기능, 즉 데이터 전송 만을 담당하는 제품입니다.

scada용 프로그램에서 보낸 데이터와 modbus poll이란 프로그램에서 각각 보내오는 데이터의 의 포멧이 다를 수 있습니다. 하지만 WIZ108SR은 데이터가 Modbus TCP 포맷에 맞는지와의 여부와 관계 없이 데이터 전달을 담당하기 때문에 각각의 프로그램에서 보내진 데이터가 올바르게 TCP로 보내졌는지의 여부만이 모듈의 정상 동작 판단의 기준이 됩니다.

만약 제품의 검증이 필요하시다면 해당 프로그램(scada용 프로그램 / modbus poll 프로그램) 에서 전송을 위해 만들어지는 serial data와 wireshark를 통해 잡아낸 TCP 패킷에 포함된 데이터가 동일한지를 비교해야 합니다.보내진 serial data가 modbus TCP server와의 통신에 적합한 데이터인지는 저희가 알 수 없는 내용입니다.

따라서 위 서술 내용에 언급된 serial data와 TCP 패킷의 비교 결과를 알려주시면 저희 WIZ108SR 모듈의 동작에 문제가 있는지 확인 가능할 것으로 생각됩니다.

현재 테스트한 결과 정상적으로 동작하는 TCP(wireshark)를 보면 Query(Modbus/TCP)와 Response(Modbus/TCP)가 한 번씩 이루어지고 있습니다.
wiz108sr로 연결하여 나오는 것을 보면 Modbus/TCP Query 1회에 TCP로 10회정도 데이터를 주고 받습니다. 이 10회 동안 주고 받은 데이터를 보면 1회의 Query와 Response에서 나오는 데이터와 동일합니다.

위의 내용으로 볼때 패킷이 한번에 나가지 않고 몇개씩 나뉘어서 나가는게 문제인거 같습니다. 실제 응답하는 패킷의 데이터를 모아서 보면 정상데이터가 나갑니다. 이 문제를 해결하기위해선 데이터를 나눠서 보내지 말고 한 번에 응답을 해줘야 받는 쪽에서 정상적으로 데이터 분석을 할 것으로 보입니다.

이 문제를 해결할 수 있는지 궁금합니다. 제 생각인데 방법으로는 serial쪽으로 들어오는 데이터(응답데이터)가 모두 들어온 경우 TCP로 응답을 하는 게 맞을 거 같은데요. serial port로 수신데이터가 5msec이상 들어오지 않을 경우를 데이터 수신완료로 보고 데이터를 TCP로 전송할 수 있는지요… 485이기때문에 반이중이라 가능할 것같은데요
아니면 다른 방법이 있으면 알려주시기 바랍니다.

그럼 수고하세요.

데이터가 나뉘어 나가는 현상 때문에 발생하는 문제라면 Configuration tool을 통해 Data packing condition을 조정하는 방법이 해결책이 될 수 있을 것으로 생각됩니다.

이 옵션을 조정하여 일정 시간 / 데이터의 크기 / 특정 문자(종료문자 등)로 데이터를 구분하여 한 번에 전송 가능합니다.
상황에 맞게 옵션을 변경하여 테스트 해 보시기 바랍니다.


감사합니다.
언급한 내용을 토대로 수정을 해서 테스트하는데 에러없이 동작잘합니다.
그럼 수고하세요.

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