diff --git a/Project/HC32F460/MDK/HC32F460.uvoptx b/Project/HC32F460/MDK/HC32F460.uvoptx index 10a7be7..175c4ce 100644 --- a/Project/HC32F460/MDK/HC32F460.uvoptx +++ b/Project/HC32F460/MDK/HC32F460.uvoptx @@ -120,7 +120,7 @@ 0 JL2CM3 - -U4294967295 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD1FFF8000 -FC1000 -FN2 -FF0HC32F460_512K.FLM -FS00 -FL080000 -FP0($$Device:HC32F460JETA$FlashARM\HC32F460_512K.FLM) -FF1HC32F460_otp.FLM -FS13000C00 -FL13FC -FP1($$Device:HC32F460JETA$FlashARM\HC32F460_otp.FLM) + -U2147483647 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -TO18 -TC10000000 -TP21 -TDS8027 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD1FFF8000 -FC1000 -FN2 -FF0HC32F460_512K.FLM -FS00 -FL080000 -FP0($$Device:HC32F460JETA$FlashARM\HC32F460_512K.FLM) -FF1HC32F460_otp.FLM -FS13000C00 -FL13FC -FP1($$Device:HC32F460JETA$FlashARM\HC32F460_otp.FLM) 0 @@ -215,6 +215,11 @@ 1 App.EmergencyDelay1mSCnt,0x0A + + 12 + 1 + App.ADTrack.LeftLowShieldVPT,0x0A + 0 diff --git a/Project/HC32F460/source/User/Inc/main.h b/Project/HC32F460/source/User/Inc/main.h index 0a236c8..8707242 100644 --- a/Project/HC32F460/source/User/Inc/main.h +++ b/Project/HC32F460/source/User/Inc/main.h @@ -12,12 +12,12 @@ #define SLOPE_VPT 1000 #define FOLLOW_VPT 20 -#define SHIELD_VPT 10000 +#define SHIELD_VPT 4000 #define EME_STOP_VPT 4000 #define STOP_TIME_MS 0 #define RUN_TIME_MS 0 -#define EME_START_MS 1000 +#define EME_START_MS 2000 #define EME_STOP_MS 2000 #define SLOPE_START_MS 3000 diff --git a/Project/HC32F460/source/User/Src/main.c b/Project/HC32F460/source/User/Src/main.c index de7597d..4de1d89 100644 --- a/Project/HC32F460/source/User/Src/main.c +++ b/Project/HC32F460/source/User/Src/main.c @@ -266,8 +266,7 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_ if(abs(Oll_diff1) > abs(Orl_diff1)) { App.LeftRunFalg = true; - - if((Oll_diff1+Orl_diff1) < -(App.ADTrack.LeftLowVPT/(App.Para.Layout.ControlLevel+1))) + if((Oll_diff1+Orl_diff1) < -(App.ADTrack.Stop_VPT)) { BDC_UP(); App.UpFlag = true; @@ -275,9 +274,8 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_ App.DownFlag = false; App.EmeFlag = false; App.RunCollDelay1mSCnt = RUN_TIME_MS; - App.EmergencyDelay1mSCnt = EME_START_MS; } - if((Oll_diff1+Orl_diff1) > App.ADTrack.LeftLowVPT/(App.Para.Layout.ControlLevel+1)) + if((Oll_diff1+Orl_diff1) > (App.ADTrack.Stop_VPT)) { BDC_DOWN(); App.UpFlag = false; @@ -285,13 +283,12 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_ App.DownFlag = true; App.EmeFlag = false; App.RunCollDelay1mSCnt = RUN_TIME_MS; - App.EmergencyDelay1mSCnt = EME_START_MS; } } else if(abs(Oll_diff1) < abs(Orl_diff1)) { App.RightRunFalg = true; - if((Oll_diff1+Orl_diff1) < -(App.ADTrack.RightLowVPT/(App.Para.Layout.ControlLevel+1))) + if((Oll_diff1+Orl_diff1) < -(App.ADTrack.Stop_VPT)) { BDC_UP(); App.UpFlag = true; @@ -299,9 +296,8 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_ App.DownFlag = false; App.EmeFlag = false; App.RunCollDelay1mSCnt = RUN_TIME_MS; - App.EmergencyDelay1mSCnt = EME_START_MS; } - if((Oll_diff1+Orl_diff1) > App.ADTrack.RightLowVPT/(App.Para.Layout.ControlLevel+1)) + if((Oll_diff1+Orl_diff1) > (App.ADTrack.Stop_VPT)) { BDC_DOWN(); App.UpFlag = false; @@ -309,7 +305,6 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_ App.DownFlag = true; App.EmeFlag = false; App.RunCollDelay1mSCnt = RUN_TIME_MS; - App.EmergencyDelay1mSCnt = EME_START_MS; } } } @@ -323,16 +318,11 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_ && (App.LeftLowCS1237_SlopeArray[1] >= App.ADTrack.Slope_VPT) && (App.LeftLowCS1237_SlopeArray[2] >= App.ADTrack.Slope_VPT) && (App.SlopeCollDelay1mSCnt <= 0)) - || ( - (Olu_diff1 >= App.ADTrack.LeftUpVPT*5/6) - && (Olu_diff2 >= App.ADTrack.LeftUpVPT*5/6) - && (Olu_diff3 >= App.ADTrack.LeftUpVPT*5/6) - && (Oll_diff1 <= -(App.ADTrack.LeftLowVPT*5/6)) + || ((Oll_diff1 <= -(App.ADTrack.LeftLowVPT*5/6)) && (Oll_diff2 <= -(App.ADTrack.LeftLowVPT*5/6)) && (Oll_diff3 <= -(App.ADTrack.LeftLowVPT*5/6)))) { - if((abs(Oll_diff1) > abs(Oru_diff1) + App.ADTrack.LeftLowShieldVPT) - && (abs(Olu_diff1) > abs(Orl_diff1) + App.ADTrack.LeftUpShieldVPT) + if((abs(Oll_diff1) > abs(Orl_diff1) + App.ADTrack.LeftLowShieldVPT) ) { BDC_UP(); @@ -341,7 +331,6 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_ App.DownFlag = false; App.EmeFlag = false; App.RunCollDelay1mSCnt = RUN_TIME_MS; - App.EmergencyDelay1mSCnt = EME_START_MS; } } else if(((App.LeftUpCS1237_SlopeArray[0] >= App.ADTrack.Slope_VPT) @@ -351,16 +340,11 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_ && (App.LeftLowCS1237_SlopeArray[1] <= -App.ADTrack.Slope_VPT) && (App.LeftLowCS1237_SlopeArray[2] <= -App.ADTrack.Slope_VPT) && ((App.SlopeCollDelay1mSCnt <= 0))) - || ( - (Olu_diff1 <= -App.ADTrack.LeftUpVPT) - && (Olu_diff1 <= -App.ADTrack.LeftUpVPT) - && (Olu_diff1 <= -App.ADTrack.LeftUpVPT) - && (Oll_diff1 >= App.ADTrack.LeftLowVPT) + || ((Oll_diff1 >= App.ADTrack.LeftLowVPT) && (Oll_diff1 >= App.ADTrack.LeftLowVPT) && (Oll_diff1 >= App.ADTrack.LeftLowVPT))) { - if((abs(Oll_diff1) > abs(Oru_diff1) + App.ADTrack.LeftLowShieldVPT) - && (abs(Olu_diff1) > abs(Orl_diff1) + App.ADTrack.LeftUpShieldVPT) + if((abs(Oll_diff1) > abs(Orl_diff1) + App.ADTrack.LeftLowShieldVPT) ) { BDC_DOWN(); @@ -369,7 +353,6 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_ App.StopFlag = false; App.EmeFlag = false; App.RunCollDelay1mSCnt = RUN_TIME_MS; - App.EmergencyDelay1mSCnt = EME_START_MS; } } } @@ -383,15 +366,11 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_ && (App.RightLowCS1237_SlopeArray[1] >= App.ADTrack.Slope_VPT) && (App.RightLowCS1237_SlopeArray[2] >= App.ADTrack.Slope_VPT) && (App.SlopeCollDelay1mSCnt <= 0)) - || ((Oru_diff1 >= App.ADTrack.RightUpVPT*5/6) - && (Oru_diff2 >= App.ADTrack.RightUpVPT*5/6) - && (Oru_diff3 >= App.ADTrack.RightUpVPT*5/6) - && (Orl_diff1 <= -(App.ADTrack.RightLowVPT*5/6)) + || ((Orl_diff1 <= -(App.ADTrack.RightLowVPT*5/6)) && (Orl_diff2 <= -(App.ADTrack.RightLowVPT*5/6)) && (Orl_diff3 <= -(App.ADTrack.RightLowVPT*5/6)))) { - if((abs(Orl_diff1) > abs(Olu_diff1) + App.ADTrack.RightLowShieldVPT) - && (abs(Oru_diff1) > abs(Oll_diff1) + App.ADTrack.RightUpShieldVPT) + if((abs(Orl_diff1) > abs(Oll_diff1) + App.ADTrack.RightLowShieldVPT) ) { BDC_UP(); @@ -400,7 +379,6 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_ App.DownFlag = false; App.EmeFlag = false; App.RunCollDelay1mSCnt = RUN_TIME_MS; - App.EmergencyDelay1mSCnt = EME_START_MS; } } else if(((App.RightUpCS1237_SlopeArray[0] >= App.ADTrack.Slope_VPT) @@ -410,16 +388,12 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_ && (App.RightLowCS1237_SlopeArray[1] <= -App.ADTrack.Slope_VPT) && (App.RightLowCS1237_SlopeArray[2] <= -App.ADTrack.Slope_VPT) && (App.SlopeCollDelay1mSCnt <= 0)) - || ((Oru_diff1 <= -App.ADTrack.RightUpVPT) - && (Oru_diff2 <= -App.ADTrack.RightUpVPT) - && (Oru_diff3 <= -App.ADTrack.RightUpVPT) - && (Orl_diff1 >= App.ADTrack.RightLowVPT) + || ((Orl_diff1 >= App.ADTrack.RightLowVPT) && (Orl_diff2 >= App.ADTrack.RightLowVPT) && (Orl_diff3 >= App.ADTrack.RightLowVPT)) ) { - if((abs(Oru_diff1) > abs(Oll_diff1) + App.ADTrack.RightUpShieldVPT) - && (abs(Orl_diff1) > abs(Olu_diff1) + App.ADTrack.RightLowShieldVPT) + if((abs(Oru_diff1) > abs(Olu_diff1) + App.ADTrack.RightUpShieldVPT) ) { BDC_DOWN(); @@ -428,7 +402,6 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_ App.UpFlag = false; App.EmeFlag = false; App.RunCollDelay1mSCnt = RUN_TIME_MS; - App.EmergencyDelay1mSCnt = EME_START_MS; } } } @@ -438,7 +411,7 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_ if(App.LeftRunFalg == true) { if(((App.CentreRunFalg == false ) && (ll_slope > App.ADTrack.Slope_VPT)) - || ((App.CentreRunFalg == true ) && (App.LeftUpCS1237_SlopeArray[0] + App.RightUpCS1237_SlopeArray[0]) > App.ADTrack.Slope_VPT)) + || ((App.CentreRunFalg == true ) && ((App.LeftUpCS1237_SlopeArray[0] + App.RightUpCS1237_SlopeArray[0]) > App.ADTrack.Slope_VPT) && (App.SlopeCollDelay1mSCnt <= 0))) { BDC_STOP(); App.StopFlag = true; @@ -447,9 +420,14 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_ App.EmeFlag = false; App.StopCollDelay1mSCnt = STOP_TIME_MS; App.SlopeCollDelay1mSCnt = SLOPE_START_MS; + App.EmergencyDelay1mSCnt = EME_START_MS; } else if(((App.CentreRunFalg == false ) && (Oll_diff1 < App.ADTrack.Stop_VPT)) - || ((App.CentreRunFalg == true) && ((Oll_diff1 + Orl_diff1) < (App.ADTrack.Stop_VPT)))) + || ((App.CentreRunFalg == true) + && ((Oll_diff1 + Orl_diff1) < (App.ADTrack.Stop_VPT*2/3)) + && ((Oll_diff2 + Orl_diff2) < (App.ADTrack.Stop_VPT*2/3)) + && ((Oll_diff3 + Orl_diff3) < (App.ADTrack.Stop_VPT*2/3)) + )) { BDC_STOP(); App.StopFlag = true; @@ -458,10 +436,11 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_ App.EmeFlag = false; App.StopCollDelay1mSCnt = STOP_TIME_MS; App.SlopeCollDelay1mSCnt = SLOPE_START_MS; + App.EmergencyDelay1mSCnt = EME_START_MS; } - else if((abs(Oll_diff1) - EME_STOP_VPT) < abs(Orl_diff1) - && (abs(Oll_diff2) - EME_STOP_VPT) < abs(Orl_diff2) - && (abs(Oll_diff3) - EME_STOP_VPT) < abs(Orl_diff3) + else if((abs(Oll_diff1) + EME_STOP_VPT) < abs(Orl_diff1) + && (abs(Oll_diff2) + EME_STOP_VPT) < abs(Orl_diff2) + && (abs(Oll_diff3) + EME_STOP_VPT) < abs(Orl_diff3) && App.EmergencyDelay1mSCnt <= 0 && App.CentreRunFalg == false) { BDC_STOP(); @@ -472,7 +451,7 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_ else if(App.RightRunFalg == true) { if(((App.CentreRunFalg == false ) && (rl_slope > App.ADTrack.Slope_VPT)) - || ((App.CentreRunFalg == true ) && (App.LeftUpCS1237_SlopeArray[0] + App.RightUpCS1237_SlopeArray[0]) < -App.ADTrack.Slope_VPT)) + || ((App.CentreRunFalg == true ) && ((App.LeftUpCS1237_SlopeArray[0] + App.RightUpCS1237_SlopeArray[0]) < -App.ADTrack.Slope_VPT) && (App.SlopeCollDelay1mSCnt <= 0))) { BDC_STOP(); App.StopFlag = true; @@ -481,9 +460,14 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_ App.EmeFlag = false; App.StopCollDelay1mSCnt = STOP_TIME_MS; App.SlopeCollDelay1mSCnt = SLOPE_START_MS; + App.EmergencyDelay1mSCnt = EME_START_MS; } else if(((App.CentreRunFalg == false ) && (Orl_diff1 < App.ADTrack.Stop_VPT)) - || ((App.CentreRunFalg == true) && ((Oll_diff1 + Orl_diff1) < (App.ADTrack.Stop_VPT)))) + || ((App.CentreRunFalg == true) + && ((Oll_diff1 + Orl_diff1) < (App.ADTrack.Stop_VPT*2/3)) + && ((Oll_diff2 + Orl_diff2) < (App.ADTrack.Stop_VPT*2/3)) + && ((Oll_diff3 + Orl_diff3) < (App.ADTrack.Stop_VPT*2/3)) + )) { BDC_STOP(); App.StopFlag = true; @@ -492,10 +476,11 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_ App.EmeFlag = false; App.StopCollDelay1mSCnt = STOP_TIME_MS; App.SlopeCollDelay1mSCnt = SLOPE_START_MS; + App.EmergencyDelay1mSCnt = EME_START_MS; } - else if(abs(Oll_diff1) > (abs(Orl_diff1) - EME_STOP_VPT) - && abs(Oll_diff2) > (abs(Orl_diff2) - EME_STOP_VPT) - && abs(Oll_diff3) > (abs(Orl_diff3) - EME_STOP_VPT) + else if(abs(Oll_diff1) > (abs(Orl_diff1) + EME_STOP_VPT) + && abs(Oll_diff2) > (abs(Orl_diff2) + EME_STOP_VPT) + && abs(Oll_diff3) > (abs(Orl_diff3) + EME_STOP_VPT) && App.EmergencyDelay1mSCnt <= 0 && App.CentreRunFalg == false) { BDC_STOP(); @@ -509,7 +494,7 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_ if(App.LeftRunFalg == true) { if(((App.CentreRunFalg == false ) && (ll_slope < -App.ADTrack.Slope_VPT)) - || ((App.CentreRunFalg == true ) && (App.LeftUpCS1237_SlopeArray[0] + App.RightUpCS1237_SlopeArray[0]) > App.ADTrack.Slope_VPT)) + || ((App.CentreRunFalg == true ) && ((App.LeftUpCS1237_SlopeArray[0] + App.RightUpCS1237_SlopeArray[0]) > App.ADTrack.Slope_VPT) && (App.SlopeCollDelay1mSCnt <= 0))) { BDC_STOP(); App.StopFlag = true; @@ -518,9 +503,14 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_ App.EmeFlag = false; App.StopCollDelay1mSCnt = STOP_TIME_MS; App.SlopeCollDelay1mSCnt = SLOPE_START_MS; + App.EmergencyDelay1mSCnt = EME_START_MS; } else if(((App.CentreRunFalg == false ) && (Oll_diff1 > -App.ADTrack.Stop_VPT)) - || ((App.CentreRunFalg == true) && ((Oll_diff1 + Orl_diff1) > -App.ADTrack.Stop_VPT))) + || ((App.CentreRunFalg == true) + && ((Oll_diff1 + Orl_diff1) > -(App.ADTrack.Stop_VPT*2/3)) + && ((Oll_diff2 + Orl_diff2) > -(App.ADTrack.Stop_VPT*2/3)) + && ((Oll_diff3 + Orl_diff3) > -(App.ADTrack.Stop_VPT*2/3)) + )) { BDC_STOP(); App.StopFlag = true; @@ -529,10 +519,11 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_ App.EmeFlag = false; App.StopCollDelay1mSCnt = STOP_TIME_MS; App.SlopeCollDelay1mSCnt = SLOPE_START_MS; + App.EmergencyDelay1mSCnt = EME_START_MS; } - else if((abs(Oll_diff1) - EME_STOP_VPT) < abs(Orl_diff1) - && (abs(Oll_diff2) - EME_STOP_VPT) < abs(Orl_diff2) - && (abs(Oll_diff3) - EME_STOP_VPT) < abs(Orl_diff3) + else if((abs(Oll_diff1) + EME_STOP_VPT) < abs(Orl_diff1) + && (abs(Oll_diff2) + EME_STOP_VPT) < abs(Orl_diff2) + && (abs(Oll_diff3) + EME_STOP_VPT) < abs(Orl_diff3) && App.EmergencyDelay1mSCnt <= 0 && App.CentreRunFalg == false) { BDC_STOP(); @@ -543,7 +534,7 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_ else if(App.RightRunFalg == true) { if(((App.CentreRunFalg == false ) && (rl_slope < -App.ADTrack.Slope_VPT)) - || ((App.CentreRunFalg == true ) && (App.LeftUpCS1237_SlopeArray[0] + App.RightUpCS1237_SlopeArray[0]) > App.ADTrack.Slope_VPT)) + || ((App.CentreRunFalg == true ) && ((App.LeftUpCS1237_SlopeArray[0] + App.RightUpCS1237_SlopeArray[0]) > App.ADTrack.Slope_VPT) && (App.SlopeCollDelay1mSCnt <= 0))) { BDC_STOP(); App.StopFlag = true; @@ -552,9 +543,14 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_ App.EmeFlag = false; App.StopCollDelay1mSCnt = STOP_TIME_MS; App.SlopeCollDelay1mSCnt = SLOPE_START_MS; + App.EmergencyDelay1mSCnt = EME_START_MS; } else if(((App.CentreRunFalg == false ) && (Orl_diff1 > -App.ADTrack.Stop_VPT)) - || ((App.CentreRunFalg == true) && ((Oll_diff1 + Orl_diff1) > -(App.ADTrack.Stop_VPT)))) + || ((App.CentreRunFalg == true) + && ((Oll_diff1 + Orl_diff1) > -(App.ADTrack.Stop_VPT*2/3)) + && ((Oll_diff2 + Orl_diff2) > -(App.ADTrack.Stop_VPT*2/3)) + && ((Oll_diff3 + Orl_diff3) > -(App.ADTrack.Stop_VPT*2/3)) + )) { BDC_STOP(); App.StopFlag = true; @@ -563,10 +559,11 @@ void SupportControlHandle(int32_t *lu_ad, int32_t *ll_ad, int32_t *ru_ad, int32_ App.EmeFlag = false; App.StopCollDelay1mSCnt = STOP_TIME_MS; App.SlopeCollDelay1mSCnt = SLOPE_START_MS; + App.EmergencyDelay1mSCnt = EME_START_MS; } - else if(abs(Oll_diff1) > (abs(Orl_diff1) - EME_STOP_VPT) - && abs(Oll_diff2) > (abs(Orl_diff2) - EME_STOP_VPT) - && abs(Oll_diff3) > (abs(Orl_diff3) - EME_STOP_VPT) + else if(abs(Oll_diff1) > (abs(Orl_diff1) + EME_STOP_VPT) + && abs(Oll_diff2) > (abs(Orl_diff2) + EME_STOP_VPT) + && abs(Oll_diff3) > (abs(Orl_diff3) + EME_STOP_VPT) && App.EmergencyDelay1mSCnt <= 0 && App.CentreRunFalg == false) { BDC_STOP();