File tree 1 file changed +6
-0
lines changed
1 file changed +6
-0
lines changed Original file line number Diff line number Diff line change @@ -10,7 +10,9 @@ FreeModbus是一款开源的Modbus协议栈,但是只有从机开源,主机
10
10
- 支持实时操作系统及裸机移植;
11
11
- 为应用提供多种请求模式,用户可以选择阻塞还是非阻塞模式,自定义超时时间等,方便应用层灵活调用;
12
12
- 支持所有常用的Modbus方法。
13
+
13
14
### 1.1、文件结构
15
+
14
16
| 源文件 | 描述 |
15
17
| :------------------------------ | :----- |
16
18
| FreeModbus\modbus\mb.c | 给应用层提供Modbus从机设置及轮训相关接口|
@@ -43,17 +45,20 @@ FreeModbus是一款开源的Modbus协议栈,但是只有从机开源,主机
43
45
> 注:所有带_m后缀的文件为主机模式下必须使用的文件,如使用从机模式则无需这些文件。
44
46
45
47
----------
48
+
46
49
## 二、移植
47
50
对于协议栈的移植主要包括两个方面,硬件及软件。用户需要根据自己的需求进行自行选择。
48
51
49
52
> 注:以下所有说明都主要针对Modbus主机模式进行介绍。
50
53
51
54
### 2.1、软件
52
55
软件方面支持基于裸机及实时操作系统的移植;支持单个主机与单个从机同时独立运行。另外用户也可以修改协议栈的事件回调接口,使主机请求的接口采用阻塞及非阻塞模式;主机资源等待方面,用户也可以设置等待超时时间等等,诸多功能将会一一介绍。
56
+
53
57
#### 2.1.1、操作系统与裸机
54
58
对于操作系统与裸机目前协议栈都是支持的,但个人更加推荐采用实时操作系统,因为这样会使得接口调用及接口移植变得更加简单。目前提供移植完成的操作系统包括国人的[ RT-Thread] [ 1 ] 实时操作系统及uCOS操作系统。
55
59
操作系统与裸机移植的过程中涉及的文件为` FreeModbus\port\portevent_m.c `
56
60
该文件主要有以下需要用户移植的接口
61
+
57
62
| 接口 | 功能描述|
58
63
| :----- | :----|
59
64
| xMBMasterPortEventInit | 主机事件初始化|
@@ -75,6 +80,7 @@ FreeModbus是一款开源的Modbus协议栈,但是只有从机开源,主机
75
80
#### 2.1.2、数据缓冲区
76
81
数据缓冲区定义的位置位于` FreeModbus\port\user_mb_app_m.c ` 文件顶部,共计4种数据类型。
77
82
FreeModbus从机默认使用一维数组作为缓存区数据结构,主机可以存储所有网内从机的数据,所以主机采用二位数组对所有从机节点数据进行存储。二维数组的列号代表寄存器、线圈及离散量地址,行号代表从机节点ID,但需要做减一处理,例如` usMRegHoldBuf[2][1] ` 代表从机ID为3,保持寄存器地址为1的从机数据。
83
+
78
84
#### 2.1.3、Modbus数据处理回调接口
79
85
Modbus一共有4种不同的数据类型,所有的Modbus功能都围绕这些数据类型进行操作。由于不同的用户数据缓冲区结构可能有所不同,那么对应的Modbus数据处理方式也就存在差异,所以用户需要把每种数据类型对应的操作,按照自己的数据缓冲区结构进行定制实现。
80
86
所有的Modbus数据处理回调接口如下:
You can’t perform that action at this time.
0 commit comments