[研电赛技术支持] GD32移植MODBUS TCP

[复制链接]
399|0
wowu 发表于 2025-8-12 20:18 | 显示全部楼层 |阅读模式
MODBUS协议栈使用的freemodbus

硬件以太网芯片使用的CH395Q

单片机GD32

1、主程序中调用初始化函数

eMBTCPInit(NULL);

eMBEnable();


并修改内部相关接口。主要有

eMBTCPStart;

eMBTCPStop;

eMBTCPReceive;

eMBTCPSend;

如果一直启动ModBus通讯,前面两个函数可以不用改。

2、接收地址绑定

在 eMBTCPReceive 中的

xMBTCPPortGetRequest( &pucMBTCPFrame, &usLength )


添加自己的网卡接收到的TCP数据指针与接收到的TCP数据长度。

3、发送地址绑定

在 eMBTCPSend 中的

xMBTCPPortSendResponse( pucMBTCPFrame, usTCPLength )


添加自己的网卡发送函数,数据指针为pucMBTCPFrame,长度为 usTCPLength 。

这样,TCP收发接口就做好了,以上两个函数中网卡套接字收发数据另外单独编写,根据自己实际使用的以太网芯片来写,例如CH395,这里不单独说。

4、事件触发

在自己的网卡接收函数中发送modbus事件信号,

( void )xMBPortEventPost(EV_FRAME_RECEIVED );


表达设备收到TCP数据。

5、轮询任务

在自己的程序任务或者是while(1){}中调用eMBPoll();

进行TCP事件获取,xMBPortEventGet( &eEvent ) == TRUE ;

当收到TCP数据之后就可以对应启动xFuncHandlers.pxHandler对应的命令码功能函数,主要功能码与RTU一样
————————————————
版权声明:本文为CSDN博主「RebuildAll7」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/CSDN_XIAXIA/article/details/129400541

您需要登录后才可以回帖 登录 | 注册

本版积分规则

136

主题

4344

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部