-
Notifications
You must be signed in to change notification settings - Fork 161
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
3 changed files
with
126 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
81 changes: 81 additions & 0 deletions
81
Software/src/inverter/SERIAL-LINK-TRANSMITTER-INVERTER.cpp
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,81 @@ | ||
//SERIAL-LINK-TRANSMITTER-INVERTER.cpp | ||
|
||
#include "SERIAL-LINK-TRANSMITTER-INVERTER.h" | ||
|
||
/* | ||
* SerialDataLink | ||
* txid=1, rxid=0 gives this the startup transmit priority_queue | ||
* Will transmit max 16 int variable - receive none | ||
*/ | ||
|
||
#define BATTERY_SEND_NUM_VARIABLES 16 | ||
#define BATTERY_RECV_NUM_VARIABLES 3 //--- comment out if nothing to receive | ||
|
||
#ifdef BATTERY_RECV_NUM_VARIABLES | ||
const uint8_t receivingNumVariables = BATTERY_RECV_NUM_VARIABLES; | ||
#else | ||
const uint8_t receivingNumVariables = 0; | ||
#endif | ||
|
||
// txid,rxid,num_tx,num_rx | ||
SerialDataLink dataLinkTransmit(Serial2, 0x01, 0, BATTERY_SEND_NUM_VARIABLES, | ||
receivingNumVariables ); | ||
|
||
|
||
void _getData() | ||
{ | ||
/* | ||
var1 = dataLinkTransmit.getReceivedData(0); | ||
var2 = dataLinkTransmit.getReceivedData(1); | ||
var3 = dataLinkTransmit.getReceivedData(2); | ||
*/ | ||
} | ||
|
||
|
||
void manageSerialLinkTransmitter() | ||
{ | ||
static bool initLink=false; | ||
static unsigned long updateTime = 0; | ||
|
||
dataLinkTransmit.run(); | ||
|
||
#ifdef BATTERY_RECV_NUM_VARIABLES | ||
bool readError = dataLinkTransmit.checkReadError(true); // check for error & clear error flag | ||
if (dataLinkTransmit.checkNewData(true)) // true = clear Flag | ||
{ | ||
_getData(); | ||
} | ||
#endif | ||
|
||
if (millis() - updateTime > 100) | ||
{ | ||
updateTime = millis(); | ||
if (! initLink) | ||
{ | ||
initLink = true; | ||
// sends variables every 5000mS even if no change | ||
dataLinkTransmit.setUpdateInterval(5000); | ||
} | ||
bool sendError = dataLinkTransmit.checkTransmissionError(true); | ||
// todo some error management - LEDS etc | ||
|
||
dataLinkTransmit.updateData(0,SOC); | ||
dataLinkTransmit.updateData(1,StateOfHealth); | ||
dataLinkTransmit.updateData(2,battery_voltage); | ||
dataLinkTransmit.updateData(3,battery_current); | ||
dataLinkTransmit.updateData(4,capacity_Wh); | ||
dataLinkTransmit.updateData(5,remaining_capacity_Wh); | ||
dataLinkTransmit.updateData(6,max_target_discharge_power); | ||
dataLinkTransmit.updateData(7,max_target_charge_power); | ||
dataLinkTransmit.updateData(8,bms_status); | ||
dataLinkTransmit.updateData(9,bms_char_dis_status); | ||
dataLinkTransmit.updateData(10,stat_batt_power); | ||
dataLinkTransmit.updateData(11,temperature_min); | ||
dataLinkTransmit.updateData(12,temperature_max); | ||
dataLinkTransmit.updateData(13,cell_max_voltage); | ||
dataLinkTransmit.updateData(14,cell_min_voltage); | ||
dataLinkTransmit.updateData(15,batteryAllowsContactorClosing); | ||
} | ||
|
||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
//SERIAL-LINK-TRANSMITTER-INVERTER.h | ||
|
||
#ifndef SERIAL_LINK_TRANSMITTER_INVERTER_H | ||
#define SERIAL_LINK_TRANSMITTER_INVERTER_H | ||
|
||
|
||
#include <Arduino.h> | ||
#include "../../USER_SETTINGS.h" | ||
#include "../lib/SerialDataLink/SerialDataLink.h" | ||
|
||
|
||
// These parameters need to be mapped for the inverter | ||
extern uint16_t SOC; //SOC%, 0-100.00 (0-10000) | ||
extern uint16_t StateOfHealth; //SOH%, 0-100.00 (0-10000) | ||
extern uint16_t battery_voltage; //V+1, 0-500.0 (0-5000) | ||
extern uint16_t battery_current; //A+1, Goes thru convert2unsignedint16 function (5.0A = 50, -5.0A = 65485) | ||
extern uint16_t capacity_Wh; //Wh, 0-60000 | ||
extern uint16_t remaining_capacity_Wh; //Wh, 0-60000 | ||
extern uint16_t max_target_discharge_power; //W, 0-60000 | ||
extern uint16_t max_target_charge_power; //W, 0-60000 | ||
extern uint16_t bms_status; //Enum, 0-5 | ||
extern uint16_t bms_char_dis_status; //Enum, 0-2 | ||
extern uint16_t stat_batt_power; //W, Goes thru convert2unsignedint16 function (5W = 5, -5W = 65530) | ||
extern uint16_t temperature_min; //C+1, Goes thru convert2unsignedint16 function (15.0C = 150, -15.0C = 65385) | ||
extern uint16_t temperature_max; //C+1, Goes thru convert2unsignedint16 function (15.0C = 150, -15.0C = 65385) | ||
extern uint16_t cell_max_voltage; //mV, 0-4350 | ||
extern uint16_t cell_min_voltage; //mV, 0-4350 | ||
extern bool batteryAllowsContactorClosing; //Bool, 1=true, 0=false | ||
|
||
|
||
|
||
void manageSerialLinkTransmitter(); | ||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
#endif |