⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pdm.h

📁 pdm装置通讯规约
💻 H
字号:
//**************************************************************************************//
//				   		--PDM规约---		  									//
//**************************************************************************************//
/////////////////////////////////////////////////////////////////////////////////////////
#ifndef _PDM_PTL_H
#define _PDM_PTL_H
/////////////////////////////////////////////////////////////////////////////////////////
#include "slBSP.h"
#include "..\..\Channel\ChPtl.h"
/////////////////////////////////////////////////////////////////////////////////////////

//PDM800常量定义
#define PDM800_YCSSZ_STARTADDR	0x017A /*遥测瞬时值起始地址*/#define PDM800_YCPJZ_STARTADDR	0x01A1 /*遥测平均值起始地址*/#define PDM800_YCZDZ_STARTADDR	0x01C8 /*遥测最大值起始地址*/#define PDM800_YCZXZ_STARTADDR	0x01EF /*遥测最小值起始地址*/#define PDM800_YXO1_STARTADDR	0x023E /*继电器1状态起始地址*/#define PDM800_YXO2_STARTADDR	0x0242 /*继电器2状态起始地址*/#define PDM800_DDMOD2_STARTADDR	0x012 /*电度起始地址*///PDM801常量定义
#define PDM801_YCSSZ_STARTADDR	0x0100 /*遥测瞬时值起始地址*/#define PDM801_YXI_STARTADDR	0x0000 /*状态起始地址*/#define PDM801_YXO_STARTADDR	0x0000 /*继电器状态起始地址*/#define PDM801_DDMOD1_STARTADDR	0x010A /*电度起始地址*/#define PDM801_DDMOD2_STARTADDR	0x0105 /*电度起始地址*/#define PDM801_YK_STARTADDR	0x0000 /*遥控起始地址*///PDM803常量定义
#define PDM803_YCSSZ_STARTADDR	0x00FD /*遥测瞬时值起始地址*/#define PDM803_YXI_STARTADDR	0x0000 /*状态起始地址*/#define PDM803_YXO_STARTADDR	0x0000 /*继电器状态地址*/#define PDM803_DDMOD0_STARTADDR	0x00F8 /*电度起始地址*/#define PDM803_DDMOD1_STARTADDR	0x011C /*电度起始地址*/#define PDM803_YK_STARTADDR	0x000 /*遥控起始地址*///PDM810常量定义
#define PDM810_YCSSZ_STARTADDR	0x00FD /*遥测瞬时值起始地址*/#define PDM810_YCSSZ_ENDADDR	0x0119 /*遥测瞬时值结束地址*/#define PDM810_YXI_STARTADDR	0x0000 /*状态起始地址*/#define PDM810_YXO_STARTADDR	0x0000 /*继电器状态地址*/#define PDM810_DDMOD0_STARTADDR	0x00F8 /*电度起始地址*/#define PDM810_DDMOD1_STARTADDR	0x011C /*电度起始地址*/#define PDM810_YK_STARTADDR	0x0000 /*遥控起始地址*/
//PDM820常量定义
#define PDM820_YCSSZ_STARTADDR	0x00FD /*遥测瞬时值起始地址*/#define PDM820_YXI_STARTADDR	0x0000 /*状态起始地址*/#define PDM820_YXO_STARTADDR	0x0000 /*继电器状态地址*/#define PDM820_DDMOD0_STARTADDR	0x00F8 /*电度起始地址*/#define PDM820_DDMOD1_STARTADDR	0x011C /*电度起始地址*/#define PDM820_YK_STARTADDR	0x0000 /*遥控起始地址*/#define MODBUS_READ_REGISTER_FUNCODE	03 #define MODBUS_READ_DI_FUNCODE	02 #define MODBUS_READ_DO_FUNCODE	01 #define MODBUS_WRITE_DO_FUNCODE	05 #define MODBUS_WRITE_SREGISTER_FUNCODE	06 #define MODBUS_WRITE_MREGISTER_FUNCODE	10 #define MODBUS_DATA_START	03 /////////////////////////////////////////////////////////////////////////////////////////
//PDM私用参数结构定义
typedef struct PDM_DATA_PARA
{
	WORD	wYcStartAddr;
	WORD	wYxIStartAddr;
	WORD	wYxOStartAddr;
	WORD	wDdStartAddr;
	WORD	wYkStartAddr;
	WORD	wYtStartAddr;
	WORD	wYcNum;
	WORD	wYcMod;
	WORD	wYxINum;	/*开关量输入状态*/
	WORD	wYxONum;	/*开关量输出状态*/
	WORD	wYxOGoupNum;/*开关量输出状态组数*/
	WORD	wYxMod;
	WORD	wDdNum;
	WORD	wDdMod;
	WORD	wYkNum;
	WORD	wYtNum;
};
/////////////////////////////////////////////////////////////////////////////////////////
class CPdm:public CChPtl
{
public:
	CPdm(){};
	~CPdm(){};
private:
	PDM_DATA_PARA	m_PDMPara[CH_MAX_IED_NUM];
	BYTE	m_byStartNo;		//起始表号
	BYTE	m_byEndNo;			//结束表号
	BYTE	m_byAskMeterNo;		//查询命令记录表号
	BYTE	m_byFunCode;		//功能码
	BYTE	m_byRecvMiterAddr;	//接收地址
	WORD	m_wAskStep;		//查询步骤
	BYTE    m_byCtrlCode;     	//控制码
	BYTE	m_byDataLen;		//数据长度
	INT		m_nDdVal;
	INT		m_nUnDataCnt;
	INT		m_nUnDataLen;
	TASK*	m_pTask;
	CIED*	m_pFrameIED;
	CIED*	m_pUnFrameIED;
	INT		m_nFrameStep;
public:// 重载函数
	void	InitPtl();
	INT		Frame(BYTE* pSendBuf,INT nLen);
	void	UnFrame(BYTE* pRecvBuf,INT nLen);
	void    OnTimer(void);
public://私有函数
	BYTE	ValueToBCD(BYTE byVal);
	BYTE	BCDToValue(BYTE byBCD);
	void	initIEDPara();
	void	loadIEDPara(CIED* pIED,WORD wID);
	void	load800IEDPara(CIED* pIED,WORD wID);
	void	load801IEDPara(CIED* pIED,WORD wID);
	void	load803IEDPara(CIED* pIED,WORD wID);
	void	load810IEDPara(CIED* pIED,WORD wID);
	void	load820IEDPara(CIED* pIED,WORD wID);
	void	UnFrameYxO1(BYTE* pRecvBuf,INT nLen);
	void	UnFrameYxO2(BYTE* pRecvBuf,INT nLen);
	void	UnFrameYxI(BYTE* pRecvBuf,INT nLen);
	void	UnFrameYc(BYTE* pRecvBuf,INT nLen);
	void	UnFrameYk(BYTE* pRecvBuf,INT nLen);
	INT		FrameAskData(BYTE* pSendBuf);
	WORD	FrameAskYc(WORD wID,BYTE* pSendBuf);
	WORD	FrameAskYxI(WORD wID,BYTE* pSendBuf);
	WORD	FrameAskYxO1(WORD wID,BYTE* pSendBuf);
	WORD	FrameAskYxO2(WORD wID,BYTE* pSendBuf);
	WORD	FrameAskDd(WORD wID,BYTE* pSendBuf);
	WORD	AddCRC(BYTE* pbyBuf,WORD wLen);
	BOOL	CheckCRC(BYTE* pbyBuf,WORD wLen);
};
/////////////////////////////////////////////////////////////////////////////////////////
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -