You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
179 lines
5.1 KiB
C
179 lines
5.1 KiB
C
#ifndef __HX_IEC104_H
|
|
#define __HX_IEC104_H
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
|
|
#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
|
|
|
|
|