|
@@ -511,7 +511,16 @@ void Read_HLW8110_U(void)
|
|
|
float a;
|
|
float a;
|
|
|
|
|
|
|
|
Uart_Read_HLW8110_Reg(REG_RMSU_ADDR,3);
|
|
Uart_Read_HLW8110_Reg(REG_RMSU_ADDR,3);
|
|
|
- DelayNms(10);
|
|
|
|
|
|
|
+ for(uint8_t i = 0;i < 5;i++)
|
|
|
|
|
+ {
|
|
|
|
|
+ if(B_Rx_Finish == TRUE)
|
|
|
|
|
+ {
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+ DelayNms(2);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //DelayNms(10);
|
|
|
if ( u8_RxBuf[u8_RX_Length-1] == HLW8110_checkSum_Read(u8_RX_Length) )
|
|
if ( u8_RxBuf[u8_RX_Length-1] == HLW8110_checkSum_Read(u8_RX_Length) )
|
|
|
{
|
|
{
|
|
|
U32_RMSU_RegData = (unsigned long)(u8_RxBuf[0]<<16) + (unsigned long)(u8_RxBuf[1]<<8) + (unsigned long)(u8_RxBuf[2]);
|
|
U32_RMSU_RegData = (unsigned long)(u8_RxBuf[0]<<16) + (unsigned long)(u8_RxBuf[1]<<8) + (unsigned long)(u8_RxBuf[2]);
|
|
@@ -550,7 +559,15 @@ void Read_HLW8110_PA(void)
|
|
|
float b;
|
|
float b;
|
|
|
|
|
|
|
|
Uart_Read_HLW8110_Reg(REG_POWER_PA_ADDR,4);
|
|
Uart_Read_HLW8110_Reg(REG_POWER_PA_ADDR,4);
|
|
|
- DelayNms(10);
|
|
|
|
|
|
|
+ for(uint8_t i = 0;i < 5;i++)
|
|
|
|
|
+ {
|
|
|
|
|
+ if(B_Rx_Finish == TRUE)
|
|
|
|
|
+ {
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+ DelayNms(2);
|
|
|
|
|
+ }
|
|
|
|
|
+ //DelayNms(10);
|
|
|
if ( u8_RxBuf[u8_RX_Length-1] == HLW8110_checkSum_Read(u8_RX_Length) )
|
|
if ( u8_RxBuf[u8_RX_Length-1] == HLW8110_checkSum_Read(u8_RX_Length) )
|
|
|
{
|
|
{
|
|
|
U32_POWERPA_RegData = (unsigned long)(u8_RxBuf[0]<<24) + (unsigned long)(u8_RxBuf[1]<<16) + (unsigned long)(u8_RxBuf[2]<<8) + (unsigned long)(u8_RxBuf[3]);
|
|
U32_POWERPA_RegData = (unsigned long)(u8_RxBuf[0]<<24) + (unsigned long)(u8_RxBuf[1]<<16) + (unsigned long)(u8_RxBuf[2]<<8) + (unsigned long)(u8_RxBuf[3]);
|
|
@@ -591,7 +608,15 @@ void Read_HLW8110_EA(void)
|
|
|
{
|
|
{
|
|
|
float a;
|
|
float a;
|
|
|
Uart_Read_HLW8110_Reg(REG_ENERGY_PA_ADDR,3);
|
|
Uart_Read_HLW8110_Reg(REG_ENERGY_PA_ADDR,3);
|
|
|
- DelayNms(10);
|
|
|
|
|
|
|
+ for(uint8_t i = 0;i < 5;i++)
|
|
|
|
|
+ {
|
|
|
|
|
+ if(B_Rx_Finish == TRUE)
|
|
|
|
|
+ {
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+ DelayNms(2);
|
|
|
|
|
+ }
|
|
|
|
|
+ //DelayNms(10);
|
|
|
|
|
|
|
|
if ( u8_RxBuf[u8_RX_Length-1] == HLW8110_checkSum_Read(u8_RX_Length) )
|
|
if ( u8_RxBuf[u8_RX_Length-1] == HLW8110_checkSum_Read(u8_RX_Length) )
|
|
|
{
|
|
{
|
|
@@ -637,7 +662,15 @@ void Read_HLW8110_LineFreq(void)
|
|
|
float a;
|
|
float a;
|
|
|
unsigned long b;
|
|
unsigned long b;
|
|
|
Uart_Read_HLW8110_Reg(REG_UFREQ_ADDR,2);
|
|
Uart_Read_HLW8110_Reg(REG_UFREQ_ADDR,2);
|
|
|
- DelayNms(10);
|
|
|
|
|
|
|
+ for(uint8_t i = 0;i < 5;i++)
|
|
|
|
|
+ {
|
|
|
|
|
+ if(B_Rx_Finish == TRUE)
|
|
|
|
|
+ {
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+ DelayNms(2);
|
|
|
|
|
+ }
|
|
|
|
|
+ //DelayNms(10);
|
|
|
if ( u8_RxBuf[u8_RX_Length-1] == HLW8110_checkSum_Read(u8_RX_Length) )
|
|
if ( u8_RxBuf[u8_RX_Length-1] == HLW8110_checkSum_Read(u8_RX_Length) )
|
|
|
{
|
|
{
|
|
|
b = (unsigned long)(u8_RxBuf[0]<<8) + (unsigned long)(u8_RxBuf[1]);
|
|
b = (unsigned long)(u8_RxBuf[0]<<8) + (unsigned long)(u8_RxBuf[1]);
|
|
@@ -666,7 +699,15 @@ void Read_HLW8110_PF(void)
|
|
|
//测量B通道的功率因素,需要发送EA+A5命令
|
|
//测量B通道的功率因素,需要发送EA+A5命令
|
|
|
|
|
|
|
|
Uart_Read_HLW8110_Reg(REG_PF_ADDR,3);
|
|
Uart_Read_HLW8110_Reg(REG_PF_ADDR,3);
|
|
|
- DelayNms(10);
|
|
|
|
|
|
|
+ for(uint8_t i = 0;i < 5;i++)
|
|
|
|
|
+ {
|
|
|
|
|
+ if(B_Rx_Finish == TRUE)
|
|
|
|
|
+ {
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+ DelayNms(2);
|
|
|
|
|
+ }
|
|
|
|
|
+ //DelayNms(10);
|
|
|
if ( u8_RxBuf[u8_RX_Length-1] == HLW8110_checkSum_Read(u8_RX_Length) )
|
|
if ( u8_RxBuf[u8_RX_Length-1] == HLW8110_checkSum_Read(u8_RX_Length) )
|
|
|
{
|
|
{
|
|
|
b = (unsigned long)(u8_RxBuf[0]<<16) + (unsigned long)(u8_RxBuf[1]<<8) + (unsigned long)(u8_RxBuf[2]);
|
|
b = (unsigned long)(u8_RxBuf[0]<<16) + (unsigned long)(u8_RxBuf[1]<<8) + (unsigned long)(u8_RxBuf[2]);
|
|
@@ -702,7 +743,15 @@ void Read_HLW8110_Angle(void)
|
|
|
float a;
|
|
float a;
|
|
|
unsigned long b;
|
|
unsigned long b;
|
|
|
Uart_Read_HLW8110_Reg(REG_ANGLE_ADDR,2);
|
|
Uart_Read_HLW8110_Reg(REG_ANGLE_ADDR,2);
|
|
|
- DelayNms(10);
|
|
|
|
|
|
|
+ for(uint8_t i = 0;i < 5;i++)
|
|
|
|
|
+ {
|
|
|
|
|
+ if(B_Rx_Finish == TRUE)
|
|
|
|
|
+ {
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+ DelayNms(2);
|
|
|
|
|
+ }
|
|
|
|
|
+ //DelayNms(10);
|
|
|
if ( u8_RxBuf[u8_RX_Length-1] == HLW8110_checkSum_Read(u8_RX_Length) )
|
|
if ( u8_RxBuf[u8_RX_Length-1] == HLW8110_checkSum_Read(u8_RX_Length) )
|
|
|
{
|
|
{
|
|
|
b =(unsigned long)(u8_RxBuf[0]<<8) + (unsigned long)(u8_RxBuf[1]);
|
|
b =(unsigned long)(u8_RxBuf[0]<<8) + (unsigned long)(u8_RxBuf[1]);
|
|
@@ -759,16 +808,46 @@ void Read_HLW8110_Angle(void)
|
|
|
void Calculate_HLW8110_MeterData(void)
|
|
void Calculate_HLW8110_MeterData(void)
|
|
|
{
|
|
{
|
|
|
//Check_WriteReg_Success();
|
|
//Check_WriteReg_Success();
|
|
|
|
|
+ uint8_t count = 4;
|
|
|
|
|
+ B_Read_Error = 0;
|
|
|
|
|
+ do{
|
|
|
|
|
+ B_Read_Error = 0;
|
|
|
|
|
+ Read_HLW8110_IA();
|
|
|
|
|
+ }while((B_Read_Error) && (count--));
|
|
|
|
|
+ count = 4;
|
|
|
|
|
+ do{
|
|
|
|
|
+ B_Read_Error = 0;
|
|
|
|
|
+ Read_HLW8110_U();
|
|
|
|
|
+ }while((B_Read_Error) && (count--));
|
|
|
|
|
+
|
|
|
|
|
+ count = 4;
|
|
|
|
|
+ do{
|
|
|
|
|
+ B_Read_Error = 0;
|
|
|
|
|
+ Read_HLW8110_PA();
|
|
|
|
|
+ }while((B_Read_Error) && (count--));
|
|
|
|
|
|
|
|
- Read_HLW8110_IA();
|
|
|
|
|
- Read_HLW8110_U();
|
|
|
|
|
- Read_HLW8110_PA();
|
|
|
|
|
- Read_HLW8110_EA();
|
|
|
|
|
|
|
+ count = 4;
|
|
|
|
|
+ do{
|
|
|
|
|
+ B_Read_Error = 0;
|
|
|
|
|
+ Read_HLW8110_EA();
|
|
|
|
|
+ }while((B_Read_Error) && (count--));
|
|
|
|
|
+
|
|
|
|
|
+ count = 4;
|
|
|
|
|
+ do{
|
|
|
|
|
+ B_Read_Error = 0;
|
|
|
|
|
+ Read_HLW8110_LineFreq();
|
|
|
|
|
+ }while((B_Read_Error) && (count--));
|
|
|
|
|
|
|
|
- Read_HLW8110_LineFreq();
|
|
|
|
|
- Read_HLW8110_Angle();
|
|
|
|
|
- Read_HLW8110_PF();
|
|
|
|
|
-
|
|
|
|
|
|
|
+ count = 4;
|
|
|
|
|
+ do{
|
|
|
|
|
+ B_Read_Error = 0;
|
|
|
|
|
+ Read_HLW8110_Angle();
|
|
|
|
|
+ }while((B_Read_Error) && (count--));
|
|
|
|
|
+ count = 4;
|
|
|
|
|
+ do{
|
|
|
|
|
+ B_Read_Error = 0;
|
|
|
|
|
+ Read_HLW8110_PF();
|
|
|
|
|
+ }while((B_Read_Error) && (count--));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
#endif
|
|
#endif
|