안녕하세요.
CIMON 입니다.
스크립트를 이용하여 초단위로 들어온 시간 데이터를 일, 시, 분, 초로 나누는 방법에 대한 예제입니다.
[이럴 때 사용하시면 됩니다]
이 예제는 초단위로 받은 시간 데이터를 일,시,분,초로 표현하고 싶을 때 사용하시면 됩니다.
[프로젝트 예제 작성 버전 및 주의사항]
SCADA Ver 2.10(R100618), SCADA Ver 3.04(R160224)
v3.04에서 작성된 프로젝트는 하위버전에서 열리지 않습니다.
v2.10을 받으셔서 프로젝트 업그레이드를 하시기 바랍니다.
명령어와 함수를 작성할 때, 데이터형식을 확인해주세요.
[예제 설명]
SetTagVal “태그명”, [지정값] 명령어와 GetTagVal(“태그명”) 내부함수를 이용합니다.
Basic Script의 연산명령어 A\B와 A Mod B를 사용합니다.
초 단위 데이터를 60으로 나눠서 분 단위 데이터를 만들고, 다시 60으로 나눠서 시간 단위 데이터로 만들고, 24로 나눠서 일 단위 데이터를 만들어, 나머지를 구해 일, 시, 분, 초로 표현하는 간단한 예제입니다.
1. 데이터베이스에 태그들을 등록합니다.
초 단위로 들어오는 RAW 데이터 태그와 변환하여 표현할 일(DAY), 시(HR), 분(MIN), 초(SEC) 태그를 등록합니다.
초 단위의 RAW 데이터는 2 Word로 가정하여, UINT32 아날로그 태그로 등록하였습니다.
2. 데이터베이스에서 간단히 볼 수도 있지만, 일, 시, 분, 초 각각의 태그 변환하는 것을 볼 수 있도록 작화를 합니다.
초단위 데이터는 RAW 태그값을 표시하고, 각각 태그에 대응되게끔 태그값을 작화합니다.
버튼을 만들어 스크립트를 실행하도록 합니다.
3. 스크립트를 작성합니다.
변수들은 선언해도 되고, 선언하지 않아도 됩니다. (A\B 연산명령어는 기본적으로 Long 자료형으로 처리되기 때문에 변수를 선언하려면 반드시 Long형으로 선언해주세요.)
A\B 명령어는 Basic Script 명령어로 A/B를 하여 몫을 정수값(Long)으로 반환합니다. RawSec 데이터를 60으로 나누어 몫을 RawMin에 저장합니다.
A Mod B 명령어는 A/B를 하여 나머지를 정수값(Long)으로 반환합니다. RawSec 데이터를 60으로 나누고 남은 나머지는 SEC의 태그값에 씁니다.
이 방식으로 초단위 데이터를 일, 시, 분, 초로 표현할 수 있습니다.
4. CimonX를 실행하여, 정상적으로 동작하는지 확인합니다.
Long 자료형은 -2147483648 ~ 2147483647까지의 값을 가지므로, 최대값은 2147483647 초입니다.
[적용 방법]
기존 프로젝트에 사용하시려면 다음과 같이 작업하시면 됩니다.
예제의 스크립트와 데이터베이스를 그대로 복사하셔서 사용하시면 됩니다.
RAW 태그만 기존 프로젝트의 초단위 데이터로 변경해주시면 됩니다.
첨부 1. ConvHrMinSec-v304.zip
첨부 2. ConvHrMinSec-v210.zip
감사합니다.
#스크립트#데이터단위#초단위#초단위스크립트#프로젝트예제#샘플프로젝트#SCADA샘플프로젝트#SCADA스크립트#스카다스크립트#SCRIPT#SCADA SCRIPT#스카다 SCRIPT