- OBCon Proxy
- Proxy 운영 현황
- config
- Device to SCADA
- SCADA to Proxy
- SCADA에서 Proxy로 전송
- Proxy to Customer
- Customer
- Test
- To-Do
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
등록일 : 오래된 데이터 삭제
전송 실패 횟수 : 여러번 오류가 발생한 데이터 삭제