?? 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 + -