| 
					
				 | 
			
			
				@@ -17,6 +17,11 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #if defined (MAI_12)   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#define VOLTAGE_FACTOR  0.182382 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#define CURRENT_FACTOR  0.00091191 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 //uint16_t ai_state_bit; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 uint8_t ai_mux;     // выход сдвигового регистра U1010 (управляет MUX 301, 401) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -32,9 +37,9 @@ uint16_t ai_alarm;  // слово аварий входов 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 uint16_t ai_gain[AI_COMMON_NUMBER]; // массив коэффициентов усиленя (modbus) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 uint16_t adc_com_raw_data[AI_COMMON_NUMBER]; // сырые данные 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-float adc_com_data[AI_COMMON_NUMBER];   // пересчитанные, фильтрованные данные 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+float adc_com_data[AI_COMMON_NUMBER];        // пересчитанные, фильтрованные данные 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-uint16_t adc_com_fil_data[AI_COMMON_NUMBER]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+uint16_t adc_com_fil_data[AI_COMMON_NUMBER]; // Фильтрованные данные (только для отладки) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 uint16_t adc_add_raw_data[AI_ADD_NUMBER]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -205,30 +210,30 @@ void ai_processing(void) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     adc_com_fil_data[0 + 6] = average_int(&average_filter[0 + 6], adc_com_raw_data[0 + 6]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#if 1   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // 12 основных каналов  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     for (uint8_t i = 0; i < AI_COMMON_NUMBER/2; i++) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         adc_meas_two_channels(&settings.ai[i], &settings.ai[i + 6],  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                               &adc_com_raw_data[i], &adc_com_raw_data[i + 6]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				          
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // Фильтрация 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        adc_com_data[i]     =  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        adc_com_data[i + 6] =  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // Фильтрация. Скользящее среднее. Только для отладки. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         adc_com_fil_data[i]     = average_int(&average_filter[i], adc_com_raw_data[i]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         adc_com_fil_data[i + 6] = average_int(&average_filter[i + 6], adc_com_raw_data[i + 6]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#if 1     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // 4 дополнительных канала 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     for (uint8_t i = 0; i < AI_ADD_NUMBER/2; i++) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         adc_meas_two_channels(&settings.ai_add[i], &settings.ai_add[i + 2],  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                               &adc_add_raw_data[i], &adc_add_raw_data[i + 2]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#endif     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#if 0     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#if 1     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     printf("end\r\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     adc_print_data(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //adc_print_data_extend(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -301,23 +306,28 @@ void adc_print_data(void) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     printf("\033[2J");  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     printf("\033[H");   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    printf("AN_INP_1: 0x%X, %.3f\r\n", adc_com_raw_data[0], (double)adc_com_raw_data[0]*0.00001785305/0.0961538); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    printf("AN_INP_2: 0x%X, %f\r\n", adc_com_raw_data[1], (double)adc_com_raw_data[1]*0.00001785305/0.0961538); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    printf("AN_INP_3: 0x%X, %f\r\n", adc_com_raw_data[2], (double)adc_com_raw_data[2]*0.00001785305/0.0961538); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    printf("AN_INP_4: 0x%X, %f\r\n", adc_com_raw_data[3], (double)adc_com_raw_data[3]*0.00001785305/0.0961538); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    printf("AN_INP_5: 0x%X, %f\r\n", adc_com_raw_data[4], (double)adc_com_raw_data[4]*0.00001785305/0.0961538); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    printf("AN_INP_6: 0x%X, %f\r\n", adc_com_raw_data[5], (double)adc_com_raw_data[5]*0.00001785305/0.0961538); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    printf("AN_INP_7: 0x%X, %f\r\n", adc_com_raw_data[6], (double)adc_com_raw_data[6]*0.00001785305/0.0961538); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    printf("AN_INP_8: 0x%X, %f\r\n", adc_com_raw_data[7], (double)adc_com_raw_data[7]*0.00001785305/0.0961538); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    printf("AN_INP_9: 0x%X, %f\r\n", adc_com_raw_data[8], (double)adc_com_raw_data[8]*0.00001785305/0.0961538); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    printf("AN_INP_10: 0x%X, %f\r\n",adc_com_raw_data[9], (double)adc_com_raw_data[9]*0.00001785305/0.0961538); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    printf("AN_INP_11: 0x%X, %f\r\n",adc_com_raw_data[10],(double)adc_com_raw_data[10]*0.00001785305/0.0961538); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    printf("AN_INP_12: 0x%X, %f\r\n",adc_com_raw_data[11],(double)adc_com_raw_data[11]*0.00001785305/0.0961538); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    printf("V_ISO_CL: 0x%X, %f\r\n", adc_add_raw_data[0], (double)adc_add_raw_data[0]*0.00001785305/0.0961538); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    printf("V_ISO: 0x%X, %f\r\n",    adc_add_raw_data[1], (double)adc_add_raw_data[1]*0.00001785305/0.0961538); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    printf("CRNT_LIM_U_BFR_R: 0x%X, %f\r\n", adc_add_raw_data[2],(double)adc_add_raw_data[2]*0.00001785305/0.0961538); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    printf("CRNT_LIM_U_ABFR_R: 0x%X, %f\r\n",adc_add_raw_data[3],(double)adc_add_raw_data[3]*0.00001785305/0.0961538); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    printf("AN_INP_1: 0x%X, %.3f\r\n", adc_com_raw_data[0], (double)adc_com_raw_data[0]*VOLTAGE_FACTOR); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+             
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#if 0     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    printf("AN_INP_1: 0x%X, %.3f\r\n", adc_com_raw_data[0], (double)adc_com_raw_data[0]*VOLTAGE_FACTOR); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    printf("AN_INP_2: 0x%X, %f\r\n", adc_com_raw_data[1], (double)adc_com_raw_data[1]*VOLTAGE_FACTOR); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    printf("AN_INP_3: 0x%X, %f\r\n", adc_com_raw_data[2], (double)adc_com_raw_data[2]*VOLTAGE_FACTOR); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    printf("AN_INP_4: 0x%X, %f\r\n", adc_com_raw_data[3], (double)adc_com_raw_data[3]*VOLTAGE_FACTOR); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    printf("AN_INP_5: 0x%X, %f\r\n", adc_com_raw_data[4], (double)adc_com_raw_data[4]*VOLTAGE_FACTOR); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    printf("AN_INP_6: 0x%X, %f\r\n", adc_com_raw_data[5], (double)adc_com_raw_data[5]*VOLTAGE_FACTOR); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    printf("AN_INP_7: 0x%X, %f\r\n", adc_com_raw_data[6], (double)adc_com_raw_data[6]*VOLTAGE_FACTOR); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    printf("AN_INP_8: 0x%X, %f\r\n", adc_com_raw_data[7], (double)adc_com_raw_data[7]*VOLTAGE_FACTOR); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    printf("AN_INP_9: 0x%X, %f\r\n", adc_com_raw_data[8], (double)adc_com_raw_data[8]*VOLTAGE_FACTOR); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    printf("AN_INP_10: 0x%X, %f\r\n",adc_com_raw_data[9], (double)adc_com_raw_data[9]*VOLTAGE_FACTOR); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    printf("AN_INP_11: 0x%X, %f\r\n",adc_com_raw_data[10],(double)adc_com_raw_data[10]*VOLTAGE_FACTOR); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    printf("AN_INP_12: 0x%X, %f\r\n",adc_com_raw_data[11],(double)adc_com_raw_data[11]*VOLTAGE_FACTOR); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    printf("V_ISO_CL: 0x%X, %f\r\n", adc_add_raw_data[0], (double)adc_add_raw_data[0]*VOLTAGE_FACTOR); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    printf("V_ISO: 0x%X, %f\r\n",    adc_add_raw_data[1], (double)adc_add_raw_data[1]*VOLTAGE_FACTOR); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    printf("CRNT_LIM_U_BFR_R: 0x%X, %f\r\n", adc_add_raw_data[2],(double)adc_add_raw_data[2]*VOLTAGE_FACTOR); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    printf("CRNT_LIM_U_ABFR_R: 0x%X, %f\r\n",adc_add_raw_data[3],(double)adc_add_raw_data[3]*VOLTAGE_FACTOR); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // 
			 |