Browse Source

级联数据结构

liyi 1 year ago
parent
commit
31b0fb398e
4 changed files with 478 additions and 408 deletions
  1. 11 10
      f407/applications/cascade.c
  2. 52 0
      f407/applications/datadef.h
  3. 410 398
      f407/project/app/app.uvoptx
  4. 5 0
      f407/project/app/app.uvprojx

+ 11 - 10
f407/applications/cascade.c

@@ -88,7 +88,7 @@ uint8_t cascade_init(const char* uart,uint8_t mode,uint8_t addr,uint8_t baud)
 		para.mode = MB_MODE_SLAVE;
 		slave_info.saddr = addr;
 	}
-  slave_info.lock = lock_d_init();
+  slave_info.lock = lock_init();
 	slave_info.mb = mb_init(&para);
   if(!slave_info.mb) {
       return -1;
@@ -115,9 +115,9 @@ static uint8_t master_scan(cascade_handle_t *cas)
 	{
 		//scan
 		uint16_t value = 0;
-		lock_s_hold(cas->lock);
+		lock_on(cas->lock);
 		int r = mb_read(cas->mb,slave_addr,CASCADE_REG_SCAN,&value,1,300);
-		lock_s_release(cas->lock);
+		lock_off(cas->lock);
 		if(r > 0)
 		{
 			cas->slaves[slave_addr].addr = slave_addr;
@@ -148,8 +148,8 @@ void * cascade_scan_thread(void *arg)
 static int slave_get_info(cascade_handle_t *cas)
 {
 	slave_info_t *info=&cas->info;
-	board_all_t *board = get_control_board();
-	info->channels = board->chs;
+	power_data_t power = power_data_get();
+	info->channels = power.chs;
 	//info->channels=0;
 	//memcpy(info->ch,board->pbrd[],)
 	//copy mem to info
@@ -304,7 +304,7 @@ static int _mb_write(cascade_handle_t *cas, int addr, data_t *d)
 	if(d->dlen<=0) {
         return -1;
   }
-	lock_d_hold(cas->lock);
+	lock_on(cas->lock);
 	while(1)
 	{
 		 if(wlen+oncelen>d->dlen) {
@@ -328,7 +328,7 @@ static int _mb_write(cascade_handle_t *cas, int addr, data_t *d)
     }
     wlen += xlen;
 	}
-	lock_d_release(cas->lock);
+	lock_off(cas->lock);
 }
 static int _mb_read(cascade_handle_t *cas, int addr, data_t *d)
 {
@@ -338,7 +338,7 @@ static int _mb_read(cascade_handle_t *cas, int addr, data_t *d)
     if(d->dlen<=0) {
         return -1;
     }
-		lock_d_hold(cas->lock);
+		lock_on(cas->lock);
     while(1) {
 			if(rlen+oncelen>d->dlen) {
          xlen = d->dlen-rlen;
@@ -695,8 +695,9 @@ int mb_port_read_hold(u16 addr, u16 *preg)//读保持寄存器, 返回 : 0-成
 
 int mb_port_write_hold(u16 addr, u16 reg)//写保持寄存器, 返回 : 0-成功, -2-地址错误, -3-值非法, -4-设备故障
 {
-	board_all_t *board = get_control_board();
-  if(AC_DC_SET_DELAY_OPEN <= addr && addr <= AC_DC_ALL_SET_SWITCH_REG)
+	//board_all_t *board = get_control_board();
+  power_data_t power = power_data_get();
+	if(AC_DC_SET_DELAY_OPEN <= addr && addr <= AC_DC_ALL_SET_SWITCH_REG)
 	{
 		switch(addr)
 		{

+ 52 - 0
f407/applications/datadef.h

@@ -144,6 +144,10 @@ enum {
 };
 ////////////////////////////////////////////////
 #pragma pack (1)
+
+
+
+
 typedef struct {
     uint8_t             mode;
     uint8_t             addr;               
@@ -516,6 +520,54 @@ typedef struct {
 }pkt_hdr_t;
 
 
+typedef struct md_ac_dc{
+    uint16_t          dev_cnt;                   //设备类型和通道数
+    power_t           power[64];                 //最大64通道
+    uint16_t          temp_hum;
+    uint16_t          switch_stu[64];
+    uint16_t          delay_open[64];
+    uint16_t          delay_close[64];
+    sensor_info_t     md_s[8];
+    uint16_t          dry_node[4]; 
+}md_ac_dc_t;
+
+typedef struct all_info{
+    uint32_t voltage;
+    uint32_t current;
+    uint32_t power;
+    uint32_t consumer;
+}all_info_t;
+
+typedef struct {
+    uint32_t power;
+    uint32_t freq;
+    uint32_t consumer;
+    uint16_t fac;
+    uint32_t out_type;
+}all_chn_info_t;
+
+
+typedef struct chn_phase_info{
+    uint32_t p_voltage;
+    uint32_t p_current;
+    uint32_t p_power;
+    uint32_t p_consumer;
+    uint32_t p_status;
+}chn_phase_info_t;
+
+typedef struct md_3_ac{
+    uint16_t            dev_cnt;                                        //设备类型和通道数
+    all_info_t          ac_3_all_pw[3];
+    all_chn_info_t      ac_3_all_chn[64];
+    chn_phase_info_t    ac_3_chn_p[64][3];
+    uint16_t            temp_hum;
+    uint16_t            switch_chn[64];
+    uint16_t            delay_open[64];
+    uint16_t            delay_close[64];
+    sensor_info_t       md_s[8];
+    uint16_t            dry_node[4];
+}md_3_ac_t;
+
 
 #pragma pack ()
 

File diff suppressed because it is too large
+ 410 - 398
f407/project/app/app.uvoptx


+ 5 - 0
f407/project/app/app.uvprojx

@@ -703,6 +703,11 @@
                 </FileArmAds>
               </FileOption>
             </File>
+            <File>
+              <FileName>cascade.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\applications\cascade.c</FilePath>
+            </File>
           </Files>
         </Group>
         <Group>