ROBOT ENGINEERING NOTES

로봇과 AMR의
전장 설계부터 인증까지

회로 실무, 산업자동화, Functional Safety, ISO 규격과 로봇 인증을 실제 설계 관점에서 정리합니다.

회로 실무 AMR / AGV Functional Safety ISO 13849 EMC / CE

【회로-전장 실무】 PLC Scan Time이란? | Input, Program, Output이 실제로 처리되는 순서

PLC SCAN CYCLE PRACTICE
PLC는 Ladder를 실시간으로 계속 읽는 것이 아니라
입력, Program, 출력을 반복해서 Scan한다

Process Image, Scan Time, 빠른 Pulse를 놓치는 이유, High-speed Input과 Interrupt까지 실제 Troubleshooting 관점으로 정리한다.

PLC를 처음 사용할 때는 Input이 ON되면 Ladder의 Contact도 같은 순간 ON되고 Output Coil도 즉시 바뀐다고 생각하기 쉽다. 하지만 일반적인 PLC CPU는 정해진 순서로 Input을 읽고 Program을 실행한 뒤 Output을 갱신하는 Cycle을 반복한다.

이 구조를 이해하지 못하면 "Sensor LED는 분명 켜졌는데 PLC에서는 못 봤다", "Output Coil은 ON인데 실제 Terminal은 한 박자 늦는다" 같은 현상을 설명하기 어렵다.

가장 기본적인 Scan Physical Input 읽기 → Process Image에 저장 → User Program 실행 → Output Image 갱신 → Physical Output 반영 → Communication과 Diagnostics → 다음 Scan

1. Scan Cycle이란?

PLC CPU가 반복적으로 수행하는 한 번의 작업주기를 Scan Cycle이라고 한다. Siemens S7 계열 설명도 Input을 읽고, User Program을 실행하고, Communication과 Diagnostics를 처리한 뒤 Output을 갱신하는 반복구조로 설명한다.

CPU와 설정에 따라 실제 순서는 조금 다를 수 있지만 핵심은 Program이 Physical I/O를 매 Instruction마다 직접 읽는 것이 아니라 Process Image를 사용하는 경우가 많다는 점이다.

2. Process Image가 왜 필요한가?

Program 실행 중간에 Physical Input이 바뀌면 같은 Scan 안에서도 앞부분 Logic과 뒷부분 Logic이 서로 다른 Input 값을 볼 수 있다. Process Image는 Scan 시작 시 Input 상태를 Snapshot처럼 저장해 한 Cycle 동안 일관된 값을 사용하게 한다.

일반적인 Cyclic Program Processing
01Input ReadPhysical → Image
02Main ProgramLogic Execute
03FB / FCFunction Logic
04CommunicationSystem Task
05Output UpdateImage → Physical
06Next ScanRepeat

3. Scan Time은 일정한 숫자가 아닐 수 있다

User Program 실행시간, Communication Load, Interrupt, Diagnostics와 CPU Background Task에 따라 Scan Time은 Cycle마다 조금씩 달라질 수 있다.

그래서 평균 Scan Time만 보지 말고 Maximum Scan Time도 확인하는 것이 중요하다.

4. 10ms Scan이면 5ms Pulse는 놓칠 수 있다

Digital Input이 5ms만 ON되고 다음 Scan이 오기 전에 다시 OFF되면 CPU가 Process Image를 읽는 순간에는 OFF일 수 있다.

이 현상이 중요한 이유 Sensor Response Time이 1ms라고 해서 PLC가 1ms Pulse를 반드시 읽는 것은 아니다. Sensor, Input Module Filter, PLC Scan, Program Logic 전체를 같이 봐야 한다.

5. Input Filter가 Scan Time보다 더 큰 경우도 있다

산업용 PLC Digital Input에는 Noise를 줄이기 위한 Hardware 또는 Software Filter가 들어갈 수 있다. 예를 들어 Input Filter가 10ms면 3ms Pulse는 CPU Scan이 빨라도 사라질 수 있다.

따라서 빠른 Proximity Sensor나 Encoder Pulse를 일반 DI에 연결하기 전에 Input Filter와 Minimum Pulse Width를 확인한다.

6. 빠른 Signal은 High-speed Input을 사용한다

Encoder A/B, Photo Sensor Count, 짧은 Trigger처럼 Scan Cycle에 의존하면 안 되는 Signal은 High-speed Counter나 Hardware Capture를 사용하는 것이 일반적이다.

이 경우 Input Edge를 CPU Main Scan과 별개 Hardware에서 Count하고 Program에서는 누적값을 읽는다.

7. Interrupt는 일반 Scan을 중단하고 우선 실행할 수 있다

일부 PLC는 Hardware Interrupt, Time Interrupt, Cyclic Interrupt를 지원한다. 특정 Event가 발생하면 Main Program보다 우선해 지정된 Routine을 실행할 수 있다.

Interrupt를 많이 넣는다고 빠른 PLC가 되는 것은 아니다.
Interrupt 실행시간이 길어지면 Main Scan Jitter와 전체 CPU Load가 커진다. 정말 Timing이 필요한 Logic만 분리한다.

8. Output Coil이 ON되었다고 Terminal이 같은 순간 바뀌는 것은 아니다

일반 Process Image Output은 Program에서 Memory 값을 바꾸고 Scan 끝이나 지정된 Update Timing에 Physical Output으로 반영된다.

그래서 매우 빠른 Pulse Output은 일반 Ladder Coil 대신 PTO, PWM, High-speed Output 같은 Hardware 기능을 사용한다.

9. Program 순서도 한 Scan 안에서는 중요하다

같은 Memory Bit를 Program 앞부분에서 ON하고 뒷부분에서 OFF하면 최종값은 뒤 Logic에 의해 결정될 수 있다.

"PLC는 위에서 아래로 읽는다"는 설명은 단순하지만, 실제 Debug에서는 Duplicate Coil과 여러 Routine에서 같은 Tag를 쓰는지 확인해야 한다.

10. Timer도 Scan과 완전히 무관하지 않다

현대 PLC Timer는 System Clock 기반으로 동작하는 경우가 많아 단순히 Scan 횟수를 세는 것은 아니지만, Timer 조건을 평가하고 Output Logic을 실행하는 시점은 Scan과 관계가 있다.

정확한 1ms Event 처리가 필요하다면 일반 TON 하나에 기대기보다 PLC의 Task와 Interrupt 기능을 확인한다.

11. PLC-PC 통신에서도 Scan Time을 고려해야 한다

PC가 Modbus TCP로 Command를 10ms마다 보내더라도 PLC Program이 50ms Task에서 그 Data를 처리하면 실제 Command 반응은 그보다 느릴 수 있다.

반대로 PLC가 1ms Scan이라고 해서 Ethernet Packet이 항상 1ms 안에 처리되는 것도 아니다. Communication Task와 Network Stack이 별도로 동작할 수 있다.

12. Heartbeat Timeout도 Scan과 통신주기를 함께 본다

AMR PLC-PC Interface에서 Heartbeat를 설계할 때는 "1초 동안 Data가 안 오면 Fault" 같은 Timeout만 볼 것이 아니라 PLC Scan, PC Update Period, Network Jitter와 일시적인 CPU Load를 고려해야 한다.

Timeout을 너무 짧게 하면 정상상태에서도 False Fault가 나고, 너무 길면 실제 Communication Loss를 늦게 감지한다.

13. Sensor LED는 켜졌는데 PLC Input이 안 보일 때

가능 원인 확인 방법
Pulse가 너무 짧음 Oscilloscope 또는 Counter로 Pulse Width 측정
Input Filter가 큼 Module Parameter 확인
NPN/PNP 배선 오류 COM과 Current Path 확인
Process Image 외 주소 I/O Mapping과 Immediate Access 확인
Program에서 덮어씀 Cross Reference와 Duplicate Logic 확인

14. Scan Time을 줄이는 것보다 Task를 나누는 것이 좋을 때가 있다

모든 Logic을 1ms로 돌리면 CPU가 낭비된다. Safety와 Motion이 아닌 HMI, Logging, Communication Diagnostics는 느린 주기로도 충분할 수 있다.

FAST TASKMotion / Time-critical

빠른 Control과 Pulse Handling처럼 Timing이 중요한 Logic을 배치한다.

SLOW TASKHMI / Logging

Human Interface와 통계, 상태표시는 느린 Cycle로 분리해 CPU Load를 줄인다.

15. Scan Time을 측정할 때 보는 값

PLC Timing Checklist
  • Current Scan Time
  • Maximum Scan Time
  • Task Period
  • Input Filter Time
  • Minimum Detectable Pulse
  • Communication Update Period
  • High-speed Counter 최대 Frequency
  • Interrupt 실행시간
  • Watchdog Time
  • CPU Load

16. Troubleshooting은 Signal부터 CPU까지 시간축으로 본다

Sensor가 언제 ON되는지, Input Module이 언제 인식하는지, CPU가 언제 Process Image를 갱신하는지, Program이 언제 조건을 평가하는지, Output이 언제 Physical Terminal로 나가는지 순서대로 보면 원인이 보인다.

정리하면
PLC Scan Time은 단순한 CPU 속도 숫자가 아니다. Input Filter, Process Image, Program Task, Communication과 Output Update가 합쳐져 실제 반응시간을 만든다. 짧은 Pulse와 정확한 Timing이 필요한 Signal은 일반 Scan Logic이 아니라 High-speed I/O나 Interrupt를 검토해야 한다.

같이 보면 좋은 TerryPack 글

반응형
LIST