6970|4

1366

帖子

6

TA的资源

版主

楼主
 

GD32F350体验之九(freemodbus的使用) [复制链接]

本帖最后由 RCSN 于 2018-9-30 20:17 编辑

在前面已经说明了freemodbus在GD32的另类移植办法。接下来就是说明如何利用freemodbus这个抽象化的协议栈上,更快速地开发自己的通信应用部分。
Freemodbus在获取到一帧数据之后,如果功能码对应的上,则通过查表跳转到相对应的执行函数当中,比如写多个保持寄存器的功能码为0x16,则跳转到eMBFuncWriteMultipleHoldingRegister函数,
file:///C:/Users/RCSN/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg
这个写多个保持寄存器的函数接口就是抽象在freemodbus里面的,最终实现回调的还是就是寄存器的数据,寄存器地址,长度,还有读写模型。这个接口是针对对保持寄存器进行所有操作的通用接口。同样,线圈的也有相对应的通用接口,这里我使用的都是对保持寄存器的操作,故以此作为分析点。
file:///C:/Users/RCSN/AppData/Local/Temp/msohtmlclip1/01/clip_image004.jpg
既然freemodbus提供这个回调接口,那么我们就可以实现自己的应用部分,比如上位机下发时间设置参数,利用这个参数来修改RTC时间,或者上位机请求一次GD32的RTC系统时间,那么我们就返回参数。
file:///C:/Users/RCSN/AppData/Local/Temp/msohtmlclip1/01/clip_image006.jpg
图中的rtc_Time_Data_t全局结构体如下:
file:///C:/Users/RCSN/AppData/Local/Temp/msohtmlclip1/01/clip_image007.png
RtcSetup()函数接口是指RTC时间设置。内部代码如下:
file:///C:/Users/RCSN/AppData/Local/Temp/msohtmlclip1/01/clip_image009.jpg

此帖出自GD32 MCU论坛

最新回复

mark一下  详情 回复 发表于 2022-2-24 09:02
点赞 关注(2)
个人签名

1084534438 欢迎交流  [加油,一切皆有可能]

 

回复
举报

1366

帖子

6

TA的资源

版主

沙发
 
那么接下来我们来套鼓下上位机,楼主使用的是QT,当然上位机源码上,并没有使用类似的协议栈,协议的解析都是自定解析,数据的收发同样也没有用队列。当然并不影响使用。
我们用UI添加两个控件,一个是设置系统时间,一个是获取系统时间。

设置系统时间控件的处理接口如下,时间使用QT的QDateTime类,并将其转换为我们需要的时间结构体。按照modbus协议发送。
而usMBWriteHolding接口代码如下:
相对应的获取时间控件代码类似。按照modbus的协议进行发送



此帖出自GD32 MCU论坛
 
个人签名

1084534438 欢迎交流  [加油,一切皆有可能]

 
 

回复

1366

帖子

6

TA的资源

版主

板凳
 
那么有个问题,下位机上发的各类参数,上位机如何解析呢。通常来说,使用队列+超时检测是比较安全的解析,这样异步处理使得数据不会丢失。楼主在此为了方便,直接就是400ms超时检测串口的数据,然后在超时检测函数里面直接buf解析。
效果图如下:

此帖出自GD32 MCU论坛
 
个人签名

1084534438 欢迎交流  [加油,一切皆有可能]

 
 

回复

1366

帖子

6

TA的资源

版主

4
个人签名

1084534438 欢迎交流  [加油,一切皆有可能]

 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

5
 
mark一下
此帖出自GD32 MCU论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表