#ifndef __HX_IEC104_H #define __HX_IEC104_H #include #include #include "HTGlobal.h" #define NS_IEC_104_YK_BASE_PORT 16 #define NS_IEC104_YK_PERMIT_TIME 16 #define NS_IEC_104_TOTAL_YX_TIMES 9 #define NS_IEC_104_ONCE_YX 120 #define NS_IEC_104_ONCE_YX_BYTES 120/8 #define NS_IEC_104_TOTAL_YC_TIMES 16 #define NS_IEC_104_ONCE_YC 32 #define NS_IEC_104_TOTAL_YM_TIMES 8 #define NS_IEC_104_ONCE_YM 16 #define NS_IEC_104_MIN_LENGTH 6 #define NS_IEC_104_HEAD 0x68 #define NS_IEC_104_STARTDT 0x04 #define NS_IEC_104_STOPDT 0x10 #define NS_IEC_104_TESTFR 0x40 #define NS_IEC_104_QCC_POSITION 15 #define NS_IEC_104_TIME_POSITION 15 #define NS_IEC_104_REASONBYTE 2 #define NS_IEC_104_ASDUADDRESSBYTE 2 #define NS_IEC_104_INFORMATIONBYTE 3 /* Location Which Bytes In Receive Buffer */ #define NS_STARTREASON 8 #define NS_STARTASDUADDRESS 10 #define NS_STARTINFORMATION 12 #define NS_STARTQUALIFIER 15 #define NS_IEC_104_GROUP_BYTE 15 #define NS_IEC104_GROUP_BEGIN 21 #define NS_IEC104_GROUP_END 36 #define NS_IEC104_YX_START_OBJECT 0x01 #define NS_IEC104_YC_START_OBJECT 0x701 #define NS_IEC104_YCYX_OBJECT_INDEX 0x80 #define NS_IEC104_SENDBUFFER 256 #define NS_IEC104_RECEIVEBUFFER 128 #define NS_CONNECTED 0x02 #define NS_DISCONNECTED 0x20 #define NS_IEC104_PERMIT_TIME 30 #define NS_IEC104_MAX_K 12 #define NS_IEC104_MAX_W 8 #define NS_IEC104_MAX_GROUP 30 #define NS_IEC104_MAX_YC 512 #define NS_IEC104_CHANGE_YC_CYCLE 16 #define NS_IEC104_ONCE_YC_COUNT 32 #define OFF false typedef struct NS_IEC_104_NS_ { struct sockaddr_in ServerAddress; int NsNewSocketId; unsigned char LinkState; unsigned long LinkValidTime; unsigned char Card; short Port; unsigned char ReceiveBuffer[NS_IEC104_RECEIVEBUFFER]; unsigned char SendBuffer[NS_IEC104_SENDBUFFER]; short SendLength; short ReceiveLength; unsigned short ReceiveIndex; short ReceiveIndexLength; unsigned char ApciCode; unsigned char TransmitReason[2]; unsigned char CommonAsduAddress[2]; unsigned char InformationObject[4]; unsigned char FormatType; unsigned char UCommand; unsigned char ReceiveHimNumber[2]; unsigned short SendMeNumber; unsigned short ApduLength; unsigned char AsduType; unsigned char AsduQualifier; unsigned char Qcc; unsigned char FreezeSign; unsigned char PulseGroup; unsigned char TimeSave[8]; unsigned char Table; unsigned short HasSendNumber; unsigned short NeedSendNumber; unsigned short LeftSendNumber; unsigned short K; unsigned short W; unsigned short ReceiveYkId; unsigned char YkCellAction; unsigned short YkCellNumber; unsigned short YkKgNumber; unsigned char YkNowState; unsigned short MediaNumber; unsigned char YkError; unsigned char YkYtType; unsigned char YkStartSign; unsigned long YkStartTime; unsigned short SystemState; unsigned char DataBuff[160]; unsigned char SetTimeFlag; unsigned char GroupSendBuffer[NS_IEC104_MAX_GROUP][NS_IEC104_SENDBUFFER]; unsigned short GroupSendLength[NS_IEC104_MAX_GROUP]; short YcLastValue[NS_IEC104_MAX_YC]; unsigned char YcNap[NS_IEC104_MAX_YC]; unsigned char YcChangeCycle; unsigned short YcLibIndex; unsigned short YcChangeCount; unsigned char CosSign; unsigned char NetRunSign; unsigned char SetNetSign; unsigned char TableNo; /*unsigned short XYxNum; unsigned short XYmNum;*/ unsigned short XYcNum; unsigned short XYcCycleNum; } NS_IEC104_MAIN; #define NS_IEC104_USE_CYCLE 5 typedef struct _CYCLE { time_t LastTime; time_t TimeNap ; time_t TimeSign; }NS_SEND_TIME_NAP; typedef struct _SYS_DATE { unsigned short NsYxTableNumber; unsigned short NsYmTableNumber; unsigned short NsYcTableNumber; }NS_SYSTEM_DATA_MODE ; NS_IEC104_MAIN NsIec104Struct; static NS_SEND_TIME_NAP NsIec104Cycle[NS_IEC104_USE_CYCLE]; static unsigned short NsIec104Nap[NS_IEC104_USE_CYCLE]={/*5*/120,15,20,25,30}; #endif