Cylinder — 공압 실린더 ADV/RET
가장 단순한 단일 액추에이터 시나리오 · 현장 적용: 클램핑 · 이젝팅 · 게이트 · 푸셔
S01 · Cylinder
·
0.00s / 2.5s
·
IDLE
🖱️ 드래그 회전 · 휠 줌 · 우클릭 드래그 팬 · 슬라이더로 시간 스크럽
⏱ 동작 타이밍 (TCT 2.0s)
OUT (Cmd · 솔레노이드 출력)
IN (Sensor · 리미트 스위치)
Adv 페이즈 (0–1.0s)
Ret 페이즈 (1.0–2.0s)
▬▬ Work#1 = Capa 1 단위 (제품 1개 · ApiCall 2개 순차)
📋 IO Table (LS XGI)
| Tag | Dir | Addr |
|---|---|---|
Cyl1_AdvCmd | OUT | %QX0.0.0.0 |
Cyl1_RetCmd | OUT | %QX0.0.0.1 |
Cyl1_AdvOK | IN | %IX0.0.0.0 |
Cyl1_RetOK | IN | %IX0.0.0.1 |
Cyl1_State | MEM | %MW100 |
🔧 자산 구성
- Cyl1 — DoubleActingCylinder (5/2 솔레노이드)
- LS_Adv — 전진 리미트 (InductiveProximity)
- LS_Ret — 후퇴 리미트 (InductiveProximity)
🧩 Ds2 모델
# Device 정의 (v10) Device: Cyl1 ├─ ApiDef: Adv { Action.normal × Sensing.normal } │ OutTag: Cyl1_AdvCmd (%QX0.0.0.0) │ InTag : Cyl1_AdvOK (%IX0.0.0.0) └─ ApiDef: Ret { Action.normal × Sensing.normal } OutTag: Cyl1_RetCmd (%QX0.0.0.1) InTag : Cyl1_RetOK (%IX0.0.0.1) # Flow 호출 (Work = Capa 단위 = 라인 위 제품 1개) Flow: Cyl1_Cycle (TCT 2.0s) Work#1 // 제품 1 — Capa=1 (라인 위 동시 1개) └─ Sequential: Cyl1.Adv() → Cyl1.Ret()
🎯 학습 포인트
- Tier 1 #5 — 첫 모델 (1 Work / 1 Action)
- Tier 1 #14 — 실습 1 (ADV/RET 모델링)
- Tier 2 #55 — Normal ActionType
- Tier 2 #64 — 외부 주소 IO Table
- Tier 3 #72 — ActionType.Normal 상세
- Tier 3 #77 — SensingType.Normal
⚠️ 자주 발생하는 실수
- Adv 와 Ret 를 한 Action 으로 합치기
- InTag 누락 → 시간 기반 폴백 (SensingType=Virtual (또는 SensorWithTimeout(ms)) 명시 필요)
- 두 센서 동시 ON 안전체크 미사용
- 솔레노이드 양방향 통전 (Interlock 필요)