freeModbus移植

2023-09-14  本文已影响0人  Mr_White

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/6802941313965621773?wid_try=1

上一篇 下一篇

猜你喜欢

热点阅读