Pipe Production Line Monitoring (스크립트를 활용한 난수 값 생성 활용)
X-SCADA AI를 활용하여 만든 파이프 생산 라인 모니터링 시스템을 소개합니다.
주요 라인들의 생산 설비 현황들을 한 눈에 볼 수 있도록 구성되어 있습니다.
장치가 없는 사용자들을 위해 프로젝트가 어떻게 동작하는지 보여주기 위해 태그값은 실제값이 아닌 랜덤값이 표현되도록 구현했습니다.
일반적으로 프로젝트 파일(.xix)에 장치가 연결되지 않은 경우 값을 표현할 수 없습니다.
실제 장치가 없음에도 값을 표현해야 하는 경우 X-SCADA AI의 내부 개발 언어인 자바스크립트(JavaScript)의 함수들을 사용하면 임의의 값을 표현할 수 있습니다.
이번에는 단순 프로젝트 샘플 소개가 아니라 태그 값들을 난수 값으로 표현하는 방식을 함께 소개하겠습니다.
1. X-SCADA AI Designer의 이미지(Image), 텍스트(Text) 등을 활용하여 프로젝트를 작화한다.
2. 사용하고자 하는 태그(Tag)를 생성한 뒤 객체에 클릭 – 태그값 설정(Click – Tag Value), 바인딩 태그(Binding Tag) 등을 설정한다.
3. 하단 [스크립트(Script)] 탭을 클릭하여 페이지 스크립트 작성창을 활성화한 뒤 스크립트를 작성한다.
· 페이지 스크립트 : 해당 페이지가 열려있는동안 작성한 스크립트가 실행됨
· 난수 값 활성화를 위한 몇 가지 함수를 활용하여 스크립트를 작성 (아래에 소개 및 설명)
■ 태그 기본값 설정
기본 형태 : $XT("AAA.BBB").value = XXX;
설명 : AAA 폴더에 있는 BBB 이름을 가진 태그의 값(value)을 XXX로 설정
■ 난수 값 생성 (기본형)
기본 형태 : Math.random();
설명 : 0 이상 1 미만의 값을 무작위로 소수점 숫자 생성
■ 난수 값 생성 (최소/최대값 설정)
기본 형태 : Math.random() * (최대값 – 최소값 + 1) + 최소값;
예시 : Math.random() * (10 – 1 + 1) + 1; = Math.random() * 10 + 1;
예시 설명 : 1부터 10 미만의 무작위 소수점 숫자 생성
■ 난수 값 생성 (정수로 출력)
기본 형태 : Math.floor(Math.random());
예시 : Math.floor(Math.random() * 100) + 1;
예시 설명 : 1 이상 100 이하의 정수 생성 (Math.floor는 소수점 이하를 버리는 함수)
추가 응용 : Math.floor(버림), Math.ceil(올림), Math.round(반올림) 등
■ 함수 반복 실행
기본 형태 : setInterval(실행할 함수, 시간 간격);
예시 :
setInterval(xyz, 1000) function xyz() { $XT("analog_1").value = Math.floor(Math.random() * 100) + 1; $XT("analog_2").value = Math.floor(Math.random() * 100) + 1; $XT("analog_3").value = Math.floor(Math.random() * 100) + 1; } |
예시 설명 : xyz 함수를 1,000ms(밀리초) 간격으로 실행 (1,000밀리초 = 1초)
4. X-SCADA AI Viewer로 프로젝트를 실행하여 난수 값을 잘 발생시키는지 확인한다.