상단

OBCon Proxy


 

Proxy 운영 현황


  • 피지에스코리아

    • OBCon Proxy

      • 예스코 (10) : MSSQL 연동

    • Socket 통신 (Deprecated)

      • 삼천리 (8)

      • JBC (14)

      • 대성에너지(5)의 원격TB

 

config


  • cluster

    • worker_count_proxy : OBCon Proxy의 worker 갯수

  • proxy

    • use

    • proxies

      • use

      • protocol

      • type

      • host

      • port

      • server

        • host

        • port

      • onlineTime

      • onlineCount

      • batchTime

      • batchCount

      • siteList : OBCon SCADA에서 OBCon Proxy로 데이터를 전송하는 사이트 정보

      • sitesInfo : OBCon Proxy를 사용하는 사이트 정보

Device to SCADA


  • modules/clients/tcp_client_1.js : 장비 애뮬레이터

#--- OBCon Device 실행
cd /work/OBCon_Service
node bin/scada_device.js --conf config_scada_device_override.js
# pm2  start  --only  SCADADevice

#--- 로그 확인
pm2  log  OBConDevice
pm2  log  OBConSCADA
 

SCADA to Proxy


#--- OBCon Proxy 실행
cd /work/OBCon_Service
node  bin/proxy.js --conf  config_proxy_override.js
# pm2  start  --only  OBConProxy

#--- 장비에서 받은 데이터를 OBCon Proxy로 잘 전송하는지 확인
# pm2  log  OBConSCADA  |  grep  sendData
pm2  log  OBConProxy
# https://local.obcon.biz/scada/proxies

  • config_scada_override.js

    • conf.proxy.proxies.siteList

  • 화면

    • 실시간 연동 현황 (/scada/proxies?action=list)

    • 배치 연동 현황 (/scada/proxies?action=list2)

      • "작업 생성" 버튼

      • "작업 취소" 버튼

    • modules/proxies/view.js

      • getHandler(siteKey) : siteKey에 해당하는 핸들러 반환

  • modules/proxy_client.js : 과거에 사용하는 모듈 (삭제 예정)

  • infoOfData 생성

    • interfaces/v10?/request/request_G_1.js

      • handleServer() 함수에서 infoOfData 반환

    • interfaces/v10?/request/request_G_[2345...].js

      • _updateData() 함수에서 infoOfData 반환

  • interfaces/v100/request/request.js

    • handleProxyServerBefore(data)

    • handleProxyServer(infoOfData)

 

SCADA에서 Proxy로 전송

  • modules/proxies/proxy_client.js

    • init()

    • sendData(site, device, infoOfData, socketData)

  • modules/proxies/internal_tcp_client.js

    • 데이터 송신: sendData(site, device, infoOfData, socketData)

Proxy to Customer


pm2  start  --only  OBConProxy
 
  • config_proxy_override.js

    • conf.proxy.proxies.sitesInfo

  • modules/proxies/proxy_app.js

  • modules/proxies/internal_tcp_server.js

  • modules/proxies/internal_tcp_server_client.js

    • 데이터 수신: ondata()

  • modules/proxies/view.js

    • sendDataOnline() : Online 방식으로 Proxy에서 고객사로 데이터 전송

    • sendDataBatch() : Batch 방식으로 Proxy에서 고객사로 데이터 전송

    • getHandler(siteKey)

  • modules/proxies/database/proxy_${type}.js

    • 실시간 연동 진행

    • sendData(devicedata)

      • 데이터 송신: _insertData(model, devicedata)

    • 테이블 레이아웃

      • modules/proxies/database/tables/proxydata?s.js

    • 테스트 완료된 프로그램

      • proxy_mariadb.js

      • proxy_mysql.js

      • proxy_oracle.js

  • 배치 연동

    • include/Applications.js

      • watchDogTimer()를 사용

      • modules/proxies/view.js

        • 주기적으로 sendData() 호출

 

Customer


  • MariaDB (MySQL 포함)

    • modules/proxies/database/

      • mariadb.md

      • mariadb_ver001.xlsx : 테이블 레이아웃

      • mariadb.sql

  • MSSQL (Reserved)

    • modules/proxies/database/

      • mssql.md : 설치와 환경 구성 등

      • mssql.sql

  • Oracle

    • modules/proxies/database/

      • oracle.md : 설치와 환경 구성 등

      • oracle.sql : sqlplus 명령어로 접속하여 설정

    • 주의 : CentOS에 Oracle Client와 oracledb 모듈 설치 검증 필요

  • Tibero (Reserved)

    • modules/proxies/database/

      • tibero.md : 설치와 환경 구성 등

      • tibero.sql

Test


--- 테스트 초기화
---     site id : 1, siteKey : 01
delete from devicedata101s where siteKey = '01';
delete from proxies;
delete from proxydata1s;
-- logs/ 폴더의 로그 파일 삭제

-- 실시간/배치 연동 현황 조회
--     https://local.obcon.biz/scada/proxies
--     https://local.obcon.biz/scada/proxies?action=list2

--- 전송 건수가 일치하는지 확인
select count(*) from devicedata101s where siteKey = '01';
select count(*) from proxydata1s;

select id from devicedata101s where siteKey = '01' order by id;
select id from proxydata1s order by id;

update proxies set sendId = 6771;
 

To-Do


  • 오류

    • 장비와 SCADA간의 통신이 끊어지는 경우

      • SCADA와 OBCon Proxy간의 통신도 끝어져서 Proxy에서 데이터 저장을 완료하지 못하는 문제가 발생 한다.

      • 대체로 오류가 발생하지는 않는다.

  • tcp 방식의 OBCon Proxy의 문제점

    • tcp 연결이 계속 유지되므로 Proxy cluster 개수만큼 사용되지 못한다.

  • OBCon SCADA와 OBCon Proxy 연동 방식에 database 추가

    • 중개 테이블 생성 (ProxyPipe)

      • id

      • siteKey

      • type

      • deviceKey

      • json

      • 등록일 : 오래된 데이터 삭제

      • 전송 실패 횟수 : 여러번 오류가 발생한 데이터 삭제

최종 수정일: 2024-09-30 12:26:19

이전글 :
다음글 :