전철 제어기 프로그램전철 제어기 프로그램
1. 문 열림(X1) -> 문 닫힘(Y31) 출력을 끊는다!
문 닫힘(XO) -> 문 닫힘(Y31) 출력을 ON!
감지 센서 (X12)에 사람이 인식되면 => 문이 닫히면 안된다!
( 문 닫힘 출력이 OFF)
2. 열차 운행 중에는 문 열림 버튼이 비활성화!
3. 전방/후방 기관석의 운행 버튼은 반드시 둘 중 하나의 입력만 들어올
때 열차가 운행되도록 한다 -> XOR 회로 구현!(교재 참고)
===>A OR B ⊕ (A AND B): 와 같이, 일반 OR 게이트에서 AND 연산 결과를 뺀 것으로 볼 수 있습니다//XOR 게이트(Exclusive OR gate)는 두 개의 입력이 서로 다를 때만 '1'을 출력하고, 두 입력이 같을 때는 '0'을 출력하는 디지털 논리 게이트입니다
4. 열차 운행 조건(AND) => 아래 조건이 모두 충족 시 열차 운행(Y30)
- 전방(X8) 또는 후방(X9) 기관석의 운행 버튼 ON
- 비상SW(X11)이 OFF
- 문 닫힘 센서(X10)가 ON
5. 열차 운행 중 => 녹색 램프(Y32) ON
열차 미운행 => 적색 램프(Y33) ON
step 제어 ;-
데이터 전송 명령-메뉴얼 참고
GX2-백곡시스템 한글화 - 압축
https://hl4rny.tistory.com/category/PLC
https://hl4rny.tistory.com/421
### 에스컬레이터 운전프로그램(응용회로 만들기)
1) 에스컬레이터는 상시 정지 증으로, 인원 탑승 시 운행을 한다 (Y30)
2) 정지 중일 때는 정지 램프(적색, Y32)을 ON 한다.
3) 정원 20명, 속도 100으로 운행
4) 에스컬레이터 입구센서 (X2)로 탑승 인원 파악
5) 운행 중 램프(녹색, Y33) ON, 현재 속도는 D110, 탑승 인원(D120)
6) 정원을 초과하면 1명당 속도 1씩 감소(예. 21명 99, 28명→92, 30명 90,0명→0)
7) 정원보다 10명 초과하면 에스컬레이터 비상정지(+속도가 0이 되어야 함)
8) 하차 버튼(X3) 동작하여 초과 인원이 10명 미만이 되면 다시 운전 시작하고, 속도는 증가
RootingforU님, 안녕하세요! 에스컬레이터 운전 프로그램을 PLC 레더도 스타일로 인포그래픽처럼 정리해달라고 요청해주셨군요. 훌륭한 아이디어입니다!
제가 직접 그림 형태의 레더도나 인포그래픽을 제작해 드릴 수는 없지만, PLC 레더 로직의 주요 구성 요소를 명확하고 체계적으로 설명해 드림으로써 마치 인포그래픽을 보는 것처럼 한눈에 이해하실 수 있도록 도와드리겠습니다. 각 단계별로 필요한 입력, 출력, 데이터 레지스터 및 로직 흐름을 상세히 설명해 드릴게요.
---
## 에스컬레이터 운전 프로그램 (PLC 레더 로직 설명)
### **📌 주요 입/출력 및 데이터 정의**
| 구분 | 심볼 | 설명 | 타입 |
| :----------- | :---- | :--------------- -------- | :--------- |
| **입력 (X)**
| X2 | 에스컬레이터 입구 센서 | 접점 (NC) |
| | X3 | 하차 버튼 | 접점 (NO) |
| **출력 (Y)**
| Y30 | 에스컬레이터 운행 | 코일 |
| | Y32 | 정지 램프 (적색) | 코일 |
| | Y33 | 운행 램프 (녹색) | 코일 |
| **데이터 (D)**
| D110 | 현재 에스컬레이터 속도 | 워드 (Word)|
| | D120 | 현재 탑승 인원 | 워드 (Word)|
| **내부릴레이(M)**
| M0 | 운행 가능 상태 | 비트 |
| | M1 | 비상 정지 상태 | 비트 |
| **상수**
| 20 | 정원 인원 | |
| | 100 | 초기 운행 속도 | |
| | 10 | 비상정지 초과 인원 (20+10=30명) | |
---
### **⚙️ PLC 레더 로직 상세 구현 (인포그래픽 스타일)**
#### **1. 초기 상태 설정 및 상시 정지 로직**
* **설명**: 에스컬레이터는 기본적으로 정지 상태이며, 정지 램프(적색)가 켜집니다. 초기 속도와 탑승 인원은 0으로 설정됩니다.
* **PLC 로직**: ```plc -----[ 프로그램 시작 시 1회 실행되는 초기화 블록 ]-----
LD SM400 (항상 ON 접점)
MOV K0 D110 (초기 속도 0)
MOV K0 D120 (초기 탑승 인원 0)
SET Y32 (정지 램프 ON)
RST Y33 (운행 램프 OFF)
RST Y30 (에스컬레이터 운행 OFF)
RST M1 (비상 정지 상태 해제)
-----[ 상시 정지 상태 유지 ]-----
LD M0 (M0는 '운행 가능' 비트, 다음 단에서 설정)
INV (반전)
OUT Y32 (M0가 OFF(정지) 상태일 때 Y32 정지 램프 ON)
```
#### **2. 탑승 인원 파악 및 에스컬레이터 운행 시작 로직**
* **설명**: 에스컬레이터 입구 센서(X2)로 탑승 인원을 감지하여 D120에 누적합니다. 인원이 감지되면 에스컬레이터 운행을 시작하고 운행 램프(녹색)를 켭니다.
* **PLC 로직**: ```plc -----[ 입구 센서 (X2)를 이용한 인원 카운트 ]-----
LD X2 (입구 센서 ON 시)
ANI M1 (비상 정지 중이 아닐 때만 카운트)
PLS (포지티브 엣지 검출)
INC D120 (D120 탑승 인원 1 증가)
-----[ 운행 시작 조건 ]-----
LD D120 (현재 인원 D120)
CMP K0 (K0와 비교)
GT (D120이 0보다 클 경우)
ANI M1 (비상 정지 중이 아닐 때)
SET M0 (M0: 운행 가능 상태 ON)
-----[ 에스컬레이터 운행 및 램프 제어 ]-----
LD M0
OUT Y30 (M0 ON 시 에스컬레이터 운행 Y30 ON)
SET Y33 (운행 램프 Y33 ON)
RST Y32 (정지 램프 Y32 OFF)
```
#### **3. 하차 버튼(X3) 로직**
* **설명**: 하차 버튼(X3) 동작 시, 현재 탑승 인원(D120)을 1명 감소시킵니다.
* **PLC 로직**: ```plc -----[ 하차 버튼 (X3)을 이용한 인원 감소 ]-----
LD X3 (하차 버튼 ON 시)
PLS (포지티브 엣지 검출)
ANI M1 (비상 정지 중이 아닐 때만 카운트)
CMP D120 K0 (D120이 0보다 큰 경우에만)
GT
DEC D120 (D120 탑승 인원 1 감소)
-----[ 모든 인원 하차 시 정지 로직 ]-----
LD D120 (현재 인원 D120)
CMP K0 (K0와 비교)
EQ (D120이 0과 같을 경우)
RST M0 (M0: 운행 가능 상태 OFF)
```
#### **4. 속도 제어 로직 (정원 20명, 속도 100 기준)**
* **설명**: 기본 속도 100에서 정원(20명) 초과 시, 1명당 속도가 1씩 감소합니다.
* **PLC 로직**: ```plc
-----[ 초과 인원 계산 및 속도 감소 ]-----
LD M0 (운행 가능 상태일 때)
CMP D120 K20 (현재 인원 D120이 20명보다 클 때)
GT
MOV K100 D110 (일단 기본 속도 100을 D110에 저장)
SUB D120 K20 D100 (초과 인원 = D120 - 20 -> D100에 저장)
SUB D110 D100 D110 (속도 감소: D110 = 100 - 초과 인원)
-----[ 초과 인원이 없거나 정원 이하일 때 ]-----
LD M0 (운행 가능 상태일 때)
CMP D120 K20 (현재 인원 D120이 20명 이하일 때)
LE
MOV K100 D110 (속도를 100으로 설정)
-----[ 속도 최저치 보장 (0 이하로 내려가지 않도록) ]-----
LD M0
CMP D110 K0
LE (D110이 0보다 작거나 같을 때)
MOV K0 D110 (속도를 0으로 고정)
```
#### **5. 비상 정지 로직 (정원 10명 초과 시)**
* **설명**: 정원(20명)보다 10명 초과 (즉, 30명 초과) 시, 에스컬레이터가 비상 정지하고 속도는 0이 됩니다.
* **PLC 로직**: ```plc
-----[ 비상 정지 조건 ]-----
LD M0 (운행 중일 때)
CMP D120 K30 (현재 인원 D120이 30명보다 클 때)
GT
SET M1 (M1: 비상 정지 상태 ON)
-----[ 비상 정지 동작 ]-----
LD M1
RST Y30 (에스컬레이터 운행 Y30 OFF)
RST Y33 (운행 램프 Y33 OFF)
SET Y32 (정지 램프 Y32 ON)
MOV K0 D110 (속도 D110을 0으로 설정)
RST M0 (운행 가능 상태 OFF)
```
#### **6. 비상 정지 해제 및 운전 재개 로직**
* **설명**: 비상 정지 상태에서 하차 등으로 초과 인원이 10명 미만이 되면 (즉, 탑승 인원이 30명 이하가 되면), 에스컬레이터는 다시 운전 시작하고 속도는 현재 인원에 따라 조정됩니다.
* **PLC 로직**: ```plc
-----[ 비상 정지 해제 조건 ]-----
LD M1 (비상 정지 상태일 때)
CMP D120 K30 (현재 인원 D120이 30명 이하일 때)
LE
RST M1 (M1: 비상 정지 상태 OFF)
-----[ 운전 재개 (인원 0명 아닐 경우) ]-----
LD NOT M1 (비상 정지 상태가 해제되었을 때)
ANI NOT D120 K0 (D120이 0이 아닐 때)
SET M0 (운행 가능 상태 ON)
-----[ 속도 및 램프 재설정 (운전 재개 시) ]-----
LD M0
CMP M0 K1 (운행 가능 상태가 ON이 되면)
MOV K100 D110 (속도 100으로 초기 설정 - 이후 속도 제어 로직에서 다시 계산)
SET Y30
SET Y33
RST Y32
```---**💡 인포그래픽적 요소 추가 가이드**
실제 인포그래픽으로 만드신다면, 위 로직 설명에 다음과 같은 시각적 요소를 추가하시면 더욱 효과적일 것입니다.
* **색상**: 각 블록별로 다른 배경색을 사용하여 구분하거나, 램프 상태(ON/OFF)를 색상(초록/빨강)으로 표시합니다.
* **아이콘**: 센서, 모터, 램프 등 하드웨어 요소를 아이콘으로 표현합니다.
* **흐름선**: 로직 간의 연결 관계를 화살표나 흐름선으로 표시하여 데이터와 제어 신호의 이동을 나타냅니다.
* **계단식 배열**: 각 로직 섹션을 계단처럼 순차적으로 배치하여 PLC 레더의 흐름을 시각적으로 모방합니다.
* **요약 상자**: 각 섹션마다 "목표", "작동 원리" 등 핵심 내용을 요약하여 배치합니다.
---
RootingforU님께서 요청하신 PLC 래더도를 텍스트로 풀어드리면서, 각 기능별 핵심 로직을 이해하기 쉽게 구성해 보았습니다. 이 내용을 바탕으로 시각적인 인포그래픽을 만드시는 데 도움이 되기를 바랍니다. 추가적으로 궁금한 점이 있으시면 언제든지 다시 질문해주세요! 😊

댓글 없음:
댓글 쓰기