Browse Source

1、优化喷洒、播撒、称重

z8359531l 1 month ago
parent
commit
c41a4ca850

+ 1 - 1
.vscode/settings.json

@@ -16,6 +16,6 @@
         "cinttypes": "c",
         "cstdlib": "c"
     },
-    "cortex-debug.variableUseNaturalFormat": false,
+    "cortex-debug.variableUseNaturalFormat": true,
     "RTT_Studio.Build.Parallel_Jobs": "16"
 }

+ 12 - 1
user_inc/soft_device.h

@@ -73,6 +73,15 @@ enum FACID
     FAC_MOCIB_RF = 24,  //莫之比前避障
     FAC_MOCIB_RB = 25, //莫之比后避障
 
+    FAC_QX_BMS = 30,  //协氢电池
+    FAC_DM_CHECKLOW = 31,//电目断料计
+
+    FAC_DM_RT_4D = 36,  //DM 4d防地
+    FAC_DM_RF_4D = 37,  //DM 4d前避障
+    FAC_DM_RB_4D = 38, //DM  4d后避障
+
+    FAC_CHURN_SEED = 40, //绞龙播撒
+
 };
 typedef struct
 {
@@ -118,6 +127,7 @@ typedef struct
     uint16_t warn;
     uint16_t runtime;
     uint16_t churn_rpm;
+    uint16_t churn_warn;
 } Seed_info;
 #pragma pack()
 
@@ -262,7 +272,8 @@ typedef struct
     uint8_t facid;
     uint16_t height_part[3];
     uint16_t raw_height_part[3];
-    short angle_part[3];
+    short angle_Horpart[3];
+    short angle_Velpart[3];
 } Part_FBradar;
 
 #pragma pack()

+ 6 - 0
user_inc/usart_data_handle.h

@@ -41,6 +41,11 @@ typedef enum
 	GROUP_ID_WEIGHT_UPDATE = 222,
 	GROUP_ID_Z70FB_UPDATE = 223,
 	GROUP_ID_Z70FBLIFTING_UPDATE = 224,
+	GROUP_ID_EFT_TURNMOTOR = 225,
+	GROUP_ID_EFT_CHURN = 226,
+	GROUP_ID_EFT_CHURNTURN = 227,
+
+	GROUP_IDEND,
 } GROUP_ID;
 
 
@@ -94,6 +99,7 @@ enum vklink_MSGID_SET
 	MSGID_SET_LACKLOSS_CAL = 30,  // 断料记校准
 	MSGID_SET_PNCANID   = 55,	  //设置EFT水泵电调CAN ID
 	MSGID_SET_RESIWIRE_BLOWN = 60,// 熔断电阻丝
+	MSGID_SET_CHURN_RESET = 61,	  // 绞龙复位
 };
 
 

+ 19 - 4
user_src/soft_device.c

@@ -99,6 +99,7 @@ void update_device_type_data(void)
                     Dev.Seed.speed = turntable.rpm;
                     Dev.Seed.churn_rpm = churn.rpm;
                     Dev.Seed.warn = churn.error_status;
+                    Dev.Seed.churn_warn = churn.reserve;
                 }
                 break;
             case FAC_QIFEI:
@@ -107,7 +108,19 @@ void update_device_type_data(void)
                 Dev.Seed.caplow = 0;
                 Dev.Seed.warn = weight_vkinfo.warn_status;
                 break;
-
+            case FAC_CHURN_SEED:
+                Dev.Seed.angle = eft_info.valve_angel;
+                Dev.Seed.speed = eft_info.speed_rpm * 10;
+                Dev.Seed.caplow = eft_info.warn_status & 0x1;
+                Dev.Seed.warn = eft_info.warn_status >> 1;
+                if(spread_type == SPREAD_JIAOLONG)
+                {
+                    Dev.Seed.speed = turntable.rpm;
+                    Dev.Seed.churn_rpm = churn.rpm;
+                    Dev.Seed.warn = churn.error_status;
+                    Dev.Seed.churn_warn = churn.reserve;
+                }
+                break;;
             default:
                 break;
             }
@@ -151,7 +164,7 @@ void update_device_type_data(void)
                 break;
             case FAC_LIFTWEIGHT:
                 Dev.Weight.mode = 0;
-                Dev.Weight.kg = eft_info.weight;
+                Dev.Weight.kg = fplate.weight / 10;
                 Dev.Weight.rate = 0;
                 Dev.Weight.k1 = eft_info.seed_k[0];
                 Dev.Weight.k2 = eft_info.seed_k[1];
@@ -500,7 +513,8 @@ void update_device_type_data(void)
             {
                 Dev.Part_radarF.height_part[i] = F_radar[i].Distance * 0.05f * 100 * cos(F_radar[i].Amuzith * 0.1f / RAD);
                 Dev.Part_radarF.raw_height_part[i] = F_radar[i].Distance * 0.05f * 100;
-                Dev.Part_radarF.angle_part[i] = F_radar[i].Amuzith;
+                Dev.Part_radarF.angle_Horpart[i] = F_radar[i].Amuzith;
+                Dev.Part_radarF.angle_Velpart[i] = F_radar[i].Elevation;
             }
         }
 
@@ -510,7 +524,8 @@ void update_device_type_data(void)
             {
                 Dev.Part_radarB.height_part[i] = B_radar[i].Distance * 0.05f * 100 * cos(B_radar[i].Amuzith * 0.1f / RAD);
                 Dev.Part_radarB.raw_height_part[i] = B_radar[i].Distance * 0.05f * 100;
-                Dev.Part_radarB.angle_part[i] = B_radar[i].Amuzith;
+                Dev.Part_radarB.angle_Horpart[i] = B_radar[i].Amuzith;
+                Dev.Part_radarB.angle_Velpart[i] = B_radar[i].Elevation;
             }
         }
 

+ 1 - 1
user_src/soft_seed_weight.c

@@ -572,7 +572,7 @@ void Set_Seed_Weight_Par(uint8_t device_type,char *factory)
                     default:
                         break;
                     }
-                    Can_Send_Msg_Func(CANID2, can_buf, 8, 0x7011, CAN_ID_EXT);
+                    Can_Send_Msg_Func(CANID2, can_buf, 8, can_id, CAN_ID_EXT);
                 }
                 HAL_Delay(10);
                 weight_order.type = 0;

+ 8 - 1
user_src/soft_update.c

@@ -756,7 +756,8 @@ void eft_dev_update_func(void)
     else if(eft_update.dev_id == GROUP_ID_EFTPUMP1_UPDATE || eft_update.dev_id == GROUP_ID_EFTPUMP2_UPDATE ||
          eft_update.dev_id == GROUP_ID_EFTNOZZLE1_UPDATE || eft_update.dev_id == GROUP_ID_EFTNOZZLE2_UPDATE ||
          eft_update.dev_id == GROUP_ID_EFTNOZZLE3_UPDATE || eft_update.dev_id == GROUP_ID_EFTNOZZLE4_UPDATE ||
-        eft_update.dev_id == GROUP_ID_EFTSEED_UPDATE || eft_update.dev_id == GROUP_ID_Z70FB_UPDATE || GROUP_ID_Z70FBLIFTING_UPDATE)
+        eft_update.dev_id == GROUP_ID_EFTSEED_UPDATE || eft_update.dev_id == GROUP_ID_Z70FB_UPDATE || GROUP_ID_Z70FBLIFTING_UPDATE ||
+        eft_update.dev_id == GROUP_ID_EFT_TURNMOTOR || eft_update.dev_id == GROUP_ID_EFT_CHURN || eft_update.dev_id == GROUP_ID_EFT_CHURNTURN)
     {
         canN = CANID2;
     }
@@ -781,6 +782,12 @@ void eft_dev_update_func(void)
         can_id = 0x7011;
     else if(eft_update.dev_id == GROUP_ID_Z70FBLIFTING_UPDATE)
         can_id = 0x88BB;
+    else if(eft_update.dev_id == GROUP_ID_EFT_TURNMOTOR)
+        can_id = 0x7733;
+    else if(eft_update.dev_id == GROUP_ID_EFT_TURNMOTOR)
+        can_id = 0x7711;
+    else if(eft_update.dev_id == GROUP_ID_EFT_TURNMOTOR)
+        can_id = 0x7722;
 
 
     switch (eft_update.step)

+ 19 - 8
user_src/soft_water.c

@@ -168,8 +168,11 @@ void Eft_Pump_Nozzle_recieved_hookfuction(uint32_t CanID, uint8_t data[], uint8_
         if(spary_type == SPARY_DEFAULT)
             spary_type = SPARY_GEMO;    
 
-        pump1.rpm = data[0] + data[1] *256;
-        pump2.rpm = data[2] + data[3] *256;
+        if( spary_type == SPARY_GEMO)
+        {
+            pump1.rpm = data[0] + data[1] *256;
+            pump2.rpm = data[2] + data[3] *256;
+        }
         
         Dev.Pump_Link.connect_status = COMP_NORMAL;
         Dev.Pump.facid = FAC_EFT;
@@ -661,6 +664,9 @@ void Z70_Pump_Nozzle_recieved_hookfuction(uint32_t CanID, uint8_t data[], uint8_
             if(weight_type == WEIGHT_DEFAULT || weight_type == WEIGHT_FPLATE)
                 weight_type = WEIGHT_TRANFER;
             
+            if(weight_init_eft.step.read_k_flag == 0)
+                weight_init_eft.step.read_k_flag = 1; //同时存在两个称重,重新获取K
+            
             if(weight_type == WEIGHT_TRANFER)
             {
                 memcpy(&fplate.weight,&data[4],2);
@@ -756,10 +762,12 @@ void Z70_Pump_Nozzle_recieved_hookfuction(uint32_t CanID, uint8_t data[], uint8_
 
             churn.rpm = z70_info.rpm;
             churn.error_status = z70_info.warning;
+            churn.reserve = (z70_info.reserve1 & 0x01) + (z70_info.reserve2 & 0x06);
+
 
             Dev.Seed_Link.connect_status = COMP_NORMAL;
             Dev.Seed_Link.recv_time = HAL_GetTick();
-            Dev.Seed.facid = FAC_EFT;
+            Dev.Seed.facid = FAC_CHURN_SEED;
             break;
         case Z70_Turntable:
             turntable.rpm = z70_info.rpm;
@@ -767,7 +775,7 @@ void Z70_Pump_Nozzle_recieved_hookfuction(uint32_t CanID, uint8_t data[], uint8_
 
             Dev.Seed_Link.connect_status = COMP_NORMAL;
             Dev.Seed_Link.recv_time = HAL_GetTick();
-            Dev.Seed.facid = FAC_EFT;
+            Dev.Seed.facid = FAC_CHURN_SEED;
             break;
         default:
             break;
@@ -796,6 +804,9 @@ void Z70_Pump_Nozzle_recieved_hookfuction(uint32_t CanID, uint8_t data[], uint8_
             z70weight.info.k4 = (data[6] >> 2) + (data[7] << 6);
             weight_init_eft.step.read_k_flag = 0;
             break;
+        case 0xE6:
+            pmu_set_ack(_MSGID_SET,MSGID_SET_CHURN_RESET,0,0);
+            break;
         default:
             break;
         }
@@ -1215,13 +1226,13 @@ void can_sendmsg_eft_water(void)
         water70_info.dev_water70.flag = planep.lock_status == STA_LOCK ? 0x5 : 0xA;
         if(Dev.Seed_Link.connect_status != COMP_NOEXIST)
         {
-            water70_info.dev_water70.pump1 = spread_par.pwm_valve - 1000;
-            water70_info.dev_water70.pump2 = spread_par.pwm_turntable - 1000;
+            water70_info.dev_water70.pump1 = math_cons_i16(spread_par.pwm_valve,1000,2000) - 1000;
+            water70_info.dev_water70.pump2 = math_cons_i16(spread_par.pwm_turntable,1000,2000) - 1000;
         }
         else
         {
-            water70_info.dev_water70.pump1 = pmu_pin.pump1 - 1000;
-            water70_info.dev_water70.pump2 = pmu_pin.pump2 - 1000;
+            water70_info.dev_water70.pump1 = math_cons_i16(pmu_pin.pump1,1000,2000) - 1000;
+            water70_info.dev_water70.pump2 = math_cons_i16(pmu_pin.pump2,1000,2000) - 1000;
         }
         water70_info.dev_water70.nozzle1 = pmu_pin.nozz1_fm - 1000;
         water70_info.dev_water70.nozzle2 = pmu_pin.nozz2_zp - 1000;

+ 11 - 10
user_src/usart_data_handle.c

@@ -79,7 +79,7 @@ void check_uart_data(void)
         case RX_GROUPID:
             if(c == GROUP_ID_FCU || c == GROUP_ID_PMU_UPDATE || c == GROUP_ID_F_UPDATE ||
             c == GROUP_ID_B_UPDATE || c == GROUP_ID_T_UPDATE|| c == GROUP_ID_WEIGHT_UPDATE ||
-            (c >= GROUP_ID_EFTPUMP1_UPDATE && c <= GROUP_ID_Z70FBLIFTING_UPDATE))
+            (c >= GROUP_ID_EFTPUMP1_UPDATE && c <= GROUP_IDEND))
             {
                 vk_data.group_id = c;
                 recv_step = RX_MSGID;
@@ -198,7 +198,8 @@ void check_uart_data(void)
                         vk_data.group_id == GROUP_ID_EFTNOZZLE1_UPDATE || vk_data.group_id == GROUP_ID_EFTNOZZLE2_UPDATE || 
                         vk_data.group_id == GROUP_ID_EFTNOZZLE3_UPDATE || vk_data.group_id == GROUP_ID_EFTNOZZLE4_UPDATE ||
                         vk_data.group_id == GROUP_ID_EFTFB_UPDATE || vk_data.group_id == GROUP_ID_EFTSEED_UPDATE ||
-                        vk_data.group_id == GROUP_ID_Z70FB_UPDATE || vk_data.group_id == GROUP_ID_Z70FBLIFTING_UPDATE)
+                        vk_data.group_id == GROUP_ID_Z70FB_UPDATE || vk_data.group_id == GROUP_ID_Z70FBLIFTING_UPDATE || 
+                        vk_data.group_id == GROUP_ID_EFT_TURNMOTOR)
                 {
                     if(vk_data.msg_id == 200 && eft_update.update_flag == false)
 					{
@@ -283,16 +284,16 @@ void thread_usart_task_entry(void *param)
                         pmu_pin.nozz4 = 100;
                 }
 
-                if(Dev.Eft_CanDev_Link[0].connect_status == COMP_NORMAL)
-                {
+                // if(Dev.Eft_CanDev_Link[0].connect_status == COMP_NORMAL)
+                // {
                     __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_1, pmu_pin.pump1);
                     __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_2, pmu_pin.pump2);
-                }
-                else
-                {
-                    __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_2, pmu_pin.pump1);
-                    __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_1, pmu_pin.pump2);
-                }
+                // }
+                // else
+                // {
+                //     __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_2, pmu_pin.pump1);
+                //     __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_1, pmu_pin.pump2);
+                // }
                 
                 __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, pmu_pin.nozz1_fm);
                 __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_2, pmu_pin.nozz2_zp);