← 개념 인덱스

SensingType 3종 (v16)

Work / ApiCall 의 "완료" 판정 정책 — ApiDef 의 감지 축.

v16 사양 (최신): 이전 v3 의 6종 (Normal · Debounce(ms) · Virtual · VirtualDebounce(ms) · SensorWithTimeout(ms) · EdgeRising) 은 3종 (Normal · Latch · Virtual) 으로 재정의되었습니다. Debounce strict → Normal(Some T), Debounce lenient → Latch(T), Virtual / SensorWithTimeout → Virtual(T).
F# 타입 정의 (Ds2.Core · Enum.fs)
[<RequireQualifiedAccess>]
type SensingType =
    | Normal  of timeMs: int option  // None: 감지 즉시 완료 / Some T: 감지 후 T ms 지연 완료
                                     //   — T 구간 off(채터링) = 완료 취소 + SensorOff abnormal
    | Latch   of timeMs: int         // 감지 후 T ms 지연 완료 — T 구간 채터링 허용 (감지 latch)
    | Virtual of timeMs: int         // 출력 발생 시점 + T ms 후 완료 — 센서 없을 때

Normal(Some T) vs Latch(T) — 채터링 처리가 다르다

Normal(Some T) — 엄격
T ms 대기 중 센서가 한 번이라도 OFF 되면
→ 완료 취소 + SensorOff abnormal 이벤트 발생
Latch(T) — 관용
T ms 대기 중 센서가 꺼졌다 켜져도
→ 처음 감지 시점 latch, 채터링 무시하고 T ms 후 완료

① Normal

Normal of timeMs: int option

실센서(InTag) 기반 완료 판정. timeMs 로 즉시 완료(None) 또는 지연 완료(Some T) 선택.

Normal(None) — 즉시
InTag = TRUE 순간 바로 완료.
리미트 스위치, 광센서 등 표준 센서.
Normal(Some T) — 지연·엄격
감지 후 T ms 연속 유지 → 완료.
중간에 OFF → 취소 + SensorOff abnormal.
Normal(None) ↑ 즉시 완료 Normal(Some T) T ms → 완료 T ms 유지 필수 * T 중 OFF → 완료 취소 + SensorOff abnormal
// Cyl1.Adv — 즉시 완료 (S01)
{ ActionType  = Action.Normal None
  SensingType = Sensing.Normal None }

// Clamp.On — 30ms 채터링 방지 (S03, 엄격)
{ ActionType  = Action.Normal None
  SensingType = Sensing.Normal(Some 30) }

② Latch

Latch of timeMs: int (필수)

첫 감지 시점을 latch, T ms 후 완료. T 구간의 채터링을 허용 — 한 번 잡으면 끝까지. 압력 센서, 토크 센서, 진동 환경 기계식 LS 에 사용.

Latch(T) — 관용 (항상 T 필수)
InTag 가 한 번이라도 ON → 감지 latch → T ms 대기 → 완료.
T ms 중 OFF 발생해도 latch 유지, abnormal 없음.
Latch(T) 첫 감지 latch T ms 완료 채터링 무시 (OFF 발생해도 abnormal 없음)
// PressFit — 힘 임계 도달 후 20ms 관용 (S17)
{ ActionType  = Action.Normal None
  SensingType = Sensing.Latch 20 }

// Clamp 압력 안정 — 채터링 허용 50ms
{ ActionType  = Action.Normal None
  SensingType = Sensing.Latch 50 }
적용 — S12S14S17

③ Virtual

Virtual of timeMs: int (필수)

실센서(InTag) 없이 시간 기반으로 완료 판정. 출력 발생 시점 + T ms 후 자동 완료. 센서가 미설치된 설비, 시뮬레이션, 가상 딜레이 노드에 사용.

Virtual(T) — 시간 기반 완료
InTag 없음 · 출력 시작 + T ms → 완료.
ActionType.Virtual(가상 노드) 와도 조합 가능.
사용 사례:
  • 센서 미설치 설비 (T = 설비 동작 예상 시간)
  • Pulse(Some T) 와 조합 — 진공흡착, 블로우, 펀칭
  • Virtual(Action) + Virtual(Sensing) — 가상 딜레이 노드
Virtual(T) OUT T ms T ms 후 자동 완료 (InTag 없음)
// 진공흡착 1000ms (S07)
{ ActionType  = Action.Pulse(Some 1000)
  SensingType = Sensing.Virtual 1000 }

// 가상 딜레이 노드 500ms
{ ActionType  = Action.Virtual
  SensingType = Sensing.Virtual 500 }

v3 → v16 SensingType 마이그레이션

v3 (구)v16 (신)비고
NormalNormal(None)실센서 즉시 인정 (동일 의미)
EdgeRisingNormal(None)상승 에지 = 즉시 감지. Normal(None) 으로 통합
Debounce(ms) strictNormal(Some T)연속 유지 필수, 채터링 시 abnormal — 엄격 모드
Debounce(ms) lenientLatch(T)첫 감지 latch, 채터링 허용 — 관용 모드
VirtualVirtual(T)T = Work.Duration 과 매핑 (명시적 T 로 변경)
VirtualDebounce(ms)Virtual(T)Virtual(T) 에 통합 (T = Duration + 추가 ms)
SensorWithTimeout(ms)Virtual(T)v16 에서 삭제 — 타임아웃은 Virtual(T) 로 처리

ActionType 4종 →

출력 정책 — SensingType 의 짝꿍.

ActionType (v16) 보기 →

유효 조합 매트릭스 →

ActionType × SensingType 유효 조합 + 8 대표 패턴.

매트릭스 보기 →