#include "config.h" #include "rkg.h" #include "cang.h" #include "kzq.h" #include "level.h" #include "tem.h" #include "angle.h" #include "xyf.h" #include "kzq.h" #include "hdf.h" #include "cmsis_armcc.h" #include "usart.h" #include "yqhs.h" #include "bgy.h" uint8_t RKG_TxBuf[70] = {0}; uint8_t XYF_TxBuf[70] = {0}; uint8_t ALL_TxBuf[70] = {0}; #define State_Error 3 #define State_Off 0 #define State_On 1 #define PowerOnTime_Delay 0x00002000 KZQ_Inf kzq_inf; extern uint16_t Uart_len_TouChuan; #include "stm32f1xx_hal.h" extern uint32_t HAL_GetTick(void); uint32_t tickMain=0; uint16_t Read_CangState(uint8_t* pTx) { Biguayou_Inf* pBGY = biguayou_inf; Cang_Inf* pcang = &cang_inf; KZQ_Inf* pkzq = &kzq_inf; RKG_Inf* prkg = rkg_inf; XYF_Inf* pxyf = xyf_inf; HDF_Inf* phdf = hdf_inf; Yqhuishou_Inf* pYqhuishou = &yqhuishou_inf; uint8_t HDF_Start = 0,XYF_Start = 0,RKG_Start = 0,BGY_Start = 0,Cang_Num = 0,i = 0; Cang_Num = pkzq->data_buf[17]; //slm if(Cang_Num < 1 ||Cang_Num > 8) return 0; for(i = 0;i < Cang_Num - 1;i++) { HDF_Start += pcang->HDF_Num[i]; XYF_Start += pcang->XYF_Num[i]; RKG_Start += pcang->RKG_Num[i]; BGY_Start += pcang->BGY_Num[i]; } pTx[11] = 40; pTx[17] = pkzq->data_buf[17]; //阀门状态 /*************第一组阀门状态***************/ if(phdf[HDF_Start+1].HDF_Error) pTx[18] = State_Error; else pTx[18] = Get_DFState(HDF_Start+1); //获取罐仓1号底阀状态 if(pxyf[XYF_Start+1].XYF_Error) pTx[19] = State_Error; else pTx[19] = pxyf[XYF_Start+1].XYF_State1; //获取罐仓1号卸油阀状态 pxyf[XYF_Start+1].XYF_Data1[0] ; tickMain=HAL_GetTick(); if(prkg[RKG_Start+1].RKDG_Error) { pTx[20] = State_Error; pTx[21] = State_Error; } else { pTx[20] = prkg[RKG_Start+1].RKDG_State; //获取罐仓1号人孔大盖状态 pTx[21] = prkg[RKG_Start+1].RKXG_State; //获取罐仓1号人孔小盖状态 } if(pxyf[XYF_Start+1].XYF_Error) pTx[22] = State_Error; else pTx[22] = pxyf[XYF_Start+1].XYF_State2; //获取罐仓1号卸尽状态 //新增壁挂油传感器状态 邵磊明20210916 if(pBGY[BGY_Start+1].BGY_Error) { pTx[23] = State_Error; } else { pTx[23] = pBGY[BGY_Start+1].BGY_State; } //新增油气回收传感器状态 邵磊明20210918 pTx[24] = pYqhuishou[1].Yqhuishou_SSWD[0]; //新增智能海底阀传感器状态 邵磊明20210919 if(phdf[HDF_Start+1].HDF_Error) pTx[25] = (phdf[HDF_Start+1].HDF_Data[1]); else pTx[25] = (phdf[HDF_Start+1].HDF_Data[1]); //获取罐仓1号底阀状态 pTx[26] = 0xA5; pTx[27] = 0xA5; /*************第二组阀门状态***************/ if(pcang->HDF_Num[Cang_Num - 1] > 1) { if(phdf[HDF_Start+2].HDF_Error) pTx[28] = State_Error; else pTx[28] = Get_DFState(HDF_Start+2); //获取罐仓2号底阀状态 } else pTx[28] = 0xA5; if(pcang->XYF_Num[Cang_Num - 1] > 1) { if( pxyf[XYF_Start+2].XYF_Error) { pTx[29] = State_Error; pTx[32] = State_Error; } else { pTx[29] = pxyf[XYF_Start+2].XYF_State1; //获取罐仓2号卸油阀状态 pTx[32] = pxyf[XYF_Start+2].XYF_State2; //获取罐仓2号卸尽状态 } } else { pTx[29] = 0xA5; pTx[32] = 0xA5; } if(pcang->RKG_Num[Cang_Num - 1] > 1) { if(prkg[RKG_Start+2].RKDG_Error) { pTx[30] = State_Error; pTx[31] = State_Error; } else { pTx[30] = prkg[RKG_Start+2].RKDG_State; //获取罐仓2号人孔大盖状态 pTx[31] = prkg[RKG_Start+2].RKXG_State; //获取罐仓2号人孔小盖状态 } } else { pTx[30] = 0xA5; pTx[31] = 0xA5; } pTx[33] = 0xA5; pTx[34] = 0xA5; pTx[35] = 0xA5; pTx[36] = 0xA5; pTx[37] = 0xA5; /***********第三组阀门状态***************/ if(pcang->HDF_Num[Cang_Num - 1] > 2) { if(phdf[HDF_Start+3].HDF_Error) pTx[38] = State_Error; else pTx[38] = Get_DFState(HDF_Start+3); //获取罐仓3号底阀状态 } else pTx[38] = 0xA5; if(pcang->XYF_Num[Cang_Num - 1] > 2) { if(pxyf[XYF_Start+3].XYF_Error) { pTx[39] = State_Error; pTx[42] = State_Error; } else { pTx[39] = pxyf[XYF_Start+3].XYF_State1; //获取罐仓3号卸油阀状态 pTx[42] = pxyf[XYF_Start+3].XYF_State2; //获取罐仓3号卸尽状态 } } else { pTx[39] = 0xA5; pTx[42] = 0xA5; } if(pcang->RKG_Num[Cang_Num - 1] > 2) { if(prkg[RKG_Start+3].RKDG_Error) { pTx[40] = State_Error; pTx[41] = State_Error; } else { pTx[40] = prkg[RKG_Start+3].RKDG_State; //获取罐仓3号人孔大盖状态 pTx[41] = prkg[RKG_Start+3].RKXG_State; //获取罐仓3号人孔小盖状态 } } else { pTx[40] = 0xA5; pTx[41] = 0xA5; } pTx[43] = 0xA5; pTx[44] = 0xA5; pTx[45] = 0xA5; pTx[46] = 0xA5; pTx[47] = 0xA5; /***********第四组阀门状态***************/ if(pcang->HDF_Num[Cang_Num - 1] > 3) { if(phdf[HDF_Start+4].HDF_Error) pTx[48] = State_Error; else pTx[48] = Get_DFState(HDF_Start+4); //获取罐仓4号底阀状态 } else pTx[48] = 0xA5; if(pcang->XYF_Num[Cang_Num - 1] > 3) { if(pxyf[XYF_Start+4].XYF_Error) { pTx[49] = State_Error; pTx[52] = State_Error; } pTx[49] = pxyf[XYF_Start+4].XYF_State1; //获取罐仓4号卸油阀状态 pTx[52] = pxyf[XYF_Start+4].XYF_State2; //获取罐仓4号卸尽状态 } else { pTx[49] = 0xA5; pTx[52] = 0xA5; } if(pcang->RKG_Num[Cang_Num - 1] > 4) { if(prkg[RKG_Start+4].RKDG_Error) { pTx[50] = State_Error; pTx[51] = State_Error; } else { pTx[50] = prkg[RKG_Start+4].RKDG_State; //获取罐仓4号人孔大盖状态 pTx[51] = prkg[RKG_Start+4].RKXG_State; //获取罐仓4号人孔小盖状态 } } else { pTx[50] = 0xA5; pTx[51] = 0xA5; } pTx[53] = 0xA5; pTx[54] = 0xA5; pTx[55] = 0xA5; pTx[56] = 0xA5; pTx[57] = 0xA5; //李伟添加 20211027 上电的10s之内 强制输出状态是受控的 全部是关闭状态 if(tickMainRKG_Num[k]) //查询1-8仓所有人孔盖数据 { if(prkg[j+1+RKG_Num].RKDG_Error) F_STATE[5+i] |= BIT5; else if(prkg[j+1+RKG_Num].RKDG_State) F_STATE[5+i] |= BIT1; if(pcang->RKG_XG)//小盖状态或运算 { if(prkg[j+1+RKG_Num].RKXG_Error) F_STATE[5+i] |= BIT6; else if(prkg[j+1+RKG_Num].RKXG_State) F_STATE[5+i] |= BIT2; } j++; //RKG_Num++; } RKG_Num+=j; j = 0; while(j < pcang->XYF_Num[k])////卸油阀状态或运算 { if(pxyf[j+1+XYF_Num].XYF_Error) { F_STATE[5+i] |= BIT8; F_STATE[6+i] |= 0x55; } else { if(pxyf[j+1+XYF_Num].XYF_State1) F_STATE[5+i] |= BIT4; if(pxyf[j+1+XYF_Num].XYF_State2) F_STATE[6+i] = BIT1;//1; } j++; // XYF_Num++; } XYF_Num+=j; j = 0; while(j < pcang->HDF_Num[k]) { if(Get_DFState(j+1+HDF_Num) == 1) F_STATE[5+i] |= BIT3; else if(Get_DFState(j+1+HDF_Num) == 0) { ;//F_STATE[5+i] &= ~BIT3; } else F_STATE[5+i] &= BIT7; j++; } HDF_Num+=j; j = 0; }////for(k = 0;k < 8;k++) //查询1-8仓 状态 结束 //李伟添加 20211027 上电的10s之内 强制输出状态是受控的 全部是关闭状态 if(tickMainAngle_DataX[0]*Angle_cs; pTx[16] = hex_to_float.arr[0]; //读取高位温度传感器数据 pTx[17] = hex_to_float.arr[1]; pTx[18] = hex_to_float.arr[2]; pTx[19] = hex_to_float.arr[3]; hex_to_float.float_temp = (float)pangle->Angle_DataY[0]*Angle_cs; pTx[20] = hex_to_float.arr[0]; //读取高位温度传感器数据 pTx[21] = hex_to_float.arr[1]; pTx[22] = hex_to_float.arr[2]; pTx[23] = hex_to_float.arr[3]; hex_to_float.float_temp = (float)pangle->Angle_DataZ[0]*Angle_cs; pTx[24] = hex_to_float.arr[0]; //读取高位温度传感器数据 pTx[25] = hex_to_float.arr[1]; pTx[26] = hex_to_float.arr[2]; pTx[27] = hex_to_float.arr[3]; for(i = 0;i < 228;i++) //铅封 { pTx[28+i] = 0xa5; } return 1; } /* 8仓数据读 功能增加: 邵磊明 */ uint16_t Read_CangSensorData_8(uint8_t* pTx) { //传感器数据顺序为温度4字节*3,角度4字节*3,液位4字节*1,容积四字节*1 // Angle_Inf* pangle = &angle_inf; // TEM_Inf* ptem = tem_inf; // KZQ_Inf* pkzq = &kzq_inf; Level_Inf* plevel = level_inf; HDF_Inf* phdf = hdf_inf; Biguayou_Inf* pBGY = biguayou_inf; typedef union{ float float_temp; //青鸟贵和磁致伸缩液位温度一体传感器 uint8_t arr[4]; }Hex_to_float; Hex_to_float hex_to_float; uint8_t Cang_Num = 8,i = 0; for(i = 0;i < 4;i++) //铅封 { pTx[16+i] = 0; } pTx[20] = phdf[Cang_Num].HDF_OFData[1]; //浮球 pTx[21] = 0; pTx[22] = 0; pTx[23] = 0; pTx[24] = phdf[Cang_Num].HDF_OFState; //活塞杆 pTx[25] = 0; pTx[26] = 0; pTx[27] = 0; pTx[28] = pBGY[Cang_Num].BGY_SSWD[0]; //壁挂油光电 pTx[29] = 0; pTx[30] = 0; pTx[31] = 0; pTx[32] = pBGY[Cang_Num].BGY_SVAL[0]; //壁挂油霍尔 pTx[33] = 0; pTx[34] = 0; pTx[35] = 0; pTx[36] = pBGY[Cang_Num].BGY_SSWD[0]; //油气回收光电 pTx[37] = 0; pTx[38] = 0; pTx[39] = 0; pTx[40] = pBGY[Cang_Num].BGY_SVAL[0]; //油气回收霍尔 pTx[41] = 0; pTx[42] = 0; pTx[43] = 0; pTx[36+8] = pBGY[Cang_Num].BGY_SSWD[0]; //底 pTx[37+8] = 0; pTx[38+8] = 0; pTx[39+8] = 0; pTx[40+8] = pBGY[Cang_Num].BGY_SVAL[0]; //卸 pTx[41+8] = 0; pTx[42+8] = 0; pTx[43+8] = 0; pTx[44+8] = pBGY[Cang_Num].BGY_SSWD[0]; //大倾角 pTx[45+8] = 0; pTx[46+8] = 0; pTx[47+8] = 0; pTx[48+8] = pBGY[Cang_Num].BGY_SVAL[0]; //小倾角 pTx[49+8] = 0; pTx[50+8] = 0; pTx[51+8] = 0; pTx[52+8] = pBGY[Cang_Num].BGY_SVAL[0]; //尽 pTx[53+8] = 0; pTx[54+8] = 0; pTx[55+8] = 0; pTx[56+8] = pBGY[Cang_Num].BGY_SVAL[0]; //大磁电 pTx[57+8] = 0; pTx[58+8] = 0; pTx[59+8] = 0; pTx[60+8] = pBGY[Cang_Num].BGY_SVAL[0]; //小磁电 pTx[61+8] = 0; pTx[62+8] = 0; pTx[63+8] = 0; for(i = 0;i < 32;i++) //保留32Byte { pTx[72+i] = 0; } /*********************液位传感器数据**********************************/ if(plevel[Cang_Num].Level_Error) { pTx[95+9] = 0; pTx[96+9] = 0; pTx[97+9] = 0; pTx[98+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Level_Data; pTx[95+9] = hex_to_float.arr[0]; //读取高位温度传感器数据 pTx[96+9] = hex_to_float.arr[1]; pTx[97+9] = hex_to_float.arr[2]; pTx[98+9] = hex_to_float.arr[3]; } /**********************平均温度传感器数据**********************************/ if(plevel[Cang_Num].Level_Error) { pTx[99+9] = 0; pTx[100+9] = 0; pTx[101+9] = 0; pTx[102+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Avr_temp; pTx[99+9] = hex_to_float.arr[0]; //读取高位温度传感器数据 pTx[100+9] = hex_to_float.arr[1]; pTx[101+9] = hex_to_float.arr[2]; pTx[102+9] = hex_to_float.arr[3]; } /**********************高温度传感器数据**********************************/ if(plevel[Cang_Num].Level_Error) { pTx[103+9] = 0; pTx[104+9] = 0; pTx[105+9] = 0; pTx[106+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Adot_temp; pTx[103+9] = hex_to_float.arr[0]; //读取高位温度传感器数据 pTx[104+9] = hex_to_float.arr[1]; pTx[105+9] = hex_to_float.arr[2]; pTx[106+9] = hex_to_float.arr[3]; } /*********************中温度传感器数据**********************************/ if(plevel[Cang_Num].Level_Error) { pTx[107+9] = 0; pTx[108+9] = 0; pTx[109+9] = 0; pTx[110+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Bdot_temp; pTx[107+9] = hex_to_float.arr[0]; //读取高位温度传感器数据 pTx[108+9] = hex_to_float.arr[1]; pTx[109+9] = hex_to_float.arr[2]; pTx[110+9] = hex_to_float.arr[3]; } /**********************低温度传感器数据**********************************/ if(plevel[Cang_Num].Level_Error) { pTx[111+9] = 0; pTx[112+9] = 0; pTx[113+9] = 0; pTx[114+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Cdot_temp; pTx[111+9] = hex_to_float.arr[0]; //读取高位温度传感器数据 pTx[112+9] = hex_to_float.arr[1]; pTx[113+9] = hex_to_float.arr[2]; pTx[114+9] = hex_to_float.arr[3]; } /**************************读取容积数据*********************************/ if(plevel[Cang_Num].Level_Error) { pTx[115+9] = 0x76; pTx[116+9] = 0x7F; pTx[117+9] = 0xFF; pTx[118+9] = 0x00; } else { hex_to_float.float_temp = plevel[Cang_Num].Volume_Data; pTx[115+9] = hex_to_float.arr[0]; pTx[116+9] = hex_to_float.arr[1]; pTx[117+9] = hex_to_float.arr[2]; pTx[118+9] = hex_to_float.arr[3]; } /**************************压力*********************************/ if(plevel[Cang_Num].Level_Error) { pTx[119+9] = 0; pTx[120+9] = 0; pTx[121+9] = 0; pTx[122+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Volume_Data; pTx[119+9] = 0; pTx[120+9] = 0; pTx[121+9] = 0; pTx[122+9] = 0; } /**************************含水量*********************************/ if(plevel[Cang_Num].Level_Error) { pTx[123+9] = 0; pTx[124+9] = 0; pTx[125+9] = 0; pTx[126+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Volume_Data; pTx[123+9] = 0; pTx[124+9] = 0; pTx[125+9] = 0; pTx[126+9] = 0; } /**************************水活性*********************************/ if(plevel[Cang_Num].Level_Error) { pTx[127+9] = 0; pTx[128+9] = 0; pTx[129+9] = 0; pTx[130+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Volume_Data; pTx[127+9] = 0; pTx[128+9] = 0; pTx[129+9] = 0; pTx[130+9] = 0; } /**************************新增*********************************/ if(plevel[Cang_Num].Level_Error) { pTx[131+9] = 0; pTx[132+9] = 0; pTx[133+9] = 0; pTx[134+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Volume_Data; pTx[131+9] = 0; pTx[132+9] = 0; pTx[133+9] = 0; pTx[134+9] = 0; } /**************************新增********************************/ if(plevel[Cang_Num].Level_Error) { pTx[135+9] = 0; pTx[136+9] = 0; pTx[137+9] = 0; pTx[138+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Volume_Data; pTx[135+9] = 0; pTx[136+9] = 0; pTx[137+9] = 0; pTx[138+9] = 0; } return 1; } /* 7仓数据读 功能增加: 邵磊明 */ uint16_t Read_CangSensorData_7(uint8_t* pTx) { //传感器数据顺序为温度4字节*3,角度4字节*3,液位4字节*1,容积四字节*1 // Angle_Inf* pangle = &angle_inf; // TEM_Inf* ptem = tem_inf; // KZQ_Inf* pkzq = &kzq_inf; Level_Inf* plevel = level_inf; HDF_Inf* phdf = hdf_inf; Biguayou_Inf* pBGY = biguayou_inf; typedef union{ float float_temp; //青鸟贵和磁致伸缩液位温度一体传感器 uint8_t arr[4]; }Hex_to_float; Hex_to_float hex_to_float; uint8_t Cang_Num = 7,i = 0; for(i = 0;i < 4;i++) //铅封 { pTx[16+i] = 0; } pTx[20] = phdf[Cang_Num].HDF_OFData[1]; //浮球 pTx[21] = 0; pTx[22] = 0; pTx[23] = 0; pTx[24] = phdf[Cang_Num].HDF_OFState; //活塞杆 pTx[25] = 0; pTx[26] = 0; pTx[27] = 0; pTx[28] = pBGY[Cang_Num].BGY_SSWD[0]; //壁挂油光电 pTx[29] = 0; pTx[30] = 0; pTx[31] = 0; pTx[32] = pBGY[Cang_Num].BGY_SVAL[0]; //壁挂油霍尔 pTx[33] = 0; pTx[34] = 0; pTx[35] = 0; pTx[36] = pBGY[Cang_Num].BGY_SSWD[0]; //油气回收光电 pTx[37] = 0; pTx[38] = 0; pTx[39] = 0; pTx[40] = pBGY[Cang_Num].BGY_SVAL[0]; //油气回收霍尔 pTx[41] = 0; pTx[42] = 0; pTx[43] = 0; pTx[36+8] = pBGY[Cang_Num].BGY_SSWD[0]; //底 pTx[37+8] = 0; pTx[38+8] = 0; pTx[39+8] = 0; pTx[40+8] = pBGY[Cang_Num].BGY_SVAL[0]; //卸 pTx[41+8] = 0; pTx[42+8] = 0; pTx[43+8] = 0; pTx[44+8] = pBGY[Cang_Num].BGY_SSWD[0]; //大倾角 pTx[45+8] = 0; pTx[46+8] = 0; pTx[47+8] = 0; pTx[48+8] = pBGY[Cang_Num].BGY_SVAL[0]; //小倾角 pTx[49+8] = 0; pTx[50+8] = 0; pTx[51+8] = 0; pTx[52+8] = pBGY[Cang_Num].BGY_SVAL[0]; //尽 pTx[53+8] = 0; pTx[54+8] = 0; pTx[55+8] = 0; pTx[56+8] = pBGY[Cang_Num].BGY_SVAL[0]; //大磁电 pTx[57+8] = 0; pTx[58+8] = 0; pTx[59+8] = 0; pTx[60+8] = pBGY[Cang_Num].BGY_SVAL[0]; //小磁电 pTx[61+8] = 0; pTx[62+8] = 0; pTx[63+8] = 0; for(i = 0;i < 32;i++) //保留32Byte { pTx[72+i] = 0; } /*********************液位传感器数据**********************************/ if(plevel[Cang_Num].Level_Error) { pTx[95+9] = 0; pTx[96+9] = 0; pTx[97+9] = 0; pTx[98+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Level_Data; pTx[95+9] = hex_to_float.arr[0]; //读取高位温度传感器数据 pTx[96+9] = hex_to_float.arr[1]; pTx[97+9] = hex_to_float.arr[2]; pTx[98+9] = hex_to_float.arr[3]; } /**********************平均温度传感器数据**********************************/ if(plevel[Cang_Num].Level_Error) { pTx[99+9] = 0; pTx[100+9] = 0; pTx[101+9] = 0; pTx[102+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Avr_temp; pTx[99+9] = hex_to_float.arr[0]; //读取高位温度传感器数据 pTx[100+9] = hex_to_float.arr[1]; pTx[101+9] = hex_to_float.arr[2]; pTx[102+9] = hex_to_float.arr[3]; } /**********************高温度传感器数据**********************************/ if(plevel[Cang_Num].Level_Error) { pTx[103+9] = 0; pTx[104+9] = 0; pTx[105+9] = 0; pTx[106+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Adot_temp; pTx[103+9] = hex_to_float.arr[0]; //读取高位温度传感器数据 pTx[104+9] = hex_to_float.arr[1]; pTx[105+9] = hex_to_float.arr[2]; pTx[106+9] = hex_to_float.arr[3]; } /*********************中温度传感器数据**********************************/ if(plevel[Cang_Num].Level_Error) { pTx[107+9] = 0; pTx[108+9] = 0; pTx[109+9] = 0; pTx[110+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Bdot_temp; pTx[107+9] = hex_to_float.arr[0]; //读取高位温度传感器数据 pTx[108+9] = hex_to_float.arr[1]; pTx[109+9] = hex_to_float.arr[2]; pTx[110+9] = hex_to_float.arr[3]; } /**********************低温度传感器数据**********************************/ if(plevel[Cang_Num].Level_Error) { pTx[111+9] = 0; pTx[112+9] = 0; pTx[113+9] = 0; pTx[114+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Cdot_temp; pTx[111+9] = hex_to_float.arr[0]; //读取高位温度传感器数据 pTx[112+9] = hex_to_float.arr[1]; pTx[113+9] = hex_to_float.arr[2]; pTx[114+9] = hex_to_float.arr[3]; } /**************************读取容积数据*********************************/ if(plevel[Cang_Num].Level_Error) { pTx[115+9] = 0x76; pTx[116+9] = 0x7F; pTx[117+9] = 0xFF; pTx[118+9] = 0x00; } else { hex_to_float.float_temp = plevel[Cang_Num].Volume_Data; pTx[115+9] = hex_to_float.arr[0]; pTx[116+9] = hex_to_float.arr[1]; pTx[117+9] = hex_to_float.arr[2]; pTx[118+9] = hex_to_float.arr[3]; } /**************************压力*********************************/ if(plevel[Cang_Num].Level_Error) { pTx[119+9] = 0; pTx[120+9] = 0; pTx[121+9] = 0; pTx[122+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Volume_Data; pTx[119+9] = 0; pTx[120+9] = 0; pTx[121+9] = 0; pTx[122+9] = 0; } /**************************含水量*********************************/ if(plevel[Cang_Num].Level_Error) { pTx[123+9] = 0; pTx[124+9] = 0; pTx[125+9] = 0; pTx[126+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Volume_Data; pTx[123+9] = 0; pTx[124+9] = 0; pTx[125+9] = 0; pTx[126+9] = 0; } /**************************水活性*********************************/ if(plevel[Cang_Num].Level_Error) { pTx[127+9] = 0; pTx[128+9] = 0; pTx[129+9] = 0; pTx[130+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Volume_Data; pTx[127+9] = 0; pTx[128+9] = 0; pTx[129+9] = 0; pTx[130+9] = 0; } /**************************新增*********************************/ if(plevel[Cang_Num].Level_Error) { pTx[131+9] = 0; pTx[132+9] = 0; pTx[133+9] = 0; pTx[134+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Volume_Data; pTx[131+9] = 0; pTx[132+9] = 0; pTx[133+9] = 0; pTx[134+9] = 0; } /**************************新增********************************/ if(plevel[Cang_Num].Level_Error) { pTx[135+9] = 0; pTx[136+9] = 0; pTx[137+9] = 0; pTx[138+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Volume_Data; pTx[135+9] = 0; pTx[136+9] = 0; pTx[137+9] = 0; pTx[138+9] = 0; } return 1; } /* 6仓数据读 功能增加: 邵磊明 */ uint16_t Read_CangSensorData_6(uint8_t* pTx) { //传感器数据顺序为温度4字节*3,角度4字节*3,液位4字节*1,容积四字节*1 // Angle_Inf* pangle = &angle_inf; // TEM_Inf* ptem = tem_inf; // KZQ_Inf* pkzq = &kzq_inf; Level_Inf* plevel = level_inf; HDF_Inf* phdf = hdf_inf; Biguayou_Inf* pBGY = biguayou_inf; typedef union{ float float_temp; //青鸟贵和磁致伸缩液位温度一体传感器 uint8_t arr[4]; }Hex_to_float; Hex_to_float hex_to_float; uint8_t Cang_Num = 6,i = 0; for(i = 0;i < 4;i++) //铅封 { pTx[16+i] = 0; } pTx[20] = phdf[Cang_Num].HDF_OFData[1]; //浮球 pTx[21] = 0; pTx[22] = 0; pTx[23] = 0; pTx[24] = phdf[Cang_Num].HDF_OFState; //活塞杆 pTx[25] = 0; pTx[26] = 0; pTx[27] = 0; pTx[28] = pBGY[Cang_Num].BGY_SSWD[0]; //壁挂油光电 pTx[29] = 0; pTx[30] = 0; pTx[31] = 0; pTx[32] = pBGY[Cang_Num].BGY_SVAL[0]; //壁挂油霍尔 pTx[33] = 0; pTx[34] = 0; pTx[35] = 0; pTx[36] = pBGY[Cang_Num].BGY_SSWD[0]; //油气回收光电 pTx[37] = 0; pTx[38] = 0; pTx[39] = 0; pTx[40] = pBGY[Cang_Num].BGY_SVAL[0]; //油气回收霍尔 pTx[41] = 0; pTx[42] = 0; pTx[43] = 0; pTx[36+8] = pBGY[Cang_Num].BGY_SSWD[0]; //底 pTx[37+8] = 0; pTx[38+8] = 0; pTx[39+8] = 0; pTx[40+8] = pBGY[Cang_Num].BGY_SVAL[0]; //卸 pTx[41+8] = 0; pTx[42+8] = 0; pTx[43+8] = 0; pTx[44+8] = pBGY[Cang_Num].BGY_SSWD[0]; //大倾角 pTx[45+8] = 0; pTx[46+8] = 0; pTx[47+8] = 0; pTx[48+8] = pBGY[Cang_Num].BGY_SVAL[0]; //小倾角 pTx[49+8] = 0; pTx[50+8] = 0; pTx[51+8] = 0; pTx[52+8] = pBGY[Cang_Num].BGY_SVAL[0]; //尽 pTx[53+8] = 0; pTx[54+8] = 0; pTx[55+8] = 0; pTx[56+8] = pBGY[Cang_Num].BGY_SVAL[0]; //大磁电 pTx[57+8] = 0; pTx[58+8] = 0; pTx[59+8] = 0; pTx[60+8] = pBGY[Cang_Num].BGY_SVAL[0]; //小磁电 pTx[61+8] = 0; pTx[62+8] = 0; pTx[63+8] = 0; for(i = 0;i < 32;i++) //保留32Byte { pTx[72+i] = 0; } /*********************液位传感器数据**********************************/ if(plevel[Cang_Num].Level_Error) { pTx[95+9] = 0; pTx[96+9] = 0; pTx[97+9] = 0; pTx[98+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Level_Data; pTx[95+9] = hex_to_float.arr[0]; //读取高位温度传感器数据 pTx[96+9] = hex_to_float.arr[1]; pTx[97+9] = hex_to_float.arr[2]; pTx[98+9] = hex_to_float.arr[3]; } /**********************平均温度传感器数据**********************************/ if(plevel[Cang_Num].Level_Error) { pTx[99+9] = 0; pTx[100+9] = 0; pTx[101+9] = 0; pTx[102+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Avr_temp; pTx[99+9] = hex_to_float.arr[0]; //读取高位温度传感器数据 pTx[100+9] = hex_to_float.arr[1]; pTx[101+9] = hex_to_float.arr[2]; pTx[102+9] = hex_to_float.arr[3]; } /**********************高温度传感器数据**********************************/ if(plevel[Cang_Num].Level_Error) { pTx[103+9] = 0; pTx[104+9] = 0; pTx[105+9] = 0; pTx[106+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Adot_temp; pTx[103+9] = hex_to_float.arr[0]; //读取高位温度传感器数据 pTx[104+9] = hex_to_float.arr[1]; pTx[105+9] = hex_to_float.arr[2]; pTx[106+9] = hex_to_float.arr[3]; } /*********************中温度传感器数据**********************************/ if(plevel[Cang_Num].Level_Error) { pTx[107+9] = 0; pTx[108+9] = 0; pTx[109+9] = 0; pTx[110+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Bdot_temp; pTx[107+9] = hex_to_float.arr[0]; //读取高位温度传感器数据 pTx[108+9] = hex_to_float.arr[1]; pTx[109+9] = hex_to_float.arr[2]; pTx[110+9] = hex_to_float.arr[3]; } /**********************低温度传感器数据**********************************/ if(plevel[Cang_Num].Level_Error) { pTx[111+9] = 0; pTx[112+9] = 0; pTx[113+9] = 0; pTx[114+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Cdot_temp; pTx[111+9] = hex_to_float.arr[0]; //读取高位温度传感器数据 pTx[112+9] = hex_to_float.arr[1]; pTx[113+9] = hex_to_float.arr[2]; pTx[114+9] = hex_to_float.arr[3]; } /**************************读取容积数据*********************************/ if(plevel[Cang_Num].Level_Error) { pTx[115+9] = 0x76; pTx[116+9] = 0x7F; pTx[117+9] = 0xFF; pTx[118+9] = 0x00; } else { hex_to_float.float_temp = plevel[Cang_Num].Volume_Data; pTx[115+9] = hex_to_float.arr[0]; pTx[116+9] = hex_to_float.arr[1]; pTx[117+9] = hex_to_float.arr[2]; pTx[118+9] = hex_to_float.arr[3]; } /**************************压力*********************************/ if(plevel[Cang_Num].Level_Error) { pTx[119+9] = 0; pTx[120+9] = 0; pTx[121+9] = 0; pTx[122+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Volume_Data; pTx[119+9] = 0; pTx[120+9] = 0; pTx[121+9] = 0; pTx[122+9] = 0; } /**************************含水量*********************************/ if(plevel[Cang_Num].Level_Error) { pTx[123+9] = 0; pTx[124+9] = 0; pTx[125+9] = 0; pTx[126+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Volume_Data; pTx[123+9] = 0; pTx[124+9] = 0; pTx[125+9] = 0; pTx[126+9] = 0; } /**************************水活性*********************************/ if(plevel[Cang_Num].Level_Error) { pTx[127+9] = 0; pTx[128+9] = 0; pTx[129+9] = 0; pTx[130+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Volume_Data; pTx[127+9] = 0; pTx[128+9] = 0; pTx[129+9] = 0; pTx[130+9] = 0; } /**************************新增*********************************/ if(plevel[Cang_Num].Level_Error) { pTx[131+9] = 0; pTx[132+9] = 0; pTx[133+9] = 0; pTx[134+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Volume_Data; pTx[131+9] = 0; pTx[132+9] = 0; pTx[133+9] = 0; pTx[134+9] = 0; } /**************************新增********************************/ if(plevel[Cang_Num].Level_Error) { pTx[135+9] = 0; pTx[136+9] = 0; pTx[137+9] = 0; pTx[138+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Volume_Data; pTx[135+9] = 0; pTx[136+9] = 0; pTx[137+9] = 0; pTx[138+9] = 0; } return 1; } /* 5仓数据读 功能增加: 邵磊明 */ uint16_t Read_CangSensorData_5(uint8_t* pTx) { //传感器数据顺序为温度4字节*3,角度4字节*3,液位4字节*1,容积四字节*1 // Angle_Inf* pangle = &angle_inf; // TEM_Inf* ptem = tem_inf; // KZQ_Inf* pkzq = &kzq_inf; Level_Inf* plevel = level_inf; HDF_Inf* phdf = hdf_inf; Biguayou_Inf* pBGY = biguayou_inf; typedef union{ float float_temp; //青鸟贵和磁致伸缩液位温度一体传感器 uint8_t arr[4]; }Hex_to_float; Hex_to_float hex_to_float; uint8_t Cang_Num = 5,i = 0; for(i = 0;i < 4;i++) //铅封 { pTx[16+i] = 0; } pTx[20] = phdf[Cang_Num].HDF_OFData[1]; //浮球 pTx[21] = 0; pTx[22] = 0; pTx[23] = 0; pTx[24] = phdf[Cang_Num].HDF_OFState; //活塞杆 pTx[25] = 0; pTx[26] = 0; pTx[27] = 0; pTx[28] = pBGY[Cang_Num].BGY_SSWD[0]; //壁挂油光电 pTx[29] = 0; pTx[30] = 0; pTx[31] = 0; pTx[32] = pBGY[Cang_Num].BGY_SVAL[0]; //壁挂油霍尔 pTx[33] = 0; pTx[34] = 0; pTx[35] = 0; pTx[36] = pBGY[Cang_Num].BGY_SSWD[0]; //油气回收光电 pTx[37] = 0; pTx[38] = 0; pTx[39] = 0; pTx[40] = pBGY[Cang_Num].BGY_SVAL[0]; //油气回收霍尔 pTx[41] = 0; pTx[42] = 0; pTx[43] = 0; pTx[36+8] = pBGY[Cang_Num].BGY_SSWD[0]; //底 pTx[37+8] = 0; pTx[38+8] = 0; pTx[39+8] = 0; pTx[40+8] = pBGY[Cang_Num].BGY_SVAL[0]; //卸 pTx[41+8] = 0; pTx[42+8] = 0; pTx[43+8] = 0; pTx[44+8] = pBGY[Cang_Num].BGY_SSWD[0]; //大倾角 pTx[45+8] = 0; pTx[46+8] = 0; pTx[47+8] = 0; pTx[48+8] = pBGY[Cang_Num].BGY_SVAL[0]; //小倾角 pTx[49+8] = 0; pTx[50+8] = 0; pTx[51+8] = 0; pTx[52+8] = pBGY[Cang_Num].BGY_SVAL[0]; //尽 pTx[53+8] = 0; pTx[54+8] = 0; pTx[55+8] = 0; pTx[56+8] = pBGY[Cang_Num].BGY_SVAL[0]; //大磁电 pTx[57+8] = 0; pTx[58+8] = 0; pTx[59+8] = 0; pTx[60+8] = pBGY[Cang_Num].BGY_SVAL[0]; //小磁电 pTx[61+8] = 0; pTx[62+8] = 0; pTx[63+8] = 0; for(i = 0;i < 32;i++) //保留32Byte { pTx[72+i] = 0; } /*********************液位传感器数据**********************************/ if(plevel[Cang_Num].Level_Error) { pTx[95+9] = 0; pTx[96+9] = 0; pTx[97+9] = 0; pTx[98+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Level_Data; pTx[95+9] = hex_to_float.arr[0]; //读取高位温度传感器数据 pTx[96+9] = hex_to_float.arr[1]; pTx[97+9] = hex_to_float.arr[2]; pTx[98+9] = hex_to_float.arr[3]; } /**********************平均温度传感器数据**********************************/ if(plevel[Cang_Num].Level_Error) { pTx[99+9] = 0; pTx[100+9] = 0; pTx[101+9] = 0; pTx[102+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Avr_temp; pTx[99+9] = hex_to_float.arr[0]; //读取高位温度传感器数据 pTx[100+9] = hex_to_float.arr[1]; pTx[101+9] = hex_to_float.arr[2]; pTx[102+9] = hex_to_float.arr[3]; } /**********************高温度传感器数据**********************************/ if(plevel[Cang_Num].Level_Error) { pTx[103+9] = 0; pTx[104+9] = 0; pTx[105+9] = 0; pTx[106+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Adot_temp; pTx[103+9] = hex_to_float.arr[0]; //读取高位温度传感器数据 pTx[104+9] = hex_to_float.arr[1]; pTx[105+9] = hex_to_float.arr[2]; pTx[106+9] = hex_to_float.arr[3]; } /*********************中温度传感器数据**********************************/ if(plevel[Cang_Num].Level_Error) { pTx[107+9] = 0; pTx[108+9] = 0; pTx[109+9] = 0; pTx[110+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Bdot_temp; pTx[107+9] = hex_to_float.arr[0]; //读取高位温度传感器数据 pTx[108+9] = hex_to_float.arr[1]; pTx[109+9] = hex_to_float.arr[2]; pTx[110+9] = hex_to_float.arr[3]; } /**********************低温度传感器数据**********************************/ if(plevel[Cang_Num].Level_Error) { pTx[111+9] = 0; pTx[112+9] = 0; pTx[113+9] = 0; pTx[114+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Cdot_temp; pTx[111+9] = hex_to_float.arr[0]; //读取高位温度传感器数据 pTx[112+9] = hex_to_float.arr[1]; pTx[113+9] = hex_to_float.arr[2]; pTx[114+9] = hex_to_float.arr[3]; } /**************************读取容积数据*********************************/ if(plevel[Cang_Num].Level_Error) { pTx[115+9] = 0x76; pTx[116+9] = 0x7F; pTx[117+9] = 0xFF; pTx[118+9] = 0x00; } else { hex_to_float.float_temp = plevel[Cang_Num].Volume_Data; pTx[115+9] = hex_to_float.arr[0]; pTx[116+9] = hex_to_float.arr[1]; pTx[117+9] = hex_to_float.arr[2]; pTx[118+9] = hex_to_float.arr[3]; } /**************************压力*********************************/ if(plevel[Cang_Num].Level_Error) { pTx[119+9] = 0; pTx[120+9] = 0; pTx[121+9] = 0; pTx[122+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Volume_Data; pTx[119+9] = 0; pTx[120+9] = 0; pTx[121+9] = 0; pTx[122+9] = 0; } /**************************含水量*********************************/ if(plevel[Cang_Num].Level_Error) { pTx[123+9] = 0; pTx[124+9] = 0; pTx[125+9] = 0; pTx[126+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Volume_Data; pTx[123+9] = 0; pTx[124+9] = 0; pTx[125+9] = 0; pTx[126+9] = 0; } /**************************水活性*********************************/ if(plevel[Cang_Num].Level_Error) { pTx[127+9] = 0; pTx[128+9] = 0; pTx[129+9] = 0; pTx[130+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Volume_Data; pTx[127+9] = 0; pTx[128+9] = 0; pTx[129+9] = 0; pTx[130+9] = 0; } /**************************新增*********************************/ if(plevel[Cang_Num].Level_Error) { pTx[131+9] = 0; pTx[132+9] = 0; pTx[133+9] = 0; pTx[134+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Volume_Data; pTx[131+9] = 0; pTx[132+9] = 0; pTx[133+9] = 0; pTx[134+9] = 0; } /**************************新增********************************/ if(plevel[Cang_Num].Level_Error) { pTx[135+9] = 0; pTx[136+9] = 0; pTx[137+9] = 0; pTx[138+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Volume_Data; pTx[135+9] = 0; pTx[136+9] = 0; pTx[137+9] = 0; pTx[138+9] = 0; } return 1; } /* 4仓数据读 功能增加: 邵磊明 */ uint16_t Read_CangSensorData_4(uint8_t* pTx) { //传感器数据顺序为温度4字节*3,角度4字节*3,液位4字节*1,容积四字节*1 // Angle_Inf* pangle = &angle_inf; // TEM_Inf* ptem = tem_inf; // KZQ_Inf* pkzq = &kzq_inf; Level_Inf* plevel = level_inf; HDF_Inf* phdf = hdf_inf; Biguayou_Inf* pBGY = biguayou_inf; typedef union{ float float_temp; //青鸟贵和磁致伸缩液位温度一体传感器 uint8_t arr[4]; }Hex_to_float; Hex_to_float hex_to_float; uint8_t Cang_Num = 4,i = 0; for(i = 0;i < 4;i++) //铅封 { pTx[16+i] = 0; } pTx[20] = phdf[Cang_Num].HDF_OFData[1]; //浮球 pTx[21] = 0; pTx[22] = 0; pTx[23] = 0; pTx[24] = phdf[Cang_Num].HDF_OFState; //活塞杆 pTx[25] = 0; pTx[26] = 0; pTx[27] = 0; pTx[28] = pBGY[Cang_Num].BGY_SSWD[0]; //壁挂油光电 pTx[29] = 0; pTx[30] = 0; pTx[31] = 0; pTx[32] = pBGY[Cang_Num].BGY_SVAL[0]; //壁挂油霍尔 pTx[33] = 0; pTx[34] = 0; pTx[35] = 0; pTx[36] = pBGY[Cang_Num].BGY_SSWD[0]; //油气回收光电 pTx[37] = 0; pTx[38] = 0; pTx[39] = 0; pTx[40] = pBGY[Cang_Num].BGY_SVAL[0]; //油气回收霍尔 pTx[41] = 0; pTx[42] = 0; pTx[43] = 0; pTx[36+8] = pBGY[Cang_Num].BGY_SSWD[0]; //底 pTx[37+8] = 0; pTx[38+8] = 0; pTx[39+8] = 0; pTx[40+8] = pBGY[Cang_Num].BGY_SVAL[0]; //卸 pTx[41+8] = 0; pTx[42+8] = 0; pTx[43+8] = 0; pTx[44+8] = pBGY[Cang_Num].BGY_SSWD[0]; //大倾角 pTx[45+8] = 0; pTx[46+8] = 0; pTx[47+8] = 0; pTx[48+8] = pBGY[Cang_Num].BGY_SVAL[0]; //小倾角 pTx[49+8] = 0; pTx[50+8] = 0; pTx[51+8] = 0; pTx[52+8] = pBGY[Cang_Num].BGY_SVAL[0]; //尽 pTx[53+8] = 0; pTx[54+8] = 0; pTx[55+8] = 0; pTx[56+8] = pBGY[Cang_Num].BGY_SVAL[0]; //大磁电 pTx[57+8] = 0; pTx[58+8] = 0; pTx[59+8] = 0; pTx[60+8] = pBGY[Cang_Num].BGY_SVAL[0]; //小磁电 pTx[61+8] = 0; pTx[62+8] = 0; pTx[63+8] = 0; for(i = 0;i < 32;i++) //保留32Byte { pTx[72+i] = 0; } /*********************液位传感器数据**********************************/ if(plevel[Cang_Num].Level_Error) { pTx[95+9] = 0; pTx[96+9] = 0; pTx[97+9] = 0; pTx[98+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Level_Data; pTx[95+9] = hex_to_float.arr[0]; //读取高位温度传感器数据 pTx[96+9] = hex_to_float.arr[1]; pTx[97+9] = hex_to_float.arr[2]; pTx[98+9] = hex_to_float.arr[3]; } /**********************平均温度传感器数据**********************************/ if(plevel[Cang_Num].Level_Error) { pTx[99+9] = 0; pTx[100+9] = 0; pTx[101+9] = 0; pTx[102+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Avr_temp; pTx[99+9] = hex_to_float.arr[0]; //读取高位温度传感器数据 pTx[100+9] = hex_to_float.arr[1]; pTx[101+9] = hex_to_float.arr[2]; pTx[102+9] = hex_to_float.arr[3]; } /**********************高温度传感器数据**********************************/ if(plevel[Cang_Num].Level_Error) { pTx[103+9] = 0; pTx[104+9] = 0; pTx[105+9] = 0; pTx[106+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Adot_temp; pTx[103+9] = hex_to_float.arr[0]; //读取高位温度传感器数据 pTx[104+9] = hex_to_float.arr[1]; pTx[105+9] = hex_to_float.arr[2]; pTx[106+9] = hex_to_float.arr[3]; } /*********************中温度传感器数据**********************************/ if(plevel[Cang_Num].Level_Error) { pTx[107+9] = 0; pTx[108+9] = 0; pTx[109+9] = 0; pTx[110+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Bdot_temp; pTx[107+9] = hex_to_float.arr[0]; //读取高位温度传感器数据 pTx[108+9] = hex_to_float.arr[1]; pTx[109+9] = hex_to_float.arr[2]; pTx[110+9] = hex_to_float.arr[3]; } /**********************低温度传感器数据**********************************/ if(plevel[Cang_Num].Level_Error) { pTx[111+9] = 0; pTx[112+9] = 0; pTx[113+9] = 0; pTx[114+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Cdot_temp; pTx[111+9] = hex_to_float.arr[0]; //读取高位温度传感器数据 pTx[112+9] = hex_to_float.arr[1]; pTx[113+9] = hex_to_float.arr[2]; pTx[114+9] = hex_to_float.arr[3]; } /**************************读取容积数据*********************************/ if(plevel[Cang_Num].Level_Error) { pTx[115+9] = 0x76; pTx[116+9] = 0x7F; pTx[117+9] = 0xFF; pTx[118+9] = 0x00; } else { hex_to_float.float_temp = plevel[Cang_Num].Volume_Data; pTx[115+9] = hex_to_float.arr[0]; pTx[116+9] = hex_to_float.arr[1]; pTx[117+9] = hex_to_float.arr[2]; pTx[118+9] = hex_to_float.arr[3]; } /**************************压力*********************************/ if(plevel[Cang_Num].Level_Error) { pTx[119+9] = 0; pTx[120+9] = 0; pTx[121+9] = 0; pTx[122+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Volume_Data; pTx[119+9] = 0; pTx[120+9] = 0; pTx[121+9] = 0; pTx[122+9] = 0; } /**************************含水量*********************************/ if(plevel[Cang_Num].Level_Error) { pTx[123+9] = 0; pTx[124+9] = 0; pTx[125+9] = 0; pTx[126+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Volume_Data; pTx[123+9] = 0; pTx[124+9] = 0; pTx[125+9] = 0; pTx[126+9] = 0; } /**************************水活性*********************************/ if(plevel[Cang_Num].Level_Error) { pTx[127+9] = 0; pTx[128+9] = 0; pTx[129+9] = 0; pTx[130+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Volume_Data; pTx[127+9] = 0; pTx[128+9] = 0; pTx[129+9] = 0; pTx[130+9] = 0; } /**************************新增*********************************/ if(plevel[Cang_Num].Level_Error) { pTx[131+9] = 0; pTx[132+9] = 0; pTx[133+9] = 0; pTx[134+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Volume_Data; pTx[131+9] = 0; pTx[132+9] = 0; pTx[133+9] = 0; pTx[134+9] = 0; } /**************************新增********************************/ if(plevel[Cang_Num].Level_Error) { pTx[135+9] = 0; pTx[136+9] = 0; pTx[137+9] = 0; pTx[138+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Volume_Data; pTx[135+9] = 0; pTx[136+9] = 0; pTx[137+9] = 0; pTx[138+9] = 0; } return 1; } /* 3仓数据读 功能增加: 邵磊明 */ uint16_t Read_CangSensorData_3(uint8_t* pTx) { //传感器数据顺序为温度4字节*3,角度4字节*3,液位4字节*1,容积四字节*1 // Angle_Inf* pangle = &angle_inf; // TEM_Inf* ptem = tem_inf; // KZQ_Inf* pkzq = &kzq_inf; Level_Inf* plevel = level_inf; HDF_Inf* phdf = hdf_inf; Biguayou_Inf* pBGY = biguayou_inf; typedef union{ float float_temp; //青鸟贵和磁致伸缩液位温度一体传感器 uint8_t arr[4]; }Hex_to_float; Hex_to_float hex_to_float; uint8_t Cang_Num = 3,i = 0; for(i = 0;i < 4;i++) //铅封 { pTx[16+i] = 0; } pTx[20] = phdf[Cang_Num].HDF_OFData[1]; //浮球 pTx[21] = 0; pTx[22] = 0; pTx[23] = 0; pTx[24] = phdf[Cang_Num].HDF_OFState; //活塞杆 pTx[25] = 0; pTx[26] = 0; pTx[27] = 0; pTx[28] = pBGY[Cang_Num].BGY_SSWD[0]; //壁挂油光电 pTx[29] = 0; pTx[30] = 0; pTx[31] = 0; pTx[32] = pBGY[Cang_Num].BGY_SVAL[0]; //壁挂油霍尔 pTx[33] = 0; pTx[34] = 0; pTx[35] = 0; pTx[36] = pBGY[Cang_Num].BGY_SSWD[0]; //油气回收光电 pTx[37] = 0; pTx[38] = 0; pTx[39] = 0; pTx[40] = pBGY[Cang_Num].BGY_SVAL[0]; //油气回收霍尔 pTx[41] = 0; pTx[42] = 0; pTx[43] = 0; pTx[36+8] = pBGY[Cang_Num].BGY_SSWD[0]; //底 pTx[37+8] = 0; pTx[38+8] = 0; pTx[39+8] = 0; pTx[40+8] = pBGY[Cang_Num].BGY_SVAL[0]; //卸 pTx[41+8] = 0; pTx[42+8] = 0; pTx[43+8] = 0; pTx[44+8] = pBGY[Cang_Num].BGY_SSWD[0]; //大倾角 pTx[45+8] = 0; pTx[46+8] = 0; pTx[47+8] = 0; pTx[48+8] = pBGY[Cang_Num].BGY_SVAL[0]; //小倾角 pTx[49+8] = 0; pTx[50+8] = 0; pTx[51+8] = 0; pTx[52+8] = pBGY[Cang_Num].BGY_SVAL[0]; //尽 pTx[53+8] = 0; pTx[54+8] = 0; pTx[55+8] = 0; pTx[56+8] = pBGY[Cang_Num].BGY_SVAL[0]; //大磁电 pTx[57+8] = 0; pTx[58+8] = 0; pTx[59+8] = 0; pTx[60+8] = pBGY[Cang_Num].BGY_SVAL[0]; //小磁电 pTx[61+8] = 0; pTx[62+8] = 0; pTx[63+8] = 0; for(i = 0;i < 32;i++) //保留32Byte { pTx[72+i] = 0; } /*********************液位传感器数据**********************************/ if(plevel[Cang_Num].Level_Error) { pTx[95+9] = 0; pTx[96+9] = 0; pTx[97+9] = 0; pTx[98+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Level_Data; pTx[95+9] = hex_to_float.arr[0]; //读取高位温度传感器数据 pTx[96+9] = hex_to_float.arr[1]; pTx[97+9] = hex_to_float.arr[2]; pTx[98+9] = hex_to_float.arr[3]; } /**********************平均温度传感器数据**********************************/ if(plevel[Cang_Num].Level_Error) { pTx[99+9] = 0; pTx[100+9] = 0; pTx[101+9] = 0; pTx[102+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Avr_temp; pTx[99+9] = hex_to_float.arr[0]; //读取高位温度传感器数据 pTx[100+9] = hex_to_float.arr[1]; pTx[101+9] = hex_to_float.arr[2]; pTx[102+9] = hex_to_float.arr[3]; } /**********************高温度传感器数据**********************************/ if(plevel[Cang_Num].Level_Error) { pTx[103+9] = 0; pTx[104+9] = 0; pTx[105+9] = 0; pTx[106+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Adot_temp; pTx[103+9] = hex_to_float.arr[0]; //读取高位温度传感器数据 pTx[104+9] = hex_to_float.arr[1]; pTx[105+9] = hex_to_float.arr[2]; pTx[106+9] = hex_to_float.arr[3]; } /*********************中温度传感器数据**********************************/ if(plevel[Cang_Num].Level_Error) { pTx[107+9] = 0; pTx[108+9] = 0; pTx[109+9] = 0; pTx[110+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Bdot_temp; pTx[107+9] = hex_to_float.arr[0]; //读取高位温度传感器数据 pTx[108+9] = hex_to_float.arr[1]; pTx[109+9] = hex_to_float.arr[2]; pTx[110+9] = hex_to_float.arr[3]; } /**********************低温度传感器数据**********************************/ if(plevel[Cang_Num].Level_Error) { pTx[111+9] = 0; pTx[112+9] = 0; pTx[113+9] = 0; pTx[114+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Cdot_temp; pTx[111+9] = hex_to_float.arr[0]; //读取高位温度传感器数据 pTx[112+9] = hex_to_float.arr[1]; pTx[113+9] = hex_to_float.arr[2]; pTx[114+9] = hex_to_float.arr[3]; } /**************************读取容积数据*********************************/ if(plevel[Cang_Num].Level_Error) { pTx[115+9] = 0x76; pTx[116+9] = 0x7F; pTx[117+9] = 0xFF; pTx[118+9] = 0x00; } else { hex_to_float.float_temp = plevel[Cang_Num].Volume_Data; pTx[115+9] = hex_to_float.arr[0]; pTx[116+9] = hex_to_float.arr[1]; pTx[117+9] = hex_to_float.arr[2]; pTx[118+9] = hex_to_float.arr[3]; } /**************************压力*********************************/ if(plevel[Cang_Num].Level_Error) { pTx[119+9] = 0; pTx[120+9] = 0; pTx[121+9] = 0; pTx[122+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Volume_Data; pTx[119+9] = 0; pTx[120+9] = 0; pTx[121+9] = 0; pTx[122+9] = 0; } /**************************含水量*********************************/ if(plevel[Cang_Num].Level_Error) { pTx[123+9] = 0; pTx[124+9] = 0; pTx[125+9] = 0; pTx[126+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Volume_Data; pTx[123+9] = 0; pTx[124+9] = 0; pTx[125+9] = 0; pTx[126+9] = 0; } /**************************水活性*********************************/ if(plevel[Cang_Num].Level_Error) { pTx[127+9] = 0; pTx[128+9] = 0; pTx[129+9] = 0; pTx[130+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Volume_Data; pTx[127+9] = 0; pTx[128+9] = 0; pTx[129+9] = 0; pTx[130+9] = 0; } /**************************新增*********************************/ if(plevel[Cang_Num].Level_Error) { pTx[131+9] = 0; pTx[132+9] = 0; pTx[133+9] = 0; pTx[134+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Volume_Data; pTx[131+9] = 0; pTx[132+9] = 0; pTx[133+9] = 0; pTx[134+9] = 0; } /**************************新增********************************/ if(plevel[Cang_Num].Level_Error) { pTx[135+9] = 0; pTx[136+9] = 0; pTx[137+9] = 0; pTx[138+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Volume_Data; pTx[135+9] = 0; pTx[136+9] = 0; pTx[137+9] = 0; pTx[138+9] = 0; } return 1; } /* 2仓数据读 功能增加: 邵磊明 */ uint16_t Read_CangSensorData_2(uint8_t* pTx) { //传感器数据顺序为温度4字节*3,角度4字节*3,液位4字节*1,容积四字节*1 // Angle_Inf* pangle = &angle_inf; TEM_Inf* ptem = tem_inf; // KZQ_Inf* pkzq = &kzq_inf; Level_Inf* plevel = level_inf; HDF_Inf* phdf = hdf_inf; Biguayou_Inf* pBGY = biguayou_inf; Cang_Inf* pcang = &cang_inf; KZQ_Inf* pkzq = &kzq_inf; RKG_Inf* prkg = rkg_inf; XYF_Inf* pxyf = xyf_inf; Yqhuishou_Inf* pYqhuishou = &yqhuishou_inf; // static float test_val=100; typedef union{ float float_temp; //青鸟贵和磁致伸缩液位温度一体传感器 uint8_t arr[4]; }Hex_to_float; Hex_to_float hex_to_float; uint8_t Cang_Num = 2,i = 0,HDF_Start = 0,XYF_Start = 0,RKG_Start = 0,BGY_Start = 0; if(Cang_Num < 1 ||Cang_Num > 8) return 0; for(i = 0;i < Cang_Num - 1;i++) { HDF_Start += pcang->HDF_Num[i]; XYF_Start += pcang->XYF_Num[i]; RKG_Start += pcang->RKG_Num[i]; BGY_Start += pcang->BGY_Num[i]; } for(i = 0;i < 4;i++) //铅封 { pTx[16+i] = 0; } pTx[20] = phdf[Cang_Num].HDF_OFData[1]; //浮球 pTx[21] = 0; pTx[22] = 0; pTx[23] = 0; pTx[24] = phdf[Cang_Num].HDF_OFState; //活塞杆 pTx[25] = 0; pTx[26] = 0; pTx[27] = 0; pTx[28] = pBGY[Cang_Num].BGY_SSWD[0]; //壁挂油光电 pTx[29] = 0; pTx[30] = 0; pTx[31] = 0; pTx[32] = pBGY[Cang_Num].BGY_SVAL[0]; //壁挂油霍尔 pTx[33] = 0; pTx[34] = 0; pTx[35] = 0; pTx[36] = pBGY[Cang_Num].BGY_SSWD[0]; //油气回收光电 pTx[37] = 0; pTx[38] = 0; pTx[39] = 0; pTx[40] = pBGY[Cang_Num].BGY_SVAL[0]; //油气回收霍尔 pTx[41] = 0; pTx[42] = 0; pTx[43] = 0; if(phdf[HDF_Start+1].HDF_Error) pTx[36+8] = State_Error; else pTx[36+8] = Get_DFState(HDF_Start+1); //获取罐仓1号底阀状态 if(pxyf[XYF_Start+1].XYF_Error) pTx[40+8] = State_Error; else pTx[40+8] = pxyf[XYF_Start+1].XYF_State1; //获取罐仓1号卸油阀状态 pxyf[XYF_Start+1].XYF_Data1[0] ; if(prkg[RKG_Start+1].RKDG_Error) { pTx[44+8] = State_Error; pTx[48+8] = State_Error; } else { pTx[44+8] = prkg[RKG_Start+1].RKDG_State; //获取罐仓1号人孔大盖状态 pTx[48+8] = prkg[RKG_Start+1].RKXG_State; //获取罐仓1号人孔小盖状态 } if(pxyf[XYF_Start+1].XYF_Error) pTx[52+8] = State_Error; else pTx[52+8] = pxyf[XYF_Start+1].XYF_State2; //获取罐仓1号卸尽状态 // pTx[36+8] = pBGY[Cang_Num].BGY_SSWD[0]; //底 pTx[37+8] = 0; pTx[38+8] = 0; pTx[39+8] = 0; // pTx[40+8] = pBGY[Cang_Num].BGY_SVAL[0]; //卸 pTx[41+8] = 0; pTx[42+8] = 0; pTx[43+8] = 0; // pTx[44+8] = pBGY[Cang_Num].BGY_SSWD[0]; //大倾角 pTx[45+8] = 0; pTx[46+8] = 0; pTx[47+8] = 0; // pTx[48+8] = pBGY[Cang_Num].BGY_SVAL[0]; //小倾角 pTx[49+8] = 0; pTx[50+8] = 0; pTx[51+8] = 0; // pTx[52+8] = pBGY[Cang_Num].BGY_SVAL[0]; //尽 pTx[53+8] = 0; pTx[54+8] = 0; pTx[55+8] = 0; pTx[56+8] = pBGY[Cang_Num].BGY_SVAL[0]; //大磁电 pTx[57+8] = 0; pTx[58+8] = 0; pTx[59+8] = 0; pTx[60+8] = pBGY[Cang_Num].BGY_SVAL[0]; //小磁电 pTx[61+8] = 0; pTx[62+8] = 0; pTx[63+8] = 0; for(i = 0;i < 32;i++) //保留32Byte { pTx[72+i] = 0; } /*********************液位传感器数据**********************************/ if(plevel[Cang_Num].Level_Error) { pTx[95+9] = 0; pTx[96+9] = 0; pTx[97+9] = 0; pTx[98+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Level_Data1; pTx[95+9] = hex_to_float.arr[0]; //读取高位温度传感器数据 pTx[96+9] = hex_to_float.arr[1]; pTx[97+9] = hex_to_float.arr[2]; pTx[98+9] = hex_to_float.arr[3]; } /**********************平均温度传感器数据**********************************/ if(plevel[Cang_Num].Level_Error) { pTx[99+9] = 0; pTx[100+9] = 0; pTx[101+9] = 0; pTx[102+9] = 0; } else { hex_to_float.float_temp = ((float)ptem[Cang_Num].TEM_MData[1]*(0.1f)); pTx[99+9] = hex_to_float.arr[0]; //读取高位温度传感器数据 pTx[100+9] = hex_to_float.arr[1]; pTx[101+9] = hex_to_float.arr[2]; pTx[102+9] = hex_to_float.arr[3]; } /**********************高温度传感器数据**********************************/ if(plevel[Cang_Num].Level_Error) { pTx[103+9] = 0; pTx[104+9] = 0; pTx[105+9] = 0; pTx[106+9] = 0; } else { hex_to_float.float_temp = ((float)ptem[Cang_Num].TEM_HData[1]*(0.1f)); pTx[103+9] = hex_to_float.arr[0]; //读取高位温度传感器数据 pTx[104+9] = hex_to_float.arr[1]; pTx[105+9] = hex_to_float.arr[2]; pTx[106+9] = hex_to_float.arr[3]; } /*********************中温度传感器数据**********************************/ if(plevel[Cang_Num].Level_Error) { pTx[107+9] = 0; pTx[108+9] = 0; pTx[109+9] = 0; pTx[110+9] = 0; } else { hex_to_float.float_temp = ((float)ptem[Cang_Num].TEM_MData[1]*(0.1f)); pTx[107+9] = hex_to_float.arr[0]; //读取高位温度传感器数据 pTx[108+9] = hex_to_float.arr[1]; pTx[109+9] = hex_to_float.arr[2]; pTx[110+9] = hex_to_float.arr[3]; } /**********************低温度传感器数据**********************************/ if(plevel[Cang_Num].Level_Error) { pTx[111+9] = 0; pTx[112+9] = 0; pTx[113+9] = 0; pTx[114+9] = 0; } else { hex_to_float.float_temp = ((float)ptem[Cang_Num].TEM_LData[1]*(0.1f)); pTx[111+9] = hex_to_float.arr[0]; //读取高位温度传感器数据 pTx[112+9] = hex_to_float.arr[1]; pTx[113+9] = hex_to_float.arr[2]; pTx[114+9] = hex_to_float.arr[3]; } /**************************读取容积数据*********************************/ if(plevel[Cang_Num].Level_Error) { pTx[115+9] = 0x76; pTx[116+9] = 0x7F; pTx[117+9] = 0xFF; pTx[118+9] = 0x00; } else { hex_to_float.float_temp = plevel[(Cang_Num-0)].Volume_Data; pTx[115+9] = hex_to_float.arr[0]; pTx[116+9] = hex_to_float.arr[1]; pTx[117+9] = hex_to_float.arr[2]; pTx[118+9] = hex_to_float.arr[3]; } /**************************压力*********************************/ if(plevel[Cang_Num].Level_Error) { pTx[119+9] = 0; pTx[120+9] = 0; pTx[121+9] = 0; pTx[122+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Volume_Data; pTx[119+9] = 0; pTx[120+9] = 0; pTx[121+9] = 0; pTx[122+9] = 0; } /**************************含水量*********************************/ if(plevel[Cang_Num].Level_Error) { pTx[123+9] = 0; pTx[124+9] = 0; pTx[125+9] = 0; pTx[126+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Volume_Data; pTx[123+9] = 0; pTx[124+9] = 0; pTx[125+9] = 0; pTx[126+9] = 0; } /**************************水活性*********************************/ if(plevel[Cang_Num].Level_Error) { pTx[127+9] = 0; pTx[128+9] = 0; pTx[129+9] = 0; pTx[130+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Volume_Data; pTx[127+9] = 0; pTx[128+9] = 0; pTx[129+9] = 0; pTx[130+9] = 0; } /**************************新增*********************************/ if(plevel[Cang_Num].Level_Error) { pTx[131+9] = 0; pTx[132+9] = 0; pTx[133+9] = 0; pTx[134+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Volume_Data; pTx[131+9] = 0; pTx[132+9] = 0; pTx[133+9] = 0; pTx[134+9] = 0; } /**************************新增********************************/ if(plevel[Cang_Num].Level_Error) { pTx[135+9] = 0; pTx[136+9] = 0; pTx[137+9] = 0; pTx[138+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Volume_Data; pTx[135+9] = 0; pTx[136+9] = 0; pTx[137+9] = 0; pTx[138+9] = 0; } return 1; } /* 1仓数据读 功能增加: 邵磊明 */ uint16_t Read_CangSensorData_1(uint8_t* pTx)//邵磊明增加 { //传感器数据顺序为温度4字节*3,角度4字节*3,液位4字节*1,容积四字节*1 // Angle_Inf* pangle = &angle_inf; TEM_Inf* ptem = tem_inf; // KZQ_Inf* pkzq = &kzq_inf; Level_Inf* plevel = level_inf; HDF_Inf* phdf = hdf_inf; Biguayou_Inf* pBGY = biguayou_inf; Cang_Inf* pcang = &cang_inf; KZQ_Inf* pkzq = &kzq_inf; RKG_Inf* prkg = rkg_inf; XYF_Inf* pxyf = xyf_inf; Yqhuishou_Inf* pYqhuishou = &yqhuishou_inf; //static float test_val=100; extern uint8_t ptxCang01Temp[150]; typedef union{ float float_temp; //青鸟贵和磁致伸缩液位温度一体传感器 uint8_t arr[4]; }Hex_to_float; Hex_to_float hex_to_float; uint8_t Cang_Num = 1,i = 0,HDF_Start = 0,XYF_Start = 0,RKG_Start = 0,BGY_Start = 0; if(Cang_Num < 1 ||Cang_Num > 8) return 0; for(i = 0;i < Cang_Num - 1;i++) { HDF_Start += pcang->HDF_Num[i]; XYF_Start += pcang->XYF_Num[i]; RKG_Start += pcang->RKG_Num[i]; BGY_Start += pcang->BGY_Num[i]; } for(i = 0;i < 4;i++) //铅封 { pTx[16+i] = 0; } pTx[20] = phdf[Cang_Num].HDF_OFData[1]; //浮球 pTx[21] = 0; pTx[22] = 0; pTx[23] = 0; pTx[24] = phdf[Cang_Num].HDF_OFState; //活塞杆 pTx[25] = 0; pTx[26] = 0; pTx[27] = 0; pTx[28] = pBGY[Cang_Num].BGY_SSWD[0]; //壁挂油光电 pTx[29] = 0; pTx[30] = 0; pTx[31] = 0; pTx[32] = pBGY[Cang_Num].BGY_SVAL[0]; //壁挂油霍尔 pTx[33] = 0; pTx[34] = 0; pTx[35] = 0; pTx[36] = pBGY[Cang_Num].BGY_SSWD[0]; //油气回收光电 pTx[37] = 0; pTx[38] = 0; pTx[39] = 0; pTx[40] = pBGY[Cang_Num].BGY_SVAL[0]; //油气回收霍尔 pTx[41] = 0; pTx[42] = 0; pTx[43] = 0; if(phdf[HDF_Start+1].HDF_Error) pTx[36+8] = State_Error; else pTx[36+8] = Get_DFState(HDF_Start+1); //获取罐仓1号底阀状态 if(pxyf[XYF_Start+1].XYF_Error) pTx[40+8] = State_Error; else pTx[40+8] = pxyf[XYF_Start+1].XYF_State1; //获取罐仓1号卸油阀状态 pxyf[XYF_Start+1].XYF_Data1[0] ; if(prkg[RKG_Start+1].RKDG_Error) { pTx[44+8] = State_Error; pTx[48+8] = State_Error; } else { pTx[44+8] = prkg[RKG_Start+1].RKDG_State; //获取罐仓1号人孔大盖状态 pTx[48+8] = prkg[RKG_Start+1].RKXG_State; //获取罐仓1号人孔小盖状态 } if(pxyf[XYF_Start+1].XYF_Error) pTx[52+8] = State_Error; else pTx[52+8] = pxyf[XYF_Start+1].XYF_State2; //获取罐仓1号卸尽状态 // pTx[36+8] = pBGY[Cang_Num].BGY_SSWD[0]; //底 pTx[37+8] = 0; pTx[38+8] = 0; pTx[39+8] = 0; // pTx[40+8] = pBGY[Cang_Num].BGY_SVAL[0]; //卸 pTx[41+8] = 0; pTx[42+8] = 0; pTx[43+8] = 0; // pTx[44+8] = pBGY[Cang_Num].BGY_SSWD[0]; //大倾角 pTx[45+8] = 0; pTx[46+8] = 0; pTx[47+8] = 0; // pTx[48+8] = pBGY[Cang_Num].BGY_SVAL[0]; //小倾角 pTx[49+8] = 0; pTx[50+8] = 0; pTx[51+8] = 0; // pTx[52+8] = pBGY[Cang_Num].BGY_SVAL[0]; //尽 pTx[53+8] = 0; pTx[54+8] = 0; pTx[55+8] = 0; pTx[56+8] = pBGY[Cang_Num].BGY_SVAL[0]; //大磁电 pTx[57+8] = 0; pTx[58+8] = 0; pTx[59+8] = 0; pTx[60+8] = pBGY[Cang_Num].BGY_SVAL[0]; //小磁电 pTx[61+8] = 0; pTx[62+8] = 0; pTx[63+8] = 0; for(i = 0;i < 32;i++) //保留32Byte { pTx[72+i] = 0; } /*********************液位传感器数据**********************************/ if(plevel[Cang_Num].Level_Error) { pTx[95+9] = 0; pTx[96+9] = 0; pTx[97+9] = 0; pTx[98+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Level_Data1; pTx[95+9] = hex_to_float.arr[0]; //读取高位温度传感器数据 pTx[96+9] = hex_to_float.arr[1]; pTx[97+9] = hex_to_float.arr[2]; pTx[98+9] = hex_to_float.arr[3]; } /**********************平均温度传感器数据**********************************/ if(plevel[Cang_Num].Level_Error) { pTx[99+9] = 0; pTx[100+9] = 0; pTx[101+9] = 0; pTx[102+9] = 0; } else { hex_to_float.float_temp = ((float)ptem[Cang_Num].TEM_MData[1]*(0.1f)); pTx[99+9] = hex_to_float.arr[0]; //读取高位温度传感器数据 pTx[100+9] = hex_to_float.arr[1]; pTx[101+9] = hex_to_float.arr[2]; pTx[102+9] = hex_to_float.arr[3]; } /**********************高温度传感器数据**********************************/ if(plevel[Cang_Num].Level_Error) { pTx[103+9] = 0; pTx[104+9] = 0; pTx[105+9] = 0; pTx[106+9] = 0; } else { hex_to_float.float_temp = ((float)ptem[Cang_Num].TEM_HData[1]*(0.1f)); pTx[103+9] = hex_to_float.arr[0]; //读取高位温度传感器数据 pTx[104+9] = hex_to_float.arr[1]; pTx[105+9] = hex_to_float.arr[2]; pTx[106+9] = hex_to_float.arr[3]; } /*********************中温度传感器数据**********************************/ if(plevel[Cang_Num].Level_Error) { pTx[107+9] = 0; pTx[108+9] = 0; pTx[109+9] = 0; pTx[110+9] = 0; } else { hex_to_float.float_temp = ((float)ptem[Cang_Num].TEM_MData[1]*(0.1f)); pTx[107+9] = hex_to_float.arr[0]; //读取高位温度传感器数据 pTx[108+9] = hex_to_float.arr[1]; pTx[109+9] = hex_to_float.arr[2]; pTx[110+9] = hex_to_float.arr[3]; } /**********************低温度传感器数据**********************************/ if(plevel[Cang_Num].Level_Error) { pTx[111+9] = 0; pTx[112+9] = 0; pTx[113+9] = 0; pTx[114+9] = 0; } else { hex_to_float.float_temp = ((float)ptem[Cang_Num].TEM_LData[1]*(0.1f)); pTx[111+9] = hex_to_float.arr[0]; //读取高位温度传感器数据 pTx[112+9] = hex_to_float.arr[1]; pTx[113+9] = hex_to_float.arr[2]; pTx[114+9] = hex_to_float.arr[3]; } // test_val++; // for(i=0;i<4;i++) //for test // { // hex_to_float.float_temp = test_val;//plevel[Cang_Num].Level_Data;//(10.56+test_val); // pTx[108+i*4] = hex_to_float.arr[0]; // pTx[109+i*4] = hex_to_float.arr[1]; // pTx[110+i*4] = hex_to_float.arr[2]; // pTx[111+i*4] = hex_to_float.arr[3]; // } /**************************读取容积数据*********************************/ if(plevel[Cang_Num].Level_Error) { pTx[115+9] = 0x76; pTx[116+9] = 0x7F; pTx[117+9] = 0xFF; pTx[118+9] = 0x00; } else { hex_to_float.float_temp = plevel[(Cang_Num-0)].Volume_Data; pTx[115+9] = hex_to_float.arr[0]; pTx[116+9] = hex_to_float.arr[1]; pTx[117+9] = hex_to_float.arr[2]; pTx[118+9] = hex_to_float.arr[3]; } /**************************压力*********************************/ if(plevel[Cang_Num].Level_Error) { pTx[119+9] = 0; pTx[120+9] = 0; pTx[121+9] = 0; pTx[122+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Volume_Data; pTx[119+9] = 0; pTx[120+9] = 0; pTx[121+9] = 0; pTx[122+9] = 0; } /**************************含水量*********************************/ if(plevel[Cang_Num].Level_Error) { pTx[123+9] = 0; pTx[124+9] = 0; pTx[125+9] = 0; pTx[126+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Volume_Data; pTx[123+9] = 0; pTx[124+9] = 0; pTx[125+9] = 0; pTx[126+9] = 0; } /**************************水活性*********************************/ if(plevel[Cang_Num].Level_Error) { pTx[127+9] = 0; pTx[128+9] = 0; pTx[129+9] = 0; pTx[130+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Volume_Data; pTx[127+9] = 0; pTx[128+9] = 0; pTx[129+9] = 0; pTx[130+9] = 0; } /**************************新增*********************************/ if(plevel[Cang_Num].Level_Error) { pTx[131+9] = 0; pTx[132+9] = 0; pTx[133+9] = 0; pTx[134+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Volume_Data; pTx[131+9] = hex_to_float.arr[0]; pTx[132+9] = hex_to_float.arr[1]; pTx[133+9] = hex_to_float.arr[2]; pTx[134+9] = hex_to_float.arr[3]; } /**************************新增********************************/ if(plevel[Cang_Num].Level_Error) { pTx[135+9] = 0; pTx[136+9] = 0; pTx[137+9] = 0; pTx[138+9] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Volume_Data; pTx[135+9] = 0; pTx[136+9] = 0; pTx[137+9] = 0; pTx[138+9] = 0; } // memcpy(ptxCang01Temp,&pTx[0],150); return 1; } /* 1-4仓数据读 功能增加: 邵磊明 */ uint16_t Read_CangSensorData_1to4(uint8_t* pTx)//邵磊明增加 { //传感器数据顺序为温度4字节*3,角度4字节*3,液位4字节*1,容积四字节*1 // Angle_Inf* pangle = &angle_inf; // TEM_Inf* ptem = tem_inf; // KZQ_Inf* pkzq = &kzq_inf; Level_Inf* plevel = level_inf; typedef union{ float float_temp; //青鸟贵和磁致伸缩液位温度一体传感器 uint8_t arr[4]; }Hex_to_float; Hex_to_float hex_to_float; uint8_t Cang_Num = 1,i = 0; /**********************8byte beiyong**********************************/ for(i = 0;i <= 8;i++)//读取第几仓传感器数据 { pTx[16+i] = 0xa5; } for(i = 0;i <= 8;i++)//读取第几仓传感器数据 { pTx[24+i*4] = 0; pTx[25+i*4] = 0; pTx[26+i*4] = 0; pTx[27+i*4] = 0; } for(Cang_Num = 1;Cang_Num <= 4;Cang_Num++)//读取第几仓传感器数据 { /*********************液位传感器数据**********************************/ if(plevel[Cang_Num].Level_Error) { pTx[56+(Cang_Num-1)*44] = 0; pTx[57+(Cang_Num-1)*44] = 0; pTx[58+(Cang_Num-1)*44] = 0; pTx[59+(Cang_Num-1)*44] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Level_Data; pTx[56+(Cang_Num-1)*44] = hex_to_float.arr[0]; //读取高位温度传感器数据 pTx[57+(Cang_Num-1)*44] = hex_to_float.arr[1]; pTx[58+(Cang_Num-1)*44] = hex_to_float.arr[2]; pTx[59+(Cang_Num-1)*44] = hex_to_float.arr[3]; } /**********************平均温度传感器数据**********************************/ if(plevel[Cang_Num].Level_Error) { pTx[60+(Cang_Num-1)*44] = 0; pTx[61+(Cang_Num-1)*44] = 0; pTx[62+(Cang_Num-1)*44] = 0; pTx[63+(Cang_Num-1)*44] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Avr_temp; pTx[60+(Cang_Num-1)*44] = hex_to_float.arr[0]; //读取高位温度传感器数据 pTx[61+(Cang_Num-1)*44] = hex_to_float.arr[1]; pTx[62+(Cang_Num-1)*44] = hex_to_float.arr[2]; pTx[63+(Cang_Num-1)*44] = hex_to_float.arr[3]; } /**********************高温度传感器数据**********************************/ if(plevel[Cang_Num].Level_Error) { pTx[64+(Cang_Num-1)*44] = 0; pTx[65+(Cang_Num-1)*44] = 0; pTx[66+(Cang_Num-1)*44] = 0; pTx[67+(Cang_Num-1)*44] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Adot_temp; pTx[64+(Cang_Num-1)*44] = hex_to_float.arr[0]; //读取高位温度传感器数据 pTx[65+(Cang_Num-1)*44] = hex_to_float.arr[1]; pTx[66+(Cang_Num-1)*44] = hex_to_float.arr[2]; pTx[67+(Cang_Num-1)*44] = hex_to_float.arr[3]; } /*********************中温度传感器数据**********************************/ if(plevel[Cang_Num].Level_Error) { pTx[68+(Cang_Num-1)*44] = 0; pTx[69+(Cang_Num-1)*44] = 0; pTx[70+(Cang_Num-1)*44] = 0; pTx[71+(Cang_Num-1)*44] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Bdot_temp; pTx[68+(Cang_Num-1)*44] = hex_to_float.arr[0]; //读取高位温度传感器数据 pTx[69+(Cang_Num-1)*44] = hex_to_float.arr[1]; pTx[70+(Cang_Num-1)*44] = hex_to_float.arr[2]; pTx[71+(Cang_Num-1)*44] = hex_to_float.arr[3]; } /**********************低温度传感器数据**********************************/ if(plevel[Cang_Num].Level_Error) { pTx[72+(Cang_Num-1)*44] = 0; pTx[73+(Cang_Num-1)*44] = 0; pTx[74+(Cang_Num-1)*44] = 0; pTx[75+(Cang_Num-1)*44] = 0; } else { hex_to_float.float_temp = plevel[Cang_Num].Cdot_temp; pTx[72+(Cang_Num-1)*44] = hex_to_float.arr[0]; //读取高位温度传感器数据 pTx[73+(Cang_Num-1)*44] = hex_to_float.arr[1]; pTx[74+(Cang_Num-1)*44] = hex_to_float.arr[2]; pTx[75+(Cang_Num-1)*44] = hex_to_float.arr[3]; } /**************************读取容积数据*********************************/ if(plevel[Cang_Num].Level_Error) { pTx[76+(Cang_Num-1)*44] = 0x76; pTx[77+(Cang_Num-1)*44] = 0x7F; pTx[78+(Cang_Num-1)*44] = 0xFF; pTx[79+(Cang_Num-1)*44] = 0x00; } else { hex_to_float.float_temp = plevel[Cang_Num].Volume_Data; pTx[76+(Cang_Num-1)*44] = hex_to_float.arr[0]; pTx[77+(Cang_Num-1)*44] = hex_to_float.arr[1]; pTx[78+(Cang_Num-1)*44] = hex_to_float.arr[2]; pTx[79+(Cang_Num-1)*44] = hex_to_float.arr[3]; } /**************************读取容积数据*********************************/ if(plevel[Cang_Num].Level_Error) { pTx[80+(Cang_Num-1)*44] = 0x76; pTx[81+(Cang_Num-1)*44] = 0x7F; pTx[82+(Cang_Num-1)*44] = 0xFF; pTx[83+(Cang_Num-1)*44] = 0x00; } else { hex_to_float.float_temp = plevel[Cang_Num].Volume_Data; pTx[80+(Cang_Num-1)*44] = hex_to_float.arr[0]; pTx[81+(Cang_Num-1)*44] = hex_to_float.arr[1]; pTx[82+(Cang_Num-1)*44] = hex_to_float.arr[2]; pTx[83+(Cang_Num-1)*44] = hex_to_float.arr[3]; } /**************************读取容积数据*********************************/ if(plevel[Cang_Num].Level_Error) { pTx[84+(Cang_Num-1)*44] = 0x76; pTx[85+(Cang_Num-1)*44] = 0x7F; pTx[86+(Cang_Num-1)*44] = 0xFF; pTx[87+(Cang_Num-1)*44] = 0x00; } else { hex_to_float.float_temp = plevel[Cang_Num].Volume_Data; pTx[84+(Cang_Num-1)*44] = hex_to_float.arr[0]; pTx[85+(Cang_Num-1)*44] = hex_to_float.arr[1]; pTx[86+(Cang_Num-1)*44] = hex_to_float.arr[2]; pTx[87+(Cang_Num-1)*44] = hex_to_float.arr[3]; } /**************************读取容积数据*********************************/ if(plevel[Cang_Num].Level_Error) { pTx[88+(Cang_Num-1)*44] = 0x76; pTx[89+(Cang_Num-1)*44] = 0x7F; pTx[90+(Cang_Num-1)*44] = 0xFF; pTx[91+(Cang_Num-1)*44] = 0x00; } else { hex_to_float.float_temp = plevel[Cang_Num].Volume_Data; pTx[88+(Cang_Num-1)*44] = hex_to_float.arr[0]; pTx[89+(Cang_Num-1)*44] = hex_to_float.arr[1]; pTx[90+(Cang_Num-1)*44] = hex_to_float.arr[2]; pTx[91+(Cang_Num-1)*44] = hex_to_float.arr[3]; } /**************************读取容积数据*********************************/ if(plevel[Cang_Num].Level_Error) { pTx[92+(Cang_Num-1)*44] = 0x76; pTx[93+(Cang_Num-1)*44] = 0x7F; pTx[94+(Cang_Num-1)*44] = 0xFF; pTx[95+(Cang_Num-1)*44] = 0x00; } else { hex_to_float.float_temp = plevel[Cang_Num].Volume_Data; pTx[92+(Cang_Num-1)*44] = hex_to_float.arr[0]; pTx[93+(Cang_Num-1)*44] = hex_to_float.arr[1]; pTx[94+(Cang_Num-1)*44] = hex_to_float.arr[2]; pTx[95+(Cang_Num-1)*44] = hex_to_float.arr[3]; } /**************************读取容积数据*********************************/ if(plevel[Cang_Num].Level_Error) { pTx[96+(Cang_Num-1)*44] = 0x76; pTx[97+(Cang_Num-1)*44] = 0x7F; pTx[98+(Cang_Num-1)*44] = 0xFF; pTx[99+(Cang_Num-1)*44] = 0x00; } else { hex_to_float.float_temp = plevel[Cang_Num].Volume_Data; pTx[96+(Cang_Num-1)*44] = hex_to_float.arr[0]; pTx[97+(Cang_Num-1)*44] = hex_to_float.arr[1]; pTx[98+(Cang_Num-1)*44] = hex_to_float.arr[2]; pTx[99+(Cang_Num-1)*44] = hex_to_float.arr[3]; } } return 1; } uint16_t Read_CangSensorData(uint8_t* pTx) { //传感器数据顺序为温度4字节*3,角度4字节*3,液位4字节*1,容积四字节*1 Angle_Inf* pangle = &angle_inf; TEM_Inf* ptem = tem_inf; KZQ_Inf* pkzq = &kzq_inf; Level_Inf* plevel = level_inf; uint8_t Cang_Num = 0; Cang_Num = pkzq->data_buf[17]; //读取第几仓传感器数据 if(Cang_Num < 1 ||Cang_Num > 8) return 0; pTx[11] = 32; //数据长度 pTx[17] = pkzq->data_buf[17]; /**********************温度传感器数据**********************************/ if(ptem[Cang_Num].TEM_Error) { pTx[18] = 0x47; pTx[19] = 0x7F; pTx[20] = 0xFF; pTx[21] = 0x00; pTx[22] = 0x47; pTx[23] = 0x7F; pTx[24] = 0xFF; pTx[25] = 0x00; pTx[26] = 0x47; pTx[27] = 0x7F; pTx[28] = 0xFF; pTx[29] = 0x00; } else { pTx[18] = ptem[Cang_Num].TEM_HData[0]>>24&0xFF; //读取高位温度传感器数据 pTx[19] = ptem[Cang_Num].TEM_HData[0]>>16&0xFF; pTx[20] = ptem[Cang_Num].TEM_HData[0]>>8&0xFF; pTx[21] = ptem[Cang_Num].TEM_HData[0]&0xFF; pTx[22] = ptem[Cang_Num].TEM_MData[0]>>24&0xFF; //读取中位温度传感器数据 pTx[23] = ptem[Cang_Num].TEM_MData[0]>>16&0xFF; pTx[24] = ptem[Cang_Num].TEM_MData[0]>>8&0xFF; pTx[25] = ptem[Cang_Num].TEM_MData[0]&0xFF; pTx[26] = ptem[Cang_Num].TEM_LData[0]>>24&0xFF; //读取低位温度传感器数据 pTx[27] = ptem[Cang_Num].TEM_LData[0]>>16&0xFF; pTx[28] = ptem[Cang_Num].TEM_LData[0]>>8&0xFF; pTx[29] = ptem[Cang_Num].TEM_LData[0]&0xFF; } /**********************读取角度传感器数据**********************************/ if(pangle->Angle_Error) { pTx[30] = 0x47; pTx[31] = 0x7F; pTx[32] = 0xFF; pTx[33] = 0x00; pTx[34] = 0x47; pTx[35] = 0x7F; pTx[36] = 0xFF; pTx[37] = 0x00; pTx[38] = 0x47; pTx[39] = 0x7F; pTx[40] = 0xFF; pTx[41] = 0x00; } else { pTx[30] = pangle->Angle_DataX[0]>>24&0xFF; //读取X轴角度数据 pTx[31] = pangle->Angle_DataX[0]>>16&0xFF; pTx[32] = pangle->Angle_DataX[0]>>8&0xFF; pTx[33] = pangle->Angle_DataX[0]&0xFF; pTx[34] = pangle->Angle_DataY[0]>>24&0xFF; //读取Y轴角度数据 pTx[35] = pangle->Angle_DataY[0]>>16&0xFF; pTx[36] = pangle->Angle_DataY[0]>>8&0xFF; pTx[37] = pangle->Angle_DataY[0]&0xFF; pTx[38] = pangle->Angle_DataZ[0]>>24&0xFF; //读取Z轴角度数据 pTx[39] = pangle->Angle_DataZ[0]>>16&0xFF; pTx[40] = pangle->Angle_DataZ[0]>>8&0xFF; pTx[41] = pangle->Angle_DataZ[0]&0xFF; } /**************************读取液位数据*********************************/ if(plevel[Cang_Num].Level_Error) { pTx[42] = 0x47; pTx[43] = 0x7F; pTx[44] = 0xFF; pTx[45] = 0x00; pTx[46] = 0x47; pTx[47] = 0x7F; pTx[48] = 0xFF; pTx[49] = 0x00; } else { pTx[42] = (int)plevel[Cang_Num].Level_Data>>24&0xFF; pTx[43] = (int)plevel[Cang_Num].Level_Data>>16&0xFF; pTx[44] = (int)plevel[Cang_Num].Level_Data>>8&0xFF; pTx[45] = (int)plevel[Cang_Num].Level_Data&0xFF; /**************************读取容积数据*********************************/ pTx[46] = (int)plevel[Cang_Num].Volume_Data>>24&0xFF; pTx[47] = (int)plevel[Cang_Num].Volume_Data>>16&0xFF; pTx[48] = (int)plevel[Cang_Num].Volume_Data>>8&0xFF; pTx[49] = (int)plevel[Cang_Num].Volume_Data&0xFF; } return 1; } void RstCPU(void) { uint16_t j; __disable_irq(); while(1) { __set_FAULTMASK(1); NVIC_SystemReset(); while(j --) { __nop(); __nop(); __nop(); __nop(); } } } uint16_t Angle_SetZero(uint8_t* pTx) { KZQ_Inf* pkzq = &kzq_inf; Angle_Inf* pangle = &angle_inf; if( pkzq->USE_XYF == 0) { if(pkzq->data_buf[7] == 0x06) { pkzq->USE_XYF = 1; XYF_TxBuf[0] = pkzq->data_buf[17]; XYF_TxBuf[1] = 0x06; XYF_TxBuf[2] = 0x00; XYF_TxBuf[3] = 0x01; XYF_TxBuf[4] = 0x00; XYF_TxBuf[5] = 0x08; Uart_len_TouChuan=6; } else { if(pangle->Angle_Error) { pTx[18] = 0x47; pTx[19] = 0x7F; pTx[20] = 0xFF; pTx[21] = 0x00; pTx[22] = 0x47; pTx[23] = 0x7F; pTx[24] = 0xFF; pTx[25] = 0x00; pTx[26] = 0x47; pTx[27] = 0x7F; pTx[28] = 0xFF; pTx[29] = 0x00; } else { pTx[18] = pangle->Angle_DataX[0]>>24&0xFF; //读取X轴角度数据 pTx[19] = pangle->Angle_DataX[0]>>16&0xFF; pTx[20] = pangle->Angle_DataX[0]>>8&0xFF; pTx[21] = pangle->Angle_DataX[0]&0xFF; pTx[22] = pangle->Angle_DataY[0]>>24&0xFF; //读取Y轴角度数据 pTx[23] = pangle->Angle_DataY[0]>>16&0xFF; pTx[24] = pangle->Angle_DataY[0]>>8&0xFF; pTx[25] = pangle->Angle_DataY[0]&0xFF; pTx[26] = pangle->Angle_DataZ[0]>>24&0xFF; //读取Z轴角度数据 pTx[27] = pangle->Angle_DataZ[0]>>16&0xFF; pTx[28] = pangle->Angle_DataZ[0]>>8&0xFF; pTx[29] = pangle->Angle_DataZ[0]&0xFF; } } return 0; } return 1; } uint16_t XYF_SetOFF(uint8_t* pTx) { KZQ_Inf* pkzq = &kzq_inf; // Cang_Inf* pcang = &cang_inf; uint8_t i = 0,j = 0; uint16_t ModBusCRC = 0; if( pkzq->USE_XYF == 0) { if(pkzq->data_buf[7] == 0x06) { pkzq->USE_XYF = 1; // if((pcang->XYF_Type == 1)||(pkzq->data_buf[17] == 0x11)) //中化测试用 /* if(pcang->XYF_Type == 1) { j = 2; XYF_TxBuf[i++] = 0x0D; XYF_TxBuf[i++] = 0x0A; }*/ XYF_TxBuf[i++] = pkzq->data_buf[17]; XYF_TxBuf[i++] = 0x06; XYF_TxBuf[i++] = 0x00; XYF_TxBuf[i++] = 0x02; XYF_TxBuf[i++] = 0x00; XYF_TxBuf[i++] = 0x01; ModBusCRC = LIB_CRC_MODBUS(XYF_TxBuf+j,6); XYF_TxBuf[i++] = ModBusCRC>>8; XYF_TxBuf[i++] = ModBusCRC&0xff; // if((pcang->XYF_Type == 1)||(pkzq->data_buf[17] == 0x11)) //中化测试用 /* if(pcang->XYF_Type == 1) { XYF_TxBuf[i++] = 0x0D; XYF_TxBuf[i++] = 0x0A; }*/ Uart_len_TouChuan=i; } else return 0; } else return 0; return 1; } uint16_t XYF_SetThreshold(uint8_t* pTx) { KZQ_Inf* pkzq = &kzq_inf; Cang_Inf* pcang = &cang_inf; uint8_t i = 0,j = 0; uint16_t ModBusCRC = 0; if(pkzq->USE_XYF == 0) { if(pkzq->data_buf[7] == 0x06) { pkzq->USE_XYF = 1; if(pcang->XYF_Type == 1) { j = 0; // XYF_TxBuf[i++] = 0x0D; // XYF_TxBuf[i++] = 0x0A; } XYF_TxBuf[i++] = pkzq->data_buf[17]; XYF_TxBuf[i++] = 0x06; XYF_TxBuf[i++] = 0x00; XYF_TxBuf[i++] = 0x10; XYF_TxBuf[i++] = pkzq->data_buf[18]; XYF_TxBuf[i++] = pkzq->data_buf[19]; ModBusCRC = LIB_CRC_MODBUS(XYF_TxBuf+j,6); XYF_TxBuf[i++] = ModBusCRC>>8; XYF_TxBuf[i++] = ModBusCRC&0xff; if(pcang->XYF_Type == 1) { // XYF_TxBuf[i++] = 0x0D; // XYF_TxBuf[i++] = 0x0A; } Uart_len_TouChuan=i; } else return 0; } else return 0; return 1; } uint16_t HDF_Set_CloseVal(uint8_t* pTx) { KZQ_Inf* pkzq = &kzq_inf; // Cang_Inf* pcang = &cang_inf; uint8_t i = 0; uint16_t ModBusCRC = 0; if(pkzq->USE_XYF == 0) { if(pkzq->data_buf[7] == 0x06) { pkzq->USE_XYF = 1; XYF_TxBuf[i++] = pkzq->data_buf[17]; XYF_TxBuf[i++] = 0x06; XYF_TxBuf[i++] = 0x10; XYF_TxBuf[i++] = pkzq->data_buf[19]; XYF_TxBuf[i++] = 0xA5; XYF_TxBuf[i++] = 0xA5; XYF_TxBuf[i++] = 0xA5; XYF_TxBuf[i++] = 0xA5; XYF_TxBuf[i++] = 0xA5; XYF_TxBuf[i++] = 0xA5; XYF_TxBuf[i++] = 0xA5; XYF_TxBuf[i++] = 0xA5; XYF_TxBuf[i++] = 0xA5; XYF_TxBuf[i++] = 0xA5; ModBusCRC = LIB_CRC_MODBUS(XYF_TxBuf,14); XYF_TxBuf[i++] = ModBusCRC>>8; XYF_TxBuf[i++] = ModBusCRC&0xff; Uart_len_TouChuan=i; } else return 0; } else return 0; return 1; } uint16_t HDF_Set_Gain(uint8_t* pTx) { KZQ_Inf* pkzq = &kzq_inf; // Cang_Inf* pcang = &cang_inf; uint8_t i = 0; uint16_t ModBusCRC = 0; if(pkzq->USE_XYF == 0) { if(pkzq->data_buf[7] == 0x06) { pkzq->USE_XYF = 1; XYF_TxBuf[i++] = pkzq->data_buf[17]; XYF_TxBuf[i++] = 0x06; XYF_TxBuf[i++] = 0x12; XYF_TxBuf[i++] = pkzq->data_buf[19]; XYF_TxBuf[i++] = 0xA5; XYF_TxBuf[i++] = 0xA5; XYF_TxBuf[i++] = 0xA5; XYF_TxBuf[i++] = 0xA5; XYF_TxBuf[i++] = 0xA5; XYF_TxBuf[i++] = 0xA5; XYF_TxBuf[i++] = 0xA5; XYF_TxBuf[i++] = 0xA5; XYF_TxBuf[i++] = 0xA5; XYF_TxBuf[i++] = 0xA5; ModBusCRC = LIB_CRC_MODBUS(XYF_TxBuf,14); XYF_TxBuf[i++] = ModBusCRC>>8; XYF_TxBuf[i++] = ModBusCRC&0xff; Uart_len_TouChuan=i; } else return 0; } else return 0; return 1; } uint16_t HDF_Reset(uint8_t* pTx) { KZQ_Inf* pkzq = &kzq_inf; // Cang_Inf* pcang = &cang_inf; uint8_t i = 0; uint16_t ModBusCRC = 0; if(pkzq->USE_XYF == 0) { if(pkzq->data_buf[7] == 0x06) { pkzq->USE_XYF = 1; XYF_TxBuf[i++] = pkzq->data_buf[17]; XYF_TxBuf[i++] = 0x06; XYF_TxBuf[i++] = 0x00; XYF_TxBuf[i++] = 0xA5; XYF_TxBuf[i++] = 0xA5; XYF_TxBuf[i++] = 0xA5; XYF_TxBuf[i++] = 0xA5; XYF_TxBuf[i++] = 0xA5; XYF_TxBuf[i++] = 0xA5; XYF_TxBuf[i++] = 0xA5; XYF_TxBuf[i++] = 0xA5; XYF_TxBuf[i++] = 0xA5; XYF_TxBuf[i++] = 0xA5; XYF_TxBuf[i++] = 0xA5; ModBusCRC = LIB_CRC_MODBUS(XYF_TxBuf,14); XYF_TxBuf[i++] = ModBusCRC>>8; XYF_TxBuf[i++] = ModBusCRC&0xff; Uart_len_TouChuan=i; } else return 0; } else return 0; return 1; } uint16_t HDF_Set_Threshold(uint8_t* pTx) { KZQ_Inf* pkzq = &kzq_inf; // Cang_Inf* pcang = &cang_inf; uint8_t i = 0; uint16_t ModBusCRC = 0; if(pkzq->USE_XYF == 0) { if(pkzq->data_buf[7] == 0x06) { pkzq->USE_XYF = 1; XYF_TxBuf[i++] = pkzq->data_buf[17]; XYF_TxBuf[i++] = 0x06; XYF_TxBuf[i++] = 0x14; XYF_TxBuf[i++] = pkzq->data_buf[18]; XYF_TxBuf[i++] = pkzq->data_buf[19]; XYF_TxBuf[i++] = 0xA5; XYF_TxBuf[i++] = 0xA5; XYF_TxBuf[i++] = 0xA5; XYF_TxBuf[i++] = 0xA5; XYF_TxBuf[i++] = 0xA5; XYF_TxBuf[i++] = 0xA5; XYF_TxBuf[i++] = 0xA5; XYF_TxBuf[i++] = 0xA5; XYF_TxBuf[i++] = 0xA5; ModBusCRC = LIB_CRC_MODBUS(XYF_TxBuf,14); XYF_TxBuf[i++] = ModBusCRC>>8; XYF_TxBuf[i++] = ModBusCRC&0xff; Uart_len_TouChuan=i; } else return 0; } else return 0; return 1; } uint16_t RKG_SetZero(uint8_t* pTx) { KZQ_Inf* pkzq = &kzq_inf; Cang_Inf* pcang = &cang_inf; uint8_t i = 0; uint16_t ModBusCRC = 0; uint8_t buf[8] = {0}; if(pkzq->USE_RKG == 0) { if(pkzq->data_buf[7] == 0x06) { if(pcang->RKG_Type == 1) { // RKG_TxBuf[i++] = 0x0D; // RKG_TxBuf[i++] = 0x0A; } RKG_TxBuf[i++] = pkzq->data_buf[17]; RKG_TxBuf[i++] = 0x06; RKG_TxBuf[i++] = 0x00; RKG_TxBuf[i++] = 0x10; RKG_TxBuf[i++] = 0x00; RKG_TxBuf[i++] = 0xFF; buf[0] = pkzq->data_buf[17]; buf[1] = 0x06; buf[2] = 0x00; buf[3] = 0x10; buf[4] = 0x00; buf[5] = 0xFF; ModBusCRC = LIB_CRC_MODBUS(buf,6); RKG_TxBuf[i++] = ModBusCRC>>8; RKG_TxBuf[i++] = ModBusCRC&0xff; if(pcang->RKG_Type == 1) { // RKG_TxBuf[i++] = 0x0D; // RKG_TxBuf[i++] = 0x0A; } Uart_len_TouChuan=i; pkzq->USE_RKG = 1; } else return 0; } else return 0; return 1; } uint16_t RKG_SetThreshold(uint8_t* pTx) { RKG_Inf* prkg = rkg_inf; KZQ_Inf* pkzq = &kzq_inf; uint16_t flash_buf[10] = {0}; flash_buf[0] = pkzq->data_buf[16]<<8|pkzq->data_buf[17]; if(pkzq->data_buf[7] == 0x06) { Flash_WriteBytes(flash_buf,ADDR_RKG_THRESHOLD,1); } flash_buf[0] = 0; Flash_ReadBytes(flash_buf,ADDR_RKG_THRESHOLD,1); prkg->RKG_Threshold = flash_buf[0]; pTx[16] = flash_buf[0] >>8; pTx[17] = flash_buf[0]&0xFF; if((pTx[16] == pkzq->data_buf[16])&&(pTx[17] == pkzq->data_buf[17])) return 1; else return 0; } uint16_t Sensor_SetJudgefNum(uint8_t* pTx) { RKG_Inf* prkg = rkg_inf; XYF_Inf* pxyf = xyf_inf; KZQ_Inf* pkzq = &kzq_inf; uint16_t flash_buf[10] = {0}; flash_buf[0] = pkzq->data_buf[16]<<8|pkzq->data_buf[17]; if(pkzq->data_buf[7] == 0x06) Flash_WriteBytes(flash_buf,ADDR_SDATEJUDGE_NUM,1); Flash_ReadBytes(flash_buf,ADDR_SDATEJUDGE_NUM,1); prkg->RKG_StateKeepNum = flash_buf[0]; pxyf->XYF_StateKeepNum = flash_buf[0]; pTx[16] = flash_buf[0] >>8; pTx[17] = flash_buf[0]&0xFF; if((pTx[16] == pkzq->data_buf[16])&&(pTx[17] == pkzq->data_buf[17])) return 1; else return 0; } uint16_t Read_Sensor(uint8_t* pTx) { Angle_Inf* pangle = &angle_inf; TEM_Inf* ptem = tem_inf; Level_Inf* plevel = level_inf; KZQ_Inf* pkzq = &kzq_inf; if(pkzq->data_buf[17] > 0x50 && pkzq->data_buf[17] < 0x5F) //液位传感器 { if(plevel[pTx[17] - 0x50].Level_Error) { pTx[18] = 0x47; pTx[19] = 0x7F; pTx[20] = 0xFF; pTx[21] = 0x00; } else { pTx[18] = (int)plevel[pTx[17] - 0x50].Level_Data>>24&0xff; pTx[19] = (int)plevel[pTx[17] - 0x50].Level_Data>>16&0xff; pTx[20] = (int)plevel[pTx[17] - 0x50].Level_Data>>8&0xff; pTx[21] = (int)plevel[pTx[17] - 0x50].Level_Data&0xff; } } else if(pkzq->data_buf[17] > 0x60 && pkzq->data_buf[17] < 0x6F) //温度传感器 { if(ptem[pTx[17] - 0x60].TEM_Error) { pTx[18] = 0x47; pTx[19] = 0x7F; pTx[20] = 0xFF; pTx[21] = 0x00; pTx[22] = 0x47; pTx[23] = 0x7F; pTx[24] = 0xFF; pTx[25] = 0x00; pTx[26] = 0x47; pTx[27] = 0x7F; pTx[28] = 0xFF; pTx[29] = 0x00; } pTx[18] = ptem[pTx[17] - 0x60].TEM_HData[0]>>24&0xff; pTx[19] = ptem[pTx[17] - 0x60].TEM_HData[0]>>16&0xff; pTx[20] = ptem[pTx[17] - 0x60].TEM_HData[0]>>8&0xff; pTx[21] = ptem[pTx[17] - 0x60].TEM_HData[0]&0xff; pTx[22] = ptem[pTx[17] - 0x60].TEM_MData[0]>>24&0xff; pTx[23] = ptem[pTx[17] - 0x60].TEM_MData[0]>>16&0xff; pTx[24] = ptem[pTx[17] - 0x60].TEM_MData[0]>>8&0xff; pTx[25] = ptem[pTx[17] - 0x60].TEM_MData[0]&0xff; pTx[26] = ptem[pTx[17] - 0x60].TEM_LData[0]>>24&0xff; pTx[27] = ptem[pTx[17] - 0x60].TEM_LData[0]>>16&0xff; pTx[28] = ptem[pTx[17] - 0x60].TEM_LData[0]>>8&0xff; pTx[29] = ptem[pTx[17] - 0x60].TEM_LData[0]&0xff; } else if(pkzq->data_buf[17] > 0x70 && pkzq->data_buf[17] < 0x7F) //压力传感器 { /*暂未使用压力传感器*/ } else if(pkzq->data_buf[17] > 0x80 && pkzq->data_buf[17] < 0x8F) //挂壁传感器 { /*暂未使用挂壁传感器*/ } else if(pkzq->data_buf[17] > 0xE0 && pkzq->data_buf[17] < 0xE3) //姿态传感器 { if(pangle->Angle_Error) { pTx[18] = 0x47; pTx[19] = 0x7F; pTx[20] = 0xFF; pTx[21] = 0x00; pTx[22] = 0x47; pTx[23] = 0x7F; pTx[24] = 0xFF; pTx[25] = 0x00; pTx[26] = 0x47; pTx[27] = 0x7F; pTx[28] = 0xFF; pTx[29] = 0x00; } else { pTx[18] = pangle->Angle_DataX[0]>>24&0xff; pTx[19] = pangle->Angle_DataX[0]>>16&0xff; pTx[20] = pangle->Angle_DataX[0]>>8&0xff; pTx[21] = pangle->Angle_DataX[0]&0xff; pTx[18] = pangle->Angle_DataY[0]>>24&0xff; pTx[19] = pangle->Angle_DataY[0]>>16&0xff; pTx[20] = pangle->Angle_DataY[0]>>8&0xff; pTx[21] = pangle->Angle_DataY[0]&0xff; pTx[18] = pangle->Angle_DataZ[0]>>24&0xff; pTx[19] = pangle->Angle_DataZ[0]>>16&0xff; pTx[20] = pangle->Angle_DataZ[0]>>8&0xff; pTx[21] = pangle->Angle_DataZ[0]&0xff; } } else if(pkzq->data_buf[17] == 0xe4) //油气回收传感器 { /*暂未使用挂壁传感器*/ } else return 0; return 1; } uint16_t CJQ_SetConfig(uint8_t* pTx) { KZQ_Inf* pkzq = &kzq_inf; uint16_t Flash_buf[20] = {0}; uint8_t i = 0; for(i = 0;i < pkzq->data_buf[11];i++) { Flash_buf[i] = pkzq->data_buf[16+i]; } if(pkzq->data_buf[7] == 0x06) { Flash_WriteBytes(Flash_buf,ADDR_CANG_NUM,pTx[11]); Cang_Init(); } Flash_ReadBytes(Flash_buf,ADDR_CANG_NUM,pTx[11]); for(i = 0;i < pkzq->data_buf[11];i++) { //if((Flash_buf[i] != pkzq->data_buf[16+i])&&(pkzq->data_buf[7] == 0x06)) // return 0; pTx[16+i] = Flash_buf[i]; } return 1; } uint16_t RKG_SetTypeNum(uint8_t* pTx) { Cang_Inf* pcang = &cang_inf; KZQ_Inf* pkzq = &kzq_inf; uint16_t Flash_buf[20] = {0}; uint8_t i = 0; for(i = 0;i < pkzq->data_buf[11];i++) { Flash_buf[i] = pkzq->data_buf[16+i]; } if(pkzq->data_buf[7] == 0x06) Flash_WriteBytes(Flash_buf,ADDR_RKGSENSOR_TYPE,1); Flash_ReadBytes(Flash_buf,ADDR_RKGSENSOR_TYPE,1); pTx[16] = Flash_buf[0]; if(Flash_buf[0] < 5) pcang->RKG_Type = Flash_buf[0]; if(pkzq->data_buf[7] == 0x06) Flash_WriteBytes(Flash_buf+1,ADDR_RKG_NUM,8); Flash_ReadBytes(Flash_buf+1,ADDR_RKG_NUM,8); for(i = 0;i < pkzq->data_buf[11];i++) { if((Flash_buf[i+1] != pkzq->data_buf[17+i])&&(pkzq->data_buf[7] == 0x06)) return 0; if(Flash_buf[i+1] < 8) { pcang->RKG_Num[i] = Flash_buf[i+1]; pTx[17+i] = Flash_buf[i+1]; } } return 1; } uint16_t XYF_SetTypeNum(uint8_t* pTx) { Cang_Inf* pcang = &cang_inf; KZQ_Inf* pkzq = &kzq_inf; uint16_t Flash_buf[20] = {0}; uint8_t i = 0; for(i = 0;i < pkzq->data_buf[11];i++) { Flash_buf[i] = pkzq->data_buf[16+i]; } if(pkzq->data_buf[7] == 0x06) { Flash_WriteBytes(Flash_buf,ADDR_XYFSENSOR_TYPE,1); } Flash_ReadBytes(Flash_buf,ADDR_XYFSENSOR_TYPE,1); pTx[16] = Flash_buf[0]; if(Flash_buf[0] < 5) pcang->XYF_Type = Flash_buf[0]; if(pkzq->data_buf[7] == 0x06) { Flash_WriteBytes(Flash_buf+1,ADDR_XYF_NUM,8); } Flash_ReadBytes(Flash_buf+1,ADDR_XYF_NUM,8); for(i = 0;i < pkzq->data_buf[11];i++) { if((Flash_buf[i+1] != pkzq->data_buf[17+i])&&(pkzq->data_buf[7] == 0x06)) return 0; if(Flash_buf[i+1] < 8) { pcang->XYF_Num[i] = Flash_buf[i+1]; pTx[17+i] = Flash_buf[i+1]; } } return 1; } uint16_t HDF_SetTypeNum(uint8_t* pTx) { Cang_Inf* pcang = &cang_inf; KZQ_Inf* pkzq = &kzq_inf; uint16_t Flash_buf[20] = {0}; uint8_t i = 0; for(i = 0;i < pkzq->data_buf[11];i++) { Flash_buf[i] = pkzq->data_buf[16+i]; } if(pkzq->data_buf[7] == 0x06) Flash_WriteBytes(Flash_buf,ADDR_HDFSENSOR_TYPE,1); Flash_ReadBytes(Flash_buf,ADDR_HDFSENSOR_TYPE,1); pTx[16] = Flash_buf[0]; if(Flash_buf[0] < 5) pcang->HDF_Type = Flash_buf[0]; if(pkzq->data_buf[7] == 0x06) Flash_WriteBytes(Flash_buf+1,ADDR_HDF_NUM,8); Flash_ReadBytes(Flash_buf+1,ADDR_HDF_NUM,8); for(i = 0;i < pkzq->data_buf[11];i++) { if((Flash_buf[i+1] != pkzq->data_buf[17+i])&&(pkzq->data_buf[7] == 0x06)) return 0; if(Flash_buf[i+1] < 8) { pcang->HDF_Num[i] = Flash_buf[i+1]; pTx[17+i] = Flash_buf[i+1]; } } return 1; } uint16_t Level_SetType(uint8_t* pTx) { Cang_Inf* pcang = &cang_inf; KZQ_Inf* pkzq = &kzq_inf; uint16_t Flash_buf[20] = {0}; Flash_buf[0] = pkzq->data_buf[16]<<8|pkzq->data_buf[17]; if(pkzq->data_buf[7] == 0x06) Flash_WriteBytes(Flash_buf,ADDR_LEVEL_TYPE,1); Flash_ReadBytes(Flash_buf,ADDR_LEVEL_TYPE,1); pTx[16] = Flash_buf[0]>>8; pTx[17] = Flash_buf[0]&0xFF; if(Flash_buf[0] != 0xFFFF) pcang->Level = Flash_buf[0]; if((pTx[16] == pkzq->data_buf[16])&&(pTx[17] == pkzq->data_buf[17])&&(pkzq->data_buf[7] == 0x06)) return 1; else return 0; } typedef union{ float Ldcal_zero_temp1; uint8_t arr1[4]; }Hex_to_float2; Hex_to_float2 hex_to_float2; uint16_t Level_SetCalvalue(uint8_t* pTx) { // Cang_Inf* pcang = &cang_inf; KZQ_Inf* pkzq = &kzq_inf; Level_Inf* plevel = level_inf; uint16_t Flash_buf[20] = {0}; Flash_buf[0] = pkzq->data_buf[16]<<8|pkzq->data_buf[17]; Flash_buf[1] = pkzq->data_buf[18]<<8|pkzq->data_buf[19]; Flash_buf[2] = pkzq->data_buf[20]<<8|pkzq->data_buf[21]; Flash_buf[3] = pkzq->data_buf[22]<<8|pkzq->data_buf[23]; if(pkzq->data_buf[7] == 0x06) Flash_WriteBytes(Flash_buf,CANG1_LEVEL_CAL,4); Flash_ReadBytes(Flash_buf,CANG1_LEVEL_CAL,4); pTx[16] = Flash_buf[0]>>8; pTx[17] = Flash_buf[0]&0xFF; pTx[18] = Flash_buf[1]>>8; pTx[19] = Flash_buf[1]&0xFF; pTx[20] = Flash_buf[2]>>8; pTx[21] = Flash_buf[2]&0xFF; pTx[22] = Flash_buf[3]>>8; pTx[23] = Flash_buf[4]&0xFF; if((pTx[16] == pkzq->data_buf[16])&&(pTx[17] == pkzq->data_buf[17])&&(pkzq->data_buf[7] == 0x06)) { hex_to_float2.arr1[3] = pkzq->data_buf[16]; hex_to_float2.arr1[2] = pkzq->data_buf[17]; hex_to_float2.arr1[1] = pkzq->data_buf[18]; hex_to_float2.arr1[0] = pkzq->data_buf[19]; plevel[1].Level_Cal_zero = hex_to_float2.Ldcal_zero_temp1; __NOP(); hex_to_float2.arr1[3] = pkzq->data_buf[20]; hex_to_float2.arr1[2] = pkzq->data_buf[21]; hex_to_float2.arr1[1] = pkzq->data_buf[22]; hex_to_float2.arr1[0] = pkzq->data_buf[23]; plevel[2].Level_Cal_zero = hex_to_float2.Ldcal_zero_temp1; __NOP(); //hex_to_float2.Ldcal_zero_temp1 = plevel[2].Level_Cal_zero; return 1; } else return 0; } uint16_t Angle_SetType(uint8_t* pTx) { Cang_Inf* pcang = &cang_inf; KZQ_Inf* pkzq = &kzq_inf; uint16_t Flash_buf[20] = {0}; Flash_buf[0] = pkzq->data_buf[16]<<8|pkzq->data_buf[17]; if(pkzq->data_buf[7] == 0x06) Flash_WriteBytes(Flash_buf,ADDR_ANGLE_TYPE,1); Flash_ReadBytes(Flash_buf,ADDR_ANGLE_TYPE,1); pTx[16] = Flash_buf[0]>>8; pTx[17] = Flash_buf[0]&0xFF; if(Flash_buf[0] != 0xFFFF) pcang->Angle = Flash_buf[0]; if((pTx[16] == pkzq->data_buf[16])&&(pTx[17] == pkzq->data_buf[17])&&(pkzq->data_buf[7] == 0x06)) return 1; else return 0; } uint16_t Tem_SetType(uint8_t* pTx) { Cang_Inf* pcang = &cang_inf; KZQ_Inf* pkzq = &kzq_inf; uint16_t Flash_buf[20] = {0}; Flash_buf[0] = pkzq->data_buf[17]<<8|pkzq->data_buf[16]; if(pkzq->data_buf[7] == 0x06) Flash_WriteBytes(Flash_buf,ADDR_TEM_TYPE,1); Flash_ReadBytes(Flash_buf,ADDR_TEM_TYPE,1); pTx[17] = Flash_buf[0]>>8; pTx[16] = Flash_buf[0]&0xFF; if(Flash_buf[0] != 0xFFFF) pcang->Temperture = Flash_buf[0]; if((pTx[16] == pkzq->data_buf[16])&&(pTx[17] == pkzq->data_buf[17])&&(pkzq->data_buf[7] == 0x06)) return 1; else return 0; }