|
@@ -492,6 +492,25 @@ void ReceiveDataFromCanBus()
|
|
|
//PRINTF_LIB_FUNC("address = %d, abVol = %d, bcVol = %d, caVol = %d \n", address, abVol, bcVol, caVol);
|
|
|
}
|
|
|
break;
|
|
|
+ case PSU_RCmd_ModuleOutputVolCur_F:
|
|
|
+ {
|
|
|
+ if (!colFinished)
|
|
|
+ break;
|
|
|
+
|
|
|
+ byte vol[4], cur[4];
|
|
|
+
|
|
|
+ memcpy(vol, frame.data, 4);
|
|
|
+ memcpy(cur, frame.data + 4, 4);
|
|
|
+
|
|
|
+ if (!GetRealIndexByGroup(&address))
|
|
|
+ break;
|
|
|
+
|
|
|
+ float _Vol = IEEE_754_to_float(vol);
|
|
|
+ float _Cur = IEEE_754_to_float(cur);
|
|
|
+
|
|
|
+ return_get_output(address, _Vol, _Cur);
|
|
|
+ }
|
|
|
+ break;
|
|
|
default:
|
|
|
break;
|
|
|
}
|
|
@@ -833,6 +852,91 @@ void SetDipSwitchMode()
|
|
|
|
|
|
SendCmdToPsu(PwrFrameMsg.PwrMessage, data, sizeof(data));
|
|
|
}
|
|
|
+
|
|
|
+void PresentSingleOutput(byte moduleIndex, int voltage, int current)
|
|
|
+{
|
|
|
+ byte data[8];
|
|
|
+ PwrFrame PwrFrameMsg;
|
|
|
+ PwrFrameMsg.PwrMessage = 0;
|
|
|
+ PwrFrameMsg.InfyBits.CmdValue = PSU_WCmd_ModuleSetOutput;
|
|
|
+
|
|
|
+ int Vol = voltage * 100;
|
|
|
+ int Cur = current * 100;
|
|
|
+
|
|
|
+ memset(data, 0x00, ARRAY_SIZE(data));
|
|
|
+
|
|
|
+ // 輸出電壓
|
|
|
+ data[0] = (Vol >> 24) & 0xFF;
|
|
|
+ data[1] = (Vol >> 16) & 0xFF;
|
|
|
+ data[2] = (Vol >> 8) & 0xFF;
|
|
|
+ data[3] = Vol & 0xFF;
|
|
|
+ // 輸出電流
|
|
|
+ data[4] = (Cur >> 24) & 0xFF;
|
|
|
+ data[5] = (Cur >> 16) & 0xFF;
|
|
|
+ data[6] = (Cur >> 8) & 0xFF;
|
|
|
+ data[7] = Cur & 0xFF;
|
|
|
+
|
|
|
+ PwrFrameMsg.InfyBits.DeviceValue = DEVICE_NO_SINGLE_MODULE;
|
|
|
+ PwrFrameMsg.InfyBits.DestinationAddress = moduleIndex;
|
|
|
+ PwrFrameMsg.InfyBits.SourceAddress = INFY_ADD_CSU;
|
|
|
+
|
|
|
+ SendCmdToPsu(PwrFrameMsg.PwrMessage, data, sizeof(data));
|
|
|
+}
|
|
|
+
|
|
|
+void SwitchSinglePower(byte moduleIndex, byte value)
|
|
|
+{
|
|
|
+ byte data[8];
|
|
|
+ PwrFrame PwrFrameMsg;
|
|
|
+ PwrFrameMsg.PwrMessage = 0;
|
|
|
+ PwrFrameMsg.InfyBits.CmdValue = PSU_WCmd_ModulePowerOnOff;
|
|
|
+
|
|
|
+ memset(data, 0x00, ARRAY_SIZE(data));
|
|
|
+ // 1 : 關機
|
|
|
+ // 0 : 開機
|
|
|
+ data[0] = value;
|
|
|
+
|
|
|
+ PwrFrameMsg.InfyBits.DeviceValue = DEVICE_NO_SINGLE_MODULE;
|
|
|
+ PwrFrameMsg.InfyBits.DestinationAddress = moduleIndex;
|
|
|
+ PwrFrameMsg.InfyBits.SourceAddress = INFY_ADD_CSU;
|
|
|
+
|
|
|
+ SendCmdToPsu(PwrFrameMsg.PwrMessage, data, sizeof(data));
|
|
|
+}
|
|
|
+
|
|
|
+void FlashSingleLed(byte moduleIndex, byte value)
|
|
|
+{
|
|
|
+ byte data[8];
|
|
|
+ PwrFrame PwrFrameMsg;
|
|
|
+ PwrFrameMsg.PwrMessage = 0;
|
|
|
+ PwrFrameMsg.InfyBits.CmdValue = PSU_WCmd_ModuleFlashLed;
|
|
|
+
|
|
|
+ memset(data, 0x00, ARRAY_SIZE(data));
|
|
|
+ // 1 : 閃爍
|
|
|
+ // 0 : 正常
|
|
|
+ data[0] = value;
|
|
|
+
|
|
|
+ PwrFrameMsg.InfyBits.DeviceValue = DEVICE_NO_SINGLE_MODULE;
|
|
|
+ PwrFrameMsg.InfyBits.DestinationAddress = moduleIndex;
|
|
|
+ PwrFrameMsg.InfyBits.SourceAddress = INFY_ADD_CSU;
|
|
|
+
|
|
|
+ SendCmdToPsu(PwrFrameMsg.PwrMessage, data, sizeof(data));
|
|
|
+}
|
|
|
+
|
|
|
+void GetSingleModuleOutputF(byte moduleIndex)
|
|
|
+{
|
|
|
+ byte data[8];
|
|
|
+ PwrFrame PwrFrameMsg;
|
|
|
+ PwrFrameMsg.PwrMessage = 0;
|
|
|
+ PwrFrameMsg.InfyBits.CmdValue = PSU_RCmd_ModuleOutputVolCur_F;
|
|
|
+
|
|
|
+ memset(data, 0x00, ARRAY_SIZE(data));
|
|
|
+
|
|
|
+ PwrFrameMsg.InfyBits.DeviceValue = DEVICE_NO_SINGLE_MODULE;
|
|
|
+ PwrFrameMsg.InfyBits.DestinationAddress = moduleIndex;
|
|
|
+ PwrFrameMsg.InfyBits.SourceAddress = INFY_ADD_CSU;
|
|
|
+
|
|
|
+ SendCmdToPsu(PwrFrameMsg.PwrMessage, data, sizeof(data));
|
|
|
+}
|
|
|
+
|
|
|
/**********************************************************************************/
|
|
|
/*** ***/
|
|
|
/*** Get ***/
|