#ifndef __IEC101_H #define __IEC101_H #include "stm32f2xx.h" #define SendData USART_232_Send #define INVALID_DATA 0 #define VARIABLE_DATA 1 // 可变帧 #define STABLE_DATA 2 // 固定帧 //在监视方向上的过程信息 #define NULL 0 //未定义 #define M_SP_NA_1 1 //单点信息 #define M_SP_TA_1 2 //带时标的单点信息 #define M_DP_NA_1 3 //双点信息 #define M_DP_TA_1 4 //带时标的双点信息 #define M_ST_NA_1 5 //步位置信息 #define M_ST_TA_1 6 //带时标的步位置信息 #define M_BO_NA_1 7 //32比特串 #define M_BO_TA_1 8 //带时标的32比特串 #define M_ME_NA_1 9 //测量值,规一化值 #define M_ME_TA_1 10 //测量值,带时标的规一化值 #define M_ME_NB_1 11 //测量值,标度化值 #define M_ME_TB_1 12 //测量值,带时标的标度化值 #define M_ME_NC_1 13 //测量值,短浮点数 #define M_ME_TC_1 14 //测量值,带时标的短浮点数 #define M_IT_NA_1 15 //累计量 #define M_IT_TA_1 16 //带时标的累计量 #define M_EP_TA_1 17 //带时标的继电设备保护事件 #define M_EP_TB_1 18 //时标的继电保护设备成组启动事件 #define M_EP_TC_1 19 //带时标的继电保护设备成组输出电路信息 #define M_PS_NA_1 20 //带变位检出的成组单点信息 #define M_ME_ND_1 21 //测量值,不带品质描述词的规一化值 #define RESERVED_22 22 //为将来兼容定义保留 #define RESERVED_23 23 //为将来兼容定义保留 #define RESERVED_24 24 //为将来兼容定义保留 #define RESERVED_25 25 //为将来兼容定义保留 #define RESERVED_26 26 //为将来兼容定义保留 #define RESERVED_27 27 //为将来兼容定义保留 #define RESERVED_28 28 //为将来兼容定义保留 #define RESERVED_29 29 //为将来兼容定义保留 #define M_SP_TB_1 30 //带CP56Time2a时标的单点信息 #define M_DP_TB_1 31 //带CP56Time2a时标的双点信息 #define M_ST_TB_1 32 //带CP56Time2a时标的步位置信息 #define M_BO_TB_1 33 //带CP56Time2a时标的32比特串 #define M_ME_TD_1 34 //带CP56Time2a时标的测量值, 规一化值 #define M_ME_TE_1 35 //带CP56Time2a时标的测量值, 标度化值 #define M_ME_TF_1 36 //带CP56Time2a时标的测量值, 短浮点数 #define M_IT_TB_1 37 //带CP56Time2a时标的累计量 #define M_EP_TD_1 38 //带CP56Time2a时标的继电保护设备事件 #define M_EP_TE_1 39 //带CP56Time2a时标的继电保护设备成组启动事件 #define M_EP_TF_1 40 //带CP56Time2a时标的继电保护设备成组输出电路信息 #define RESERVED_41 41 //为将来兼容定义保留 #define RESERVED_42 42 //为将来兼容定义保留 #define RESERVED_43 43 //为将来兼容定义保留 #define RESERVED_44 44 //为将来兼容定义保留 //在控制方向上的过程信息 #define C_SC_NA_1 45 //单点命令 #define C_DC_NA_1 46 //双点命令 #define C_RC_NA_1 47 //步调节命令 #define C_SE_NA_1 48 //设定值命令, 规一化值 #define C_SE_NB_1 49 //设定值命令, 标度化值 #define C_SE_NC_1 50 //设定值命令, 短浮点数 #define C_BO_NA_1 51 //32比特串 #define RESERVED_52 52 //为将来兼容定义保留 #define RESERVED_53 53 //为将来兼容定义保留 #define RESERVED_54 54 //为将来兼容定义保留 #define RESERVED_55 55 //为将来兼容定义保留 #define RESERVED_56 56 //为将来兼容定义保留 #define RESERVED_57 57 //为将来兼容定义保留 #define RESERVED_58 58 //为将来兼容定义保留 #define RESERVED_59 59 //为将来兼容定义保留 #define RESERVED_60 60 //为将来兼容定义保留 #define RESERVED_61 61 //为将来兼容定义保留 #define RESERVED_62 62 //为将来兼容定义保留 #define RESERVED_63 63 //为将来兼容定义保留 #define RESERVED_64 64 //为将来兼容定义保留 #define RESERVED_65 65 //为将来兼容定义保留 #define RESERVED_66 66 //为将来兼容定义保留 #define RESERVED_67 67 //为将来兼容定义保留 #define RESERVED_68 68 //为将来兼容定义保留 #define RESERVED_69 69 //为将来兼容定义保留 //在监视方向的系统命令 #define M_EI_NA_1 70 //初始化结束 #define RESERVED_71 71 //为将来兼容定义保留 #define RESERVED_72 72 //为将来兼容定义保留 #define RESERVED_73 73 //为将来兼容定义保留 #define RESERVED_74 74 //为将来兼容定义保留 #define RESERVED_75 75 //为将来兼容定义保留 #define RESERVED_76 76 //为将来兼容定义保留 #define RESERVED_77 77 //为将来兼容定义保留 #define RESERVED_78 78 //为将来兼容定义保留 #define RESERVED_79 79 //为将来兼容定义保留 #define RESERVED_80 80 //为将来兼容定义保留 #define RESERVED_81 81 //为将来兼容定义保留 #define RESERVED_82 82 //为将来兼容定义保留 #define RESERVED_83 83 //为将来兼容定义保留 #define RESERVED_84 84 //为将来兼容定义保留 #define RESERVED_85 85 //为将来兼容定义保留 #define RESERVED_86 86 //为将来兼容定义保留 #define RESERVED_87 87 //为将来兼容定义保留 #define RESERVED_88 88 //为将来兼容定义保留 #define RESERVED_89 89 //为将来兼容定义保留 #define RESERVED_90 90 //为将来兼容定义保留 #define RESERVED_91 91 //为将来兼容定义保留 #define RESERVED_92 92 //为将来兼容定义保留 #define RESERVED_93 93 //为将来兼容定义保留 #define RESERVED_94 94 //为将来兼容定义保留 #define RESERVED_95 95 //为将来兼容定义保留 #define RESERVED_96 96 //为将来兼容定义保留 #define RESERVED_97 97 //为将来兼容定义保留 #define RESERVED_98 98 //为将来兼容定义保留 #define RESERVED_99 99 //为将来兼容定义保留 //在控制方向的系统命令 #define C_IC_NA_1 100 //总召唤命令 #define C_CI_NA_1 101 //计数量召唤命令 #define C_RD_NA_1 102 //读命令 #define C_CS_NA_1 103 //时钟同步命令 #define C_TS_NA_1 104 //测试命今 #define C_RP_NA_1 105 //复位进程命令 #define C_CD_NA_1 106 //延时获得命今 #define RESERVED_107 107 //为将来兼容定义保留 #define RESERVED_108 108 //为将来兼容定义保留 #define RESERVED_109 109 //为将来兼容定义保留 //在控制方向的参数命令 #define P_ME_NA_1 110 //测量值参数, 规一化值 #define P_ME_NB_1 111 //测量值参数, 标度化值 #define P_ME_NC_1 112 //测量值参数, 短浮点数 #define P_AC_NA_1 113 //参数激活 #define RESERVED_114 114 //为将来兼容定义保留 #define RESERVED_115 115 //为将来兼容定义保留 #define RESERVED_116 116 //为将来兼容定义保留 #define RESERVED_117 117 //为将来兼容定义保留 #define RESERVED_118 118 //为将来兼容定义保留 #define RESERVED_119 119 //为将来兼容定义保留 //文件传输 #define F_FR_NA_1 120 //文件准备就绪 #define F_SR_NA_1 121 //节准备就绪 #define F_SC_NA_1 122 //召唤目录, 选择文件, 召唤文件,召唤节 #define F_LS_NA_1 123 //最后的节,最后的段 #define F_AF_NA_1 124 //认可文件,认可节 #define F_SG_NA_1 125 //段 #define F_DR_TA_1 126 //目录 #define RESERVED_127 127 //为将来兼容定义保留 //定义控制域功能码(平衡传输) //启动站向从动站传输报文控制域的功能码(PRM=1) #define RST_LINK_FUNC 0x00 #define RST_PROCESS_FUNC 0x01 #define TEST_LINK_FUNC 0x02 #define USER_DATA_FUNC 0x03 #define NO_ANSWER_DATA_FUNC 0x04 #define LINK_STATUS_FUNC 0x09 //从动站向启动站传输报文控制域的功能码(PRM=0) #define RETURN_OK_FUNC 0x00 #define RETURN_NO_OK_FUNC 0x01 #define ACK_LINK_STATUS 0x0B #define S2M_DIR 1 //从从站(B站)到主站(A站)DIR为1 #define M2S_DIR 0 //从主站(A站)到从站(B站)DIR为0 typedef struct { uint8_t TypeID; uint8_t Qualifier; uint16_t Reason; uint16_t ASDU_Address; uint16_t InfoAddress; uint8_t InfoData[16]; } ASDU_DataStructure; typedef struct { uint8_t Year; uint8_t Month; uint8_t Day; uint8_t Hour; uint8_t Min; uint8_t Sec; uint16_t MilliSec; } TimeStructure; extern uint8_t Info[16]; //开关量数量 0/1/2 跌落 3跌落状态 4温度状态 5 欠压 6/7/8/9 漏保 extern uint8_t InfoTemp[8]; //温度 extern uint8_t DataFromGPRSBuffer[128]; extern uint8_t moduleMaskEn; // 模块故障MASK extern unsigned char Time_Data[8]; extern uint8_t ProtocolRxBuffer[64]; //存储主站发过来的命令 extern uint8_t LINK_ADDRESS; //定义链路地址 void creatTest(void); uint8_t CheckError(uint8_t* pBuffer); uint8_t IEC_Protocol(uint8_t* pBuffer); uint8_t DataProcess(void); void LinkInit(void); uint8_t ResponseCallAll(void); void ChangeUpdate(uint16_t InfoAdress, uint8_t Info, TimeStructure* Time); void TempChangeUpdate(uint16_t InfoAdress, uint8_t Info, TimeStructure* Time); #endif //__101_PROTOCOL_H__