فهرست منبع

1. 版本更新
2. 新增数据质量判断

Shun 2 سال پیش
والد
کامیت
807e49bea7

+ 1 - 1
src/YSAI.DAQ/YSAI.Can/YSAI.Can.csproj

@@ -17,7 +17,7 @@
   </ItemGroup>
 
   <ItemGroup>
-    <PackageReference Include="YSAI.Core" Version="1.0.0.55" />
+    <PackageReference Include="YSAI.Core" Version="1.0.0.56" />
   </ItemGroup>
 
   <ItemGroup>

+ 1 - 1
src/YSAI.DAQ/YSAI.Core/YSAI.Core.csproj

@@ -5,7 +5,7 @@
     <ImplicitUsings>enable</ImplicitUsings>
     <Nullable>enable</Nullable>
     <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
-    <Version>1.0.0.56</Version>
+    <Version>1.0.0.57</Version>
     <Authors>Shun</Authors>
     <Company>YSAI</Company>
     <Product>SCADA</Product>

+ 2 - 0
src/YSAI.DAQ/YSAI.Core/data/AddressValue.cs

@@ -9,6 +9,8 @@ namespace YSAI.Core.data
     {
         /// <summary>
         /// 数据质量
+        /// 0:异常
+        /// 1:正常
         /// </summary>
         public int Quality { get; set; }
         /// <summary>

+ 12 - 3
src/YSAI.DAQ/YSAI.Core/handler/AddressHandler.cs

@@ -37,8 +37,17 @@ namespace YSAI.Core.handler
                 //原始值
                 string originalValue = value;
 
-                //解析
-                value = ParseHandler.Parse(addressDetails, value);
+                //数据质量(当数据为空时,数据是异常的)
+                int Quality = 0;
+
+                //如果数据为空 
+                if (!string.IsNullOrWhiteSpace(value))
+                {
+                    //数据质量
+                    Quality = 1;
+                    //解析
+                    value = ParseHandler.Parse(addressDetails, value);
+                }
 
                 //最终数据组织
                 AddressValue addressValue = new AddressValue().SET(addressDetails);
@@ -46,7 +55,7 @@ namespace YSAI.Core.handler
                 addressValue.Value = value;
                 addressValue.OriginalValue = originalValue;
                 addressValue.Time = DateTime.Now.ToLocalTime();
-                addressValue.Quality = 1;
+                addressValue.Quality = Quality;
 
                 //反射状态为true才进行操作
                 if (reflectionOperate.ReflectionState)

+ 7 - 0
src/YSAI.DAQ/YSAI.DAQ.sln

@@ -93,6 +93,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "YSAI.Test.All", "YSAI.Test.
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "YSAI.Pack.Param", "YSAI.Pack.Param\YSAI.Pack.Param.csproj", "{36696247-658B-445E-9C05-A815B73F248A}"
 EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "YSAI.Netty", "YSAI.Netty\YSAI.Netty.csproj", "{D757285D-0B7C-47C4-BC54-744B6E2A7E61}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
@@ -243,6 +245,10 @@ Global
 		{36696247-658B-445E-9C05-A815B73F248A}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{36696247-658B-445E-9C05-A815B73F248A}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{36696247-658B-445E-9C05-A815B73F248A}.Release|Any CPU.Build.0 = Release|Any CPU
+		{D757285D-0B7C-47C4-BC54-744B6E2A7E61}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{D757285D-0B7C-47C4-BC54-744B6E2A7E61}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{D757285D-0B7C-47C4-BC54-744B6E2A7E61}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{D757285D-0B7C-47C4-BC54-744B6E2A7E61}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
@@ -288,6 +294,7 @@ Global
 		{3C333E39-520D-4183-8E3D-D0FF6628C15E} = {1856E9E1-33C4-45C1-832C-854F9BE1ACC4}
 		{1CFDF4C1-53F7-4A32-B83D-4B99AFC95A8D} = {12CB0510-7B1E-4518-AA3B-412A4D323D42}
 		{36696247-658B-445E-9C05-A815B73F248A} = {1EBA4FD7-DF52-49A0-8AA4-9E61ABC614F5}
+		{D757285D-0B7C-47C4-BC54-744B6E2A7E61} = {9D8EDBBA-7A97-4D84-9B12-7FCC2F834046}
 	EndGlobalSection
 	GlobalSection(ExtensibilityGlobals) = postSolution
 		SolutionGuid = {5D5D3927-6714-40C0-84EA-44C5BA4C5E87}

+ 1 - 1
src/YSAI.DAQ/YSAI.DB/YSAI.DB.csproj

@@ -18,7 +18,7 @@
 		<PackageReference Include="System.Data.OracleClient" Version="1.0.8" />
 		<PackageReference Include="System.Data.SqlClient" Version="4.8.5" />
 		<PackageReference Include="System.Data.SQLite" Version="1.0.118" />
-		<PackageReference Include="YSAI.Core" Version="1.0.0.55" />
+		<PackageReference Include="YSAI.Core" Version="1.0.0.56" />
 	</ItemGroup>
 	<!--<ItemGroup>
 		<ProjectReference Include="..\YSAI.Core\YSAI.Core.csproj" />

+ 1 - 1
src/YSAI.DAQ/YSAI.DaqManage/YSAI.DaqManage.csproj

@@ -7,7 +7,7 @@
   </PropertyGroup>
 	<ItemGroup>
 		<FrameworkReference Include="Microsoft.AspNetCore.App" />
-		<PackageReference Include="YSAI.Core" Version="1.0.0.55" />
+		<PackageReference Include="YSAI.Core" Version="1.0.0.56" />
 	</ItemGroup>
 
 	<!--<ItemGroup>

+ 1 - 1
src/YSAI.DAQ/YSAI.Kafka/YSAI.Kafka.csproj

@@ -14,7 +14,7 @@
 
   <ItemGroup>
     <PackageReference Include="Confluent.Kafka" Version="2.2.0" />
-    <PackageReference Include="YSAI.Core" Version="1.0.0.55" />
+    <PackageReference Include="YSAI.Core" Version="1.0.0.56" />
   </ItemGroup>
 	
 	<!--<ItemGroup>

+ 1 - 1
src/YSAI.DAQ/YSAI.Modbus/YSAI.Modbus.csproj

@@ -15,7 +15,7 @@
 	<ItemGroup>
     <PackageReference Include="NModbus" Version="3.0.80" />
     <PackageReference Include="NModbus.Serial" Version="3.0.80" />
-    <PackageReference Include="YSAI.Core" Version="1.0.0.55" />
+    <PackageReference Include="YSAI.Core" Version="1.0.0.56" />
   </ItemGroup>
 
 	<!--<ItemGroup>

+ 1 - 1
src/YSAI.DAQ/YSAI.Mqtt/YSAI.Mqtt.csproj

@@ -15,7 +15,7 @@
   <ItemGroup>
     <PackageReference Include="MQTTnet" Version="4.3.1.873" />
     <PackageReference Include="MQTTnet.AspNetCore" Version="4.3.1.873" />
-    <PackageReference Include="YSAI.Core" Version="1.0.0.55" />
+    <PackageReference Include="YSAI.Core" Version="1.0.0.56" />
   </ItemGroup>
 
 	<!--<ItemGroup>

+ 9 - 0
src/YSAI.DAQ/YSAI.Netty/YSAI.Netty.csproj

@@ -0,0 +1,9 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+</Project>

+ 1 - 1
src/YSAI.DAQ/YSAI.Opc/YSAI.Opc.csproj

@@ -13,7 +13,7 @@
   </PropertyGroup>
   <ItemGroup>
     <PackageReference Include="OPCFoundation.NetStandard.Opc.Ua" Version="1.4.372.56" />
-	<PackageReference Include="YSAI.Core" Version="1.0.0.55" />
+	<PackageReference Include="YSAI.Core" Version="1.0.0.56" />
   </ItemGroup>
 
 

+ 22 - 15
src/YSAI.DAQ/YSAI.Opc/ua/client/OpcUaClientOperate.cs

@@ -207,7 +207,7 @@ namespace YSAI.Opc.ua.client
         private void OnMonitoredItemNotification(MonitoredItem monitoredItem, MonitoredItemNotificationEventArgs e, AddressDetails addressDetails)
         {
             //数据入列
-            DataQueue.Enqueue(new QueueData() { addressDetails = addressDetails, NotificationValue = e.NotificationValue });
+            DataQueue.Enqueue(new QueueData() { addressDetails = addressDetails, NotificationValue = e.NotificationValue, MonitoredItem = monitoredItem });
         }
 
 
@@ -857,12 +857,7 @@ namespace YSAI.Opc.ua.client
                             MonitoredItem monitoredItem = new MonitoredItem(allSubscriptions[Tag].DefaultItem);
                             monitoredItem.StartNodeId = new NodeId(item.AddressName);  //标识要监视的节点的浏览路径的开始节点
                             monitoredItem.AttributeId = Attributes.Value;  //要监视的属性
-                            monitoredItem.DisplayName = item.AddressName;  //被监控项的显示名称
                             monitoredItem.SamplingInterval = basics.SamplingInterval;  //采样间隔
-                            monitoredItem.MonitoringMode = MonitoringMode.Reporting;  //采集模式
-                            monitoredItem.QueueSize = 1;  //队列大小
-                            monitoredItem.DiscardOldest = true;  //当队列满了是否丢弃早期数据
-                            monitoredItem.Handle = this;  //分配给被监视项的本地句柄
                             monitoredItem.Notification += delegate (MonitoredItem monitoredItem, MonitoredItemNotificationEventArgs e) { OnMonitoredItemNotification(monitoredItem, e, item); };  //重写事件添加一个参数
                             monitoredItems?.Add(monitoredItem);  //添加至集合
                         }
@@ -893,9 +888,9 @@ namespace YSAI.Opc.ua.client
                         //订阅
                         Subscription subscription = new Subscription(clientSession?.DefaultSubscription);
                         subscription.PublishingInterval = basics.PublishingInterval; //出版间隔
-                        subscription.KeepAliveCount = 10;  //保活计数
-                        subscription.LifetimeCount = 30;  //寿命计数
-                        subscription.MaxNotificationsPerPublish = (uint)Nodes.Count;  //每个发布请求的最大通知数
+                        subscription.KeepAliveCount = uint.MaxValue;  //保活计数
+                        subscription.LifetimeCount = uint.MaxValue;  //寿命计数
+                        subscription.MaxNotificationsPerPublish = uint.MaxValue;  //每个发布请求的最大通知数
                         subscription.MaxMessageCount = Nodes.Count;     //最大的消息数据量
                         subscription.Priority = 1;  //分配给订阅的优先级
                         subscription.DisplayName = Tag;  //订阅的显示名称
@@ -914,12 +909,7 @@ namespace YSAI.Opc.ua.client
                             MonitoredItem monitoredItem = new MonitoredItem(subscription.DefaultItem);
                             monitoredItem.StartNodeId = new NodeId(item.AddressName);  //标识要监视的节点的浏览路径的开始节点
                             monitoredItem.AttributeId = Attributes.Value;  //要监视的属性
-                            monitoredItem.DisplayName = item.AddressName;  //被监控项的显示名称
                             monitoredItem.SamplingInterval = basics.SamplingInterval;  //采样间隔
-                            monitoredItem.MonitoringMode = MonitoringMode.Reporting;  //采集模式
-                            monitoredItem.QueueSize = 1;  //队列大小
-                            monitoredItem.DiscardOldest = true;  //当队列满了是否丢弃早期数据
-                            monitoredItem.Handle = this;  //分配给被监视项的本地句柄
                             monitoredItem.Notification += delegate (MonitoredItem monitoredItem, MonitoredItemNotificationEventArgs e) { OnMonitoredItemNotification(monitoredItem, e, item); };  //重写事件添加一个参数
                             monitoredItems?.Add(monitoredItem);  //添加至集合
                         }
@@ -1135,6 +1125,10 @@ namespace YSAI.Opc.ua.client
             /// 通知的数据
             /// </summary>
             public IEncodeable NotificationValue { get; set; }
+            /// <summary>
+            /// 通知项
+            /// </summary>
+            public MonitoredItem MonitoredItem { get; set; }
         }
         /// <summary>
         /// 任务集合
@@ -1164,12 +1158,25 @@ namespace YSAI.Opc.ua.client
                         {
                             try
                             {
+                                //通知项
+                                MonitoredItem monitoredItem = queueData.MonitoredItem;
+
                                 //对象转换
                                 MonitoredItemNotification? notification = queueData.NotificationValue as MonitoredItemNotification;
+
+                                //得到的数据
+                                string value = notification.Value.ToString();
+
+                                //判断数据是否正常
+                                if (!StatusCode.IsGood(notification.Value.StatusCode))
+                                {
+                                    value = string.Empty;
+                                }
+
                                 //设置参数
                                 ConcurrentDictionary<string, AddressValue> param = new ConcurrentDictionary<string, AddressValue>();
                                 //处理数据
-                                AddressValue addressValue = YSAI.Core.handler.AddressHandler.ExecuteDispose(queueData.addressDetails, notification.Value.ToString());  //数据 
+                                AddressValue addressValue = YSAI.Core.handler.AddressHandler.ExecuteDispose(queueData.addressDetails, value);  //数据 
                                 //添加或更新
                                 param.AddOrUpdate(queueData.addressDetails.AddressName, addressValue, (k, v) => addressValue);
 

+ 1 - 1
src/YSAI.DAQ/YSAI.RabbitMQ/YSAI.RabbitMQ.csproj

@@ -14,7 +14,7 @@
 
   <ItemGroup>
     <PackageReference Include="RabbitMQ.Client" Version="6.6.0" />
-    <PackageReference Include="YSAI.Core" Version="1.0.0.55" />
+    <PackageReference Include="YSAI.Core" Version="1.0.0.56" />
   </ItemGroup>
 
   <ItemGroup>

+ 1 - 1
src/YSAI.DAQ/YSAI.RelayManage/YSAI.RelayManage.csproj

@@ -9,7 +9,7 @@
 	<ItemGroup>
 		<PackageReference Include="RabbitMQ.Client" Version="6.6.0" />
 		<PackageReference Include="Confluent.Kafka" Version="2.2.0" />
-		<PackageReference Include="YSAI.Core" Version="1.0.0.55" />
+		<PackageReference Include="YSAI.Core" Version="1.0.0.56" />
 		<FrameworkReference Include="Microsoft.AspNetCore.App" />
 	</ItemGroup>
 

+ 1 - 1
src/YSAI.DAQ/YSAI.S7/YSAI.S7.csproj

@@ -14,7 +14,7 @@
 
 	<ItemGroup>
     <PackageReference Include="S7netplus" Version="0.20.0" />
-    <PackageReference Include="YSAI.Core" Version="1.0.0.55" />
+    <PackageReference Include="YSAI.Core" Version="1.0.0.56" />
   </ItemGroup>
 
 	<!--<ItemGroup>

+ 103 - 103
src/YSAI.DAQ/YSAI.Test.All/Program.cs

@@ -23,76 +23,76 @@
 //    Console.WriteLine(e.ToJson().JsonFormatting());
 //}
 
-using S7.Net;
-using System.Collections.Concurrent;
-using YSAI.Core.data;
-using YSAI.Core.@enum;
-using YSAI.Core.subscribe.core;
-using YSAI.Log;
-using YSAI.S7.client;
-using YSAI.Unility;
+//using S7.Net;
+//using System.Collections.Concurrent;
+//using YSAI.Core.data;
+//using YSAI.Core.@enum;
+//using YSAI.Core.subscribe.core;
+//using YSAI.Log;
+//using YSAI.S7.client;
+//using YSAI.Unility;
 
 
-S7ClientOperate s7ClientOperate = S7ClientOperate.Instance(new S7ClientData.Basics()
-{
-    Ip = "192.168.2.20",
-    Port = 102,
-    Rack = 0,
-    Slot = 1,
-    S7CpuType = CpuType.S71200,
-    ChangeOut = false,
-    HandleInterval = 0,
-    SN = Guid.NewGuid().ToString()
-});
-//打开
-OperateResult operateResult = s7ClientOperate.On();
-Console.WriteLine(operateResult.Message);
-
-//点位地址
-Address address = new Address();
-address.SN = Guid.NewGuid().ToString();
-address.CreationTime = DateTime.Now.ToLocalTime();
-address.AddressArray = new List<AddressDetails>();
-address.AddressArray.Add(new AddressDetails()
-{
-    AddressName = "DB71.DBD4",
-    AddressDataType = YSAI.Core.@enum.DataType.Float,
-    AddressType = AddressType.Reality
-});
+//S7ClientOperate s7ClientOperate = S7ClientOperate.Instance(new S7ClientData.Basics()
+//{
+//    Ip = "192.168.2.20",
+//    Port = 102,
+//    Rack = 0,
+//    Slot = 1,
+//    S7CpuType = CpuType.S71200,
+//    ChangeOut = false,
+//    HandleInterval = 0,
+//    SN = Guid.NewGuid().ToString()
+//});
+////打开
+//OperateResult operateResult = s7ClientOperate.On();
+//Console.WriteLine(operateResult.Message);
 
-//读取
-operateResult = s7ClientOperate.Read(address);
-Console.WriteLine(operateResult.Message);
-if (operateResult.State)
-{
-    foreach (var item in operateResult.RData as ConcurrentDictionary<string, AddressValue>)
-    {
-        Console.WriteLine(item.Key);
-        Console.WriteLine(item.Value.Value);
-    }
-}
+////点位地址
+//Address address = new Address();
+//address.SN = Guid.NewGuid().ToString();
+//address.CreationTime = DateTime.Now.ToLocalTime();
+//address.AddressArray = new List<AddressDetails>();
+//address.AddressArray.Add(new AddressDetails()
+//{
+//    AddressName = "DB71.DBD4",
+//    AddressDataType = YSAI.Core.@enum.DataType.Float,
+//    AddressType = AddressType.Reality
+//});
 
-//订阅
-s7ClientOperate.OnEvent += S7ClientOperate_OnEvent;
-s7ClientOperate.Subscribe(address);
+////读取
+//operateResult = s7ClientOperate.Read(address);
+//Console.WriteLine(operateResult.Message);
+//if (operateResult.State)
+//{
+//    foreach (var item in operateResult.RData as ConcurrentDictionary<string, AddressValue>)
+//    {
+//        Console.WriteLine(item.Key);
+//        Console.WriteLine(item.Value.Value);
+//    }
+//}
 
-while (true)
-{
-    float value = float.Parse(Console.ReadLine());
-    //写入
-    ConcurrentDictionary<string, float> keyValuePairs = new ConcurrentDictionary<string, float>();
-    keyValuePairs.TryAdd("DB71.DBD4", value);
-    operateResult = s7ClientOperate.Write(keyValuePairs);
-    Console.WriteLine(operateResult.Message);
-
-    SubscribeService<AddressValue> subscribeService = SubscribeService<AddressValue>.Instance();
-    Console.WriteLine();
-}
+////订阅
+//s7ClientOperate.OnEvent += S7ClientOperate_OnEvent;
+//s7ClientOperate.Subscribe(address);
 
-void S7ClientOperate_OnEvent(object? sender, EventResult e)
-{
-    Console.WriteLine(e.ToJson().JsonFormatting());
-}
+//while (true)
+//{
+//    float value = float.Parse(Console.ReadLine());
+//    //写入
+//    ConcurrentDictionary<string, float> keyValuePairs = new ConcurrentDictionary<string, float>();
+//    keyValuePairs.TryAdd("DB71.DBD4", value);
+//    operateResult = s7ClientOperate.Write(keyValuePairs);
+//    Console.WriteLine(operateResult.Message);
+
+//    SubscribeService<AddressValue> subscribeService = SubscribeService<AddressValue>.Instance();
+//    Console.WriteLine();
+//}
+
+//void S7ClientOperate_OnEvent(object? sender, EventResult e)
+//{
+//    Console.WriteLine(e.ToJson().JsonFormatting());
+//}
 
 
 
@@ -364,51 +364,51 @@ void S7ClientOperate_OnEvent(object? sender, EventResult e)
 
 
 
-//using System.Collections.Concurrent;
-//using YSAI.Core.data;
-//using YSAI.Log;
-//using YSAI.Opc.ua.client;
-//using YSAI.Unility;
-
+using System.Collections.Concurrent;
+using YSAI.Core.data;
+using YSAI.Log;
+using YSAI.Opc.ua.client;
+using YSAI.Unility;
 
-//Address address = JsonTool.StringToJsonEntity<Address>(FileTool.FileToString("C:\\Users\\Shun\\Desktop\\[6032]Node_Address 202310120854271486.json"));
 
+Address address = JsonTool.StringToJsonEntity<Address>(FileTool.FileToString("C:\\Users\\Shun\\Desktop\\[6032]Node_Address 202310120854271486.json"));
 
-//OpcUaClientOperate opcUaClientOperate = OpcUaClientOperate.Instance(new OpcUaClientData.Basics
-//{
-//    ServerUrl = "opc.tcp://127.0.0.1:8866/Opc.Ua.Service",
-//    Password = "ysai",
-//    UserName = "ysai",
-//    CustomName = "YSAI 性能测试",
-//});
-//Console.WriteLine(opcUaClientOperate.On().ToJson().JsonFormatting());
-//opcUaClientOperate.OnEvent += OpcUaClientOperate_OnEvent;
 
-//while (true)
-//{
-//    Console.ReadLine();
-//    OperateResult operateResult = opcUaClientOperate.Subscribe(address);
-//    Console.WriteLine(operateResult.ToJson().JsonFormatting());
-//}
+OpcUaClientOperate opcUaClientOperate = OpcUaClientOperate.Instance(new OpcUaClientData.Basics
+{
+    ServerUrl = "opc.tcp://127.0.0.1:8866/Opc.Ua.Service",
+    Password = "ysai",
+    UserName = "ysai",
+    CustomName = "YSAI 性能测试",
+});
+Console.WriteLine(opcUaClientOperate.On().ToJson().JsonFormatting());
+opcUaClientOperate.OnEvent += OpcUaClientOperate_OnEvent;
 
-//void OpcUaClientOperate_OnEvent(object? sender, EventResult e)
-//{
-//    switch (e.RType)
-//    {
-//        case YSAI.Core.@enum.ResultType.KeyValue:
-//            ConcurrentDictionary<string, AddressValue> pairs = e.RData as ConcurrentDictionary<string, AddressValue>;
-//            foreach (var item in pairs)
-//            {
-//                String str = String.Format("{0,-100}{1,-100}", item.Key, item.Value.Value);
+while (true)
+{
+    Console.ReadLine();
+    OperateResult operateResult = opcUaClientOperate.Subscribe(address);
+    Console.WriteLine(operateResult.ToJson().JsonFormatting());
+}
 
-//               LogHelper.Verbose(str);
-//            }
-//            break;
-//        default:
-//            Console.WriteLine(e.Message);
-//            break;
-//    }
-//}
+void OpcUaClientOperate_OnEvent(object? sender, EventResult e)
+{
+    switch (e.RType)
+    {
+        case YSAI.Core.@enum.ResultType.KeyValue:
+            ConcurrentDictionary<string, AddressValue> pairs = e.RData as ConcurrentDictionary<string, AddressValue>;
+            foreach (var item in pairs)
+            {
+                String str = String.Format("{0,-100}{1,-100}", item.Key, item.Value.Value);
+
+                LogHelper.Verbose(str);
+            }
+            break;
+        default:
+            Console.WriteLine(e.Message);
+            break;
+    }
+}
 
 
 

+ 1 - 1
src/YSAI.DAQ/YSAI.Test.All/YSAI.Test.All.csproj

@@ -13,7 +13,7 @@
   </ItemGroup>
 
   <ItemGroup>
-    <ProjectReference Include="..\YSAI.S7\YSAI.S7.csproj" />
+    <ProjectReference Include="..\YSAI.Opc\YSAI.Opc.csproj" />
   </ItemGroup>
 
 

+ 1 - 1
src/YSAI.DAQ/YSAI.Test/YSAI.Test.csproj

@@ -17,7 +17,7 @@
       <PrivateAssets>all</PrivateAssets>
       <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
     </PackageReference>
-	<PackageReference Include="YSAI.Core" Version="1.0.0.55" />
+	<PackageReference Include="YSAI.Core" Version="1.0.0.56" />
   </ItemGroup>
 
   <ItemGroup>