目录
4.1 配置uC/Modbus,MODBUS_CFG_SLAVE_EN
4.2 配置uC/Modbus,MODBUS_CFG_MASTER_EN
4.3 配置uC/Modbus,MODBUS_CFG_ASCII_EN
4.4 配置uC/Modbus,MODBUS_CFG_RTU_EN
4.5 配置uC/Modbus,MODBUS_CFG_MAX_CH
4.6 配置uC/Modbus,MODBUS_CFG_BUF_SIZE
4.7 配置uC/Modbus,MODBUS_CFG_FP_EN
4.8 配置uC/Modbus,MODBUS_CFG_FP_START_IX
4.9 配置uC/Modbus,MODBUS_CFG_FC01_EN
4.10 配置uC/Modbus,MODBUS_CFG_FC02_EN
4.11 配置uC/Modbus,MODBUS_CFG_FC03_EN
4.12 配置uC/Modbus,MODBUS_CFG_FC04_EN
4.13 配置uC/Modbus,MODBUS_CFG_FC05_EN
4.14 配置uC/Modbus,MODBUS_CFG_FC06_EN
4.15 配置uC/Modbus,MODBUS_CFG_FC08_EN
4.16 配置uC/Modbus,MODBUS_CFG_FC15_EN
4.17 配置uC/Modbus,MODBUS_CFG_FC16_EN
4.18 配置uC/Modbus-S,MODBUS_CFG_FC20_EN
4.19 配置uC/Modbus-S,MODBUS_CFG_FC21_EN
4.0 配置uC/Modbus
通过大约20个#define常量在编译时对uC/Modbus进行配置。配置值可以在mb_cfg.h中找到,该文件需要放在产品目录中,也可以将#define常量复制到一个您选择的头文件中。建议复制uC/Modbus发行版中提供的mb_cfg.h文件并修改其内容,而不是从头开始创建mb_cfg.h文件。这样可以更好的避免忘记#define常量。默认值显示为红色(RED)。
4.1 配置uC/Modbus,MODBUS_CFG_SLAVE_EN
该#define常量指定产品是否支持Modbus从机(服务)模式。设置#define 为DEF_ENABLED使能从机模式。设置#define为DEF_DISABLED禁用从机模式。必须购买uC/Modbus-S软件包才可以将#define设置为DEF_ENABLED。
4.2 配置uC/Modbus,MODBUS_CFG_MASTER_EN
该#define常量指定产品是否支持Modbus主机(客户端)模式。设置#define 为DEF_ENABLED使能从机模式。设置#define为DEF_DISABLED禁用从机模式。必须购买uC/Modbus-M软件包才可以将#define设置为DEF_ENABLED。
4.3 配置uC/Modbus,MODBUS_CFG_ASCII_EN
该#define常量指定产品是否支持Modbus ASCII协议。将该值设置为DEF_ENABLED,允许任何Modbus通道设置为ASCII模式。注意,每一个通道在运行时必须配置为ASCII或RTU模式。将MODBUS_CFG_ASCII_EN设置为DEF_ENABLED并不意味着您的产品必须使用ASCII模式,仅意味着支持Modbus ASCII的代码包含在编译的文件中。
4.4 配置uC/Modbus,MODBUS_CFG_RTU_EN
该#define常量指定产品是否支持Modbus RTU协议。将该值设置为DEF_ENABLED,允许任何Modbus通道设置为RTU模式。注意,每一个通道在运行时必须配置为ASCII或RTU模式。将MODBUS_CFG_RTU_EN设置为DEF_ENABLED并不意味着您的产品必须使用RTU模式,仅意味着支持Modbus RTU的代码包含在编译的文件中。
4.5 配置uC/Modbus,MODBUS_CFG_MAX_CH
uC/Modbus允许在产品中提供多个通讯通道。每一个通道允许一个Modbus主机从产品请求数据。如果您的产品近提供一个通道,应该将MODBUS_CFG_MAX_CH设置为1。
4.6 配置uC/Modbus,MODBUS_CFG_BUF_SIZE
MODBUS协议包可最多可包含256字节数据。要保存这些数据,每一个uC/Modbus通道分配存储缓冲区如下:2个接收包,两个发送包。如果您的应用发送和接收的是小包,您可以减小缓冲区的大小节省RAM。当然,我们建议将MODBUS_CFG_BUF_SIZE的默认值保留为255。对于255,Modbus通道需要1020字节RAM作为缓存。
4.7 配置uC/Modbus,MODBUS_CFG_FP_EN
当设置为DEF_ENABLED时,该#define常量用于使能代码生成,以便实现“Daniels Flow Meter Floating-Point Extension”对浮点数的支持。默认值应该为DEF_DISABLED。
4.8 配置uC/Modbus,MODBUS_CFG_FP_START_IX
该#define决定输入寄存器和保存寄存器使用的浮点数的起始地址。基本上,整型输入寄存器和保存寄存器从地址0开始,到MODBUS_CFG_FP_START_IX-1。浮点输入寄存器和保存寄存器是从MODBUS_CFG_FP_START_IX到65535。
4.9 配置uC/Modbus,MODBUS_CFG_FC01_EN
当设置为DEF_ENABLED时,该#define确定uC/Modbus持线圈读取命令(功能码 #1)。当设置为DEF_DISABLED时,代码不会创建这些命令。
4.10 配置uC/Modbus,MODBUS_CFG_FC02_EN
当设置为DEF_ENABLED时,该#define确定uC/Modbus支持离散输入读取命令(功能码 #2)。当设置为DEF_DISABLED时,代码不会创建这些命令。
4.11 配置uC/Modbus,MODBUS_CFG_FC03_EN
当设置为DEF_ENABLED时,该#define确定uC/Modbus支持保持寄存器读取命令(功能码 #3)。当设置为DEF_DISABLED时,代码不会创建这些命令。
4.12 配置uC/Modbus,MODBUS_CFG_FC04_EN
当设置为DEF_ENABLED时,该#define确定uC/Modbus支持输入寄存器读取命令(功能码 #4)。当设置为DEF_DISABLED时,代码不会创建这些命令。
4.13 配置uC/Modbus,MODBUS_CFG_FC05_EN
当设置为DEF_ENABLED时,该#define确定uC/Modbus支持线圈写入命令(功能码 #5)。当设置为DEF_DISABLED时,代码不会创建这些命令。
4.14 配置uC/Modbus,MODBUS_CFG_FC06_EN
当设置为DEF_ENABLED时,该#define确定uC/Modbus支持写单个保持寄存器命令(功能码 #6)。当设置为DEF_DISABLED时,代码不会创建这些命令。
4.15 配置uC/Modbus,MODBUS_CFG_FC08_EN
当设置为DEF_ENABLED时,该#define确定uC/Modbus支持回环诊断命令(功能码 #8)。当设置为DEF_DISABLED时,代码不会创建这些命令。
4.16 配置uC/Modbus,MODBUS_CFG_FC15_EN
当设置为DEF_ENABLED时,该#define确定uC/Modbus支持写多个线圈命令(功能码 #15)。当设置为DEF_DISABLED时,代码不会创建这些命令。
4.17 配置uC/Modbus,MODBUS_CFG_FC16_EN
当设置为DEF_ENABLED时,该#define确定uC/Modbus支持写多个保持寄存器命令(功能码 #16)。当设置为DEF_DISABLED时,代码不会创建这些命令。
4.18 配置uC/Modbus-S,MODBUS_CFG_FC20_EN
当设置为DEF_ENABLED时,该#define确定uC/Modbus支持文件读取命令(功能码 #20)。当设置为DEF_DISABLED时,代码不会创建这些命令。
4.19 配置uC/Modbus-S,MODBUS_CFG_FC21_EN
当设置为DEF_ENABLED时,该#define确定uC/Modbus支持文件写入命令(功能码 #21)。当设置为DEF_DISABLED时,代码不会创建这些命令
4.20 配置uC/Modbus,RAM内存需求
每个uC/Modbus通道需要的RAM数量如下表所示。表中假设指针宽度为32位。
表3-1,每个uC/Modbus通道的RAM需求
数据类型 | 数据类型大小 (Bytes) | #特定数据类型的元素 | 总字节数 |
CPU_BOOLEAN | 1 | 1 | 1 |
CPU_INT08U | 1 | 8 + 4* MODBUS_CFG_BUF_SIZE | 1028 |
CPU_INT16U | 2 | 13 + 2* MODBUS_CFG_RTU_EN | 30 |
CPU_INT32U | 4 | 4 | 16 |
CPU_INT08U * | 4 | 2 | 8 |
总数(每个uC/Modbus通道): (参见MB_ChSize) | 1083 |
全局变量MB_TotalRAMSize控制已指定配置的uC/Modbus所需的RAM(按字节)数量。同样,MB_ChSize控制每个Modbus通道所需RAM的数量。这两个变量均是32位值,并且声明为‘const’,因此,使用了8字节ROM而没有使用RAM。