|
@@ -1510,7 +1510,7 @@ static void MX_USART3_UART_Init(void)
|
|
|
|
|
|
|
|
|
|
|
|
- HAL_UART_Receive_DMA(&huart3,USART3_RX_BUF,Uart2_BUF_SIZE);
|
|
|
+ HAL_UART_Receive_DMA(&huart3,USART3_RX_BUF,Uart3_BUF_SIZE);
|
|
|
|
|
|
/* USER CODE END USART3_Init 2 */
|
|
|
|
|
@@ -1703,7 +1703,8 @@ void StartTask02(void *argument) //卸
|
|
|
{
|
|
|
osDelay(10); //以ms为单位
|
|
|
//HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_0);
|
|
|
- HAL_GPIO_TogglePin(WDI_sp706_kanmemgou_GPIO_Port, WDI_sp706_kanmemgou_Pin);
|
|
|
+ HAL_GPIO_TogglePin(WDI_sp706_kanmemgou_GPIO_Port, WDI_sp706_kanmemgou_Pin);
|
|
|
+ // continue;
|
|
|
if(Flash_Change) //如果有对Flash进行改动,则重新计算xyfaddr_max
|
|
|
{
|
|
|
xyfaddr_max = 0;
|
|
@@ -2181,6 +2182,37 @@ void StartTask03(void *argument) //
|
|
|
{
|
|
|
if((pcang->RKG_DG != 0) && (pcang->RKG_Type!=2))
|
|
|
{
|
|
|
+ if(pcang->RKG_Type == 0)
|
|
|
+ {
|
|
|
+ if(CMD_RKG[0] == 0x1)
|
|
|
+ {
|
|
|
+ if(i003 >= rkgaddr_max)
|
|
|
+ i003 = 0;
|
|
|
+ ++i003;
|
|
|
+ CMD_RKG[0] = 1+i003*2;
|
|
|
+ prkg[i003].RTData_Num++;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ CMD_RKG[0] = 0x1;
|
|
|
+ prkg[0].RTData_Num++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ prkg[CMD_RKG[0] - 0x30].RTData_Num++;
|
|
|
+
|
|
|
+ if(CMD_RKG[0] - 0x30 < rkgaddr_max)
|
|
|
+ {
|
|
|
+ ++i003;
|
|
|
+ CMD_RKG[0]=0x30+i003;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ CMD_RKG[0] = 0x31;
|
|
|
+ i003 = 1;
|
|
|
+ }
|
|
|
+ }
|
|
|
ModbusCRC = LIB_CRC_MODBUS(CMD_RKG,6);
|
|
|
CMD_RKG[6] = ModbusCRC>>8;
|
|
|
CMD_RKG[7] = ModbusCRC&0xff;
|
|
@@ -2207,26 +2239,8 @@ void StartTask03(void *argument) //
|
|
|
}
|
|
|
else
|
|
|
#endif
|
|
|
- prkg[CMD_RKG[0] - 0x30].RTData_Num++;
|
|
|
-
|
|
|
- if(pcang->RKG_Type == 0)
|
|
|
- {
|
|
|
- if(CMD_RKG[0] == 0x30)
|
|
|
- {
|
|
|
- CMD_RKG[0] += i003++;
|
|
|
- if(CMD_RKG[0] - 0x30 >= rkgaddr_max)//rkgaddr_max
|
|
|
- i003 = 1;
|
|
|
- }
|
|
|
- else
|
|
|
- CMD_RKG[0] = 0x30;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- if(CMD_RKG[0] - 0x30 < rkgaddr_max)//rkgaddr_max
|
|
|
- CMD_RKG[0]++;
|
|
|
- else
|
|
|
- CMD_RKG[0] = 0x31;
|
|
|
- }
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
else
|
|
|
i001 = 3;
|
|
@@ -2421,42 +2435,10 @@ void StartTask03(void *argument) //
|
|
|
receive_error = 0;
|
|
|
rx_len = USART1_RX_BUF002[2];
|
|
|
ModbusCRC = USART1_RX_BUF002[(3+rx_len)]<<8;
|
|
|
- ModbusCRC |= USART1_RX_BUF002[(3+rx_len+1)];
|
|
|
-
|
|
|
- //if((USART1_RX_BUF002[0] == 0x0D)&&(USART1_RX_BUF002[1] == 0x0A)) //slm
|
|
|
- ////head = 2;
|
|
|
- // else
|
|
|
- // head = 0;
|
|
|
-#if 0
|
|
|
- if(USART1_RX_BUF002[0]!=0x31)
|
|
|
- {
|
|
|
- prkg[1].RKDG_ErrorCnt++;
|
|
|
- if(prkg[1].RKDG_ErrorCnt>200)
|
|
|
- {
|
|
|
- prkg[1].RKDG_ErrorCnt = 201;
|
|
|
- prkg[1].RKDG_Error = 1;
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
+ ModbusCRC |= USART1_RX_BUF002[(3+rx_len+1)];
|
|
|
|
|
|
-
|
|
|
- if(USART1_RX_BUF002[0]!=0x32)
|
|
|
+ if((USART1_RX_BUF002[head+0] >= 0x30 && USART1_RX_BUF002[head+0] <= 0x3F) || (USART1_RX_BUF002[head+0] >= 0x1 && USART1_RX_BUF002[head+0] <= 0x10)) //人孔大盖数据 地址0x30为基准传感器
|
|
|
{
|
|
|
- prkg[2].RKDG_ErrorCnt++;
|
|
|
- if(prkg[2].RKDG_ErrorCnt>200)
|
|
|
- {
|
|
|
- prkg[2].RKDG_ErrorCnt = 201;
|
|
|
- prkg[2].RKDG_Error = 1;
|
|
|
- }
|
|
|
- }
|
|
|
-#endif
|
|
|
-
|
|
|
- if(USART1_RX_BUF002[head+0] >= 0x30 && USART1_RX_BUF002[head+0] <= 0x3F) //人孔大盖数据 地址0x30为基准传感器
|
|
|
- {
|
|
|
- // rx_len = USART1_RX_BUF002[2];
|
|
|
- // ModbusCRC1 = USART1_RX_BUF002[(3+rx_len)+1]<<8;
|
|
|
- // ModbusCRC1 |= USART1_RX_BUF002[(3+rx_len)];
|
|
|
- //prkg[USART1_RX_BUF002[head+0]-0x30].RTData_Num = 1;
|
|
|
if(USART1_RX_BUF002[head+1]!=0x03&&USART1_RX_BUF002[head+1]!=0x06) //校验读写属性
|
|
|
{
|
|
|
receive_error = 1;
|
|
@@ -2467,7 +2449,6 @@ void StartTask03(void *argument) //
|
|
|
}
|
|
|
else if(ModbusCRC != LIB_CRC_MODBUS(USART1_RX_BUF002,7)) //校验CRC
|
|
|
{
|
|
|
- // pcang->CRC2 = LIB_CRC_MODBUS(USART1_RX_BUF002,7);
|
|
|
receive_error = 1;
|
|
|
}
|
|
|
// if((pcang->RKG_Type == 0)&&(USART1_RX_BUF002[head]>=0x30)&&(USART1_RX_BUF002[head] <=0x4F))
|
|
@@ -2476,16 +2457,33 @@ void StartTask03(void *argument) //
|
|
|
// RKG_angle = (USART1_RX_BUF002[head+3]<<8)|USART1_RX_BUF002[head+4];
|
|
|
if((USART1_RX_BUF002[head+1] == 0x03)&&(receive_error == 0)) //读取数据返回
|
|
|
{//童赟 磁电编码 磁编码 人孔盖
|
|
|
- prkg[USART1_RX_BUF002[head]-0x30].RKDG_ErrorCnt = 0;
|
|
|
- prkg[USART1_RX_BUF002[head]-0x30].RKDG_Error=0;
|
|
|
- //prkg[USART1_RX_BUF002[head]-0x30].RTData_Num = 1;
|
|
|
- AGL_AddNewData(RKG_angle,USART1_RX_BUF002[head]);
|
|
|
+ if(USART1_RX_BUF002[head]==1)
|
|
|
+ {
|
|
|
+ prkg[0].RKDG_ErrorCnt = 0;
|
|
|
+ prkg[0].RKDG_Error=0;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ prkg[i003].RKDG_ErrorCnt = 0;
|
|
|
+ prkg[i003].RKDG_Error=0;
|
|
|
+ }
|
|
|
|
|
|
+ if(USART1_RX_BUF002[head]==1)
|
|
|
+ {
|
|
|
+ AGL_AddNewData(RKG_angle,0);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ AGL_AddNewData(RKG_angle,i003);
|
|
|
+ }
|
|
|
+
|
|
|
+#if 0
|
|
|
//邵磊明修改 20211027 从rkg.c剪切到此处
|
|
|
- if(psATsk3[USART1_RX_BUF002[head]-0x30].uiDG < 0 ||psATsk3[USART1_RX_BUF002[head]-0x30].uiDG >= 27000)//角度
|
|
|
+ if(psATsk3[i003].uiDG < 0 ||psATsk3[USART1_RX_BUF002[head]-0x30].uiDG >= 27000)//角度
|
|
|
{
|
|
|
prkg[USART1_RX_BUF002[head]-0x30].RKDG_ErrorCnt++;
|
|
|
}
|
|
|
+#endif
|
|
|
|
|
|
// if( - psATsk3[USART1_RX_BUF002[head]-0x30].uiDG > prkg->RKG_Threshold || psATsk3[USART1_RX_BUF002[head]-0x30].uiDG > prkg->RKG_Threshold)
|
|
|
// prkg[USART1_RX_BUF002[head]-0x30].RKDG_StateCnt++;
|
|
@@ -2495,7 +2493,9 @@ void StartTask03(void *argument) //
|
|
|
|
|
|
|
|
|
if(pcang->RKG_Type == 0)
|
|
|
+ {
|
|
|
AGL_CalcDeltaAll(USART1_RX_BUF002[head],0);
|
|
|
+ }
|
|
|
#if 0 //倾角大盖计算
|
|
|
if(rkdg_cnt < RKG_BUF_DEP)
|
|
|
{
|
|
@@ -2515,24 +2515,28 @@ void StartTask03(void *argument) //
|
|
|
}
|
|
|
#endif
|
|
|
//李伟修改 20211027 从rkg.c剪切到此处;开始
|
|
|
- if (psATsk3[USART1_RX_BUF002[head] - 0x30].uiDG >= 0 || psATsk3[USART1_RX_BUF002[head] - 0x30].uiDG <= 27000) //角度
|
|
|
+ if (USART1_RX_BUF002[head] != 1)
|
|
|
{
|
|
|
- if (-psATsk3[USART1_RX_BUF002[head] - 0x30].uiDG > prkg->RKG_Threshold || psATsk3[USART1_RX_BUF002[head] - 0x30].uiDG > prkg->RKG_Threshold)
|
|
|
- prkg[USART1_RX_BUF002[head] - 0x30].RKDG_StateCnt++;
|
|
|
- else
|
|
|
- prkg[USART1_RX_BUF002[head] - 0x30].RKDG_StateCnt = 0;
|
|
|
-
|
|
|
- if (prkg[USART1_RX_BUF002[head] - 0x30].RKDG_StateCnt >= prkg[USART1_RX_BUF002[head] - 0x30].RKG_StateKeepNum)
|
|
|
+ if (psATsk3[i003].uiDG >= 0 || psATsk3[i003].uiDG <= 27000) //角度
|
|
|
{
|
|
|
- // RisingEdge++;
|
|
|
- prkg[USART1_RX_BUF002[head] - 0x30].RKDG_StateCnt = prkg[USART1_RX_BUF002[head] - 0x30].RKG_StateKeepNum;
|
|
|
- prkg[USART1_RX_BUF002[head] - 0x30].RKDG_State = 1;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- prkg[USART1_RX_BUF002[head] - 0x30].RKDG_State = 0;
|
|
|
+ if (-psATsk3[i003].uiDG > prkg->RKG_Threshold || psATsk3[i003].uiDG > prkg->RKG_Threshold)
|
|
|
+ prkg[i003].RKDG_StateCnt++;
|
|
|
+ else
|
|
|
+ prkg[i003].RKDG_StateCnt = 0;
|
|
|
+
|
|
|
+ if (prkg[i003].RKDG_StateCnt >= prkg[i003].RKG_StateKeepNum)
|
|
|
+ {
|
|
|
+ // RisingEdge++;
|
|
|
+ prkg[i003].RKDG_StateCnt = prkg[i003].RKG_StateKeepNum;
|
|
|
+ prkg[i003].RKDG_State = 1;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ prkg[i003].RKDG_State = 0;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
//李伟修改 20211027 从rkg.c剪切到此处;开始
|
|
|
i001 = 3;
|
|
|
continue;
|
|
@@ -2751,19 +2755,13 @@ void StartTask03(void *argument) //
|
|
|
{
|
|
|
if(pcang->RKG_Type == 0)
|
|
|
{
|
|
|
- if(CMD_RKG[0] == 0x30)
|
|
|
+ if(CMD_RKG[0] == 0x1)
|
|
|
{
|
|
|
- if(i003==1)
|
|
|
- i = rkgaddr_max;
|
|
|
- else if(i003)
|
|
|
- i = i003-1;
|
|
|
- else
|
|
|
- i = 1;
|
|
|
-
|
|
|
+ i = 0;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- i = 0;
|
|
|
+ i = i003;
|
|
|
}
|
|
|
}
|
|
|
else
|