일상에 꼭 필요한 정보, 늘 함께하는 나침반 일상에 꼭 필요한 정보, 늘 함께하는 나침반

One Shot이란? 한 Scan만 신호를 만드는 원리

읽는 시간 약 8분

One Shot이란 PLC에서 입력 조건의 상태변화를 검출해 한 번의 Scan 동안만 TRUE 신호를 발생시키는 기능입니다. Rising·Falling Edge와 내부 Memory를 이용한 동작 원리를 알아봅니다.

One Shot이란 무엇이며 왜 사용할까?

One Shot은 PLC Program에서 특정 조건이 성립하거나 Signal의 상태가 변하는 순간에 일반적으로 한 번의 Program 실행주기 동안만 TRUE가 되도록 Pulse를 생성하는 기능입니다. PLC는 Input을 확인하고 Program을 실행하는 Scan Cycle을 매우 빠르게 반복합니다. 따라서 Push Button을 사람이 짧게 한 번 눌러도 PLC 입장에서는 Button Signal이 수십 번 또는 수백 번의 Scan 동안 ON 상태로 유지될 수 있습니다. 이 상태를 Counter 증가조건으로 그대로 사용하면 의도와 달리 여러 번 처리될 수 있습니다. One Shot을 사용하면 Button이 처음 ON된 순간에만 짧은 Internal Pulse를 만들어 Counter를 한 번 증가시키거나 Sequence를 한 번만 전환할 수 있습니다. 제조사에 따라 One Shot, One-shot Rising, Pulse, Positive Transition, ONS 등의 명칭이 사용될 수 있으며 Instruction의 세부 동작은 PLC마다 다릅니다. 핵심은 입력이 얼마나 오래 유지되는지와 관계없이 하나의 상태변화를 하나의 Event로 변환하여 중복 실행을 방지하는 것입니다.

One Shot은 이전 상태를 어떻게 기억할까?

One Shot이 한 번만 동작하려면 현재 Condition뿐 아니라 이전 Program 실행에서 해당 Condition이 어떤 상태였는지를 알아야 합니다. Rising 방식의 One Shot을 예로 들면 Previous State가 FALSE이고 Current State가 TRUE일 때만 Output Pulse를 TRUE로 만듭니다. 개념적으로 Pulse = Current AND NOT Previous와 같이 이해할 수 있습니다. 이후 현재 상태를 내부 Memory에 저장하면 다음 Scan에서는 Current와 Previous가 모두 TRUE이므로 Pulse가 다시 발생하지 않습니다. Input이 계속 ON 상태를 유지하더라도 One Shot Output은 FALSE로 돌아갑니다. Input이 OFF가 되면 내부 상태가 다시 준비되고 이후 OFF에서 ON으로 전환될 때 새로운 Pulse를 만들 수 있습니다. PLC에서 제공하는 전용 One Shot Instruction은 이러한 Previous State Memory를 내부적으로 관리하거나 별도의 Storage Bit를 요구할 수 있습니다. 따라서 같은 Storage Bit를 여러 One Shot에서 공유하거나 상태가 유지되지 않는 Temporary Variable을 잘못 사용하면 의도한 동작을 얻지 못할 수 있습니다.

Rising·Falling Edge와 One Shot은 어떤 관계일까?

One Shot과 Edge Detection은 매우 밀접한 개념입니다. Rising Edge One Shot은 Signal이 OFF → ON으로 변화할 때 한 번의 Pulse를 만들고 Falling Edge One Shot은 ON → OFF로 변화할 때 Pulse를 발생시킵니다. 따라서 Rising Edge와 Falling Edge를 검출한 결과를 한 번의 Program Cycle 동안 사용할 수 있도록 만든 것이 One Shot의 대표적인 형태라고 이해할 수 있습니다. 다만 제조사마다 용어가 완전히 동일하지는 않습니다. 어떤 PLC에서는 Rising Edge Instruction 자체가 한 Scan Pulse를 출력하고 다른 PLC에서는 Edge Contact, Pulse Instruction과 One Shot Instruction을 별도의 명칭으로 제공합니다. IEC 61131-3 계열에서는 R_TRIG와 F_TRIG를 사용하여 각각 Rising과 Falling Transition을 검출할 수 있습니다. 중요한 것은 Instruction 이름보다 Output이 언제 TRUE가 되고 얼마 동안 유지되는지 확인하는 것입니다. 특히 Event Task처럼 일반 Cyclic Scan과 다른 실행방식을 사용하는 Program에서는 ‘한 Scan’이 실제 시간으로 몇 ms인지 고정되어 있지 않을 수 있습니다.

One Shot은 어떤 PLC Logic에서 사용할까?

One Shot은 하나의 Physical Event를 정확히 한 번의 Program Event로 처리해야 할 때 유용합니다. 대표적인 예가 Product Counting입니다. Photoelectric Sensor가 제품을 검출하는 동안 여러 Scan 동안 ON되어도 Rising One Shot을 이용하면 제품이 Sensor에 진입하는 순간 Counter를 한 번만 증가시킬 수 있습니다. Push Button으로 Recipe Number를 한 단계 증가시키거나 Alarm Acknowledge, Data Logging, Production Record 저장과 Sequence Step 전환을 실행할 때도 활용됩니다. Communication Command가 처음 들어온 순간에만 특정 Function을 호출하거나 설비 운전모드가 변경된 순간 Initialization Logic을 실행하는 데도 사용할 수 있습니다. 하지만 One Shot은 Sensor의 물리적인 Chattering이나 동일 제품에 의한 여러 번의 Signal 변화까지 자동으로 제거하는 기능은 아닙니다. Mechanical Contact Bounce나 불안정한 Detection 때문에 Input이 OFF·ON을 반복하면 각각 새로운 Edge로 판단할 수 있으므로 필요한 경우 Debounce, Timer와 Sensor Filtering을 함께 적용해야 합니다.

One Shot을 사용할 때 무엇을 주의해야 할까?

One Shot Pulse는 매우 짧기 때문에 다른 Program이나 느린 Communication System에서 해당 Signal을 직접 확인하려고 하면 Pulse를 놓칠 수 있습니다. 예를 들어 PLC 내부에서는 한 Scan 동안 TRUE였지만 HMI의 Data Update Cycle이 500ms라면 HMI 화면에서 해당 Bit가 ON된 것을 전혀 보지 못할 수도 있습니다. 외부 System이 반드시 Event를 확인해야 한다면 One Shot으로 Latch Bit를 SET하고 상대방의 Acknowledge를 받은 뒤 RESET하는 Handshake 방식이 더 적합할 수 있습니다. 또한 One Shot Instruction을 Conditional Program이나 호출되지 않는 Function Block 안에 배치하면 내부 Previous State가 예상과 다르게 관리될 수 있으므로 제조사의 실행규칙을 확인해야 합니다. PLC 전원 투입 직후 첫 Scan에서 Initial State가 어떻게 설정되는지도 중요한 경우가 있습니다. 고속 Sensor Pulse가 PLC의 Input Filter나 Scan Cycle보다 짧다면 One Shot 이전에 Input 자체를 놓칠 수 있으므로 High-speed Input이나 Interrupt 기능이 필요할 수 있습니다. 결국 One Shot은 지속되는 BOOL 조건을 한 번의 Trigger로 변환하여 Counter, Sequence와 Command가 중복 실행되지 않도록 만드는 PLC Event Processing의 핵심 기능입니다.

jssj2627

함께 보면 좋은 글

댓글 0

첫 댓글을 남겨보세요.

error: Content is protected !!

광고 차단 알림

광고 클릭 제한을 초과하여 광고가 차단되었습니다.

단시간에 반복적인 광고 클릭은 시스템에 의해 감지되며, IP가 수집되어 사이트 관리자가 확인 가능합니다.