엣지 카테고리 — 게이트웨이 전용 노드
팔레트의 엣지 카테고리에서 다음 노드를 사용할 수 있습니다.
node-red-contrib-plantpulse-edge 가 image 안 node/conf/plantpulse-edge-nodes/ 에 위치하며
entrypoint 가 매 부팅 node_modules/node-red-contrib-plantpulse-edge 로 절대경로 symlink 작성.
제공 노드: pp-tag-value-read / pp-tag-value-write / pp-tag-values-read / pp-tag-list /
pp-opc-get / pp-opc-start / pp-opc-stop (총 7개). image upgrade 시 자동 갱신.
1. 태그값 읽기 (pp-tag-read)
게이트웨이의 한 태그값을 가져옵니다. 내부적으로 GET /api/v1/tag/{tagId}/value 를 호출.
| 필드 | 설명 |
|---|---|
| 이름 | (선택) 노드 이름 |
| Tag ID | 읽을 태그 (예: TAG_TEST_00042). 비워두면 msg.tagId 로 동적 지정 |
| Fresh | 체크 시 PLC 직접 read (캐시 우회). ?fresh=true 와 동일. 평소엔 끄세요 (PLC 부하) |
| Host / Port | 게이트웨이 주소 (기본 127.0.0.1:80 — 같은 머신이면 그대로) |
입력 (선택):
msg.tagId— 노드 설정의 Tag ID 를 동적으로 덮어쓰기 (한 노드를 여러 태그에 재사용)msg.fresh— boolean, 캐시 우회 동적 지정
출력:
msg.payload = {
tag_id: "TAG_TEST_00042",
value: "1234",
value_time: "2026-05-08 03:01:19.001",
value_read_status: "OK",
...
}
msg.statusCode = 200
msg.tagId = "TAG_TEST_00042" // 실제 사용된 ID
노드 설정의 Tag ID 는 비워두고 change 노드로 msg.tagId = "TAG_..." 를 채우는 식이 가장 유연합니다. 같은 읽기 노드를 여러 태그에 재사용 가능.
2. 태그값 쓰기 (pp-tag-write)
게이트웨이의 한 태그에 값을 씁니다. 내부적으로 POST /api/v1/tag/{tagId}/value.
| 필드 | 설명 |
|---|---|
| 이름 | (선택) |
| Tag ID | 쓸 태그. msg.tagId 로 동적 지정 가능 |
| Value | 고정 값 (선택). msg.value → msg.payload → 노드 Value 순서로 우선 적용 |
| Host / Port | 게이트웨이 주소 |
출력:
msg.payload = {
result: "SUCCESS", // 또는 "ERROR"
opc_id: "OPC_LS_TEST",
plc_address: "D1000",
value: "9999", // 사용자가 보낸 값
actual_read: "9999", // 드라이버가 write 후 즉시 read 한 결과
msg: ""
}
msg.statusCode = 200
지원 프로토콜: HTTP / OPC-UA / Modbus TCP / MELSEC / S7 / LS XGT(XGI/XBC/XBM) / AB EtherNet/IP 모두 가능. EIP 는 PLC 펌웨어/패치에 따라 일부 데이터 타입의 write 가 거부될 수 있으니 시뮬레이터에서 검증 후 실설비에 적용하세요.
실제 PLC 에 값을 쓰는 것은 설비를 움직일 수 있습니다. 테스트 태그 또는 시뮬레이터 OPC 로 충분히 검증한 뒤 실설비 태그에 적용하세요. write 권한은 운영팀과 합의된 태그에만 사용합니다.
3. 다음 단계
- MQTT 노드 자세히 — 외부 SCADA / 클라우드 IoT 연계
- IIoT 예제 모음 — read/write 를 조합한 실제 패턴들