📄 modbus_client.h
字号:
#ifndef _MB_CLIENT
#define _MB_CLIENT
#include <avr/io.h>
#include <avr/interrupt.h>
#include <string.h>
#include "485.h"
#define TRUE 1
#define FALSE 0
#define UINT16 unsigned int
#define BYTE unsigned char
#define MAX_EQU_NUM 3
//现在使用3个设备
#define OK 1
#define ERR 0
//===================================================================
// 错误常量
//===================================================================
#define CHAOSHI 0XFF
//===================================================================
//设备数据结构 用于构建设备参数表
typedef struct _EQUIPMENT_PARAMETER
{
BYTE EQU_ADDR;
//设备地址
BYTE EQU_TYPE;
//设备类型
BYTE EQU_STATE;
//设备状态
BYTE REG_ORIGINATION;
//起始寄存器地址
BYTE REG_NUM;
//寄存器数量
}EQUIPMENT_PARAMETER;
//ADU处理信息结构
typedef struct _ADU_CONTROL
{
BYTE Address;
//地址域
BYTE *RxADUBuffPtr;
//指向ADU发送缓冲区的指针
BYTE *TxADUBuffptr;
//指向ADU接收缓冲区的指针
BYTE ADULength;
//ADU数据长度
BYTE FrameOK;
//如果该ADU报文有效(地址有效,奇偶、CRC校验通过)则TRUE
}ADU_CONTROL;
//通信状态
typedef struct _MB_INFORMATION
{
BYTE EQUIPMENT_NOW;
//当前正在处理设备编号
// enum _MODBUS_STATE MODBUS_STATE;
//描述modbus状态的变量
BYTE T15_OUT;
//1.5ms延时到
BYTE T35_OUT;
//3.5ms延时到
BYTE TO_times;
//时钟中断次数计数器
}MB_INFORMATION;
// 帧错误类型
typedef enum _MESSAGE_ERR
{
CRC_ERR,
//CRC校验错
FUNC_ERR,
//功能号错 -应该处理错误类型
LEN_ERR,
//长度错
NO_ERR
//没有错误
}MESSAGE_ERR;
//=====================================================================================
void MB_INFORMATION_Init(MB_INFORMATION *);
//void MASTER_INFORMATION_Init(MASTER_INFORMATION *);
void ADU_CONTROL_Init(ADU_CONTROL *);
MESSAGE_ERR message_process(BYTE *,BYTE);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -