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.
114 lines
2.7 KiB
114 lines
2.7 KiB
//////////////////////////////////////////////////////////////////////////
|
|
/// 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,
|
|
};
|
|
|
|
//协议类型: MODBUS RTU模式
|
|
//#define D_s_PH4_modbus_max (128)
|
|
//#define D_s_PH4_modbus_max (64)
|
|
#define D_s_modbus_min 4 //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);
|
|
//extern U8 L3_pack_modbusack(TS_PH4_modbus *pmodbus ,U8 slaver, U8 oper, U8 bufsize);
|
|
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
|
|
******************************************************************************/
|
|
|
|
|
|
|
|
|