# 5. OPC UA 서버 기능 (Phase 1) — 완료
This commit is contained in:
37
todo.md
37
todo.md
@@ -31,3 +31,40 @@
|
||||
# 4. HistoryTable의 웹페이지 추가
|
||||
- [x] 4.1 표시 테이블 컬럼은 드롭다운 으로 선택 , 한 테이블에 8개 까지 선택가능하게
|
||||
- [x] 4.2 시작 시간과 종료 시간 선택 한 범위내에서만 테이블에 표시
|
||||
|
||||
# 5. OPC UA 서버 기능 (Phase 1) — 완료
|
||||
- [x] 5.1 `OPCFoundation.NetStandard.Opc.Ua.Server` 패키지 추가
|
||||
- [x] 5.2 `ExperionOpcServerNodeManager` — CustomNodeManager2 상속, Realtime 폴더에 태그별 변수 노드 생성
|
||||
- [x] 5.3 `ExperionOpcServerService` — StandardServer 기반, IHostedService + IExperionOpcServerService
|
||||
- [x] 5.4 FlushLoop 500ms 배치 후 OPC 서버 노드 값 동시 갱신 (DB 폴링 없음)
|
||||
- [x] 5.5 포인트 NodeId → tagname 캐시 (`_pointCache`) 추가
|
||||
- [x] 5.6 API: POST /api/opcserver/start·stop, GET /api/opcserver/status, POST /api/opcserver/rebuild
|
||||
- [x] 5.7 웹 UI: 08 OPC UA 서버 탭 (상태 카드, 시작/중지/재구성 버튼, 5초 폴링)
|
||||
- [x] 5.8 자동 재시작 플래그 `opcserver_autostart.json` (RealtimeService 패턴 동일)
|
||||
- [x] 5.9 기존 클라이언트 인증서 재사용 (`ApplicationType.ClientAndServer`)
|
||||
포트: 기본 4841 (4840은 Experion HS R530이 사용 가능)
|
||||
|
||||
# 6. OPC UA 서버 기능 (Phase 2)
|
||||
- [ ] 6.1 **Historical Access (HA) 구현**
|
||||
- `ExperionOpcServerNodeManager`에 `IHistoricalDataAccess` 구현
|
||||
- `ReadRaw()` → `QueryHistoryAsync()` → `history_table` 조회 후 반환
|
||||
- 각 Realtime 노드에 `Historizing = true` 설정
|
||||
- TimescaleDB가 이미 설치되어 있어 대용량 이력도 고성능 처리 가능
|
||||
|
||||
- [ ] 6.2 **포인트빌더 빌드 시 주소 공간 자동 재구성**
|
||||
- `ExperionPointBuilderController`의 `Build` 엔드포인트에서
|
||||
`_opcServer.RebuildAddressSpace(points)` 자동 호출
|
||||
- 현재는 UI에서 수동 "↺ 주소공간 재구성" 버튼으로만 동작
|
||||
|
||||
- [ ] 6.3 **Username/Password 인증 추가**
|
||||
- `appsettings.json`의 `AllowedUsernames` / `AllowedPasswords` 를 실제 검증 로직에 연결
|
||||
- `ExperionOpcServerService.BuildServerConfig()`에 UserNameToken 유효성 검사기 등록
|
||||
|
||||
- [ ] 6.4 **보안 정책 활성화 (Basic256Sha256)**
|
||||
- `appsettings.json`에서 `EnableSecurity: true`로 설정 시
|
||||
SignAndEncrypt 엔드포인트 자동 활성화 (코드는 이미 구현됨)
|
||||
- 클라이언트 인증서 신뢰 관리 UI 검토
|
||||
|
||||
- [ ] 6.5 **연결 클라이언트 목록 웹 UI**
|
||||
- 접속 중인 클라이언트 IP, 세션 ID, 구독 수를 웹 UI에 표시
|
||||
- `_server.CurrentInstance.SessionManager.GetSessions()` 활용
|
||||
|
||||
Reference in New Issue
Block a user