연산식(Expression) 활용
※ 샘플에 사용된 CHG 연산식은 X-SCADA AI 최신 버전에서 사용가능합니다.
X-SCADA AI의 연산식(Expression) 기능을 활용하여 실제 디바이스 장치의 태그 값을 연산 및 가공하여 응용할 수 있습니다.
가상 태그의 연산식 설정에서 다른 태그를 참조하여 구현할 수 있습니다.
연산식을 활용하면 스크립트를 몰라도 간단한 사칙연산부터 Math 함수와 다양한 연산자들을 활용해 데이터를 통계적으로 계산 및 처리할 수 있습니다.
1. 연산식에 활용할 태그 추가하기
1) 연산식에 활용할 여러 태그들을 추가한다.
2) 연산식을 설정할 태그를 선택한 뒤 속성(Properties) > 연산식(Expression)을 설정한다.
· 다른 태그를 참조할 때는 #{태그명}을 사용 (자기 자신은 참조 불가능)
· 연산식에 Math 함수나 산술 연산자, 관계 연산자, CHG 연산식 등 사용 가능
● X-SCADA 활용 연산식
함수 |
내용 |
예시 |
CHG(태그명) |
· 태그 값이 변경(Change)되었는지 확인 · 반환값 : 디지털 형식 (true(값 변경 O)/false(값 변경 X)) |
CHG(analog_1) == true ? true : false |
DST(실태그명) |
· 장치에서 값을 읽었는지(받았는지) 확인 · 반환값 : 디지털 형식 (true(값 읽기 X)/false(값 읽기 O)) |
DST(analog_1) DST(digital_1) DST(string_1) |
DVL(실태그명) |
· 장치에서 값을 읽은 여부와 관계없이 태그값 반환 |
DVL(analog_1) DVL(digital_1) DVL(string_1) |
DVL(실태그명, XX) |
· 장치에서 값을 읽은 경우 태그값 반환, 읽지 못한 경우 XX 반환 ※ XX는 태그값 타입(종류)과 일치해야 함 |
DVL(analog_1, 100) DVL(digital_1, false) DVL(string_1, "Fail") |
DVL(실태그명, XX, YY) | · 장치에서 값을 읽은 경우 YY 반환, 읽지 못한 경우 XX 반환 · "DST(실태그명) ? XX : YY" 와 동일 ※ XX, YY는 태그값 타입(종류)과 일치해야 함 | DVL(analog_1, 100, 200) DVL(analog_1, false, true) DVL(digital_1, "disconnected", "connected") |
● Math 함수
함수 |
내용 |
예시 |
예시결과 |
Math.random() |
0 ~ 1 사이의 난수값 |
var a = Math.random |
0.7564 ···. |
Math.PI |
원주율 |
var a = Math.PI |
3.14159265 ···. |
Math.E |
자연상수 |
var a = Math.E |
2.718281828 |
Math.pow(x,y) |
x의 y제곱 |
var a = Math.pow(2,2) |
4 |
Math.sqrt(x) |
제곱근 |
var a = Math.sqrt(9) |
3 |
Math.exp(x) |
거듭제곱 |
var a = exp(2) |
7.389056098 |
Math.log(x) |
자연로그 |
var a = Math.log(10) |
2.302585092 |
Math.log10(x) |
상용로그 |
var a = Math.log10(10) |
1 |
Math.sin(x) |
싸인 |
var a = Math.sin(10.0) |
- 0.5440211108 |
Math.cos(x) |
코싸인 |
var a = Math.cos(10.0) |
- 0.8390715290 |
Math.tan(x) |
탄젠트 |
var a = Math.tan(10.0) |
0.6483608274 |
Math.min(x,y,...) |
인자 중 최소값 |
var a = Math.max(1,8,4) |
8 |
Math.max(x,y,...) |
인자 중 최대값 |
var a = Math.min(1,8,4) |
1 |
Math.round(x) |
가까운 값 |
var a = Math.round(7.7) |
8 |
Math.abs(x) |
무조건 절대 값 |
var a = Math.abs(-7.7) |
7.7 |
Math.ceil(x) |
무조건 올림 값 |
var a = Math.ceil(7.7) |
8 |
Math.floor(x) |
무조건 내림 값 |
var a = Math.floor(7.7) |
7 |
● 연산자
구분 |
연산자 |
내용 |
산술연산자 |
+ |
더하기 |
산술연산자 |
- |
빼기 |
산술연산자 |
* |
곱하기 |
산술연산자 |
/ |
나누기 |
산술연산자 |
% |
나누기(나머지) |
관계연산자 |
a == b |
a와 b의 값이 같음 |
관계연산자 |
a != b |
a와 b의 값이 같지않음 |
관계연산자 |
a < b |
a가 b보다 작음 |
관계연산자 |
a <= b |
a가 b보다 작거나 같음 |
관계연산자 |
a > b |
a가 b보다 큼 |
관계연산자 |
a >= b |
a가 b보다 크거나 같음 |
2. X-SCADA AI Designer를 활용해 화면 작화하기
1) 텍스트(Text), 이미지(Image) 등을 활용해 아래와 같이 화면을 작화한다.
2) 바인딩 태그(Binding Tag), 동작(Actions) > 클릭 – 태그값 설정(Click – Tag Value) 등을 설정하여 태그 값을 모니터링 및 제어하도록 설정한다.
· 자세한 설정은 첨부한 프로젝트 파일(.xix)을 다운로드 받아 X-SCADA AI Designer로 열면 확인 가능
3. X-SCADA AI Viewer로 연산식 동작 확인하기
1) 설정한 프로젝트 저장 후 X-SCADA AI Viewer로 실행하여 연산식이 의도한대로 동작하는지 확인한다.