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.

517 lines
13 KiB
C

2 years ago
/************************************************************************************
*
* Copyright (C) 2004-2005 SCADA Control Technology Co., Ltd.
* All rights reserved.
*
* scadaprotect.h
* SCADA
*
2 years ago
*
* 1.0
* aaawen
* 2005/06/02
2 years ago
*
* 1.0
* aaawen
*
2 years ago
*
*
2 years ago
* u8 --- BYTE(usigned char)
* ch --- char
* w --- WORD(u_short, usigned short)
* sh --- short
* b --- BOOL(bool)
* i --- int
* l --- long
* u32 --- u_32
* ui --- unsigned int(u_int)
* ul --- unsigned long(u_long)
* f --- float
* db --- double
* c --- class
* s --- struct
* sta --- static
* g ---
* Array ---
* a ---
* m_ ---
* p ---
* str ---
* ---
* ---
2 years ago
**************************************************************************************/
// buban103.h: interface for the buban103 class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(_SCADABAOHU_H_200506020948__INCLUDED_)
#define _SCADABAOHU_H_200506020948__INCLUDED_
#ifdef OS_LINUX
#include "baohulib/common.h"
#else
#include "common.h"
#endif
//////////////////////////////////////////////////////////////////////////
// 宏定义 //
2 years ago
// WEN 2005.06.02 //
//////////////////////////////////////////////////////////////////////////
/*!
(PROTECT->FEND)
2 years ago
*/
#define pPFV_PROTECT_BYPASS 1
/*!
(FEND->PROTECT)
2 years ago
*/
#define fPFV_PROTECT_BYPASS_ACK 2
/*!
(FEND->PROTECT)
2 years ago
*/
#define fPFV_STATUS 3
/*!
(FEND<->PROTECT)
2 years ago
*/
#define fPFV_NETACTIVE 0xF0
//指令包操作码
2 years ago
/*!
2 years ago
*/
#define hREADFIX 0x01
/*!
2 years ago
*/
#define hREADFIXNO 0x07
/*!
2 years ago
*/
#define hREADPAI 0x09
/*!
2 years ago
*/
#define hREADPDI 0x0b
/*!
2 years ago
*/
#define hREADPWAVE 0x0d
/*!
2 years ago
*/
#define hQUERYFAULT 0x11
/*!
2 years ago
*/
#define hQUERYSELFCHECK 0x12
/*!
2 years ago
*/
#define hWRITEALLFIX 0x15
/*!
2 years ago
*/
#define hWRITESPECIALFIX 0x16
/*!
2 years ago
*/
#define hWRITEFIXACK 0x17
/*!
2 years ago
*/
#define hWRITEFIXNAK 0x18
/*!
2 years ago
*/
#define hWRITEFIXNO 0x19
/*!
2 years ago
*/
#define hWRITEFIXNOACK 0x1a
/*!
2 years ago
*/
#define hWRITEFIXNONAK 0x1b
/*!
2 years ago
*/
#define hRESETPROTECT 0x1c
/*!
2 years ago
*/
#define hCHECKTIME 0x1d
/*!
广
2 years ago
*/
#define hBROADCASTCHECKTIME 0x1e
/*!
2 years ago
*/
#define hSTATUS 0x1f
/*!
2 years ago
*/
#define hCOMMAND 0x20
/*!
2 years ago
*/
#define hDISTCOMMAND 0x21
/*!
2 years ago
*/
#define hCANCEL 0xFF
//应答包操作码
2 years ago
/*!
2 years ago
*/
#define hREADINGDATA 0x02
/*!
2 years ago
*/
#define hFIXDATA 0x03
/*!
2 years ago
*/
#define hREADDATAEND 0x04
/*!
2 years ago
*/
#define hNORESPONSE 0x05
/*!
2 years ago
*/
#define hSYSTEMBUSY 0x06
/*!
2 years ago
*/
#define hFIXNODATA 0x08
/*!
2 years ago
*/
#define hPAIDATA 0x0a
/*!
2 years ago
*/
#define hPDIDATA 0x0c
/*!
2 years ago
*/
#define hPWAVEDATASTART 0x0e
/*!
2 years ago
*/
#define hPWAVEDATA 0x0f
/*!
2 years ago
*/
#define hPWAVEDATAEND 0x10
/*!
2 years ago
*/
#define hPEVENTDATAWITHID 0x13
/*!
2 years ago
*/
#define hPEVENTDATAWITHSTRING 0x14
/*!
2 years ago
*/
#define hWRITEFIXACK 0x17
/*!
2 years ago
*/
#define hWRITEFIXNAK 0x18
/*!
2 years ago
*/
#define hWRITEFIXNOACK 0x1a
/*!
2 years ago
*/
#define hWRITEFIXNONAK 0x1b
/*!
2 years ago
*/
#define hFIXDATAWITHNO 0x22
/*!
2 years ago
*/
#define hPAIDATAWITHNO 0x23
/*!
2 years ago
*/
#define hPDIDATAWITHNO 0x24
// 数据项目属性
2 years ago
/*!
2 years ago
*/
#define ITEM_ATTR_REALVALUE 1
/*!
2 years ago
*/
#define ITEM_ATTR_DEFAULTVALUE 2
/*!
2 years ago
*/
#define ITEM_ATTR_MINMAXSTEP 3
/*!
2 years ago
*/
#define ITEM_ATTR_STANDBY 4
/*!
2 years ago
*/
#define ITEM_ATTR_PRECISION 5
/*!
2 years ago
*/
#define ITEM_ATTR_FIGURE 6
/*!
2 years ago
*/
#define ITEM_ATTR_RATE 7
/*!
2 years ago
*/
#define ITEM_ATTR_LIST 8
/*!
2 years ago
*/
#define ITEM_ATTR_UNIT 9
/*!
2 years ago
*/
#define ITEM_ATTR_DESCRIPTION 10
/*!
()
2 years ago
*/
#define OPERPROTECTTIMEOUT 15
// 是pc机系统还是嵌入式系统
2 years ago
#ifdef PC_MACHINE
#ifdef OS_WINDOWS
#pragma pack (push,1)
#else// OS_UNIX
#pragma pack(1)
#endif //OS_UNIX
#endif
typedef struct tagPROTECTCONTENTHEAD
{
u_32 ummid __attribute__ ((packed));// 操作用户
u_32 uAddr __attribute__ ((packed));// 保护地址
char cFixNo __attribute__ ((packed));// 定值区号
char cCPUNo __attribute__ ((packed));// CPU号
u_32 uFuncCode __attribute__ ((packed));// 操作功能码
u_32 uReserved __attribute__ ((packed));// 保留
2 years ago
}PROTECTCONTENTHEAD, *pPROTECTCONTENTHEAD;
typedef struct
{
u_32 MsgType __attribute__ ((packed));// 信息类型
u_32 PortNumber __attribute__ ((packed));// 信息端口号
u_32 MsgLen __attribute__ ((packed));// 信息长度
//u_char MsgData[1]; // 信息数据
2 years ago
}PROTECTMSGHEAD;
typedef struct
{
u_32 MsgType __attribute__ ((packed));// 信息类型
u_32 PortNumber __attribute__ ((packed));// 信息端口号
u_32 MsgLen __attribute__ ((packed));// 信息长度
u_char MsgData[MAX_RTU_MSG_SIZE] __attribute__ ((packed));// 信息数据
2 years ago
}PROTECTMSG;
// 是pc机系统还是嵌入式系统
2 years ago
#ifdef PC_MACHINE
#ifdef OS_WINDOWS
#pragma pack (pop)
#else// OS_UNIX
#pragma pack (0)
#endif //OS_UNIX
#endif
typedef struct
{
BOOL bPortIdle; // 端口保护操作空闲标识
u_32 timeOut; // 保护操作超时时间
u_32 mmid; // 保护操作用户
2 years ago
} PORTSTATUS, *pPORTSTATUS;
typedef struct tagSCADAPROVDEVDEF
{
/*!
\brief
2 years ago
*/
i_32 m_iRealCommid;
/*!
\brief ()
2 years ago
*/
i_32 m_iProvAddr;
/*!
\brief SOE
2 years ago
\note
()
2 years ago
*/
DEVPROVSOE m_sProvSoe;
i_32 m_iStatusStn;
i_32 m_iStatusPnt;
DBORIENTATION m_sYxInfo;
}SCADAPROVDEVDEF;
typedef struct tagSCADAPROTECTPORTPARAM
{
/*!
\var SCADAPROTECTPORTPARAM::m_achRecvBuf
\brief
2 years ago
\note
MAX_RTU_MSG_SIZE+12() bytes\n
2 years ago
*/
char m_achRecvBuf[MAX_RTU_MSG_SIZE+12];
/*!
\var SCADAPROTECTPORTPARAM::m_iRecvLen
\brief
2 years ago
*/
int m_iRecvLen;
/*!
\var SCADAPROTECTPORTPARAM::m_iRecvLen
\brief
2 years ago
*/
int m_iActiveTimeCnt;
int m_iActiveTimeConst;
/*!
\var SCADAPROTECTPORTPARAM::m_iRecvLen
\brief
2 years ago
*/
int m_iStatusTimeCnt;
int m_iStatusTimeConst;
/*!
2 years ago
*/
i_32 m_iDevNum;
SCADAPROVDEVDEF *m_psProvDev;
SINGLELIST m_sBaoHuData;
char m_chArrayTempletFileName[256];
PORTSTATUS *m_pPrtPortStatus;
/*!
\brief
2 years ago
*/
SIO_PARAM_BAOHU_DEF *m_psBaoHu;
}SCADAPROTECTPORTPARAM, *pSCADAPROTECTPORTPARAM;
/////////////////////////以下为通用函数接口///////////////////////////
2 years ago
/*!
\brief
\param commid --
2 years ago
\note
0 -- MaxSerialPortNum + MaxNetPortNum -1\n
2 years ago
*/
void ScadaProtectReadConfig(int commid); // 初始化处理
2 years ago
/*!
\brief
\param commid --
2 years ago
\note
0 -- MaxSerialPortNum + MaxNetPortNum -1\n
\param buf --
\param len --
2 years ago
*/
void ScadaProtectRecvData(int commid, u_char *buf, int len);// 规约读数据处理
2 years ago
/*!
\brief
\param commid --
2 years ago
\note
0 -- MaxSerialPortNum + MaxNetPortNum -1\n
2 years ago
*/
void ScadaProtectTimer(int commid); // 定时器处理
2 years ago
/*!
\brief
\param commid --
2 years ago
\note
0 -- MaxSerialPortNum + MaxNetPortNum -1\n
\param buf --
\param len --
2 years ago
*/
void ScadaProtectYkYtProcess(int commid, u_char *buf, int len); // 遥控遥调处理
2 years ago
/*!
\brief
\param commid --
2 years ago
\note
0 -- MaxSerialPortNum + MaxNetPortNum -1\n
2 years ago
*/
//void ScadaProtectSendSystemTime(int commid); // 系统对时
2 years ago
/*!
\brief 退
\param commid --
2 years ago
\note
0 -- MaxSerialPortNum + MaxNetPortNum -1\n
2 years ago
*/
void ScadaProtectExit(int commid); // 规约退出
2 years ago
/*!
\brief
\param commid --
\param rtumsg --
2 years ago
\note
0 -- MaxSerialPortNum + MaxNetPortNum -1\n
2 years ago
*/
void ScadaProtectBaoHuCmdProcess(int commid, RTUMSG *rtumsg, BOOL bUpData);
/*!
\brief
\param commid --
\param iProvAddr --
\param ppBaoHuDB --
\retval --
2 years ago
*/
int ScadaProtectGetBaohuDataBase(int commid, int iProvAddr, GROUPDEF **ppBaoHuDB);
/////////////////////////通用函数接口结束///////////////////////////////
2 years ago
/////////////////////////以下为通用函数支持接口/////////////////////////
2 years ago
void ScadaProtectProvMakeYkYtCommand(int commid, u_char *buf, int len);
/////////////////////////通用函数支持接口结束///////////////////////////
2 years ago
///////////////////////////以下为配置函数接口///////////////////////////
2 years ago
BOOL InitScadaInfoFromTempletFile(int commid, SCADAPROTECTPORTPARAM *psPortParam,\
char *ptrTemplate, BOOL bMaster);
BOOL GetProvDevNumFromTemplateFileScada(int commid, HDSFILE hFile, SCADAPROTECTPORTPARAM *psPortParam);
BOOL GetProvDevParamFromTemplateFileScada(int commid, HDSFILE hFile, SCADAPROTECTPORTPARAM *psPortParam);
int FindProtectDevFromPntNoScada(SCADAPROTECTPORTPARAM *psPortParam, int iPntNo, int itype);
/////////////////////////////配置函数接口结束///////////////////////////
2 years ago
///////////////////////以下为规约处理函数接口///////////////////////////
2 years ago
void ReduceTimeOut(SCADAPROTECTPORTPARAM *psPortParam);
BOOL IsProtectPortIdle(int commid, SCADAPROTECTPORTPARAM *psPortParam);
BOOL GetProtectPortIdle(int commid, SCADAPROTECTPORTPARAM *psPortParam, PORTSTATUS *pStatus);
BOOL SetProtectPortIdle(int commid, SCADAPROTECTPORTPARAM *psPortParam, PORTSTATUS *pStatus);
BOOL SetProtectPortIdleEx(int commid, int iBaoHuCommid, PORTSTATUS *pStatus);
void SendResponsetoMMI(int commid, int mmid, u_32 ResponseType, PROTECTMSG *pmsg);
//将客户机报文所有的数据从网络字节循序转换成主机字节顺序函数
2 years ago
void AllNetToHostByteSequence(PROTECTMSG *userdata);
//将客户机报文所有的数据从主机字节顺序转换成网络字节顺序函数
2 years ago
void AllHostToNetByteSequence(PROTECTMSG *userdata);
BOOL ScadaProtectConvertToScadaFrameAndSend(int commid);
BOOL ScadaProtectConvertTo103AndSend(int commid, PROTECTMSG *pmsg);
//数据处理函数总入口
2 years ago
void ScadaProtectProcessData(int commid, SCADAPROTECTPORTPARAM *psPortParam, BOOL bProcess);
void ScadaProtectByPassData(int commid, SCADAPROTECTPORTPARAM *psPortParam, PROTECTMSG *pmsg);
BOOL FormatDataAndSend(int commid, PROTECTMSG *pmsg);
void MakeInteractionCmd(int commid, int sourcommid, u_32 ResponseFunc, PROTECTCONTENTHEAD *pSourHead, BOOL bBoardCast);
void MakeNetActivePacket(int commid);
void MakeStatusPacket(int commid);
BOOL MakeSoeDataPacket(int commid);
/////////////////////////规约处理函数接口结束///////////////////////////
2 years ago
/////////////////////////以下为调试函数接口/////////////////////////////
2 years ago
void DispPrtPortStatus(int commid, SCADAPROTECTPORTPARAM *psPortParam);
///////////////////////////调试函数接口结束/////////////////////////////
2 years ago
#endif // !defined(_SCADABAOHU_H_200506020948__INCLUDED_)