From af0da881f3dd9c24c3d9c5c7058a420692de61a0 Mon Sep 17 00:00:00 2001 From: atef Date: Mon, 23 Oct 2023 10:36:09 +0200 Subject: [PATCH] update All states graph and Controller.cs All states are defined now --- csharp/App/SaliMax/Doc/AllStates.graphml | 170 +++------ csharp/App/SaliMax/src/System/Controller.cs | 394 +++++++++++++++++--- 2 files changed, 392 insertions(+), 172 deletions(-) diff --git a/csharp/App/SaliMax/Doc/AllStates.graphml b/csharp/App/SaliMax/Doc/AllStates.graphml index 2888ad499..5877679af 100644 --- a/csharp/App/SaliMax/Doc/AllStates.graphml +++ b/csharp/App/SaliMax/Doc/AllStates.graphml @@ -1,6 +1,6 @@ - + @@ -13,9 +13,8 @@ - + - @@ -32,14 +31,13 @@ K3 ✓ - 19 - K1 ✓ + K1 ✓ K2 ✓ K3 ✘ @@ -49,14 +47,13 @@ K3 ✘ - 3 - K1 ✓ + K1 ✓ K2 ✓ K3 ✘ @@ -66,14 +63,13 @@ K3 ✘ - 9 - K1 ✓ + K1 ✓ K2 ✘ K3 ✘ @@ -83,14 +79,13 @@ K3 ✘ - 1 - K1 ✓ + K1 ✓ K2 ✘ K3 ✘ @@ -100,14 +95,13 @@ K3 ✘ - 13 - K1 ✓ + K1 ✓ K2 ✘ K3 ✓ @@ -117,14 +111,13 @@ K3 ✓ - 29 - K1 ✓ + K1 ✓ K2 ✘ K3 ✓ @@ -134,14 +127,13 @@ K3 ✓ - 5 - K1 ✓ + K1 ✓ K2 ✘ K3 ✓ @@ -151,7 +143,6 @@ K3 ✓ - @@ -169,14 +160,13 @@ K3 ✓ - 11 - K1 ✓ + K1 ✓ K2 ✓ K3 ✘ @@ -187,13 +177,12 @@ K3 ✘ - - + - 15 + 15 K1 ✓ K2 ✓ K3 ✓ @@ -204,14 +193,13 @@ K3 ✓ - 21 - K1 ✓ + K1 ✓ K2 ✘ K3 ✓ @@ -221,14 +209,13 @@ K3 ✓ - 17 - K1 ✓ + K1 ✓ K2 ✘ K3 ✘ @@ -239,14 +226,13 @@ K3 ✘ - 25 - K1 ✓ + K1 ✓ K2 ✘ K3 ✘ @@ -257,14 +243,13 @@ K3 ✘ - - + 27 - K1 ✓ + K1 ✓ K2 ✓ K3 ✘ @@ -275,10 +260,9 @@ K3 ✘ - - + 31 @@ -292,14 +276,13 @@ K3 ✓ - 28 - K1 ✘ + K1 ✘ K2 ✘ K3 ✓ @@ -309,14 +292,13 @@ K3 ✓ - 24 - K1 ✘ + K1 ✘ K2 ✘ K3 ✘ @@ -326,14 +308,13 @@ K3 ✘ - 8 - K1 ✘ + K1 ✘ K2 ✘ K3 ✘ @@ -343,14 +324,13 @@ K3 ✘ - 6 - K1 ✘ + K1 ✘ K2 ✓ K3 ✓ @@ -360,14 +340,13 @@ K3 ✓ - 0 - K1 ✘ + K1 ✘ K2 ✘ K3 ✘ @@ -377,14 +356,13 @@ K3 ✘ - 4 - K1 ✘ + K1 ✘ K2 ✘ K3 ✓ @@ -394,14 +372,13 @@ K3 ✓ - 22 - K1 ✘ + K1 ✘ K2 ✓ K3 ✓ @@ -411,14 +388,13 @@ K3 ✓ - 16 - K1 ✘ + K1 ✘ K2 ✘ K3 ✘ @@ -428,14 +404,13 @@ K3 ✘ - 20 - K1 ✘ + K1 ✘ K2 ✘ K3 ✓ @@ -445,14 +420,13 @@ K3 ✓ - 18 - K1 ✘ + K1 ✘ K2 ✓ K3 ✘ @@ -462,14 +436,13 @@ K3 ✘ - 2 - K1 ✘ + K1 ✘ K2 ✓ K3 ✘ @@ -479,14 +452,13 @@ K3 ✘ - 10 - K1 ✘ + K1 ✘ K2 ✓ K3 ✘ @@ -496,14 +468,13 @@ K3 ✘ - 12 - K1 ✘ + K1 ✘ K2 ✘ K3 ✓ @@ -513,14 +484,13 @@ K3 ✓ - 14 - K1 ✘ + K1 ✘ K2 ✓ K3 ✓ @@ -530,14 +500,13 @@ K3 ✓ - - + 26 - K1 ✘ + K1 ✘ K2 ✓ K3 ✘ @@ -547,14 +516,13 @@ K3 ✘ - 30 - K1 ✘ + K1 ✘ K2 ✓ K3 ✓ @@ -569,14 +537,13 @@ K3 ✓ - turn off + turn off Inverters - @@ -589,19 +556,17 @@ grid tie - - K3's open + K3's open - @@ -613,7 +578,6 @@ grid tie - @@ -626,7 +590,6 @@ Inverters - @@ -638,7 +601,6 @@ Inverters - @@ -653,19 +615,17 @@ Inverters - - open K2 + open K2 - @@ -680,21 +640,19 @@ inverter - - + - + - turn off -inverters + turn off +inverters and open K2 - @@ -706,21 +664,19 @@ inverters - - + - + - turn off -inverters + turn off +inverters and open K2 - @@ -759,7 +715,6 @@ Inverters - @@ -772,7 +727,6 @@ island mode - @@ -808,7 +762,6 @@ Inverters - @@ -819,21 +772,21 @@ Inverters - - + - + + + - turn off -inverters + turn off +inverters and Open K2 - @@ -848,7 +801,6 @@ inverters - @@ -863,7 +815,6 @@ inverters - @@ -875,7 +826,6 @@ inverters - @@ -886,21 +836,21 @@ inverters - - + - + + + - turn off -inverters + turn off +inverters and open K2 - @@ -913,7 +863,6 @@ inverters - @@ -925,7 +874,6 @@ inverters - @@ -937,7 +885,6 @@ inverters - @@ -953,7 +900,6 @@ inverters - diff --git a/csharp/App/SaliMax/src/System/Controller.cs b/csharp/App/SaliMax/src/System/Controller.cs index faf13533e..db0599143 100644 --- a/csharp/App/SaliMax/src/System/Controller.cs +++ b/csharp/App/SaliMax/src/System/Controller.cs @@ -54,18 +54,36 @@ public static class Controller { 0 => State0(s), 1 => State1(s), + 2 => State2(s), 3 => State3(s), 4 => State4(s), + 5 => State5(s), 6 => State6(s), + 7 => State7(s), 8 => State8(s), 9 => State9(s), + 10 => State10(s), + 11 => State11(s), + 12 => State12(s), 13 => State13(s), + 14 => State14(s), + 15 => State15(s), + 16 => State16(s), + 17 => State17(s), + 18 => State18(s), 19 => State19(s), + 20 => State20(s), + 21 => State21(s), 22 => State22(s), 23 => State23(s), 24 => State24(s), + 25 => State25(s), + 26 => State26(s), + 27 => State27(s), 28 => State28(s), 29 => State29(s), + 30 => State30(s), + 31 => State31(s), 101 => State101(s), @@ -95,20 +113,7 @@ public static class Controller // => 8 } - private static Boolean State9(StatusRecord s) - { - s.StateMachine.Message = "Ac/Dc are disconnected from Island Bus. Switching to GridTie Mode."; - s.DcDc.Disable(); - s.AcDc.Disable(); - s.AcDc.EnableGridTieMode(); - s.Relays.DisconnectIslandBusFromGrid(); - - return false; - - // => 1 - } - private static Boolean State1(StatusRecord s) { s.StateMachine.Message = "Grid Tied mode active, closing k2"; @@ -123,6 +128,20 @@ public static class Controller // => 3 } + private static Boolean State2(StatusRecord s) + { + s.StateMachine.Message = ""; + + s.DcDc.Disable(); + s.AcDc.Disable(); + s.AcDc.EnableGridTieMode(); + s.Relays.DisconnectIslandBusFromGrid(); + + return false; + + // => 0 + } + private static Boolean State3(StatusRecord s) { s.StateMachine.Message = "K2 closed, Turning on Ac/Dc"; @@ -136,6 +155,132 @@ public static class Controller // => 19 } + + + private static Boolean State4(StatusRecord s) + { + s.StateMachine.Message = "K2 is open, waiting K3 to open"; + + s.DcDc.Disable(); + s.AcDc.Disable(); + s.AcDc.EnableGridTieMode(); + s.Relays.DisconnectIslandBusFromGrid(); + + return true; + + // => 0 + } + + private static Boolean State5(StatusRecord s) + { + s.StateMachine.Message = ""; + + s.DcDc.Disable(); + s.AcDc.Disable(); + s.AcDc.EnableGridTieMode(); + s.Relays.DisconnectIslandBusFromGrid(); + + return false; + + // => ? + } + + private static Boolean State6(StatusRecord s) + { + s.StateMachine.Message = "Inverters are off, opening K2"; + + s.DcDc.Disable(); + s.AcDc.Disable(); + s.AcDc.EnableGridTieMode(); + s.Relays.DisconnectIslandBusFromGrid(); + + return true; + + // => 4 + } + + private static Boolean State7(StatusRecord s) + { + s.StateMachine.Message = ""; + + s.DcDc.Disable(); + s.AcDc.Disable(); + s.AcDc.EnableGridTieMode(); + s.Relays.ConnectIslandBusToGrid(); + + return false; + + // => ? + } + + private static Boolean State8(StatusRecord s) + { + s.StateMachine.Message = "Ac/Dc are off and in Island Mode."; + + s.DcDc.Enable(); + s.AcDc.Enable(); + s.AcDc.EnableIslandMode(); + s.Relays.DisconnectIslandBusFromGrid(); + + return true; + // => 24 + } + + private static Boolean State9(StatusRecord s) + { + s.StateMachine.Message = "Ac/Dc are disconnected from Island Bus. Switching to GridTie Mode."; + + s.DcDc.Disable(); + s.AcDc.Disable(); + s.AcDc.EnableGridTieMode(); + s.Relays.DisconnectIslandBusFromGrid(); + + return false; + + // => 1 + } + + private static Boolean State10(StatusRecord s) + { + s.StateMachine.Message = ""; + + s.DcDc.Disable(); + s.AcDc.Disable(); + s.AcDc.EnableIslandMode(); + s.Relays.DisconnectIslandBusFromGrid(); + + return false; + + // => 8 + } + + private static Boolean State11(StatusRecord s) + { + s.StateMachine.Message = ""; + + s.DcDc.Disable(); + s.AcDc.Disable(); + s.AcDc.EnableIslandMode(); + s.Relays.ConnectIslandBusToGrid(); + + return false; + + // => 9 + } + + private static Boolean State12(StatusRecord s) + { + s.StateMachine.Message = ""; + + s.DcDc.Disable(); + s.AcDc.Disable(); + s.AcDc.EnableIslandMode(); + s.Relays.DisconnectIslandBusFromGrid(); + + return false; + + // => 8 + } private static Boolean State13(StatusRecord s) { @@ -151,8 +296,80 @@ public static class Controller // => 9 } + private static Boolean State14(StatusRecord s) + { + s.StateMachine.Message = ""; + s.DcDc.Disable(); + s.AcDc.Disable(); + s.AcDc.EnableIslandMode(); + s.Relays.DisconnectIslandBusFromGrid(); + + return false; + // => 12 + } + + + private static Boolean State15(StatusRecord s) + { + s.StateMachine.Message = ""; + + s.DcDc.Disable(); + s.AcDc.Disable(); + s.AcDc.EnableIslandMode(); + s.Relays.DisconnectIslandBusFromGrid(); + + return false; + + // => 13 + } + + + private static Boolean State16(StatusRecord s) + { + s.StateMachine.Message = ""; + + s.DcDc.Disable(); + s.AcDc.Disable(); + s.AcDc.EnableGridTieMode(); + s.Relays.DisconnectIslandBusFromGrid(); + + return false; + + // => 0 + } + + + private static Boolean State17(StatusRecord s) + { + s.StateMachine.Message = ""; + + s.DcDc.Disable(); + s.AcDc.Disable(); + s.AcDc.EnableGridTieMode(); + s.Relays.DisconnectIslandBusFromGrid(); + + return false; + + // => 1 + } + + + private static Boolean State18(StatusRecord s) + { + s.StateMachine.Message = ""; + + s.DcDc.Disable(); + s.AcDc.Disable(); + s.AcDc.EnableGridTieMode(); + s.Relays.DisconnectIslandBusFromGrid(); + + return false; + + // => 0 + } + private static Boolean State19(StatusRecord s) { s.StateMachine.Message = "Waiting for Ac/Dc to connect to Island Bus"; @@ -167,20 +384,33 @@ public static class Controller // => 23 } - - private static Boolean State23(StatusRecord s) + + private static Boolean State20(StatusRecord s) { - s.StateMachine.Message = "ESS"; - - s.DcDc.Enable(); - s.AcDc.Enable(); + s.StateMachine.Message = ""; + + s.DcDc.Disable(); + s.AcDc.Disable(); s.AcDc.EnableGridTieMode(); - s.EnableDcLinkGridTie(); - s.Relays.ConnectIslandBusToGrid(); + s.Relays.DisconnectIslandBusFromGrid(); - return true; + return false; + + // => 4 + } + + private static Boolean State21(StatusRecord s) + { + s.StateMachine.Message = ""; + + s.DcDc.Disable(); + s.AcDc.Disable(); + s.AcDc.EnableGridTieMode(); + s.Relays.DisconnectIslandBusFromGrid(); - // => 22 + return false; + + // => 5 } private static Boolean State22(StatusRecord s) @@ -196,49 +426,79 @@ public static class Controller // => 6 } - - - private static Boolean State6(StatusRecord s) + + private static Boolean State23(StatusRecord s) { - s.StateMachine.Message = "Inverters are off, opening K2"; + s.StateMachine.Message = "ESS"; - s.DcDc.Disable(); - s.AcDc.Disable(); + s.DcDc.Enable(); + s.AcDc.Enable(); s.AcDc.EnableGridTieMode(); - s.Relays.DisconnectIslandBusFromGrid(); + s.EnableDcLinkGridTie(); + s.Relays.ConnectIslandBusToGrid(); return true; - // => 4 + // => 22 } - private static Boolean State4(StatusRecord s) + + private static Boolean State24(StatusRecord s) { - s.StateMachine.Message = "K2 is open, waiting K3 to open"; - - s.DcDc.Disable(); - s.AcDc.Disable(); - s.AcDc.EnableGridTieMode(); - s.Relays.DisconnectIslandBusFromGrid(); - - return true; - - // => 0 - } - - private static Boolean State8(StatusRecord s) - { - s.StateMachine.Message = "Ac/Dc are off and in Island Mode."; + s.StateMachine.Message = "Inverter are on waiting for k3 to close"; s.DcDc.Enable(); s.AcDc.Enable(); s.AcDc.EnableIslandMode(); s.Relays.DisconnectIslandBusFromGrid(); - return true; - // => 24 + return false; + + // => 28 } + + private static Boolean State25(StatusRecord s) + { + s.StateMachine.Message = ""; + s.DcDc.Disable(); + s.AcDc.Disable(); + s.AcDc.EnableIslandMode(); + s.Relays.DisconnectIslandBusFromGrid(); + + return false; + + // => 9 + } + + private static Boolean State26(StatusRecord s) + { + s.StateMachine.Message = ""; + + s.DcDc.Disable(); + s.AcDc.Disable(); + s.AcDc.EnableIslandMode(); + s.Relays.DisconnectIslandBusFromGrid(); + + return false; + + // => 10 + } + + private static Boolean State27(StatusRecord s) + { + s.StateMachine.Message = ""; + + s.DcDc.Disable(); + s.AcDc.Disable(); + s.AcDc.EnableIslandMode(); + s.Relays.DisconnectIslandBusFromGrid(); + + return false; + + // => 9 + } + private static Boolean State28(StatusRecord s) { s.StateMachine.Message = "Island Mode"; @@ -267,21 +527,35 @@ public static class Controller // => 13 } - - private static Boolean State24(StatusRecord s) + + private static Boolean State30(StatusRecord s) { - s.StateMachine.Message = "Inverter are on waiting for k3 to close"; - - s.DcDc.Enable(); - s.AcDc.Enable(); + s.StateMachine.Message = ""; + + s.DcDc.Disable(); + s.AcDc.Disable(); s.AcDc.EnableIslandMode(); s.Relays.DisconnectIslandBusFromGrid(); - - return false; - // => 28 + return false; + + // => 14 } - + + private static Boolean State31(StatusRecord s) + { + s.StateMachine.Message = ""; + + s.DcDc.Disable(); + s.AcDc.Disable(); + s.AcDc.EnableIslandMode(); + s.Relays.DisconnectIslandBusFromGrid(); + + return false; + + // => 13 + } + private static Boolean State101(StatusRecord s) { s.StateMachine.Message = "Relay device is not available"; @@ -360,7 +634,7 @@ public static class Controller .ForAll(c => c.PowerStageEnable = false); } - + //this is must be deleted private static void Disable(this DcDcDevicesRecord dcDc) { // For Test purpose, The transition from island mode to grid tier and vis versa , may not need to disable Dc/Dc.