freeModbus移植

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/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容