본문으로 건너뛰기
  1. Posts/

Thingworx - Kepserver(Kepware) 간 연동 환경 에서 Remote Thing 연결 끊김 현상 발생 시 Scheduler 를 통한 문제 해결 대안 제시

·3 분· loading · loading ·
Sseung
Solution Thingworx Scheduler Kepware Kepserver Remotething
InnoFactory
작성자
InnoFactory
스마트팩토리, 산업자동화, Digital Transformation, 디지털팩토리, PLM, ALM, Digital Manufacturing, Visualization, 3D CAD, Digital Twin, Big Data, IIoT 솔루션 전문업체
작성자
SeungHyeon Lee
R&D Center Developer

Thingworx - Kepserver(Kepware) 간 연동 환경에서 문제 발생 케이스
#

다양한 프로젝트를 진행하면서 Thingworx와 Kepserver(Kepware) 간 연동 시 간혹 Kepserver에 내장된 OPC UA Client 상에서 확인할 때는 소스와 Kepserver 상의 태그의 연결 상태가 정상임에도 불구하고 Remote Thing 의 Connection 상태가 해제되는 연결 끊김 현상이 발생하는 경우가 있었습니다. 또한 수동으로 몇가지 조치들을 통해 Connection을 복구하더라도 일정 시간 후에 다시 연결이 끊어지기도 했습니다.

해당 문제 현상의 해결을 위해 PTC Support에 문의를 통해 가이드를 받아 Kepserver의 버전 업그레이드와 Thingworx의 버전또한 업그레이드 해 봤지만 근본적인 연결 문제가 해결되지는 않았고 이에 다른 대안을 연구하게 되었습니다. 그 중 한가지 대안을 소개하고자 합니다.

Thingworx Scheduler 를 이용한 문제 해결 대안
#

Thingworx의 Remote Thing들은 RemoteThing Template를 베이스로 하며 RemoteThing TemplateGeneric Thing Template를 베이스로 합니다.

Generic Thing Template에는 RestartThing 서비스가 포함되어있는데, 테스트를 통해 연결이 끊긴 RemoteThingRestartThing 서비스를 실행시켜 Connection을 복구할 수 있는 것을 확인 했습니다.

따라서 스케줄러를 이용해서 주기적으로 Connection이 끊긴 Remote Thing 대상으로 RestartThing 서비스를 실행해 지속적으로 Connection 복구를 시도했습니다.

데이터 변경 주기가 길고, 값의 변경량이 크지 않은경우, 데이터 변화의 추세만 대략적으로 확인하고자 하는 경우에는 해당 방식이 임시방편으로 활용가능했습니다.

Thingworx Scheduler Thing 생성
#

Thingworx Composer에서 새로운 Thing을 생성합니다.

image-20230725111701883

Thing 필수 생성 옵션인 Thing Name, Project, Base Thing Template, Run As User를 설정합니다.

Thing에서 Schedule 옵션 사용을 위해 Base Thing Template은 Scheduler Template로 설정합니다.

Save 버튼을 눌러 Thing 생성을 저장합니다.

Scheduler 로 실행할 Remote Thing Restart 서비스 생성
#

Scheduler로 실행할 서비스를 생성합니다.

Thing을 참조하여 RestartThing 서비스를 실행할 수 있습니다.

image-20230725115537078

Scheduler 에서 Remote Thing Restart 서비스를 실행하는 Subscription 생성
#

Scheduler의 Subscriptions 탭에서 실행시킬 Subscription을 생성하고 위에서 생성한 Remote Thing Restart 서비스를 연결합니다.

image-20230725141334720

Subscription 작성 시 Subscription Info 탭에서 Enabled 체크박스를 체크해야 해당 Subscription이 동작됩니다.

image-20230725143054586

Inputs 탭에서 Event의 종류를 ScheduledEvent로 설정해 Scheduler Thing의 General Information 탭 옵션에 설정된 Schedule 주기마다 해당 Subscription을 실행시킬 수 있습니다.

Scheduler Subscription의 옵션을 통한 Scheduler 실행 주기 설정
#

Scheduler Thing의 General Information 탭 옵션에 Schedule 주기를 설정하여 Scheduler의 실행 주기를 설정할 수 있습니다.

image-20230725144645805

Schedule 옵션은 Cron Expression 문법을 따릅니다.

Cron Expression은 스케줄러 전용 표현식으로, 7개로 구분된 단위 표현식으로 이루어진 문자열 입니다.

Cron Expression 문법
#

CronExpression("(1) (2) (3) (4) (5) (6) ((7))");

(1) 초단위
(2) 분단위
(3) 시단위
(4) 일단위 DOM (Day Of Month)
(5) 월단위
(6) 요일 DOW(Day Of Weak)
(7) 연도 (Optional)
  • *는 매 번을 의미합니다. 예를 들어 (1) 자리에 * 입력시, ‘매 초마다’ 를 의미합니다
  • ?는 설정값 없음을 의미합니다. (4) 일, (6) 요일 위치에만 사용가능합니다.
  • /는 값 증가표현입니다. 분항목에 10/15라고 쓰면 10분부터 시작해서 매 15분 마다를 의미합니다.
  • #은 k#N으로 사용되며, 이 달의 N번째 K요일을 의미합니다. 요일 항목에 5#2이면 이달의 두번째 목요일을 의미합니다.
  • L은 마지막(Last)를 의미합니다. L은 (4) 일, (6) 요일 위치에만 사용가능합니다. (4) 일 위치에 L을 주면 마지막날을 뜻하고, (6) 요일에 6L을 주면 이 달의 마지막 금요일을 뜻합니다.
  • 각각의 단위는 범위나 목록으로 나타낼 수도 있습니다. 일에 1-15를 주면 1일에서 15일이라는 의미입니다.
  • (3) 시은 023, (4) 일은 131만 허용됩니다.

Thingworx Scheduler 를 이용한 문제 해결 대안의 한계
#

데이터 변경 주기가 길고, 값의 변경량이 크지 않은경우, 데이터 변화의 추세만 대략적으로 확인하고자 하는 경우에는 해당 방식이 임시방편으로 활용가능했으나 수동으로 Connection을 복구하더라도 일정 시간 후에 다시 연결이 끊어지는 경우에는 데이터 유실을 100% 방지할 수는 없었습니다.

따라서 해당 방법을 사용하는 경우, 데이터 유실을 최소화 하기 위해 Connection 복구 후 다시 유실되는 시간차를 고려하여 Connection을 복구하기 위한 Scheduler의 적절한 실행 주기를 여러번의 테스트를 통해 산출하고 설정해야 할 것 입니다.

또한, 연결된 Remote Thing과 Tag 개수가 많은 경우 주기적으로 Scheduler Thing에서 실행하는 Remote Thing 스캐닝 및 RestartThing 서비스의 수행은 자원을 많이 소모하므로 전체적인 시스템 성능의 저하가 발생할 수 있음을 주의해야 합니다.

이를 고려했을 때, PTC Support를 통한 근본적인 Thingworx - Kepserver(Kepware) 간 Connection 유실에 대한 문제해결을 충분히 시도해 본 뒤 본 글의 문제 해결 대안을 시도해 보시길 권고드립니다.

관련 글

Thingworx Administrator 계정 비밀번호 Reset 방법
·2 분· loading · loading
Sseung
Solution Thingworx Subsystem Password
Thingworx는 User Management Subsystem을 통해 비밀번호 암호화 알고리즘과 알고리즘에서 사용되는 몇가지 변수를 설정할 수 있습니다. Thingworx는 로그인 시도 시 입력한 문자열을 Thingworx 시스템 DB인 “thingworx"의 “user_model” 테이블에 저장된 사용자 비밀번호 정보 및 User Management Subsystem에서 설정한 옵션을 통해 암호화 하여 해당 결과가 저장된 비밀번호 정보와 일치하는지 판단합니다.
Thingworx 계정 암호화 방식 및 옵션의 이해
·2 분· loading · loading
Sseung
Solution Thingworx Subsystem Password
Thingworx는 시스템 설정을 구성할 수 있는 기능을 제공하는 시스템 통합 도구 Subsystem을 제공합니다. User Management Subsystem은 Thingworx의 비밀번호 암호화 알고리즘과 알고리즘에서 사용되는 몇가지 변수를 설정할 수 있습니다.