📄 alm.lst
字号:
340 4 if(i == 5)C_06_UV_Alarm = 0;
341 4 if(i == 6)C_07_UV_Alarm = 0;
342 4 if(i == 7)C_08_UV_Alarm = 0;
343 4 if(i == 8)C_09_UV_Alarm = 0;
344 4 if(i == 9)C_10_UV_Alarm = 0;
345 4 if(i == 10)C_11_UV_Alarm = 0;
346 4 if(i == 11)C_12_UV_Alarm = 0;
347 4 if(i == 12)C_13_UV_Alarm = 0;
348 4 if(i == 13)C_14_UV_Alarm = 0;
349 4 if(i == 14)C_15_UV_Alarm = 0;
350 4 }
351 3 }
352 2 TV += buf[i]; //计算总电压
353 2 }
354 1 if(WorkMode == ChargeStep)
355 1 {
356 2 C_TV_UV_Alarm = 0; //消除电池组欠压告警
357 2 Pack_D_OC_Alarm = 0; //消除放电过流告警
358 2 if(TV > ModeSysConfig[2])C_TV_OV_Alarm = 1; //PackOV产生电池组过压告警
359 2 if(ChargeCurrent > ModeSysConfig[4])Pack_C_OC_Alarm = 0; //ChargeOC产生充电过流告警
360 2 }
361 1 else if(WorkMode == DisChargeStep)
362 1 {
363 2 C_TV_OV_Alarm = 0; //消除电池组过压告警
364 2 Pack_C_OC_Alarm = 0; //消除充电过流告警
365 2 if(TV < ModeSysConfig[3])C_TV_UV_Alarm = 1; //PackUV放电欠压告警
C51 COMPILER V7.06 ALM 10/30/2008 13:20:05 PAGE 7
366 2 if(DisChargeCurrent > ModeSysConfig[5])Pack_D_OC_Alarm = 0; //DisChargeOC产生放电过流告警
367 2 }
368 1 if(TV > 50000) //100%电量指示灯全亮
369 1 {
370 2 SocLed0 = 0; SocLed2 = 0;
371 2 SocLed1 = 0; SocLed3 = 0;
372 2 }
373 1 else if(TV > 48000) //75%
374 1 {
375 2 SocLed0 = 0; SocLed2 = 0;
376 2 SocLed1 = 0; SocLed3 = 1;
377 2 }
378 1 else if(TV > 46000) //50%
379 1 {
380 2 SocLed0 = 0; SocLed2 = 1;
381 2 SocLed1 = 0; SocLed3 = 1;
382 2 }
383 1 else if(TV > 45000) //25%
384 1 {
385 2 SocLed0 = 0; SocLed2 = 1;
386 2 SocLed1 = 1; SocLed3 = 1;
387 2 }
388 1 if(TV == NoVoltage) //判断电压传感器失效
389 1 {
390 2 VSensorBroken = 1;
391 2 }
392 1 else
393 1 {
394 2 VSensorBroken = 0;
395 2 }
396 1 }
397
398 /*********************************************************************************************************
399 ** 函数名称: void ChargeAndDisChargeEnable(uint8 WorkMode)
400 ** 功能描述:
401 ** 输 入: 无
402 ** 输 出: 无
403 ** 全局变量:
404 ** 调用模块:
405 **
406 ** 作 者: 李伟
407 ** 日 期: 2008年12月15日
408 **-------------------------------------------------------------------------------------------------------
409 ** 修 改 人:
410 ** 日 期:
411 **-------------------------------------------------------------------------------------------------------
412 ********************************************************************************************************/
413 void ChargeAndDisChargeEnable(uint8 WorkMode)
414 {
415 1 if(WorkMode == ChargeStep)
416 1 {
417 2 if(((AlarmVh0 & 0xFF) != 0x00) //1~ 8单只充电过压告警存在
418 2 || ((AlarmVh1 & 0xFF) != 0x00) //9~15单只充电过压、16(为组)充电过压告警存在
419 2 || ((AlarmScCTh & 0xFF) != 0x00) //1~15单只充电过温告警存在
420 2 || ((AlarmScCTl & 0xFF) != 0x00) //1~15单只充电欠温告警存在
421 2 || ((AlarmET & 0x1D) != 0x00)) //组充电过流、环境欠温、环境过温、组充电过温
422 2 {
423 3 ChargeEn = ChargeDisable; //禁止充电
424 3 ArmLed = AlarmLedON; //点亮告警灯
425 3 }
426 2 else
427 2 {
C51 COMPILER V7.06 ALM 10/30/2008 13:20:05 PAGE 8
428 3 ChargeEn = ChargeEnable; //使能充电
429 3 DisChargeEn = DisChargeEnable;//使能放电
430 3 ArmLed = AlarmLedOFF; //熄灭告警灯
431 3 }
432 2 }
433 1 else if(WorkMode == DisChargeStep)
434 1 {
435 2 if(((AlarmVl0 & 0xFF) != 0x00) //1~ 8单只放电欠压告警存在
436 2 || ((AlarmVl1 & 0xFF) != 0x00) //9~15单只放电欠压、16(为组)放电欠压告警存在
437 2 || ((AlarmSDcTh & 0xFF) != 0x00) //1~15单只放电过温告警存在
438 2 || ((AlarmSDcTl & 0xFF) != 0x00) //1~15单只放电欠温告警存在
439 2 || ((AlarmET & 0x2D) != 0x00)) //组放电过流、环境欠温、环境过温、组放电过温
440 2 {
441 3 DisChargeEn = DisChargeDisable;//禁止放电
442 3 ArmLed = AlarmLedON; //点亮告警灯
443 3 }
444 2 else
445 2 {
446 3 DisChargeEn = DisChargeEnable; //使能放电
447 3 ChargeEn = ChargeEnable; //使能充电
448 3 ArmLed = AlarmLedOFF; //熄灭告警灯
449 3 }
450 2 }
451 1 ComAlarmET = AlarmET; //综合告警
452 1 ComAlarmVh0 = AlarmVh0; //1~ 8只电池过压告警
453 1 ComAlarmVh1 = AlarmVh1; //9~15只电池过压告警
454 1 ComAlarmVl0 = AlarmVl0; //1~ 8只电池欠压告警
455 1 ComAlarmVl1 = AlarmVl1; //9~15只电池欠压告警
456 1 ComAlarmScCTh = AlarmScCTh; //1~15只电池充电过温
457 1 ComAlarmScCTl = AlarmScCTl; //1~15只电池充电欠温
458 1 ComAlarmSDcTh = AlarmSDcTh; //1~15只电池放电过温
459 1 ComAlarmSDcTl = AlarmSDcTl; //1~15只电池放电欠温
460 1 }
461 /*********************************************************************************************************
462 ** 函数名称: uint8 WorkModeJudge(void)
463 ** 功能描述: 工作模式判断
464 ** 输 入: 无
465 ** 输 出: 无
466 ** 全局变量:
467 ** 调用模块:
468 **
469 ** 作 者: 李伟
470 ** 日 期: 2008年12月09日
471 **-------------------------------------------------------------------------------------------------------
472 ** 修 改 人:
473 ** 日 期:
474 **-------------------------------------------------------------------------------------------------------
475 ********************************************************************************************************/
476 uint8 WorkModeJudge(void)
477 {
478 1 uint8 workmode;
479 1 if(ChargeCurrent > 0 && DisChargeCurrent == 0)
480 1 {
481 2 workmode = ChargeStep;
482 2 }
483 1 if(ChargeCurrent == 0 && DisChargeCurrent > 0)
484 1 {
485 2 workmode = DisChargeStep;
486 2 }
487 1 if((ChargeCurrent > 0) && (DisChargeCurrent > 0))//电流传感器失效告警
488 1 {
489 2 CurrentSensorBr = 1;
C51 COMPILER V7.06 ALM 10/30/2008 13:20:05 PAGE 9
490 2 }
491 1 else CurrentSensorBr= 0;
492 1 return workmode;
493 1 }
494 /********************************************************************************************************
495 End of file
496 ********************************************************************************************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 2040 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 11 20
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -