안녕하세요.
CIMON 입니다.
경보가 울리고 난 후 경과한 시간을 기록하는 예제입니다.
[ 이럴 때 사용하시면 됩니다 ]
하루 사이에 경보 태그가 ON 되어있던 시간을 구하고 싶을 때 활용할 수 있습니다.
[ 프로젝트 예제 작성 버전 및 주의사항 ]
SCADA Ver 3.04(R160224)
v3.04에서 작성된 프로젝트는 하위버전에서 열리지 않습니다.
[ 예제 설명 ]
1. 예제의 UI의 구성은 간단합니다. 시간정보와 경고 정보를 태그값으로 표현해주고 경보 상태에 따라 램프를 점등해주며 터치로 경보를 켜고 끌 수 있습니다.
위와 같인 초록색 부분이 터치 입력을 받으면 경보 태그 ALARM을 Toggle 시켜줍니다.
경보 알람이 ON 되면 경보 태그의 가동 시간이 기록됩니다. 동시에 램프에 불이 들어와 경보를 알립니다.
현재 시간 태그는 TIME을 표현하는데 이 TIME 태그는 스크립트에서 설정됩니다.
작동시간 태그는 TC의 태그값을 표현하는데 TimeCount의 의미를 지닙니다. 이 태그도 마찬가지로 스크립트 상에서 제어됩니다.
알람태그는 터치 동작을 가지고 있고 터치 시에 ALARM 태그를 Toggle 시켜줍니다.
또한 ALARM태그는 경보 태그로 설정이 되어있기 때문에 CimonX에서 이 태그가 1로 ON될 시에 경보 알람 또한 기록됩니다.
스크립트는 위와 같습니다. 시간에 관한 내부함수는 전부 TimeStr로 처리했습니다.
TimeStr의 표현 형식이 65가지나 되기 때문에 모든 시간표현은 TimeStr 내부함수로 구현가능합니다.
또한 이 스크립트에서 중요하게 쓰인 함수는 TimeConvert 함수입니다.
TimeConvert 함수가 경보 태그가 ON 되어있는 동안 올라가는 COUNT 태그의 숫자 정보를 시간형식으로 바꾸어주기 때문입니다.
또한 If 문의 조건인 SecValue <> NowSec을 눈 여겨 보셔야합니다.
아무 의미 없어 보이지만 이 스크립트가 단순한 숫자 카운팅을 시간 정보로 바꾸어주는 역할을 합니다.
SecValue와 NowSec이 다를 때 즉, 이전 while문에서 설정한 SecValue의 값이 현재의 시간 값과 차이가 날 때 조건문을 만족합니다.
이 조건이 없을 때, 많은 초가 지났을 때는 상관없지만 1초가 지나기 전에 경고 태그가 ON 되어있다면 sleep(300)로 인해 1초 사이에 while문은 3번 돌고 counting이 세 번 됩니다.
하지만 SecValue <> NowSec 이 조건에 의해 1초 안에 경고 태그가 ON 되어있어도 시스템 시간으로 1초 지날 때만 가동시간을 1 카운팅 해주게 되는 겁니다.
[ 적용 방법 ]
이 예제에서는 경보 태그를 터치로 입력을 받아 직접 켜고 껐지만 실제 현장에서 사용하실 때는 PLC 장비들과 연결되어 있는 실제 경보 태그와 연동을 하시면 됩니다.
작업자가 없는 사이에 장비가 위험에 노출되면 경보 태그를 ON 시키고 ON 된 시간을 또한 태그를 통해 원격지에 전송, 감시할 수 있습니다.
스크립트는 매일 12시에 가동시간이 리셋되게 되어있는데 이를 바꿔주려면
이처럼 ResetTime 정보를 바꿔주면 됩니다.
#경보시간#시간카운팅#TimeStr#TimeConvert#타이머카운트#경보#경과시간#프로젝트예제#샘플프로젝트#SCADA프로젝트예제#SCADA샘플프로젝트#SCADA스크립트사용예제#SCADA스크립트사용방법#SCADA스크립트사용샘플#SCADA스크립트