2.7 KiB
2.7 KiB
HC900 Modbus TCP 스캔 시간 분석
1. 측정 환경
| 항목 | 값 |
|---|---|
| 대상 | HC900 C3 컨트롤러 (192.168.0.240) |
| 네트워크 | 100Mbps LAN |
| Ping RTT | 최소 0ms, 최대 1ms, 평균 0ms |
| 바이트 순서 | Big Endian (HC900 기본) |
| 통신 프로토콜 | Modbus TCP (FC03 Read Holding Registers) |
2. 데이터 양
| 항목 | 값 |
|---|---|
| 총 태그 항목 | 2,554개 |
| float 32 (4바이트) | 2,320개 → 4,640 레지스터 |
| unsigned 16 (2바이트) | 234개 → 234 레지스터 |
| 총 레지스터 | 4,874개 |
| 총 바이트 | 9,748 bytes |
| 주소 범위 | 0x0001 ~ 0x7FFF (32,767 스팬) |
| 주소 갭 | 273개 (불연속) |
3. Modbus TCP 읽기 요청 수
- FC03 최대 125 레지스터/요청
- 불연속 주소로 인해 최소 290회 읽기 요청 필요
Partition별 읽기 횟수
| Partition | 항목 수 | 주소 스팬 | 읽기 횟수 |
|---|---|---|---|
| Loops 1-24 | 960 | 6,079 | 192회 |
| Loops 25-32 | 329 | 1,983 | 65회 |
| Signal Tags 1-1000 | 549 | 1,125 | 11회 |
| Signal Tags 1-4000 | 549 | 1,125 | 11회 |
| Variables 1-600 | 157 | 337 | 9회 |
| Time | 7 | 7 | 1회 |
| Misc. Parameters | 3 | 5 | 1회 |
4. 스캔 시간 계산
단일 스레드 순차 읽기
| 조건 | RTT | 전송/요청 | 총 시간 | 1초당 스캔 |
|---|---|---|---|---|
| 최적 (Ping 그대로) | 0.2ms | 0.028ms | 0.066초 | 15.1회/s |
| 보수 (Ping+처리) | 0.5ms | 0.028ms | 0.153초 | 6.5회/s |
| 안전 (Ping 최대) | 1.0ms | 0.028ms | 0.298초 | 3.4회/s |
7개 Partition 병렬 읽기
| RTT | 총 시간 | 비고 |
|---|---|---|
| 0.2ms | 43.7ms | Loops 1-24 (192회)가 병목 |
| 0.5ms | 101.3ms | |
| 1.0ms | 197.3ms |
5. 실시간 모니터링 가능 여부
| 샘플링 주기 | RTT=0.2ms | RTT=0.5ms | RTT=1.0ms |
|---|---|---|---|
| 10초 | ✓ 여유 99% | ✓ 여유 98% | ✓ 여유 97% |
| 5초 | ✓ 여유 99% | ✓ 여유 97% | ✓ 여유 94% |
| 2초 | ✓ 여유 97% | ✓ 여유 92% | ✓ 여유 85% |
| 1초 | ✓ 여유 93% | ✓ 여유 85% | ✓ 여유 70% |
| 0.5초 | ✓ 여유 87% | ✓ 여유 69% | ✓ 여유 40% |
| 100ms | ✓ 여유 34% | ✗ 불가 | ✗ 불가 |
6. 결론
- 290회 Modbus TCP 읽기로 HC900 C3 컨트롤러의 전체 데이터 수집 가능
- 최적 조건에서 0.066초, 안전 조건에서 0.298초
- 1초 단위 실시간 모니터링 충분히 가능 (여유 70~93%)
- 100ms 단위는 최적 조건(RTT 0.2ms)에서만 가능
- Big Endian는 HC900 기본이므로 바이트 변환 불필요
- TCP keep-alive 필수 (handshake 오버헤드 제거)