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 되면
→ 완료 취소 +
T ms 대기 중 센서가 한 번이라도 OFF 되면
→ 완료 취소 +
SensorOff abnormal 이벤트 발생
Latch(T) — 관용
T ms 대기 중 센서가 꺼졌다 켜져도
→ 처음 감지 시점 latch, 채터링 무시하고 T ms 후 완료
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.
중간에 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 없음.
T ms 중 OFF 발생해도 latch 유지, abnormal 없음.
// PressFit — 힘 임계 도달 후 20ms 관용 (S17)
{ ActionType = Action.Normal None
SensingType = Sensing.Latch 20 }
// Clamp 압력 안정 — 채터링 허용 50ms
{ ActionType = Action.Normal None
SensingType = Sensing.Latch 50 }
③ Virtual
Virtual of timeMs: int (필수)
실센서(InTag) 없이 시간 기반으로 완료 판정. 출력 발생 시점 + T ms 후 자동 완료. 센서가 미설치된 설비, 시뮬레이션, 가상 딜레이 노드에 사용.
Virtual(T) — 시간 기반 완료
InTag 없음 · 출력 시작 + T ms → 완료.
ActionType.Virtual(가상 노드) 와도 조합 가능.
ActionType.Virtual(가상 노드) 와도 조합 가능.
사용 사례:
- 센서 미설치 설비 (T = 설비 동작 예상 시간)
- Pulse(Some T) 와 조합 — 진공흡착, 블로우, 펀칭
- Virtual(Action) + Virtual(Sensing) — 가상 딜레이 노드
// 진공흡착 1000ms (S07)
{ ActionType = Action.Pulse(Some 1000)
SensingType = Sensing.Virtual 1000 }
// 가상 딜레이 노드 500ms
{ ActionType = Action.Virtual
SensingType = Sensing.Virtual 500 }