1修改仿真中Float类型数据获取属性

2修改方法名GetAoBufferFloat
3修改IO名称
4使用合并后的dll
This commit is contained in:
hanqiangqiang 2024-02-22 11:00:24 +08:00
parent 76aea05399
commit fe7276afe6
11 changed files with 141 additions and 141 deletions

View File

@ -436,7 +436,7 @@
<DO_ITEM Index="202" Name="DO_PowerRod2FlowTemp" BufferOffset="202" Addr="202" Description="" />
<DO_ITEM Index="203" Name="DO_ForelineFlowTemp" BufferOffset="203" Addr="203" Description="" />
<DO_ITEM Index="204" Name="DO_ElectrodeWFlowTemp" BufferOffset="204" Addr="204" Description="" />
<DO_ITEM Index="205" Name="DO_Spare1FlowTemp" BufferOffset="205" Addr="205" Description="" />
<DO_ITEM Index="205" Name="DO_TMPump1FlowTemp" BufferOffset="205" Addr="205" Description="" />
<DO_ITEM Index="206" Name="DO_TransformerFlowTemp" BufferOffset="206" Addr="206" Description="" />
<DO_ITEM Index="207" Name="DO_Spare1FlowTemp" BufferOffset="207" Addr="207" Description="" />
<DO_ITEM Index="208" Name="DO_Spare2FlowTemp" BufferOffset="208" Addr="208" Description="" />

View File

@ -27,10 +27,10 @@ namespace SicSimulator.Instances
data = IoManager.Instance.GetDoBuffer("PM1.PLC")[0];
break;
case "GVL_IO.PM1_AI_G":
data = IoManager.Instance.GetAiBufferFloat("PM1.PLC")[0];
data = IoManager.Instance.GetAiBuffer("PM1.PLC")[0];
break;
case "GVL_IO.PM1_AO_G":
data = IoManager.Instance.GetAoBufferFloat("PM1.PLC")[0];
data = IoManager.Instance.GetAoBuffer("PM1.PLC")[0];
break;
case "GVL_IO.PM2_DI_G":
@ -40,10 +40,10 @@ namespace SicSimulator.Instances
data = IoManager.Instance.GetDoBuffer("PM2.PLC")[0];
break;
case "GVL_IO.PM2_AI_G":
data = IoManager.Instance.GetAiBufferFloat("PM2.PLC")[0];
data = IoManager.Instance.GetAiBuffer("PM2.PLC")[0];
break;
case "GVL_IO.PM2_AO_G":
data = IoManager.Instance.GetAoBufferFloat("PM2.PLC")[0];
data = IoManager.Instance.GetAoBuffer("PM2.PLC")[0];
break;
}
@ -63,7 +63,7 @@ namespace SicSimulator.Instances
case "GVL_IO.PM1_AI_G":
break;
case "GVL_IO.PM1_AO_G":
IoManager.Instance.GetAoBufferFloat("PM1.PLC")[0][index] = (float)value;
IoManager.Instance.GetAoBuffer("PM1.PLC")[0][index] = (float)value;
break;
case "GVL_IO.PM2_DI_G":
@ -74,7 +74,7 @@ namespace SicSimulator.Instances
case "GVL_IO.PM2_AI_G":
break;
case "GVL_IO.PM2_AO_G":
IoManager.Instance.GetAoBufferFloat("PM2.PLC")[0][index] = (float)value;
IoManager.Instance.GetAoBuffer("PM2.PLC")[0][index] = (float)value;
break;
}
return true;

View File

@ -114,7 +114,7 @@ namespace SicSimulator.Instances
Name = ioItem.Name,
Index = ioItem.Index,
Description = ioItem.Description,
ShortValue = ioItem.Value,
ShortValue = (short)ioItem.Value,
Address = ioItem.Addr,
BlockOffset = ioItem.BlockOffset,
BlockIndex = ioItem.Index,
@ -137,7 +137,7 @@ namespace SicSimulator.Instances
Name = ioItem.Name,
Index = ioItem.Index,
Description = ioItem.Description,
ShortValue = ioItem.Value,
ShortValue = (short)ioItem.Value,
Address = ioItem.Addr,
BlockOffset = ioItem.BlockOffset,
BlockIndex = ioItem.Index,
@ -193,10 +193,10 @@ namespace SicSimulator.Instances
{
if (notifiableIoItem.HoldValue)
{
IO.AI[notifiableIoItem.Name].FloatValue = notifiableIoItem.FloatValue;
IO.AI[notifiableIoItem.Name].Value = notifiableIoItem.FloatValue;
}
notifiableIoItem.FloatValue = IO.AI[notifiableIoItem.Name].FloatValue;
notifiableIoItem.FloatValue = IO.AI[notifiableIoItem.Name].Value;
notifiableIoItem.InvokePropertyChanged("FloatValue");
}
}
@ -205,7 +205,7 @@ namespace SicSimulator.Instances
{
foreach (var notifiableIoItem in AoItemList)
{
notifiableIoItem.FloatValue = IO.AO[notifiableIoItem.Name].FloatValue;
notifiableIoItem.FloatValue = IO.AO[notifiableIoItem.Name].Value;
notifiableIoItem.InvokePropertyChanged("FloatValue");
}
}
@ -251,7 +251,7 @@ namespace SicSimulator.Instances
//IO修改 ---> PLC
if (plcBuffer.Type == IoType.AI)
{
var ioBuffers = IoManager.Instance.GetAiBufferFloat(_source);
var ioBuffers = IoManager.Instance.GetAiBuffer(_source);
if (ioBuffers != null)
{
foreach (var buffer in ioBuffers)

View File

@ -112,9 +112,9 @@ namespace SicSimulator.Instances
IO.DI[$"{mod}.DI_DryPump1Running"].Value = true;
IO.DI[$"{mod}.DI_ServoReady"].Value = true;
IO.AI[$"{mod}.AI_ForelinePress"].FloatValue = 300;
IO.AI[$"{mod}.AI_ChamPress"].FloatValue = 300;
IO.AI[$"{mod}.AI_ActualPressure"].FloatValue = 300;
IO.AI[$"{mod}.AI_ForelinePress"].Value = 300;
IO.AI[$"{mod}.AI_ChamPress"].Value = 300;
IO.AI[$"{mod}.AI_ActualPressure"].Value = 300;
IO.DI[$"{mod}.DI_EPV2-1FB"].Value = true;
IO.DI[$"{mod}.DI_ChamPressAboveATMSW"].Value = true;
@ -143,7 +143,7 @@ namespace SicSimulator.Instances
IO.DO[$"{mod}.DO_CleanRoutineSucceed"].Value = true;
IO.DI[$"{mod}.DI_PSUEnableFB"].Value = true;
IO.AO[$"{mod}.AO_ValveModeSetpoint"].FloatValue = (float)2;
IO.AO[$"{mod}.AO_ValveModeSetpoint"].Value = (float)2;
IO.DI[$"{mod}.DI_ChamLidClosed"].Value = true;
IO.DI[$"{mod}.DI_ChamCabDoorClosed"].Value = true;
@ -177,77 +177,77 @@ namespace SicSimulator.Instances
#region TC
//IO.AI[$"{mod}.AI_L1WorkingOP"].FloatValue = 10;
//IO.AI[$"{mod}.AI_L2WorkingOP"].FloatValue = 10;
//IO.AI[$"{mod}.AI_L3WorkingOP"].FloatValue = 10;
//IO.AI[$"{mod}.AI_L1PV"].FloatValue = 20;
//IO.AI[$"{mod}.AI_L2PV"].FloatValue = 20;
//IO.AI[$"{mod}.AI_L3PV"].FloatValue = 20;
//IO.AI[$"{mod}.AI_L1TempHighAlarm"].FloatValue = 30;
//IO.AI[$"{mod}.AI_L2TempHighAlarm"].FloatValue = 30;
//IO.AI[$"{mod}.AI_L3TempHighAlarm"].FloatValue = 30;
//IO.AI[$"{mod}.AI_L1TempLowAlarm"].FloatValue = 25;
//IO.AI[$"{mod}.AI_L2TempLowAlarm"].FloatValue = 25;
//IO.AI[$"{mod}.AI_L3TempLowAlarm"].FloatValue = 25;
//IO.AI[$"{mod}.AI_L1WorkingOP"].Value = 10;
//IO.AI[$"{mod}.AI_L2WorkingOP"].Value = 10;
//IO.AI[$"{mod}.AI_L3WorkingOP"].Value = 10;
//IO.AI[$"{mod}.AI_L1PV"].Value = 20;
//IO.AI[$"{mod}.AI_L2PV"].Value = 20;
//IO.AI[$"{mod}.AI_L3PV"].Value = 20;
//IO.AI[$"{mod}.AI_L1TempHighAlarm"].Value = 30;
//IO.AI[$"{mod}.AI_L2TempHighAlarm"].Value = 30;
//IO.AI[$"{mod}.AI_L3TempHighAlarm"].Value = 30;
//IO.AI[$"{mod}.AI_L1TempLowAlarm"].Value = 25;
//IO.AI[$"{mod}.AI_L2TempLowAlarm"].Value = 25;
//IO.AI[$"{mod}.AI_L3TempLowAlarm"].Value = 25;
//IO.AO[$"{mod}.AO_L1LoopMode"].FloatValue = 1;
//IO.AO[$"{mod}.AO_L2LoopMode"].FloatValue = 1;
//IO.AO[$"{mod}.AO_L3LoopMode"].FloatValue = 1;
//IO.AO[$"{mod}.AO_L1TargetSP"].FloatValue = 20;
//IO.AO[$"{mod}.AO_L2TargetSP"].FloatValue = 20;
//IO.AO[$"{mod}.AO_L3TargetSP"].FloatValue = 20;
//IO.AO[$"{mod}.AO_L1TargetOP"].FloatValue = 30;
//IO.AO[$"{mod}.AO_L2TargetOP"].FloatValue = 30;
//IO.AO[$"{mod}.AO_L3TargetOP"].FloatValue = 30;
//IO.AO[$"{mod}.AO_L1IPCST"].FloatValue = 40;
//IO.AO[$"{mod}.AO_L2IPCST"].FloatValue = 40;
//IO.AO[$"{mod}.AO_L3IPCST"].FloatValue = 40;
//IO.AO[$"{mod}.AO_L1IPCST"].FloatValue = 70;
//IO.AO[$"{mod}.AO_L2IPCST"].FloatValue = 70;
//IO.AO[$"{mod}.AO_L3IPCST"].FloatValue = 70;
//IO.AO[$"{mod}.AO_TCPyroMode"].FloatValue = 1;
//IO.AO[$"{mod}.AO_L1TempHighLimit"].FloatValue = 90;
//IO.AO[$"{mod}.AO_L2TempHighLimit"].FloatValue = 90;
//IO.AO[$"{mod}.AO_L3TempHighLimit"].FloatValue = 90;
//IO.AO[$"{mod}.AO_L1TempLowLimit"].FloatValue = 80;
//IO.AO[$"{mod}.AO_L2TempLowLimit"].FloatValue = 80;
//IO.AO[$"{mod}.AO_L3TempLowLimit"].FloatValue = 80;
//IO.AO[$"{mod}.AO_L1LoopMode"].Value = 1;
//IO.AO[$"{mod}.AO_L2LoopMode"].Value = 1;
//IO.AO[$"{mod}.AO_L3LoopMode"].Value = 1;
//IO.AO[$"{mod}.AO_L1TargetSP"].Value = 20;
//IO.AO[$"{mod}.AO_L2TargetSP"].Value = 20;
//IO.AO[$"{mod}.AO_L3TargetSP"].Value = 20;
//IO.AO[$"{mod}.AO_L1TargetOP"].Value = 30;
//IO.AO[$"{mod}.AO_L2TargetOP"].Value = 30;
//IO.AO[$"{mod}.AO_L3TargetOP"].Value = 30;
//IO.AO[$"{mod}.AO_L1IPCST"].Value = 40;
//IO.AO[$"{mod}.AO_L2IPCST"].Value = 40;
//IO.AO[$"{mod}.AO_L3IPCST"].Value = 40;
//IO.AO[$"{mod}.AO_L1IPCST"].Value = 70;
//IO.AO[$"{mod}.AO_L2IPCST"].Value = 70;
//IO.AO[$"{mod}.AO_L3IPCST"].Value = 70;
//IO.AO[$"{mod}.AO_TCPyroMode"].Value = 1;
//IO.AO[$"{mod}.AO_L1TempHighLimit"].Value = 90;
//IO.AO[$"{mod}.AO_L2TempHighLimit"].Value = 90;
//IO.AO[$"{mod}.AO_L3TempHighLimit"].Value = 90;
//IO.AO[$"{mod}.AO_L1TempLowLimit"].Value = 80;
//IO.AO[$"{mod}.AO_L2TempLowLimit"].Value = 80;
//IO.AO[$"{mod}.AO_L3TempLowLimit"].Value = 80;
//IO.AI[$"{mod}.AI_L1WorkingOP2"].FloatValue = 10;
//IO.AI[$"{mod}.AI_L2WorkingOP2"].FloatValue = 10;
//IO.AI[$"{mod}.AI_L3WorkingOP2"].FloatValue = 10;
//IO.AI[$"{mod}.AI_L1PV2"].FloatValue = 20;
//IO.AI[$"{mod}.AI_L2PV2"].FloatValue = 20;
//IO.AI[$"{mod}.AI_L3PV2"].FloatValue = 20;
//IO.AI[$"{mod}.AI_L1TempHighAlarm2"].FloatValue = 30;
//IO.AI[$"{mod}.AI_L2TempHighAlarm2"].FloatValue = 30;
//IO.AI[$"{mod}.AI_L3TempHighAlarm2"].FloatValue = 30;
//IO.AI[$"{mod}.AI_L1TempLowAlarm2"].FloatValue = 25;
//IO.AI[$"{mod}.AI_L2TempLowAlarm2"].FloatValue = 25;
//IO.AI[$"{mod}.AI_L3TempLowAlarm2"].FloatValue = 25;
//IO.AI[$"{mod}.AI_L1WorkingOP2"].Value = 10;
//IO.AI[$"{mod}.AI_L2WorkingOP2"].Value = 10;
//IO.AI[$"{mod}.AI_L3WorkingOP2"].Value = 10;
//IO.AI[$"{mod}.AI_L1PV2"].Value = 20;
//IO.AI[$"{mod}.AI_L2PV2"].Value = 20;
//IO.AI[$"{mod}.AI_L3PV2"].Value = 20;
//IO.AI[$"{mod}.AI_L1TempHighAlarm2"].Value = 30;
//IO.AI[$"{mod}.AI_L2TempHighAlarm2"].Value = 30;
//IO.AI[$"{mod}.AI_L3TempHighAlarm2"].Value = 30;
//IO.AI[$"{mod}.AI_L1TempLowAlarm2"].Value = 25;
//IO.AI[$"{mod}.AI_L2TempLowAlarm2"].Value = 25;
//IO.AI[$"{mod}.AI_L3TempLowAlarm2"].Value = 25;
//IO.AO[$"{mod}.AO_L1LoopMode2"].FloatValue = 1;
//IO.AO[$"{mod}.AO_L2LoopMode2"].FloatValue = 1;
//IO.AO[$"{mod}.AO_L3LoopMode2"].FloatValue = 1;
//IO.AO[$"{mod}.AO_L1TargetSP2"].FloatValue = 20;
//IO.AO[$"{mod}.AO_L2TargetSP2"].FloatValue = 20;
//IO.AO[$"{mod}.AO_L3TargetSP2"].FloatValue = 20;
//IO.AO[$"{mod}.AO_L1TargetOP2"].FloatValue = 30;
//IO.AO[$"{mod}.AO_L2TargetOP2"].FloatValue = 30;
//IO.AO[$"{mod}.AO_L3TargetOP2"].FloatValue = 30;
//IO.AO[$"{mod}.AO_L1RecipeValue2"].FloatValue = 40;
//IO.AO[$"{mod}.AO_L2RecipeValue2"].FloatValue = 40;
//IO.AO[$"{mod}.AO_L3RecipeValue2"].FloatValue = 40;
//IO.AO[$"{mod}.AO_L1IPCST2"].FloatValue = 70;
//IO.AO[$"{mod}.AO_L2IPCST2"].FloatValue = 70;
//IO.AO[$"{mod}.AO_L3IPCST2"].FloatValue = 70;
//IO.AO[$"{mod}.AO_TCPyroMode2"].FloatValue = 1;
//IO.AO[$"{mod}.AO_L1TempHighLimit2"].FloatValue = 90;
//IO.AO[$"{mod}.AO_L2TempHighLimit2"].FloatValue = 90;
//IO.AO[$"{mod}.AO_L3TempHighLimit2"].FloatValue = 90;
//IO.AO[$"{mod}.AO_L1TempLowLimit2"].FloatValue = 80;
//IO.AO[$"{mod}.AO_L2TempLowLimit2"].FloatValue = 80;
//IO.AO[$"{mod}.AO_L3TempLowLimit2"].FloatValue = 80;
//IO.AO[$"{mod}.AO_L1LoopMode2"].Value = 1;
//IO.AO[$"{mod}.AO_L2LoopMode2"].Value = 1;
//IO.AO[$"{mod}.AO_L3LoopMode2"].Value = 1;
//IO.AO[$"{mod}.AO_L1TargetSP2"].Value = 20;
//IO.AO[$"{mod}.AO_L2TargetSP2"].Value = 20;
//IO.AO[$"{mod}.AO_L3TargetSP2"].Value = 20;
//IO.AO[$"{mod}.AO_L1TargetOP2"].Value = 30;
//IO.AO[$"{mod}.AO_L2TargetOP2"].Value = 30;
//IO.AO[$"{mod}.AO_L3TargetOP2"].Value = 30;
//IO.AO[$"{mod}.AO_L1RecipeValue2"].Value = 40;
//IO.AO[$"{mod}.AO_L2RecipeValue2"].Value = 40;
//IO.AO[$"{mod}.AO_L3RecipeValue2"].Value = 40;
//IO.AO[$"{mod}.AO_L1IPCST2"].Value = 70;
//IO.AO[$"{mod}.AO_L2IPCST2"].Value = 70;
//IO.AO[$"{mod}.AO_L3IPCST2"].Value = 70;
//IO.AO[$"{mod}.AO_TCPyroMode2"].Value = 1;
//IO.AO[$"{mod}.AO_L1TempHighLimit2"].Value = 90;
//IO.AO[$"{mod}.AO_L2TempHighLimit2"].Value = 90;
//IO.AO[$"{mod}.AO_L3TempHighLimit2"].Value = 90;
//IO.AO[$"{mod}.AO_L1TempLowLimit2"].Value = 80;
//IO.AO[$"{mod}.AO_L2TempLowLimit2"].Value = 80;
//IO.AO[$"{mod}.AO_L3TempLowLimit2"].Value = 80;
#endregion
IO.DI[$"{mod}.DI_PMH2DetectorSW"].Value = true;
@ -300,7 +300,7 @@ namespace SicSimulator.Instances
IO.DO[$"{mod}.DO_PowerRod1FlowTemp"].Value = true;
IO.DO[$"{mod}.DO_PowerRod2FlowTemp"].Value = true;
IO.DO[$"{mod}.DO_ElectrodeWFlowTemp"].Value = true;
IO.DO[$"{mod}.DO_Spare1FlowTemp"].Value = true;
//IO.DO[$"{mod}.DO_Spare1FlowTemp"].Value = true;
IO.DO[$"{mod}.DO_TransformerFlowTemp"].Value = true;
IO.DO[$"{mod}.DO_HeaterEnable"].Value = true;
@ -313,21 +313,21 @@ namespace SicSimulator.Instances
{
#region Water Flow
IO.AI[$"{mod}.AI_ChamMiddleFlow2Temp"].FloatValue = (float)(WaterTempBase * _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_SHFlowTemp"].FloatValue = (float)(WaterTempBase * _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_ChamTopFlowTemp"].FloatValue = (float)(WaterTempBase * _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_ChamMiddleFlow1Temp"].FloatValue = (float)(WaterTempBase * _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_ChamBottomFlowTemp"].FloatValue = (float)(WaterTempBase * _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_TMPump2FlowTemp"].FloatValue = (float)(WaterTempBase * _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_PowerRod1FlowTemp"].FloatValue = (float)(WaterTempBase * _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_PowerRod2FlowTemp"].FloatValue = (float)(WaterTempBase * _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_Foreline1FlowTemp"].FloatValue = (float)(WaterTempBase * _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_ElectrodeWFlowTemp"].FloatValue = (float)(WaterTempBase * _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_TMPump1FlowTemp"].FloatValue = (float)(WaterTempBase * _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_TransformerFlowTemp"].FloatValue = (float)(WaterTempBase * _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_TMTopLidFlowTemp"].FloatValue = (float)(WaterTempBase * _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_TMBufferFlowTemp"].FloatValue = (float)(WaterTempBase * _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_SpareFlowTemp"].FloatValue = (float)(WaterTempBase * _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_ChamMiddleFlow2Temp"].Value = (float)(WaterTempBase * _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_SHFlowTemp"].Value = (float)(WaterTempBase * _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_ChamTopFlowTemp"].Value = (float)(WaterTempBase * _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_ChamMiddleFlow1Temp"].Value = (float)(WaterTempBase * _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_ChamBottomFlowTemp"].Value = (float)(WaterTempBase * _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_TMPump2FlowTemp"].Value = (float)(WaterTempBase * _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_PowerRod1FlowTemp"].Value = (float)(WaterTempBase * _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_PowerRod2FlowTemp"].Value = (float)(WaterTempBase * _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_Foreline1FlowTemp"].Value = (float)(WaterTempBase * _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_ElectrodeWFlowTemp"].Value = (float)(WaterTempBase * _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_TMPump1FlowTemp"].Value = (float)(WaterTempBase * _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_TransformerFlowTemp"].Value = (float)(WaterTempBase * _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_TMTopLidFlowTemp"].Value = (float)(WaterTempBase * _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_TMBufferFlowTemp"].Value = (float)(WaterTempBase * _rnd.NextDouble()); ;
IO.AI[$"{mod}.AI_SpareFlowTemp"].Value = (float)(WaterTempBase * _rnd.NextDouble()); ;
#endregion
}
@ -451,8 +451,8 @@ namespace SicSimulator.Instances
float current = 0;
if (IO.AI[$"{pm}.{item.Item1}"] != null)
{
current = IO.AI[$"{pm}.{item.Item1}"].FloatValue;
setpoint = IO.AO[$"{pm}.{item.Item2}"].FloatValue;
current = IO.AI[$"{pm}.{item.Item1}"].Value;
setpoint = IO.AO[$"{pm}.{item.Item2}"].Value;
}
@ -471,40 +471,40 @@ namespace SicSimulator.Instances
result = result + (float)_rnd.NextDouble();
IO.AI[$"{pm}.{item.Item1}"].FloatValue = result;
IO.AI[$"{pm}.{item.Item1}"].Value = result;
}
}
public object locker = new object();
private void MonitorPm(string pm)
{
IO.AI[$"{pm}.AI_TVmode"].FloatValue = IO.AO[$"{pm}.AO_ValveModeSetpoint"].FloatValue;
IO.AI[$"{pm}.AI_HeartBeat"].FloatValue = IO.AO[$"{pm}.AO_HeartBeat"].FloatValue;
IO.AI[$"{pm}.AI_TVmode"].Value = IO.AO[$"{pm}.AO_ValveModeSetpoint"].Value;
IO.AI[$"{pm}.AI_HeartBeat"].Value = IO.AO[$"{pm}.AO_HeartBeat"].Value;
IO.AI[$"{pm}.AI_ActualPositon"].FloatValue = IO.AO[$"{pm}.AO_SetpointPositon"].FloatValue;
IO.AI[$"{pm}.AI_ActualPositon"].Value = IO.AO[$"{pm}.AO_SetpointPositon"].Value;
//蝶阀开启,跟着蝶阀的设置值走
if (IO.DO[$"{pm}.DO_TVEnable"].Value)
{
if (IO.AI[$"{pm}.AI_ActualPressure"].FloatValue > IO.AO[$"{pm}.AO_SetpointPressure"].FloatValue)
if (IO.AI[$"{pm}.AI_ActualPressure"].Value > IO.AO[$"{pm}.AO_SetpointPressure"].Value)
{
if (IO.AI[$"{pm}.AI_ActualPressure"].FloatValue - 10 < IO.AO[$"{pm}.AO_SetpointPressure"].FloatValue)
if (IO.AI[$"{pm}.AI_ActualPressure"].Value - 10 < IO.AO[$"{pm}.AO_SetpointPressure"].Value)
{
IO.AI[$"{pm}.AI_ActualPressure"].FloatValue -= 10;
IO.AI[$"{pm}.AI_ActualPressure"].Value -= 10;
}
else
{
IO.AI[$"{pm}.AI_ActualPressure"].FloatValue = IO.AO[$"{pm}.AO_SetpointPressure"].FloatValue;
IO.AI[$"{pm}.AI_ActualPressure"].Value = IO.AO[$"{pm}.AO_SetpointPressure"].Value;
}
}
else if (IO.AI[$"{pm}.AI_ActualPressure"].FloatValue < IO.AO[$"{pm}.AO_SetpointPressure"].FloatValue)
else if (IO.AI[$"{pm}.AI_ActualPressure"].Value < IO.AO[$"{pm}.AO_SetpointPressure"].Value)
{
if (IO.AI[$"{pm}.AI_ActualPressure"].FloatValue + 10 < IO.AO[$"{pm}.AO_SetpointPressure"].FloatValue)
if (IO.AI[$"{pm}.AI_ActualPressure"].Value + 10 < IO.AO[$"{pm}.AO_SetpointPressure"].Value)
{
IO.AI[$"{pm}.AI_ActualPressure"].FloatValue += 10;
IO.AI[$"{pm}.AI_ActualPressure"].Value += 10;
}
else
{
IO.AI[$"{pm}.AI_ActualPressure"].FloatValue = IO.AO[$"{pm}.AO_SetpointPressure"].FloatValue;
IO.AI[$"{pm}.AI_ActualPressure"].Value = IO.AO[$"{pm}.AO_SetpointPressure"].Value;
}
}
}
@ -514,34 +514,34 @@ namespace SicSimulator.Instances
if (IO.DI[$"{pm}.DI_InnerGasFinalFB(V89)"].Value || IO.DI[$"{pm}.DI_MiddleGasFinalFB(V90)"].Value || IO.DI[$"{pm}.DI_OpticPurgeFinalFB(V91)"].Value || IO.DI[$"{pm}.DI_GasRingPurgeFinalFB(V92)"].Value
|| IO.DI[$"{pm}.DI_ChamberPurgeFinalFB(V93)"].Value || IO.DI[$"{pm}.DI_RotationUpPurgeFinalFB(V94)"].Value || IO.DI[$"{pm}.DI_ConfinementRingFinalFB(V95)"].Value || IO.DI[$"{pm}.DI_HeaterWFFinalFB(V96)"].Value)
{
if (IO.AI[$"{pm}.AI_ActualPressure"].FloatValue < 1200)
if (IO.AI[$"{pm}.AI_ActualPressure"].Value < 1200)
{
IO.AI[$"{pm}.AI_ActualPressure"].FloatValue += 10;
IO.AI[$"{pm}.AI_ActualPressure"].Value += 10;
}
}
}
//蝶阀Ramp有Bug,设置AO值可以化解
if (IO.AI[$"{pm}.AI_ActualPressure"].FloatValue >= 1100)
if (IO.AI[$"{pm}.AI_ActualPressure"].Value >= 1100)
{
IO.AO[$"{pm}.AO_SetpointPressure"].FloatValue = IO.AI[$"{pm}.AI_ActualPressure"].FloatValue;
IO.AO[$"{pm}.AO_SetpointPressure"].Value = IO.AI[$"{pm}.AI_ActualPressure"].Value;
}
IO.AI[$"{pm}.AI_ChamPress"].FloatValue = IO.AI[$"{pm}.AI_ActualPressure"].FloatValue;
IO.AI[$"{pm}.AI_ChamPress"].Value = IO.AI[$"{pm}.AI_ActualPressure"].Value;
//V27自动打开
if (IO.AI[$"{pm}.AI_ChamPress"].FloatValue > 1020 && IO.DO[$"{pm}.DO_PumpBypass(V27)"].Value != true)
if (IO.AI[$"{pm}.AI_ChamPress"].Value > 1020 && IO.DO[$"{pm}.DO_PumpBypass(V27)"].Value != true)
{
IO.DO[$"{pm}.DO_PumpBypass(V27)"].Value = true;
}
if (IO.AI[$"{pm}.AI_ChamPress"].FloatValue < 900 && IO.DO[$"{pm}.DO_PumpBypass(V27)"].Value)
if (IO.AI[$"{pm}.AI_ChamPress"].Value < 900 && IO.DO[$"{pm}.DO_PumpBypass(V27)"].Value)
{
IO.DO[$"{pm}.DO_PumpBypass(V27)"].Value = false;
}
//设置PT2的压力比PT1的小20
IO.AI[$"{pm}.AI_ForelinePress"].FloatValue = IO.AI[$"{pm}.AI_ChamPress"].FloatValue - 20 > 0 ? IO.AI[$"{pm}.AI_ChamPress"].FloatValue - 20 : 0;
IO.AI[$"{pm}.AI_ForelinePress"].Value = IO.AI[$"{pm}.AI_ChamPress"].Value - 20 > 0 ? IO.AI[$"{pm}.AI_ChamPress"].Value - 20 : 0;
}
@ -669,12 +669,12 @@ namespace SicSimulator.Instances
if (IO.DI["DI_ReactorADoorOpened"].Value || IO.DI["PM1.DI_TMPressBalanceFB(V70)"].Value)
{
IO.AI["AI_TMPressure1"].Value = Convert.ToInt16(IO.AI[$"PM1.AI_ChamPress"].FloatValue);
IO.AI["AI_TMPressure1"].Value = Convert.ToInt16(IO.AI[$"PM1.AI_ChamPress"].Value);
return;
}
if (IO.DI["DI_ReactorBDoorOpened"].Value || IO.DI["PM2.DI_TMPressBalanceFB(V70)"].Value)
{
IO.AI["AI_TMPressure1"].Value = Convert.ToInt16(IO.AI[$"PM2.AI_ChamPress"].FloatValue);
IO.AI["AI_TMPressure1"].Value = Convert.ToInt16(IO.AI[$"PM2.AI_ChamPress"].Value);
return;
}
else if(IO.DI["DI_TMLoadBanlanceFB"].Value)
@ -730,7 +730,7 @@ namespace SicSimulator.Instances
IO.AI["AI_TMPressure1"].Value = Convert.ToInt16(pressure);
if (IO.AI["AI_LoadPressure"].FloatValue > 960)
if (IO.AI["AI_LoadPressure"].Value > 960)
{
IO.DI["DI_LoadPressureATM"].Value = true;
}
@ -739,7 +739,7 @@ namespace SicSimulator.Instances
IO.DI["DI_LoadPressureATM"].Value = false;
}
if (IO.AI["AI_TMPressure1"].FloatValue > 960)
if (IO.AI["AI_TMPressure1"].Value > 960)
{
IO.DI["DI_TMPressure1ATM"].Value = true;
}
@ -1052,19 +1052,19 @@ namespace SicSimulator.Instances
IO.DI[$"{pm}.DI_SCR2Status"].Value = IO.DO[$"{pm}.DO_SCR2Enable"].Value;
IO.DI[$"{pm}.DI_SCR3Status"].Value = IO.DO[$"{pm}.DO_SCR3Enable"].Value;
//IO.AI[$"{pm}.AI_PresentLoop1Temp"].FloatValue = IO.AO[$"{pm}.AO_SetpointLoop1Temp"].FloatValue;
//IO.AI[$"{pm}.AI_Loop1ControlMode"].FloatValue = IO.AO[$"{pm}.AO_Loop1ControlMode"].FloatValue;
//IO.AI[$"{pm}.AI_Loop1ActualPower"].FloatValue = IO.AO[$"{pm}.AO_Loop1ManualOP"].FloatValue;
//IO.AI[$"{pm}.AI_PresentLoop1Temp"].Value = IO.AO[$"{pm}.AO_SetpointLoop1Temp"].Value;
//IO.AI[$"{pm}.AI_Loop1ControlMode"].Value = IO.AO[$"{pm}.AO_Loop1ControlMode"].Value;
//IO.AI[$"{pm}.AI_Loop1ActualPower"].Value = IO.AO[$"{pm}.AO_Loop1ManualOP"].Value;
//IO.DI[$"{pm}.DI_InnerHeaterEnable"].Value = IO.DO[$"{pm}.DO_InnerHeaterEnable"].Value;
//IO.AI[$"{pm}.AI_PresentLoop2Temp"].FloatValue = IO.AO[$"{pm}.AO_SetpointLoop2Temp"].FloatValue;
//IO.AI[$"{pm}.AI_Loop2ControlMode"].FloatValue = IO.AO[$"{pm}.AO_Loop2ControlMode"].FloatValue;
//IO.AI[$"{pm}.AI_Loop2ActualPower"].FloatValue = IO.AO[$"{pm}.AO_Loop2ManualOP"].FloatValue;
//IO.AI[$"{pm}.AI_PresentLoop2Temp"].Value = IO.AO[$"{pm}.AO_SetpointLoop2Temp"].Value;
//IO.AI[$"{pm}.AI_Loop2ControlMode"].Value = IO.AO[$"{pm}.AO_Loop2ControlMode"].Value;
//IO.AI[$"{pm}.AI_Loop2ActualPower"].Value = IO.AO[$"{pm}.AO_Loop2ManualOP"].Value;
//IO.DI[$"{pm}.DI_MiddleHeaterEnable"].Value = IO.DO[$"{pm}.DO_MiddleHeaterEnable"].Value;
//IO.AI[$"{pm}.AI_PresentLoop3Temp"].FloatValue = IO.AO[$"{pm}.AO_SetpointLoop3Temp"].FloatValue;
//IO.AI[$"{pm}.AI_Loop3ControlMode"].FloatValue = IO.AO[$"{pm}.AO_Loop3ControlMode"].FloatValue;
//IO.AI[$"{pm}.AI_Loop3ActualPower"].FloatValue = IO.AO[$"{pm}.AO_Loop3ManualOP"].FloatValue;
//IO.AI[$"{pm}.AI_PresentLoop3Temp"].Value = IO.AO[$"{pm}.AO_SetpointLoop3Temp"].Value;
//IO.AI[$"{pm}.AI_Loop3ControlMode"].Value = IO.AO[$"{pm}.AO_Loop3ControlMode"].Value;
//IO.AI[$"{pm}.AI_Loop3ActualPower"].Value = IO.AO[$"{pm}.AO_Loop3ManualOP"].Value;
//IO.DI[$"{pm}.DI_OuterHeaterEnable"].Value = IO.DO[$"{pm}.DO_OuterHeaterEnable"].Value;
}
private void MonitorGasConnector(string pm)
@ -1135,23 +1135,23 @@ namespace SicSimulator.Instances
if(IO.DI[$"{pm}.DI_ConfinementRingUp"].Value)
{
IO.AI[$"{pm}.AI_ConfinementRingCurPos"].FloatValue = IO.AO[$"{pm}.AO_ConfinementRingUpPos"].FloatValue;
IO.AI[$"{pm}.AI_ConfinementRingCurPos"].Value = IO.AO[$"{pm}.AO_ConfinementRingUpPos"].Value;
}
if (IO.DI[$"{pm}.DI_ConfinementRingDown"].Value)
{
IO.AI[$"{pm}.AI_ConfinementRingCurPos"].FloatValue = IO.AO[$"{pm}.AO_ConfinementRingDownPos"].FloatValue;
IO.AI[$"{pm}.AI_ConfinementRingCurPos"].Value = IO.AO[$"{pm}.AO_ConfinementRingDownPos"].Value;
}
IO.AI[$"{pm}.AI_ConfinementRingUpPos"].FloatValue = IO.AO[$"{pm}.AO_ConfinementRingUpPos"].FloatValue;
IO.AI[$"{pm}.AI_ConfinementRingDownPos"].FloatValue = IO.AO[$"{pm}.AO_ConfinementRingDownPos"].FloatValue;
IO.AI[$"{pm}.AI_ConfinementRingUpPos"].Value = IO.AO[$"{pm}.AO_ConfinementRingUpPos"].Value;
IO.AI[$"{pm}.AI_ConfinementRingDownPos"].Value = IO.AO[$"{pm}.AO_ConfinementRingDownPos"].Value;
}
private void MonitorRotation(string pm)
{
IO.AI[$"{pm}.AI_ActualSpeed"].FloatValue = IO.AO[$"{pm}.AO_SpindleSpeed"].FloatValue;
IO.AI[$"{pm}.AI_ActualSpeed"].Value = IO.AO[$"{pm}.AO_SpindleSpeed"].Value;
IO.DI[$"{pm}.DI_ConfinementRingServoOn"].Value = IO.DO[$"{pm}.DO_ConfinementRingServoOn"].Value;