¼/ZãÔsc=0 r_stop=0 RECV UART uart0 IF(r_stop==1) RETURN(FALSE) END IF(sc==1)#HSTS sc=2 sv=INPUT.subString(1,3) IF(sv=="01") SEND(L,tqfFanSelftestFailed,"1") END IF(sv=="3B") SEND(L,tqfPVVoltageTooHigh,"1") END sv=INPUT.subString(7,8) SEND(L,tqfLowBatteryAlarm,sv) sv=INPUT.subString(9,10) SEND(L,overLoaderd,sv) sv=INPUT.subString(16,17) SEND(L,abnormalFanSpeed,sv) sv=INPUT.subString(22,23) SEND(L,dualOutputModeEnableSettin,sv) END IF(sc==3)#HGRID sc=4 sv=INPUT.subString(1,6) SEND(L,acInputVoltage,sv) sv=INPUT.subString(7,11) SEND(L,mainsFrequency,sv) sv=INPUT.subString(26,27) SEND(L,mainsCurrentFlowDirection,sv) sv=INPUT.subString(27,32) SEND(L,mainsPower,sv) END IF(sc==5)#HOP sc=6 sv=INPUT.subString(1,6) SEND(L,outputVoltage,sv) sv=INPUT.subString(7,11) SEND(L,outputFrequency,sv) sv=INPUT.subString(12,17) SEND(L,outputApparentPower,sv) sv=INPUT.subString(18,23) SEND(L,outputActivePower,sv) sv=INPUT.subString(24,27) SEND(L,outputLoadPercent,sv) sv=INPUT.subString(28,31) SEND(L,outputDCComponent,sv) END IF(sc==7)#HBAT sc=8 sv=INPUT.subString(1,3) SEND(L,batteryNumberInSeries,sv) sv=INPUT.subString(4,9) SEND(L,batteryVoltage,sv) sv=INPUT.subString(10,13) SEND(L,batteryCapacity,sv) sv=INPUT.subString(14,17) SEND(L,batteryChargingCurrent,sv) sv=INPUT.subString(18,23) SEND(L,batteryDischargeCurrent,sv) sv=INPUT.subString(29,30) SEND(L,solarChargingSwitch,sv) sv=INPUT.subString(34,35) SEND(L,batteryStatus,sv) END IF(sc==9)#HPV sc=10 sv=INPUT.subString(1,6) SEND(L,pvVoltage,sv) sv=INPUT.subString(7,11) SEND(L,pvCurrent,sv) sv=INPUT.subString(12,17) SEND(L,pvPower,sv) END IF(sc==11)#HTEMP sc=12 sv=INPUT.subString(1,4) SEND(L,pvTemperature,sv) sv=INPUT.subString(32,35) SEND(L,pv2Temperature,sv) END IF(sc==13)#HEEP1 sc=14 sv=INPUT.subString(1,2) SEND(L,outputSourcePrioritySettin,sv) sv=INPUT.subString(3,6) SEND(L,maximumChargingCurrentSett,sv) sv=INPUT.subString(11,12) SEND(L,gridWorkingRangeSetting,sv) sv=INPUT.subString(12,13) SEND(L,gridConnectionProtocolType,sv) sv=INPUT.subString(13,14) SEND(L,batteryTypeSetting,sv) SEND(L,batteryType,sv) sv=INPUT.subString(14,15) SEND(L,pvEnergyFeedingPrioritySet,sv) sv=INPUT.subString(15,16) SEND(L,overloadAutomaticRestart,sv) END IF(sc==15)#HEEP1 sc=16 sv=INPUT.subString(17,18) SEND(L,overTemperatureAutomaticRe,sv) SEND(L,overTemperatureRestartFunc,sv) sv=INPUT.subString(19,22) SEND(L,ratedVoltageSetting,sv) sv=INPUT.subString(23,24) SEND(L,ratedFrequencySetting,sv) sv=INPUT.subString(25,26) SEND(L,chargerPrioritySetting,sv) sv=INPUT.subString(27,28) SEND(L,buzzerOn,sv) sv=INPUT.subString(29,30) SEND(L,backlightOn,sv) sv=INPUT.subString(31,32) SEND(L,overloadToBypassOperation,sv) sv=INPUT.subString(33,34) END IF(sc==17)#HEEP1 sc=18 SEND(L,outputModeSetting,sv) sv=INPUT.subString(45,48) SEND(L,restoreBatteryDischargingB,sv) sv=INPUT.subString(49,52) SEND(L,inverterStartupBatteryCapa,sv) sv=INPUT.subString(53,58) SEND(L,batteryConstantChargingVol,sv) sv=INPUT.subString(59,64) SEND(L,batteryFloatChargingVoltag,sv) sv=INPUT.subString(65,70) SEND(L,batteryCutOffVoltageSettin,sv) sv=INPUT.subString(71,74) SEND(L,gridConnectedCurrentSettin,sv) sv=INPUT.subString(75,76) SEND(L,gridConnectionFunctionEnab,sv) sv=INPUT.subString(77,78) SEND(L,ecoMode,sv) END IF(sc==19)#HGEN sc=20 sv=INPUT.subString(14,20) SEND(L,tqfDailyElectricityGenerat,sv) sv=INPUT.subString(21,27) SEND(L,tqfMonthlyElectricityGener,sv) sv=INPUT.subString(28,34) SEND(L,tqfYearlyElectricityGenera,sv) sv=INPUT.subString(35,46) SEND(L,tqfTotalElectricityGenerat,sv) END IF(sc==21)#HEEP2 sc=22 sv=INPUT.subString(1,2) SEND(L,parallelModeSetting,sv) sv=INPUT.subString(3,8) SEND(L,parallelShutdownBatteryVol,sv) sv=INPUT.subString(9,12) SEND(L,parallelShutdownBatterySOC,sv) sv=INPUT.subString(19,24) SEND(L,batteryRechargeVoltageSett,sv) sv=INPUT.subString(25,30) SEND(L,batteryRedischargeVoltageS,sv) sv=INPUT.subString(31,32) SEND(L,batteryEqualizationModeEna,sv) sv=INPUT.subString(33,38) SEND(L,tqfbatteryEqualizationVolt,sv) END IF(sc==23)#HEEP2 sc=24 sv=INPUT.subString(39,42) SEND(L,batteryEqualizationTimeSet,sv) sv=INPUT.subString(43,46) SEND(L,batteryEqualizationTimeout,sv) sv=INPUT.subString(47,50) SEND(L,batteryEqualizationInterva,sv) sv=INPUT.subString(61,65) SEND(L,restoreSecondOutputDelayTi,sv) sv=INPUT.subString(66,70) SEND(L,restoreSecondOutputBattery,sv) sv=INPUT.subString(71,73) SEND(L,restoreSecondOutputBatCapa,sv) sv=INPUT.subString(73,76) SEND(L,secondOutputDischargeTimeS,sv) END IF(sc==25)#HBMS2 sc=26 sv=INPUT.subString(1,7) SEND(L,tqfRemainingCapacity,sv) sv=INPUT.subString(8,14) SEND(L,tqfNominalCapacity,sv) sv=INPUT.subString(15,16) SEND(L,tqfDisplayMode,sv) sv=INPUT.subString(17,21) SEND(L,tqfMaxVoltage,sv) sv=INPUT.subString(22,26) SEND(L,tqfMaxVoltageCellPosition,sv) sv=INPUT.subString(27,41) SEND(L,tqfMinVoltage,sv) sv=INPUT.subString(42,46) SEND(L,tqfMinVoltageCellPosition,sv) END IF(sc==27)#HBMS3 sc=28 sv=INPUT.subString(1,5) SEND(L,tqfBatteryVoltage1,sv) sv=INPUT.subString(6,10) SEND(L,tqfBatteryVoltage2,sv) sv=INPUT.subString(11,15) SEND(L,tqfBatteryVoltage3,sv) sv=INPUT.subString(16,20) SEND(L,tqfBatteryVoltage4,sv) sv=INPUT.subString(21,25) SEND(L,tqfBatteryVoltage5,sv) sv=INPUT.subString(26,30) SEND(L,tqfBatteryVoltage6,sv) sv=INPUT.subString(31,35) SEND(L,tqfBatteryVoltage7,sv) sv=INPUT.subString(36,40) SEND(L,tqfBatteryVoltage8,sv) END IF(sc==29)#HBMS3 sc=0 sv=INPUT.subString(41,45) SEND(L,tqfBatteryVoltage9,sv) sv=INPUT.subString(46,50) SEND(L,tqfBatteryVoltage10,sv) sv=INPUT.subString(51,55) SEND(L,tqfBatteryVoltage11,sv) sv=INPUT.subString(56,60) SEND(L,tqfBatteryVoltage12,sv) sv=INPUT.subString(61,65) SEND(L,tqfBatteryVoltage13,sv) sv=INPUT.subString(66,70) SEND(L,tqfBatteryVoltage14,sv) sv=INPUT.subString(71,75) SEND(L,tqfBatteryVoltage15,sv) sv=INPUT.subString(76,80) SEND(L,tqfBatteryVoltage16,sv) END RETURN(FALSE) END skey="" crc16=0 temp="" sd="" sd1="" gkey="" RECV L getkey gkey=INPUT IF(gkey=="wifistatus") SEND(L,wifistatus,"WiFiStatus") END IF(gkey=="blestatus") SEND(L,blestatus,"BLEStatus") END RETURN(FALSE) END FUNCTION slsd(data) crc16=HisCRC16(0,0x1021,data) temp=data+crc16.toString(1,0)+[0x0D] SEND(UART,uart0,temp) RETURN(FALSE) END RECV L stop IF(INPUT=="1") r_stop=1 END IF(INPUT=="0") sc=sc+1 r_stop=0 END RETURN(FALSE) END RECV L setkey skey=INPUT RETURN(FALSE) END RECV L setvalue IF(skey=="buzzerOn") IF(INPUT=="1") sd=[0x50,0x45,0x61] END IF(INPUT=="0") sd=[0x50,0x46,0x61] END slsd(sd) END IF(skey=="overloadToBypassOperation") IF(INPUT=="1") sd=[0x50,0x45,0x62] END IF(INPUT=="0") sd=[0x50,0x46,0x62] END slsd(sd) END IF(skey=="overloadAutomaticRestart") IF(INPUT=="1") sd=[0x50,0x45,0x63] END IF(INPUT=="0") sd=[0x50,0x46,0x63] END slsd(sd) END IF(skey=="overTemperatureAutomaticRe") IF(INPUT=="1") sd=[0x50,0x45,0x64] END IF(INPUT=="0") sd=[0x50,0x46,0x64] END slsd(sd) END IF(skey=="backlightOn") IF(INPUT=="1") sd=[0x50,0x45,0x65] END IF(INPUT=="0") sd=[0x50,0x46,0x65] END slsd(sd) END IF(skey=="ecoMode") IF(INPUT=="1") sd=[0x50,0x45,0x69] END IF(INPUT=="0") sd=[0x50,0x46,0x69] END slsd(sd) END IF(skey=="pvEnergyFeedingPrioritySet") sd=[0x50,0x56,0x45,0x4E,0x47,0x55,0x53,0x45] sd1=sd.insertAt(8,INPUT) slsd(sd1) END IF(skey=="chargerPrioritySetting") sd=[0x50,0x43,0x50] sd1=sd.insertAt(3,INPUT) slsd(sd1) END IF(skey=="parallelModeSetting") sd=[0x50,0x44,0x41,0x55,0x4C,0x43] sd1=sd.insertAt(6,INPUT) slsd(sd1) END IF(skey=="dualOutputModeEnableSettin") sd=[0x50,0x44,0x41,0x55,0x4C,0x43] sd1=sd.insertAt(6,INPUT) slsd(sd1) END IF(skey=="gridConnectionFunctionEnab") sd=[0x47,0x52,0x49,0x44,0x46,0x45,0x45,0x44] sd1=sd.insertAt(8,INPUT) slsd(sd1) END IF(skey=="gridConnectionProtocolType") sd=[0x5E,0x53,0x3F,0x3F,0x3F,0x52,0x53] sd1=sd.insertAt(7,INPUT) slsd(sd1) END IF(skey=="controlParametersToDefault") sd=[0x50,0x46] slsd(sd1) END IF(skey=="clearPowerGeneration") sd=[0x5E,0x53,0x3F,0x3F,0x3F,0x43,0x4C,0x45] slsd(sd1) END IF(skey=="batteryEqualizationModeEna") sd=[0x50,0x42,0x45,0x51,0x45] sd1=sd.insertAt(5,INPUT) slsd(sd1) END IF(skey=="batteryTypeSetting") sd=[0x50,0x42,0x54] sd1=sd.insertAt(3,INPUT) slsd(sd1) END IF(skey=="gridWorkingRangeSetting") sd=[0x50,0x47,0x52] sd1=sd.insertAt(3,INPUT) slsd(sd1) END IF(skey=="outputModeSetting") sd=[0x50,0x4F,0x50,0x4D] sd1=sd.insertAt(4,INPUT) slsd(sd1) END IF(skey=="outputSourcePrioritySettin") sd=[0x50,0x4F,0x50] sd1=sd.insertAt(3,INPUT) slsd(sd1) END IF(skey=="ratedVoltageSetting") sd=[0x56] sd1=sd.insertAt(1,INPUT) slsd(sd1) END IF(skey=="ratedFrequencySetting") sd=[0x46] sd1=sd.insertAt(1,INPUT) slsd(sd1) END IF(skey=="gridConnectedCurrentSettin") sd=[0x50,0x47,0x43,0x46] sd1=sd.insertAt(4,INPUT) slsd(sd1) END IF(skey=="restoreBatteryDischargingB") sd=[0x50,0x42,0x44,0x56] sd1=sd.insertAt(4,INPUT) slsd(sd1) END IF(skey=="restoreSecondOutputDelayTi") sd=[0x50,0x44,0x44,0x4C,0x59,0x54] sd1=sd.insertAt(6,INPUT) slsd(sd1) END IF(skey=="restoreSecondOutputBatCapa") sd=[0x50,0x44,0x53,0x52,0x53] sd1=sd.insertAt(5,INPUT) slsd(sd1) END IF(skey=="restoreSecondOutputBattery") sd=[0x50,0x44,0x53,0x52,0x56] sd1=sd.insertAt(5,INPUT) slsd(sd1) END IF(skey=="maximumChargingCurrentSett") sd=[0x4D,0x4E,0x43,0x48,0x47,0x43] sd1=sd.insertAt(6,INPUT) slsd(sd1) END IF(skey=="batteryRechargeVoltageSett") sd=[0x50,0x42,0x43,0x56] sd1=sd.insertAt(4,INPUT) slsd(sd1) END IF(skey=="batteryRedischargeVoltageS") sd=[0x50,0x42,0x44,0x56] sd1=sd.insertAt(4,INPUT) slsd(sd1) END IF(skey=="batteryEqualizationTimeSet") sd=[0x50,0x42,0x45,0x51,0x54] sd1=sd.insertAt(5,INPUT) slsd(sd1) END IF(skey=="tqfbatteryEqualizationVolt") sd=[0x50,0x42,0x45,0x51,0x56] sd1=sd.insertAt(5,INPUT) slsd(sd1) END IF(skey=="batteryEqualizationTimeout") sd=[0x50,0x42,0x45,0x51,0x4F,0x54] sd1=sd.insertAt(6,INPUT) slsd(sd1) END IF(skey=="batteryEqualizationInterva") sd=[0x50,0x42,0x45,0x51,0x50] sd1=sd.insertAt(5,INPUT) slsd(sd1) END IF(skey=="batteryConstantChargingVol") sd=[0x50,0x43,0x56,0x56] sd1=sd.insertAt(4,INPUT) slsd(sd1) END IF(skey=="batteryCutOffVoltageSettin") sd=[0x50,0x53,0x44,0x56] sd1=sd.insertAt(4,INPUT) slsd(sd1) END IF(skey=="batteryFloatChargingVoltag") sd=[0x50,0x42,0x46,0x54] sd1=sd.insertAt(4,INPUT) slsd(sd1) END IF(skey=="parallelShutdownBatterySOC") sd=[0x50,0x44,0x53,0x44,0x53] sd1=sd.insertAt(5,INPUT) slsd(sd1) END IF(skey=="parallelShutdownBatteryVol") sd=[0x50,0x44,0x53,0x44,0x56] sd1=sd.insertAt(5,INPUT) slsd(sd1) END IF(skey=="secondOutputDischargeTimeS") sd=[0x50,0x44,0x44,0x43,0x47,0x54] sd1=sd.insertAt(6,INPUT) slsd(sd1) END IF(skey=="inverterStartupBatteryCapa") sd=[0x42,0x4D,0x53,0x53,0x52,0x43] sd1=sd.insertAt(6,INPUT) slsd(sd1) END RETURN(FALSE) END TIMER request 1000 IF(r_stop==0) IF(sc==0) sc=1 SEND(UART,uart0,[0x48,0x53,0x54,0x53,0x0D]) END IF(sc==2) sc=3 SEND(UART,uart0,[0x48,0x47,0x52,0x49,0x44,0x0D]) END IF(sc==4) sc=5 SEND(UART,uart0,[0x48,0x4F,0x50,0x0D]) END IF(sc==6) sc=7 SEND(UART,uart0,[0x48,0x42,0x41,0x54,0x0D]) END IF(sc==8) sc=9 SEND(UART,uart0,[0x48,0x50,0x56,0x0D]) END IF(sc==10) sc=11 SEND(UART,uart0,[0x48,0x54,0x45,0x4D,0x50,0x0D]) END IF(sc==12) sc=13 SEND(UART,uart0,[0x48,0x45,0x45,0x50,0x31,0x0D]) END IF(sc==14) sc=15 SEND(UART,uart0,[0x48,0x45,0x45,0x50,0x31,0x0D]) END IF(sc==16) sc=17 SEND(UART,uart0,[0x48,0x45,0x45,0x50,0x31,0x0D]) END IF(sc==18) sc=19 SEND(UART,uart0,[0x48,0x47,0x45,0x4E,0x0D]) END IF(sc==20) sc=21 SEND(UART,uart0,[0x48,0x45,0x45,0x50,0x32,0x0D]) END IF(sc==22) sc=23 SEND(UART,uart0,[0x48,0x45,0x45,0x50,0x32,0x0D]) END IF(sc==24) sc=25 SEND(UART,uart0,[0x48,0x42,0x4D,0x53,0x32,0x0D]) END IF(sc==26) sc=27 SEND(UART,uart0,[0x48,0x42,0x4D,0x53,0x33,0x0D]) END IF(sc==28) sc=29 SEND(UART,uart0,[0x48,0x42,0x4D,0x53,0x33,0x0D]) END END END