# 功能调试

### 配置参数定义

参数名称 | 描述 | 取值范围 | 说明
Communication Mode | 通讯模式 | 0 | NoSelect即无选择
1 | Modbus RTU Master 即RTU主站模式
2 | Modbus RTU Slave 即RTU从站模式
3 | Modbus ASCII Master 即ASCII主站模式
4 | Modbus ASCII Slave 即ASCII从站模式
5 | FP_Request 即自由口请求模式
6 | FP_Input_Output 即自由口输入输出模式
7 | FP_Input 即自由口输入模式
8 | FP_Output即自由口输出模式
Baud Rate | 串行端口波特率 | 0 | 1200 bps
1 | 2400 bps
2 | 4800 bps
3 | 9600 bps
4 | 19200 bps
5 | 38400 bps
6 | 57600 bps
7 | 115200 bps
Stop Bit | 停止位 | 0 | 1 Bit
1 | 2 Bits
Word Format | 字符格式 | 0 | 8 Bits
1 | 7 Bits
Parity | 奇偶校验位 | 0 | Parity None无校验
1 | Parity Odd奇校验
2 | Parity Even偶校验
Control Mode | 控制与状态模式 | 0 | Disable 即控制与状态失能
1 | Level即控制与状态使能-高电平触发
2 | Rising Edge 即控制与状态使能-上升沿触发
Node Output Mode | 节点输出模式 | 0 | Poll即轮询
1 | Change Trigger即逢变
Communication Error Behavior | 通讯错误行为 | 0 | Clear即清空
1 | Hold即保持
Respond Timeout | 响应时间 | 5~3000 | 单位ms，默认50
Poll Delay | 轮询延时 | 5~3000 | 单位ms，默认10
Slave ID | Modbus从站站号 | 1~247 | 在从站模式下有效，默认1
Slave Respond Delay | 从站响应延时 | 0~3000 | 单位ms，默认10
Node_1_Param_01 | 节点1参数1 | 0~FFFFFFFF | 默认0
Node_1_Param_02 | 节点1参数2 | 0~FFFFFFFF | 默认0
… | … | … | …
Node_16_Param_01 | 节点16参数1 | 0~FFFFFFFF | 默认0
Node_16_Param_02 | 节点16参数2 | 0~FFFFFFFF | 默认0

### Modbus主站功能

Modbus主站模式下，参数1（Param_01）是2字节的起始地址参数和2字节的节点代码参数构成，参数2（Param_02）由2位的字节交换参数和1字节的从站站号参数构成。

Param_01
BIT31~BIT16 | BIT15~BIT0
起始地址 Start Address | 节点代码 Node Code 详见下表
Param_02
BIT31~BIT16 | BIT15~BIT10 | BIT9~BIT8 | BIT7~BIT0
Reserve | 见下表 ExByte Flag | 从站站号 Slave Station Number

注：起始地址参数范围为 0000~FFFFH，从站站号参数范围为1~247。

### Modbus主站功能节点代码

SubModule分组 | SubModule | SubModule ID
Modbus Master Read Coils即Modbus主站读取线圈 | Read 8 bits | 0x0101
Read 16 bits | 0x0102
Read 24 bits | 0x0103
Read 32 bits | 0x0104
Read 40 bits | 0x0105
Read 48 bits | 0x0106
Read 56 bits | 0x0107
Read 64 bits | 0x0108
Read 72 bits | 0x0109
Read 80 bits | 0x010A
Read 88 bits | 0x010B
Read 96 bits | 0x010C
Read 104 bits | 0x010D
Read 112 bits | 0x010E
Read 120 bits | 0x010F
Read 128 bits | 0x0110
Modbus Master Read Discrete即Modbus主站读取离散输入 | Read 8 bits | 0x0201
Read 16 bits | 0x0202
Read 24 bits | 0x0203
Read 32 bits | 0x0204
Read 40 bits | 0x0205
Read 48 bits | 0x0206
Read 56 bits | 0x0207
Read 64 bits | 0x0208
Read 72 bits | 0x0209
Read 80 bits | 0x020A
Read 88 bits | 0x020B
Read 96 bits | 0x020C
Read 104 bits | 0x020D
Read 112 bits | 0x020E
Read 120 bits | 0x020F
Read 128 bits | 0x0210
Modbus Master Read Hold即Modbus主站读保持寄存器 | Read 1 Reg | 0x0301
Read 2 Regs | 0x0302
Read 3 Regs | 0x0303
Read 4 Regs | 0x0304
Read 5 Regs | 0x0305
Read 6 Regs | 0x0306
Read 7 Regs | 0x0307
Read 8 Regs | 0x0308
Read 9 Regs | 0x0309
Read 10 Regs | 0x030A
Read 11 Regs | 0x030B
Read 12 Regs | 0x030C
Read 13 Regs | 0x030D
Read 14 Regs | 0x030E
Read 15 Regs | 0x030F
Read 16 Regs | 0x0310
Modbus Master Read Input即Modbus主站读输入寄存器 | Read 1 Reg | 0x0401
Read 2 Regs | 0x0402
Read 3 Regs | 0x0403
Read 4 Regs | 0x0404
Read 5 Regs | 0x0405
Read 6 Regs | 0x0406
Read 7 Regs | 0x0407
Read 8 Regs | 0x0408
Read 9 Regs | 0x0409
Read 10 Regs | 0x040A
Read 11 Regs | 0x040B
Read 12 Regs | 0x040C
Read 13 Regs | 0x040D
Read 14 Regs | 0x040E
Read 15 Regs | 0x040F
Read 16 Regs | 0x0410
Modbus Master Write Coils即Modbus主站写线圈 | Write 8 bits | 0x0501
Write 16 bits | 0x0502
Write 24 bits | 0x0503
Write 32 bits | 0x0504
Write 40 bits | 0x0505
Write 48 bits | 0x0506
Write 56 bits | 0x0507
Write 64 bits | 0x0508
Write 72 bits | 0x0509
Write 80 bits | 0x050A
Write 88 bits | 0x050B
Write 96 bits | 0x050C
Write 104 bits | 0x050D
Write 112 bits | 0x050E
Write 120 bits | 0x050F
Write 128 bits | 0x0510
Write Single bit | 0x05FF
Modbus Master Write Hold即Modbus主站写保持寄存器 | Write 1 Reg | 0x0601
Write 2 Regs | 0x0602
Write 3 Regs | 0x0603
Write 4 Regs | 0x0604
Write 5 Regs | 0x0605
Write 6 Regs | 0x0606
Write 7 Regs | 0x0607
Write 8 Regs | 0x0608
Write 9 Regs | 0x0609
Write 10 Regs | 0x060A
Write 11 Regs | 0x060B
Write 12 Regs | 0x060C
Write 13 Regs | 0x060D
Write 14 Regs | 0x060E
Write 15 Regs | 0x060F
Write 16 Regs | 0x0610
Write Single Reg | 0x06FF

### Modbus 从站功能

Modbus从站模式下，参数 1（Param_01）是 2字节的起始地址参数和2字节的节点代码参数构成，参数2（Param_02）由 2位的字节交换参数构成。

Param_01
BIT31~BIT16 | BIT15~BIT0
起始地址 Start Address | 节点代码 Node Code
Param_02
BIT31~BIT16 | BIT15~BIT2 | BIT1~BIT0
Reserve | ExByte Flag

### Modbus从站功能节点代码

SubModule分组 | SubModule | SubModule ID
Modbus Slave Read Coils即Modbus从站读线圈 | Read 8 bits | 0x0701
Read 16 bits | 0x0702
Read 24 bits | 0x0703
Read 32 bits | 0x0704
Read 40 bits | 0x0705
Read 48 bits | 0x0706
Read 56 bits | 0x0707
Read 64 bits | 0x0708
Read 72 bits | 0x0709
Read 80 bits | 0x070A
Read 88 bits | 0x070B
Read 96 bits | 0x070C
Read 104 bits | 0x070D
Read 112 bits | 0x070E
Read 120 bits | 0x070F
Read 128 bits | 0x0710
Modbus Slave Read Hold即Modbus从站读保持寄存器 | Read 1 Reg | 0x0801
Read 2 Regs | 0x0802
Read 3 Regs | 0x0803
Read 4 Regs | 0x0804
Read 5 Regs | 0x0805
Read 6 Regs | 0x0806
Read 7 Regs | 0x0807
Read 8 Regs | 0x0808
Read 9 Regs | 0x0809
Read 10 Regs | 0x080A
Read 11 Regs | 0x080B
Read 12 Regs | 0x080C
Read 13 Regs | 0x080D
Read 14 Regs | 0x080E
Read 15 Regs | 0x080F
Read 16 Regs | 0x0810
Modbus Slave Write Coils即Modbus从站写线圈 | Write 8 bits | 0x0901
Write 16 bits | 0x0902
Write 24 bits | 0x0903
Write 32 bits | 0x0904
Write 40 bits | 0x0905
Write 48 bits | 0x0906
Write 56 bits | 0x0907
Write 64 bits | 0x0908
Write 72 bits | 0x0909
Write 80 bits | 0x090A
Write 88 bits | 0x090B
Write 96 bits | 0x090C
Write 104 bits | 0x090D
Write 112 bits | 0x090E
Write 120 bits | 0x090F
Write 128 bits | 0x0910
Modbus Slave Write Discrete即Modbus从站写离散输入 | Write 8 bits | 0x0A01
Write 16 bits | 0x0A02
Write 24 bits | 0x0A03
Write 32 bits | 0x0A04
Write 40 bits | 0x0A05
Write 48 bits | 0x0A06
Write 56 bits | 0x0A07
Write 64 bits | 0x0A08
Write 72 bits | 0x0A09
Write 80 bits | 0x0A0A
Write 88 bits | 0x0A0B
Write 96 bits | 0x0A0C
Write 104 bits | 0x0A0D
Write 112 bits | 0x0A0E
Write 120 bits | 0x0A0F
Write 128 bits | 0x0A10
Modbus Slave Write Hold即Modbus从站写保持寄存器 | Write 1 Reg | 0x0B01
Write 2 Regs | 0x0B02
Write 3 Regs | 0x0B03
Write 4 Regs | 0x0B04
Write 5 Regs | 0x0B05
Write 6 Regs | 0x0B06
Write 7 Regs | 0x0B07
Write 8 Regs | 0x0B08
Write 9 Regs | 0x0B09
Write 10 Regs | 0x0B0A
Write 11 Regs | 0x0B0B
Write 12 Regs | 0x0B0C
Write 13 Regs | 0x0B0D
Write 14 Regs | 0x0B0E
Write 15 Regs | 0x0B0F
Write 16 Regs | 0x0B10
Modbus Slave Write Input即Modbus从站写输入寄存器 | Write 1 Reg | 0x0C01
Write 2 Regs | 0x0C02
Write 3 Regs | 0x0C03
Write 4 Regs | 0x0C04
Write 5 Regs | 0x0C05
Write 6 Regs | 0x0C06
Write 7 Regs | 0x0C07
Write 8 Regs | 0x0C08
Write 9 Regs | 0x0C09
Write 10 Regs | 0x0C0A
Write 11 Regs | 0x0C0B
Write 12 Regs | 0x0C0C
Write 13 Regs | 0x0C0D
Write 14 Regs | 0x0C0E
Write 15 Regs | 0x0C0F
Write 16 Regs | 0x0C10

### 字节交换

字节编号 | 功能 | 长度
0 | 不交换 | 2位 Bits
1 | 2Bytes Exchange | 2位 Bits
2 | 4Bytes Register Exchange | 2位 Bits
3 | 4Bytes Big-Little-Endian Exchange | 2位 Bits

### Freeport自由口功能

在Freeport自由口模式下，参数1（Param_01）是2字节的节点代码参数构成。

Param_01
BIT31~BIT16 | BIT15~BIT0
Reserve | 节点代码 Node Code
Param_02
BIT31~BIT0
Reserve

### Freeport功能节点代码

SubModule分组 | SubModule | SubModule ID
Freeport Input即自由口输入 | Input 1 byte | 0x0D01
Input 2 bytes | 0x0D02
Input 4 bytes | 0x0D03
Input 8 bytes | 0x0D04
Input 16 bytes | 0x0D05
Input 32 bytes | 0x0D06
Input 64 bytes | 0x0D07
Input 128 bytes | 0x0D08
Input 160 bytes | 0x0D09
Input 192 bytes | 0x0D0A
Input 224 bytes | 0x0D0B
Input 255 bytes | 0x0D0C
Freeport Output即自由口输出 | Output 1 byte | 0x0E01
Output 2 bytes | 0x0E02
Output 4 bytes | 0x0E03
Output 8 bytes | 0x0E04
Output 16 bytes | 0x0E05
Output 32 bytes | 0x0E06
Output 64 bytes | 0x0E07
Output 128 bytes | 0x0E08
Output 160 bytes | 0x0E09
Output 192 bytes | 0x0E0A
Output 224 bytes | 0x0E0B
Output 255 bytes | 0x0E0C
Freeport Parity即自由口奇偶校验 | CRC8 | 0x0F01
CRC16 | 0x0F02
XOR | 0x0F03
SUM8 | 0x0F04
LRC | 0x0F05

### 控制与状态节点代码

当配置参数Control Mode控制与状态模式设置为disable时，无需配置控制与状态节点代码；当配置参数Control Mode控制与状态模式设置为Level或Rising Edge时，必需先在节点1参数1（Node_1_Param_01）配置节点代码。

节点代码如下表所示：

SubModule分组 | SubModule | SubModule ID | 备注
Control&Status | 1 Node | 0x0001 | 主站模式下配置
2 Node | 0x0002
3 Node | 0x0003
4 Node | 0x0004
5 Node | 0x0005
6 Node | 0x0006
7 Node | 0x0007
8 Node | 0x0008
9 Node | 0x0009
10 Node | 0x000A
11 Node | 0x000B
12 Node | 0x000C
13 Node | 0x000D
14 Node | 0x000E
15 Node | 0x000F
Freeport Req | 0x0020 | 自由口模式下配置
Freeport Input_Output | 0x0021
Freeport Input | 0x0022
Freeport Output | 0x0023
Modbus Slave | 0x0030 | 从站模式下配置

### 过程数据

模块出厂默认为SRC6041-C01SP-32Bytes，上下行数据长度各32Bytes，当模块的通讯节点参数配置所产生的PDO数据量达到一定范围时（上行数据量或下行数据量任一到达范围限制），耦合器模块会告警0x5002，此时重新上电后扫描模块，模块会自动切换至相应的PDO数据长度。

模块PDO长度范围与型号匹配表：

模块 PDO长度范围与型号匹配表
模块型号 | 上行数据长度（Bytes） | 下行数据长度（Bytes）
SRC6041-32Bytes | 0~32 | 0~32
SRC6041-64Bytes | 33~64 | 33~64
SRC6041-128Bytes | 65~128 | 65~128
SRC6041-255Bytes | 129~255 | 129~255

下面以型号 SRC6041-32Bytes为例介绍配置参数

当配置参数Control Mode控制与状态模式设置为disable时，上下行过程数据如下表所示。

上行数据（32字节）
字节编号 | 功能 | 含义 | 地址范围
1 | 输入数据 | 串口通讯模块输入数据 | 32个字节
2 | 输入数据
… | …
32 | 输入数据
下行数据（32字节）
字节编号 | 功能 | 含义 | 地址范围
1 | 输出数据 | 串口通讯模块输出数据 | 32个字节
2 | 输出数据
… | …
32 | 输出数据

当配置参数Control Mode控制与状态模式设置为Level或Rising Edge时，上下行过程数据如下表所示。

### Modbus主站过程数据

上行数据（32字节）
字节编号 | 功能 | 含义 | 地址范围
1 | 状态字 | Bit0：空闲状态 | 1个字节
Bit1：busy状态，即传输数据中
Bit2：完成状态，即传输数据完成
2 | 告警码 |  | 1个字节
3 | 输入数据 | 串口通讯模块输入数据 | 后30个字节
4 | 输入数据
… | …
32 | 输入数据
下行数据（32字节）
字节编号 | 功能 | 含义 | 地址范围
1 | 控制字 | 当配置参数Control Mode为Level，置1发送数据 | 1个字节
|  | 当配置参数Control Mode为Rising Edge，0->1发送数据 |
2 | 输出数据 | 串口通讯模块输出数据 | 后31个字节
3 | 输出数据
… | …
32 | 输出数据

注：上述表格过程数据是Level或Rising Edge模式下配置1个节点，如配置两个节点，上行数据的字节编号1和2为节点1的状态位和告警码，字节编号3和4为节点2的状态位和告警码，剩余字节为数据位；下行数据的字节编号1为节点1的控制位，字节编号2为节点2的控制位，剩余字节为数据位，最多可配置15个节点。

### Modbus从站过程数据

上行数据（32字节）
字节编号 | 功能 | 含义 | 地址范围
1 | 状态字 | Bit0：空闲状态 | 1个字节
|  | Bit1：busy状态，即传输数据中 |
|  | Bit2：完成状态，即传输数据完成 |
2 | 告警码 |  | 1个字节
3 | 输入数据 | 串口通讯模块输入数据 | 后30个字节
4 | 输入数据
… | …
32 | 输入数据
下行数据（32字节）
字节编号 | 功能 | 含义 | 地址范围
1 | 控制字 | Bit0：告警码清除 | 1个字节
2 | 输出数据 | 串口通讯模块输出数据 | 后31个字节
3 | 输出数据
… | …
32 | 输出数据

### Freeport_Request过程数据

上行数据（32字节）
字节编号 | 功能 | 含义 | 地址范围
1 | 状态字 | Bit0：空闲状态 | 1个字节
Bit1：busy状态，即传输数据中
Bit2：完成状态，即传输数据完成
2 | 告警码 | Bit0：接收数据长度错误 | 1个字节
Bit1：校验错误
Bit2：超时错误
3 | 接收数据长度 | 0~255 | 1个字节
4~5 | 接收异常计数 | 0~65535 | 2个字节
6~7 | 接收数据计数 | 0~65535 | 2个字节
8 | 输入数据 | 串口通讯模块输入数据 | 后25个字节
9 | 输入数据
… | …
32 | 输入数据
下行数据（32字节）
字节编号 | 功能 | 含义 | 地址范围
1 | 控制字 | Bit0：使能 | 1个字节
Bit1：状态字清空
Bit2：接收数据清空
2 | 发送数据长度 | 0~255 | 1个字节
3 | 计数清零 | Bit0：接收异常计数清零 | 1个字节
Bit1：接收数据计数清零
Bit2：接收数据长度清零
4 | 错误码清零 | Bit0：长度异常清除 | 1个字节
Bit1：校验错误清除
Bit2：超时错误清除
5 | 输出数据 | 串口通讯模块输出数据 | 后28个字节
6 | 输出数据
… | …
32 | 输出数据

### Freeport_Input过程数据

上行数据（32字节）
字节编号 | 功能 | 含义 | 地址范围
1 | 告警码 | Bit0：接收数据长度错误 | 1个字节
Bit1：校验错误
2 | 接收数据长度 | 0~255 | 1个字节
3~4 | 接收异常计数 | 0~65535 | 2个字节
5~6 | 接收数据计数 | 0~65535 | 2个字节
7 | 输入数据 | 串口通讯模块输入数据 | 后26个字节
8 | 输入数据
… | …
32 | 输入数据
下行数据（32字节）
字节编号 | 功能 | 含义 | 地址范围
1 | 控制字 | Bit0：使能 | 1个字节
Bit1：状态字清空
Bit2：接收数据清空
2 | 计数清零 | Bit0：接收异常计数清零 | 1个字节
Bit1：接收数据计数清零
Bit2：接收数据长度清零
3 | 错误码清零 | Bit0：接收长度错误清除 | 1个字节
Bit1：校验错误清除
4 | 输出数据 | 串口通讯模块输出数据 | 后29个字节
5 | 输出数据
… | …
32 | 输出数据

### Freeport_Output过程数据

下行数据（32字节）
字节编号 | 功能 | 含义 | 地址范围
1 | 控制字 | Bit0：使能 | 1个字节
2 | 发送数据长度 | 0~255 | 1个字节
3 | 输出数据 | 串口通讯模块输出数据 | 后30个字节
4 | 输出数据
… | …
32 | 输出数据

### Freeport_Input_Output过程数据

上行数据（32字节）
字节编号 | 功能 | 含义 | 地址范围
1 | 告警码 | Bit0：接收数据长度错误 | 1个字节
Bit1：校验错误
2 | 接收数据长度 | 0~255 | 1个字节
3~4 | 接收异常计数 | 0~65535 | 2个字节
5~6 | 接收数据计数 | 0~65535 | 2个字节
7 | 输入数据 | 串口通讯模块输入数据 | 后26个字节
8 | 输入数据
… | …
32 | 输入数据
下行数据（32字节）
字节编号 | 功能 | 含义 | 地址范围
1 | 控制字 | Bit0：使能 | 1个字节
Bit1：状态字清空
Bit2：接收数据清空
2 | 发送数据长度 | 0~255 | 1个字节
3 | 计数清零 | Bit0：接收异常计数清零 | 1个字节
Bit1：接收数据计数清零
Bit2：接收数据长度清零
4 | 错误码清零 | Bit0：接收长度错误清除 | 1个字节
Bit1：校验错误清除
5 | 输出数据 | 串口通讯模块输出数据 | 后28个字节
6 | 输出数据
… | …
32 | 输出数据

### Modbus告警码

故障码 | 注释
0x00 | 无错误
0x01 | 从设备地址错误
0x02 | 功能码错误
0x03 | CRC校验错误
0x04 | 响应字节数错误
0x05 | 线圈寄存器数据错误
0x06 | 保持寄存器数据错误
0x07 | 非法数据地址
0x08 | 从设备故障
0x09 | LRC校验错误
0x0C | 数据长度错误
0x0D | 数据转换错误
0x0E | ASCII帧错误
0x0F | 响应超时