자바스크립트 따라하기 – 알람 객체(응용)

Script

자바스크립트 따라하기 – 알람 객체(응용)

스크립트에서 알람 객체를 활용할 수 있다.


1. 뷰어로 샘플 실행하기

1) 아날로그, 디지털 태그를 각각 1개 생성한다.

8e6e1d3b3348f0e6b60782ebc2788cd5_1633049257_1627.png
 

2) 페이지에 레이블을 하나 추가한다.

8e6e1d3b3348f0e6b60782ebc2788cd5_1633049263_7305.png
 

3) 레이블 객체를 다음과 같이 설정한다.

8e6e1d3b3348f0e6b60782ebc2788cd5_1633049269_4214.png
8e6e1d3b3348f0e6b60782ebc2788cd5_1633049269_4919.png
8e6e1d3b3348f0e6b60782ebc2788cd5_1633049269_5389.png
8e6e1d3b3348f0e6b60782ebc2788cd5_1633049269_5934.png
 

4) 페이지를 하나 생성하고 아래와 같이 꾸민다.

8e6e1d3b3348f0e6b60782ebc2788cd5_1633049276_3714.png
 

5) 생성한 페이지의 스크립트를 아래와 같이 수정한다.

(label_1, label_2, label_3는 각기 Name, Message, DateTime 옆에 위치한 레이블 객체의 이름이다. 따로 이름을 설정하였다면, 설정한 이름으로 수정한다.)

8e6e1d3b3348f0e6b60782ebc2788cd5_1633049282_5422.png
 

6) 경보를 생성한다.

8e6e1d3b3348f0e6b60782ebc2788cd5_1633049293_6574.png
8e6e1d3b3348f0e6b60782ebc2788cd5_1633049293_7108.png
8e6e1d3b3348f0e6b60782ebc2788cd5_1633049293_7579.png
8e6e1d3b3348f0e6b60782ebc2788cd5_1633049293_8004.png
8e6e1d3b3348f0e6b60782ebc2788cd5_1633049293_8429.png
 

7) 생성한 경보에 모니터링 태그를 설정한다.

8e6e1d3b3348f0e6b60782ebc2788cd5_1633049303_1132.png
8e6e1d3b3348f0e6b60782ebc2788cd5_1633049303_1699.png
 

8) 페이지 동작을 설정한다.

8e6e1d3b3348f0e6b60782ebc2788cd5_1633049310_2023.png
8e6e1d3b3348f0e6b60782ebc2788cd5_1633049310_248.png
 

9) 확인을 눌러 경보 설정을 저장한다.

8e6e1d3b3348f0e6b60782ebc2788cd5_1633049318_5506.png
 

10)  page_1의 스크립트를 아래와 같이 설정한다.

8e6e1d3b3348f0e6b60782ebc2788cd5_1633049323_9695.png
 

11) 실행이나 F5 버튼을 눌러 뷰어를 실행한다.

8e6e1d3b3348f0e6b60782ebc2788cd5_1633049329_6995.png
 

12) 레이블 객체를 클릭하여 알람을 발생시킬 수 있다.

8e6e1d3b3348f0e6b60782ebc2788cd5_1633049335_5824.png
8e6e1d3b3348f0e6b60782ebc2788cd5_1633049335_6313.png
 



2. 스크립트 코드 해석

1) page_1 페이지

① addEventListener 호출

$XT("digital_1").addEventListener("change", monitoring_onChange);

digital_1 태그의 태그값 변화 이벤트 때 monitoring_onChange 함수를 호출한다.


② monitoring_onChange 메소드


function monitoring_onChange(event)

{

var tag = event.target;

var alarm = $XA("alarm");

console.log(alarm.name);

console.log(alarm.message);

console.log(alarm.lastModified.toString());

console.log(alarm.level);

console.log(alarm.zone);

console.log(alarm.enabled);

console.log(alarm.status);

console.log(alarm.acknowledged);

console.log(alarm.statusTag);

console.log(alarm.sound);

console.log(alarm.soundLooping);

console.log(alarm.page);

}



(1) var tag = event.target;

이벤트가 발생된 태그를 tag 변수에 저장한다.

· 페이지 콘솔 창 결과: -


(2) var alarm = scada.alarms.getByName(tag.name.split('_')[0] + "_alarm");

이름이 (태그 이름의 첫 부분)_alarm 인 경보(ex stirng_alarm)를 alarm 변수에 저장한다.

· 페이지 콘솔 창 결과: -


(3) console.log(alarm.name);

경보 이름을 출력한다.

· 페이지 콘솔 창 결과: “alarm”


(4) console.log(alarm.message);

경보 메시지를 출력한다..

· 페이지 콘솔 창 결과: “Alarm msg”


(5) console.log(alarm.lastModified.toString());

경보의 마지막 변경 시간을 출력한다..

· 페이지 콘솔 창 결과: "Tue Sep 28 2021 13:34:21 GMT+0900 (대한민국 표준시)" (Date 객체)


(6) console.log(alarm.level);

경보의 등급을 출력한다.

· 페이지 콘솔 창 결과: 1


(7) console.log(alarm.zone);

경보의 지역을 출력한다.

· 페이지 콘솔 창 결과: "A"


(8) console.log(alarm.enabled);

경보의 사용 여부를 출력한다.

· 페이지 콘솔 창 결과: true


(9) console.log(alarm.status);

경보의 상태를 출력한다.

· 페이지 콘솔 창 결과: true


(10)  console.log(alarm.acknowledged);

경보의 인식 여부를 출력한다.

· 페이지 콘솔 창 결과: false


(11)  console.log(alarm.statusTag);

경보 상태를 모니터링하는 태그를 출력한다.

· 페이지 콘솔 창 결과: Object {type, value, rawValue, inverted, …} (디지털 태그 객체)


(12) console.log(alarm.sound);

경보가 재생할 소리 파일 이름을 출력한다..

· 페이지 콘솔 창 결과: “”


(13) console.log(alarm.soundLooping);

경보의 소리 반복 재생 여부를 출력한다.

· 페이지 콘솔 창 결과: true


(14) console.log(alarm.page);

경보가 울렸을 때 열 페이지 이름을 출력한다.

· 페이지 콘솔 창 결과: “page_2”


2) page_2

① 레이블 텍스트 설정 부분

(1) var param = scada.getURLParam();

현재 창의 URL 매개변수를 가져온다.

· 페이지 콘솔 창 결과: -


(2) var alarm = $XA(param['_alarm']);

URL 매개변수에 담긴 이름과 일치하는 알람을 스카다 알람 목록에서 가져온다.

· 페이지 콘솔 창 결과: -


(3) $XV("label_1").text = alarm.name;

label_1 객체의 텍스트를 알람 이름으로 설정한다.

· 페이지 콘솔 창 결과: -


(4) $XV("label_2").text = alarm.message;

label_2 객체의 텍스트를 알람 메세지로 설정한다.

· 페이지 콘솔 창 결과: -


(1) $XV("label_3").text = alarm.lastModified.toISOString();

label_3 객체의 텍스트를 알람의 마지막 변경 시간(ISO 형식)으로 설정한다.

· 페이지 콘솔 창 결과: -


0 Reply Comment
Title