瀏覽代碼

F407 snmp 控制与数据读取。

liyi 1 年之前
父節點
當前提交
9eaa0642a9
共有 5 個文件被更改,包括 207 次插入 和 42 次删除
  1. 2 2
      f407/applications/cfg.h
  2. 18 8
      f407/applications/power.c
  3. 1 0
      f407/applications/power.h
  4. 176 32
      f407/applications/snmp.c
  5. 10 0
      f407/applications/snmp.h

+ 2 - 2
f407/applications/cfg.h

@@ -50,8 +50,8 @@
     #define CHANNEL_DELAY                       8
 
     //#define PROD_TYPE                           PDU_AC_I3O3
-    //#define PROD_TYPE                           PDU_AC_I1O1
-    #define PROD_TYPE 													 PDU_DC_I1O1
+    #define PROD_TYPE                           PDU_AC_I1O1
+    //#define PROD_TYPE 													 PDU_DC_I1O1
     #define USE_UI
     #define ROTATE                             90
 

+ 18 - 8
f407/applications/power.c

@@ -388,15 +388,18 @@ static int total_proc(power_handle_t *h)
         if(h->pbrd[i]) {
             for (j=0; i<h->pbrd[i]->chs; i++) {
                 pch = &h->pbrd[i]->pch[j];
+								float chn_total_p = 0.0; 
                 for(k=0; k<times; k++) {
-                    tmp[k].voltage = pch->power[j].voltage/10.0;
+                    chn_total_p = ( pch->power[j].factor == 0 ? 0 : (pch->power[j].power/1000.0 / pch->power[j].factor * 100.0));
+										tmp[k].voltage = pch->power[j].voltage/10.0;
                     tmp[k].current += (pch->power[j].current/10.0);
-                    tmp[k].power   += (pch->power[j].power/1000.0);
+										
+										tmp[k].power   += chn_total_p;
                     tmp[k].freq    = (pch->power[j].freq/10.0);
                     tmp[k].consump += (pch->power[j].consump/1000.0);
-#if 0
-                    tmp[k].active  = pch->power[j].active;
-                    tmp[k].reactive = pch->power[j].reactive;
+#if 1
+                    tmp[k].active  += pch->power[j].power/1000.0;
+                    tmp[k].reactive += (chn_total_p-(pch->power[j].power/1000.0));
 #endif
                 }
             }
@@ -410,7 +413,7 @@ static int total_proc(power_handle_t *h)
         h->ttl.total[k].power = tmp[k].power;
         h->ttl.total[k].freq = tmp[k].freq;
         h->ttl.total[k].consump = tmp[k].consump;
-        h->ttl.total[k].factor = tmp[k].active/tmp[k].power;
+				h->ttl.total[k].factor = ((tmp[k].power == 0) ? 0 : tmp[k].active/tmp[k].power);
         h->ttl.total[k].active  = tmp[k].active;
         h->ttl.total[k].reactive = tmp[k].reactive;
     }
@@ -1267,7 +1270,7 @@ int power_set_ch_sw_n(power_ch_t *pch)
         case AC_SINGLE_S_TYPE:
         case AC_SINGLE_B_TYPE:
         {
-            offset = POWER_AC_CH_STAT_L + pch->info.ch-1;
+            offset = POWER_AC_CH_STAT_L + pch->info.sch;
             tmp[0] = st;
             r = write_reg(h, pch->info.addr, offset, tmp, 1);
         }
@@ -1661,7 +1664,7 @@ int power_set_threshold(power_ch_t *pch)
                 offset = POWER_AC_TOTAL_THRESHOLD;
             }
             else  {
-                offset = POWER_AC_THRESHOLD_L+(pch->info.ch-1)*16;
+                offset = POWER_AC_THRESHOLD_L+(pch->info.sch)*16;
             }
 
             r = write_reg(h, pch->info.addr, offset, data_buf, 16);
@@ -1950,6 +1953,13 @@ int power_data_get(power_all_t *all)
 }
 
 
+power_all_t * power_get_all(void)
+{
+	power_handle_t *h=&pwrHandle;
+	return &h->all;
+}
+
+
 int power_breaker_get(breaker_all_t *all)
 {
     int i,j,idx=0;

+ 1 - 0
f407/applications/power.h

@@ -167,6 +167,7 @@ int power_set_close_delay(power_ch_t *pch);
 int power_get_board(board_data_t *pbrd);
 int power_reset(void);
 
+power_all_t * power_get_all(void);
 int power_data_get(power_all_t *all);
 int power_breaker_get(breaker_all_t *all);
 #endif

+ 176 - 32
f407/applications/snmp.c

@@ -9,6 +9,7 @@
 #include "lwip/apps/snmp_scalar.h"
 #include "string.h"
 #include "power.h"
+#include "datadef.h"
 
 
 
@@ -20,6 +21,8 @@
 //#define SNMP_SMARTPDU_CHANNEL_TABLE           {1,3,6,1,4,1,2024,1,3,9}
 //#define SNMP_SMARTPDU_ALARM_TABLE_IOD       	{1,3,6,1,4,1,2024,1,6,1}
 #define   SNMP_SMARTPDU_THR_TABLE_IOD           {1,3,6,1,4,1,2024,1,7}
+#define   SNMP_SMARTPDU_TOTAL_OID                {1,3,6,1,4,1,2024,1,3}
+
 typedef struct 
 {
 	uint8_t sysdescr[10];
@@ -31,6 +34,7 @@ typedef struct
 //	char *id_device;
 //	char *id_sn;
 //	char *id_version;	
+	power_all_t all;
 }snmp_smarpdu_t;
 
 static snmp_smarpdu_t snmp_smart={
@@ -100,6 +104,61 @@ static s16_t sysinfo_get_value(const struct snmp_scalar_array_node_def *node, vo
 }
 
 
+
+static s16_t total_get_value(const struct snmp_scalar_array_node_def *node, void *value)
+{
+    char *var = NULL;
+    s16_t var_len;
+		char buff[100]= {0};
+		power_all_t *all = power_get_all();
+		
+		switch(node->oid)
+		{
+			case SCALAR_VOLTAGE:
+			{
+				sprintf(buff,"%.2f",all->ttl.total[0].voltage);
+			}
+			break;
+			case SCALAR_CURRENT:
+			{
+				sprintf(buff,"%.2f",all->ttl.total[0].current);
+			}
+			break;
+			case SCALAR_CONSUMEPTION:
+			{
+				sprintf(buff,"%.2f",all->ttl.total[0].consump);
+			}
+			break;
+			case SCALAR_POWER_FACTOR:
+			{
+				sprintf(buff,"%.2f",all->ttl.total[0].factor);
+			}
+			break;
+			case SCALAR_PACTIVE_POWER:
+			{
+				sprintf(buff,"%.2f",all->ttl.total[0].power);
+			}
+			break;
+			case SCALAR_REACTIVE_POWER:
+			{
+				sprintf(buff,"%.2f",all->ttl.total[0].reactive);
+			}
+			break;
+			case  SCALAR_APPARENT_POWER:
+			{
+				sprintf(buff,"%.2f",all->ttl.total[0].active);
+			}
+			break;
+			default:
+				return 0;
+		}
+		var_len = strlen(buff);
+		memcpy(value, buff, var_len);		
+		return var_len;
+}
+
+
+
 #define POWER_VALUE 4
 
 typedef struct power_data{
@@ -240,7 +299,7 @@ static thr_s_t  p_thr_s[POWER_VALUE] = {
 	},
 };
 
-static const struct snmp_oid_range th_table_oid_ranges[] = {
+static struct snmp_oid_range th_table_oid_ranges[] = {
     {1, POWER_VALUE},
 };
 
@@ -418,38 +477,38 @@ static s16_t thr_get_value(struct snmp_node_instance *instance, void *value)
 		{
 			case COLUMN_PDUCHANNELLIMITID:
 			{
-				*(s32_t *)value	= p_t_data[row-1].id;
+				*(s32_t *)value	= row-1;
 				return 4;
 			}
 				break;
 			case COLUMN_PDUCHANNELLIMITNAME:
 			{
-				sprintf(buff,"%s",p_t_data[row-1].name);
+				sprintf(buff,"%s",snmp_smart.all.pch[row-1].info.name);
 			}
 			break;
 			case COLUMN_PDUCHANNELCURRENTLIMITUP:
 			{
-				sprintf(buff,"%.2f",p_t_data[row-1].i_max);
+				sprintf(buff,"%.2f",((float)snmp_smart.all.pch[row-1].thr.c_upper/10.0));
 			}
 			break;
 			case COLUMN_PDUCHANNELVOLTAGELIMITUP:
 			{
-				sprintf(buff,"%.2f",p_t_data[row-1].v_max);
+				sprintf(buff,"%.2f",((float)snmp_smart.all.pch[row-1].thr.v_upper/10.0));
 			}
 			break;
 			case COLUMN_PDUCHANNELVOLTAGELIMITDOWN:
 			{
-				sprintf(buff,"%.2f",p_t_data[row-1].v_min);
+				sprintf(buff,"%.2f",((float)snmp_smart.all.pch[row-1].thr.v_lower/10.0));
 			}
 			break;
 			case COLUMN_PDUCHANNELPOWERLIMITUP:
 			{
-				sprintf(buff,"%.2f",p_t_data[row-1].p_max);
+				sprintf(buff,"%.2f",((float)snmp_smart.all.pch[row-1].thr.p_upper/10.0));
 			}
 			break;
 			case COLUMN_PDUCHANNELCONSUMPTIONLIMITUP:
 			{
-				sprintf(buff,"%.2f",p_t_data[row-1].c_max);
+				sprintf(buff,"%.2f",((float)snmp_smart.all.pch[row-1].thr.w_upper/10.0));
 			}
 			break;
 			default:
@@ -518,6 +577,16 @@ static s16_t alarm_get_value(struct snmp_node_instance *instance, void *value)
 
 
 
+static snmp_err_t power_get_instance(const u32_t *column, const u32_t *row_oid, u8_t row_oid_len, struct snmp_node_instance *cell_instance)
+{
+	th_table_oid_ranges[0].max = snmp_smart.all.chs-1;
+	if (!snmp_oid_in_range(row_oid, row_oid_len, th_table_oid_ranges, LWIP_ARRAYSIZE(th_table_oid_ranges)))
+        return SNMP_ERR_NOSUCHINSTANCE;
+	cell_instance->reference.u32 = row_oid[0];
+
+	return SNMP_ERR_NOERROR;
+}
+
 static snmp_err_t get_instance(const u32_t *column, const u32_t *row_oid, u8_t row_oid_len, struct snmp_node_instance *cell_instance)
 {
 	if (!snmp_oid_in_range(row_oid, row_oid_len, th_table_oid_ranges, LWIP_ARRAYSIZE(th_table_oid_ranges)))
@@ -528,6 +597,32 @@ static snmp_err_t get_instance(const u32_t *column, const u32_t *row_oid, u8_t r
 }
 
 
+
+static snmp_err_t power_get_next_instance(const u32_t *column, struct snmp_obj_id *row_oid, struct snmp_node_instance *cell_instance)
+{
+    u8_t i = 0;
+    struct snmp_next_oid_state state;
+    u32_t next_oid = 0;
+
+    snmp_next_oid_init(&state, row_oid->id, row_oid->len, &next_oid, 1);
+		
+    power_data_get(&snmp_smart.all);
+    for (i = 0; i < snmp_smart.all.chs-1; i++)
+    {
+        u32_t test_oid = i + 1;
+        snmp_next_oid_check(&state, &test_oid, 1, NULL);
+    }
+
+    if (state.status == SNMP_NEXT_OID_STATUS_SUCCESS)
+    {
+        snmp_oid_assign(row_oid, state.next_oid, state.next_oid_len);
+        cell_instance->reference.u32 = *state.next_oid; /* 下个节点行OID */
+				cell_instance->reference.u32++;
+        return SNMP_ERR_NOERROR;
+    }
+
+    return SNMP_ERR_NOSUCHINSTANCE;
+}
 static snmp_err_t get_next_instance(const u32_t *column, struct snmp_obj_id *row_oid, struct snmp_node_instance *cell_instance)
 {
     u8_t i = 0;
@@ -535,8 +630,8 @@ static snmp_err_t get_next_instance(const u32_t *column, struct snmp_obj_id *row
     u32_t next_oid = 0;
 
     snmp_next_oid_init(&state, row_oid->id, row_oid->len, &next_oid, 1);
-//		power_all_t all;
-//    power_data_get(&all);
+		
+    power_data_get(&snmp_smart.all);
     for (i = 0; i < POWER_VALUE; i++)
     {
         u32_t test_oid = i + 1;
@@ -562,50 +657,51 @@ static s16_t power_get_value(struct snmp_node_instance *instance, void *value)
 		{
 			case COLUMN_PDUCHANNELID:
 			{
-				*(s32_t *)value	= p_data[row-1].id;
+				*(s32_t *)value	= row-1;
 				return 4;
 			}
 				break;
 			case COLUMN_PDUCHANNELNAME:
 			{
-				sprintf(buff,"%s",p_data[row-1].name);
+				sprintf(buff,"%s",snmp_smart.all.pch[row-1].info.name);
 			}
 				break;
 			case COLUMN_PDUCHANNELSTATUS:
 			{
 				//sprintf(buff,"%d",p_data[row].status);
-				*(s32_t *)value	= p_data[row-1].status;
+				//*(s32_t *)value	= p_data[row-1].status;
+				*(s32_t *)value = snmp_smart.all.pch[row-1].status;
 				return 4;
 			}
 				break;
 			case COLUMN_PDUCHANNELVOLTAGE:
 			{
-				sprintf(buff,"%.2f",p_data[row-1].v);
+				sprintf(buff,"%.2f",((float)snmp_smart.all.pch[row-1].power[0].voltage)/10.0);
 			}
 				break;
 			case COLUMN_PDUCHANNELCURRENT:
 			{
-				sprintf(buff,"%.2f",p_data[row-1].i);
+				sprintf(buff,"%.2f",((float)snmp_smart.all.pch[row-1].power[0].current)/10.0);
 			}
 				break;
 			case COLUMN_PDUCHANNELFREQUENCY:
 			{
-				sprintf(buff,"%.2f",p_data[row-1].f);
+				sprintf(buff,"%.2f",((float)snmp_smart.all.pch[row-1].power[0].freq)/100.0);
 			}
 				break;
 			case COLUMN_PDUCHANNELCONSUMPTION:
 			{
-				sprintf(buff,"%.2f",p_data[row-1].c);
+				sprintf(buff,"%.2f",((float)snmp_smart.all.pch[row-1].power[0].consump)/1000.0);
 			}
 				break;
 			case COLUMN_PDUCHANNELPOWERFACTOR:
 			{
-				sprintf(buff,"%.2f",p_data[row-1].fa);
+				sprintf(buff,"%.2f",((float)snmp_smart.all.pch[row-1].power[0].factor)/100.0);
 			}
 				break;
 			case COLUMN_PDUCHANNELPACTIVEPOWER:
 			{
-				sprintf(buff,"%.2f",p_data[row-1].p);
+				sprintf(buff,"%.2f",((float)snmp_smart.all.pch[row-1].power[0].power)/1000.0);
 			}
 				break;
 			case COLUMN_PDUCHANNELREACTIVEPOWER:
@@ -640,7 +736,9 @@ static snmp_err_t  power_set_value (struct snmp_node_instance *instance, u16_t l
 		{
 			case  COLUMN_PDUCHANNELSTATUS:
 			{
-				p_data[row-1].status = *(uint32_t*)value;
+				//p_data[row-1].status = *(uint32_t*)value;
+				snmp_smart.all.pch[row].status = *(uint32_t*)value;
+				power_set_ch_sw_n(&snmp_smart.all.pch[row]);
 			}
 				break;
 			default:
@@ -656,27 +754,39 @@ static snmp_err_t thr_set_value(struct snmp_node_instance *instance,u16_t len, v
 		{
 			case COLUMN_PDUCHANNELCURRENTLIMITUP:
 			{
-				p_t_data[row-1].i_max = (float)atof((char *)value);
+				snmp_smart.all.pch[row].thr.c_upper = (float)atof((char *)value) * 10;
+				//p_t_data[row-1].i_max = (float)atof((char *)value);
+				//snmp_smart.all.pch[row-1]
+				power_set_threshold(&snmp_smart.all.pch[row]);
 			}
 			break;
 			case COLUMN_PDUCHANNELVOLTAGELIMITUP:
 			{
-				p_t_data[row-1].v_max = (float)atof((char *)value);
+				//p_t_data[row-1].v_max = (float)atof((char *)value);
+				snmp_smart.all.pch[row].thr.v_upper = (float)atof((char *)value) * 10;
+				power_set_threshold(&snmp_smart.all.pch[row]);
 			}
 			break;
 			case COLUMN_PDUCHANNELVOLTAGELIMITDOWN:
 			{
-				p_t_data[row-1].v_min = (float)atof((char *)value);
+				snmp_smart.all.pch[row].thr.v_lower = (float)atof((char *)value) * 10;
+				power_set_threshold(&snmp_smart.all.pch[row]);
+				//p_t_data[row-1].v_min = (float)atof((char *)value);
+				//snmp_smart.all.pch[row-1].thr.v_upper = (float)atof((char *)value) * 10;
 			}
 			break;
 			case COLUMN_PDUCHANNELPOWERLIMITUP:
 			{
-				p_t_data[row-1].p_max = (float)atof((char *)value);
+				//p_t_data[row-1].p_max = (float)atof((char *)value);
+				snmp_smart.all.pch[row].thr.p_upper = (float)atof((char *)value) * 1000;
+				power_set_threshold(&snmp_smart.all.pch[row]);
 			}
 			break;
 			case COLUMN_PDUCHANNELCONSUMPTIONLIMITUP:
 			{
-				p_t_data[row-1].c_max = (float)atof((char *)value);
+				//p_t_data[row-1].c_max = (float)atof((char *)value);
+				snmp_smart.all.pch[row].thr.w_upper = (float)atof((char *)value) * 1000;
+				power_set_threshold(&snmp_smart.all.pch[row]);
 			}
 			break;
 			default:
@@ -695,6 +805,20 @@ static const struct snmp_scalar_array_node_def sysinfo_scalars_nodes[] = {
 		{0,0,0},
 };
 
+
+
+static const struct snmp_scalar_array_node_def total_scalars_node[] = {
+	{SCALAR_VOLTAGE,													SNMP_ASN1_TYPE_OCTET_STRING,				  SNMP_NODE_INSTANCE_READ_ONLY,},
+	{SCALAR_CURRENT,													SNMP_ASN1_TYPE_OCTET_STRING,				  SNMP_NODE_INSTANCE_READ_ONLY,},
+	{SCALAR_CONSUMEPTION,											SNMP_ASN1_TYPE_OCTET_STRING,				  SNMP_NODE_INSTANCE_READ_ONLY,},
+	{SCALAR_POWER_FACTOR,											SNMP_ASN1_TYPE_OCTET_STRING,				  SNMP_NODE_INSTANCE_READ_ONLY,},
+	{SCALAR_PACTIVE_POWER,										SNMP_ASN1_TYPE_OCTET_STRING,				  SNMP_NODE_INSTANCE_READ_ONLY,},
+	{SCALAR_REACTIVE_POWER,										SNMP_ASN1_TYPE_OCTET_STRING,				  SNMP_NODE_INSTANCE_READ_ONLY,},
+	{SCALAR_APPARENT_POWER,										SNMP_ASN1_TYPE_OCTET_STRING,				  SNMP_NODE_INSTANCE_READ_ONLY,},
+	{0,0,0},
+};
+
+
 static const struct snmp_table_col_def power_table_channels[]={
 	{COLUMN_PDUCHANNELID,											SNMP_ASN1_TYPE_INTEGER,								SNMP_NODE_INSTANCE_READ_ONLY},
 	{COLUMN_PDUCHANNELNAME,										SNMP_ASN1_TYPE_OCTET_STRING,					SNMP_NODE_INSTANCE_READ_ONLY},
@@ -747,15 +871,19 @@ static const struct snmp_table_col_def 	sensor_limit_table[] = {
 
 
 const struct snmp_scalar_array_node sysinfo_scalars = SNMP_SCALAR_CREATE_ARRAY_NODE(1, sysinfo_scalars_nodes, sysinfo_get_value, NULL, NULL);
+const struct snmp_scalar_array_node total_scalars = SNMP_SCALAR_CREATE_ARRAY_NODE(1,total_scalars_node, total_get_value, NULL, NULL);
 
 
-static const struct snmp_table_node power_table = SNMP_TABLE_CREATE(9, power_table_channels, get_instance, get_next_instance, \
+
+static const struct snmp_table_node power_table = SNMP_TABLE_CREATE(9, power_table_channels, power_get_instance, power_get_next_instance, \
 							power_get_value, set_test, power_set_value);
 
+
+
 static const struct snmp_table_node alarm_table = SNMP_TABLE_CREATE(1, alarm_history_table, get_instance, get_next_instance, \
 							alarm_get_value, set_test, NULL);
 
-static const struct snmp_table_node thr_table = SNMP_TABLE_CREATE(6, threshold_limit_table, get_instance, get_next_instance, \
+static const struct snmp_table_node thr_table = SNMP_TABLE_CREATE(6, threshold_limit_table, power_get_instance, power_get_next_instance, \
 							thr_get_value, set_test, thr_set_value);
 
 static const struct snmp_table_node thr_s_table = SNMP_TABLE_CREATE(1, sensor_limit_table, get_instance, get_next_instance, \
@@ -771,7 +899,13 @@ static const struct snmp_node *const alarm_subnodes[]={
 };
 static const struct snmp_node *const power_subnodes[] = {
     &power_table.node.node,
+		//&total_scalars.node.node,
 };
+
+//static const struct snmp_node *const total_subnodes[] = {
+//		&total_scalars.node.node,
+//    //&power_table.node.node,
+//};
 static const struct snmp_node *const thr_subnodes[] = {
     &thr_table.node.node,
 };
@@ -780,13 +914,18 @@ static const struct snmp_node *const thr_s_subnodes[] = {
     &thr_s_table.node.node,
 };
 
+
 const struct snmp_tree_node power_treenode 	= SNMP_CREATE_TREE_NODE(3, power_subnodes);
+//const struct snmp_tree_node total_treenode 	= SNMP_CREATE_TREE_NODE(3, total_subnodes);
 const struct snmp_tree_node alarm_treenode 	= SNMP_CREATE_TREE_NODE(6, alarm_subnodes);
 const struct snmp_tree_node thr_treenode 		= SNMP_CREATE_TREE_NODE(2, thr_subnodes);
-const struct snmp_tree_node thr_s_treenode 		= SNMP_CREATE_TREE_NODE(3, thr_s_subnodes);
-
+const struct snmp_tree_node thr_s_treenode 	= SNMP_CREATE_TREE_NODE(3, thr_s_subnodes);
 
 
+static const struct snmp_node *const mib2_nodes_dev_3[]=
+{
+	&total_scalars.node.node,
+};
 
 
 static const struct snmp_node *const mib2_nodes_dev[] =
@@ -794,7 +933,9 @@ static const struct snmp_node *const mib2_nodes_dev[] =
     &sysinfo_scalars.node.node,
 		&power_treenode.node,
 		&alarm_treenode.node,
-		//&thr_treenode.node,
+		//&total_scalars.node.node,
+		//&total_treenode.node,
+	  //&total_scalars.node.node,
 };
 
 
@@ -806,15 +947,18 @@ static const struct snmp_node *const mib2_nodes_dev_2[]={
 
 static const struct snmp_tree_node snmp_mib2_root_dev = SNMP_CREATE_TREE_NODE(1, mib2_nodes_dev);
 static const struct snmp_tree_node snmp_mib2_thr_dev = SNMP_CREATE_TREE_NODE(7, mib2_nodes_dev_2);
-
+static const struct snmp_tree_node snmp_mib2_totol_dev = SNMP_CREATE_TREE_NODE(3,mib2_nodes_dev_3);
 
 static const u32_t prvmib_base_oid[] = SNMP_SMARTPDU_DEVICE_OID;
 static const u32_t thr_base_oid[] = SNMP_SMARTPDU_THR_TABLE_IOD;
+static const u32_t total_base_oid[] = SNMP_SMARTPDU_TOTAL_OID;
 
 const struct snmp_mib mib2_dev = SNMP_MIB_CREATE(prvmib_base_oid, &snmp_mib2_root_dev.node);
 const struct snmp_mib mib2_th_dev = SNMP_MIB_CREATE(thr_base_oid, &snmp_mib2_thr_dev.node);
+const struct snmp_mib mib2_totol_dev = SNMP_MIB_CREATE(total_base_oid, &snmp_mib2_totol_dev.node);
+
 
-static const struct snmp_mib *dev_mibs[] = {&mib2, &mib2_dev,&mib2_th_dev};
+static const struct snmp_mib *dev_mibs[] = {&mib2, &mib2_dev,&mib2_th_dev,&mib2_totol_dev};
 
 
 

+ 10 - 0
f407/applications/snmp.h

@@ -66,6 +66,16 @@
        #define COLUMN_PDUSENSORLIMITVALUE2DOWN		6
 			 
 			 
+			#define   SCALAR_VOLTAGE              	  1
+			#define   SCALAR_CURRENT              	  2
+			#define 	SCALAR_CONSUMEPTION          	  3
+			#define   SCALAR_POWER_FACTOR             4
+			#define   SCALAR_PACTIVE_POWER            5
+			#define   SCALAR_REACTIVE_POWER						6
+			#define   SCALAR_APPARENT_POWER           7
+			 
+			 
+			 
 
 int snmp2_init(void);
 int snmp2_deinit(void);