Jelajahi Sumber

OPCUA 订阅修改

Shun 2 tahun lalu
induk
melakukan
01bc39ecb9

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

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

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

@@ -879,6 +879,9 @@ namespace YSAI.Opc.ua.client
 
                             if (Nodes.Count > 0)
                             {
+                                //添加监控项
+                                allSubscriptions[Tag].AddItems(monitoredItems);
+
                                 //添加订阅
                                 if (!clientSession?.AddSubscription(allSubscriptions[Tag]) == true)
                                 {
@@ -888,9 +891,6 @@ namespace YSAI.Opc.ua.client
                                 //在服务器上创建订阅并添加所有监视项
                                 allSubscriptions[Tag].Create();
 
-                                //添加监控项
-                                allSubscriptions[Tag].AddItems(monitoredItems);
-
                                 // 将任何更改应用于订阅项
                                 allSubscriptions[Tag].ApplyChanges();
 
@@ -914,15 +914,6 @@ namespace YSAI.Opc.ua.client
                             subscription.TimestampsToReturn = TimestampsToReturn.Both;  //与通知消息一起返回的时间戳
                             subscription.StateChanged += delegate (Subscription subscription, SubscriptionStateChangedEventArgs e) { Subscription_StateChanged(subscription, e, Tag); };  //订阅状态
 
-                            //添加订阅
-                            if (!clientSession?.AddSubscription(subscription) == true)
-                            {
-                                return Break("AddSubscribe", false, "会话添加订阅失败");
-                            }
-
-                            //在服务器上创建订阅并添加所有监视项
-                            subscription.Create();
-
                             //监控项集合                                                                                                                                                    
                             List<MonitoredItem> monitoredItems = new List<MonitoredItem>();
 
@@ -946,6 +937,15 @@ namespace YSAI.Opc.ua.client
                             //添加监控项
                             subscription.AddItems(monitoredItems);
 
+                            //添加订阅
+                            if (!clientSession?.AddSubscription(subscription) == true)
+                            {
+                                return Break("AddSubscribe", false, "会话添加订阅失败");
+                            }
+
+                            //在服务器上创建订阅并添加所有监视项
+                            subscription.Create();
+
                             // 将任何更改应用于订阅项
                             subscription.ApplyChanges();