PLC Tag란? 주소 대신 변수명으로 프로그램하는 원리
PLC Tag란 메모리 주소 대신 의미 있는 변수명을 사용해 입출력과 내부 데이터를 관리하는 방식입니다. Symbolic Name과 Address Mapping을 이용해 PLC 프로그램을 쉽게 작성하고 유지보수하는 원리를 알아봅니다.
PLC Tag란 무엇이며 왜 사용할까?
PLC Tag는 PLC Program에서 Input, Output, Internal Memory와 각종 Data를 사람이 이해하기 쉬운 이름으로 정의하여 사용하는 Variable 또는 Symbolic Name입니다. 전통적인 PLC에서는 X0, Y10, M100, D200처럼 Device Address를 직접 사용하여 Logic을 작성하는 방식이 많이 사용되었습니다. 하지만 주소만 보면 해당 Data가 어떤 장비와 기능을 의미하는지 바로 파악하기 어렵습니다. 예를 들어 Motor 운전신호에 Motor_Run_Cmd, Tank Level에 Tank_Level, 비상정지 상태에 Emergency_Stop과 같은 Tag를 사용하면 Program의 목적을 훨씬 쉽게 이해할 수 있습니다. Tag에는 이름뿐 아니라 BOOL, INT, DINT, REAL과 같은 Data Type과 Scope, Initial Value 등의 속성을 지정할 수 있습니다. 현대적인 PLC Programming에서는 이러한 Tag 기반의 Symbolic Programming을 적극적으로 사용하며 제조사에 따라 Tag, Variable, Symbol 등의 용어를 사용합니다. 핵심은 실제 Memory나 I/O와 Program Logic 사이에 의미 있는 이름을 부여하여 가독성과 유지보수성을 높이는 것입니다.
Tag와 실제 PLC 주소는 어떻게 연결될까?
PLC Tag를 사용한다고 해서 Physical I/O Address나 Memory가 사라지는 것은 아닙니다. PLC는 실제 Hardware Input과 Output, Memory 영역을 처리해야 하므로 Programming Environment 내부에서 Tag와 실제 Data 위치 사이의 Mapping이 이루어집니다. 예를 들어 현장의 Start Button이 Digital Input의 특정 Channel에 연결되어 있다면 해당 I/O Point에 Start_Button이라는 BOOL Tag를 지정할 수 있습니다. Program에서는 실제 주소 대신 Start_Button을 사용하지만 PLC Runtime은 이를 Mapping된 I/O Data와 연결하여 처리합니다. PLC Platform에 따라 사용자가 Absolute Address를 직접 지정하는 방식도 있고 Compiler와 Runtime이 Symbolic Variable의 Memory를 자동으로 관리하는 방식도 있습니다. Controller-scoped Tag와 Program-scoped Tag처럼 Variable의 Scope를 구분하는 System도 있습니다. 따라서 모든 Tag가 반드시 하나의 고정된 Absolute Address를 가져야 하는 것은 아닙니다. 중요한 것은 Program에서 사용되는 Symbolic Name이 실제 I/O, Memory 또는 다른 Data Source와 어떤 관계를 갖는지 명확하게 정의하는 것입니다.
Tag를 사용하면 프로그램 유지보수가 왜 쉬워질까?
Tag 기반 Programming의 가장 큰 장점은 Logic의 의미를 주소표 없이도 이해하기 쉽다는 것입니다. 예를 들어 X12 AND M105 → Y20이라는 Logic만 보면 각 Device의 기능을 별도의 Address List에서 확인해야 합니다. 반면 Start_Cmd AND Safety_OK → Conveyor_Run처럼 작성하면 Logic의 목적을 바로 파악할 수 있습니다. 설비가 커질수록 이러한 차이는 더욱 중요해집니다. Motor, Sensor와 Valve가 수백 개 존재하는 System에서 모든 주소를 기억하기는 어렵기 때문입니다. Tag에 Description과 Comment를 추가하면 장치의 설치위치, Signal 의미와 Engineering Unit 등의 정보도 함께 관리할 수 있습니다. 또한 Hardware Configuration이 변경되어 Physical Address가 달라지더라도 적절한 Mapping 구조를 사용하면 Program 전체의 Symbolic Name을 변경하지 않고 I/O 연결부분만 수정할 수 있습니다. Function Block이나 Structure와 Tag를 결합하면 장비별 Data를 표준화할 수 있어 Program 복사와 확장도 쉬워집니다. 결국 Tag는 PLC Logic을 단순한 주소의 조합에서 의미 중심의 Software로 바꾸는 중요한 요소입니다.
Local Tag와 Global Tag는 무엇이 다를까?
PLC Tag는 사용할 수 있는 Program 영역에 따라 Local과 Global Scope로 구분할 수 있습니다. Global Tag는 여러 Program, Routine 또는 Function Block에서 접근할 수 있는 Data에 사용하며 설비 전체에서 공유해야 하는 Operating Mode, Common Alarm이나 Communication Data 등에 적합할 수 있습니다. Local Tag는 특정 Program이나 Block 내부에서만 사용하도록 범위를 제한한 Variable입니다. 계산 중간값이나 특정 Equipment Logic에서만 필요한 Data를 Local로 정의하면 다른 Program에서 실수로 값을 변경하는 위험을 줄일 수 있습니다. 모든 Variable을 Global로 만들면 접근은 편리하지만 어느 Logic에서 Data를 변경했는지 추적하기 어려워지고 Program Module 사이의 Dependency가 커질 수 있습니다. 반대로 Scope를 적절하게 제한하면 각 Module의 역할과 Data Ownership이 명확해집니다. PLC 제조사에 따라 Controller Tag, Program Tag, Local Variable, Interface Variable 등의 명칭과 적용범위가 다르므로 실제 Programming Tool의 Scope 규칙을 확인해야 합니다.
PLC Tag를 만들 때 어떤 규칙을 정하는 것이 좋을까?
대규모 PLC Program에서는 Tag Naming Convention을 일관되게 적용하는 것이 중요합니다. M1_Run, M1_Fault, CV01_StartCmd, Tank01_LevelPV처럼 Equipment와 Signal의 의미를 파악할 수 있는 이름을 사용하면 Troubleshooting 시간이 줄어듭니다. 단순히 Sensor1, Data2처럼 의미가 불분명한 이름을 많이 사용하면 Tag 방식의 장점이 줄어듭니다. Command, Status, Setpoint와 Process Value를 구분하는 접미어나 규칙을 정하는 것도 도움이 됩니다. Data Type 역시 Signal 목적에 맞춰 BOOL, INT, DINT와 REAL 등을 선택해야 하며 HMI나 SCADA와 연결되는 Tag는 Engineering Unit과 Scaling 범위까지 명확하게 관리하는 것이 좋습니다. 또한 동일한 Output Tag를 여러 Routine에서 Write하면 PLC의 실행순서에 따라 최종값이 달라질 수 있으므로 하나의 Data를 누가 생성하고 변경하는지 명확하게 설계해야 합니다. 결국 PLC Tag는 단순히 주소에 별명을 붙이는 기능을 넘어 Data의 의미와 사용범위를 구조화하여 PLC Program의 가독성, 재사용성과 유지보수성을 높이는 Symbolic Programming의 핵심입니다.




댓글 0
첫 댓글을 남겨보세요.