SimpleModbusRTUPacket
| 宏定义 | 函数
Modbus.h 文件参考

Modbus RTU模式下数据包处理头文件 更多...

#include "stdint.h"
#include "stdbool.h"
#include "stdlib.h"
#include "string.h"

浏览源代码.

struct  modbus_slave_context_t
 
struct  modbus_master_context_t
 

宏定义

#define MODBUS_BROADCAST_ADDRESS   0
 
#define MODBUS_MAX_READ_BITS   2000
 
#define MODBUS_MAX_WRITE_BITS   1968
 
#define MODBUS_MAX_READ_REGISTERS   125
 
#define MODBUS_MAX_WRITE_REGISTERS   123
 
#define MODBUS_MAX_WR_WRITE_REGISTERS   121
 
#define MODBUS_MAX_WR_READ_REGISTERS   125
 
#define MODBUS_MAX_PDU_LENGTH   253
 
#define MODBUS_RTU_MAX_ADU_LENGTH   256
 

函数

bool Modbus_Payload_Check_CRC (uint8_t *payload, size_t payload_length)
 检查一帧数据的crc 更多...
 
bool Modbus_Payload_Append_CRC (uint8_t *payload, size_t payload_length)
 在数据帧末尾的添加crc校验 更多...
 
bool Modbus_Slave_Parse_Input (modbus_slave_context_t *ctx, uint8_t *input_data, size_t input_data_length, uint8_t *buff, size_t buff_length)
 Modbus从机解析输入。 当从机接收到一帧数据后,调用此函数。 此函数会自动调用相关回调函数完成Modbus输出。 更多...
 
bool Modbus_Master_Read_IX (modbus_master_context_t *ctx, uint16_t start_addr, bool *data, size_t number, uint8_t *buff, size_t buff_length)
 Modbus主机读取输入点 更多...
 
bool Modbus_Master_Read_OX (modbus_master_context_t *ctx, uint16_t start_addr, bool *data, size_t number, uint8_t *buff, size_t buff_length)
 Modbus主机读取输出线圈 更多...
 
bool Modbus_Master_Read_Hold_Register (modbus_master_context_t *ctx, uint16_t start_addr, uint16_t *data, size_t number, uint8_t *buff, size_t buff_length)
 Modbus主机读取保持寄存器 更多...
 
bool Modbus_Master_Read_Input_Register (modbus_master_context_t *ctx, uint16_t start_addr, uint16_t *data, size_t number, uint8_t *buff, size_t buff_length)
 Modbus主机读取输入寄存器 更多...
 
bool Modbus_Master_Write_OX (modbus_master_context_t *ctx, uint16_t start_addr, bool *data, size_t number, uint8_t *buff, size_t buff_length)
 Modbus主机写输出线圈 更多...
 
bool Modbus_Master_Write_Hold_Register (modbus_master_context_t *ctx, uint16_t start_addr, uint16_t *data, size_t number, uint8_t *buff, size_t buff_length)
 Modbus主机写保持寄存器 更多...
 

详细描述

Modbus RTU模式下数据包处理头文件

作者
何亚红
版本
20220203
日期
2022

在文件 Modbus.h 中定义.

宏定义说明

◆ MODBUS_BROADCAST_ADDRESS

#define MODBUS_BROADCAST_ADDRESS   0

在文件 Modbus.h22 行定义.

◆ MODBUS_MAX_PDU_LENGTH

#define MODBUS_MAX_PDU_LENGTH   253

在文件 Modbus.h49 行定义.

◆ MODBUS_MAX_READ_BITS

#define MODBUS_MAX_READ_BITS   2000

在文件 Modbus.h29 行定义.

◆ MODBUS_MAX_READ_REGISTERS

#define MODBUS_MAX_READ_REGISTERS   125

在文件 Modbus.h39 行定义.

◆ MODBUS_MAX_WR_READ_REGISTERS

#define MODBUS_MAX_WR_READ_REGISTERS   125

在文件 Modbus.h42 行定义.

◆ MODBUS_MAX_WR_WRITE_REGISTERS

#define MODBUS_MAX_WR_WRITE_REGISTERS   121

在文件 Modbus.h41 行定义.

◆ MODBUS_MAX_WRITE_BITS

#define MODBUS_MAX_WRITE_BITS   1968

在文件 Modbus.h30 行定义.

◆ MODBUS_MAX_WRITE_REGISTERS

#define MODBUS_MAX_WRITE_REGISTERS   123

在文件 Modbus.h40 行定义.

◆ MODBUS_RTU_MAX_ADU_LENGTH

#define MODBUS_RTU_MAX_ADU_LENGTH   256

在文件 Modbus.h55 行定义.

函数说明

◆ Modbus_Master_Read_Hold_Register()

bool Modbus_Master_Read_Hold_Register ( modbus_master_context_t ctx,
uint16_t  start_addr,
uint16_t *  data,
size_t  number,
uint8_t *  buff,
size_t  buff_length 
)

Modbus主机读取保持寄存器

参数
ctx上下文指针,需要自行定义
start_addr起始地址(寻址地址)
data待读取的数据指针
number待读取数据长度
buff缓冲,用于发送和接收数据,尽量大
buff_length缓冲长度
返回
是否成功执行

在文件 Modbus.c555 行定义.

◆ Modbus_Master_Read_Input_Register()

bool Modbus_Master_Read_Input_Register ( modbus_master_context_t ctx,
uint16_t  start_addr,
uint16_t *  data,
size_t  number,
uint8_t *  buff,
size_t  buff_length 
)

Modbus主机读取输入寄存器

参数
ctx上下文指针,需要自行定义
start_addr起始地址(寻址地址)
data待读取的数据指针
number待读取数据长度
buff缓冲,用于发送和接收数据,尽量大
buff_length缓冲长度
返回
是否成功执行

在文件 Modbus.c606 行定义.

◆ Modbus_Master_Read_IX()

bool Modbus_Master_Read_IX ( modbus_master_context_t ctx,
uint16_t  start_addr,
bool *  data,
size_t  number,
uint8_t *  buff,
size_t  buff_length 
)

Modbus主机读取输入点

参数
ctx上下文指针,需要自行定义
start_addr起始地址(寻址地址)
data待读取的数据指针
number待读取数据长度
buff缓冲,用于发送和接收数据,尽量大
buff_length缓冲长度
返回
是否成功执行

在文件 Modbus.c504 行定义.

◆ Modbus_Master_Read_OX()

bool Modbus_Master_Read_OX ( modbus_master_context_t ctx,
uint16_t  start_addr,
bool *  data,
size_t  number,
uint8_t *  buff,
size_t  buff_length 
)

Modbus主机读取输出线圈

参数
ctx上下文指针,需要自行定义
start_addr起始地址(寻址地址)
data待读取的数据指针
number待读取数据长度
buff缓冲,用于发送和接收数据,尽量大
buff_length缓冲长度
返回
是否成功执行

在文件 Modbus.c453 行定义.

◆ Modbus_Master_Write_Hold_Register()

bool Modbus_Master_Write_Hold_Register ( modbus_master_context_t ctx,
uint16_t  start_addr,
uint16_t *  data,
size_t  number,
uint8_t *  buff,
size_t  buff_length 
)

Modbus主机写保持寄存器

参数
ctx上下文指针,需要自行定义
start_addr起始地址(寻址地址)
data待写入的数据指针
number待写入数据长度
buff缓冲,用于发送和接收数据,尽量大
buff_length缓冲长度
返回
是否成功执行

在文件 Modbus.c812 行定义.

◆ Modbus_Master_Write_OX()

bool Modbus_Master_Write_OX ( modbus_master_context_t ctx,
uint16_t  start_addr,
bool *  data,
size_t  number,
uint8_t *  buff,
size_t  buff_length 
)

Modbus主机写输出线圈

参数
ctx上下文指针,需要自行定义
start_addr起始地址(寻址地址)
data待写入的数据指针
number待写入数据长度
buff缓冲,用于发送和接收数据,尽量大
buff_length缓冲长度
返回
是否成功执行

在文件 Modbus.c703 行定义.

◆ Modbus_Payload_Append_CRC()

bool Modbus_Payload_Append_CRC ( uint8_t *  payload,
size_t  payload_length 
)

在数据帧末尾的添加crc校验

参数
payload整帧数据的指针,需要在末尾留两个字节以填写CRC
payload_length长度(包含CRC)
返回
是否调用成功

在文件 Modbus.c71 行定义.

◆ Modbus_Payload_Check_CRC()

bool Modbus_Payload_Check_CRC ( uint8_t *  payload,
size_t  payload_length 
)

检查一帧数据的crc

参数
payload整帧数据(包含CRC)的指针
payload_length长度(包含CRC)
返回
CRC是否通过

在文件 Modbus.c52 行定义.

◆ Modbus_Slave_Parse_Input()

bool Modbus_Slave_Parse_Input ( modbus_slave_context_t ctx,
uint8_t *  input_data,
size_t  input_data_length,
uint8_t *  buff,
size_t  buff_length 
)

Modbus从机解析输入。 当从机接收到一帧数据后,调用此函数。 此函数会自动调用相关回调函数完成Modbus输出。

参数
ctx上下文指针,需要自行定义
input_data输入数据指针
input_data_length输入数据长度
buff缓冲(存放临时数据)
buff_length缓冲长度(需大于等于输入数据长度,足够存放输出数据)
返回
是否成功执行

在文件 Modbus.c90 行定义.