157 lines
4.1 KiB
C
157 lines
4.1 KiB
C
![]() |
|
|||
|
|
|||
|
|
|||
|
#ifndef IEC104_LINK_CLN_123_INCLUDED
|
|||
|
#define IEC104_LINK_CLN_123_INCLUDED
|
|||
|
|
|||
|
|
|||
|
#ifdef __cplusplus
|
|||
|
extern "C" {
|
|||
|
#endif
|
|||
|
/************************************************************************/
|
|||
|
|
|||
|
#include "iec104_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 IEC104_SEND_HIGHCMD_BUFFER_MAX_COUNT 32
|
|||
|
|
|||
|
//һ<><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٻ<EFBFBD><D9BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
#define IEC104_SEND_LOWCMD_BUFFER_MAX_COUNT 128
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/*************2011.10.26<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һЩ<EFBFBD><EFBFBD><EFBFBD>õĺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>****************************/
|
|||
|
|
|||
|
typedef enum
|
|||
|
{
|
|||
|
IEC104_I_CMD_TYPE_HIGH=0,
|
|||
|
IEC104_I_CMD_TYPE_LOW
|
|||
|
} IEC104_I_CMD_TYPE;
|
|||
|
|
|||
|
|
|||
|
/*************2011.10.26<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һЩ<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD>Ķ<EFBFBD><EFBFBD><EFBFBD>****************************/
|
|||
|
typedef enum{
|
|||
|
IEC104_LINK_STATUS_CLN_IDLE=0, //<2F><><EFBFBD>У<EFBFBD><D0A3><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD>ӻ<EFBFBD>û<EFBFBD>н<EFBFBD><D0BD><EFBFBD>
|
|||
|
IEC104_LINK_STATUS_CLN_OK, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
//<2F><><EFBFBD><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD>õ<EFBFBD>
|
|||
|
IEC104_LINK_STATUS_CLN_START_SEND, //<2F><><EFBFBD><EFBFBD>O7<4F><37><EFBFBD><EFBFBD>֡
|
|||
|
IEC104_LINK_STATUS_CLN_START_CONFIRM //<2F>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7>
|
|||
|
} IEC104_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>ⲿ
|
|||
|
|
|||
|
IEC104_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[IEC104_SEND_HIGHCMD_BUFFER_MAX_COUNT][IEC104_APDU_MAX_LEN];
|
|||
|
|
|||
|
ST_INT send_lowcmd_readIP;
|
|||
|
ST_INT send_lowcmd_writeIP;
|
|||
|
ST_UCHAR send_lowcmd_Buffer[IEC104_SEND_LOWCMD_BUFFER_MAX_COUNT][IEC104_APDU_MAX_LEN];
|
|||
|
|
|||
|
} link_send_buffer;
|
|||
|
|
|||
|
struct
|
|||
|
{
|
|||
|
IEC104_LINK_STATUS_CLN linkStatus;
|
|||
|
|
|||
|
ST_UCHAR commAddr; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ,ֻ<>з<EFBFBD><D0B7><EFBFBD>GI<47><49>Уʱ<D0A3><CAB1>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>
|
|||
|
ST_UCHAR devAddr;
|
|||
|
|
|||
|
ST_UINT16 IcountRecv;
|
|||
|
ST_UINT16 IcountSend;
|
|||
|
|
|||
|
ST_UINT16 IcountLocalUnConfirm; //<2F>յ<EFBFBD><D5B5><EFBFBD>δȷ<CEB4>ϵ<EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD>
|
|||
|
ST_UINT16 IcountRemoteConfirm; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˷<EFBFBD><CBB7>ʹ<EFBFBD><CDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
ST_UINT16 IcountmaxSend; //δȷ<CEB4>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD><C2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>I֡<49><D6A1><EFBFBD><EFBFBD> 12*2
|
|||
|
ST_UINT16 IcountmaxToConfirm; //<2F>յ<EFBFBD>I֡<49><D6A1><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><F2B1BEB4><EFBFBD><EFBFBD>ѵ<EFBFBD><D1B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7>֡ 8*2
|
|||
|
|
|||
|
ST_DOUBLE record_time_t0; //104<30>д<EFBFBD>վ<EFBFBD><D5BE><EFBFBD>ж<EFBFBD>T0(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӳ<EFBFBD>ʱ)
|
|||
|
ST_DOUBLE space_t0; //30
|
|||
|
|
|||
|
ST_DOUBLE record_time_t1_test; //<2F><><EFBFBD>Ͳ<EFBFBD><CDB2><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD>, ֹͣ<CDA3><D6B9><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7>
|
|||
|
ST_DOUBLE record_time_t1_I; //<2F><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹͣ<CDA3><D6B9><EFBFBD>յ<EFBFBD>Iȷ<49><C8B7>
|
|||
|
ST_DOUBLE space_t1; //15
|
|||
|
|
|||
|
ST_DOUBLE record_time_t2; //<2F><>¼:<3A>յ<EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹͣ:<3A><><EFBFBD><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7>
|
|||
|
ST_DOUBLE space_t2; //10
|
|||
|
|
|||
|
ST_DOUBLE record_time_t3; //<2F><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><CDA3>յ<EFBFBD>֡, <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD><CDB2><EFBFBD>֡
|
|||
|
ST_DOUBLE space_t3; //20
|
|||
|
|
|||
|
|
|||
|
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,
|
|||
|
} link_records;
|
|||
|
|
|||
|
|
|||
|
struct
|
|||
|
{
|
|||
|
IEC104_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 *iec104_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>
|
|||
|
|
|||
|
ST_INT monitorChannel; //ͨ<><CDA8><EFBFBD><EFBFBD>
|
|||
|
} link_attrib;
|
|||
|
|
|||
|
|
|||
|
} IEC104_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 iec104_link_cln_save_asdu( IEC104_LINK_CLN *iec104_link_cln, ST_UCHAR *asdu, ST_INT asduLen, IEC104_I_CMD_TYPE type );
|
|||
|
|
|||
|
/***<2A><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ***/
|
|||
|
ST_RET iec104_link_cln_property_init( IEC104_LINK_CLN * iec104_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 iec104_link_cln_property_set( IEC104_LINK_CLN * iec104_link, IEC104_LINK_TYPE link_type,
|
|||
|
ST_VOID *link_attrib, ST_UCHAR commAddr, ST_UCHAR devAddr,
|
|||
|
ST_VOID *iec104_service_cln, ST_INT monitorChl );
|
|||
|
|
|||
|
/*** <20>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD> ***/
|
|||
|
ST_RET iec104_link_cln_property_release( IEC104_LINK_CLN * iec104_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 iec104_link_cln_check_status( IEC104_LINK_CLN *iec104_link );
|
|||
|
|
|||
|
/** <20><><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD> **/
|
|||
|
ST_RET iec104_link_cln_closeLink( IEC104_LINK_CLN *iec104_link );
|
|||
|
|
|||
|
/************************************************************************/
|
|||
|
#ifdef __cplusplus
|
|||
|
}
|
|||
|
#endif
|
|||
|
|
|||
|
|
|||
|
#endif
|
|||
|
|