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.
iec104/include/HXIec104.h

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