0
에서 "Channel1.Device1.Tag1"값
읽기 , 설명, 데이터 유형 등을 포함 할 수 있습니다. 노드에 대한 내가 여기에서 NetCoreConsoleClient 샘플을 사용하고 Kepserver
Kepserver에서 "Channel1.Device.Tag1"에 실제 태그 값을 보유하는 "Value"라는 속성이 없음을 알았습니다.
KepServer에서 제공하는 "빠른 클라이언트"를 사용할 때 "태그 1"값이 나타납니다.
내 자신의 클라이언트를 사용하여 "태그"값을 가져와야합니다. 코드의
수정 된 부분 : 샘플 코드에 히트 재판으로
`Console.WriteLine("4 - Browse the OPC UA server namespace.");
ReferenceDescriptionCollection references;
Byte[] continuationPoint;
references = session.FetchReferences(ObjectIds.ObjectsFolder);
session.Browse(
null,
null,
ObjectIds.ObjectsFolder,
//ObjectIds.RootFolder,
0u,
BrowseDirection.Forward,
ReferenceTypeIds.HierarchicalReferences,
true,
(uint)NodeClass.Variable | (uint)NodeClass.Object | (uint)NodeClass.Method,
out continuationPoint,
out references);
Console.WriteLine(" DisplayName, BrowseName, NodeClass");
foreach (var rd in references)
{
Console.WriteLine(" {0}, {1}, {2}", rd.DisplayName, rd.BrowseName, rd.NodeClass);
ReferenceDescriptionCollection nextRefs;
byte[] nextCp;
session.Browse(
null,
null,
ExpandedNodeId.ToNodeId(rd.NodeId, session.NamespaceUris),
0u,
BrowseDirection.Forward,
ReferenceTypeIds.HierarchicalReferences,
true,
(uint)NodeClass.Variable | (uint)NodeClass.Object | (uint)NodeClass.Method,
out nextCp,
out nextRefs);
foreach (var nextRd in nextRefs)
{
Console.WriteLine(" + {0}, {1}, {2}", nextRd.DisplayName, nextRd.BrowseName, nextRd.NodeClass);
ReferenceDescriptionCollection nextRefs1;
byte[] nextCp1;
session.Browse(
null,
null,
ExpandedNodeId.ToNodeId(nextRd.NodeId, session.NamespaceUris),
0u,
BrowseDirection.Forward,
ReferenceTypeIds.HierarchicalReferences,
true,
(uint)NodeClass.Variable | (uint)NodeClass.Object | (uint)NodeClass.Method,
out nextCp1,
out nextRefs1);
foreach (var nextRd1 in nextRefs1)
{
Console.WriteLine(" + {0}, {1}, {2}", nextRd1.DisplayName, nextRd1.BrowseName, nextRd1.NodeClass);
ReferenceDescriptionCollection nextRefs2;
byte[] nextCp2;
var res = session.Browse(
null, null,
ExpandedNodeId.ToNodeId(nextRd1.NodeId, session.NamespaceUris), 0u, BrowseDirection.Forward,
ReferenceTypeIds.HierarchicalReferences, true,
(uint)NodeClass.Variable | (uint)NodeClass.Object | (uint)NodeClass.Method, out nextCp2, out nextRefs2);
double maxAge = 0; //Pick 0 millisecond old value directly from device not from the cache.
DataValueCollection results;
DiagnosticInfoCollection diagInfos;
ReadValueIdCollection readValueIds;
foreach (var nextRd2 in nextRefs2)
{
try
{
if (!nextRd2.NodeId.IsNull)
{
var node = ExpandedNodeId.ToNodeId(nextRd2.NodeId, session.NamespaceUris);
if (node != null)
{
DataValue dv = session.ReadValue(node);
ReferenceDescriptionCollection nextRefs3;
byte[] nextCp3;
var res1 = session.Browse(null, null,
ExpandedNodeId.ToNodeId(nextRd2.NodeId, session.NamespaceUris), 0u, BrowseDirection.Forward,
ReferenceTypeIds.HierarchicalReferences, true,
(uint)NodeClass.Variable | (uint)NodeClass.Object | (uint)NodeClass.Method, out nextCp3, out nextRefs3);
foreach (var nextRd3 in nextRefs3)
{
if (!nextRd3.NodeId.IsNull)
{
var node1 = ExpandedNodeId.ToNodeId(nextRd3.NodeId, session.NamespaceUris);
if (node1 != null)
{
DataValue dv2 = session.ReadValue(node1);
}
}
}
}
}
}
catch (ServiceResultException srex)
{
//eat exception yum yum yum!
}
catch (Exception ex)
{
//eat exception yum yum yum!
}`
"나는 값을 얻을 수 없다"는 것을 설명해주십시오. 관찰 된 행동은 무엇입니까? – ZbynekZ
서버의 모든 노드의 모든 속성/값을 가져올 수 있으며 "Channel1.Device1.Tag1"노드에 대해 모든 속성/vlaues (DataType, Address, Description 등)를 가져올 수 있지만 현재 "Tag1"의 실제 값을 보유하는 속성을 얻지 못함 –