155 lines
4.2 KiB
C
155 lines
4.2 KiB
C
![]() |
|
|||
|
|
|||
|
|
|||
|
#ifndef IEC103_LINK_CLN_123_INCLUDED
|
|||
|
#define IEC103_LINK_CLN_123_INCLUDED
|
|||
|
|
|||
|
|
|||
|
#ifdef __cplusplus
|
|||
|
extern "C" {
|
|||
|
#endif
|
|||
|
/************************************************************************/
|
|||
|
|
|||
|
#include "iec103_apdu.h"
|
|||
|
#include "general_function.h"
|
|||
|
#include "general_socket.h"
|
|||
|
#include "general_serial.h"
|
|||
|
#include "general_can.h"
|
|||
|
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD>ң<EEA3AC>ص<EFBFBD>
|
|||
|
#define IEC103_SEND_HIGHCMD_BUFFER_MAX_COUNT 32
|
|||
|
|
|||
|
//һ<><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٻ<EFBFBD><D9BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
#define IEC103_SEND_LOWCMD_BUFFER_MAX_COUNT 128
|
|||
|
|
|||
|
//<2F><>̬<EFBFBD><CCAC><EFBFBD><EFBFBD>103<30>ķ<EFBFBD><C4B7>ͼ<EFBFBD><CDBC><EFBFBD>T1<54><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ죬<DDBF><ECA3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
|||
|
#define IEC103_CLN_SEND_SPACE_T1_NORAML 300
|
|||
|
|
|||
|
|
|||
|
/*************2011.10.26<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һЩ<EFBFBD><EFBFBD><EFBFBD>õĺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>****************************/
|
|||
|
|
|||
|
typedef enum
|
|||
|
{
|
|||
|
IEC103_I_CMD_TYPE_HIGH=0,
|
|||
|
IEC103_I_CMD_TYPE_LOW
|
|||
|
} IEC103_I_CMD_TYPE;
|
|||
|
|
|||
|
|
|||
|
/*************2011.10.26<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һЩ<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD>Ķ<EFBFBD><EFBFBD><EFBFBD>****************************/
|
|||
|
typedef enum{
|
|||
|
IEC103_LINK_STATUS_CLN_IDLE=0, //<2F><><EFBFBD>У<EFBFBD><D0A3><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD>ӻ<EFBFBD>û<EFBFBD>н<EFBFBD><D0BD><EFBFBD>
|
|||
|
IEC103_LINK_STATUS_CLN_OK, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB>˷<EFBFBD><CBB7><EFBFBD>λCU<43>졣<EFBFBD><ECA1A3><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч
|
|||
|
//<2F><><EFBFBD><EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD>õ<EFBFBD>
|
|||
|
IEC103_LINK_STATUS_CLN_START_SEND, //<2F>յ<EFBFBD>CUӦ<55><D3A6>֡<EFBFBD><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λFCB<43><42>
|
|||
|
IEC103_LINK_STATUS_CLN_START_CONFIRM, //<2F><>λFCB<43>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч
|
|||
|
IEC103_LINK_STATUS_CLN_ERROR //<2F><><EFBFBD><EFBFBD>ʾҪ<CABE><D2AA><EFBFBD>ӵķ<D3B5><C4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD><CBB2><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ʱ<EFBFBD>䳬ʱ<E4B3AC><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
} IEC103_LINK_STATUS_CLN;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/********<2A>յ<EFBFBD><D5B5><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD><D3A3><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ṹ<EFBFBD><E1B9B9>*******/
|
|||
|
typedef struct
|
|||
|
{
|
|||
|
FLAG_LINK flagLink; //<2F><><EFBFBD><EFBFBD>֪ͨ<CDA8>ⲿ
|
|||
|
|
|||
|
IEC103_LINK_PROPER link_proper;
|
|||
|
|
|||
|
struct
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϳ<EFBFBD><CDBF>ƣ<EFBFBD><C6A3><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>ּ<EFBFBD><D6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEBBBA><EFBFBD><EFBFBD>)
|
|||
|
ST_INT send_highcmd_readIP;
|
|||
|
ST_INT send_highcmd_writeIP;
|
|||
|
ST_UCHAR send_highcmd_Buffer[IEC103_SEND_HIGHCMD_BUFFER_MAX_COUNT][IEC103_APDU_MAX_LEN];
|
|||
|
|
|||
|
ST_INT send_lowcmd_readIP;
|
|||
|
ST_INT send_lowcmd_writeIP;
|
|||
|
ST_UCHAR send_lowcmd_Buffer[IEC103_SEND_LOWCMD_BUFFER_MAX_COUNT][IEC103_APDU_MAX_LEN];
|
|||
|
|
|||
|
} link_send_buffer;
|
|||
|
|
|||
|
struct
|
|||
|
{
|
|||
|
IEC103_LINK_STATUS_CLN linkStatus;
|
|||
|
|
|||
|
IEC103_CTRL ctrl; //<2F><>·<EFBFBD><C2B7><EFBFBD>Ʋ<EFBFBD><C6B2><EFBFBD>
|
|||
|
ST_UCHAR ctrl_ACD_recv; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD>λ
|
|||
|
|
|||
|
ST_INT reTransNum; //<2F><><EFBFBD>ͼ<EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD>ȷ<EFBFBD>յ<EFBFBD><D5B5><EFBFBD>0
|
|||
|
ST_INT reTransMaxNum; //3
|
|||
|
|
|||
|
ST_DOUBLE record_time_t0; //<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
ST_DOUBLE space_time_t0; //1*1000,
|
|||
|
|
|||
|
ST_DOUBLE record_time_t1; //<2F><>ȷ<EFBFBD><C8B7>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>´η<C2B4><CEB7>ͼ<EFBFBD><CDBC><EFBFBD>
|
|||
|
ST_DOUBLE space_time_t1; //300,
|
|||
|
|
|||
|
ST_DOUBLE record_time_error; //<2F><>¼:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>תΪIDLE״̬
|
|||
|
ST_DOUBLE space_time_error; //120*1000,
|
|||
|
|
|||
|
ST_DOUBLE record_time_gi; //<2F><><EFBFBD>ٻ<EFBFBD><D9BB><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
ST_DOUBLE space_time_gi; //120*1000,
|
|||
|
|
|||
|
ST_DOUBLE record_time_fixtime; //Уʱ
|
|||
|
ST_DOUBLE space_time_fixtime; //130*1000,
|
|||
|
|
|||
|
ST_DOUBLE space_time_t1_noraml; //<2F><><EFBFBD><EFBFBD><EFBFBD>ٻ<EFBFBD><D9BB><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
ST_DOUBLE space_time_t1_l1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ٻ<EFBFBD><D9BB><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
ST_DOUBLE space_time_t1_cmd; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>ʱ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
|
|||
|
|
|||
|
ST_UINT32 sendL2count; //<2F>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD>͵<EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD><DDB8><EFBFBD>
|
|||
|
} link_records;
|
|||
|
|
|||
|
|
|||
|
struct
|
|||
|
{
|
|||
|
IEC103_LINK_TYPE link_type;
|
|||
|
union
|
|||
|
{
|
|||
|
SOCKET_LINK_ATTRIB *sock_attrib; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>붨<EFBFBD><EBB6A8>Ϊָ<CEAA>룬<EFBFBD><EBA3AC>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>λ<EFBFBD><CEBB>
|
|||
|
SERIAL_ATTRIB *serial_attrib; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD>
|
|||
|
CAN_LINK_ATTRIB *can_link; //CAN<41><4E><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD>
|
|||
|
} u;
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>Ϳ<EFBFBD><CDBF><EFBFBD><EFBFBD><EFBFBD>TCP <20><><EFBFBD><EFBFBD> <20><> CAN
|
|||
|
ST_VOID *iec103_service_cln; //<2F><><EFBFBD>汾ָ<E6B1BE><D6B8>, <20>յ<EFBFBD>I<EFBFBD><49>ʱ<EFBFBD><CAB1>ȷ<EFBFBD>Ͻ<EFBFBD><CFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD>״̬
|
|||
|
LINK_BUS_STATUS bus_status;
|
|||
|
|
|||
|
ST_INT monitorChannel; //ͨ<><CDA8><EFBFBD><EFBFBD>
|
|||
|
} link_attrib;
|
|||
|
|
|||
|
|
|||
|
} IEC103_LINK_CLN;
|
|||
|
|
|||
|
//<2F>յ<EFBFBD>ASDUʱ<55><CAB1><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
/***<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ʱ<EFBFBD><EFBFBD><F2A3ACB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݷŵ<DDB7>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>***/
|
|||
|
ST_RET iec103_link_cln_save_asdu( IEC103_LINK_CLN *iec103_link_cln, ST_UCHAR *asdu, ST_INT asduLen, IEC103_I_CMD_TYPE type );
|
|||
|
|
|||
|
/***<2A><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ***/
|
|||
|
ST_RET iec103_link_cln_property_init( IEC103_LINK_CLN * iec103_link );
|
|||
|
|
|||
|
/*** <20><>Ҫ<EFBFBD><D2AA><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ***/
|
|||
|
ST_RET iec103_link_cln_property_set( IEC103_LINK_CLN * iec103_link, IEC103_LINK_TYPE link_type,
|
|||
|
ST_VOID *link_attrib, ST_UCHAR linkAddr, ST_VOID *iec103_service_cln, ST_INT monitorChl, ST_UCHAR commAddr,
|
|||
|
ST_INT t1Noraml, ST_INT t1L1, ST_INT t1Cmd );
|
|||
|
|
|||
|
/*** <20>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD> ***/
|
|||
|
ST_RET iec103_link_cln_property_release( IEC103_LINK_CLN * iec103_link );
|
|||
|
|
|||
|
|
|||
|
/** ѭ<><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD>ӣ<EFBFBD><D3A3><EFBFBD><EFBFBD><EFBFBD>״̬, <20><><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD><DDA1><EFBFBD><EFBFBD>سɹ<D8B3><C9B9><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD> **/
|
|||
|
ST_RET iec103_link_cln_check_status( IEC103_LINK_CLN *iec103_link );
|
|||
|
|
|||
|
|
|||
|
/************************************************************************/
|
|||
|
#ifdef __cplusplus
|
|||
|
}
|
|||
|
#endif
|
|||
|
|
|||
|
|
|||
|
#endif
|
|||
|
|