////////////////////////////////////////////////////////////////////////// /// 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_tp_handle_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(Ts_uart_rev_ *p); extern void L1_modbus_split(Ts_uart_rev_ *p); #endif /* end __TPC_UART_H_ */ /***************************************************************************** ** End Of File ******************************************************************************/