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