Remote Command
Remote Command
Remote Command
한눈에 보기
Remote Command는 Host가 장비에게 “무엇을 해 달라"고 요청하는 표준 채널입니다. 하지만 메시지를 보냈다고 해서 항상 실행되는 것은 아니며, 장비 상태, 제어권, 안전 조건, 파라미터 유효성이 모두 함께 맞아야 합니다.
S2F42는 최종 업무 완료보다 먼저 오는 접수 결과로 읽는 편이 안전합니다.
기본 메시지
| 메시지 | 의미 |
|---|---|
S2F41 |
Host Command Send |
S2F42 |
Host Command Acknowledge |
명령 계약을 한 장으로 보기
direction: right
vars: {
fill: "#eef6ff"
stroke: "#4b77be"
}
rcmd: "RCMD\n무슨 명령인가"
params: "CPNAME / CPVAL\n무슨 값이 필요한가"
state: "허용 상태\n지금 실행 가능한가"
ack: "HCACK\n접수 결과"
event: "후속 Event\n실행 결과"
rcmd.style.fill: fill
rcmd.style.stroke: stroke
rcmd.style.border-radius: 12
params.style.fill: fill
params.style.stroke: stroke
params.style.border-radius: 12
state.style.fill: "#fff4e8"
state.style.stroke: "#c77400"
state.style.border-radius: 12
ack.style.fill: "#f7f3ff"
ack.style.stroke: "#7a5ea6"
ack.style.border-radius: 12
event.style.fill: "#f7fff2"
event.style.stroke: "#5c8d2b"
event.style.border-radius: 12
rcmd -> params: "파라미터 포함"
params -> state: "상태와 충돌 여부 확인"
state -> ack: "즉시 응답"
ack -> event: "필요 시 후속 확인"명령을 읽는 기본 단위
RCMD
- 의미: 무슨 명령인가
- 예:
Start,Stop,Abort,GoRemote,Reset
CPNAME / CPVAL
- 의미: 그 명령을 실행하는 데 필요한 이름과 값입니다.
- 예:
JobID,PPID,PortNo
ACK
- 의미: 명령을 접수했는지, 거절했는지, 파라미터가 유효한지를 알려 줍니다.
ACK를 먼저 이해하는 방식
| 결과 | 해석 |
|---|---|
| 명령 수락 | 형식과 상태가 유효 |
| 명령 거절 | 현재 상태상 실행 불가 |
| 파라미터 오류 | 이름/타입/범위 문제 |
| 부분 오류 | 일부 파라미터만 문제 |
명령 시퀀스
shape: sequence_diagram
Host -> Equipment: "S2F41 RCMD + PARAMS"
Equipment -> Host: "S2F42 Ack"
Equipment -> Host: "후속 Event 또는 상태 변화"상태와 같이 읽는 방식
같은 명령이라도 상태에 따라 해석이 달라집니다.
| 명령 | Offline | OnlineLocal | OnlineRemote |
|---|---|---|---|
| Start | 거절 | 거절 또는 제한 | 허용 |
| Stop | 거절 | 제한 | 허용 |
| GoRemote | 거절 | 허용 조건 확인 | 불필요 |
| Reset | 장비 정책에 따름 | 장비 정책에 따름 | 장비 정책에 따름 |
이 표는 실제 장비 규칙을 모두 담지는 않지만, 사용자에게 명령이 상태와 분리되지 않는다는 점을 바로 보여 줍니다.
좋은 문서가 되기 위한 최소 항목
- 명령명
- 허용 상태
- 필수/선택 파라미터
- 각 파라미터 타입과 범위
- 성공/거절 응답 코드
- 실행 결과를 알려 주는 Event/Variable
파라미터 규칙을 따로 두는 이유
명령이 많아질수록 RCMD보다 CPNAME/CPVAL 쪽에서 혼선이 더 커집니다. 따라서 문서에는 파라미터 이름 사전과 값 규칙이 같이 있어야 합니다.
- 파라미터 이름
- 데이터 타입
- 허용 값 범위
- 필수 여부
- 명령별 사용 여부
- 서로 같이 와야 하는 조합
자주 보는 질문
ACK가 성공이면 바로 실행 완료인가
아닙니다. 접수는 성공했지만 실제 완료는 후속 Event나 상태 변화로 확인해야 하는 경우가 많습니다.
명령 설명과 상태 설명을 따로 두면 충분한가
부족합니다. 명령-상태 관계를 한 번 더 보여줘야 실제 운용 문서가 됩니다.
관련 문서
- 제어 상태: 02-control-state.md
- ACK와 오류: 03-acks-and-errors.md