You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

119 lines
2.7 KiB

4 years ago
//////////////////////////////////////////////////////////////////////////
/// COPYRIGHT NOTICE
/// Copyright (c) 2018, 传控科技
/// All rights reserved.
///
/// @file tpc_fsk.c
/// @brief transaction protocol control of fsk
///
///(本文件实现的功能的详述)
///
/// @version 1.1 CCsens technology
/// @author CC
/// @date 20150102
///
///
/// @version 1.2 CCsens technology
/// @author CC
/// @date 20180308
/// @info 整理
//
//////////////////////////////////////////////////////////////////////////
#ifndef __TPC_MODBUS_H_
#define __TPC_MODBUS_H_
#include "tpc_x.h"
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
/**
*
*/
enum MODBUS_OPER
{
MODBUS_OPER_READ = 0x03,
MODBUS_OPER_READCONFIG = 0x04,
MODBUS_OPER_WRITE = 0x06,
MODBUS_OPER_WRITE_M = 0x10,
MODBUS_OPER_ERR = 0x8F,
4 years ago
MODBUS_OPER_AUTH = 0x90,
MODBUS_OPER_PING = 0x92,
4 years ago
};
//协议类型: MODBUS RTU模式
//#define D_s_PH4_modbus_max (128)
//#define D_s_PH4_modbus_max (64)
#define D_s_modbus_min 3 //modbus协议的最小长度
typedef struct ts_ph4_modbus
{
U8 slaver; //从机地址
U8 oper; //功能码
U8 buf[D_TPC_HANDLER_X_LEN + 8];
U8 crc[2];
}TS_PH4_modbus;
typedef struct s_modbus_03_ack
{
U8 bytes;
U8 buf[D_TPC_HANDLER_X_LEN-1];
}Modbus03Ack;
typedef struct s_modbus_06_ack
{
U16 reg;
U16 val;
}Modbus06Ack;
typedef struct s_modbus_10_ack
{
U16 reg;
U16 num;
}Modbus10Ack;
typedef struct
{
U16 slaver;
U16 oper;
U16 reg;
U16 regnum;
U16 bytes;
U8 *buf;
U16 mask;
}MD_SLAVER_INFO;
#if 0
typedef struct
{
U8 reg;
U8 slaver; //对于主设备,slaver代表当前轮询的包的id,主设备每次轮询时,总是应该将slaver设置为轮询到的从设备id;对于从设备,slaver总是等于slaverId
U8 max; //接收到的数目的最大值
vU8 head; //接收标志头标志
vU8 ok; //接收协议ok标志
vU8 num;
vU8 *sp;
U8 buf[D_s_PH4_modbus_max + 8];
vU8 crc[2];
vU32 modbusstmp;
}TS_Handle_PH4;
#endif
extern U8 L3_pack_modbus(TS_PH4_modbus *pmodbus, MD_SLAVER_INFO *slaver_info);
4 years ago
extern U16 L3_modbus_slaver_ack(TS_PH4_modbus *pmodbus,TS_PH4_modbus *pModbusAck);
extern void L3_modbus_master_handler(TS_PH4_modbus *pmodbus,MD_SLAVER_INFO *p_slaver_info);
extern void L1_s2b_PH4(struct _tp_handler_x *p);
extern void L1_modbus_split(struct _tp_handler_x *p);
#endif /* end __TPC_UART_H_ */
/*****************************************************************************
** End Of File
******************************************************************************/