programing

무료 모드버스로 여러 클라이언트 호스팅

bestprogram 2023. 6. 6. 10:23

무료 모드버스로 여러 클라이언트 호스팅

저는 TCP를 통해 Modbus를 통해 PC와 통신하는 마이크로컨트롤러 관련 프로젝트를 진행하고 있습니다.제 플랫폼은 STM32F4 칩으로, RTOS 없이 C로 프로그래밍합니다.주변을 둘러보니 LwIP와 프리모드버스가 있었고 둘 다 잘 작동하도록 하는 데 꽤 성공했습니다.안타깝게도, 저는 지금 어떻게 대처해야 할지 모르는 몇 가지 문제에 부딪히고 있습니다.

연결을 설정한 다음 연결이 끊어지면(이더넷 케이블을 분리하여) 다시 연결할 수 없습니다(물론 다시 연결한 후에는).Freemodbus는 하나의 클라이언트만 허용하고 첫 번째 클라이언트는 여전히 등록되어 있습니다.연결을 시도하는 모든 새 클라이언트는 무시됩니다.TCP/IP 표준인 특정 시간 초과 기간이 지나야 첫 번째 클라이언트가 삭제됩니다.

내 생각은...

  1. 여러 고객을 처리할 Modbus 모듈이 필요합니다.통신 손실 후 새 클라이언트 요청이 수락되고 시간 초과로 인해 첫 번째 클라이언트가 삭제됩니다.

    • 이를 처리하기 위해 프리모드버스를 어떻게 수정합니까?밖에 예시들이 있습니까?제가 직접 해봤는데 규모가 꽤 큰 프로젝트인 것 같습니다.
    • 여러 고객을 처리하고 너무 비싸지 않고 사용하기 쉬운 좋은 Modbus 패키지가 있습니까?다양한 옵션에 대한 스레드를 여러 번 보았지만, 그 중 어떤 것도 제가 필요로 하는 것을 정확하게 충족시킬 수 있는지 모르겠습니다.저는 혼자서 그것을 찾는 데 어려움을 겪었습니다.대부분은 TCP를 지원하지 않고 클라이언트 하나만 지원하는 TCP를 지원합니다.일반적으로 여러 고객을 지원하는 것이 좋지 않습니까?
  2. PC에서 마이크로컨트롤러에 연결하는 방법에 문제가 있습니까?

    • PC가 다시 연결을 시도할 때마다 포트를 변경하는 이유는 무엇입니까?이전에 사용했던 포트를 그대로 유지한다면 문제가 없을 것입니다.
  3. 제가 통신을 끊으면 바로 고객을 프리모드버스에서 내려줘야 하나요?

    • 이것은 기준에 어긋나는 것처럼 보이지만 효과가 있을 수 있습니다.

저는 1 쪽으로 기울고 있습니다.특히 결국 여러 연결을 지원해야 하기 때문입니다.어떤 도움이라도 주시면 감사하겠습니다.

감사해요.

modbus 클라이언트 수에 제한이 있다면 새 연결이 도착할 때 이전 연결을 삭제하는 것이 modbus 구현 가이드(https://www.modbus.org/docs/Modbus_Messaging_Implementation_Guide_V1_0b.pdf) 에서 실제로 제안됩니다.

그럼에도 불구하고 승인된 연결 수를 초과하는 경우 메커니즘을 구현해야 합니다.이러한 경우 사용하지 않은 가장 오래된 연결을 닫는 것이 좋습니다.

그것은 나름대로의 문제가 있지만 모든 것이 타협입니다.

여러 클라이언트 지원 관련...modbus/rs 서버를 생각해보면 한 번에 하나의 마스터만 있을 수 있습니다.그런 다음 직렬 케이블을 TCP로 교체하면 클라이언트 하나만 지원하는 경우가 드물지 않고 프로그래밍이 더 쉬워지는 이유를 알 수 있습니다.그래도 귀찮습니다.

수행하는 작업에 따라 전체 modbus 프로토콜이 필요하지 않으며 필요한 부품을 구현하는 것은 매우 쉽습니다.물론 당신이 모든 것을 절대적으로 지지해야 한다면 그것은 다른 전망입니다.저는 무료 모드버스나 당신의 설정에 적합한 다른 라이브러리를 사용하지 않았기 때문에 거기서 제안을 할 수 없습니다.

매번 다른 TCP 소스 포트를 사용하는 PC와 관련하여 - 그것이 TCP가 작동하는 방식이며 사용자 측에 결함이 없습니다.동일한 소스 포트를 재사용할 경우 시퀀스 번호가 잘못되었기 때문에 도움이 되지 않습니다.

고객을 떨어뜨리는 것과 관련해서요.클라이언트를 삭제할 수 있지만 삭제하지 않는 것이 좋습니다.일부 클라이언트는 modbus 명령을 보내 연결이 실패했음을 알고 다시 연결하지만 명령을 다시 실행하지는 않습니다.그것이 그들의 문제일 수도 있지만 가능한 한 자주 보지 않는 것이 더 좋습니다.물론 배터리 수명과 같은 것들이 계산을 다르게 할 수도 있습니다.

언급URL : https://stackoverflow.com/questions/19170982/hosting-multiple-clients-with-freemodbus