728x90

TIA Portal에서 설정하고, Visual Studio로 실시간 제어까지

Siemens PLC는 글로벌 산업 자동화 표준이라 할 만큼 다양한 스마트팩토리 현장에서 활용되고 있습니다. 특히 S7-1200/1500 시리즈OPC UA 서버 내장으로, 외부 IT 시스템과의 연결성이 뛰어납니다.

이 글에서는 C# OPC UA 클라이언트 앱을 직접 구현하여, S7 PLC에서 실시간 데이터를 읽고 이벤트 처리까지 해보겠습니다.
TIA Portal → 인증서 설정 → C# 코드 구현까지 단계별로 구성되어 있어 실무에 바로 적용 가능합니다.

  • 통신 프로토콜: OPC UA (opc.tcp://<PLC IP>:4840)
  • 개발 언어: C# (.NET 6 이상)
  • 개발 환경: Visual Studio 2022+
  • 사용 라이브러리: OPCFoundation.NetStandard.Opc.Ua
  • 주요 기능:
    • TIA Portal에서 태그 공유 설정
    • C#으로 OPC UA 연결 및 데이터 Read
    • Subscription 기반 변경 이벤트 수신
    • 보안 정책/인증서 구성 실전 팁


🔧 Siemens OPC UA 서버 활성화 절차 (TIA Portal)

  1. S7-1200/1500 모델 선택 (1500은 고급 보안, 1200은 기본 기능 제공)
  2. Device Configuration → OPC UA 탭
  3. OPC UA Server 활성화
  4. Global DB 생성 → 공개할 변수에 Accessible from HMI/OPC UA 체크
  5. 보안 인증서 생성 및 외부 Client와 교환


📦 C# OPC UA 연결 코드 예제

 
string endpointUrl = "opc.tcp://192.168.130.72:4840"; // PLC IP 주소
string nodeId = "ns=3;s=\"DB1\".\"Speed\""; // TIA Portal에서 설정한 DB 변수

var session = await Session.Create(config, endpoint, false, "SiemensClient", 60000, null, null);
var value = session.ReadValue(nodeId);
Console.WriteLine($"Speed 값: {value.Value}");

Siemens의 노드ID는 "DB명"."태그명" 형식으로 표현됨. ns=3은 서버 구성에 따라 달라질 수 있으니 UA 클라이언트 툴(ex. UAExpert)로 확인 필요.


🔁 Subscription 이벤트 처리

 
var monitoredItem = new MonitoredItem(subscription.DefaultItem)
{
    StartNodeId = "ns=3;s=\"DB1\".\"Speed\"",
    DisplayName = "Speed",
    SamplingInterval = 500
};

monitoredItem.Notification += (item, args) =>
{
    foreach (var v in item.DequeueValues())
    {
        Console.WriteLine($"Speed 변경됨: {v.Value}");
    }
};

🛠️ 실무 노하우

항목설명
TIA Portal 설정 필수 Accessible from HMI/OPC UA 옵션 체크 안 하면 외부 접근 불가
인증서 관리 Siemens는 기본적으로 인증서 기반 접근만 허용 → C# 클라이언트 인증서 생성 후 교환
NodeId 확인 UAExpert 또는 TIA Portal에서 OPC UA 구조 Export 가능
포트 개방 기본 포트 4840 방화벽 허용 필수
S7-1200 제한사항 S7-1500 대비 OPC UA 채널 수, 보안 기능 제한 있음

https://www.youtube.com/watch?v=wPMMyGQfk4Y

 

 

728x90

+ Recent posts