⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 modbusdef.h

📁 基于c的电动机保护程序
💻 H
字号:
#ifndef __MODBUS__#define __MODBUS__#include "def.h"#include "nucleus.h"#include "UART.h"#define FUNC_03   3#define FUNC_04   4#define FUNC_06   6#define FUNC_65   65#define revCommand_len 11/**********************************************************************                              Some defines *///-----------  MODE switch macro -------------//#define ASCII_MODE#define RTU_MODE //----------- some macro in frame------------- #ifdef  ASCII_MODE#define ASCII_FRAME_HEAD      0X3A      /* 0X3A是ASCII码 ' : ' */#define ASCII_FRAME_END1      0X0D      /* 0X0A 0XOD 是ASCII码的回车换行 */#define ASCII_FRAME_END2      0X0A      /* 这两个字符标志着FRAME的结束 */#endif //----------- some function macro -------------/*01 - 21 PROTOCOL USED*/#define read_coil     01#define read_di       02#define read_hld_reg  03#define read_ai       04#define set_coil      05#define set_hld_reg   06/* 22~64 reserved for expanding */#define read_fifo     24          /* 65~72 reserved for user         *//* 73~119 illegal function code   */#define protocol_exception 0x81/* 120~127  reserved                 *//* 128~255 reserved : for abort,you can't use it as function code *//* 设备地址 */#define DEVADDR1   1#define DEVADDR2   2#define DEVADDR3   3#define DEVADDR4   4#define DEVADDR5   5#define DEVADDR6   6#define DEVADDR7   7//----------- some erro macro ---------------#define MOD_PROTOCOL_ERR       1#define MOD_FRAM_ERR           2#define MOD_SEND_BUFFER_FULL   3    #define MOD_SEND_BUFFER_EMPTY  4#define MOD_REV_BUFFER_FULL    5#define MOD_REV_BUFFER_EMPTY   6/**************************************************************************                          basic frame structure define   */#ifdef ASCII_MODEtypedef struct {    U8     head;                        /*       Frame head            */	U16	   addr;	U16	   fucnum;	RP8    pData;                       /* a pointer to the data     */	U16     lrc;                         /*       lrc check                 */	U8   f_tail;                        /*       Frame tail               */	U8   s_tail;                         }_MOD_FRAME_ASCII ;                                   /* MODBUS ASCII FRAME    */typedef  _MOD_FRAME_ASCII *  MOD_PA_frame;    U8 lrc_check(RP8, int);#endif#ifdef RTU_MODEtypedef struct {		U8	   addr;	U8     fucnum;	RP8    pData;                       // a pointer to the data     	U16    crc;                       //      crc check                } _MOD_FRAME_RTU;                                       // MODBUS ASCII FRAME    typedef _MOD_FRAME_RTU * RTU_PR_frame ;  U16 crc_check(RP8, int);typedef struct {\              U32    data_00H,data_01H,data_02H,data_03H,data_04H,data_05H,data_06H,data_07H,data_08H,data_09H,data_0AH,data_0BH,data_0CH,data_0DH,data_0EH,data_0FH,\                     data_10H,data_11H,data_12H,data_13H,data_14H,data_15H,data_16H,data_17H,data_18H,data_19H,data_1AH,data_1BH,data_1CH,data_1DH,data_1EH,data_1FH,\                     data_20H,data_21H,data_22H,data_23H,data_24H,data_25H,data_26H,data_27H,data_28H,data_29H,data_2AH,data_2BH,data_2CH,data_2DH,data_2EH,data_2FH,\                     data_30H,data_31H,data_32H,data_33H,data_34H,data_35H,data_36H,data_37H,data_38H,data_39H,data_3AH,data_3BH,data_3CH,data_3DH,data_3EH,data_3FH,\                     data_40H,data_41H,data_42H,data_43H,\                                          Flag_00H,Flag_01H,Flag_02H,Flag_03H,Flag_04H,Flag_05H,Flag_06H,Flag_07H,Flag_08H,Flag_09H,Flag_0AH,Flag_0BH,Flag_0CH,Flag_0DH,Flag_0EH,Flag_0FH,\                     Flag_10H,Flag_11H,Flag_12H,Flag_13H,Flag_14H,Flag_15H,Flag_16H,Flag_17H,Flag_18H,Flag_19H,Flag_1AH,Flag_1BH,Flag_1CH,Flag_1DH,Flag_1EH,Flag_1FH,\                     Flag_20H,Flag_21H,Flag_22H,Flag_23H,Flag_24H,Flag_25H,Flag_26H,Flag_27H,Flag_28H,Flag_29H,Flag_2AH,Flag_2BH,Flag_2CH,Flag_2DH,Flag_2EH,Flag_2FH,\                     Flag_30H,Flag_31H,Flag_32H,Flag_33H,Flag_34H,Flag_35H,Flag_36H,Flag_37H,Flag_38H,Flag_39H,Flag_3AH,Flag_3BH,Flag_3CH,Flag_3DH,Flag_3EH,Flag_3FH,\                     Flag_40H,Flag_41H,Flag_42H,Flag_43H;                                     }_ModBus_DataAdd;#endif//------------ Frame buffer ------------------#ifndef  SEND_BUFFER_ADDRESS#define  SEND_BUFFER_ADDRESS #endif#ifndef  BUFFER_SIZE#define  BUFFER_SIZE   (512)#endif#ifndef  RECEIVE_BUFFER_ADDRESS#define  RECEIVE_BUFFER_ADDRESS #endif/****************buffer操作**********************//*buffer 指针前移并循环*/#define INC(a) ((a) = ((a)+1) & (BUFFER_SIZE-1))/*buffer 指针后移并循环*/#define DEC(a) ((a) = ((a)-1) & (BUFFER_SIZE-1))/*buffer 是否为空*/#define EMPTY(a) ((a).head == (a).tail)/*buffer 剩余空间*/#define LEFT(a) (((a).tail-(a).head-1) & (BUFFER_SIZE-1))/*buffer 中最后一个位置*/#define LAST(a) ((a).buf[(BUFFER_SIZE-1) & ((a).head-1)])/*buffer 中第一个位置*/#define FIRST(a) ((a).buf[(BUFFER_SIZE-1) & ((a).tail)])/*buffer 是否满*/#define FULL(a) (!LEFT(a))/*buffer 中已放数据长度*/#define CHARS(a) (((a).head-(a).tail) & (BUFFER_SIZE-1))/*从queue缓冲区中取一字符(从tail处,tail+1)*/#define GETCH(queue, c) do{\	c = (queue).buf[(queue.tail)];\	INC((queue).tail);\}while(0)/*向queue缓冲区中放一字符(从head处,head+1)*/#define PUTCH(c, queue) do{\	(queue).buf[(queue).head] = (c);\	INC((queue).head);\}while(0)/*----------------------------------------------------------*//* buffer define */typedef struct {	char buf[BUFFER_SIZE];	unsigned long  head;	unsigned long  tail;	int length; //лϢ³¤¶ƍ}MOD_BUF;typedef struct {	unsigned long last_timetick;	unsigned char buf[20];	int  head;	int  tail;}_MOD_ReciveBUF;/*************************************************************************************          Some GLOBLE *///extern INT MOD_Err;                   /*总的错误码*/  #endifint Modbus_Rec(void);void Modbus_Send(void);int Func_Process(int);int Add(void);//U16 crc_check(RP8 , int );extern int sendover_flag;extern _MOD_ReciveBUF MOD_revbuf;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -