This commit is contained in:
2026-03-20 21:19:04 +08:00
parent 90c3d919df
commit 9d3b4b836f
247 changed files with 22127 additions and 30305 deletions

168
user/Protocol/UserModbus.c Executable file → Normal file
View File

@@ -14,12 +14,49 @@ const u8 MAPDefault[] = {
MAP36_DEFAULT, MAP37_DEFAULT, MAP38_DEFAULT, MAP39_DEFAULT, MAP40_DEFAULT,
MAP41_DEFAULT, MAP42_DEFAULT, MAP43_DEFAULT, MAP44_DEFAULT, MAP45_DEFAULT,
MAP46_DEFAULT, MAP47_DEFAULT, MAP48_DEFAULT };
//******************************************************************************
__weak void CalibrateGasOffset(void) {}
//******************************************************************************
/*
//------------------------------------------------------------------------------
//const unsigned char BusRegLen[] = {
// STD_30_LEN, STD_31_LEN, STD_32_LEN, STD_33_LEN, STD_34_LEN, STD_35_LEN, STD_36_LEN, STD_37_LEN,
// STD_38_LEN, STD_39_LEN, STD_3A_LEN, STD_3B_LEN, STD_3C_LEN, STD_3D_LEN, STD_3E_LEN, STD_3F_LEN,
//
// STD_40_LEN, STD_41_LEN, STD_42_LEN, STD_43_LEN, STD_44_LEN, STD_45_LEN, STD_46_LEN, STD_47_LEN,
// STD_48_LEN, STD_49_LEN, STD_4A_LEN, STD_4B_LEN, STD_4C_LEN, STD_4D_LEN, STD_4E_LEN, STD_4F_LEN,
//
// STD_50_LEN, STD_51_LEN, STD_52_LEN, STD_53_LEN, STD_54_LEN, STD_55_LEN, STD_56_LEN, STD_57_LEN,
// STD_58_LEN, STD_59_LEN, STD_5A_LEN, STD_5B_LEN, STD_5C_LEN, STD_5D_LEN, STD_5E_LEN, STD_5F_LEN,
//
// STD_60_LEN, STD_61_LEN, STD_62_LEN, STD_63_LEN, STD_64_LEN, STD_65_LEN, STD_66_LEN, STD_67_LEN,
// STD_68_LEN, STD_69_LEN, STD_6A_LEN, STD_6B_LEN, STD_6C_LEN, STD_6D_LEN, STD_6E_LEN, STD_6F_LEN,
//
// STD_70_LEN, STD_71_LEN, STD_72_LEN, STD_73_LEN, STD_74_LEN, STD_75_LEN, STD_76_LEN, STD_77_LEN,
// STD_78_LEN, STD_79_LEN, STD_7A_LEN, STD_7B_LEN, STD_7C_LEN, STD_7D_LEN, STD_7E_LEN, STD_7F_LEN,
//
// STD_80_LEN, STD_81_LEN, STD_82_LEN, STD_83_LEN, STD_84_LEN, STD_85_LEN, STD_86_LEN, STD_87_LEN,
// STD_88_LEN, STD_89_LEN, STD_8A_LEN, STD_8B_LEN, STD_8C_LEN, STD_8D_LEN, STD_8E_LEN, STD_8F_LEN,
//
// STD_90_LEN, STD_91_LEN, STD_92_LEN, STD_93_LEN, STD_94_LEN, STD_95_LEN, STD_96_LEN, STD_97_LEN,
// STD_98_LEN, STD_99_LEN, STD_9A_LEN, STD_9B_LEN, STD_9C_LEN, STD_9D_LEN, STD_9E_LEN, STD_9F_LEN,
//
// STD_A0_LEN, STD_A1_LEN, STD_A2_LEN, STD_A3_LEN, STD_A4_LEN, STD_A5_LEN, STD_A6_LEN, STD_A7_LEN,
// STD_A8_LEN, STD_A9_LEN, STD_AA_LEN, STD_AB_LEN, STD_AC_LEN, STD_AD_LEN, STD_AE_LEN, STD_AF_LEN,
//
// STD_B0_LEN, STD_B1_LEN, STD_B2_LEN, STD_B3_LEN, STD_B4_LEN, STD_B5_LEN, STD_B6_LEN, STD_B7_LEN,
// STD_B8_LEN, STD_B9_LEN, STD_BA_LEN, STD_BB_LEN, STD_BC_LEN, STD_BD_LEN, STD_BE_LEN, STD_BF_LEN,
//
// STD_C0_LEN, STD_C1_LEN, STD_C2_LEN, STD_C3_LEN, STD_C4_LEN, STD_C5_LEN, STD_C6_LEN, STD_C7_LEN,
// STD_C8_LEN, STD_C9_LEN, STD_CA_LEN, STD_CB_LEN, STD_CC_LEN, STD_CD_LEN, STD_CE_LEN, STD_CF_LEN,
//
// STD_D0_LEN, STD_D1_LEN, STD_D2_LEN, STD_D3_LEN, STD_D4_LEN, STD_D5_LEN, STD_D6_LEN, STD_D7_LEN,
// STD_D8_LEN, STD_D9_LEN, STD_DA_LEN, STD_DB_LEN, STD_DC_LEN, STD_DD_LEN, STD_DE_LEN, STD_DF_LEN,
//
// STD_E0_LEN, STD_E1_LEN, STD_E2_LEN, STD_E3_LEN, STD_E4_LEN, STD_E5_LEN, STD_E6_LEN, STD_E7_LEN,
// STD_E8_LEN, STD_E9_LEN, STD_EA_LEN, STD_EB_LEN, STD_EC_LEN, STD_ED_LEN, STD_EE_LEN, STD_EF_LEN,
//
// STD_F0_LEN, STD_F1_LEN, STD_F2_LEN, STD_F3_LEN, STD_F4_LEN, STD_F5_LEN, STD_F6_LEN, STD_F7_LEN,
// STD_F8_LEN, STD_F9_LEN, STD_FA_LEN, STD_FB_LEN, STD_FC_LEN, STD_FD_LEN, STD_FE_LEN, STD_FF_LEN,
//};
*/
//******************************************************************************
u16 SetupResponseTimeIndex(u16 response, u16 responseDefalt)
@@ -49,12 +86,12 @@ u16 SetupResponseTime(u16 response, u16 responseDefalt)
//******************************************************************************
void InitUseBusParameter(void)
{
u16 I;
unsigned int I;
DataPoint = &MAPPoint1;
for(I=0; I<STD_MAP_MAX; I++)
{
*DataPoint = ReadShortParameterFromMemory(MAP_SET1 + I*REG_WORD_WIDTH, (u16)MAPDefault[I]);
*DataPoint = ReadParameterFromMemory(MAP_SET1 + I*MAP_SET_WIDTH, MAP_SET_WIDTH, (unsigned int)MAPDefault[I]);
DataPoint--;
}
}
@@ -62,15 +99,14 @@ void InitUseBusParameter(void)
//******************************************************************************
void WriteInitUseBusParameter(void)
{
u16 I;
unsigned int I;
DataPoint = &MAPPoint1;
for(I=0; I<STD_MAP_MAX; I++)
{
*DataPoint = (u16)MAPDefault[I];
tempL.Word[0] = (u16)MAPDefault[I];
WriteShortParameterToMemory(MAP_SET1 + I*REG_WORD_WIDTH);
*DataPoint = (unsigned int)MAPDefault[I];
tempL.Word[0] = (unsigned int)MAPDefault[I];
WriteParameterToEEPROM(MAP_SET1 + I*MAP_SET_WIDTH, MAP_SET_WIDTH);
DataPoint--;
}
}
@@ -86,12 +122,13 @@ void UserReadDataProtocol(void)
while(MBBuf.StartAddr < STD_DCOEF_NODE1)
{
if(MBBuf.ByteNumber < 2) return;
if(MBBuf.StartAddr < STD_REG_START) {
if(MBBuf.StartAddr < STD_REG_START)
{
//С<><D0A1>0x30δ<30><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
MBBuf.DataByte = DataPoint[MBBuf.StartAddr + STD_MAP_SET1];
if(MBBuf.DataByte < STD_REG_START) tempL.Word[0] = 0;
if(MBBuf.DataByte < STD_REG_START) tempL.Word[0] = 0;
else if(MBBuf.DataByte < STD_DCOEF_NODE1) tempL.Word[0] = DataPoint[MBBuf.DataByte - STD_REG_START];
else tempL.Word[0] = 0;
else tempL.Word[0] = 0;
}
else tempL.Word[0] = DataPoint[MBBuf.StartAddr - STD_REG_START];
@@ -100,7 +137,7 @@ void UserReadDataProtocol(void)
MBBuf.StartAddr++;
MBBuf.ByteNumber -= 2;
MBBuf.DataByte = 2;
MBBuf.DataByte = 2;
}
// read record data
@@ -199,7 +236,11 @@ void UserReadDataProtocol(void)
default: return;
}
}
// MBBuf.RxPointer[MBBuf.Index++] = tempL.Byte[1];
// MBBuf.RxPointer[MBBuf.Index++] = tempL.Byte[0];
// ModbusVariablePointerDec();
for(I=1; I<=MBBuf.DataByte; I++) MBBuf.RxPointer[MBBuf.Index++] = tempL.Byte[MBBuf.DataByte-I];
ModbusVariablePointerDec();
}
@@ -224,7 +265,7 @@ void UserWriteDataProtocol(void)
{
// С<><D0A1>0x30δ<30><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
MBBuf.DataByte = DataPoint[MBBuf.StartAddr + STD_MAP_SET1];
if((MBBuf.DataByte < STD_REG_START) || (MBBuf.DataByte > STD_DCOEF_NODE1)) {
if((MBBuf.DataByte < STD_REG_START) || (MBBuf.DataByte > STD_REG_START)){
MBBuf.BusError = ILLEGAL_DATA_ADDRESS;
return;
}
@@ -246,8 +287,6 @@ void UserWriteDataProtocol(void)
#endif
//----------------------------------------------------------------------------
MBBuf.DataByte = 0;
MBBuf.StartAddr = 0;
while(1)
{
if(MBBuf.BusError != 0) return; // V2004
@@ -315,7 +354,7 @@ void UserWriteDataProtocol(void)
if(tmPDA > 99999999999) break;
flowAccumulationInteger = (unsigned long int)(tmPDA/1000);
flowAccumulationDecimal = (u16)(tmPDA-(unsigned long long int)flowAccumulationInteger*1000);
flowAccumulationDecimal = (unsigned int)(tmPDA-(unsigned long long int)flowAccumulationInteger*1000);
ConvertHEXToBCDArray(flowAccumulationInteger, &Dis1[ACC_INT1], 8, HIGH_FIRST);
ConvertHEXToBCDArray(flowAccumulationDecimal, &Dis1[ACC_DOT1], 3, HIGH_FIRST);
tmpLB = ReturnStartUnitBit(ACC_INT1);
@@ -336,8 +375,8 @@ void UserWriteDataProtocol(void)
#ifndef ENABLE_USER_UART
#pragma message("[undefined] ENABLE_USER_UART")
#elif(ENABLE_USER_UART)
case STD_SLAVER_ADDR:
FreeWriteWordValidDataByCom(&localAddress, SLAVER_ADDR, SLAVER_ADDR_MAX, SLAVER_ADDR_MIN);
case STD_SLAVER_ID:
FreeWriteWordByCom(&localAddress, SLAVER_ADDR, SLAVER_ADDR_WIDTH, SLAVER_ADDR_MAX, SLAVER_ADDR_MIN);
if(parameterState == ABORD_OPERATION) break;
BackupParameterToFlash();
break;
@@ -345,14 +384,14 @@ void UserWriteDataProtocol(void)
#endif
//------------------------------------------------------------------------------
case STD_OUT_MIN_FLOW:
if(BusAdr[MBBuf.StartAddr+1] != STD_OUT_MIN_FLOW +1) return;
WriteDWordValidDataByCom(&minFlowRate, OUT_MIN_FLOW, maxFlowRate>>1, 0);
case STD_OUT_FR_MIN:
if(BusAdr[MBBuf.StartAddr+1] != STD_OUT_FR_MIN+1) return;
WriteDWordByCom(&minFlowRate, MIN_FLOW, MIN_FLOW_WIDTH, maxFlowRate>>1, 0);
break;
case STD_OUT_MAX_FLOW:
if(BusAdr[MBBuf.StartAddr+1] != STD_OUT_MAX_FLOW+1) return;
WriteDWordValidDataByCom(&maxFlowRate, OUT_MAX_FLOW, 0x7fffffff, 0);
case STD_OUT_FR_MAX:
if(BusAdr[MBBuf.StartAddr+1] != STD_OUT_FR_MAX+1) return;
WriteDWordByCom(&maxFlowRate, MAX_FLOW, MAX_FLOW_WIDTH, 0x7fffffff, 0);
break;
//case STD_OUT_ANALOG_MIN: break;
@@ -362,7 +401,7 @@ void UserWriteDataProtocol(void)
#pragma message("[undefined] ENABLE_USER_GCF")
#elif(ENABLE_USER_GCF)
case STD_GCF:
WriteWordValidDataByCom(&GDCFactor, GCF_B, GCF_PARAMETER_MAX, GCF_PARAMETER_MIN);
WriteWordByCom(&GDCFactor, GCF_B, GCF_B_WIDTH, GCF_PARAMETER_MAX, GCF_PARAMETER_MIN);
if(parameterState == ABORD_OPERATION) break;
ComputeGCFFactor();
break;
@@ -370,7 +409,7 @@ void UserWriteDataProtocol(void)
//---------------------------------------------------------------------
//case STD_FILTER_DEPTH: break;
case STD_RESPONSE_TIME: //WriteWordByCom(&factoryInterval, SAMPLE_PERIOD, SAMPLE_PERIOD_WIDTH, SAMPLE_PERIOD_MAX, SAMPLE_PERIOD_MIN); break;
case STD_REPONSE_TIME: //WriteWordByCom(&factoryInterval, SAMPLE_PERIOD, SAMPLE_PERIOD_WIDTH, SAMPLE_PERIOD_MAX, SAMPLE_PERIOD_MIN); break;
SetWordCmdByCom(&CMDComPassword);
if(parameterState == ABORD_OPERATION) break;
@@ -378,7 +417,7 @@ void UserWriteDataProtocol(void)
if(parameterState == ABORD_OPERATION) break;
tempL.Word[0] = CMDComPassword;
responseTimeIndex = (u16)WriteShortParameterToMemory(RESPONSE_TIME);
responseTimeIndex = (unsigned int)WriteShortParameterToEEPROM(RESPONSE_TIME, RESPONSE_TIME_WIDTH);
responseTime = SetupResponseTime(responseTimeIndex, RESPONSE_TIME_DEFAULT);
break;
@@ -386,21 +425,28 @@ void UserWriteDataProtocol(void)
#ifndef ENABLE_USER_OFFSET
#pragma message("[undefined] ENABLE_USER_OFFSET")
#elif(ENABLE_USER_OFFSET)
case STD_GAS_OFFSET_C: WriteWordValidDataByCom(&offsetGas, GAS_OFFSET, OFFSET_MAX, OFFSET_MIN); break;
case STD_GAS_OFFSET_C: WriteWordByCom(&offsetGas, OFFSET_GAS, OFFSET_GAS_WIDTH, OFFSET_MAX, OFFSET_MIN); break;
#endif
//---------------------------------------------------------------------
#ifndef ENABLE_A_TYPE_FLOWRATE
#pragma message("[undefined] ENABLE_A_TYPE_FLOWRATE")
#elif(ENABLE_A_TYPE_FLOWRATE)
case STD_GAS_OFFSET_A: WriteWordValidDataByCom(&offsetGasA, OFFSET_A_GAS, OFFSET_A_MAX, OFFSET_A_MIN); break;
case STD_GAS_OFFSET_A: WriteWordByCom(&offsetGasA, OFFSET_A_GAS, OFFSET_A_GAS_WIDTH, OFFSET_A_MAX, OFFSET_A_MIN); break;
#endif
//---------------------------------------------------------------------
// V2004
#ifndef ENABLE_USER_SET_UNIT
#pragma message("[undefined] ENABLE_USER_SET_UNIT")
#elif(ENABLE_USER_SET_UNIT)
case STD_UNIT:
case STD_UNIT:
// SetWordCmdByCom(&CMDComPassword);
// if(parameterState == ABORD_OPERATION) break;
// if(CMDComPassword == flowUnit) break;
// ConvertAllFlowRateAndSave(tempL.Word[0]);
// break;
SetWordCmdByCom(&CMDComPassword);
if(parameterState == ABORD_OPERATION) break;
if(CMDComPassword == flowUnit) break;
@@ -409,13 +455,9 @@ void UserWriteDataProtocol(void)
#endif
//--------------------------------------------------------------------------
#ifndef ENABLE_GAS_RECOGNITION
#pragma message("[undefined] ENABLE_GAS_RECOGNITION")
#elif(ENABLE_GAS_RECOGNITION)
case STD_AIR_FACTOR: WriteWordValidDataByCom(&airFactor, AIR_FACTOR, 46728, 26728); break;
case STD_FACTOR_VTH: WriteWordValidDataByCom(&factorVth, FACTOR_VTH, 65535, 0); break;
#endif
case STD_AIR_FACTOR: WriteWordByCom(&VHHParameterAir, VHH_AIR_PARA, VHH_AIR_PARA_WIDTH, 46728, 26728); break;
case STD_FACTOR_VTH: WriteWordByCom(&VHHParameterScale, VHH_PARA_SCALE, VHH_PARA_SCALE_WIDTH, 65535, 0); break;
//--------------------------------------------------------------------------
#ifndef ENABLE_ACCPULSE
#pragma message("[undefined] ENABLE_ACCPULSE")
@@ -426,13 +468,13 @@ void UserWriteDataProtocol(void)
if(parameterState == ABORD_OPERATION) break;
if((signed int)CMDComPassword > PULSE_UNIT_MAX) break;
if((signed int)CMDComPassword < PULSE_UNIT_MIN) break;
tempL.Word[0] = CMDComPassword;
factoryUnitPerPulse = (signed int)WriteShortParameterToMemory(PULSE_UNIT);
tempDev.Word[0] = CMDComPassword;
factoryUnitPerPulse = (signed int)WriteParameterToEEPROM(PULSE_UNIT, PULSE_UNIT_WIDTH);
lastRemaining = 0;
Total[MIN_BIT] = 0;
break;
case STD_PULSE_LEVEL: WriteWordValidDataByCom(&PulseLevel, PULSE_LEVEL, 1, 0); break;
case STD_IO_OUTPUT_LEVEL: WriteWordByCom(&PulseLevel, PULSE_LEVEL, PULSE_LEVEL_WIDTH, 1, 0); break;
#endif
//--------------------------------------------------------------------------
@@ -447,7 +489,7 @@ void UserWriteDataProtocol(void)
if(parameterState == ABORD_OPERATION) break;
tempL.Word[0] = CMDComPassword;
factoryInterval = (u16)WriteShortParameterToMemory(SAMPLE_PERIOD);
factoryInterval = (unsigned int)WriteShortParameterToEEPROM(SAMPLE_PERIOD, SAMPLE_PERIOD_WIDTH);
samplingTiming = SetupResponseTime(factoryInterval, SAMPLE_PERIOD_DEFAULT);
break;
#endif
@@ -458,7 +500,7 @@ void UserWriteDataProtocol(void)
#elif(ENABLE_ALARM_ACC)
case STD_ALARM_ACC: // 0x96 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(BusAdr[MBBuf.StartAddr+1] != STD_ALARM_ACC+1) return;
WriteDWordValidDataByCom(&alarmAcc, ALARM_ACC, ALARM_ACC_WIDTH, ALARM_ACC_MAX, ALARM_ACC_MIN);
WriteDWordByCom(&alarmAcc, ALARM_ACC, ALARM_ACC_WIDTH, ALARM_ACC_MAX, ALARM_ACC_MIN);
break;
#endif
//--------------------------------------------------------------------------
@@ -467,8 +509,8 @@ void UserWriteDataProtocol(void)
//case STD_ALARM_LOWER_FLOW 0x9A // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//case STD_ALARM_FUN 0x9C // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//case STD_ALARM_OUT_DELAY 0x9D // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ (<28><>λ<EFBFBD><CEBB>s)
case STD_COM_DECIMAL: WriteWordValidDataByCom(&uartDecimalPoint, COM_DECIMAL, 4, 0); break;
case STD_RECORD_TIME: WriteWordValidDataByCom(&recordTime, RECORD_TIME, 720, 0); break;
case STD_COM_DECIMAL: WriteWordByCom(&uartDecimalPoint, COM_DECIMAL_POINT, COM_DECIMAL_POINT_WIDTH, 4, 0); break;
case STD_RECORD_TIME: WriteWordByCom(&historyPeriod, HISTORY_PERIOD, HISTORY_PERIOD_WIDTH, 720, 0); break;
//case STD_REVERSE_FR_MIN: break;
//case STD_REVERSE_FR_MAX: break;
@@ -477,7 +519,7 @@ void UserWriteDataProtocol(void)
#pragma message("[undefined] ENABLE_USER_I2C")
#elif(ENABLE_USER_I2C)
case STD_I2C_ADDR:
FreeWriteWordValidDataByCom(&localAddress, SLAVER_ADDR, SLAVER_ADDR_WIDTH, SLAVER_ADDR_MAX, SLAVER_ADDR_MIN);
FreeWriteWordByCom(&localAddress, SLAVER_ADDR, SLAVER_ADDR_WIDTH, SLAVER_ADDR_MAX, SLAVER_ADDR_MIN);
I2CAddr = localAddress;
if(parameterState == ABORD_OPERATION) break;
BackupParameterToFlash();
@@ -489,9 +531,9 @@ void UserWriteDataProtocol(void)
//--------------------------------------------------------------------------
//case STD_I2C_CRC_MOD: break;
case STD_TIMING_TXD_START: WriteWordValidDataByCom(&timingTxdStart, TIMING_TXD_START, TIMING_TXD_START_MAX, TIMING_TXD_START_MIN); break;
case STD_TIMING_TXD_LEN: WriteWordValidDataByCom(&timingTxdLen, TIMING_TXD_LEN, TIMING_TXD_LEN_MAX, TIMING_TXD_LEN_MIN); break;
case STD_TIMING_TXD_TIME: WriteWordValidDataByCom(&timingTxdTime, TIMING_TXD_TIME, TIMING_TXD_TIME_MAX, 0); break;
case STD_TIMING_TXD_START: WriteWordByCom(&timingTxdStart, TIMING_TXD_START, TIMING_TXD_START_WIDTH, TIMING_TXD_START_MAX, TIMING_TXD_START_MIN); break;
case STD_TIMING_TXD_LEN: WriteWordByCom(&timingTxdLen, TIMING_TXD_LEN, TIMING_TXD_LEN_WIDTH, TIMING_TXD_LEN_MAX, TIMING_TXD_LEN_MIN); break;
case STD_TIMING_TXD_TIME: WriteWordByCom(&timingTxdTime, TIMING_TXD_TIME, TIMING_TXD_TIME_WIDTH, TIMING_TXD_TIME_MAX, 0); break;
//case STD_PRESSURE_OFFSET 0xA9 // ѹ<><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//case STD_LORA_ADR 0xAA // LORA <20><>ַ
//case STD_LORA_NETID 0xAB // LORA<52><41>·id
@@ -502,16 +544,16 @@ void UserWriteDataProtocol(void)
#ifndef ENABLE_KEY_FUNCTION
#pragma message("[undefined] ENABLE_KEY_FUNCTION")
#elif(ENABLE_KEY_FUNCTION)
case STD_KEY_PASSWORD: WriteDWordValidDataByCom(&keyPassWord, KEY_PASSWORD, KEY_PASSWORD_WIDTH, 99999, 0); break; // 0xAE <20><><EFBFBD>ð<EFBFBD><C3B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
case STD_KEY_PASSWORD: WriteDWordByCom(&keyPassWord, KEY_PASSWORD, KEY_PASSWORD_WIDTH, 99999, 0); break; // 0xAE <20><><EFBFBD>ð<EFBFBD><C3B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#endif
//---------------------------------------------------------------------
#ifndef ENABLE_LEAK_DETECT
#pragma message("[undefined] ENABLE_LEAK_DETECT")
#elif(ENABLE_LEAK_DETECT)
case STD_LEAK_FR_MIN: WriteWordValidDataByCom(&minLeakFlowRate, MIN_LEAK_FLOW, MIN_LEAK_FLOW_WIDTH, MIN_LEAK_FLOW_MAX, MIN_LEAK_FLOW_MIN); break;
case STD_LEAK_FR_MAX: WriteWordValidDataByCom(&maxLeakFlowRate, MAX_LEAK_FLOW, MAX_LEAK_FLOW_WIDTH, MAX_LEAK_FLOW_MAX, MAX_LEAK_FLOW_MIN); break;
case STD_LEAK_TIMING: WriteWordValidDataByCom(&leakDetectTime, LEAK_TIME, LEAK_TIME_WIDTH, LEAK_TIME_MAX, 0); break;
case STD_LEAK_FR_MIN: WriteWordByCom(&minLeakFlowRate, MIN_LEAK_FLOW, MIN_LEAK_FLOW_WIDTH, MIN_LEAK_FLOW_MAX, MIN_LEAK_FLOW_MIN); break;
case STD_LEAK_FR_MAX: WriteWordByCom(&maxLeakFlowRate, MAX_LEAK_FLOW, MAX_LEAK_FLOW_WIDTH, MAX_LEAK_FLOW_MAX, MAX_LEAK_FLOW_MIN); break;
case STD_LEAK_TIMING: WriteWordByCom(&leakDetectTime, LEAK_TIME, LEAK_TIME_WIDTH, LEAK_TIME_MAX, 0); break;
#endif
//**************************************************************************
@@ -558,14 +600,14 @@ void UserWriteDataProtocol(void)
if(CMDComPassword == 0x0000AAFF)
{
tempL.Word[0] = voltageDetected[VHPA];
densityFSParameter = (u16)WriteShortParameterToEEPROM(DENSITY_FS_PARA, DENSITY_FS_PARA_WIDTH);
densityFSParameter = (unsigned int)WriteShortParameterToEEPROM(DENSITY_FS_PARA, DENSITY_FS_PARA_WIDTH);
break;
}
// <20>Ͷ<EFBFBD>У׼
if(CMDComPassword == 0x0000AA00)
{
tempL.Word[0] = voltageDetected[VHPA];
VHHParameterAir = (u16)WriteShortParameterToEEPROM(VHH_AIR_PARA, VHH_AIR_PARA_WIDTH);
VHHParameterAir = (unsigned int)WriteShortParameterToEEPROM(VHH_AIR_PARA, VHH_AIR_PARA_WIDTH);
break;
}
#endif
@@ -635,11 +677,11 @@ void UserWriteDataProtocol(void)
DataPoint = &MAPPoint1;
MBBuf.DataByte = BusAdr[MBBuf.StartAddr] - STD_MAP_SET1;
DataPoint -= MBBuf.DataByte;
WriteWordValidDataByCom(DataPoint, MAP_SET1 + MBBuf.DataByte * REG_WORD_WIDTH, 256, 0);
WriteWordByCom(DataPoint, MAP_SET1 + MBBuf.DataByte * MAP_SET_WIDTH, MAP_SET_WIDTH, 256, 0);
MBBuf.DataByte = 2;
break;
case STD_DCOEF_NUM: WriteWordValidDataByCom(&dcoefNum, DCOEF_NUM, 20, 3); break;
case STD_DCOEF_NUM: WriteWordByCom(&dcoefNum, DCOEF_NUM, DCOEF_NUM_WIDTH, 20, 3); break;
case STD_DCOEF_NODE1:
case STD_DCOEF_NODE2:
case STD_DCOEF_NODE3:
@@ -667,6 +709,7 @@ void UserWriteDataProtocol(void)
if(parameterState == ABORD_OPERATION) return;
dcoefNode[I] = tmpLA;
IDvalidTime = 0;
HWState.EnableCheckCorr = 0;
StoreDevCoefNodeAndValue(I);
break;
@@ -699,6 +742,7 @@ void UserWriteDataProtocol(void)
if(tempL.Word[0] > METER_PARAMETER_MAX) return;
if(tempL.Word[0] < METER_PARAMETER_MIN) return;
IDvalidTime = 0;
dcoefVal[I] = tempL.Word[0];
StoreDevCoefNodeAndValue(I);
HWState.EnableCheckCorr = 0;