Closed LewisPye closed 2 months ago
Below email dialogue explains the extent of the issue.
From: Matthew Scales︱Magnus <[mjs@magnusmarine.com](mailto:mjs@magnusmarine.com)>
Sent: Thursday, 18 July 2024 11:46 pm
To: Chris Lynch-Blosse <[chris@attest.co.nz](mailto:chris@attest.co.nz)>; [ian@yachtingdevelopments.co.nz](mailto:ian@yachtingdevelopments.co.nz)
Cc: [GrahameJ@yachtingdevelopments.co.nz](mailto:GrahameJ@yachtingdevelopments.co.nz); [mark@attest.co.nz](mailto:mark@attest.co.nz); Lewis Pye︱Magnus <[lbp@magnusmarine.com](mailto:lbp@magnusmarine.com)>; Daniel Trenaman︱Magnus <[dmt@magnusmarine.com](mailto:dmt@magnusmarine.com)>
Subject: Re: YDL 1024 - Maguns Shorepower Unit.
Hi Chris and All,
Thanks for the email and your efforts to date. Today is my first day on holiday and so have CC’d both Daniel and Lewis into the email. Both are senior guys and can make decisions without me. For the next week I will continue to review and contact them for daily updates.
Firstly, it is our priority to get this resolved. I work hard to avoid these issues.
This past week I have been observing the dialogue between Daniel and Natt. With lack of progress, it’s been somewhat frustrating and feel we need below answers to move forward. What’s App is proving not to be ideal as key information is missed.
I have highlighted outstanding issues so we can determine plan forward.
Cooling issues
Very little information on what is the issue or current state.
1. Is the valve operational. Can you force the valve open and close by changing the PID temp control settings on the display.
The valve is operational. We have observed the control voltage to be varied between 3-10Vdc. Also, we have observed that the valve stem was moving.
Ove thing to mention is that the valve seems to be at fully opened position at around 30% load.
Anyway, we did not try to alter valve control from the display.
1. Is the valve plumbed in on the water inlet?
The valve is plumbed as per the valve manual.
1. Valve installed right orientation.
Correct.
1. Photo of the valve cooling page so we can confirm outlet air temp against valve position.
Please see the attached.
1. Has the fan speed controller been changed from Manual 15% back to Auto. This is in my commissioning report to avoid dust ingress during your time in the workshop.
Mark has changed it to Auto when he first started testing the unit.
1. Is the front panel on?
The front panel is always on except when we’re testing with Daniel.
Power Interruption
Other than the system tripping on Sunday at 05:20 on AFE fault we have little information. Some questions to help us understand:-
1. System was turned on December last year. Is this interruption new or been apparent for many months?
The interruption started once the boat’s in the water and has never stopped. 05th June was the earliest date of AFE fault seen from the event log.
1. How often has this happened?
This happens once every night. I’ve been informed that the boat cannot get through the night without the issue.
1. Does this happen daily and / or during peak loads?
Once a night with no abnormal electrical activity.
1. Is the vessel in the water?
Yes.
1. What supply are you connected to 1ph or 3ph?
3-phase supply.
1. What is the load on the vessel during the event?
Usually, the loads are around 7-20 kVA.
Seamless transfer
From last night’s performance it feels like we have gone backwards. Last week there was significant progress with only a few trips during transfer, so far, we have only adjusted droop and freq set points.
Past week it is unclear what has changed if anything. But we have noticed sometimes the transfer happens with two generators online which is just not possible.
First, we need to understand setup onboard.
1. What are the generators, I believe they operate in isochronous and have local control when coming online?
They are Kohler 80kW, 80EFOZDJ. They’re operated by PGEN and there is no local control.
1. When the converter is online how do you stop the generator, is this manual or automatic?
The generator is stopped manually through local or remote display.
1. Transferring from shore power back to generator, is this successful?
This has been always successful.
1. Assume generator synchronises when transferring from shore?
Correct.
1. What is the sync strategy onboard?
The Kohler PGEN takes control of the generators. When transferring from Shore to Gen, after ‘gen start’ button is pressed, PGEN will starts both generators, keep the duty one running and stop the other one. Once the duty generator and Magnus unit has shared the load, the Magnus unit will be manually stopped.
1. Has anything changed with the generator from last week, settings etc?
No.
1. Is there a mode generator operates in during the transfer?
The generators are controlled by PGEN.
1. What setup and generators were installed on YDL build 1017 as this worked perfectly?
We don’t have this information.
1. The procedure during transfer must be to go onto one generator. We have noticed two generators online which should be prevented in the future. The generators are sized at 80kW each and the load must be below 50kW, the size of the shore power.
Refer no.5.
If live bus synchronisation with generators is not compatible, then clearly we need to start making alternative plans. It’s unclear why this would be the case as YDL 1017 worked perfectly. Possible solution is to put a contactor on converter output and operate similar setup to generators. The converter will synchronise to generator before coming online by closing contactor. We have demonstrated yesterday the converter achieves a 9V sync which is highly accurate for smooth transfer. What is the procedure in turning off the generator.
The generators are manually turned off after the shore power unit is synced to the bus. The operator will press ‘stop’ from local/remote generator display.
Daniel mentioned Power Quality onboard as we had experienced where harmonics onboard had exceeded 15% causing similar synchronisation issue. This was resolved by turning off the ships Air conditioning compressors which subsequently reduced harmonics below 5%. Worth checking if you have a meter available.
We have an oscilloscope to check the harmonics.
I do not feel confident more remote support will get the results YDL require. If you are going onboard I may ask for you to do a few things, however a special trip is not required. This would involve moving the voltage sending from secondary side of contactor to primiary so the converter reads output voltage beofre contactor closes. Also would be good to clear history log.
If this involves any change in wirings, please send us a mark up on drawings to minimized unwanted outcome.
We can be available to come and visit 1st week of August. What is the scheulde of the vessel?
Best regards
Matthew Scales
Managing Director
uk.[+44(0) 1953 661111](tel:+441953661111)
nl. [+31(0) 78744 04 35](tel:+31787440435)
m.[+44 (0) 797 1829939](tel:+447971829939)
e: [mjs@magnusmarine.com](mailto:mjs@magnusmarine.com)
Investigating the SP100 change log reveals project 1901 is operating X2 4.02 BP 1.04
The below code extract is the progression of the converter entering converter 'ON' mode
public void ModeAUTO()
{
System.Threading.Thread autoThread;
autoThread = new Thread(() => AutoThreadExec());
autoThread.IsBackground = true;
autoThread.Start();
}
private void AutoThreadExec()
{
int timeout;
// Thread locking
if (autoThreadLock != 0 || bypassThreadLock != 0)
{
return;
}
autoThreadLock = 1;
// Check for Water Sensor Fault
if (Globals.Tags.Water_Alarm_Latched.Value == true)
{
Globals.Tags.Bypass_seqIncom.SetTag();
Globals.Tags.Bypass_statustext.Value = "Water Ingress Fault";
Globals.Tags.Bypass_seqIncom.Value = true;
Globals.Tags.Bypass_dialogText.Value = "Water Ingress Fault\nOK to Reset\nCancel to Abort";
Globals.Confirm_Custom.Show();
timeout = 50;
Globals.Tags.Bypass_dialogCode.Value = 0;
while (Globals.Tags.Bypass_dialogCode.Value == 0 && timeout > 0)
{
Thread.Sleep(200);
timeout--;
}
Globals.Bypass.Show();
// OK was selected to send Reset command
if (Globals.Tags.Bypass_dialogCode.Value == 2)
{
Globals.Tags.Water_Alarm_Latched.Value = false;
Globals.Tags.CAN_CMD_RESET.SetTag();
Thread.Sleep(400);
ModeOFF();
autoThreadLock = 0;
return;
}
// Cancel was selected or dialog timed-out - drop out of thread without changing mode
else
{
ModeOFF();
autoThreadLock = 0;
return;
}
if (Globals.Tags.Bypass_Mode.Value == 0)
{
Globals.Tags.Bypass_statustext.Value = "System is OFF";
}
if (Globals.Tags.Bypass_Mode.Value == 2)
{
Globals.Tags.Bypass_statustext.Value = "CONV Mode Enabled";
}
autoThreadLock = 0;
return;
}
// We are now in AUTO mode
Globals.Tags.Bypass_Mode.Value = 2;
// Start of thread work
Globals.Tags.Bypass_statustext.Value = "Entering CONV Mode";
// Open Bypass contactor
Globals.Tags.Application_IO__QbDigOutput1.Value = false;
Thread.Sleep(400);
// Close Converter Output Contactor (Set Relay (NO)) (0)
Globals.Tags.Application_IO__QbDigOutput0.SetTag();
// Start the converter
Globals.Tags.CAN_CMD_ON.SetTag();
// Wait with timeout to check converter has started
timeout = 50; // 10 Seconds (50 * 200 ms)
while (Globals.Tags.SP100_Status.Value != 3 && timeout > 0)
{
Thread.Sleep(200);
timeout--;
}
// Check for converter start timeout
if (timeout <= 0)
{
Globals.Tags.Bypass_seqIncom.SetTag();
Globals.Tags.Bypass_statustext.Value = "Start Timeout";
Globals.Tags.Bypass_seqIncom.Value = true;
Globals.Tags.Bypass_dialogText.Value = "Start Timeout\nOK to Reset\nCancel to Abort";
Globals.Confirm_Custom.Show();
timeout = 50;
Globals.Tags.Bypass_dialogCode.Value = 0;
while (Globals.Tags.Bypass_dialogCode.Value == 0 && timeout > 0)
{
Thread.Sleep(200);
timeout--;
}
Globals.Bypass.Show();
// OK was selected to send Reset command
if (Globals.Tags.Bypass_dialogCode.Value == 2)
{
Globals.Tags.CAN_CMD_RESET.SetTag();
Thread.Sleep(400);
ModeOFF();
autoThreadLock = 0;
return;
}
// Cancel was selected or dialog timed-out - drop out of thread without changing mode
else
{
ModeOFF();
autoThreadLock = 0;
return;
}
}
// Give the converter some time to ramp up
// Thread.Sleep(2000);
Globals.Tags.Bypass_statustext.Value = "CONV Mode Enabled";
// Set the last mode tag (non-volatile for autostart function
Globals.Tags.Bypass_lastMode.Value = 2;
// Clear the sequence incomplete flag
Globals.Tags.Bypass_seqIncom.ResetTag();
autoThreadLock = 0;
}
Here’s a step-by-step analysis of the converter starting process, including potential reasons for intermittent failures during live bus starts:
Initialisation and Thread Locking:
autoThreadLock
and bypassThreadLock
).Water Ingress Fault Check:
Globals.Tags.Water_Alarm_Latched.Value
).if (Globals.Tags.Water_Alarm_Latched.Value == true)
{
// Handle water ingress fault
}
Globals.Tags.Bypass_Mode.Value = 2;
Globals.Tags.Bypass_statustext.Value = "Entering CONV Mode";
Globals.Tags.Application_IO__QbDigOutput1.Value = false;
Thread.Sleep(400); // Ensure the contactor is open
Globals.Tags.Application_IO__QbDigOutput0.SetTag();
Globals.Tags.CAN_CMD_ON.SetTag()
).Globals.Tags.SP100_Status.Value
being set to 3.Globals.Tags.CAN_CMD_ON.SetTag();
timeout = 50; // 10 seconds (50 * 200 ms)
while (Globals.Tags.SP100_Status.Value != 3 && timeout > 0)
{
Thread.Sleep(200); // Wait 200 ms
timeout--; // Decrement the timeout counter
}
if (timeout <= 0)
{
// Handle start timeout
}
Globals.Tags.Bypass_statustext.Value = "CONV Mode Enabled";
Globals.Tags.Bypass_lastMode.Value = 2;
Globals.Tags.Bypass_seqIncom.ResetTag();
Voltage and Frequency Check:
ShoreSupplyOK()
accurately checks the shore supply conditions.private bool ShoreSupplyOK()
{
if (Globals.Tags.Single_Phase_IP.Value == false)
{
if (Globals.Tags.CAN_IP_STATUS_FREQ.Value > 4800 && Globals.Tags.CAN_IP_STATUS_FREQ.Value < 5200)
{
if (Globals.Tags.CAN_IP_VSTAT_L1.Value > 380 && Globals.Tags.CAN_IP_VSTAT_L1.Value < 425)
{
if (Globals.Tags.CAN_IP_VSTAT_L2.Value > 380 && Globals.Tags.CAN_IP_VSTAT_L2.Value < 425)
{
if (Globals.Tags.CAN_IP_VSTAT_L3.Value > 380 && Globals.Tags.CAN_IP_VSTAT_L3.Value < 425)
{
return true;
}
}
}
}
}
return false;
}
External Bus Live Check:
isExtBusLive()
checks for minimal residual voltage.private bool isExtBusLive()
{
if (Globals.Tags.CAN_AUXBUS_VSTAT_L1.Value > 10 || Globals.Tags.CAN_AUXBUS_VSTAT_L2.Value > 10 || Globals.Tags.CAN_AUXBUS_VSTAT_L3.Value > 10)
{
return true;
}
return false;
}
Looking plausible that the converter could be intermittently failing on a rising bus as this is connected simultaneously with the closure of the converter contactor.
Code preparation incase of deployment request - This will slot into the relevant codebase.
// Set mode to AUTO
Globals.Tags.Bypass_Mode.Value = 2;
Globals.Tags.Bypass_statustext.Value = "Entering CONV Mode";
// Open Bypass contactor
Globals.Tags.Application_IO__QbDigOutput1.Value = false;
// I recommend we increase the below timer from 400ms to 1000ms... A contactor can easily take 100ms to close.
Thread.Sleep(1000); // Ensure the bypass contactor is open
// Close Converter Output Contactor
Globals.Tags.Application_IO__QbDigOutput0.SetTag();
// Additional delay to ensure the converter contactor is closed.. 2 seconds... possibly more. Slow & steady wins the race!
Thread.Sleep(2000);
// Start the converter
Globals.Tags.CAN_CMD_ON.SetTag();
timeout = 50; // 10 seconds (50 * 200 ms)
while (Globals.Tags.SP100_Status.Value != 3 && timeout > 0)
{
Thread.Sleep(200); // Wait 200 ms
timeout--; // Decrement the timeout counter
}
Located the HMI part No.: M:\Engineering\Parts\Parts 1A\1A-800 Project Software\1A-800-106\HMI Software Master\SP100_X2_4_02_BP_1_05_20220803_Master_Remote
Hi Lewis,
I have followed the procedure, and the followings are the result.
At step 3, closing the shore power output MCB, once the MCB was closed, the shore power unit instantly shared the load with generator.
The generator was running solely around 30kVA then became 20kVA with another 10kVA on the shore power unit.
This was without pressing ‘start’ on the display.
I didn’t expect the converter sharing load without starting.
After that I followed to step 4, which is pressing ‘start’, once the button was pressed, the status changed to ‘sync’ for 2-3 seconds and then went to ‘fault’.
The fault was ‘IGBT Error’.
Even with faulty status, the shore power unit was still sharing load with the generator.
This was quite opposite to what mentioned in 3.d.i.
I have tested this twice and received same results.
Modified code and have exported to location: M:\Engineering\Parts\Parts 1A\1A-800 Project Software\1A-800-106\HMI Software Master\SP100_X2_4_02_BP_1_06_20240809_Master_Remote Export
Further increased time delay of starting convert to 5000ms
/* We are now in AUTO mode */
Globals.Tags.Bypass_Mode.Value = 2;
/* Start of thread work */
Globals.Tags.Bypass_statustext.Value = "Entering CONV Mode";
/* Open Bypass contactor */
// Globals.Tags.Application_GVL_S1_M2_ST2328_Out1.Value = false;
Globals.Tags.Application_IO__QbDigOutput1.Value = false;
Thread.Sleep(1000);
/* Close Converter Output Contactor (Set Relay (NO)) (0) */
// Globals.Tags.Application_GVL_S1_M2_ST2328_Out0.SetTag();
Globals.Tags.Application_IO__QbDigOutput0.SetTag();
Thread.Sleep(5000);
/* Start the converter */
Globals.Tags.CAN_CMD_ON.SetTag();
/* Wait with timeout to check converter has started */
timeout = 50; // 10 Seconds.
while (Globals.Tags.SP100_Status.Value != 3 && timeout > 0)
{
Thread.Sleep(200);
timeout--;
}
<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
Hi Matt,
Magnus Marine M: +44 7500 396823 P: +44(0) 1953 661111 E: lbp@magnusmarine.com
Experiencing issues with an SP100 during commissioning activities: