#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" #include "pressure.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仓 状态 结束 } #define Angle_cs (180.0f/32768.0f) uint16_t Read_ZhencheSensorData1(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 i = 0; hex_to_float.float_temp = (float)pangle->Angle_DataX[0]*Angle_cs; //倾角 x 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; //倾角 y 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; //倾角 z 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 < 16;i++) // 备电开关、备电电量、油气回收开关、油气回收卸尽 { pTx[28+i] = 0xa5; } //门磁 pTx[44] = 0x00; pTx[45] = 0x00; pTx[46] = 0x00; pTx[47] = tank_inf.Door_Status; //授权 pTx[48] = 0x00; pTx[49] = 0x00; pTx[50] = 0x00; pTx[51] = tank_inf.Facial_Auth; //其它 for(i = 0;i < 28;i++){ pTx[52+i] = 0xa5; } return 1; } #if 0 /* 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; } #endif /* 1仓数据读 功能增加: 邵磊明 */ uint16_t Read_CangSensorData_V2(uint8_t* pTx, uint8_t Cang_Num) // add by guoqiang { //传感器数据顺序为温度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; Pressure_Inf* ppressure = pressure_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 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; // hdf if(pcang->HDF_Num[Cang_Num - 1] > 0) { for(i = 0;i < 4;i++){ //the max is 4 if(iHDF_Num[Cang_Num - 1]) pTx[44+i]= phdf[HDF_Start+i+1].HDF_Error? State_Error:Get_DFState(HDF_Start+i+1); else pTx[44+i]=0xA5; } }else{ for(i = 0;i < 4;i++){ pTx[44+i]=0xA5; } } // xyf if(pcang->XYF_Num[Cang_Num - 1] > 0) { for(i = 0;i < 4;i++){ //the max is 4 if(iXYF_Num[Cang_Num - 1]) pTx[48+i]= pxyf[XYF_Start+i+1].XYF_Error? State_Error:pxyf[XYF_Start+i+1].XYF_State1; else pTx[48+i]=0xA5; } }else{ for(i = 0;i < 4;i++){ pTx[48+i]=0xA5; } } //rkdg & rkxg if(pcang->RKG_Num[Cang_Num - 1] > 0) { for(i = 0;i < 4;i++){ //the max is 4 if(i < pcang->RKG_Num[Cang_Num - 1]){ pTx[52+i]= prkg[RKG_Start+i+1].RKDG_Error? State_Error:prkg[RKG_Start+i+1].RKDG_State; pTx[56+i]= prkg[RKG_Start+i+1].RKDG_Error? State_Error:prkg[RKG_Start+i+1].RKXG_State; } else{ pTx[52+i]=0xA5; pTx[56+i]=0xA5; } } }else{ for(i = 0;i < 4;i++){ pTx[52+i]=0xA5; pTx[56+i]=0xA5; } } // xj status if(pcang->XYF_Num[Cang_Num - 1] > 0) { for(i = 0;i < 4;i++){ //the max is 4 if(iXYF_Num[Cang_Num - 1]) pTx[60+i]= pxyf[XYF_Start+i+1].XYF_Error? State_Error:pxyf[XYF_Start+i+1].XYF_State2; else pTx[60+i]=0xA5; } }else{ for(i = 0;i < 4;i++){ pTx[60+i]=0xA5; } } 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-1].Error) { pTx[95+9] = 0xAA; pTx[96+9] = 0xAA; pTx[97+9] = 0xAA; pTx[98+9] = 0xAA; } else { hex_to_float.float_temp = plevel[Cang_Num-1].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(ptem[Cang_Num-1].Error) { pTx[99+9] = 0xAB; pTx[100+9] = 0xAB; pTx[101+9] = 0xAB; pTx[102+9] = 0xAB; } else { hex_to_float.float_temp = ptem[Cang_Num-1].temperature1; 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(ptem[Cang_Num].Error) { pTx[103+9] = 0; pTx[104+9] = 0; pTx[105+9] = 0; pTx[106+9] = 0; } else { hex_to_float.float_temp = ptem[Cang_Num-1].temperature1; 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(ptem[Cang_Num].Error) { pTx[107+9] = 0; pTx[108+9] = 0; pTx[109+9] = 0; pTx[110+9] = 0; } else { hex_to_float.float_temp = ptem[Cang_Num-1].temperature2; 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(ptem[Cang_Num].Error) { pTx[111+9] = 0; pTx[112+9] = 0; pTx[113+9] = 0; pTx[114+9] = 0; } else { hex_to_float.float_temp = ptem[Cang_Num-1].temperature3; 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-1].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-1)].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(ppressure[Cang_Num-1].Error) { pTx[119+9] = 0xAC; pTx[120+9] = 0xAC; pTx[121+9] = 0xAC; pTx[122+9] = 0xAC; } else { hex_to_float.float_temp = ppressure[Cang_Num-1].pressure; pTx[119+9] = hex_to_float.arr[0]; pTx[120+9] = hex_to_float.arr[1]; pTx[121+9] = hex_to_float.arr[2]; pTx[122+9] = hex_to_float.arr[3]; } /**************************含水量*********************************/ if(1) { 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(1) { 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; } 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-1].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-1].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].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].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].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].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].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].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].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].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].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].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 Get_CangData(uint8_t* buffer, uint16_t buffer_size, uint8_t CangNo) // add by guoqiang { Cang_Inf* pcang = &cang_inf; HDF_Inf* phdf = hdf_inf; XYF_Inf* pxyf = xyf_inf; Level_Inf* plevel = level_inf; Pressure_Inf* ppressure = pressure_inf; Tem_Inf* ptem = tem_inf; RKG_Inf* prkg = rkg_inf; typedef union{ float float_temp; uint8_t arr[4]; }Hex_to_float; Hex_to_float hex_to_float; uint8_t i = 0,HDF_Start = 0,XYF_Start = 0,RKG_Start = 0,BGY_Start = 0; uint8_t PRESSURE_Start = 0; uint16_t offset = 0; if(CangNo < 1 ||CangNo > 8) return offset; if(CangNo > pcang->Cang_Num){ return offset; } for(i = 0;i < CangNo - 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]; PRESSURE_Start += pcang->Pressure_Num[i]; } // hdf if(pcang->HDF_Num[CangNo - 1] > 0){ for(i = 0; iHDF_Num[CangNo - 1]; i++){ if((offset + IO_VALUE_SIZE) <= buffer_size){ buffer[offset] = SENSOR_TYPE_SEAVALVE; buffer[offset+1] = ((CangNo << 4)|i); //cang & id buffer[offset+2] = 0x00; //IO type buffer[offset+3] = phdf[HDF_Start+i+1].HDF_Error? State_Error:Get_DFState(HDF_Start+i+1); offset += IO_VALUE_SIZE; }else{ return offset; } } } // xyf if(pcang->XYF_Num[CangNo - 1] > 0){ for(i = 0; iXYF_Num[CangNo - 1]; i++){ if((offset + IO_VALUE_SIZE) <= buffer_size){ buffer[offset] = SENSOR_TYPE_UNLOADVALVE; buffer[offset+1] = ((CangNo << 4)|i); //cang & id buffer[offset+2] = 0x00; //IO type buffer[offset+3] = pxyf[XYF_Start+i+1].XYF_Error? State_Error:pxyf[XYF_Start+i+1].XYF_State1; offset += IO_VALUE_SIZE; }else{ return offset; } } } //rkdg & rkxg if(pcang->RKG_Num[CangNo - 1] > 0){ for(i = 0;i < pcang->RKG_Num[CangNo - 1];i++){ if((offset + IO_VALUE_SIZE) <= buffer_size){ buffer[offset] = SENSOR_TYPE_BIGCOVER; buffer[offset+1] = ((CangNo << 4)|i); //cang & id buffer[offset+2] = 0x00; //IO type buffer[offset+3] = prkg[RKG_Start+i+1].RKDG_Error? State_Error:prkg[RKG_Start+i+1].RKDG_State; offset += IO_VALUE_SIZE; }else{ return offset; } } if(pcang->RKG_XG > 0){ //rkxg for(i = 0;i < pcang->RKG_Num[CangNo - 1];i++){ if((offset + IO_VALUE_SIZE) <= buffer_size){ buffer[offset] = SENSOR_TYPE_SMALLCOVER; buffer[offset+1] = ((CangNo << 4)|i); //cang & id buffer[offset+2] = 0x00; //IO type buffer[offset+3] = prkg[RKG_Start+i+1].RKDG_Error? State_Error:prkg[RKG_Start+i+1].RKXG_State; offset += IO_VALUE_SIZE; }else{ return offset; } } } } // xj status , just one per cang if((2 != pcang->XYF_Type )&& (pcang->XYF_Num[CangNo - 1] > 0)){ for(i = 0; i < pcang->XYF_Num[CangNo - 1]; i++){ if((offset + IO_VALUE_SIZE) <= buffer_size){ buffer[offset] = SENSOR_TYPE_UNLOADSTATUS; buffer[offset+1] = ((CangNo << 4)|i); //cang & id buffer[offset+2] = 0x00; //IO type buffer[offset+3] = (pxyf[XYF_Start+i+1].XYF_Error? State_Error:pxyf[XYF_Start+i+1].XYF_State2); offset += IO_VALUE_SIZE; }else{ return offset; } } } //level if(0 != pcang->Level){ if((LEVEL_CZSS == pcang->Level) || (LEVEL_LDYW == pcang->Level)){ if((offset + ANALOG_VALUE_SIZE) <= buffer_size){ buffer[offset] = SENSOR_TYPE_LIQUID_LEVEL; buffer[offset+1] = ((CangNo << 4)|0x00); //cang & id buffer[offset+2] = 0x01; //analog type buffer[offset+3] = plevel[CangNo-1].Error? State_Error:0x00; hex_to_float.float_temp = plevel[CangNo-1].Data; buffer[offset+4] = hex_to_float.arr[0]; buffer[offset+5] = hex_to_float.arr[1]; buffer[offset+6] = hex_to_float.arr[2]; buffer[offset+7] = hex_to_float.arr[3]; offset += ANALOG_VALUE_SIZE; }else{ return offset; } } } //pressure if(0 != pcang->Pressure){ for(i = 0;i < pcang->Pressure_Num[CangNo - 1];i++){ if((offset + ANALOG_VALUE_SIZE) <= buffer_size){ buffer[offset] = SENSOR_TYPE_PRESSURE; buffer[offset+1] = ((CangNo << 4)|i); //cang & id buffer[offset+2] = 0x01; //analog type buffer[offset+3] = ppressure[PRESSURE_Start+i].Error? State_Error:0x00; hex_to_float.float_temp = ppressure[PRESSURE_Start+i].pressure; buffer[offset+4] = hex_to_float.arr[0]; buffer[offset+5] = hex_to_float.arr[1]; buffer[offset+6] = hex_to_float.arr[2]; buffer[offset+7] = hex_to_float.arr[3]; offset += ANALOG_VALUE_SIZE; }else{ return offset; } } } //temperture if(0 != pcang->Temperture){ if(Tem_FST100_611 == pcang->Temperture ){ if((offset + ANALOG_VALUE_SIZE) <= buffer_size){ buffer[offset] = SENSOR_TYPE_TEMPERATURE1; buffer[offset+1] = 0; buffer[offset+2] = 0x01; //analog type buffer[offset+3] = ptem[CangNo-1].Error? State_Error:0x00; hex_to_float.float_temp = ptem[CangNo-1].temperature1; buffer[offset+4] = hex_to_float.arr[0]; buffer[offset+5] = hex_to_float.arr[1]; buffer[offset+6] = hex_to_float.arr[2]; buffer[offset+7] = hex_to_float.arr[3]; offset += ANALOG_VALUE_SIZE; }else{ return offset; } } #if 0 if(3 == pcang->Temperture){ if((offset + ANALOG_VALUE_SIZE) <= buffer_size){ buffer[offset] = SENSOR_TYPE_TEMPERATURE2; buffer[offset+1] = ((CangNo << 4)|0x00); //cang & id buffer[offset+2] = 0x01; //analog type buffer[offset+3] = ptem[CangNo].TEM_Error? State_Error:0x00; hex_to_float.float_temp = ((float)ptem[CangNo].TEM_MData[1]*(0.1f)); buffer[offset+4] = hex_to_float.arr[0]; buffer[offset+5] = hex_to_float.arr[1]; buffer[offset+6] = hex_to_float.arr[2]; buffer[offset+7] = hex_to_float.arr[3]; offset += ANALOG_VALUE_SIZE; }else{ return offset; } if((offset + ANALOG_VALUE_SIZE) <= buffer_size){ buffer[offset] = SENSOR_TYPE_TEMPERATURE3; buffer[offset+1] = ((CangNo << 4)|0x00); //cang & id buffer[offset+2] = 0x01; //analog type buffer[offset+3] = ptem[CangNo].TEM_Error? State_Error:0x00; hex_to_float.float_temp = ((float)ptem[CangNo].TEM_LData[1]*(0.1f)); buffer[offset+4] = hex_to_float.arr[0]; buffer[offset+5] = hex_to_float.arr[1]; buffer[offset+6] = hex_to_float.arr[2]; buffer[offset+7] = hex_to_float.arr[3]; offset += ANALOG_VALUE_SIZE; }else{ return offset; } } #endif } return offset; } //车身数据 uint16_t Get_BodyData(uint8_t* buffer, uint16_t buffer_size) // add by guoqiang { uint16_t offset=0; return offset; } uint16_t Get_AllData(uint8_t* buffer, uint16_t buffer_size) // add by guoqiang { Cang_Inf* pcang = &cang_inf; uint16_t offset = 0; uint8_t i=0; offset += Get_BodyData(buffer+offset, buffer_size-offset); for(i=0; i< pcang->Cang_Num; i++){ offset += Get_CangData(buffer+offset, buffer_size-offset, i+1); if((offset+ANALOG_VALUE_SIZE) > buffer_size) { return offset; } } return offset; } /* 新的采控传感协议 功能增加: 郭强 */ void Read_SensorData_New(uint8_t* pTx, uint16_t* tx_len) // add by guoqiang { KZQ_Inf* pkzq = &kzq_inf; uint8_t Cang_Num = 0xFF; uint8_t* pPayload_len = pTx+11; pTx[16] = pkzq->data_buf[16]; pTx[17] = pkzq->data_buf[17]; uint16_t data_len = 2; uint8_t* buffer = pTx+18; uint16_t buffer_size = 256-16-2-2; //the pTx Size is 256. Cang_Num = pkzq->data_buf[17]; switch(Cang_Num){ case 0x00: //车身 data_len += Get_BodyData(buffer, buffer_size); break; case 0x01: //第1仓 case 0x02: //第2仓 case 0x03: //第3仓 case 0x04: //第4仓 case 0x05: //第5仓 case 0x06: //第6仓 case 0x07: //第7仓 case 0x08: //第8仓 data_len += Get_CangData(buffer, buffer_size, Cang_Num); break; case 0x0A: //全部数据 data_len += Get_AllData(buffer, buffer_size); break; default: //不支持 break; } pTx[10] = data_len>>8; pTx[11] = data_len&0xFF; *tx_len = data_len+16; } 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; typedef union{ float float_temp; uint8_t arr[4]; }Hex_to_float; Hex_to_float hex_to_float; 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-1].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 { hex_to_float.float_temp = ptem[Cang_Num-1].temperature1; //读取高位温度传感器数据 pTx[18] = hex_to_float.arr[0]; pTx[19] = hex_to_float.arr[1]; pTx[20] = hex_to_float.arr[2]; pTx[21] = hex_to_float.arr[3]; hex_to_float.float_temp = ptem[Cang_Num-1].temperature2; //读取中位温度传感器数据 pTx[22] = hex_to_float.arr[0]; pTx[23] = hex_to_float.arr[1]; pTx[24] = hex_to_float.arr[2]; pTx[25] = hex_to_float.arr[3]; hex_to_float.float_temp = ptem[Cang_Num-1].temperature3; //读取低位温度传感器数据 pTx[26] = hex_to_float.arr[0]; pTx[27] = hex_to_float.arr[1]; pTx[28] = hex_to_float.arr[2]; pTx[29] = hex_to_float.arr[3]; } /**********************读取角度传感器数据**********************************/ 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-1].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-1].Data>>24&0xFF; pTx[43] = (int)plevel[Cang_Num-1].Data>>16&0xFF; pTx[44] = (int)plevel[Cang_Num-1].Data>>8&0xFF; pTx[45] = (int)plevel[Cang_Num-1].Data&0xFF; /**************************读取容积数据*********************************/ pTx[46] = (int)plevel[Cang_Num-1].Volume_Data>>24&0xFF; pTx[47] = (int)plevel[Cang_Num-1].Volume_Data>>16&0xFF; pTx[48] = (int)plevel[Cang_Num-1].Volume_Data>>8&0xFF; pTx[49] = (int)plevel[Cang_Num-1].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]-0X30; 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]-0x30; 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] - LEVEL_STARTADDR].Error) { pTx[18] = 0x47; pTx[19] = 0x7F; pTx[20] = 0xFF; pTx[21] = 0x00; } else { pTx[18] = (int)plevel[pTx[17] - LEVEL_STARTADDR].Data>>24&0xff; pTx[19] = (int)plevel[pTx[17] - LEVEL_STARTADDR].Data>>16&0xff; pTx[20] = (int)plevel[pTx[17] - LEVEL_STARTADDR].Data>>8&0xff; pTx[21] = (int)plevel[pTx[17] - LEVEL_STARTADDR].Data&0xff; } } else if(pkzq->data_buf[17] > 0x60 && pkzq->data_buf[17] < 0x6F) //温度传感器 { //if(ptem[pTx[17] - 0x61].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 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; uint8_t data_len = 0x05; for(i = 0;i < data_len;i++) { Flash_buf[i] = pkzq->data_buf[16+i]; } if(pkzq->data_buf[7] == 0x06) { Flash_WriteBytes(Flash_buf,ADDR_CANG_NUM,data_len); Cang_Init(); } Flash_ReadBytes(Flash_buf,ADDR_CANG_NUM,data_len); for(i = 0;i < data_len;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; uint8_t data_len = 0x09; for(i = 0;i < data_len;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 < 8;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; uint8_t data_len = 0x09; for(i = 0;i < data_len;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 < 8;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; uint8_t data_len = 0x09; for(i = 0;i < data_len;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 < 8;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; } // 去向传感器总线读取数据时,如遇无回应,则参照这个标定的重试最大值来获取异常 uint16_t RW_SensorBusMaxRetry(uint8_t* pTx) { Cang_Inf* pcang = &cang_inf; KZQ_Inf* pkzq = &kzq_inf; uint16_t Flash_buf[20] = {0}; // [7]为03,表示读取,06表示设置 // [16,17]在设置时有效,表示设置值 Flash_buf[0] = pkzq->data_buf[16]<<8|pkzq->data_buf[17]; if(pkzq->data_buf[7] == 0x06) { Flash_WriteBytes(Flash_buf,ADDR_SENSOR_BUS_MAX_RETRY,1); } Flash_ReadBytes(Flash_buf,ADDR_SENSOR_BUS_MAX_RETRY,1); pTx[16] = Flash_buf[0]>>8; pTx[17] = Flash_buf[0]&0xFF; if(Flash_buf[0] != 0xFFFF) pcang->sensorBusMaxReTry = 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; } // mcu的IO口采集的一种连续性滤波式的认可机制的参数 uint16_t RW_PinIoHitSameParam(uint8_t* pTx) { Cang_Inf* pcang = &cang_inf; KZQ_Inf* pkzq = &kzq_inf; uint16_t Flash_buf[20] = {0}; // [7]为03,表示读取,06表示设置 // [16,17]在设置时有效,表示设置值 Flash_buf[0] = pkzq->data_buf[16]<<8|pkzq->data_buf[17]; if(pkzq->data_buf[7] == 0x06) { Flash_WriteBytes(Flash_buf,ADDR_PIN_IO_HIT_SAME,1); } Flash_ReadBytes(Flash_buf,ADDR_PIN_IO_HIT_SAME,1); pTx[16] = Flash_buf[0]>>8; pTx[17] = Flash_buf[0]&0xFF; if(Flash_buf[0] != 0xFFFF) pcang->pinIOHitSameParam = 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[0].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[1].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; } uint32_t Version_Soft[8] = {2, 2, 3, 13, 1, 1, 0, 20230526}; uint16_t Read_SoftVersion(uint8_t *pTx) { int i; for (i = 0; i < 8; ++i) { pTx[i * 4+16] = (Version_Soft[i] >> 24) & 0xff; pTx[i * 4 + 1+16] = (Version_Soft[i] >> 16) & 0xff; pTx[i * 4 + 2+16] = (Version_Soft[i] >> 8) & 0xff; pTx[i * 4 + 3+16] = (Version_Soft[i] >> 0) & 0xff; } return 1; }