BMS_CANx_Tools.h 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. //##############################################################################
  2. //
  3. // FILE: BMS_CANx_Tools.h
  4. //
  5. // TITLE: Header for BMS_CANx_Tools.c
  6. //
  7. //Modified for Use in RCT Project
  8. //##############################################################################
  9. //
  10. //==============================================================================
  11. // Change History:
  12. //==============================================================================
  13. // Datum: | Name | Version:| Change / Cause: | No
  14. //------------------------------------------------------------------------------
  15. // | | | | 002
  16. //------------------------------------------------------------------------------
  17. // 01.08.13 | VR | 1.1 | IAA Project | 001
  18. //------------------------------------------------------------------------------
  19. // 20.04.12 | TM | 1.0 | New Build | 000
  20. //==============================================================================
  21. //==============================================================================
  22. // Comment Change / Cause:
  23. //==============================================================================
  24. // Change: 003 // 003
  25. //----------------------
  26. //
  27. //
  28. //==============================================================================
  29. // Change: 002 // 002
  30. //----------------------
  31. //
  32. //
  33. //==============================================================================
  34. // Change: 001 // 001
  35. //----------------------
  36. //
  37. //
  38. //==============================================================================
  39. #ifndef __CAN_MASTER_H__
  40. #define __CAN_MASTER_H__
  41. #ifdef __cplusplus
  42. extern "C" {
  43. #endif
  44. // ***** External **************************************************************
  45. //extern CAN_MAILBOX CAN_TxMB_BalancingCtrl_100;
  46. //
  47. //extern CAN_MAILBOX CAN_TxMB_NLG5_CTL_618;
  48. //
  49. //extern CAN_MAILBOX CAN_TxMB_BMU_DICO_18FF9F1E;
  50. //extern CAN_MAILBOX CAN_TxMB_BMU1_EVCU1_18FF9E1E;
  51. //extern CAN_MAILBOX CAN_RxMB_DICO1_EVCU_18FF8F03;
  52. //extern CAN_MAILBOX CAN_RxMB_DICO2_EVCU_18FF8D03;
  53. //extern CAN_MAILBOX CAN_RxMB_EVCU1_BMU_0CFF3D27;
  54. extern MASTER_X_BMS_TELEGRAM TelegramTxContainer[16];
  55. extern CAN_MAILBOX* MB_Container[16];
  56. // Mailboxes for Automatic CAN Id Initialization
  57. extern CAN_MAILBOX CAN_TxMB_System300;
  58. extern CAN_MAILBOX CAN_TxMB_System30A;
  59. extern CAN_MAILBOX CAN_TxMB_Master0A;
  60. // ***** Funktion Prototypes ***************************************************
  61. uint16_t CAN_Tx_Balance ( uint16_t i);
  62. void check_and_save_Voltage ( CAN_MAILBOX *p_MBox, uint16_t SlaveNr, uint16_t SlaveOffset );
  63. void check_and_save_Status ( CAN_MAILBOX *p_MBox, uint16_t SlaveNr );
  64. void check_and_save_UI ( CAN_MAILBOX *p_MBox );
  65. void check_and_save_Temperature ( CAN_MAILBOX *p_MBox, uint16_t SlaveNr, uint16_t SlaveOffset );
  66. int16_t check_Voltage_Border ( uint16_t Row, uint16_t Index );
  67. int16_t check_Status_Border ( uint16_t Row, uint16_t Index );
  68. int16_t check_UI_Border ( uint16_t Row );
  69. int16_t check_Temperature_Border ( uint16_t Row, uint16_t Index );
  70. uint16_t Sum_Cell_Voltage ( uint16_t Row );
  71. uint16_t Test_MAX_LOAD_CELL_VOLTAGE ( uint16_t Row );
  72. uint16_t Search_MIN_CELL_VOLTAGE ( uint16_t Row );
  73. uint16_t CAN_Tx_NLG5_CTL_618 ( void );
  74. void check_and_save_NLG5_ST ( CAN_MAILBOX *p_MBox );
  75. uint16_t CAN_Tx_BMU_DICO ( void );
  76. uint16_t CAN_Tx_BMU1_EVCU1 ( void );
  77. uint16_t check_and_save_DICO1_EVCU ( CAN_MAILBOX *p_MBox );
  78. uint16_t check_and_save_DICO2_EVCU ( CAN_MAILBOX *p_MBox );
  79. uint16_t check_and_save_EVCU1_BMU ( CAN_MAILBOX *p_MBox );
  80. uint16_t CAN_Rx_readout_Mailbox(CAN_MAILBOX *p_MBox,uint8_t *eight_byte_field);
  81. // ***** Global Prototypes *****************************************************
  82. uint16_t CAN0_init (void);
  83. uint16_t CAN0_rx_test (void);
  84. uint16_t CAN0_tx_test (uint8_t slave_nr,uint8_t *four_byte_field);
  85. //uint16_t CAN0_tx_send_request_telegram (uint8_t slaveNr);
  86. uint16_t CAN0_tx_send_request_telegram (BMS_CAN0_SLAVE_t* Slave,uint8_t MasterAlive);
  87. uint16_t CAN0_init_telegrams (MASTER_X_BMS_TELEGRAM* telegram_ptr,uint8_t nrOfSlaves);
  88. uint16_t CAN0_is_state_active (uint8_t* activeSlaves,uint8_t nrOfActiveSlaves,uint8_t nrOfCurrentSlave);
  89. uint8_t CAN0_check_if_UI_Board_rec(BMS_CAN0_SLAVE_t* Slave,BMS_CAN0_UI_t* UI_Board);
  90. uint16_t CAN0_check_if_slave_rec (BMS_CAN0_SLAVE_t* Slave);
  91. uint16_t saveSlaveX0_Master_telegram (BMS_CAN0_SLAVE_t* Slave);
  92. uint16_t saveSlaveX1_Master_telegram (BMS_CAN0_SLAVE_t* Slave);
  93. uint16_t saveSlaveX2_Master_telegram (BMS_CAN0_SLAVE_t* Slave);
  94. uint16_t saveSlaveX3_Master_telegram (BMS_CAN0_SLAVE_t* Slave);
  95. uint16_t saveSlaveX4_Master_telegram (BMS_CAN0_SLAVE_t* Slave);
  96. uint16_t saveSlaveX5_Master_telegram (BMS_CAN0_SLAVE_t* Slave);
  97. uint16_t saveSlaveX6_Master_telegram (BMS_CAN0_SLAVE_t* Slave);
  98. uint16_t saveSlaveUI_Master_telegram(BMS_CAN0_SLAVE_t* Slave,BMS_CAN0_UI_t* UI_Board);
  99. uint16_t saveSlaveX7_Master_telegram (BMS_CAN0_SLAVE_t* Slave);
  100. uint16_t CAN0_DEBUG_data_check_if_slave_rec(BMS_CAN0_SLAVE_t* Slave,BMS_CAN0_SLAVE_t* DummySlave);
  101. uint8_t CAN0_DEBUG_data_check_if_UI_Board_rec(BMS_CAN0_SLAVE_t* Slave,BMS_CAN0_SLAVE_t* DummySlave,BMS_CAN0_UI_t* UI_Board,BMS_CAN0_UI_t* Dummy_UI_Board);
  102. uint16_t CAN0_DEBUG_slave_check_if_slave_rec(BMS_CAN0_SLAVE_t* Slave,BMS_CAN0_SLAVE_t* DummySlave);
  103. uint8_t CAN0_DEBUG_slave_check_if_UI_Board_rec(BMS_CAN0_SLAVE_t* Slave,BMS_CAN0_SLAVE_t* DummySlave,BMS_CAN0_UI_t* UI_Board,BMS_CAN0_UI_t* Dummy_UI_Board);
  104. uint16_t CAN0_update (void);
  105. uint16_t CAN1_init (void);
  106. uint16_t CAN1_update (void);
  107. int16_t CAN1_tx_Data_to_Inverter (uint32_t timestamp,BMS_CAN1_INVERTER_TX* data);
  108. uint16_t CAN1_init_tx_structure (BMS_CAN1_INVERTER_TX* tx_struct);
  109. int16_t CAN1_send_request_telegram(uint32_t requestId) ;
  110. uint16_t CAN1_wait_for_response(float* value);
  111. uint32_t delay_CAN1_ms(uint32_t timestamp,uint32_t delay_ms);
  112. uint16_t CAN_Tx_MasterX_BMS(MASTER_CAN0_STRUCT_t* s, uint8_t SlaveNummer, uint8_t MasterAlive, uint8_t SetMode, uint32_t Balancer );
  113. uint16_t CAN_Tx_System300( uint16_t IDSEARCH );
  114. uint16_t CAN_Tx_MasterXA();
  115. uint32_t CAN0_check_serial_nr_rec_Can_init(MASTER_CAN0_STRUCT_t*s ,uint8_t SlaveNr);
  116. uint16_t CAN_Tx_System30A( uint8_t *pSERNr );
  117. #ifdef __cplusplus
  118. }
  119. #endif
  120. #endif /* ifndef*/
  121. // ***** End BMS_CANx_Tools.h **************************************************