四、流程
4.1、初始化配置流程
本协议栈所有配置参数都位于FreeModbus\modbus\include\mbconfig.h
,目前协议栈支持主机及从机两种模式,通过FreeModbus\port\port.h
中宏定义
MODBUS_MASTER_MODE\MODBUS_SLAVE_MODE
选择。从机支持Modbus RTU 、Modbus ASCII 及Modbus TCP 3种模式,主机现在只支持常用的Modbus RTU模式。在使用主机的过程中,用户需要对广播的转换延时时间、命令响应超时时间及从机数量做以配置。需要注意的是,目前协议栈只支持从机地址连续,并且起始地址从1开始。
4.2、正常使用流程
这里只介绍主机的正常使用流程,在使用主机前,需要先把协议栈移植到自己的项目中去,包括上述的软件及硬件部分,移植完成后的使用流程如下
1、调用eMBMasterInit
方法初始化Modbus主机协议栈,主机涉及到的一些硬件就在这个时候做了初始化
2、调用eMBMasterEnable
方法启动Modbus主机
3、通过在线程或者定时器轮询调用eMBMasterPoll
方法,轮询周期决定了命令的响应时间。
4、调用主机请求API方法,设定一定的请求超时时间,直到方法有结果后才会返回。如果方法执行成功并且命令是读命令,可以通过查看Modbus主机的数据缓冲区,获取最新从机数据。
4.3、异常处理流程
异常处理主要出现在主机正常使用过程中,所有的主机请求API的错误码都在第三章开头已经做以描述,针对的这些错误码,用户需要根据自己的产品特征去完成不同的动作。建议用户自己封装实现主机请求方法的重发机制,这样实现方式比较灵活,一般是在接收到帧数据出错及命令响应超时的错误码时需要重发,重发次数自动加一,如果重发次数超过设定值则认为从机掉线,以后所有只要是发给这个从机命令都被提前拦截掉;如果第二次重发命令响应成功,则自动清零该从机重发次数。
上述所有功能可以利用主机请求方法或者使用FreeModbus\port\portevent_m.c
中的回调接口来实现,用户可以根据自己的需求灵活选择。
FreeModbus主从机协议栈从入门到精通
FreeModbus协议栈从入门到精通,含STM32+FreeRTOS主站、从站例程DEMO,注释详尽
文件 | 说明 |
---|---|
freemodbus-v1.6.zip | FreeModbusV1.6源码 |
FreeModbusMasterSlave(Rev1.0.0).zip | 笔者移植的STM32+FreeRTOS+FreeModbus Master Slave代码 |
ModbusSlave 7.0和ModbusPoll_7.0软件注册码.zip | FreeModbus Master Slave调试工具 |
FreeModbus V1.6 主机使用说明.md | FreeModbus 主机使用说明文档 |
FreeModbus 从机流程图.vsd | FreeModbus 从机流程图 |
FreeModbus 主机流程图.vsd | FreeModbus 主机流程图 |
Modbus应用协议.doc | 笔者整理的 FreeModbus 协议文档 |
文件结构.png | 笔者移植的FreeModbus协议工程文件结构图 |
FreeModbus Datasheet | 笔者搜集 FreeModbus 协议文档 |
教程获取,非免介意勿扰
https://download.csdn.net/download/qqshare/90230889