diff --git a/Modules/SicModules/Config/PM/PM1/_ioDefinePM1.xml b/Modules/SicModules/Config/PM/PM1/_ioDefinePM1.xml
index 2087c53..d094556 100644
--- a/Modules/SicModules/Config/PM/PM1/_ioDefinePM1.xml
+++ b/Modules/SicModules/Config/PM/PM1/_ioDefinePM1.xml
@@ -694,18 +694,20 @@
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -939,17 +941,19 @@
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/SicRT/Config/IoProviderConfig.xml b/SicRT/Config/IoProviderConfig.xml
index d44e972..37548f8 100644
--- a/SicRT/Config/IoProviderConfig.xml
+++ b/SicRT/Config/IoProviderConfig.xml
@@ -25,11 +25,11 @@
-
-
-
-
-
+
@@ -57,8 +57,8 @@
-
-
+
+
diff --git a/SicSimulator/App.xaml b/SicSimulator/App.xaml
index 928ba9d..26aee98 100644
--- a/SicSimulator/App.xaml
+++ b/SicSimulator/App.xaml
@@ -21,8 +21,8 @@
-
-
+
+
diff --git a/SicSimulator/Config/_ioDefinePM.xml b/SicSimulator/Config/_ioDefinePM.xml
index bdb9838..0b8d023 100644
--- a/SicSimulator/Config/_ioDefinePM.xml
+++ b/SicSimulator/Config/_ioDefinePM.xml
@@ -482,463 +482,478 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/SicSimulator/Instances/SimulatorAdsPlcService.cs b/SicSimulator/Instances/SimulatorAdsPlcService.cs
index bee2419..079dcf3 100644
--- a/SicSimulator/Instances/SimulatorAdsPlcService.cs
+++ b/SicSimulator/Instances/SimulatorAdsPlcService.cs
@@ -32,12 +32,18 @@ namespace SicSimulator.Instances
case "GVL_IO.PM1_AI_G_2":
data = IoManager.Instance.GetAiBuffer("PM1.PLC")[1];
break;
+ case "GVL_IO.PM1_AI_G_3":
+ data = IoManager.Instance.GetAiBuffer("PM1.PLC")[2];
+ break;
case "GVL_IO.PM1_AO_G":
data = IoManager.Instance.GetAoBuffer("PM1.PLC")[0];
break;
case "GVL_IO.PM1_AO_G_2":
data = IoManager.Instance.GetAoBuffer("PM1.PLC")[1];
break;
+ case "GVL_IO.PM1_AO_G_3":
+ data = IoManager.Instance.GetAoBuffer("PM1.PLC")[2];
+ break;
case "GVL_IO.PM2_DI_G":
data = IoManager.Instance.GetDiBuffer("PM2.PLC")[0];
@@ -51,12 +57,18 @@ namespace SicSimulator.Instances
case "GVL_IO.PM2_AI_G_2":
data = IoManager.Instance.GetAiBuffer("PM2.PLC")[1];
break;
+ case "GVL_IO.PM2_AI_G_3":
+ data = IoManager.Instance.GetAiBuffer("PM2.PLC")[2];
+ break;
case "GVL_IO.PM2_AO_G":
data = IoManager.Instance.GetAoBuffer("PM2.PLC")[0];
break;
case "GVL_IO.PM2_AO_G_2":
data = IoManager.Instance.GetAoBuffer("PM2.PLC")[1];
break;
+ case "GVL_IO.PM2_AO_G_3":
+ data = IoManager.Instance.GetAoBuffer("PM2.PLC")[2];
+ break;
}
return true;
@@ -73,6 +85,13 @@ namespace SicSimulator.Instances
IoManager.Instance.GetDoBuffer("PM1.PLC")[0][index] = (bool)value;
break;
case "GVL_IO.PM1_AI_G":
+ IoManager.Instance.GetAiBuffer("PM1.PLC")[0][index] = (float)value;
+ break;
+ case "GVL_IO.PM1_AI_G_2":
+ IoManager.Instance.GetAiBuffer("PM1.PLC")[1][index] = (float)value;
+ break;
+ case "GVL_IO.PM1_AI_G_3":
+ IoManager.Instance.GetAiBuffer("PM1.PLC")[2][index] = (float)value;
break;
case "GVL_IO.PM1_AO_G":
IoManager.Instance.GetAoBuffer("PM1.PLC")[0][index] = (float)value;
@@ -80,20 +99,37 @@ namespace SicSimulator.Instances
case "GVL_IO.PM1_AO_G_2":
IoManager.Instance.GetAoBuffer("PM1.PLC")[1][index] = (float)value;
break;
+ case "GVL_IO.PM1_AO_G_3":
+ IoManager.Instance.GetAoBuffer("PM1.PLC")[2][index] = (float)value;
+ break;
case "GVL_IO.PM2_DI_G":
break;
case "GVL_IO.PM2_DO_G":
IoManager.Instance.GetDoBuffer("PM2.PLC")[0][index] = (bool)value;
break;
+
case "GVL_IO.PM2_AI_G":
+ IoManager.Instance.GetAiBuffer("PM2.PLC")[0][index] = (float)value;
break;
+ case "GVL_IO.PM2_AI_G_2":
+ IoManager.Instance.GetAiBuffer("PM2.PLC")[1][index] = (float)value;
+ break;
+ case "GVL_IO.PM2_AI_G_3":
+ IoManager.Instance.GetAiBuffer("PM2.PLC")[2][index] = (float)value;
+ break;
+
+
+
case "GVL_IO.PM2_AO_G":
IoManager.Instance.GetAoBuffer("PM2.PLC")[0][index] = (float)value;
break;
case "GVL_IO.PM2_AO_G_2":
IoManager.Instance.GetAoBuffer("PM2.PLC")[1][index] = (float)value;
break;
+ case "GVL_IO.PM2_AO_G_3":
+ IoManager.Instance.GetAoBuffer("PM2.PLC")[2][index] = (float)value;
+ break;
}
return true;
}
diff --git a/SicSimulator/Instances/SimulatorModulePlc.cs b/SicSimulator/Instances/SimulatorModulePlc.cs
index 0f7a61d..395b3a1 100644
--- a/SicSimulator/Instances/SimulatorModulePlc.cs
+++ b/SicSimulator/Instances/SimulatorModulePlc.cs
@@ -38,6 +38,8 @@ namespace SicSimulator.Instances
_buffers.Add(new PlcBuffer() { Buffer = new byte[BufferSize], Type = IoType.AO, Offset = 0, Size = BufferSize, FloatValue = new float[BufferSize] });
_buffers.Add(new PlcBuffer() { Buffer = new byte[BufferSize], Type = IoType.AI, Offset = 1, Size = BufferSize, FloatValue = new float[BufferSize] });
_buffers.Add(new PlcBuffer() { Buffer = new byte[BufferSize], Type = IoType.AO, Offset = 1, Size = BufferSize, FloatValue = new float[BufferSize] });
+ _buffers.Add(new PlcBuffer() { Buffer = new byte[BufferSize], Type = IoType.AI, Offset = 2, Size = BufferSize, FloatValue = new float[BufferSize] });
+ _buffers.Add(new PlcBuffer() { Buffer = new byte[BufferSize], Type = IoType.AO, Offset = 2, Size = BufferSize, FloatValue = new float[BufferSize] });
List lstBuffers = new List();
lstBuffers.Add(new IoBlockItem() { Type = IoType.DI, Index = 0, Size = BufferSize });
@@ -46,6 +48,8 @@ namespace SicSimulator.Instances
lstBuffers.Add(new IoBlockItem() { Type = IoType.AO, Index = 0, Size = BufferSize });
lstBuffers.Add(new IoBlockItem() { Type = IoType.AI, Index = 1, Size = BufferSize });
lstBuffers.Add(new IoBlockItem() { Type = IoType.AO, Index = 1, Size = BufferSize });
+ lstBuffers.Add(new IoBlockItem() { Type = IoType.AI, Index = 2, Size = BufferSize });
+ lstBuffers.Add(new IoBlockItem() { Type = IoType.AO, Index = 2, Size = BufferSize });
SimulatorIoManager.Instance.CreateBuffer(source, lstBuffers);
SimulatorIoManager.Instance.SetIoMap(source, ioMapPathFile, module);