인버터는 단순한 기동/정지 릴레이가 아니다
인버터(VFD)는 보통 기동 접점 하나와 운전 램프 하나로 끝나지 않는다. 대부분 packed control word로 명령을 받고 packed status word로 상태를 보고한다. 각각 16-bit register이며 bit 단위로 의미가 정해져 있다. SCADA나 PLC는 모터를 돌리기 위해 올바른 bit 패턴을 조립해야 하고, 돌아온 bit를 운전자가 이해하는 상태로 해석해야 한다.
시운전이 여기서 어긋난다. 배선도 통신도 정상인데 드라이브가 기동하지 않거나, 기동했는데 HMI는 "정지"라고 하거나, 드라이브에서는 고장이 풀렸는데 SCADA 고장 램프는 latch된 채로 남는다. 이런 문제는 거의 전부 control word나 status word 매핑을 검증 없이 추측한 탓이다.
Control word와 status word를 Modbus register map처럼 문서화된 interface로 취급하라. Bit 하나씩 해석하고 각 전이를 증명한다.
Control word는 명령 하나가 아니라 순서다
"run bit만 세우면 모터가 돈다"고 생각하는 것이 흔한 함정이다. 대부분의 드라이브 프로파일(CiA 402와 PROFIdrive, 둘 다 IEC 61800-7로 표준화되어 있다. 그 외 제조사별 변형)은 run 명령이 받아들여지기 전에 작은 state machine을 순서대로 밟아야 한다.
- Coast/quick-stop inhibit bit를 풀어 드라이브가 enable될 수 있게 한다.
- "enable / ready to switch on"을 세운다.
- "switch on"과 "enable operation"을 세운다.
- 그다음에야 "run forward / start" bit가 실제로 모터를 돌린다.
해석하면 control word는 보통 이런 식이다.
| Bit | 의미 | 비고 |
|---|---|---|
| 0 | Switch on / ON | 전제 조건으로 1이어야 하는 경우가 많음 |
| 1 | No coast stop (enable voltage) | Active-low: 1 = 허용 |
| 2 | No quick stop | Active-low: 1 = 허용 |
| 3 | Enable operation | Run 전에 필요 |
| 4 | Ramp / run enable | 제조사별 상이 |
| 7 | Fault reset | Level이 아닌 rising edge |
| 8 | Jog | Momentary |
| 11 | Reverse direction | Run이 아니라 방향 |
Active-low bit에 주의한다. 여러 드라이브가 "no coast stop", "no quick stop" bit를 쓰는데 여기서는 0이 정지를 뜻한다. SCADA가 "전부 off라 안전하다"고 생각하며 control word에 0x0000을 쓰면, 실제로는 coast stop과 quick stop을 명령한 것이다. 정지에는 문제없지만 이 bit들을 1로 세우기 전까지 run bit는 절대 먹지 않는다. 필요한 "ready to run" 패턴을 예를 들어 0x047F처럼 명시적으로 적어 시운전 노트에 남긴다.
Fault reset은 level이 아니라 edge다
Status word 관련 불만 중 가장 흔한 것은 "드라이브 고장은 사라졌는데 SCADA는 아직 faulted"이다. 대개 fault reset 처리 방식이 원인이다.
- Control word의 fault reset bit는 거의 항상 edge 방식이다. 1로 계속 붙잡아 두면 첫 전이 이후에는 아무 일도 하지 않고, 오히려 재무장을 막기도 한다.
- SCADA 로직은 reset bit를
0 -> 1 -> 0으로 pulse한 뒤 status word를 다시 읽어 fault bit가 풀렸는지 확인해야 한다. - "안전하게" reset bit를 계속 latch하지 마라. 새로운 고장을 가리고 이후 reset도 막는다.
Reset은 one-shot으로 만든다. 운전자가 reset을 누르면 SCADA가 한두 scan 동안 bit를 세우고, 다시 지우고, status word로 확인한다. 이는 드라이브 명령 전반에 쓰는 명령 피드백 timeout 패턴과 같으며, 드라이브 고장이 풀리지 않으면 reset도 timeout되고 실패로 보고해야 한다.
Status word는 raw bit가 아니라 이름 있는 상태로 해석한다
Status word는 control word의 거울이다. 각 bit가 한 조건을 보고하는 packed 16-bit 값이다.
| Bit | 의미 | SCADA에서 용도 |
|---|---|---|
| 0 | Ready to switch on | 전제 조건 표시 |
| 1 | Switched on | 중간 상태 |
| 2 | Operation enabled | 드라이브 여자됨 |
| 3 | Fault | 고장, reset 필요 |
| 4 | No coast (voltage enabled) | 안전 체인 표시 |
| 5 | No quick stop | 안전 체인 표시 |
| 6 | Switch-on inhibit | 해제 전까지 기동 차단 |
| 7 | Warning | Latch되지 않는 경고 |
| 10 | Target/speed reached | 속도 도달 피드백 |
| 11 | Internal limit active | 토크/전류 제한 |
Raw status bit를 그대로 HMI에 올리지 마라. 운전자가 한눈에 읽는 하나의 derived state로 묶는다. Not Ready, Ready, Running, At Speed, Warning, Faulted, Inhibited. 이는 어떤 derived status tag와도 같은 원칙이다. 운전자가 해석해야 하는 램프 여섯 개 대신, HMI와 알람과 트렌드와 리포트가 함께 쓰는 명확한 상태 하나를 만든다.
간단한 해석은 이렇다.
if status.bit3 -> "Faulted"
elif status.bit6 -> "Inhibited"
elif status.bit2 and bit10 -> "At Speed"
elif status.bit2 -> "Running"
elif status.bit0 -> "Ready"
else -> "Not Ready"
속도 지령과 피드백은 별도의 scaling이 필요하다
Bit word 외에도 드라이브는 속도 지령(SCADA -> 드라이브)과 속도 피드백(드라이브 -> SCADA)을 주고받는다. 이 값은 engineering unit이 아니라 보통 scale된 정수다.
- 많은 드라이브가 지령 주파수 100%를 Hz 값이 아니라
16384(0x4000)로 쓴다. 50 Hz를 기대하며50을 쓰면 약 0.3% 속도가 된다. - 지령이 최대 주파수의 percent인지, raw Hz x scale인지, RPM인지 확인한다.
- 피드백 scaling은 따로 확인한다. 같은 드라이브에서도 지령과 실제 값의 scale이 다를 수 있다.
- 방향 convention을 정해 문서화한다. 역방향이 음수 지령인가, 아니면 별도의 control-word bit인가?
Scaling은 Modbus 32-bit 값을 증명하듯 검증한다. 알고 있는 지령을 쓰고 raw register를 읽어 raw count와 결과 Hz를 함께 기록한다. 한 setpoint만 맞아 보이게 하려고 "보정" multiplier를 넣지 마라.
전이를 하나씩 시운전한다
Interface를 공정에 맡기기 전에 벤치나 모터 무부하 상태에서 검증한다.
- 정지 상태에서 status word를 읽어 raw hex와 해석 상태를 기록한다. "Not Ready" 또는 "Ready"와 맞는지 확인한다.
- Run bit 없이 ready-to-run 전제 패턴을 쓰고, 드라이브가 여전히 정지된 채 "operation enabled" 등을 보고하는지 확인한다.
- Run bit와 작은 속도 지령을 더한다. 모터가 돌고 "running" / "at speed" bit가 나타나는지 확인한다.
- 정지를 명령하고 드라이브가 ramp down하며 상태가 "Ready"로 돌아오는지 확인한다.
- 고장을 유발하고(예: 제어된 과전류나 외부 trip) fault bit가 서는지 확인한 뒤, reset을 pulse해서 풀리는지 확인한다.
- 통신 상실을 시험한다. Fieldbus가 끊기면 드라이브는 어떻게 동작하는가? 설정된 동작(유지, ramp 정지, coast)이 안전 설계와 맞는지, 그리고 SCADA가 마지막 값을 그대로 두지 않고 tag를 bad quality로 표시하는지 확인한다.
이런 interface 세부는 꼭 확인한다
시운전 시간을 반복해서 잡아먹는 항목들이다.
- Active-low 안전 bit. "No coast stop", "no quick stop"은 1이 허용이다. Control word를 0으로 두면 기동하지 않는다.
- Local/Remote 모드. Local(keypad) 모드의 드라이브는 fieldbus 명령을 완전히 무시한다. Control-place bit를 확인하고 표시한다.
- Bit 번호. 제조사 매뉴얼은 0-based와 1-based를 섞어 쓰고, MSB/LSB 표시 순서도 tool마다 다르다. 어느 쪽인지 적어 둔다.
- Word order. Control/status word가 더 큰 process-data telegram의 일부로 오면 word order와 byte order가 여전히 적용된다.
- Watchdog / lifebit. 많은 드라이브가 주기적 control-word toggle이나 heartbeat를 요구하며, 없으면 통신 상실로 trip한다. SCADA heartbeat/watchdog tag와 짝지어 둔다.
- Warning vs fault. Warning bit는 드라이브를 세우지 않는다. Trip과 같은 우선순위로 알람하지 마라.
인수인계 체크리스트
드라이브 point list를 넘기기 전에 project note에 다음을 남긴다.
- "Ready to run" control-word 패턴을 hex로, 각 bit의 의미와 함께.
- Fault reset이 edge인지 level인지, SCADA가 어떻게 pulse하는지.
- 전체 status-word bit map과 거기서 만든 derived-state 로직.
- 지령과 피드백 scaling. Raw 값과 결과 Hz 또는 RPM을 기록해 증명한 것.
- 방향 convention(bit인지 signed 지령인지).
- 드라이브의 통신 상실 동작과 그에 맞는 SCADA quality 처리.
- Local/Remote control-place 처리와 운전자에게 보여 주는 방식.
이 수준으로 문서화된 VFD interface는 운전자가 기대하는 대로 기동, 정지, 고장 reset이 동작한다. Bit 단위로 추측한 interface는 벤치에서는 돌지만, 운영 중 처음 고장이 났을 때 모두를 혼란에 빠뜨린다.