S01 Tier 1 · 단순 ← 시나리오 카탈로그

Cylinder — 공압 실린더 ADV/RET

가장 단순한 단일 액추에이터 시나리오 · 현장 적용: 클램핑 · 이젝팅 · 게이트 · 푸셔

S01 · Cylinder · 0.00s / 2.5s · IDLE

🖱️ 드래그 회전 · 휠 줌 · 우클릭 드래그 팬 · 슬라이더로 시간 스크럽

⏱ 동작 타이밍 (TCT 2.0s)

◆ ApiCall #1 : Cyl1.Adv() ◆ ApiCall #2 : Cyl1.Ret() ▼ Work#1 (Capa = 1 · 한 제품의 한 사이클) 0.0 0.5 1.0 1.5 2.0 2.5 [ 초 ] Cyl1_AdvCmd %QX0.0.0.0 OUT (Cmd) ▲ ON ▼ OFF (센서 도달) Cyl1_AdvOK %IX0.0.0.0 IN (Sensor) ▲ LS_Adv 감지 → ApiCall#1 완료 Cyl1_RetCmd %QX0.0.0.1 OUT (Cmd) ▲ ON ▼ OFF Cyl1_RetOK %IX0.0.0.1 IN (Sensor) ▲ LS_Ret 감지 → Work#1 완료
OUT (Cmd · 솔레노이드 출력) IN (Sensor · 리미트 스위치) Adv 페이즈 (0–1.0s) Ret 페이즈 (1.0–2.0s) ▬▬ Work#1 = Capa 1 단위 (제품 1개 · ApiCall 2개 순차)

📋 IO Table (LS XGI)

TagDirAddr
Cyl1_AdvCmdOUT%QX0.0.0.0
Cyl1_RetCmdOUT%QX0.0.0.1
Cyl1_AdvOKIN%IX0.0.0.0
Cyl1_RetOKIN%IX0.0.0.1
Cyl1_StateMEM%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

⚠️ 자주 발생하는 실수

  1. Adv 와 Ret 를 한 Action 으로 합치기
  2. InTag 누락 → 시간 기반 폴백 (SensingType=Virtual (또는 SensorWithTimeout(ms)) 명시 필요)
  3. 두 센서 동시 ON 안전체크 미사용
  4. 솔레노이드 양방향 통전 (Interlock 필요)
← 카탈로그 20 시나리오 보기