Ver código fonte

1.Venus DE process enhance
2.Venus DE chamber UI adjustment

hecl 1 ano atrás
pai
commit
fedcc95273

+ 17 - 26
Venus/Venus_MainPages/Views/OverVenusDEView.xaml

@@ -228,7 +228,6 @@
                 <ctrls:FlowPipe.IsFlowing>
                     <MultiBinding Converter="{StaticResource toBoolMultiValueConverter}">
                         <Binding Path="PVN22ValveIsOpen"/>
-                        <Binding Path="N2ValveIsOpen"/>
                     </MultiBinding>
                 </ctrls:FlowPipe.IsFlowing>
             </ctrls:FlowPipe>
@@ -717,7 +716,6 @@
                         <Binding Path="MFC10ValveIsOpen"/>
                         <Binding Path="MFC11ValveIsOpen"/>
                         <Binding Path="MFC12ValveIsOpen"/>
-                        <Binding Path="SecondPurgeValveIsOpen"/>
                     </MultiBinding>
                 </ctrls:FlowPipe.IsFlowing>
             </ctrls:FlowPipe>
@@ -727,7 +725,7 @@
 
             <ctrls:Pipe2    Canvas.Left="1080" Canvas.Top="120" HorizontalAlignment="Left" VerticalAlignment="Center" RenderTransformOrigin="0.077,0.231"  />
             <ctrls:Pipe2    Canvas.Left="1099" Canvas.Top="80" HorizontalAlignment="Left" VerticalAlignment="Top" RenderTransformOrigin="0.077,0.231"  />
-            <ctrls:Pipe2    Canvas.Left="552" Canvas.Top="89" HorizontalAlignment="Left" VerticalAlignment="Top" RenderTransformOrigin="0.077,0.231"  >
+            <ctrls:Pipe2    Canvas.Left="384" Canvas.Top="89" HorizontalAlignment="Center" VerticalAlignment="Center" RenderTransformOrigin="0.077,0.231" Height="13" Width="13"  >
                 <userControls:Pipe2.RenderTransform>
                     <TransformGroup>
                         <ScaleTransform/>
@@ -1045,10 +1043,8 @@
             <ctrls:FlowPipe   Height="8"  Width="255" Canvas.Left="798"  Canvas.Top="658" IsFlowing="{Binding PVHe1ValveIsOpen}" HorizontalAlignment="Left" VerticalAlignment="Center"/>
             <ctrls:FlowPipe   Height="8"  Width="148" Canvas.Left="1055"  Canvas.Top="463" RotateTransformValue="90"  IsReverse="{Binding PVHe1ValveIsOpen}">
                 <ctrls:FlowPipe.IsFlowing>
-                    <MultiBinding Converter="{StaticResource toBoolMultiValueConverter2}">
-                        <Binding Path="PVHe1ValveIsOpen"/>
-                        <Binding Path="PVHe2ValveIsOpen"/>
-                        <Binding Path="PVHe3ValveIsOpen"/>
+                    <MultiBinding Converter="{StaticResource toBoolMultiValueConverter}">
+                        <Binding Path="HeISOValveIsOpen"/>
                     </MultiBinding>
                 </ctrls:FlowPipe.IsFlowing>
             </ctrls:FlowPipe>
@@ -1322,7 +1318,7 @@
                 <customControls:PathButton Width="110" Height="30" Content="Next"    IsEnabled="{Binding IsProcessing}" Command="{Binding EndStepCommand}" Margin="15 0 0 0"/>
                 <customControls:PathButton Width="110" Height="30" Content="Abort"   IsEnabled="{Binding IsProcessing}" Command="{Binding PMAbortCommnad}" Margin="15 0 0 0"/>
             </StackPanel>
-           
+
 
             <Grid  Width="540" Height="500" Canvas.Left="700" Canvas.Top="200"  unity:GridOptions.ShowBorder="True" unity:GridOptions.LineBrush="#afb4db"  unity:GridOptions.LineThickness="1">
                 <Grid.RowDefinitions>
@@ -1832,11 +1828,11 @@
                 <customControls:PathButton  Width="134" Height="30" Content="Pump Down"     Command="{Binding PumpCommand}"         Margin="50,0,0,0" IsEnabled="{Binding IsAutoMode,Converter={StaticResource BoolToBool}}"/>
             </StackPanel>
         </Border>
-        <userControls:FlowPipe  Height="8"  Width="538" Canvas.Left="562" Canvas.Top="120" HorizontalAlignment="Left" VerticalAlignment="Center">
+        <userControls:FlowPipe  Height="8"  Width="706" Canvas.Left="394" Canvas.Top="120" HorizontalAlignment="Left" VerticalAlignment="Center">
             <userControls:FlowPipe.IsFlowing>
                 <MultiBinding Converter="{StaticResource toBoolMultiValueConverter4}">
                     <Binding Path="PurgeValveIsOpen"/>
-                    <Binding Path="N2ValveIsOpen"/>
+                    <Binding Path="PVN22ValveIsOpen"/>
                     <Binding Path="PV11ValveIsOpen"/>
                     <Binding Path="PV21ValveIsOpen"/>
                     <Binding Path="PV31ValveIsOpen"/>
@@ -1849,7 +1845,6 @@
                     <Binding Path="MFC10ValveIsOpen"/>
                     <Binding Path="MFC11ValveIsOpen"/>
                     <Binding Path="MFC12ValveIsOpen"/>
-                    <Binding Path="SecondPurgeValveIsOpen"/>
                 </MultiBinding>
             </userControls:FlowPipe.IsFlowing>
         </userControls:FlowPipe>
@@ -1857,25 +1852,21 @@
         <customControls:CommonValveControl Status="{Binding PurgeValveIsOpen, Mode=TwoWay}"  ValveOrientation="Horizontal" Height="20" Width="20" Canvas.Left="922" Canvas.Top="114" IsCanEdit="{Binding IsAutoMode, Converter={StaticResource BoolToBool}}" Tag="Purge" Command="{Binding ControlValveCommand}" CommandParameter="{Binding RelativeSource={x:Static RelativeSource.Self}}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
         <userControls:FlowPipe  Height="8"  Width="218" Canvas.Left="1112" Canvas.Top="132" RotateTransformValue="90" HorizontalAlignment="Left" VerticalAlignment="Top">
             <userControls:FlowPipe.IsFlowing>
-                <MultiBinding Converter="{StaticResource toBoolMultiValueConverter4}">
+                <MultiBinding Converter="{StaticResource toBoolMultiValueConverter}">
                     <Binding Path="PurgeValveIsOpen"/>
-                    <Binding Path="N2ValveIsOpen"/>
-                    <Binding Path="PV11ValveIsOpen"/>
-                    <Binding Path="PV21ValveIsOpen"/>
-                    <Binding Path="PV31ValveIsOpen"/>
-                    <Binding Path="PV41ValveIsOpen"/>
-                    <Binding Path="MFC5ValveIsOpen"/>
-                    <Binding Path="MFC6ValveIsOpen"/>
-                    <Binding Path="MFC7ValveIsOpen"/>
-                    <Binding Path="MFC8ValveIsOpen"/>
-                    <Binding Path="MFC9ValveIsOpen"/>
-                    <Binding Path="MFC10ValveIsOpen"/>
-                    <Binding Path="MFC11ValveIsOpen"/>
-                    <Binding Path="MFC12ValveIsOpen"/>
+                    <Binding Path="PVN22ValveIsOpen"/>
                 </MultiBinding>
             </userControls:FlowPipe.IsFlowing>
         </userControls:FlowPipe>
-        <userControls:FlowPipe   Height="8"  Width="32" Canvas.Left="558"  Canvas.Top="129" RotateTransformValue="90" IsReverse="True" Panel.ZIndex="5" HorizontalAlignment="Left" VerticalAlignment="Top">
+        <userControls:FlowPipe   Height="8"  Width="32" Canvas.Left="370"  Canvas.Top="143" RotateTransformValue="90" IsReverse="True" Panel.ZIndex="5" HorizontalAlignment="Left" VerticalAlignment="Top" RenderTransformOrigin="0.844,3.438">
+            <userControls:FlowPipe.RenderTransform>
+                <TransformGroup>
+                    <ScaleTransform/>
+                    <SkewTransform/>
+                    <RotateTransform Angle="89.959"/>
+                    <TranslateTransform X="-34.512" Y="-12.496"/>
+                </TransformGroup>
+            </userControls:FlowPipe.RenderTransform>
             <userControls:FlowPipe.IsFlowing>
                 <MultiBinding Converter="{StaticResource toBoolMultiValueConverter4}">
                     <Binding Path="PurgeValveIsOpen"/>

+ 13 - 2
Venus/Venus_RT/Devices/IODevices/IoMagnet.cs

@@ -117,13 +117,13 @@ namespace Venus_RT.Devices.IODevices
         }
         public void Monitor()
         {
-            Setpoint(_aoMagnetFieldRadio, Convert.ToSingle(SC.GetConfigItem($"{Module}.Magnet.MagentFieldRatio").Value));
+            //Setpoint(_aoMagnetFieldRadio, Convert.ToSingle(SC.GetConfigItem($"{Module}.Magnet.MagentFieldRatio").Value));
             Setpoint(_ao1Aoutput, Convert.ToSingle(SC.GetConfigItem($"{Module}.Magnet.Magnet_1A_output_full_scale").Value));
             Setpoint(_ao1Boutput, Convert.ToSingle(SC.GetConfigItem($"{Module}.Magnet.Magnet_1B_output_full_scale").Value));
             Setpoint(_ao2Aoutput, Convert.ToSingle(SC.GetConfigItem($"{Module}.Magnet.Magnet_2A_output_full_scale").Value));
             Setpoint(_ao2Boutput, Convert.ToSingle(SC.GetConfigItem($"{Module}.Magnet.Magnet_2B_output_full_scale").Value));
             Setpoint(_aoMagnetCycle, Convert.ToSingle(SC.GetConfigItem($"{Module}.Magnet.Magnetcycleperiod").Value));
-            Setpoint(_aoMagnetWaveForm, Convert.ToSingle(SC.GetConfigItem($"{Module}.Magnet.Magnetwareform").Value));
+            //Setpoint(_aoMagnetWaveForm, Convert.ToSingle(SC.GetConfigItem($"{Module}.Magnet.Magnetwareform").Value));
         }
        
         public float Magent1V
@@ -180,6 +180,17 @@ namespace Venus_RT.Devices.IODevices
             _SetRealFloat(_aoMagnetintensity, val);
             return true;  
         }
+        public bool SetFieldRatio(float val)
+        {
+            _SetRealFloat(_aoMagnetFieldRadio, val);
+            return true;
+        }
+
+        public bool SetWaveform(int val)
+        {
+            _SetRealFloat(_aoMagnetWaveForm, val);
+            return true;
+        }
         public float Magent2W
         {
             get

+ 4 - 0
Venus/Venus_RT/Devices/JetPMBase.cs

@@ -531,6 +531,10 @@ namespace Venus_RT.Devices
         { return false; }
         public virtual bool MagnetSetpower(float val)
         { return false; }
+        public virtual bool SetFieldRatio(float val)
+        { return false; }
+        public virtual bool SetWaveform(int val)
+        { return false; }
         public virtual bool GeneratorBiasSetpower(float val)
         { return false; }
 

+ 17 - 2
Venus/Venus_RT/Devices/JetVenusDEPM.cs

@@ -727,9 +727,8 @@ namespace Venus_RT.Devices
             {
                 OpenValve(ValveType.Purge, true);
                 OpenValve(ValveType.GasFinal, false);
-                OpenValve(ValveType.N2, true);
+                //OpenValve(ValveType.N2, true);
                 OpenValve(ValveType.PVN22, true);
-                //FlowGas(12, flowSetpoint);
                 TurnPendulumValve(true);
                 SetPVPressure(pressureSetpoint);
                 return true;
@@ -939,6 +938,22 @@ namespace Venus_RT.Devices
                 _Magnet.SetMagnetPower(val);
             return true;
         }
+
+        public override bool SetFieldRatio(float val)
+        {
+            if (_Magnet == null) return false;
+
+            _Magnet.SetFieldRatio(val);
+            return true;
+        }
+
+        public override bool SetWaveform(int val)
+        {
+            if (_Magnet == null) return false;
+
+            _Magnet.SetWaveform(val);
+            return true;
+        }
         public override float GetPVPosition()
         {
             return _pendulumValve.Position;

+ 60 - 63
Venus/Venus_RT/Devices/TruPlasmaRF.cs

@@ -30,7 +30,7 @@ namespace Venus_RT.Devices
         {
             this.Status = GeneratorStatus.Unknown;
             var portNum = SC.GetStringValue(device == VenusDevice.Rf ? $"{mod}.Rf.Port" : $"{mod}.BiasRf.Port");
-            _serial = new AsyncSerialPort(portNum, 9600, 8, System.IO.Ports.Parity.None, System.IO.Ports.StopBits.One,"/r", false);
+            _serial = new AsyncSerialPort(portNum, 9600, 8, System.IO.Ports.Parity.None, System.IO.Ports.StopBits.One, "/r", false);
         }
         public override bool Initialize()
         {
@@ -49,7 +49,7 @@ namespace Venus_RT.Devices
                 return false;
             }
             return true;
- 
+
         }
         public new AITRfData DeviceData =>
             new AITRfData
@@ -67,22 +67,22 @@ namespace Venus_RT.Devices
             try
             {
                 buffer.AddRange(rawMessage);
-                while (buffer.Count >= 18) //至少包含帧头(2字节)、长度(1字节)、校验位(1字节);根据设计不同而不同
+                while (buffer.Count >= 18) //至少包含ACK帧头(1字节)、长度、校验位(17或12字节)
                 {
-                //2.1 查找数据头
-                if (buffer[0] == 0x06) //传输数据有帧头,用于判断
-                {                  
-                    //得到完整的数据,复制到ReceiveBytes中进行校验
-                    byte[] ReceiveBytes = new byte[13];
-                    byte[] ReadReceiveBytes = new byte[18];
-
-                    buffer.CopyTo(0, ReceiveBytes, 0, 13);
-                    buffer.CopyTo(0, ReadReceiveBytes, 0, 18);
-                        if ((ReceiveBytes[12] == 0x55)&& (ReceiveBytes[1] == 0xAA)) //校验失败,最后一个字节是校验位
+                    //2.1 查找数据头
+                    if (buffer[0] == 0x06) //传输数据有帧头,用于判断
+                    {
+                        //得到完整的数据,复制到ReceiveBytes中进行校验
+                        byte[] ReceiveBytes = new byte[13];
+                        byte[] ReadReceiveBytes = new byte[18];
+
+                        buffer.CopyTo(0, ReceiveBytes, 0, 13);
+                        buffer.CopyTo(0, ReadReceiveBytes, 0, 18);
+                        if ((ReceiveBytes[12] == 0x55) && (ReceiveBytes[1] == 0xAA)) //校验,最后一个字节是校验位
                         {
                             parsecmd(ReceiveBytes);
                             buffer.RemoveRange(0, 13);
-                           
+
                         }
                         else if ((ReadReceiveBytes[17] == 0x55) && (ReceiveBytes[1] == 0xAA))
                         {
@@ -94,21 +94,18 @@ namespace Venus_RT.Devices
                             buffer.Clear();
                             LOG.Write(eEvent.ERR_RF, Module, $"rf通讯错误");
                         }
-                    
-
-                    ///执行对数据进行处理操作RunReceiveDataCallback(ReceiveBytes);
-                }
-                else //帧头不正确时,记得清除
-                {
-                    //buffer.RemoveAt(0);
+                    }
+                    else //帧头不正确时,记得清除
+                    {
+                        //buffer.RemoveAt(0);
+                    }
                 }
             }
-            }
             catch (Exception ex)
             {
                 buffer.Clear();
                 LOG.WriteExeption(ex);
-            }         
+            }
         }
         public GeneratorStatus Status { get; set; }
         private bool GetBitValue(byte value, int bit)
@@ -122,9 +119,9 @@ namespace Venus_RT.Devices
         }
         public void parsecmd(byte[] message)
         {
-            try 
+            try
             {
-                IsPowerOn = GetBitValue(message[4], 4);              
+                IsPowerOn = GetBitValue(message[4], 4);
                 if (GetBitValue(message[4], 4))
                 {
                     Status = GeneratorStatus.ON;
@@ -137,11 +134,12 @@ namespace Venus_RT.Devices
                 switch (message[5])
                 {
                     case 0x01://ParamRead
-                        if (message.Length == 18 && message[6]==0x14)
+                        if (message.Length == 18 && message[6] == 0x14)
                         {
                             int DataValue = BitConverter.ToInt32(new byte[] { message[11], message[12], message[13], message[14] }, 0);
                             ReflectPower = DataValue;
-                        }else if (message.Length == 18 && message[6] == 0x12)
+                        }
+                        else if (message.Length == 18 && message[6] == 0x12)
                         {
                             int DataValue1 = BitConverter.ToInt32(new byte[] { message[11], message[12], message[13], message[14] }, 0);
                             ForwardPower = DataValue1;
@@ -171,7 +169,7 @@ namespace Venus_RT.Devices
                         break;
                 }
             }
-            catch (Exception ex) 
+            catch (Exception ex)
             {
                 LOG.WriteExeption(ex);
             }
@@ -190,7 +188,7 @@ namespace Venus_RT.Devices
             byte[] valueBytes = BitConverter.GetBytes((int)val);
             baseBytes.AddRange(valueBytes);
             baseBytes = CRC16(baseBytes.ToArray());
-            baseBytes.Add(0x55);           
+            baseBytes.Add(0x55);
             _serial.Write(baseBytes.ToArray());
         }
         public override void Monitor()
@@ -230,7 +228,7 @@ namespace Venus_RT.Devices
             _serial.Write(getincontrol.ToArray());
         }
         public override bool SetPowerOnOff(bool on, out string str)
-        {           
+        {
             str = "";
             var _chamber = DEVICE.GetDevice<JetPMBase>(Module);
             if (on && !_chamber.CheckGeneratorAndHVInterlock(VenusDevice.Rf))
@@ -240,7 +238,7 @@ namespace Venus_RT.Devices
             getcontrol();
             List<byte> baseBytes = new List<byte>() { 0xAA, 0x02, 0x0B, 0x00, 0x02, 0x6F, 0x00, 0x01, 0x00, 0x07 };
             if (on == true)
-            {          
+            {
                 baseBytes.AddRange(new List<byte> { 0x01, 0x00, 0x00, 0x00 });
             }
             else
@@ -275,7 +273,7 @@ namespace Venus_RT.Devices
         public override void SetPulseRateFreq(int nFreq)
         {
             if (nFreq > 0)
-            {              
+            {
                 List<byte> baseBytes = new List<byte>() { 0xAA, 0x02, 0x0B, 0x00, 0x02, 0x6C, 0x01, 0x01, 0x00, 0x04 };
                 byte[] valueBytes = BitConverter.GetBytes(nFreq);
                 baseBytes.AddRange(valueBytes);
@@ -402,7 +400,7 @@ namespace Venus_RT.Devices
         public TruPlasmaMatch(ModuleName mod, VenusDevice device) : base(mod.ToString(), device.ToString())
         {
             var portNum = SC.GetStringValue($"{mod}.{device}.Port");
-           _serial = new AsyncSerialPort(portNum, 9600, 8, System.IO.Ports.Parity.None, System.IO.Ports.StopBits.One, "/r", false);
+            _serial = new AsyncSerialPort(portNum, 9600, 8, System.IO.Ports.Parity.None, System.IO.Ports.StopBits.One, "/r", false);
             intervalTime = 100;
         }
 
@@ -468,7 +466,7 @@ namespace Venus_RT.Devices
 
         public override void Monitor()
         {
-            ReadPosition(40,20);
+            ReadPosition(40, 20);//0x10 (present mode)CMD 可实现任意模式下只读不设值,0x08(auto then manual)在auto模式下可实现相同功能
         }
 
         public override void Terminate()
@@ -487,8 +485,7 @@ namespace Venus_RT.Devices
         /// 
         private void executeMatchPostion(float c1, float c2)
         {
-            SetPositionManual(c1, c2);
-            SetPositionManualAuto(c1, c2);          
+            SetPositionManualAuto(c1, c2);
         }
         public override void SetMatchPosition(float c1, float c2, out string reason)
         {
@@ -505,17 +502,17 @@ namespace Venus_RT.Devices
         //
         private void SerialBinaryPortDataReceived(byte[] message)
         {
-            if (message.Count()<29)
+            if (message.Count() < 29)
             {
                 LOG.Write(eEvent.ERR_RF, Module, "收到 Match 数据为空");
                 return;
             }
-            else 
+            else
             {
                 try
                 {
                     buffer.AddRange(message);
-                    while (buffer.Count >= 29) //至少包含帧头(2字节)、长度(1字节)、校验位(1字节);根据设计不同而不同
+                    while (buffer.Count >= 29) //至少包含帧头(1字节)、长度(1字节)、其余27字节
                     {
                         //2.1 查找数据头
                         if (buffer[0] == 0x1D && buffer[1] == 0xE2) //传输数据有帧头,用于判断
@@ -526,21 +523,21 @@ namespace Venus_RT.Devices
                             TunePosition1 = BitConverter.ToSingle(new byte[] { ReceiveBytes[10], ReceiveBytes[11], ReceiveBytes[12], ReceiveBytes[13] }, 0) * 100;
                             TunePosition2 = BitConverter.ToSingle(new byte[] { ReceiveBytes[14], ReceiveBytes[15], ReceiveBytes[16], ReceiveBytes[17] }, 0) * 100;
                             buffer.RemoveRange(0, 29);
-                            switch (message[7])
-                             {
-                               case 0x01:
-                                   this.WorkMode = EnumRfMatchTuneMode.Manual;
-                                   break;
-                               case 0x02:
-                                   this.WorkMode = EnumRfMatchTuneMode.Auto;
-                                   break;
-                               case 0x20:
-                                   this.WorkMode = EnumRfMatchTuneMode.Undefined;
-                                   break;
-                               default:
-                                   break;
-                                }                          
-                        }                      
+                            switch (ReceiveBytes[19])
+                            {
+                                case 0x01:
+                                    this.WorkMode = EnumRfMatchTuneMode.Manual;
+                                    break;
+                                case 0x02:
+                                    this.WorkMode = EnumRfMatchTuneMode.Auto;
+                                    break;
+                                case 0x20:
+                                    this.WorkMode = EnumRfMatchTuneMode.Undefined;
+                                    break;
+                                default:
+                                    break;
+                            }
+                        }
                         else //帧头不正确时,记得清除
                         {
                             buffer.Clear();
@@ -553,7 +550,7 @@ namespace Venus_RT.Devices
                     buffer.Clear();
                     LOG.WriteExeption(ex);
                 }
-            }               
+            }
         }
 
         private void SerialPortErrorOccurred(string str)
@@ -569,7 +566,7 @@ namespace Venus_RT.Devices
             byte[] val1Bytes = BitConverter.GetBytes(c1val / 100);
             byte[] val2Bytes = BitConverter.GetBytes(c2val / 100);
             List<byte> Act = new List<byte>() { 0x00 };
-            List<byte> Ctr123 = new List<byte> { 0x08, 0x00, 0x00 };
+            List<byte> Ctr123 = new List<byte> { 0x01, 0x00, 0x00 };
             List<byte> baseBytes = new List<byte>() { };
             baseBytes.AddRange(Len);
             baseBytes.AddRange(DstSrc);
@@ -594,8 +591,8 @@ namespace Venus_RT.Devices
         }
         private void SetPositionManualAuto(float c1val, float c2val)
         {
-            List<byte> Len = new List<byte>() { 0x16, 0xE9};
-            List<byte> DstSrc = new List<byte>() { 0x00, 0x02, 0x00, 0x01};
+            List<byte> Len = new List<byte>() { 0x16, 0xE9 };
+            List<byte> DstSrc = new List<byte>() { 0x00, 0x02, 0x00, 0x01 };
             List<byte> Cmd = new List<byte> { 0x60, 0x40 };
             byte[] val1Bytes = BitConverter.GetBytes(c1val / 100);
             byte[] val2Bytes = BitConverter.GetBytes(c2val / 100);
@@ -610,13 +607,13 @@ namespace Venus_RT.Devices
             baseBytes.AddRange(Act);
             baseBytes.AddRange(Ctr123);
             int a = 0;
-            for (int i=2; i< baseBytes.Count;i++)
+            for (int i = 2; i < baseBytes.Count; i++)
             {
-                a+=(Int16)baseBytes[i];
+                a += (Int16)baseBytes[i];
             }
-            byte []ackture= new byte[2];
-            
-            byte[]ackbyte= BitConverter.GetBytes(a);
+            byte[] ackture = new byte[2];
+
+            byte[] ackbyte = BitConverter.GetBytes(a);
             ackture[0] = ackbyte[1];
             ackture[1] = ackbyte[0];
             baseBytes.AddRange(ackture);

+ 2 - 2
Venus/Venus_RT/Modules/PMs/ProcessDefine.cs

@@ -1029,13 +1029,13 @@ namespace Venus_RT.Modules.PMs
         private RState MagnetUnit_Start(ProcessUnitBase unit, RecipeStep step)
         {
             var ProcessUnit = unit as MagnetUnit;
-            if (Chamber.MagnetSetpower(ProcessUnit.MagnetIntensity))
+            if (Chamber.MagnetSetpower(ProcessUnit.MagnetIntensity)&& Chamber.SetFieldRatio(ProcessUnit.FieldRatio) && Chamber.SetWaveform(ProcessUnit.MagnetWaveform))
             {
                 return RState.Running;
             }
             else
             {
-                LOG.Write(eEvent.ERR_PROCESS, Chamber.Module, $"Step:{step.StepNo} failed duo to Magnet Write C1 failed ");
+                LOG.Write(eEvent.ERR_PROCESS, Chamber.Module, $"Step:{step.StepNo} failed duo to Magnet Write Intensity failed");
                 return RState.Failed;
             }
         }