Skip to content

Commit a130c0a

Browse files
committed
The PLC holds the program data
1 parent cd71cd7 commit a130c0a

File tree

3 files changed

+16
-18
lines changed

3 files changed

+16
-18
lines changed

data/diagram_models/sfc/processing_unit/ProgrammableLogicController.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public ProgrammableLogicController(SimulationPage simulationPage, SfcEntity sfcE
4343
_inputRegisters = new ResettingStateTable(_simulationPage.SimulationOutput);
4444
_outputRegisters = new ResettingStateTable(_simulationPage.SimulationInput);
4545
SfcProgramData = new SfcProgramData(sfcEntity);
46-
SfcProgram = new SfcProgram(this, SfcProgramData);
46+
SfcProgram = new SfcProgram(this);
4747
}
4848
#endregion
4949

data/diagram_models/sfc/processing_unit/SfcProgram.cs

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,13 @@ public class SfcProgram
88
{
99
#region ==================== Fields / Properties ====================
1010
public ProgrammableLogicController Plc { get; private set; }
11-
public SfcProgramData Data { get; private set; }
1211
#endregion
1312

1413

1514
#region ==================== Constructor ====================
16-
public SfcProgram(ProgrammableLogicController plc, SfcProgramData data)
15+
public SfcProgram(ProgrammableLogicController plc)
1716
{
1817
Plc = plc;
19-
Data = data;
2018
}
2119
#endregion
2220

@@ -27,28 +25,28 @@ public SfcProgram(ProgrammableLogicController plc, SfcProgramData data)
2725
/// </summary>
2826
public void UpdateProcess(int deltaTimeMs)
2927
{
30-
Data.InactiveSteps.UnionWith(Data.SoonInactiveSteps);
31-
Data.ActiveSteps.ExceptWith(Data.SoonInactiveSteps);
32-
Data.SoonInactiveSteps.Clear();
33-
foreach (var sfcStep in Data.SoonActiveSteps)
28+
Plc.SfcProgramData.InactiveSteps.UnionWith(Plc.SfcProgramData.SoonInactiveSteps);
29+
Plc.SfcProgramData.ActiveSteps.ExceptWith(Plc.SfcProgramData.SoonInactiveSteps);
30+
Plc.SfcProgramData.SoonInactiveSteps.Clear();
31+
foreach (var sfcStep in Plc.SfcProgramData.SoonActiveSteps)
3432
{
3533
sfcStep.ExecuteActions(this, ActionQualifier.PPlus, deltaTimeMs);
3634
}
37-
Data.ActiveSteps.UnionWith(Data.SoonActiveSteps);
38-
Data.InactiveSteps.ExceptWith(Data.SoonActiveSteps);
39-
Data.SoonActiveSteps.Clear();
35+
Plc.SfcProgramData.ActiveSteps.UnionWith(Plc.SfcProgramData.SoonActiveSteps);
36+
Plc.SfcProgramData.InactiveSteps.ExceptWith(Plc.SfcProgramData.SoonActiveSteps);
37+
Plc.SfcProgramData.SoonActiveSteps.Clear();
4038

41-
foreach (var sfcStep in Data.ActiveSteps)
39+
foreach (var sfcStep in Plc.SfcProgramData.ActiveSteps)
4240
{
4341
sfcStep.ExecuteActions(this, ActionQualifier.N, deltaTimeMs);
4442
}
4543

46-
foreach (var sfcStep in Data.ActiveSteps)
44+
foreach (var sfcStep in Plc.SfcProgramData.ActiveSteps)
4745
{
4846
sfcStep.CalculateTransition(this);
4947
}
5048

51-
foreach (var sfcStep in Data.SoonInactiveSteps)
49+
foreach (var sfcStep in Plc.SfcProgramData.SoonInactiveSteps)
5250
{
5351
sfcStep.ExecuteActions(this, ActionQualifier.PMinus, deltaTimeMs);
5452
}
@@ -59,16 +57,16 @@ public void UpdateProcess(int deltaTimeMs)
5957
/// </summary>
6058
public void UpdateStepStatus(List<SfcStep> toActive, List<SfcStep> toInactive)
6159
{
62-
Data.SoonActiveSteps.UnionWith(toActive);
63-
Data.SoonInactiveSteps.UnionWith(toInactive);
60+
Plc.SfcProgramData.SoonActiveSteps.UnionWith(toActive);
61+
Plc.SfcProgramData.SoonInactiveSteps.UnionWith(toInactive);
6462
}
6563

6664
/// <summary>
6765
/// Returns true if the simulation can be executed
6866
/// </summary>
6967
public bool IsProgramLogicValid()
7068
{
71-
return Data.AreStepsValid();
69+
return Plc.SfcProgramData.AreStepsValid();
7270
}
7371
#endregion
7472
}

data/diagram_models/sfc/processing_unit/SfcTransition.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public bool CalculateTransition(SfcProgram program)
5151
// All dependent steps must be active
5252
foreach (SfcStep step in DependingSteps)
5353
{
54-
if (!program.Data.IsStepActive(step)) return false;
54+
if (!program.Plc.SfcProgramData.IsStepActive(step)) return false;
5555
}
5656
return Transition.Result(program.Plc);
5757
}

0 commit comments

Comments
 (0)