Modbus协议分析
Modbus是一种总线协议,主要用于工业领域的简单协议。主要有如下优点,无版权要求,易于部署和维护,修改没有很多限制。
Modbus有以下主要方式:
协议类型
Modbus RTU
Modbus ASCII
Modbus TCP
Modbus Plus
Modbus是主从方式通信,不能同步进行通信,总线上每次只有一个数据进行传输,即主机发送,从机应答;主机不发送,总线上就没有数据通信。
对于我们的网关系统来说,主要使用Modbus RTU/TCP两种协议。下面对常用的Modbus RTU/ASCII/TCP三种协议进行简要的介绍。
Modbus RTU
Modbus ASCII
Modbus TCP
代码移植
port.c文件
禁用和开启中断有两种方式,但__set_PRIMASK(1)
和__set_PRIMASK(0)
是一个更底层的操作,直接操作处理器寄存器;而__disable_irq()
和__enable_irq()
是一个更高层次的CMSIS函数,它调用了__set_PRIMASK(1)
和__set_PRIMASK(0)
。在大多数情况下,使用__disable_irq()
和__enable_irq()
更容易理解和维护,因为它是一个标准函数,而且代码可读性更强。
- 方式一
#define ENTER_CRITICAL_SECTION( ) ( __disable_irq()) /*禁用全部中断*/
#define EXIT_CRITICAL_SECTION( ) ( __enable_irq() ) /*开启全部中断*/
- 方式二
#define ENTER_CRITICAL_SECTION( ) __set_PRIMASK(1) // 关闭总中断
#define EXIT_CRITICAL_SECTION( ) __set_PRIMASK(0) // 开启总中断
代码实测
由于移植的是modbus从站程序,需要使用modbus poll工具进行测试,首先我们需要配置通信的接口,这里使用的是COM3口,配置图如下。
参考博客
https://www.cnblogs.com/ppqppl/articles/17001861.html
https://www.ixigua.com/home/76094120606/video/?preActiveKey=hotsoon&list_entrance=userdetail
https://blog.csdn.net/qq_42680253/article/details/101022511
https://blog.csdn.net/Danieldexter/article/details/113472183
http://forum.eepw.com.cn/thread/309145/1/