타이머 및 지연 로직
실제 제어 시퀀스를 몇 개 읽어 보면 공통 패턴이 나타납니다. 중요한 동작은 조건이 참이 되는 순간 곧바로 일어나는 경우가 거의 없습니다. 팬을 기동 지령한 뒤 실제 기동했다고 판단하기 전에 운전 확인 신호를 기다립니다. 난방이 꺼진 뒤에도 팬을 잠시 더 운전합니다. 구십 초 전에 정지한 압축기를 다시 기동하지 않습니다. 이 문장들은 모두 타이머이며, 의 전체 타이머 계열은 두 블록으로 정리됩니다. 이 페이지에서는 처음부터 끝까지 한 가지 질문에 답합니다. TON과 TOF는 실제로 무엇을 하며, 거의 모든 실전 와이어시트는 왜 시간을 거쳐 판단하도록 할까요?
이 페이지는 핀, 와이어, 스캔 등 블록 수준에서 와이어시트를 읽을 수 있다고
가정합니다. 이 장의 첫 수업인 함수
블록 기초에서 배울 수 있습니다. 서로 연결되는 두 수업의 내용을 활용하되
여기서 다시 설명하지는 않습니다. 불리언
로직 및 래치에서는 의 원리와 안전 로직에서 래치를 사용하는 이유를 설명하고,
비교기 및
불감대에서는 임계값 판단이 만들어지는 원리를 설명합니다. 여기서는 해당
블록이 기본 역할만 수행하며, 주제는 타이머입니다.
TON과 TOF: 서로 거울처럼 대응하는 두 문장
타이머 블록은 입력에 연산이나 비교를 하지 않습니다. 입력의 형태를 시간축에서 바꿉니다. 온딜레이 타이머 TON은 “입력이 이 시간 동안 계속 TRUE여야 믿겠습니다”라는 문장입니다. 입력이 설정 시간 전체에 걸쳐 연속으로 TRUE가 될 때까지 출력은 FALSE로 유지됩니다. 그 후 출력이 TRUE가 되고 입력이 유지되는 동안 이를 따라갑니다. 오프딜레이 타이머 TOF는 그 반대입니다. “입력이 떨어진 뒤에도 이 시간 동안 TRUE를 유지하겠습니다.” 입력이 TRUE가 되는 순간 출력도 지연 없이 TRUE가 됩니다. 입력이 떨어지면 출력은 설정 시간만큼 유지된 뒤 해제됩니다.
두 블록은 같은 두 수치를 사용합니다. 설정 시간(PT)은 사용자가 입력하는 초 단위 지연 시간입니다. 경과 시간(ET)은 블록이 설정 시간까지 진행한 실시간 값으로 영부터 증가합니다. 실행 중인 와이어시트에서 ET를 보면 타이머의 현재 상태를 알 수 있습니다. TON의 ET가 증가하면 입력을 검증하는 중이고, TOF의 ET가 증가하면 출력이 유예 시간 동안 유지되는 중입니다.
| 블록 | Q가 TRUE가 되는 시점 | Q가 FALSE가 되는 시점 | ET가 측정하는 값 | ET가 초기화되는 시점 |
|---|---|---|---|---|
| TON | IN이 PT 동안 TRUE를 유지한 뒤 | IN이 떨어지는 순간 | IN이 TRUE를 유지한 시간 | IN이 떨어질 때 |
| TOF | IN이 상승하는 순간 | IN이 PT 동안 FALSE를 유지한 뒤 | IN이 떨어진 뒤 지난 시간 | IN이 복귀할 때 |
마지막 열의 초기화 동작은 현장 감각과 가장 자주 어긋나므로 분명히 알아야 합니다. TON은 시도 간 누적 시간을 인정하지 않습니다. 설정 시간보다 일 초 부족한 시점에 입력이 떨어지면 ET는 즉시 영이 되고 다음 시도에서는 처음부터 다시 셉니다. 일부 시간도 인정하지 않고 얼마나 가까웠는지도 기억하지 않습니다. 중단 사이의 시간을 누적하는 타이머도 있으며 일부 팔레트에서는 유지형 또는 누적형 타이머라고 부르지만 다른 블록이므로 있다고 가정해서는 안 됩니다. TOF의 초기화는 반대로 동작합니다. 설정 시간이 끝나기 전에 입력이 복귀하면 카운트다운은 일시정지가 아니라 취소되고 ET가 영이 됩니다. 출력은 한 번도 꺼지지 않으며 다음 입력 하강 때 새로운 전체 지연을 시작합니다.
다음은 두 블록의 타이밍 트레이스입니다. 문장으로 길게 설명해야 할 내용을 한눈에 보여 주기 때문에 모든 제어 참고 자료에 나오는 그림입니다. 각 패널은 위에서부터 입력, 경과 시간, 출력 순서입니다.
ET는 설정 시간을 향해 증가한 뒤 그 값에 머뭅니다. TON은 입력이 TRUE인 동안, TOF는 지연이 끝난 뒤 PT에 유지되며 반대쪽 에지가 들어오면 초기화됩니다. 시뮬레이터 블록도 정확히 이 방식으로 실시간 상태를 표시합니다.
두 출력 트레이스를 함께 보면 하나의 개념으로 두 블록을 설명할 수 있습니다. 타이머는 최소 지속시간 필터입니다. TON은 설정 시간보다 짧은 모든 TRUE를 제거합니다. 설정 시간이 십 초인 TON에 들어온 육 초 펄스는 하류 블록에서 보면 아예 없었던 것과 같습니다. TOF는 설정 시간보다 짧은 모든 FALSE를 제거하여 잠깐의 신호 끊김이 하류에 보이지 않게 합니다. 이 관점을 기억하세요. 뒤에서 다룰 운전 확인 대기시간, 디바운스, 최소 시간은 모두 같은 필터를 서로 다른 판단에 적용한 것입니다.
운전 확인 대기시간: 올바른 기동 실패 판단
와이어시트에 시간이 왜 필요할까요? 제어기와 기계 설비가 서로 다른 속도로 움직이기 때문입니다. 와이어시트는 매 스캔마다 새로운 답을 내며 초당 여러 번 재평가됩니다. 팬은 속도가 올라가 운전 확인 스위치를 닫을 만큼 충분한 풍량을 만들기까지 십 초 또는 십오 초가 걸립니다. 따라서 완전히 정상적인 기동도 처음 몇 초 동안은 “지령은 있지만 운전이 확인되지 않은” 상태가 정확합니다. 이 조건에 즉시 경보를 내는 로직은 모든 기동에서 오경보를 발생시킵니다. 해법은 더 나은 비교가 아니라 기다려 주는 대기시간이며, 그 역할을 TON이 수행합니다.
다음은 건물의 거의 모든 팬, 펌프, 압축기를 보호하므로 와이어를 하나씩 배울 가치가
있는 전체 패턴인 기동 실패 경보입니다. 먼저 문장으로 표현하면
“기동 지령이 있고 15초 안에 운전 확인 신호가 들어오지 않으면 이상으로 판단하며, 사람이
확인할 때까지 경보를 유지합니다.”입니다.
기능 블록 편집기에는 이
와이어시트가 유량 확인 경보 예제로 제공됩니다. 왼쪽에는 팬
지령과 실제 공기가 흐를 때 닫히는 상태 접점인 운전 확인 신호,
두 바이너리 입력이 있습니다. NOT이 운전 확인 신호를 “운전 확인이 없음”으로
반전하고, AND가 지령 있음과 운전 확인 없음을 결합하여 고장 조건을 만듭니다.
이 조건은 설정 시간이 15초인 TON, 즉 운전 확인 대기시간에
들어갑니다. 타이머 출력은 를 설정하고, 래치가 경보 출력을 구동하며 사람이 조작할 리셋
입력은 래치의 R에 연결됩니다. 다음은 운전 확인 신호가 사라진 지 팔 초 후의 와이어시트입니다.
이 와이어시트의 모든 와이어는 디지털입니다. 녹색은 TRUE, 회색은 FALSE를 전달하며 편집기의 실시간 색상과 같습니다.
이제 정상 기동에서 타이머가 주는 이점을 살펴보겠습니다. 지령이 켜졌지만
팬은 아직 움직이지 않아 운전 확인 신호가 없고 AND가 TRUE가 됩니다. 잠시 동안은
고장 조건이 실제로 참입니다. ET가 증가하기 시작합니다. 팔 초, 구 초, 십 초쯤 지나 팬이
풍량을 만들고 운전 확인 접점이 닫히면 NOT이 AND의 한 입력을 떨어뜨리고 ET가
영으로 초기화됩니다. Q는 한 번도 동작하지 않았고 누구에게도 경보가 전달되지 않습니다.
TON은 설정 시간보다 짧은 TRUE를 삭제했습니다. 첫 절에서 설명한 최소 지속시간 필터가
그대로 동작한 것입니다. 타이머의 역할은 모든 정상 기동을 허용하고 대기시간보다
오래 지속되는 고장만 포착하는 것입니다.
래치는 왜 필요할까요? 타이머 출력은 고장 조건이 유지되는 동안만 지속되기 때문입니다.
벨트가 끊어져 운전 확인 신호가 들어오지 않고 ET가 15까지 올라가면 경보가 유지되어야 합니다.
그러나 운전자가 나중에 팬 지령을 끄면 자연스럽게 AND가 떨어지고 TON이
해제됩니다. 래치가 없으면 고장의 증거와 함께 경보도 스스로 사라집니다.
는 트립을
기억합니다. 타이머가 감지하고 래치가 기억하며, 사람이 확인한 뒤
의도적으로 리셋할 때만 해제됩니다. 래치의 원리, 설정 우선이 중요한 이유, 래치와 수동
리셋 패턴은 불리언 로직 및
래치의 SR 래치 절에서 다룹니다. 여기서는 기본 역할만 수행합니다.
그림만 믿지 말고 기능 블록 편집기에서 실행해 보세요. 유량 확인 경보 예제를 불러오면 지령과 운전 확인 신호가 모두 들어온 정상 상태로 시작합니다. STATUS 블록을 클릭하여 끄면 벨트가 끊어진 상황이 됩니다. TON의 ET 표시가 올라가는 것을 보며 타이머보다 먼저 복구해 보세요. 15초 전에 STATUS를 다시 켜면 카운트가 사라집니다. 대기시간 안에서 복구되었으므로 경보가 없습니다. 다시 고장을 만들고 그대로 두세요. 15초가 되면 경보가 래치됩니다. 이제 STATUS를 다시 켜도 아무것도 바뀌지 않습니다. 래치가 유지하고 있기 때문입니다. RESET을 켰다가 다시 끄면 확인 동작이 이루어지고 와이어시트가 정상 상태로 돌아옵니다.
운전 확인 대기시간은 얼마나 길어야 할까요? 양쪽에 각각 고장 모드가 있는 실제 설계 판단입니다. 너무 짧으면 정상 기동마다 불필요한 트립이 발생합니다. 팬은 기동 중이었지만 로직이 기다리지 못한 것입니다. 오경보가 반복되면 경보를 무시하거나 더 나쁘게는 비활성화하게 됩니다. 너무 길면 대기시간이 사각지대가 됩니다. 실제로 기동에 실패해도 설정 시간 전체에 걸쳐 보고되지 않으며, 풍량 없이는 절대 운전하면 안 되는 전기히터처럼 시퀀스가 “운전 확인 완료” 조건과 인터록한 모든 설비도 같은 사각지대를 갖게 됩니다. 경험 법칙은 가장 느린 정상 기동 시간에 약간의 여유를 더하되 그보다 길게 하지 않는 것입니다. 운전 확인 접점이 실제로 무엇을 측정하고 각 운전 확인 신호원이 어떤 고장을 감지할 수 있는지는 입력 관점의 별도 주제이며, 상태 및 운전 확인 신호의 상태 소스 선택에서 설명합니다.
같은 필터는 더 작은 규모에서도 동작하며 이때는 디바운스라고 합니다. 팬의 실제 운전 압력과 가까운 값으로 설정된 차압 스위치를 생각해 보세요. 풍량이 경계 수준이면 접점이 흔들리고 원시 상태 포인트가 분당 여러 번 켜졌다 꺼지면서 경보를 쏟아 내고 전체 경로를 작동시킵니다. 원시 포인트와 로직 사이에 두세 초 TON을 두면 상태가 계속 유지되어야 유효하다고 판단하므로 흔들림은 필터를 통과하지 못합니다. 반대 방식도 가능합니다. 짧은 TOF는 순간적인 끊김이 있어도 출력을 유지합니다. 다만 타이머가 증상만 처리한다는 점은 알아야 합니다. 운전점에 대한 여유가 없는 설정값 때문에 스위치가 흔들린다면 올바른 해법은 더 긴 필터가 아니라 설정값 수정입니다.
최소 운전·정지 시간: 설비의 판단으로부터 설비를 보호합니다
타이머의 세 번째 역할은 입력을 믿을지 판단하는 것이 아니라 출력의 속도를 조절하는 것입니다. 냉방 요구로 압축기가 기동하고, 구십 초 뒤 실내 조건이 충족되어 요구가 해제되며, 두 분 뒤 다시 요구가 들어옵니다. 각각의 판단은 옳았습니다. 그러나 이 패턴은 파괴적입니다. 압축기에서 비용이 큰 부분은 운전이 아니라 기동이기 때문입니다. 회전자 구속 는 권선이 열을 방출하는 속도보다 빠르게 가열합니다. 짧은 운전은 오일을 회로로 내보낸 뒤 복귀시킬 만큼 오래 운전하지 못하며, 정지 후에는 시스템 양단에 압력 차이가 남아 평형을 이룰 시간을 주지 않으면 다음 기동이 이를 이겨내야 합니다. 제조사가 시간당 기동 횟수를 규정하는 이유가 바로 이것이며, 이를 무시하는 시퀀스는 다른 사람의 비용을 소모합니다.
보호 장치는 한 쌍의 시간 규칙이며, 둘 다 첫 절의 필터를 설비 자체 상태에 적용한 것입니다. 최소 운전 시간은 일단 기동하면 최소 시간 동안 운전을 유지하며, 그보다 일찍 들어온 정지 요청은 아직 받아들이지 않습니다. 최소 정지 시간은 일단 정지하면 정지 상태를 유지하며, 기동 요청이 정지 시간을 모두 기다려야 합니다. 두 규칙 모두 “이 상태가 최소한 이 시간 동안 유지되어야 한다”는 뜻입니다. 현재 상태의 지속 시간을 측정하고 상태 이탈을 허용하는 온딜레이입니다. 상용 팔레트는 보통 두 기능을 min-on/min-off 매개변수로 설비 활성화 블록에 내장합니다. 로직이 외부에 펼쳐져 있다면 각 상태에 TON 하나가 있는 형태로 읽힙니다. 어느 경우든 시간 값은 취향이 아니라 설비 문서에서 가져와야 합니다.
여기에서 타이머는 속도를 조절할 판단과 만납니다. ON/OFF 판단 자체는 비교기 및 불감대에서 구성한, 두 임계값 사이에 기억 기능이 있는 불감대에서 나옵니다. 두 메커니즘은 역할을 명확히 나눕니다. 밴드는 시퀀스가 원하는 상태를 결정하고, 타이머는 그 상태가 언제 허용되는지 결정합니다. 두 값을 함께 적절히 설계하면 밴드만으로도 최소 시간보다 느린 주기를 요구하므로 타이머는 거의 개입하지 않습니다. 밴드가 너무 좁으면 실행 중인 와이어시트에서 충돌을 볼 수 있습니다. 밴드는 정지를 요구하지만 최소 운전 타이머는 아직 안 됩니다라고 답하고, 설비가 계속 운전하는 동안 실내 조건은 임계값을 지나칩니다. 재실자는 온도조절기가 무시된다고 느낍니다. 시간 제어는 제 역할을 했고 판단이 잘못된 것입니다. 밴드를 수정해야 합니다. 단주기 운전 방지 타이머는 최후의 방어선이지 임계값을 부주의하게 정해도 된다는 허가가 아닙니다.
압축기 한 대에서 전체 플랜트로 시야를 넓혀도 같은 두 규칙이 시스템 규모로 동작합니다. 설비 대수제어 수업의 시퀀서는 단 전환 지연을 사용합니다. 요구가 임계값을 일정 시간 넘어선 상태로 유지되어야 단이 바뀌므로 이름만 다른 온딜레이입니다. 또한 한 번 단이 전환된 뒤 다음 전환을 막는 최소 단 유지 시간이 있으며, 단 수준의 최소 운전·정지 시간입니다. 인터랙티브 위젯에서 두 기능을 모두 체감할 수 있습니다. 요구 슬라이더를 빠르게 위아래로 움직여도 시퀀스는 따라 움직이지 않습니다. 지연 시간을 얼마나 길게 하고 대수제어 임계값을 어디에 둘지는 해당 수업에서 다룹니다. 혼동하지 않도록 경계를 하나 명확히 하겠습니다. 이 페이지의 모든 시간은 “얼마나 지났는가”를 나타내는 간격 시간입니다. 재실 스케줄, 최적 기동 같은 하루 중 시각 제어는 달력 시간이며 완전히 다른 메커니즘입니다. 이 시뮬레이터의 팔레트에는 시계 블록이 없습니다.
운전 확인 대기시간을 직접 시험해 보세요
유량 확인 와이어시트는 여덟 블록에 이 수업 전체를 담고 있으며 이미 구성되어 있습니다. 유량 확인 경보 예제를 함수 블록 편집기에서 불러와 고장을 만들어 보세요. STATUS를 끄고 TON의 ET가 증가하는 모습을 봅니다. 한 번은 대기시간이 끝나기 전인 12초에 운전 확인 신호를 다시 켜 보세요. 카운트가 지워지고 경보는 발생하지 않습니다. 다음에는 시간이 만료되도록 두고 래치가 설정되는 모습을 확인하세요. RESET 전에는 운전 확인 신호를 복구해도 아무 변화가 없다는 것을 직접 볼 수 있습니다. 마지막으로 TON을 클릭하여 검사기에서 설정 시간을 3초로 줄인 뒤 다시 운전 확인 신호를 끊어 보세요. 너무 짧은 대기시간이 정상 과도 상태를 얼마나 빠르게 새벽 2시 긴급 호출로 바꾸는지 체감할 수 있습니다. 이 블록 계열의 핵심은 바로 이것입니다. 타이머와 와이어시트는 같고, 설정 시간이 설계자의 판단입니다.
기능 블록 편집기 열기 →