69 lines
2.2 KiB
C#
69 lines
2.2 KiB
C#
using System;
|
||
using System.Threading.Tasks;
|
||
using Opc.Ua;
|
||
using Opc.Ua.Client;
|
||
using Opc.Ua.Configuration;
|
||
|
||
class Program
|
||
{
|
||
static async Task Main()
|
||
{
|
||
try
|
||
{
|
||
// 1️⃣ Application 설정
|
||
var config = new ApplicationConfiguration
|
||
{
|
||
ApplicationName = "OpcUaMinimalClient",
|
||
ApplicationType = ApplicationType.Client,
|
||
SecurityConfiguration = new SecurityConfiguration
|
||
{
|
||
AutoAcceptUntrustedCertificates = true, // 테스트용
|
||
RejectSHA1SignedCertificates = false
|
||
},
|
||
TransportQuotas = new TransportQuotas
|
||
{
|
||
OperationTimeout = 15000
|
||
},
|
||
ClientConfiguration = new ClientConfiguration
|
||
{
|
||
DefaultSessionTimeout = 60000
|
||
}
|
||
};
|
||
|
||
await config.Validate(ApplicationType.Client);
|
||
|
||
// 2️⃣ Endpoint 설정
|
||
var endpointUrl = "opc.tcp://192.168.0.20:4840"; // Experion 서버
|
||
var selectedEndpoint = CoreClientUtils.SelectEndpoint(endpointUrl, useSecurity: true);
|
||
var endpoint = new ConfiguredEndpoint(null, selectedEndpoint);
|
||
|
||
// 3️⃣ Session 생성
|
||
var userIdentity = new UserIdentity("mngr", "mngr");
|
||
var session = await Session.Create(
|
||
config,
|
||
endpoint,
|
||
false,
|
||
"MinimalClientSession",
|
||
60000,
|
||
userIdentity,
|
||
null
|
||
);
|
||
|
||
Console.WriteLine("✅ OPC UA 서버 연결 성공!");
|
||
|
||
// 4️⃣ Node 읽기 (예제 NodeId)
|
||
var nodeId = new NodeId("ns=1;s=shinam:p-6102.hzset.fieldvalue");
|
||
DataValue value = session.ReadValue(nodeId);
|
||
Console.WriteLine($"Node Value: {value.Value}");
|
||
|
||
// 5️⃣ 세션 종료
|
||
session.Close();
|
||
Console.WriteLine("세션 종료");
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
Console.WriteLine($"❌ 오류: {ex.Message}");
|
||
}
|
||
}
|
||
}
|