diff --git a/Admin.Core.RealTimeService/obj/Debug/net6.0/Admin.Core.RealTimeService.AssemblyInfo.cs b/Admin.Core.RealTimeService/obj/Debug/net6.0/Admin.Core.RealTimeService.AssemblyInfo.cs
index d49abd81..18bdc6ae 100644
--- a/Admin.Core.RealTimeService/obj/Debug/net6.0/Admin.Core.RealTimeService.AssemblyInfo.cs
+++ b/Admin.Core.RealTimeService/obj/Debug/net6.0/Admin.Core.RealTimeService.AssemblyInfo.cs
@@ -14,7 +14,7 @@ using System.Reflection;
 [assembly: System.Reflection.AssemblyCompanyAttribute("Admin.Core.RealTimeService")]
 [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
 [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
-[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
+[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+f9d9caac0eee191810018a8da33b8e1237b0f0fb")]
 [assembly: System.Reflection.AssemblyProductAttribute("Admin.Core.RealTimeService")]
 [assembly: System.Reflection.AssemblyTitleAttribute("Admin.Core.RealTimeService")]
 [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
diff --git a/Admin.Core.RealTimeService/obj/Debug/net6.0/Admin.Core.RealTimeService.AssemblyInfoInputs.cache b/Admin.Core.RealTimeService/obj/Debug/net6.0/Admin.Core.RealTimeService.AssemblyInfoInputs.cache
index d77b8cba..2d9cb893 100644
--- a/Admin.Core.RealTimeService/obj/Debug/net6.0/Admin.Core.RealTimeService.AssemblyInfoInputs.cache
+++ b/Admin.Core.RealTimeService/obj/Debug/net6.0/Admin.Core.RealTimeService.AssemblyInfoInputs.cache
@@ -1 +1 @@
-0868e6bde5b49a65a126b91d794e990427a11761
+eadcc1228f6056a0472f8d77385e47a79ee23c2d78d9df09d62b6ffbc0733c9f
diff --git a/Admin.Core.RealTimeService/obj/Debug/net6.0/Admin.Core.RealTimeService.GeneratedMSBuildEditorConfig.editorconfig b/Admin.Core.RealTimeService/obj/Debug/net6.0/Admin.Core.RealTimeService.GeneratedMSBuildEditorConfig.editorconfig
index 19085d53..8f33dc40 100644
--- a/Admin.Core.RealTimeService/obj/Debug/net6.0/Admin.Core.RealTimeService.GeneratedMSBuildEditorConfig.editorconfig
+++ b/Admin.Core.RealTimeService/obj/Debug/net6.0/Admin.Core.RealTimeService.GeneratedMSBuildEditorConfig.editorconfig
@@ -8,4 +8,6 @@ build_property.PlatformNeutralAssembly =
 build_property.EnforceExtendedAnalyzerRules = 
 build_property._SupportedPlatformList = Linux,macOS,Windows
 build_property.RootNamespace = Admin.Core.RealTimeService
-build_property.ProjectDir = E:\c#\AUCMA\最新代码整合\new\Admin.Core.RealTimeService\
+build_property.ProjectDir = D:\Project\gitea\AUCMA\SCADA\Admin.Core.RealTimeService\
+build_property.EnableComHosting = 
+build_property.EnableGeneratedComInterfaceComImportInterop = 
diff --git a/Aucma.Core.BoxFoam/Aucma.Core.BoxFoam.csproj b/Aucma.Core.BoxFoam/Aucma.Core.BoxFoam.csproj
index a4a39d03..183d30c5 100644
--- a/Aucma.Core.BoxFoam/Aucma.Core.BoxFoam.csproj
+++ b/Aucma.Core.BoxFoam/Aucma.Core.BoxFoam.csproj
@@ -74,6 +74,7 @@
 
   <ItemGroup>
     <ProjectReference Include="..\Admin.Core.Extensions\Admin.Core.Extensions.csproj" />
+    <ProjectReference Include="..\Aucma.Core.DataCollector\Aucma.Core.DataCollector.csproj" />
   </ItemGroup>
 
   <ItemGroup>
diff --git a/Aucma.Core.BoxFoam/Business/InStoreBusiness.cs b/Aucma.Core.BoxFoam/Business/InStoreBusiness.cs
index 234657b4..bb5b0b99 100644
--- a/Aucma.Core.BoxFoam/Business/InStoreBusiness.cs
+++ b/Aucma.Core.BoxFoam/Business/InStoreBusiness.cs
@@ -19,6 +19,8 @@ using Admin.Core.Model.Model_New;
 using static ICSharpCode.SharpZipLib.Zip.ExtendedUnixData;
 using Microsoft.IdentityModel.Logging;
 using Admin.Core.Socket;
+using Admin.Core.Service;
+using TouchSocket.Core;
 
 namespace Aucma.Core.BoxFoam.Business
 {
@@ -218,6 +220,7 @@ namespace Aucma.Core.BoxFoam.Business
                     {
                         flag = false;
                         var obj = PlcHelper.siemensList.FirstOrDefault(d => d.EquipName.Equals("PqPlc"));
+                        var foamLine1 = PlcHelper.siemensList.FirstOrDefault(d => d.EquipName.Equals("foamLine1Plc"));//发泡线1
                         if (obj != null)
                         {
                             if (obj.plc.IsConnected)
@@ -230,26 +233,119 @@ namespace Aucma.Core.BoxFoam.Business
                                         case "PB01_001":
                                             item.SpaceStock= obj.plc.ReadInt16("DB200.440");
                                             item.OnRouteAmount = item.SpaceStock-obj.plc.ReadInt16("DB200.88");
+                                            if (foamLine1 != null)
+                                            {
+                                                if (foamLine1.plc.IsConnected)
+                                                {
+                                                    item.MaterialType = obj.plc.ReadString("DB400.16.0");
+                                                    if (!string.IsNullOrEmpty(item.MaterialType))
+                                                    {
+                                                        var printBarCode001 = _printBarCodeServices.FirstAsync(d => d.MaterialCode == item.MaterialType).Result;
+                                                        if (printBarCode001 != null)
+                                                        {
+                                                            item.typeNameA = printBarCode001.MaterialName;
+                                                        }
+                                                    }
+                                                }
+                                            }
                                             break;
                                         case "PB01_002":
                                             item.SpaceStock = obj.plc.ReadInt16("DB200.442");
                                             item.OnRouteAmount = item.SpaceStock - obj.plc.ReadInt16("DB200.90");
+                                          
+                                            if (foamLine1 != null)
+                                            {
+                                                if (foamLine1.plc.IsConnected)
+                                                {
+                                                    item.MaterialType = obj.plc.ReadString("DB400.28.0");
+                                                    if (!string.IsNullOrEmpty(item.MaterialType))
+                                                    {
+                                                        var printBarCode002 = _printBarCodeServices.FirstAsync(d => d.MaterialCode == item.MaterialType).Result;
+                                                        if (printBarCode002 != null)
+                                                        {
+                                                            item.typeNameA = printBarCode002.MaterialName;
+                                                        }
+                                                    }
+                                                }
+                                            }
                                             break;
                                         case "PB01_003":
                                             item.SpaceStock = obj.plc.ReadInt16("DB200.444");
                                             item.OnRouteAmount = item.SpaceStock - obj.plc.ReadInt16("DB200.92");
+                                          
+                                            if (foamLine1 != null)
+                                            {
+                                                if (foamLine1.plc.IsConnected)
+                                                {
+                                                    item.MaterialType = obj.plc.ReadString("DB400.40.0");
+                                                    if (!string.IsNullOrEmpty(item.MaterialType))
+                                                    {
+                                                        var printBarCode003 = _printBarCodeServices.FirstAsync(d => d.MaterialCode == item.MaterialType).Result;
+                                                        if (printBarCode003 != null)
+                                                        {
+                                                            item.typeNameA = printBarCode003.MaterialName;
+                                                        }
+                                                    }
+                                                }   
+                                            }
+
                                             break;
                                         case "PB01_004":
                                             item.SpaceStock = obj.plc.ReadInt16("DB200.446");
                                             item.OnRouteAmount = item.SpaceStock - obj.plc.ReadInt16("DB200.94");
+                                            if (foamLine1 != null)
+                                            {
+                                                if (foamLine1.plc.IsConnected)
+                                                {
+                                                    item.MaterialType = obj.plc.ReadString("DB400.28.0");
+                                                    if (!string.IsNullOrEmpty(item.MaterialType))
+                                                    {
+                                                        var printBarCode004 = _printBarCodeServices.FirstAsync(d => d.MaterialCode == item.MaterialType).Result;
+                                                        if (printBarCode004 != null)
+                                                        {
+                                                            item.typeNameA = printBarCode004.MaterialName;
+                                                        }
+                                                    }
+                                                }
+                                            }
                                             break;
                                         case "PB01_005":
                                             item.SpaceStock = obj.plc.ReadInt16("DB200.448");
                                             item.OnRouteAmount = item.SpaceStock - obj.plc.ReadInt16("DB200.96");
+                                            if (foamLine1 != null)
+                                            {
+                                                if (foamLine1.plc.IsConnected)
+                                                {
+                                                    item.MaterialType = obj.plc.ReadString("DB400.52.0");
+                                                    if (!string.IsNullOrEmpty(item.MaterialType))
+                                                    {
+                                                        var printBarCode005 = _printBarCodeServices.FirstAsync(d => d.MaterialCode == item.MaterialType).Result;
+                                                        if (printBarCode005 != null)
+                                                        {
+                                                            item.typeNameA = printBarCode005.MaterialName;
+                                                        }
+                                                    }
+                                                }
+                                            }
                                             break;
                                         case "PB01_006":
                                             item.SpaceStock = obj.plc.ReadInt16("DB200.450");
                                             item.OnRouteAmount = item.SpaceStock - obj.plc.ReadInt16("DB200.98");
+                                            item.MaterialType = obj.plc.ReadString("DB400.64.0");
+                                            if (foamLine1 != null)
+                                            {
+                                                if (foamLine1.plc.IsConnected)
+                                                {
+                                                    if (!string.IsNullOrEmpty(item.MaterialType))
+                                                    {
+                                                        var printBarCode006 = _printBarCodeServices.FirstAsync(d => d.MaterialCode == item.MaterialType).Result;
+                                                        if (printBarCode006 != null)
+                                                        {
+                                                            item.typeNameA = printBarCode006.MaterialName;
+                                                        }
+                                                    }
+                                                }
+                                            }
                                             break;
                                         default:
                                             break;
@@ -264,11 +360,11 @@ namespace Aucma.Core.BoxFoam.Business
                             }
                         }
                     }
-                    Thread.Sleep(1000);
+                    Thread.Sleep(3000);
                 }
                 catch (Exception ex)
                 {
-                    Console.WriteLine($"异常:{ex.Message}");
+                    Console.WriteLine($"更新泡前库库库存,类型异常:{ex.Message}");
                 }
                 finally { flag = true; }
             }
diff --git a/Aucma.Core.BoxFoam/Startup.cs b/Aucma.Core.BoxFoam/Startup.cs
index f0e51902..1ca618fc 100644
--- a/Aucma.Core.BoxFoam/Startup.cs
+++ b/Aucma.Core.BoxFoam/Startup.cs
@@ -17,6 +17,7 @@ using Microsoft.Extensions.Configuration;
 using Microsoft.Extensions.DependencyInjection;
 using System.Net.Sockets;
 using System.Text;
+using Aucma.Core.DataCollector;
 
 namespace Aucma.Core.BoxFoam
 {
@@ -106,6 +107,7 @@ namespace Aucma.Core.BoxFoam
             app.UsePlcMildd(runPlcService);
             //����ɨ�����
             app.UseTouchSocketMildd(socket);
+            app.UseDataCollectorExtensions();
         }
 
         #region ע�����
diff --git a/Aucma.Core.BoxFoam/Views/UserPage/BeforeFoamingPageView.xaml b/Aucma.Core.BoxFoam/Views/UserPage/BeforeFoamingPageView.xaml
index 49b99386..3d761ddd 100644
--- a/Aucma.Core.BoxFoam/Views/UserPage/BeforeFoamingPageView.xaml
+++ b/Aucma.Core.BoxFoam/Views/UserPage/BeforeFoamingPageView.xaml
@@ -157,22 +157,24 @@
                                                                         <ColumnDefinition Width="5*"/>
                                                                     </Grid.ColumnDefinitions>
                                                                     <Border Grid.Column="0" Grid.Row="0" BorderBrush="White" BorderThickness="1" >
-                                                                        <TextBlock Text="型号1" FontSize="18" Foreground="White" VerticalAlignment="Center" HorizontalAlignment="Center"/>
+                                                                        <TextBlock Text="型号" FontSize="18" Foreground="White" VerticalAlignment="Center" HorizontalAlignment="Center"/>
                                                                     </Border>
                                                                     <Border Grid.Column="1" Grid.Row="0" BorderBrush="White" BorderThickness="1">
-                                                                        <Button Command="{Binding DataContext.SubmitCommand, RelativeSource={RelativeSource AncestorType=ItemsControl}}" CommandParameter="{Binding Text, ElementName=spaceCodeText}" Background="Transparent" Height="auto">
+                                                                        <TextBlock Text="{Binding materialType}" FontSize="16" Foreground="White" VerticalAlignment="Center" HorizontalAlignment="Center"  />
+                                                                        <!--<Button Command="{Binding DataContext.SubmitCommand, RelativeSource={RelativeSource AncestorType=ItemsControl}}" CommandParameter="{Binding Text, ElementName=spaceCodeText}" Background="Transparent" Height="auto">
                                                                             <TextBlock Text="{Binding materialType}" FontSize="16" Foreground="White" VerticalAlignment="Center" HorizontalAlignment="Center"  />
-                                                                        </Button>
+                                                                        </Button>-->
                                                                     </Border>
                                                                     <Border Grid.Column="2" Grid.Row="0" BorderBrush="White" BorderThickness="1" >
                                                                         <TextBlock Text="名称" FontSize="18" Foreground="White" VerticalAlignment="Center" HorizontalAlignment="Center"/>
                                                                     </Border>
                                                                     <Border Grid.Column="3" Grid.Row="0" BorderBrush="White" BorderThickness="1">
-                                                                        <Button Command="{Binding DataContext.SubmitCommand, RelativeSource={RelativeSource AncestorType=ItemsControl}}" CommandParameter="{Binding Text, ElementName=spaceCodeText}" Background="Transparent" Height="auto">
+                                                                        <TextBlock Text="{Binding typeNameA}" FontSize="16" Foreground="White" VerticalAlignment="Center" HorizontalAlignment="Center"  />
+                                                                        <!--<Button Command="{Binding DataContext.SubmitCommand, RelativeSource={RelativeSource AncestorType=ItemsControl}}" CommandParameter="{Binding Text, ElementName=spaceCodeText}" Background="Transparent" Height="auto">
                                                                             <TextBlock Text="{Binding typeNameA}" FontSize="16" Foreground="White" VerticalAlignment="Center" HorizontalAlignment="Center"  />
-                                                                        </Button>
+                                                                        </Button>-->
                                                                     </Border>
-                                                                    <Border Grid.Column="0" Grid.Row="1" BorderBrush="White" BorderThickness="1"  >
+                                                                    <!--<Border Grid.Column="0" Grid.Row="1" BorderBrush="White" BorderThickness="1"  >
                                                                         <TextBlock Text="型号2" FontSize="18" Foreground="White" VerticalAlignment="Center" HorizontalAlignment="Center"/>
                                                                     </Border>
                                                                     <Border Grid.Column="1" Grid.Row="1" BorderBrush="White" BorderThickness="1">
@@ -203,7 +205,7 @@
                                                                         <Button Command="{Binding DataContext.SubmitCommand3, RelativeSource={RelativeSource AncestorType=ItemsControl}}" CommandParameter="{Binding Text, ElementName=spaceCodeText}" Background="Transparent" Height="auto">
                                                                             <TextBlock Text="{Binding typeNameC}" FontSize="16" Foreground="White" VerticalAlignment="Center" HorizontalAlignment="Center" />
                                                                         </Button>
-                                                                    </Border>
+                                                                    </Border>-->
                                                                 </Grid>
                                                             </Border>
 
diff --git a/Aucma.Core.BoxFoam/appsettings.json b/Aucma.Core.BoxFoam/appsettings.json
index 91888a12..bb3b5b66 100644
--- a/Aucma.Core.BoxFoam/appsettings.json
+++ b/Aucma.Core.BoxFoam/appsettings.json
@@ -217,7 +217,7 @@
       "EquipName": "foamLine1Plc",
       "PlcType": "Siemens",
       "Enabled": true,
-      "IP":"10.10.93.21",
+      "IP": "10.10.93.21",
       "Port": 102
     },
     {
@@ -225,7 +225,7 @@
       "EquipName": "foamLine2Plc",
       "PlcType": "Siemens",
       "Enabled": true,
-      "IP":"10.10.93.1",
+      "IP": "10.10.93.1",
       "Port": 102
     },
     {
@@ -245,6 +245,9 @@
     "BeforeStoreCode": "PQK-001",
     "ProductlineCode": "CX_02"
   },
+  "StationInfo": {
+    "StationCode": "1005"
+  },
   "IpRateLimiting": {
     "EnableEndpointRateLimiting": false, //False: globally executed, true: executed for each
     "StackBlockedRequests": false, //False: Number of rejections should be recorded on another counter
diff --git a/Aucma.Core.DataCollector/DataCollectorSetup.cs b/Aucma.Core.DataCollector/DataCollectorSetup.cs
index 0b978baa..71633b3b 100644
--- a/Aucma.Core.DataCollector/DataCollectorSetup.cs
+++ b/Aucma.Core.DataCollector/DataCollectorSetup.cs
@@ -47,12 +47,29 @@ namespace Aucma.Core.DataCollector
                             Parallel.Invoke(() => collector.CollectDeviceAlarmInfo(out var alarmInfos), () => collector.CollectDeviceElectricity(out var electricity));
                         });
                     }
-                    else if (stationCode == "1005")//泡前库、发泡线、发泡机
+                   
+                    else if (stationCode == "1005")//箱体发泡、发泡线、发泡机、异常数据采集
                     {
+                        Console.WriteLine("开始执行异常数据采集");
+                        //发泡机
                         Task.Run(() =>
                         {
                             DataCollectorFactory collector = new BoxFoamFactory(_deviceParamServices, _deviceAlarmInfoServices, _deviceElectricityServices);
 
+                            Parallel.Invoke(() => collector.CollectDeviceAlarmInfo(out var alarmInfos), () => collector.CollectDeviceElectricity(out var electricity));
+                        });
+                        //发泡线1
+                        Task.Run(() =>
+                        {
+                            DataCollectorFactory collector = new BoxFoamFixture1Factory(_deviceParamServices, _deviceAlarmInfoServices, _deviceElectricityServices);
+
+                            Parallel.Invoke(() => collector.CollectDeviceAlarmInfo(out var alarmInfos), () => collector.CollectDeviceElectricity(out var electricity));
+                        });
+                        //发泡线2
+                        Task.Run(() =>
+                        {
+                            DataCollectorFactory collector = new BoxFoamFixture2Factory(_deviceParamServices, _deviceAlarmInfoServices, _deviceElectricityServices);
+
                             Parallel.Invoke(() => collector.CollectDeviceAlarmInfo(out var alarmInfos), () => collector.CollectDeviceElectricity(out var electricity));
                         });
                     }
@@ -119,8 +136,19 @@ namespace Aucma.Core.DataCollector
                             Parallel.Invoke(() => collector.CollectDeviceAlarmInfo(out var alarmInfos), () => collector.CollectDeviceElectricity(out var electricity));
                         });
                     }
+                    else if (stationCode == "1012")//门体发泡
+                    {
+                        Console.WriteLine("开始执行异常数据采集");
+                        Task.Run(() =>
+                        {
+                            DataCollectorFactory collector = new DoorFoamFactory(_deviceParamServices, _deviceAlarmInfoServices, _deviceElectricityServices);
+
+                            Parallel.Invoke(() => collector.CollectDeviceAlarmInfo(out var alarmInfos), () => collector.CollectDeviceElectricity(out var electricity));
+                        });
+                    }
+                  
                 }
-                catch(Exception ex)
+                catch (Exception ex)
                 {
                     _logger.Error($"UseDataCollectorExtensions逻辑执行异常:{ex.Message}");
                 }
diff --git a/Aucma.Core.DataCollector/Factory/BoxFoamFactory.cs b/Aucma.Core.DataCollector/Factory/BoxFoamFactory.cs
index 302ce3bd..91aca415 100644
--- a/Aucma.Core.DataCollector/Factory/BoxFoamFactory.cs
+++ b/Aucma.Core.DataCollector/Factory/BoxFoamFactory.cs
@@ -15,7 +15,7 @@ namespace Aucma.Core.DataCollector.Factory
     /// </summary>
     public class BoxFoamFactory : DataCollectorFactory
     {
-        private PlcModel _plc = PlcHelper.melsecList.FirstOrDefault(d => d.EquipName.Equals("Test"));
+        private PlcModel _plc = PlcHelper.siemensList.FirstOrDefault(d => d.EquipName.Equals("foamMachinePlc"));
 
         public BoxFoamFactory(IBaseDeviceParamServices deviceParamServices, IRecordDeviceAlarmInfoServices deviceAlarmInfoServices, IRecordDeviceElectricityServices deviceElectricityServices) : base(deviceParamServices, deviceAlarmInfoServices, deviceElectricityServices)
         {
@@ -37,7 +37,7 @@ namespace Aucma.Core.DataCollector.Factory
                         Console.WriteLine($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}采集设备报警信息");
                         var plc = _plc.plc;
 
-                        var deviceParams = base._deviceParamServices.Query(x => x.DeviceCode == "E00009");
+                        var deviceParams = base._deviceParamServices.Query(x => x.DeviceCode == "E00015");
 
                         if (deviceParams != null)
                         {
@@ -73,7 +73,7 @@ namespace Aucma.Core.DataCollector.Factory
                     else
                     {
                         Task.Delay(base.AlarmReadTimer).Wait();
-                        _plc = PlcHelper.melsecList.FirstOrDefault(d => d.EquipName.Equals("Test"));
+                        _plc = PlcHelper.siemensList.FirstOrDefault(d => d.EquipName.Equals("Test"));
                     }
                 }
                 catch (Exception ex)
diff --git a/Aucma.Core.DataCollector/Factory/BoxFoamFixture1Factory.cs b/Aucma.Core.DataCollector/Factory/BoxFoamFixture1Factory.cs
new file mode 100644
index 00000000..ffdab8d9
--- /dev/null
+++ b/Aucma.Core.DataCollector/Factory/BoxFoamFixture1Factory.cs
@@ -0,0 +1,91 @@
+using Admin.Core.IService.IService_New;
+using Admin.Core.Model.Model_New;
+using Aucma.Core.HwPLc;
+using log4net;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Aucma.Core.DataCollector.Factory
+{
+    /// <summary>
+    /// 夹具数据采集
+    /// </summary>
+    public class BoxFoamFixture1Factory : DataCollectorFactory
+    {
+        private PlcModel _plc = PlcHelper.siemensList.FirstOrDefault(d => d.EquipName.Equals("foamLine1Plc"));
+
+        public BoxFoamFixture1Factory(IBaseDeviceParamServices deviceParamServices, IRecordDeviceAlarmInfoServices deviceAlarmInfoServices, IRecordDeviceElectricityServices deviceElectricityServices) : base(deviceParamServices, deviceAlarmInfoServices, deviceElectricityServices)
+        {
+        }
+
+        /// <summary>
+        /// 采集泡前库、发泡线、发泡机、泡后库设备报警信息
+        /// </summary>
+        /// <param name="deviceAlarmInfos"></param>
+        public override void CollectDeviceAlarmInfo(out List<Record_DeviceAlarmInfo> deviceAlarmInfos)
+        {
+            while (true)
+            {
+                try
+                {
+
+                    if (_plc != null)
+                    {
+                        Console.WriteLine($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}采集发泡线1设备报警信息");
+                        var plc = _plc.plc;
+
+                        var deviceParams = base._deviceParamServices.Query(x => x.DeviceCode == "E00013");
+
+                        if (deviceParams != null)
+                        {
+                            deviceAlarmInfos = new List<Record_DeviceAlarmInfo>();
+                            string batchId = System.Guid.NewGuid().ToString("N");
+                            foreach (var item in deviceParams)
+                            {
+                                base.ReadParamValueByPlc(plc, item.ParamAddress, item.ParamType, out int paramValue);
+
+                                if (paramValue != 0)
+                                {
+                                    deviceAlarmInfos.Add(new Record_DeviceAlarmInfo()
+                                    {
+                                        BatchId = batchId,
+                                        DeviceCode = item.DeviceCode,
+                                        DeviceType = "1",
+                                        ParamCode = item.ParamCode,
+                                        ParamValue = paramValue.ToString(),
+                                        AlarmInfo = item.ParamName,
+                                        AlarmTime = DateTime.Now,
+                                        CreadtedTime = DateTime.Now,
+                                    });
+                                }
+
+                            }
+                            if (deviceAlarmInfos.Count > 0)
+                            {
+                                base._deviceAlarmInfoServices.AddAsync(deviceAlarmInfos);
+                            }
+                        }
+                        Task.Delay(base.AlarmReadTimer).Wait();
+                    }
+                    else
+                    {
+                        Task.Delay(base.AlarmReadTimer).Wait();
+                        _plc = PlcHelper.siemensList.FirstOrDefault(d => d.EquipName.Equals("foamLine1Plc"));
+                    }
+                }
+                catch (Exception ex)
+                {
+                   base._logger.Error($"采集泡前库、发泡线、发泡机、泡后库设备报警信息:{ex.Message}");
+                }
+            }
+        }
+
+        public override void CollectDeviceElectricity(out List<Record_DeviceElectricity> deviceElectricitys)
+        {
+            throw new NotImplementedException();
+        }
+    }
+}
diff --git a/Aucma.Core.DataCollector/Factory/BoxFoamFixture2Factory.cs b/Aucma.Core.DataCollector/Factory/BoxFoamFixture2Factory.cs
new file mode 100644
index 00000000..025cc0e3
--- /dev/null
+++ b/Aucma.Core.DataCollector/Factory/BoxFoamFixture2Factory.cs
@@ -0,0 +1,91 @@
+using Admin.Core.IService.IService_New;
+using Admin.Core.Model.Model_New;
+using Aucma.Core.HwPLc;
+using log4net;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Aucma.Core.DataCollector.Factory
+{
+    /// <summary>
+    /// 夹具数据采集
+    /// </summary>
+    public class BoxFoamFixture2Factory : DataCollectorFactory
+    {
+        private PlcModel _plc = PlcHelper.siemensList.FirstOrDefault(d => d.EquipName.Equals("foamLine2Plc"));
+
+        public BoxFoamFixture2Factory(IBaseDeviceParamServices deviceParamServices, IRecordDeviceAlarmInfoServices deviceAlarmInfoServices, IRecordDeviceElectricityServices deviceElectricityServices) : base(deviceParamServices, deviceAlarmInfoServices, deviceElectricityServices)
+        {
+        }
+
+        /// <summary>
+        /// 采集泡前库、发泡线、发泡机、泡后库设备报警信息
+        /// </summary>
+        /// <param name="deviceAlarmInfos"></param>
+        public override void CollectDeviceAlarmInfo(out List<Record_DeviceAlarmInfo> deviceAlarmInfos)
+        {
+            while (true)
+            {
+                try
+                {
+
+                    if (_plc != null)
+                    {
+                        Console.WriteLine($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}采集发泡线2设备报警信息");
+                        var plc = _plc.plc;
+
+                        var deviceParams = base._deviceParamServices.Query(x => x.DeviceCode == "E00014");
+
+                        if (deviceParams != null)
+                        {
+                            deviceAlarmInfos = new List<Record_DeviceAlarmInfo>();
+                            string batchId = System.Guid.NewGuid().ToString("N");
+                            foreach (var item in deviceParams)
+                            {
+                                base.ReadParamValueByPlc(plc, item.ParamAddress, item.ParamType, out int paramValue);
+
+                                if (paramValue != 0)
+                                {
+                                    deviceAlarmInfos.Add(new Record_DeviceAlarmInfo()
+                                    {
+                                        BatchId = batchId,
+                                        DeviceCode = item.DeviceCode,
+                                        DeviceType = "1",
+                                        ParamCode = item.ParamCode,
+                                        ParamValue = paramValue.ToString(),
+                                        AlarmInfo = item.ParamName,
+                                        AlarmTime = DateTime.Now,
+                                        CreadtedTime = DateTime.Now,
+                                    });
+                                }
+
+                            }
+                            if (deviceAlarmInfos.Count > 0)
+                            {
+                                base._deviceAlarmInfoServices.AddAsync(deviceAlarmInfos);
+                            }
+                        }
+                        Task.Delay(base.AlarmReadTimer).Wait();
+                    }
+                    else
+                    {
+                        Task.Delay(base.AlarmReadTimer).Wait();
+                        _plc = PlcHelper.siemensList.FirstOrDefault(d => d.EquipName.Equals("foamLine2Plc"));
+                    }
+                }
+                catch (Exception ex)
+                {
+                   base._logger.Error($"采集泡前库、发泡线、发泡机、泡后库设备报警信息:{ex.Message}");
+                }
+            }
+        }
+
+        public override void CollectDeviceElectricity(out List<Record_DeviceElectricity> deviceElectricitys)
+        {
+            throw new NotImplementedException();
+        }
+    }
+}
diff --git a/Aucma.Core.DataCollector/Factory/DoorFoamFactory.cs b/Aucma.Core.DataCollector/Factory/DoorFoamFactory.cs
index 1e2d6c54..0b692c3e 100644
--- a/Aucma.Core.DataCollector/Factory/DoorFoamFactory.cs
+++ b/Aucma.Core.DataCollector/Factory/DoorFoamFactory.cs
@@ -2,6 +2,7 @@
 using Admin.Core.Model.Model_New;
 using Aucma.Core.HwPLc;
 using log4net;
+using StackExchange.Profiling.Internal;
 using System;
 using System.Collections.Generic;
 using System.Linq;
@@ -11,11 +12,11 @@ using System.Threading.Tasks;
 namespace Aucma.Core.DataCollector.Factory
 {
     /// <summary>
-    /// 箱体发泡数据采集
+    /// 门体发泡数据采集
     /// </summary>
     public class DoorFoamFactory : DataCollectorFactory
     {
-        private PlcModel _plc = PlcHelper.siemensList.FirstOrDefault(d => d.EquipName.Equals("Test"));
+        private PlcModel _plc = PlcHelper.siemensList.FirstOrDefault(d => d.EquipName.Equals("FoamPlc"));
 
         public DoorFoamFactory(IBaseDeviceParamServices deviceParamServices, IRecordDeviceAlarmInfoServices deviceAlarmInfoServices, IRecordDeviceElectricityServices deviceElectricityServices) : base(deviceParamServices, deviceAlarmInfoServices, deviceElectricityServices)
         {
@@ -31,13 +32,14 @@ namespace Aucma.Core.DataCollector.Factory
             {
                 try
                 {
-
+                    Console.WriteLine($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}获取PLC:{_plc.ToJson()}");
                     if (_plc != null)
                     {
+                        Console.WriteLine($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}获取PLC状态:{_plc.IsConnect}");
                         Console.WriteLine($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}采集设备报警信息");
                         var plc = _plc.plc;
 
-                        var deviceParams = base._deviceParamServices.Query(x => x.DeviceCode == "E00009");
+                        var deviceParams = base._deviceParamServices.Query(x => x.DeviceCode == "E00026");
 
                         if (deviceParams != null)
                         {
@@ -73,12 +75,13 @@ namespace Aucma.Core.DataCollector.Factory
                     else
                     {
                         Task.Delay(base.AlarmReadTimer).Wait();
-                        _plc = PlcHelper.melsecList.FirstOrDefault(d => d.EquipName.Equals("Test"));
+                        _plc = PlcHelper.siemensList.FirstOrDefault(d => d.EquipName.Equals("FoamPlc"));
                     }
                 }
                 catch (Exception ex)
                 {
-                   base._logger.Error($"采集泡前库、发泡线、发泡机、泡后库设备报警信息:{ex.Message}");
+                    Console.WriteLine($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}采集泡前库、发泡线、发泡机、泡后库设备报警信息:{ex.Message}");
+                    base._logger.Error($"采集泡前库、发泡线、发泡机、泡后库设备报警信息:{ex.Message}");
                 }
             }
         }
diff --git a/Aucma.Core.DoorFoam/Aucma.Core.DoorFoam.csproj b/Aucma.Core.DoorFoam/Aucma.Core.DoorFoam.csproj
index 86a4431d..79330efd 100644
--- a/Aucma.Core.DoorFoam/Aucma.Core.DoorFoam.csproj
+++ b/Aucma.Core.DoorFoam/Aucma.Core.DoorFoam.csproj
@@ -75,6 +75,7 @@
 
   <ItemGroup>
     <ProjectReference Include="..\Admin.Core.Extensions\Admin.Core.Extensions.csproj" />
+    <ProjectReference Include="..\Aucma.Core.DataCollector\Aucma.Core.DataCollector.csproj" />
   </ItemGroup>
 
   <ItemGroup>
diff --git a/Aucma.Core.DoorFoam/Startup.cs b/Aucma.Core.DoorFoam/Startup.cs
index d32e6078..00aaf4a7 100644
--- a/Aucma.Core.DoorFoam/Startup.cs
+++ b/Aucma.Core.DoorFoam/Startup.cs
@@ -17,6 +17,7 @@ using Microsoft.Extensions.Configuration;
 using Microsoft.Extensions.DependencyInjection;
 using System.Net.Sockets;
 using System.Text;
+using Aucma.Core.DataCollector;
 
 namespace Aucma.Core.DoorFoam
 {
@@ -94,8 +95,10 @@ namespace Aucma.Core.DoorFoam
             app.UseStaticFiles();
             //PLC
             app.UsePlcMildd(runPlcService);
-            //
+            //ɨ����socket ͨѶ
             app.UseTouchSocketMildd(socket);
+            //�����쳣���ݲɼ�
+            app.UseDataCollectorExtensions();
         }
 
         #region ע�����
diff --git a/Aucma.Core.PrintTo/Views/LoginPageView.xaml b/Aucma.Core.PrintTo/Views/LoginPageView.xaml
index 6c505b5c..1b35264f 100644
--- a/Aucma.Core.PrintTo/Views/LoginPageView.xaml
+++ b/Aucma.Core.PrintTo/Views/LoginPageView.xaml
@@ -6,11 +6,13 @@
         xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
         xmlns:local="clr-namespace:Aucma.Core.PrintTo.Views"
         mc:Ignorable="d"
-          Title="登录"
-         FontFamily="Microsoft YaHei"
+        Title="登录"
+        x:Name="MainWindow"
+        FontFamily="Microsoft YaHei"
         WindowStartupLocation="CenterScreen"    
-        WindowStyle="ToolWindow" WindowState="Normal" ResizeMode="NoResize"
-       Height="600" Width="800">
+         WindowState="Maximized"    d:DesignWidth="1200" d:DesignHeight="900"
+        
+        WindowStyle="ToolWindow" ResizeMode="NoResize">
     <Window.Background>
         <ImageBrush ImageSource="/Assets/Images/login-background.png" />
     </Window.Background>
@@ -18,46 +20,23 @@
         <Border.Effect>
             <DropShadowEffect Color="Gray" ShadowDepth="0" BlurRadius="5" Opacity="0.3" Direction="0"></DropShadowEffect>
         </Border.Effect>
-        <Canvas>
-            <StackPanel >
-                <Image Source="/Assets/Images/Newlog.png" Width="100" />
-            </StackPanel>
-            <materialDesign:Card Background="#fff"  VerticalAlignment="Center" HorizontalAlignment="Center" Margin="200 100"
-                UniformCornerRadius="15" Width="400" Height="300"  Opacity="0.9"
-               >
-                <materialDesign:DialogHost CloseOnClickAway="True" x:Name="DialogHost" >
-                    <StackPanel>
-                     
-                        <TextBox Margin="0 50 0 0" 
-                             x:Name="txtUserName"
-                             Width="300"
-                             FontSize="12" 
-                             materialDesign:HintAssist.Hint="账号"
-                             BorderThickness="1"
-                             BorderBrush="{StaticResource MaterialDesignDivider}"
-                             Style="{StaticResource MaterialDesignOutlinedTextBox}"
-                             >
-                        </TextBox>
-                        <PasswordBox 
-             Margin="0 10 0 0"
-             x:Name="txtPassword"
-             Width="300"
-             FontSize="12"
-             materialDesign:HintAssist.Hint="密码"
-             BorderThickness="1"
-             BorderBrush="{StaticResource MaterialDesignDivider}"
-        Style="{StaticResource MaterialDesignOutlinedPasswordBox}"
-             ></PasswordBox>
-                        <Button Margin="0 20 0 0" 
-            x:Name="loginBtn"
-            Style="{StaticResource MaterialDesignFlatMidBgButton}"
-            Width="300"
-            Height="53"
-            materialDesign:ButtonAssist.CornerRadius="10"
-            Content="登录"/>
-                    </StackPanel>
-                </materialDesign:DialogHost>
-            </materialDesign:Card>
+        <Canvas x:Name="canvas">
+            <Grid>
+                <Grid.RowDefinitions>
+                    <RowDefinition/>
+                    <RowDefinition/>
+                    <RowDefinition/>
+                </Grid.RowDefinitions>
+                <UniformGrid Rows="0">
+                    
+                </UniformGrid>
+                <UniformGrid Rows="0">
+
+                </UniformGrid>
+                <UniformGrid Rows="0">
+
+                </UniformGrid>
+            </Grid>
         </Canvas>
     </Border>
 </Window>