Browse Source

mfc sv设定值是否延迟下发

jiangjy 18 hours ago
parent
commit
d6993113b7

+ 16 - 0
FrameworkLocal/Common/IOCore/IOAccessor.cs

@@ -330,6 +330,22 @@ namespace Aitex.Core.RT.IOCore
                 provider.SetValue(this, value);
             }
         }
+
+        public async Task<bool> SetPulseValue(float value, TimeSpan milliSecondsDelay)
+        {
+            IIoProvider provider = IoProviderManager.Instance.GetProvider(this.Provider);
+
+            await Task.Delay(milliSecondsDelay);
+
+            if (_floatValues[index] != value)
+            {
+                LOG.Write($"Write AO[{Name}] from {_floatValues[index]} to {value}, Delay {milliSecondsDelay.TotalSeconds}");
+            }
+
+            _floatValues[index] = value;
+            return true;
+
+        }
     }
 
 

+ 21 - 0
Furnace/FurnaceRT/Config/System.sccfg

@@ -950,6 +950,7 @@
 			<config default="false" name="EnableLogMessage" description="Enable log message" max="" min="" paramter="" tag="" unit="" type="Bool" />
 			<config default="3" name="ReconnectCount" description="MFC reconnect count" max="1000" min="0" paramter="" tag="" unit="s" type="Integer" />
 			<configs name="MFC1" display="MFC1">
+				<config default="0" name="DelayTime" description="DelayTime" max="999999" min="0" paramter="" tag="" unit="" type="Double" />
 				<config default="3" name="N2Scale" description="Scale" max="999999" min="0" paramter="" tag="" unit="slm" type="Double" />
 				<config default="12000" name="PhyScale" description="Physical Scale" max="999999" min="0" paramter="" tag="" unit="" type="Double" />
 				<config default="SLM" name="FlowUnit" description="Flow Unit" max="" min="" paramter="SCCM;SLM" tag="ReadOnlySelection" unit="" type="String" />
@@ -967,6 +968,7 @@
 				<config default="0" name="SetLastRamping" description="Set Ramping" max="999999" min="0" paramter="" tag="" unit="sccm" type="Double" visible="false" />
 			</configs>
 			<configs name="MFC2" display="MFC2">
+				<config default="0" name="DelayTime" description="DelayTime" max="999999" min="0" paramter="" tag="" unit="" type="Double" />
 				<config default="3" name="N2Scale" description="Scale" max="999999" min="0" paramter="" tag="" unit="slm" type="Double" />
 				<config default="12000" name="PhyScale" description="Physical Scale" max="999999" min="0" paramter="" tag="" unit="" type="Double" />
 				<config default="SLM" name="FlowUnit" description="Flow Unit" max="" min="" paramter="SCCM;SLM" tag="ReadOnlySelection" unit="" type="String" />
@@ -984,6 +986,7 @@
 				<config default="0" name="SetLastRamping" description="Set Ramping" max="999999" min="0" paramter="" tag="" unit="sccm" type="Double" visible="false" />
 			</configs>
 			<configs name="MFC3" display="MFC3">
+				<config default="0" name="DelayTime" description="DelayTime" max="999999" min="0" paramter="" tag="" unit="" type="Double" />
 				<config default="10" name="N2Scale" description="Scale" max="999999" min="0" paramter="" tag="" unit="slm" type="Double" />
 				<config default="12000" name="PhyScale" description="Physical Scale" max="999999" min="0" paramter="" tag="" unit="" type="Double" />
 				<config default="SLM" name="FlowUnit" description="Flow Unit" max="" min="" paramter="SCCM;SLM" tag="ReadOnlySelection" unit="" type="String" />
@@ -1001,6 +1004,7 @@
 				<config default="0" name="SetLastRamping" description="Set Ramping" max="999999" min="0" paramter="" tag="" unit="sccm" type="Double" visible="false" />
 			</configs>
 			<configs name="MFC4" display="MFC4">
+				<config default="0" name="DelayTime" description="DelayTime" max="999999" min="0" paramter="" tag="" unit="" type="Double" />
 				<config default="10" name="N2Scale" description="Scale" max="999999" min="0" paramter="" tag="" unit="slm" type="Double" />
 				<config default="12000" name="PhyScale" description="Physical Scale" max="999999" min="0" paramter="" tag="" unit="" type="Double" />
 				<config default="SLM" name="FlowUnit" description="Flow Unit" max="" min="" paramter="SCCM;SLM" tag="ReadOnlySelection" unit="" type="String" />
@@ -1018,6 +1022,7 @@
 				<config default="0" name="SetLastRamping" description="Set Ramping" max="999999" min="0" paramter="" tag="" unit="sccm" type="Double" visible="false" />
 			</configs>
 			<configs name="MFC5" display="MFC5">
+				<config default="0" name="DelayTime" description="DelayTime" max="999999" min="0" paramter="" tag="" unit="" type="Double" />
 				<config default="10" name="N2Scale" description="Scale" max="999999" min="0" paramter="" tag="" unit="slm" type="Double" />
 				<config default="12000" name="PhyScale" description="Physical Scale" max="999999" min="0" paramter="" tag="" unit="" type="Double" />
 				<config default="SLM" name="FlowUnit" description="Flow Unit" max="" min="" paramter="SCCM;SLM" tag="ReadOnlySelection" unit="" type="String" />
@@ -1035,6 +1040,7 @@
 				<config default="0" name="SetLastRamping" description="Set Ramping" max="999999" min="0" paramter="" tag="" unit="sccm" type="Double" visible="false" />
 			</configs>
 			<configs name="MFC6" display="MFC6">
+				<config default="0" name="DelayTime" description="DelayTime" max="999999" min="0" paramter="" tag="" unit="" type="Double" />
 				<config default="10" name="N2Scale" description="Scale" max="999999" min="0" paramter="" tag="" unit="slm" type="Double" />
 				<config default="12000" name="PhyScale" description="Physical Scale" max="999999" min="0" paramter="" tag="" unit="" type="Double" />
 				<config default="SLM" name="FlowUnit" description="Flow Unit" max="" min="" paramter="SCCM;SLM" tag="ReadOnlySelection" unit="" type="String" />
@@ -1052,6 +1058,7 @@
 				<config default="0" name="SetLastRamping" description="Set Ramping" max="999999" min="0" paramter="" tag="" unit="sccm" type="Double" visible="false" />
 			</configs>
 			<configs name="MFC7" display="MFC7">
+				<config default="0" name="DelayTime" description="DelayTime" max="999999" min="0" paramter="" tag="" unit="" type="Double" />
 				<config default="3" name="N2Scale" description="Scale" max="999999" min="0" paramter="" tag="" unit="slm" type="Double" />
 				<config default="12000" name="PhyScale" description="Physical Scale" max="999999" min="0" paramter="" tag="" unit="" type="Double" />
 				<config default="SLM" name="FlowUnit" description="Flow Unit" max="" min="" paramter="SCCM;SLM" tag="ReadOnlySelection" unit="" type="String" />
@@ -1069,6 +1076,7 @@
 				<config default="0" name="SetLastRamping" description="Set Ramping" max="999999" min="0" paramter="" tag="" unit="sccm" type="Double" visible="false" />
 			</configs>
 			<configs name="MFC8" display="MFC8">
+				<config default="0" name="DelayTime" description="DelayTime" max="999999" min="0" paramter="" tag="" unit="" type="Double" />
 				<config default="3" name="N2Scale" description="Scale" max="999999" min="0" paramter="" tag="" unit="slm" type="Double" />
 				<config default="12000" name="PhyScale" description="Physical Scale" max="999999" min="0" paramter="" tag="" unit="" type="Double" />
 				<config default="SLM" name="FlowUnit" description="Flow Unit" max="" min="" paramter="SCCM;SLM" tag="ReadOnlySelection" unit="" type="String" />
@@ -1086,6 +1094,7 @@
 				<config default="0" name="SetLastRamping" description="Set Ramping" max="999999" min="0" paramter="" tag="" unit="sccm" type="Double" visible="false" />
 			</configs>
 			<configs name="MFC9" display="MFC9">
+				<config default="0" name="DelayTime" description="DelayTime" max="999999" min="0" paramter="" tag="" unit="" type="Double" />
 				<config default="10" name="N2Scale" description="Scale" max="999999" min="0" paramter="" tag="" unit="slm" type="Double" />
 				<config default="12000" name="PhyScale" description="Physical Scale" max="999999" min="0" paramter="" tag="" unit="" type="Double" />
 				<config default="SLM" name="FlowUnit" description="Flow Unit" max="" min="" paramter="SCCM;SLM" tag="ReadOnlySelection" unit="" type="String" />
@@ -1103,6 +1112,7 @@
 				<config default="0" name="SetLastRamping" description="Set Ramping" max="999999" min="0" paramter="" tag="" unit="sccm" type="Double" visible="false" />
 			</configs>
 			<configs name="MFC10" display="MFC10">
+				<config default="0" name="DelayTime" description="DelayTime" max="999999" min="0" paramter="" tag="" unit="" type="Double" />
 				<config default="10" name="N2Scale" description="Scale" max="999999" min="0" paramter="" tag="" unit="slm" type="Double" />
 				<config default="12000" name="PhyScale" description="Physical Scale" max="999999" min="0" paramter="" tag="" unit="" type="Double" />
 				<config default="SLM" name="FlowUnit" description="Flow Unit" max="" min="" paramter="SCCM;SLM" tag="ReadOnlySelection" unit="" type="String" />
@@ -1120,6 +1130,7 @@
 				<config default="0" name="SetLastRamping" description="Set Ramping" max="999999" min="0" paramter="" tag="" unit="sccm" type="Double" visible="false" />
 			</configs>
 			<configs name="MFC11" display="MFC11">
+				<config default="0" name="DelayTime" description="DelayTime" max="999999" min="0" paramter="" tag="" unit="" type="Double" />
 				<config default="20" name="N2Scale" description="Scale" max="999999" min="0" paramter="" tag="" unit="slm" type="Double" />
 				<config default="12000" name="PhyScale" description="Physical Scale" max="999999" min="0" paramter="" tag="" unit="" type="Double" />
 				<config default="SLM" name="FlowUnit" description="Flow Unit" max="" min="" paramter="SCCM;SLM" tag="ReadOnlySelection" unit="" type="String" />
@@ -1137,6 +1148,7 @@
 				<config default="0" name="SetLastRamping" description="Set Ramping" max="999999" min="0" paramter="" tag="" unit="sccm" type="Double" visible="false" />
 			</configs>
 			<configs name="MFC12" display="MFC12">
+				<config default="0" name="DelayTime" description="DelayTime" max="999999" min="0" paramter="" tag="" unit="" type="Double" />
 				<config default="1" name="N2Scale" description="Scale" max="999999" min="0" paramter="" tag="" unit="slm" type="Double" />
 				<config default="12000" name="PhyScale" description="Physical Scale" max="999999" min="0" paramter="" tag="" unit="" type="Double" />
 				<config default="SLM" name="FlowUnit" description="Flow Unit" max="" min="" paramter="SCCM;SLM" tag="ReadOnlySelection" unit="" type="String" />
@@ -1154,6 +1166,7 @@
 				<config default="0" name="SetLastRamping" description="Set Ramping" max="999999" min="0" paramter="" tag="" unit="sccm" type="Double" visible="false" />
 			</configs>
 			<configs name="MFC13" display="MFC13">
+				<config default="0" name="DelayTime" description="DelayTime" max="999999" min="0" paramter="" tag="" unit="" type="Double" />
 				<config default="0.5" name="N2Scale" description="Scale" max="999999" min="0" paramter="" tag="" unit="slm" type="Double" />
 				<config default="12000" name="PhyScale" description="Physical Scale" max="999999" min="0" paramter="" tag="" unit="" type="Double" />
 				<config default="SLM" name="FlowUnit" description="Flow Unit" max="" min="" paramter="SCCM;SLM" tag="ReadOnlySelection" unit="" type="String" />
@@ -1171,6 +1184,7 @@
 				<config default="0" name="SetLastRamping" description="Set Ramping" max="999999" min="0" paramter="" tag="" unit="sccm" type="Double" visible="false" />
 			</configs>
 			<configs name="MFC14" display="MFC14">
+				<config default="0" name="DelayTime" description="DelayTime" max="999999" min="0" paramter="" tag="" unit="" type="Double" />
 				<config default="1" name="N2Scale" description="Scale" max="999999" min="0" paramter="" tag="" unit="slm" type="Double" />
 				<config default="12000" name="PhyScale" description="Physical Scale" max="999999" min="0" paramter="" tag="" unit="" type="Double" />
 				<config default="SLM" name="FlowUnit" description="Flow Unit" max="" min="" paramter="SCCM;SLM" tag="ReadOnlySelection" unit="" type="String" />
@@ -1188,6 +1202,7 @@
 				<config default="0" name="SetLastRamping" description="Set Ramping" max="999999" min="0" paramter="" tag="" unit="sccm" type="Double" visible="false" />
 			</configs>
 			<configs name="MFC15" display="MFC15">
+				<config default="0" name="DelayTime" description="DelayTime" max="999999" min="0" paramter="" tag="" unit="" type="Double" />
 				<config default="5" name="N2Scale" description="Scale" max="999999" min="0" paramter="" tag="" unit="slm" type="Double" />
 				<config default="12000" name="PhyScale" description="Physical Scale" max="999999" min="0" paramter="" tag="" unit="" type="Double" />
 				<config default="SLM" name="FlowUnit" description="Flow Unit" max="" min="" paramter="SCCM;SLM" tag="ReadOnlySelection" unit="" type="String" />
@@ -1205,6 +1220,7 @@
 				<config default="0" name="SetLastRamping" description="Set Ramping" max="999999" min="0" paramter="" tag="" unit="sccm" type="Double" visible="false" />
 			</configs>
 			<configs name="MFC16" display="MFC16">
+				<config default="0" name="DelayTime" description="DelayTime" max="999999" min="0" paramter="" tag="" unit="" type="Double" />
 				<config default="5" name="N2Scale" description="Scale" max="999999" min="0" paramter="" tag="" unit="slm" type="Double" />
 				<config default="12000" name="PhyScale" description="Physical Scale" max="999999" min="0" paramter="" tag="" unit="" type="Double" />
 				<config default="SLM" name="FlowUnit" description="Flow Unit" max="" min="" paramter="SCCM;SLM" tag="ReadOnlySelection" unit="" type="String" />
@@ -1222,6 +1238,7 @@
 				<config default="0" name="SetLastRamping" description="Set Ramping" max="999999" min="0" paramter="" tag="" unit="sccm" type="Double" visible="false" />
 			</configs>
 			<configs name="MFC17" display="MFC17">
+				<config default="0" name="DelayTime" description="DelayTime" max="999999" min="0" paramter="" tag="" unit="" type="Double" />
 				<config default="1" name="N2Scale" description="Scale" max="999999" min="0" paramter="" tag="" unit="slm" type="Double" />
 				<config default="12000" name="PhyScale" description="Physical Scale" max="999999" min="0" paramter="" tag="" unit="" type="Double" />
 				<config default="SLM" name="FlowUnit" description="Flow Unit" max="" min="" paramter="SCCM;SLM" tag="ReadOnlySelection" unit="" type="String" />
@@ -1239,6 +1256,7 @@
 				<config default="0" name="SetLastRamping" description="Set Ramping" max="999999" min="0" paramter="" tag="" unit="sccm" type="Double" visible="false" />
 			</configs>
 			<configs name="MFC31" display="MFC31">
+				<config default="0" name="DelayTime" description="DelayTime" max="999999" min="0" paramter="" tag="" unit="" type="Double" />
 				<config default="1" name="N2Scale" description="Scale" max="999999" min="0" paramter="" tag="" unit="slm" type="Double" />
 				<config default="12000" name="PhyScale" description="Physical Scale" max="999999" min="0" paramter="" tag="" unit="" type="Double" />
 				<config default="SLM" name="FlowUnit" description="Flow Unit" max="" min="" paramter="SCCM;SLM" tag="ReadOnlySelection" unit="" type="String" />
@@ -1256,6 +1274,7 @@
 				<config default="0" name="SetLastRamping" description="Set Ramping" max="999999" min="0" paramter="" tag="" unit="sccm" type="Double" visible="false" />
 			</configs>
 			<configs name="MFC32" display="MFC32">
+				<config default="0" name="DelayTime" description="DelayTime" max="999999" min="0" paramter="" tag="" unit="" type="Double" />
 				<config default="1" name="N2Scale" description="Scale" max="999999" min="0" paramter="" tag="" unit="slm" type="Double" />
 				<config default="12000" name="PhyScale" description="Physical Scale" max="999999" min="0" paramter="" tag="" unit="" type="Double" />
 				<config default="SLM" name="FlowUnit" description="Flow Unit" max="" min="" paramter="SCCM;SLM" tag="ReadOnlySelection" unit="" type="String" />
@@ -1273,6 +1292,7 @@
 				<config default="0" name="SetLastRamping" description="Set Ramping" max="999999" min="0" paramter="" tag="" unit="sccm" type="Double" visible="false" />
 			</configs>
 			<configs name="MFC51" display="MFC51">
+				<config default="0" name="DelayTime" description="DelayTime" max="999999" min="0" paramter="" tag="" unit="" type="Double" />
 				<config default="500" name="N2Scale" description="Scale" max="999999" min="0" paramter="" tag="" unit="slm" type="Double" />
 				<config default="12000" name="PhyScale" description="Physical Scale" max="999999" min="0" paramter="" tag="" unit="" type="Double" />
 				<config default="SLM" name="FlowUnit" description="Flow Unit" max="" min="" paramter="SCCM;SLM" tag="ReadOnlySelection" unit="" type="String" />
@@ -1290,6 +1310,7 @@
 				<config default="0" name="SetLastRamping" description="Set Ramping" max="999999" min="0" paramter="" tag="" unit="sccm" type="Double" visible="false" />
 			</configs>
 			<configs name="MFC57" display="MFC57">
+				<config default="0" name="DelayTime" description="DelayTime" max="999999" min="0" paramter="" tag="" unit="" type="Double" />
 				<config default="500" name="N2Scale" description="Scale" max="999999" min="0" paramter="" tag="" unit="slm" type="Double" />
 				<config default="12000" name="PhyScale" description="Physical Scale" max="999999" min="0" paramter="" tag="" unit="" type="Double" />
 				<config default="SLM" name="FlowUnit" description="Flow Unit" max="" min="" paramter="SCCM;SLM" tag="ReadOnlySelection" unit="" type="String" />

+ 7 - 2
Furnace/FurnaceRT/Devices/IoMFC.cs

@@ -45,9 +45,14 @@ namespace FurnaceRT.Equipments.PMs.Devices
                 _setpoint = value;
                 if (_aoFlow != null)
                 {
-                    //var setpoint = Scale != 0 ? (float)(value * _maxScale / Scale) : value;
                     if (_isFloatAioType)
-                        _aoFlow.FloatValue = (float)value;
+                    {
+                        if (SC.ContainsItem($"{Module}.MFC.{Name}.DelayTime") && SC.GetValue<double>($"{Module}.MFC.{Name}.DelayTime") > 0)
+                            _aoFlow.SetPulseValue((float)value, TimeSpan.FromSeconds(SC.GetValue<double>($"{Module}.MFC.{Name}.DelayTime")));
+                        else
+                            _aoFlow.FloatValue = (float)value;
+
+                    }
                     else
                         _aoFlow.Value = (short)value;
                 }