Freemodbus TCP 学习备忘

环境为 IAR,STM32F407+LAN8720(微雪)+FreeRTOS(9.0.0)+LwIP(2.0.3)+Freemodbus(1.5.0).

 

Freemodbus 几点小bug:

porttcp.c /prvxMBTCPPortReceive() 函数需要将error变量初始化赋值,不然会乱来,有些编译器会默认将新变量置0,有些不会。

err_t           error = ERR_OK;

所有的功能callback函数里的usRegAddress++;需注释掉,不确定程序里的多处usRegAddress++是什么用意,后续研究该地址+1的问题。

//usRegAddress++;

整理了一下Freemodbus TCP 接收发送主流程。

lwip tcp收到数据后,会调用注册过的prvxMBTCPPortReceive(),然后xMBPortEventPost()一个EV_FRAME_RECEIVED。

在eMBPoll()中get到EV_FRAME_RECEIVED后,会整理一下接收数据,然后post EV_EXECUTE。

在eMBPoll() 中EV_EXECUTE中会按ucFucntionCode进入xFuncHandler的不同函数里,处理不同的命令。

然后eMBTCPSend应答主站。

继续等待下一个Post给到EV_FRAME_RECEIVED。

 

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Freemodbus是一款开源的Modbus通信协议栈,该协议栈支持Modbus RTU、ASCII、TCP等多种通信方式。在工业控制领域中使用广泛。移植Freemodbus TCP通信方式时,需要进行以下步骤: 1. 选择平台:首先应该选择合适的平台,可以是单片机、嵌入式系统或PC等。选择平台后,应该下载相应的依赖文件和文档。 2. 配置网络:在移植过程中,需要配置网络。可以使用现有的网络模块或者开发者自己编写网络层代码。其中包括网络初始化、发送和接收数据等基本功能。 3. 移植驱动程序:驱动程序允许Modbus设备与通信设备(如串口、以太网等)进行通信。开发者需要根据平台的不同移植相应的驱动程序。 4. 移植核心代码:移植核心代码是移植Freemodbus TCP协议栈的最关键部分。应该仔细研读文档并将核心代码与网络层、驱动程序进行适当集成。 在移植过程中,应该充分考虑平台的特性和限制。移植前应该详细阅读文档并做好相应准备。成功移植Freemodbus TCP通信方式对于工业控制领域的应用意义重大,可提高设备之间的通信效率和准确性。 ### 回答2: Freemodbus TCP是一款使用C语言开发的开源Modbus TCP协议栈。它支持多个平台,并具有灵活性和可移植性。因此,将其移植到新的硬件或操作系统上是非常可行的。在移植Freemodbus TCP时,需要先了解所选硬件或操作系统的网络接口和TCP/IP协议栈的实现,以便适当配置代码。此外,还需要考虑其它因素,如字节序和内存对齐等问题,以确保代码在新的平台上能够正常运行。 移植Freemodbus TCP的步骤包括配置操作系统和网络接口、编译适当的库和源文件、将代码集成到目标系统中并进行调试。可以采用交叉编译的方式将代码编译为目标平台所需的格式,然后通过网络或USB等渠道将代码上传到目标系统中进行测试。在测试过程中,需要检查代码是否可以正常连接到Modbus TCP设备,并正确传输数据。此外,也需要检查代码的处理效率和资源占用情况,以确保它可以在目标平台上高效运行。 总之,移植Freemodbus TCP可以扩展该协议栈的可用性,并使之适应更广泛的硬件和操作系统平台。尽管这需要进行一些配置和调试,但它可以大大提高系统的可靠性和性能,并为用户提供更好的使用体验。 ### 回答3: FreeModbus是一个开源的Modbus协议栈,支持RTU、ASCII和TCP链接,广泛用于工业自动化和控制领域。在很多场景下需要将FreeModbus移植到各种嵌入式平台上,例如ARM、AVR、PIC等。而本文主要介绍FreeModbus TCP移植的相关内容。 FreeModbus TCP的移植可以分为三个步骤:端口移植、硬件适配和功能实现。 首先是端口移植。FreeModbus TCP的实现和其它协议栈一样,需要调用底层的网络协议栈接口来实现IP协议通信。因此,需要根据不同的嵌入式平台进行网络接口相关的代码移植工作。如下图所示: ![FreeModbus TCP移植示例](https://cdn.jsdelivr.net/gh/stevenli91748/MediaServer/images/FreeModbus.png) 第二个步骤是硬件适配。由于不同的嵌入式平台所使用的硬件设备也不同,有些平台需要做一些额外的硬件适配工作,如修改RS485驱动芯片的控制信号等。 最后是功能实现。FreeModbus TCP的主要功能包括客户端和服务器端的实现,需要根据实际需要进行相应的功能移植。其中,客户端主要负责向服务器端发送请求数据,而服务器端则需要负责接收和响应请求数据。 总结起来,FreeModbus TCP移植需要考虑的主要问题包括端口移植、硬件适配以及功能实现。当然,在具体实现过程中还需要考虑到数据结构定义、调试等问题,需要充分了解自己的嵌入式平台和相关的网络协议栈知识。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值