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

📄 interface.cpp

📁 ADE7758校正程序,只需根据需要添加通信子程序
💻 CPP
字号:
// interface.cpp

/* interface.cpp中的函数是校验程序Calibration和校验台或ADE7758交互的一个接口
   根据校正的需要设置了一些函数接口,随着校验台给出的接口的内容的不同,
   可以在interface.cpp中补充接口函数中的代码,或者加入删除接口函数
 */

#include "StdAfx.h"


//////////////////////////////////////////////////////////////////////////
// ------------------ 在各校正步骤中可能用到的接口函数 -----------------//
// SetupPulseOutput()
// SetupSystem()
// EnableAPCF()
// EnableVARCF()
// SetRegistersAPCF()
// SetRegistersVARCF()
// ReadFrequencyAPCF()
// ReadFrequencyVARCF()
// GetFreq()
// ResetStatusRegister()
// ReadRegistersWATTHR()
// ReadRegistersVAHR()
// ReadRegistersVARHR()
// InitLineMode()
//////////////////////////////////////////////////////////////////////////

/*  -------------------------------------------------------------------
 *	SetupPulseOutput()
 *  函数功能: 根据参数phase对Palse output进行设置
 *  参数说明
 *		phase: 相位,表明对那一相进行设置; phase = 0, 1, 2分别表示A相, B相和C相
 */
void SetupPulseOutput(int phase)
{
	switch(phase) {
	case 0:		// Phase A

		// 在此处加入代码,对A相的Pulse Output进行设置

		break;
	case 1:		// Phase B

		// 在此处加入代码,对B相的Pulse Output进行设置

		break;
	case 2:		// Phase C

		// 在此处加入代码,对C相的Pulse Output进行设置

		break;
	default:
		break;
	}
}


/*  -------------------------------------------------------------------
 *	SetupSystem()
 *  函数功能: 设置测试的环境,测试电流,测试电压以及pf
 *  参数说明
 *		TestCur: 测试电流的值
 *		TestVol: 测试电压的值
 *		pf: power factor的值, pf = 1
 */
void SetupSystem(double Cur, double Vol, double pf)
{
	// 在此加入设置测试环境的代码

	return;
}


/*  -------------------------------------------------------------------
 *	EnableAPCF()
 *  函数功能: 开启APCF
 */
void EnableAPCF()
{
	// 在此处加入代码开启APCF

	return;
}


/*  -------------------------------------------------------------------
 *	EnableVARCF()
 *  函数功能: 开启VARCF
 */
void EnableVARCF()
{
	// 在此处加入代码开启VARCF

	return;
}


/*  -------------------------------------------------------------------
 *	SetRegistersAPCF()
 *  函数功能: 设置ADE7758中的寄存器APCF(APCFNUM, APCFDEN)
 *  参数说明
 *		APCFDEN: 需要设置的APCFDEN的值
 *		APCFNUM: 需要设置的APCFNUM的值
 */
void SetRegistersAPCF(int APCFNUM, int APCFDEN)
{
	// 在此处加入代码,对寄存器APCF(APCFNUM, APCFDEN)进行设置

	return;
}


/*  -------------------------------------------------------------------
 *	SetRegistersVARCF()
 *  函数功能: 设置ADE7758中的寄存器VARCF(VARCFNUM, VARCFDEN)
 *  参数说明
 *		VARCFDEN: 需要设置的VARCFDEN的值
 *		VARCFNUM: 需要设置的VARCFNUM的值
 */
void SetRegistersVARCF(int VARCFNUM, int VARCFDEM)
{
	// 在此处加入代码,对寄存器VARCF(VARCFNUM, VARCFDEN)进行设置

	return;
}


/*  -------------------------------------------------------------------
 *	ReadFrequencyAPCF()
 *  函数功能: 读取实际测试得到的频率APCF
 *  返回值说明:
 *		返回实际测试得到的频率APCF
 */
double ReadFrequencyAPCF()
{
	double frequency = 0.0;

	// 在此加入读取实际测试频率APCF的代码

	return frequency;
	
}

/*  -------------------------------------------------------------------
 *	ReadFrequencyVARCF()
 *  函数功能: 读取实际测试得到的频率VARCF
 *  返回值说明:
 *		返回实际测试得到的频率VARCF
 */
double ReadFrequencyVARCF()
{
	double frequency = 0.0;

	// 在此加入读取实际测试频率VARCF的代码

	return frequency;
}

/*  -------------------------------------------------------------------
 *	GetFreq()
 *  函数功能: 从寄存器中读取指定相位的实测频率
 *  参数说明
 *		phase: 相位,表明读取哪一相的频率; phase = 0, 1, 2分别表示A相, B相和C相
 */
int GetFreq(int phase)
{
	int frequency = 0;

	switch(phase) {
	case 0:		// Phase A

		// 在此处加入代码,设置为A相,读出频率

		break;
	case 1:		// Phase B

		// 在此处加入代码,设置为B相,读出频率

		break;
	case 2:		// Phase C

		// 在此处加入代码,设置为C相,读出频率

		break;
	default:
		break;
	}

	return frequency;
}

/*  -------------------------------------------------------------------
 *	ResetStatusRegister()
 *  函数功能: 复位状态寄存器
 */
void ResetStatusRegister()
{
	// 在次加入代码,复位状态寄存器

	return;
}

/*  -------------------------------------------------------------------
 *	ReadRegistersWATTHR()
 *  函数功能: 读取WATTHR寄存器
 *  参数说明
 *		WATTHR: 地址, WATTHR[0-2]用于存放三相WATTHR的值
 */
void ReadRegistersWATTHR(int* WATTHR)
{
	// 在此加入代码,读取三相WATTHR寄存器

	return;
}

/*  -------------------------------------------------------------------
 *	ReadRegistersVAHR()
 *  函数功能: 读取VAHR寄存器
 *  参数说明
 *		VAHR: 地址, VAHR[0-2]用于存放三相VAHR的值
 */
void ReadRegistersVAHR(int* VAHR)
{
	// 在此加入代码,读取三相VAHR寄存器

	return;
}

/*  -------------------------------------------------------------------
 *	ReadRegistersVARHR()
 *  函数功能: 读取VARHR寄存器
 *  参数说明
 *		VARHR: 地址, VARHR[0-2]用于存放三相VARHR的值
 */
void ReadRegistersVARHR(int* VARHR)
{
	// 在此加入代码,读取三相VARHR寄存器

	return;
}

/*  -------------------------------------------------------------------
 *	InitLineMode()
 *  函数功能: 初始化Line模式所需要的寄存器
 */
void InitLineMode()
{
	// Set LYCMODE register

	// Choose accumulation time(LINECYC)

	// Set mask for LENERGY interrupt

	return;
}





//////////////////////////////////////////////////////////////////////////
// ------------- 校正IRMS和VRMS Offset时需要用到的接口函数 -------------//
// InitIVRMSOffsetCalibration()
// ReadRegistersIVRMS()
// WriteRegistersIVRMS()
//////////////////////////////////////////////////////////////////////////

/*  -------------------------------------------------------------------
 *	InitIVRMSOffsetCalibration()
 *  函数功能: 初始化校正IRMS VRMS Offset
 */
void InitIVRMSOffsetCalibration()
{
	// Step 1: Set configuration registers for zero crossng on all phases
	// 在此处加入代码,设置ADE7758中过零点检测需要的寄存器

	// Step 2: Set the interrupt mask register for zero-crossing detection on all phases
	// 在此处加入代码,设置ADE7758中的中断寄存器

	return;
}


/*  -------------------------------------------------------------------
 *	ReadRegistersIVRMS()
 *  函数功能: 从寄存器中读取IRMS和VRMS的实际测量值,并将这些值存到指定的地址(nIRMS, nVRMS)中,
 *			  计算过程中,计算N次取平均
 *  参数说明
 *		IRMS: 地址, IRMS[0-2]用于存放三相IRMS的值
 *		VRMS: 地址, VRMS[0-2]用于存放三相IVMS的值
 *		N: 计算的次数, IRMS和VRMS的值均为计算N次取平均	
 */
void ReadRegistersIVRMS(int* IRMS, int* VRMS, int N)
{
	// 在此处加入读取寄存器的代码
	
	return;
}

/*  -------------------------------------------------------------------
 *	WriteRegistersIVRMS()
 *  函数功能: 将IRMS和VRMS Offset校正的结果写入相应寄存器
 *  参数说明
 *		IRMSOS: 地址, IRMSOS[0-2]用于存放三相IRMSOS的值
 *		VRMSOS: 地址, VRMSOS[0-2]用于存放三相VRMSOS的值
 */
void WriteRegistersIVRMS(int* IRMSOS, int* VRMSOS)
{
	// 在此处加入代码,将IRMS,VRMS Offset校验的结果写入ADE7758相应的寄存器


	return;
}





//////////////////////////////////////////////////////////////////////////
// ---------------- 校正VA WATT Gain时需要用到的接口函数 ---------------//
// InitVAWATTGainCalibration()
// InitVAWATTGainCalibration_LineMode()
// WriteRegistersVAWATT()
//////////////////////////////////////////////////////////////////////////

/*  -------------------------------------------------------------------
 *  InitVAWATTGainCalibration()
 *	函数功能:  初始化VA WATT Gain校正过程中需要的寄存器
 */
void InitVAWATTGainCalibration()
{
	// Step 1: Enable APCF and VARCF pulse outputs
	// 设置寄存器,允许APCF和VARCF脉冲输出
	EnableAPCF();
	EnableVARCF();

	// Step 1A: Select VA for VARCF output
	// 选择VA做为VARCF的输出


	// Step 2: Set gain registers xWG, xVAG to zero
	//设置增益寄存器xWG, xVAG为逻辑零


	return;
}

/*  -------------------------------------------------------------------
 *  InitVAWATTGainCalibration_LineMode()
 *	函数功能:  初始化VA WATT Gain校正过程中需要的寄存器(Line Mode)
 */
void InitVAWATTGainCalibration_LineMode()
{
	// Step 1: Set xWG, xVAG to logic zero

	// Step 2 - 4:	Set LYCMODE register
	//				Choose accumulation time(LINECYC)
	//				Set mask for LENERGY interrupt
	InitLineMode();		// 完成Line Mode所需要的初始化工作

	return;
}

/*  -------------------------------------------------------------------
 *	WriteRegistersVAWATT()
 *  函数功能: 将校验的结果写入ADE7758相应的寄存器
 *  参数说明
 *		WG: 地址,WG[0-2]用于存放WATT Gain三相校验的结果
 *		VAG: 地址,VAG[0-2]用于存放VA Gain三相校验的结果
 */
void WriteRegistersVAWATT(int* pWG, int* pVAG)
{
	// 在此处加入代码,将VA WATT Gain的校验结果写入ADE7758相应的寄存器


	return;
}





//////////////////////////////////////////////////////////////////////////
// ------------------ 校正VAR Gain时需要用到的接口函数 -----------------//
// InitVARGainCalibration()
// WriteRegistersVARGain()
//////////////////////////////////////////////////////////////////////////

/*  -------------------------------------------------------------------
 *  InitVARGainCalibration()
 *	函数功能:  初始化VARGain校正过程中需要的寄存器
 */
void InitVARGainCalibration()
{	
	// Step 1: Enable VARCF pulse output
	// 设置寄存器,允许VARCF脉冲输出(Enable VARCF pulse outputs)
	EnableVARCF();

	// Step 1A: Select VAR for VARCF output
	// 选择VAR做为VARCF的输出(Select VAR for VARCF output)

	// Step 2: Set gain registers xVARG to zero
	//设置增益寄存器xVARG为逻辑零


	return;
}

/*  -------------------------------------------------------------------
 *  InitVARGainCalibration_LineMode()
 *	函数功能:  初始化VAR Gain校正过程中需要的寄存器(Line Mode)
 */
void InitVARGainCalibration_LineMode()
{
	// Step 1: Set xVARG to logic zero

	// Step 2: Set LYCMODE register

	// Step 3: Choose accumulation time(LINECYC)

	// Step 4: Set mask for LENERGY interrupt

	return;
}

/*  -------------------------------------------------------------------
 *	WriteRegistersVARGain()
 *  函数功能: 将VAR Gain校验的结果写入ADE7758相应的寄存器
 *  参数说明
 *		VARG: 地址,VARG[0-2]用于存放VAR Gain三相校验的结果
 */
void WriteRegistersVARGain(int* VARG)
{
	// 在此处加入代码,将VAR Gain的校验结果写入ADE7758相应的寄存器


	return;
}





//////////////////////////////////////////////////////////////////////////
// -------------------- 校正Phase时需要用到的接口函数 ------------------//
// WriteRegistersVARGain()
//////////////////////////////////////////////////////////////////////////

/*  -------------------------------------------------------------------
 *	WriteRegistersVARGain()
 *  函数功能: 将校验的结果写入ADE7758相应的寄存器
 *  参数说明
 *		PHCAL: 地址,PHCAL[0-2]用于存放Phase三相校验的结果
 */
void WriteRegistersPhase(int* PHCAL)
{
	// 在此处加入代码,将Phase的校验结果写入ADE7758相应的寄存器


	return;
}







//////////////////////////////////////////////////////////////////////////
// ----------------- 校正VAR Offset时需要用到的接口函数 ----------------//
// InitVAROffsetCalibration()
// WriteRegistersVAROffset()
//////////////////////////////////////////////////////////////////////////

/*  -------------------------------------------------------------------
 *  InitVAROffsetCalibration()
 *	函数功能:  初始化VAR Offset校正过程中需要的寄存器
 */
void InitVAROffsetCalibration()
{
	// Step 1: Enable VARCF pulse output
	// 设置寄存器,允许VARCF脉冲输出
	EnableVARCF();

	// Step 2: Set offset registers xVAROS to logic zero
	// 设置偏移寄存器xVAROS为逻辑零

	return;
}

/*  -------------------------------------------------------------------
 *	WriteRegistersVAROffset()
 *  函数功能: 将VAR Offset校验的结果写入ADE7758相应的寄存器
 *  参数说明
 *		VAROS: 地址,VAROS[0-2]用于存放VAR Offset三相校验的结果
 */
void WriteRegistersVAROffset(int* VAROS)
{
	// 在此处加入代码,将VAR Offset的校验结果写入ADE7758相应的寄存器


	return;

}





//////////////////////////////////////////////////////////////////////////
// ----------------- 校正WATT Offset时需要用到的接口函数 ----------------//
// InitWATTOffsetCalibration()
// WriteRegistersWATTOffset()
//////////////////////////////////////////////////////////////////////////

/*  -------------------------------------------------------------------
 *  InitWATTOffsetCalibration()
 *	函数功能:  初始化WATT Offset校正过程中需要的寄存器
 */
void InitWATTOffsetCalibration()
{
	// Step 1: Enable APCF pulse outputs
	// 设置寄存器,允许APCF脉冲输出(Enable APCF pulse outputs)
	EnableAPCF();

	// Step 2: Set offset registers xWATTOS to logic zero
	// 设置偏移寄存器xWATTOS为逻辑零

	return;
}

/*  -------------------------------------------------------------------
 *	WriteRegistersWATTOffset()
 *  函数功能: 将WATT Offset校验的结果写入ADE7758相应的寄存器
 *  参数说明
 *		WATTOS: 地址,WATTOS[0-2]用于存放WATT Offset三相校验的结果
 */
void WriteRegistersWATTOffset(int* WATTOS)
{
	// 在此处加入代码,将WATT Offset的校验结果写入ADE7758相应的寄存器


	return;
}





⌨️ 快捷键说明

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