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
      • 등록일 : 오래된 데이터 삭제
      • 전송 실패 횟수 : 여러번 오류가 발생한 데이터 삭제
최종 수정일: 2023-05-01 21:40:41

이전글 :
다음글 :
상단 menu
arrow_back_ios
arrow_forward_ios