我正在开展一个项目,该项目涉及通过 TCP 上的 Modbus 与 PC 通信的微控制器。我的平台是 STM32F4 芯片,用 C 语言编程,没有 RTOS。我环顾四周,发现了 LwIP 和 Freemodbus,并在让它们都工作时取得了相当大的成功。不幸的是,我现在遇到了一些我不确定如何处理的问题。
我注意到,如果我建立连接,然后失去连接(通过拔下以太网电缆),我将无法重新连接(当然,一旦我重新插入)。Freemodbus 只允许一个客户端并且仍然注册了第一个客户端。任何尝试连接的新客户端都会被忽略。在特定的超时时间之后,它不会丢弃第一个客户端,据我所知,这是一个 TCP/IP 标准。
我的想法是...
我需要一个可以处理多个客户端的 Modbus 模块。通信丢失后的新客户端请求将被接受,第一个客户端最终将由于超时而被丢弃。
- 如何修改 Freemodbus 来处理这个问题?那里有例子吗?我自己研究过,它似乎是一个体面的项目。
- 是否有任何好的 Modbus 包可以处理多个客户端、不太贵且易于使用?我已经看过几个关于各种选项的线程,但我不确定它们中的任何一个都完全符合我的需要。我很难自己找到任何东西。大多数不支持 TCP,而那些只支持一个客户端。支持多个客户通常是个坏主意吗?
我从 PC 连接到微控制器的方式有问题吗?
- 为什么 PC 每次尝试重新连接时都会更改端口?如果它保持以前使用的相同端口,这将不是问题
我应该在停止通信后立即从 Freemodbus 中删除客户端吗?
- 这似乎违反了标准,但可能会奏效。
我倾向于1。特别是因为无论如何我最终都需要支持多个连接。任何帮助,将不胜感激。
谢谢。