Browse Source

2020-06-30 / Alston Lin

Actions
1. Add get module output command which is floating

Files
1. As follow commit history
Alston 4 years ago
parent
commit
6183d92fd2
2 changed files with 87 additions and 15 deletions
  1. 62 0
      EVSE/Modularization/Infypwr_PsuCommObj.c
  2. 25 15
      EVSE/Modularization/Infypwr_PsuCommObj.h

+ 62 - 0
EVSE/Modularization/Infypwr_PsuCommObj.c

@@ -108,6 +108,11 @@ void RefreshGetOutput(void *func)
 	return_get_output = func;
 }
 
+void RefreshGetOutputF(void *func)
+{
+	return_get_output_float = func;
+}
+
 void RefreshFanInfo(void *func)
 {
 	return_fanspeed_info = func;
@@ -269,7 +274,20 @@ void ReceiveDataFromCanBus()
 					//PRINTF_LIB_FUNC("address = %d, outputVol = %d, outputCur = %d \n", address, outputVol, outputCur);
 				}
 					break;
+				case INFYPWR_GROUP_SHIFT | MODULE_OUTPUT_VOL_CUR_FLOAT:
+				{
+					group = frame.can_id & 0x000000FF;
 
+					byte vol[4], cur[4];
+					memcpy(vol, frame.data, 4);
+					memcpy(cur, frame.data + 4, 4);
+
+					float _Vol = IEEE_754_to_float(vol);
+					float _Cur = IEEE_754_to_float(cur);
+
+					return_get_output_float(group, _Vol, _Cur);
+				}
+					break;
 				case INFYPWR_GROUP_SHIFT | MODULE_IAVAILABLE:
 				case MODULE_IAVAILABLE:
 				{
@@ -703,3 +721,47 @@ void GetModuleOutput(byte group)
 	SendCmdToPsu(cmd, data, sizeof(data));
 }
 
+void GetModuleOutputF(byte group)
+{
+	byte data[8];
+	uint cmd = INFYPWR_CMD | MODULE_OUTPUT_VOL_CUR_FLOAT;
+
+	memset(data, 0x00, ARRAY_SIZE(data));
+
+	if (group == SYSTEM_CMD)
+		cmd |= INFYPWR_BROADCAST | INFYPWR_DEFAULT;
+	else
+		cmd |= INFYPWR_GROUP_SHIFT | (group << 8) | INFYPWR_DEFAULT;
+	SendCmdToPsu(cmd, data, sizeof(data));
+}
+
+/**********************************************************************************/
+/***                                                                            ***/
+/***                                 Upgrate                                    ***/
+/***                                                                            ***/
+/**********************************************************************************/
+void ChangePsuBaudrate(short baudrate)
+{
+	byte data[8];
+	uint cmd = CHANGE_BAUDRATE;  //0x180100E5
+
+	memset(data, 0x00, ARRAY_SIZE(data));
+
+	data[0] = 0x11;
+	data[1] = 0x26;
+
+	if (baudrate == 125)
+		data[7] = 0xA0;
+	else if (baudrate == 250)
+		data[7] = 0xA1;
+	else if (baudrate == 500)
+		data[7] = 0xA2;
+
+	cmd |= INFYPWR_BROADCAST | INFYPWR_DEFAULT;
+	SendCmdToPsu(cmd, data, sizeof(data));
+}
+
+
+
+
+

+ 25 - 15
EVSE/Modularization/Infypwr_PsuCommObj.h

@@ -91,25 +91,28 @@ enum PSU_SET_CMD
 	SLEEP_MODE =  	            0x00990000,		// 當 SWITCH POWER 打開時,可透過該指令讓模塊休眠 (風扇會停)
     SWITCH_POWER = 	            0x009A0000,		// 打開,則模塊依照設定的輸出功率輸出
 	PRESENT_OUT_VOL = 			0x009B0000,
-	/*Test mode used*/
+	/*Ver : 9.06 used*/
 	TEST_PRESENT_OUT = 			0x180100E5,
+	/*Upgrade*/
+	CHANGE_BAUDRATE = 			0x028F0000
 };
 
 enum PSU_GET_CMD
 {
-	MODULE_COUNT = 	            0x00820000,		// 取得模塊數量
-	STATUS = 					0x00840000,		// 取得溫度、狀態
-	MODULE_INPUT = 				0x00860000,		// 取得三向輸入電壓
-	MODULE_VER = 				0x00870000,		// 取得版號
-	MODULE_OUTPUT_VOL_CUR = 	0x00880000,		// 取得當前輸出電壓電流
-	MODULE_CAP = 				0x008A0000,		// 取得當前 Group 的最大電壓、最大電流、最小電壓、額定功率
-	MODULE_BARCODE =			0x008B0000,		// 取得 BarCode
-	MODULE_IAVAILABLE =			0x008C0000,		// 取得實際模塊可輸出的電流能力 (降載)
-	MODULE_MIS_INFO = 			0x008E0000,		// 取得模塊資訊 (Tdc、Tpfc、風扇速度)
-	/*Test mode used*/
-	AUTO_OUTPUT_TEMP = 			0x00010000,
-	AUTO_MODULE_STATUS = 		0x00020000,
-	AUTO_MODULE_INPUT = 		0x00030000,
+	MODULE_OUTPUT_VOL_CUR_FLOAT = 	0x00810000,		// 取得當前輸出電壓電流 (float)
+	MODULE_COUNT = 	            	0x00820000,		// 取得模塊數量
+	STATUS = 						0x00840000,		// 取得溫度、狀態
+	MODULE_INPUT = 					0x00860000,		// 取得三向輸入電壓
+	MODULE_VER = 					0x00870000,		// 取得版號
+	MODULE_OUTPUT_VOL_CUR = 		0x00880000,		// 取得當前輸出電壓電流
+	MODULE_CAP = 					0x008A0000,		// 取得當前 Group 的最大電壓、最大電流、最小電壓、額定功率
+	MODULE_BARCODE =				0x008B0000,		// 取得 BarCode
+	MODULE_IAVAILABLE =				0x008C0000,		// 取得實際模塊可輸出的電流能力 (降載)
+	MODULE_MIS_INFO = 				0x008E0000,		// 取得模塊資訊 (Tdc、Tpfc、風扇速度)
+	/*Ver : 9.06 used*/
+	AUTO_OUTPUT_TEMP = 				0x00010000,
+	AUTO_MODULE_STATUS = 			0x00020000,
+	AUTO_MODULE_INPUT = 			0x00030000,
 };
 
 union FloatingPointIEEE754
@@ -134,7 +137,7 @@ void PresentOutputVol(byte group, int voltage, int current);
 void FanNoiseInfo(byte group, byte value);
 void SetWalkInConfig(byte group, byte enable, byte sec);
 
-/*Test mode used*/
+/*Ver : 9.06 used*/
 void SetDirModulePresentOutput(byte group, int voltage, int current, byte _switch);
 /*Get Cmd*/
 void GetStatus(byte group);
@@ -146,6 +149,10 @@ void GetModuleBarCode(byte group);
 void GetModuleInput(byte group);
 void GetModuleIavailable(byte group);
 void GetModuleOutput(byte group);
+void GetModuleOutputF(byte group);
+
+/*Upgrade*/
+void ChangePsuBaudrate(short baudrate);
 
 /* Callback Function */
 void RefreshStatus(void *func);
@@ -166,6 +173,9 @@ void (*return_input_vol)(byte address, unsigned short vol1, unsigned short vol2,
 void RefreshGetOutput(void *func);
 void (*return_get_output)(byte address, unsigned short outVol, unsigned short outCur);
 
+void RefreshGetOutputF(void *func);
+void (*return_get_output_float)(byte group, float outVol, float outCur);
+
 void RefreshFanInfo(void *func);
 void (*return_fanspeed_info)(byte address, unsigned int fanSpeed);