diff --git a/framework/ThingsGateway.Plugin/Foundataion/ThingsGateway.Foundation.Adapter.OPCUA/OPCUAClient/OPCUAClient.cs b/framework/ThingsGateway.Plugin/Foundataion/ThingsGateway.Foundation.Adapter.OPCUA/OPCUAClient/OPCUAClient.cs index 1d4eb9bb9..65f484870 100644 --- a/framework/ThingsGateway.Plugin/Foundataion/ThingsGateway.Foundation.Adapter.OPCUA/OPCUAClient/OPCUAClient.cs +++ b/framework/ThingsGateway.Plugin/Foundataion/ThingsGateway.Foundation.Adapter.OPCUA/OPCUAClient/OPCUAClient.cs @@ -205,7 +205,7 @@ public class OPCUAClient : DisposableObject #region 订阅 /// - /// 新增订阅,需要指定订阅的关键字,订阅的tag名数组,以及回调方法 + /// 新增订阅,需要指定订阅组名称,订阅的tag名数组 /// public async Task AddSubscriptionAsync(string subscriptionName, string[] items) { @@ -222,19 +222,26 @@ public class OPCUAClient : DisposableObject List monitoredItems = new(); for (int i = 0; i < items.Length; i++) { - var variableNode = (VariableNode)ReadNode(items[i], false); - var item = new MonitoredItem + try { - StartNodeId = variableNode.NodeId, - AttributeId = Attributes.Value, - DisplayName = items[i], - Filter = new DataChangeFilter() { DeadbandValue = OPCNode.DeadBand, DeadbandType = (int)DeadbandType.Absolute, Trigger = DataChangeTrigger.StatusValue }, - SamplingInterval = OPCNode?.UpdateRate ?? 1000, - }; - await typeSystem.LoadType(variableNode.DataType, true, true); + var variableNode = (VariableNode)ReadNode(items[i], false); + var item = new MonitoredItem + { + StartNodeId = variableNode.NodeId, + AttributeId = Attributes.Value, + DisplayName = items[i], + Filter = new DataChangeFilter() { DeadbandValue = OPCNode.DeadBand, DeadbandType = (int)DeadbandType.Absolute, Trigger = DataChangeTrigger.StatusValue }, + SamplingInterval = OPCNode?.UpdateRate ?? 1000, + }; + await typeSystem.LoadType(variableNode.DataType, true, true); - item.Notification += Callback; - monitoredItems.Add(item); + item.Notification += Callback; + monitoredItems.Add(item); + } + catch (Exception ex) + { + Log.Error($"初始化{items[i]}变量订阅失败" + ex.Message); + } } m_subscription.AddItems(monitoredItems);