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

📄 ade7758p.h

📁 嵌入式单片机开发,嵌入式单片机开发,嵌入式单片机开发
💻 H
📖 第 1 页 / 共 3 页
字号:
                					//i<
                					if(num>9700)
                						{
                	  						if(l7758.l>3000000) 
										l7758.l=0;
                      						long_to_8bcd(l7758.l,&RAM[R_I_A+4*n]);
                						}
         					}
     				}
//Kw    
    			for(n=0;n<3;n++)
    				{
         				l7758.l=0;
          				read7758(0x1+n,2);
          				if(1==r7758ok)
          					{
          						h=h+1;          
                					for(m=0;m<2;m++)
      	             						l7758.c[m]=wr_data[1-m];
                					k[n]=l7758.l;
                					if(l7758.l>0x7fff) 
           	       					{
           	       						l7758.l=0x10000-l7758.l;
                       						s=s|table_use7758[n+4];
           	        					}         
       				if(num!=0)
             					l7758.l=(l7758.l*10000)/num;//add
      					kw7758_use(&l7758.l);       
       				if(num<10300)
           					{
           						if(num>9700)
                						long_to_8bcd(l7758.l,&RAM[R_KW_A+4*n]);
       					}
          			}
    	}
  	if(progfunction_biaotype==type_3_3)
  		k[1]=0;  
    	if(h==9)
    		{
    	    		l7758.l=0;    	    
    	  	 	k[14]=0;
    	   	 	k[15]=0;
           		for(n=0;n<3;n++)
              		{ 
                 			if(k[n]>0x7fff) 
						k[15]=k[15]+0x10000-k[n];
                 			else 
						k[14]=k[14]+k[n]; 
                		}                
   			if(k[15]>k[14]) 
       			{
       				s=s|0x80;
                     		k[10]=k[15]-k[14];
					if(num<15000)
						{
					   	if(kw_rz_numsecond<60)
					  		{						
					  		kw_rz_perminute=kw_rz_perminute+k[10];
							kw_rz_numsecond=kw_rz_numsecond+1;
					  		}
						if((RAM[R_KWHMODE_F]==2)||(RAM[R_KWHMODE_F]==0))
							{
							if(kw_fz_numsecond<60)
								{
								kw_fz_numsecond=kw_fz_numsecond+1;
								kw_fz_perminute=kw_fz_perminute+k[10];
								}
							if(kw_cuofeng_numsecond<60)
								{
								kw_cuofeng_numsecond=kw_cuofeng_numsecond+1;
								kw_cuofeng_perminute=kw_cuofeng_perminute+k[10];
								}
							}
						}
					
           			}
       		else
          	  		{
          	  		k[10]=k[14]-k[15];   
				if(num<15000)
					{
					if(kw_fz_numsecond<60)
						{
						kw_fz_numsecond=kw_fz_numsecond+1;
						kw_fz_perminute=kw_fz_perminute+k[10];
						}
					if(kw_cuofeng_numsecond<60)
						{
						kw_cuofeng_numsecond=kw_cuofeng_numsecond+1;
						kw_cuofeng_perminute=kw_cuofeng_perminute+k[10];
						}
					}
       			}
       		if(num!=0)
             			l7758.l=(k[10]*10000)/num;//add           
       		kw7758_use(&l7758.l);        
       		if(num<10300)
           			if(num>9700)
                			long_to_8bcd(l7758.l,&RAM[R_KW_Z]);
    		}
//Kvar
    for(n=0;n<3;n++)
    	{
         	l7758.l=0;
          	read7758(0x4+n,2);
          	if(1==r7758ok)
          		{
          			h=h+1;
               		for(m=0;m<2;m++)
      	             			l7758.c[m]=wr_data[1-m];         
              		k[7+n]=l7758.l;
              		if(l7758.l>0x7fff) 
           	     			{
           	     				l7758.l=0x10000-l7758.l;
                     			s=s|table_use7758[n];
           	       		}           
              		if(num!=0)
                  			l7758.l=(l7758.l*10000)/num;//add
              		l7758.l=(l7758.l*CK_KW)/CK_KVAR;//add-------->          
              		kw7758_use(&l7758.l);               
             			if(num<10300)
                  			if(num>9700)
                       			long_to_8bcd(l7758.l,&RAM[R_KVAR_A+4*n]);          	
			}
    	}
if(progfunction_biaotype==type_3_3)
 	k[8]=0;
if(h==12)
    	{
    	    l7758.l=0;    	    
    	    k[14]=0;
    	    k[15]=0;
           for(n=0;n<3;n++)
              { 
                 	if(k[n+7]>0x7fff) 
				k[15]=k[15]+0x10000-k[7+n];
                 	else 
				k[14]=k[14]+k[7+n];   
               }                
           if(k[15]>k[14]) 
           	{
           		s=s|0x8;
                     k[11]=k[15]-k[14];
           	}
          else
          	  k[11]=k[14]-k[15];         
          if(num!=0)
             	l7758.l=(k[11]*10000)/num;//add
           l7758.l=(l7758.l*CK_KW)/CK_KVAR;//add-------->        
           kw7758_use(&l7758.l);          
           if(num<10300)
           		if(num>9700)
                 		long_to_8bcd(l7758.l,&RAM[R_KVAR_Z]);
    	} 
 h=h+3;
 for(n=0;n<3;n++)
 	{
 		if(k[n+7]>0x7fff) 
			k[n+7]=0x10000-k[n+7];
         	if(k[n]>0x7fff) 
			k[n]=0x10000-k[n];
 	}
if((k[10]>0x7fff)||(k[11]>0x7fff))
  	{
  		k[10]=k[10]/4;
    		k[11]=k[11]/4;
   	}
 if(h==15)
  	{
        	cos_from_kw_kva(k[0],sqrt_xy(k[0],k[7]),&RAM[R_COS_A]); 
       	cos_from_kw_kva(k[1],sqrt_xy(k[1],k[8]),&RAM[R_COS_B]); 
        	cos_from_kw_kva(k[2],sqrt_xy(k[2],k[9]),&RAM[R_COS_C]); 
        	cos_from_kw_kva(k[10],sqrt_xy(k[10],k[11]),&RAM[R_COS_Z]); 
  	}   		
//F  
h=h+1;
if(progfunction_biaotype==type_3_4)
 	{
         	read7758(0x1a,3);
         	if(1==r7758ok)
            		{
              		if((0x8&wr_data[0])==0) 
					status_5460_1=0x80;
              		else 
					status_5460_1=0;
             		}
 	 } 
if(progfunction_biaotype==type_3_3)
  	{
  		read7758(0x1a,3);
         	m=0;
  	 	for(n=0;n<21;n++)
  	      		{
  	        		read7758(0x1a,3);
  	        		if(1==r7758ok)
  	        			{
  	        				if((0x8&wr_data[1])==0x8)
  	        	     				{
  	        	     					m=1;
  	                     				break;
  	        	     				}
  	        			}
  	       	}  
  	    if(1==m)
  	 	{
  	         	read7758(0x1a,3);//l1050us
  	         	delay_1ms_7758();//l1150
  	         	m=0;
  	         	for(n=0;n<4;n++)
  	         		{
  	                		read7758(0x1a,3);
  	                		delay_1ms_7758();
  	                 		if(1==r7758ok)
  	                 			{
  	                 				if((0x2&wr_data[1])==0x2)
  	        	              			{
  	        	              				m=1;
  	                              				break;
  	        	               			}
  	                 			}
  	                 		else 
						m=1;  	         
  	         		}
  	         	if(1==m) 
  	         		{
  	         			status_5460_1=0x00;  	               
  	                	}
  	         	else 
  	         		{
  	         			status_5460_1=0x80;  	              
  	                	}
  	 	}
  	}
 if(num<10300)
        if(num>9700)  
                if(h==16)
                     status_5460_0=s;
//f 
f_changed=0;
read7758(0x10,2);
if(1==r7758ok)
    	{
    		h=h+1;
      		l7758.l=0;      
      		l7758.c[0]=wr_data[1];
      		l7758.c[1]=0xf&wr_data[0];
      		long_to_8bcd((100*l7758.l)/16,&wr_data[0]);
      		if(num<10300)
          		{
          			if(num>9700)  
               			{
               				fp2=&wr_data[0];
						f_changed=1;
						fp1=&RAM[R_F_A];   
               				for(n=0;n<3;n++)
                 				{                					
                   					*fp1=*fp2;
                   					*(fp1+1)=*(fp2+1);	
							fp1=fp1+2;
                  				}
          				}
      			}
        }
 }
if(h==17) 
	{
		spi_status=1;
         	r7758mode_ok=1;
        }
else 
	{
		spi_status=0; 
         	r7758mode_ok=0;
        }
//l2004  changed------------------>start
if(f_changed==1)
  		{
  			f_changed=0;
			fas=value_hex_from_2bcd(R_F_A);
			if((fas>=4000)&&(fas<=6501))
				{
					ufas=(fas-4000)/50;
					fas=rtable_7758_f_gain(ufas);
  					data_addr.addri=EPLOCK_7758+4*(0x2a-0x13);
  					if(1==read(EPLOCK,2))
  						{
         						fas1=fas+wr_data[0]*256+wr_data[1];
         						wr_data[0]=fas1/256;
         						wr_data[1]=fas1%256;
         						write7758(0x2a,2);
  						}  
  					data_addr.addri=EPLOCK_7758+4*(0x2b-0x13);
  					if(1==read(EPLOCK,2))
  						{
         						fas1=fas+wr_data[0]*256+wr_data[1];
         						wr_data[0]=fas1/256;
         						wr_data[1]=fas1%256;
         						write7758(0x2b,2);
  						}    			
  			data_addr.addri=EPLOCK_7758+4*(0x2c-0x13);
  			if(1==read(EPLOCK,2))
  				{
         				fas1=fas+wr_data[0]*256+wr_data[1];
         				wr_data[0]=fas1/256;
         				wr_data[1]=fas1%256;
         				write7758(0x2c,2);
  				}  	
//
			fas=value_hex_from_2bcd(R_F_A);
			ufas=(fas-4000)/50;
			ufas=rtable_7758_f_phase(ufas);
  			data_addr.addri=EPLOCK_7758+4*(0x3f-0x13);
  			if(1==read(EPLOCK,1))
  				{
         				wr_data[0]=ufas+wr_data[0];  
          				write7758(0x3f,1);
  				}
  			data_addr.addri=EPLOCK_7758+4*(0x40-0x13);
 		 	if(1==read(EPLOCK,1))
  				{
         				wr_data[0]=ufas+wr_data[0];  
         				write7758(0x40,1);
  				}
 	 		data_addr.addri=EPLOCK_7758+4*(0x41-0x13);
  			if(1==read(EPLOCK,1))
  				{
         				wr_data[0]=ufas+wr_data[0];  
         				write7758(0x41,1);
  				}
		}
  	}
//l2004  changed------------------>end
 	if(progfunction_biaotype==type_3_3)
 		{
 			for(h=0;h<4;h++)
 	    	 		{
              			// RAM[R_V_B+h]=0;               
              			RAM[R_I_B+h]=0;
               			RAM[R_KW_B+h]=0;
               			RAM[R_KVAR_B+h]=0;
               			RAM[R_COS_B+h]=0;
 	      			}
         		RAM[R_F_B]=0;
         		RAM[R_F_B+1]=0;         
 		}
	if((low_v_a==1)||(low_v_b==1)||(low_v_c==1))
     		{
     			read7758(0x14,1);     
       		if(1==r7758ok)
       			{
       				if(low_v_a==0)
       	      				{
       	      					if((0x3&wr_data[0])!=0)
       	            					{
       	            						wr_data[0]=0xfc&wr_data[0];
                            					write7758(0x14,1);
       	            					}
       	       			}
                			else
                	 			if(low_v_c==0)
       	           				{
       	           					if((0x3&wr_data[0])!=2)
       	                 					{
       	                 						wr_data[0]=(0xfc&wr_data[0])+2;
                                 						write7758(0x14,1);
       	                 					}
       	           				}
                	 			else
                	 				{
                	 					if((0x3&wr_data[0])!=1)
       	                   	 				{
       	                   	 					wr_data[0]=(0xfc&wr_data[0])+1;
                                    					write7758(0x14,1);
       	                     				}
       	               			}
       				}   
         	} 
}




/***********************************************************/
void clr_shenshiliang()
{unsigned int l;
	for(l=R_COS_Z;l<R_CURRENT_REFERENCE_L;l++)
		RAM[l]=0;
	for(l=0;l<3;l++)
		RAM[R_CURRENT_KW+l]=0;
}
void shenshiliang()
{unsigned char l1;
 unsigned char a1,value;
 unsigned int k;
if(current_order_quadrant==0) 
	RFLAG_PHASE_ORDER=0;
else 
	RFLAG_PHASE_ORDER=1;
// changed ruo huan fan xiang clr
if((0x80&status_5460_0)==0)
	{
		k=RAM[R_KW_Z+2]+256*RAM[R_KW_Z+3];
		if(k>=(RAM[R_KW_F_MAX+1]+256*RAM[R_KW_F_MAX+2]))
      			value=1;
		else 
			value=0;
// mo chong zheng xiang chao xiang
             if(1==value)
             	    {
             	    	pulseset_withvaluetime(7,20000);
                    pulseset_withvaluetime(8,0);
			}
             else 
             	     {
             	     	pulseset_withvaluetime(7,0);
                     pulseset_withvaluetime(8,0);
			}             
	}
else
	{
		k=RAM[R_KW_Z+2]+256*RAM[R_KW_Z+3];
		if(k>=(RAM[R_KW_R_MAX+1]+256*RAM[R_KW_R_MAX+2]))
         		value=1;
 		else 
 	  		value=0;
// mo chong fan  xiang
  		if(1==value)
       		{
       			pulseset_withvaluetime(8,20000);
         			pulseset_withvaluetime(7,0);
			}
  		else 
       		{	
       			pulseset_withvaluetime(7,0);
         			pulseset_withvaluetime(8,0);
			}            
	} 
}
/********************************************************/





⌨️ 快捷键说明

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