[SCADA][스크립트] 장비의 누적가동 시간 기록 예제

안녕하세요.

CIMON 입니다.

스크립트를 이용하여 지정 태그의 ON 시간을 누적출력하는 예제입니다.

 

[ 이럴 사용하시면 됩니다 ]

장비의 하루동안의 총 가동시간을 알고싶을 때 사용하시면 됩니다.

 

[ 프로젝트 예제 작성 버전 주의사항 ]

SCADA Ver 2.14(R141022)

SCADA Ver 3.04(R160224)

v3.04에서 작성된 프로젝트는 하위버전에서 열리지 않습니다.

 

[ 예제 설명 ]

1 UI의 구성은 간단합니다.

ON/OFF 버튼을 누르면 태그 A가 토글이 되어 ON 상태일 때 가동시간이 카운트 되고 OFF 상태일 때는 가동시간이 카운트 되지 않습니다.

ON/OFF 버튼을 눌러 ON시키면 위와 같이 시작시간이 표시되고 누적가동시간, 누적가동 둘 다 카운트됩니다.

누적가동에는 누적가동시간이 분정보로 치환된 값이 나타납니다.

가동하고나서 9분이 지났을 때입니다. 위와같이 누적가동시간에는 시,분,초 정보가 나타나고 누적가동에는 분 단위가 표현됩니다.

다시 ON/OFF 버튼을 눌러 태그 A를 OFF 시키면 종료시각이 표시되면서 누적가동시간이 카운트되지 않습니다.

하루가 지나고 다음날에 장비를 가동시켜도 누적가동시간 정보는 태그에 남아있습니다.

지난 누적가동시간 정보부터 가동시간이 더해집니다.

이 기능은 태그의 최종상태 저장 기능을 사용하면 됩니다. 프로그램이 종료되어도 태그의 값은 휘발되지 않고 남아있어 장비의 가동시간을 누적으로 표현할 수 있습니다.

태그 설정에서 종료시 최종 상태 저장 기능을 선택하면 해당 기능을 사용할 수 있으십니다.

해당 프로젝트의 스크립트입니다.

 

[ 적용 방법 ]

 

장비의 ON/OFF 상태를 판별하는 디지털 태그를 태그 A 위치에서 써주시면 됩니다.

또는 경보 상태를 판별하는 디지털 태그를 사용하여 경보 작동하고 난 뒤 초과시간을 기록할 수 있습니다.

 

 

첨부 1. 누적가동시간예제v2.14.zip

첨부 2. 누적가동시간예제v3.04.zip

 

#가동시간#누적가동시간#누적시간#최종상태#태그상태저장#누적가동시간저장#프로젝트예제#샘플프로젝트#SCADA프로젝트예제#SCADA샘플프로젝트#SCADA스크립트사용예제#SCADA스크립트사용방법#SCADA스크립트사용샘플#SCADA스크립트

[XPANEL][기능] 사용자 로그인/로그아웃 이력을 CSV로 출력하는 샘플

안녕하세요.

CIMON 입니다.

Xpanel에서 사용자 로그인/로그아웃 LOG를 CSV 파일 형태로 출력하는 샘플입니다.

 

[ 이럴 사용하시면 됩니다 ]

몇 시 몇 분 몇 초에 누가 접속했고 누가 로그아웃 했는지의 이력을 CSV 파일로 저장하는 샘플입니다.

 

[ 프로젝트 예제 작성 버전 주의사항 ]

XpanelDesigner v2.52

XpanelDesigner v2.52 미만의 버전은 열리지 않습니다.

 

[ 예제 설명 ]

Xpanel의 Main 화면을 꾸며줍니다.

간단하게 기능을 구현하기 위해 LogIn, LogOut, 이력 저장 버튼 세 개만 만들었습니다.

먼저 경보 설정을 해줍니다.

경보로 설정하는 이유는 AlarmCsvWr 함수를 이용하기 위해서입니다.

이 AlarmCsvWr 함수는 경보 이력을 원하는 위치에 지정한 이름의 CSV 파일로 저장해줍니다.

경보 설정에서는 간단하게 DIG01 하나만 가지고 경보 상태를 판별합니다.

DIG01 태그가 ON일 때 경보 내용을 Admin 계정이 LogIn하였습니다 를 경보 내용으로 설정하고, 태그가 OFF일 때 경보 내용을 Admin 계정이 LogOut 하였습니다 를 경보 내용으로 설정해줍니다.

이 경보 내용이 중요한 이유는 나중에 CSV 파일로 기록될 때 경보내용 또한 주석으로 각 경보 이력에 달리기 때문입니다.

경보를 설정한 뒤 사용자 보안에서 계정을 생성해줍니다.

이 예제에서는 간단히 ID를 Admin으로, 암호를 1로 설정해놓았습니다.

이전에 경보용으로 설정한 태그를 로그인할 때 1로 쓰고 로그아웃할 때 0으로 꺼줍니다.

이 동작으로 인해 경보가 Set/Reset 되고 경보이력에 로그인, 로그아웃 이력이 남게 됩니다.

여기까지 설정이 끝나면 실제 메인에서의 버튼 동작을 설정합니다.

먼저 LogIn 버튼의 동작입니다.

간단히 LogOnWin() 함수를 사용하면 로그온 기능을 동작시키는 버튼을 만들 수 있습니다.

LogOnWin() 함수는 위의 그림처럼 로그온 박스를 띄워줍니다.

사용자 보안에 등록된 아이디가 다수일 경우 User ID 란에서 해당 ID를 선택하고 Password를 키패드를 통해 입력하면 로그온 동작을 실행시킴과 동시에 로그온이 됩니다.

반대로 로그아웃 버튼의 설정입니다.

로그온과 마찬가지로 간단하게 LogOff() 함수 하나만 써주면 됩니다.

LogOff()는 로그인된 사용자를 로그아웃 시켜줍니다.

만약 로그아웃 동작이 설정되어있으면 그 동작을 실행시킵니다.

이 예제에서는 다른 설정이 없어 로그아웃 버튼을 눌러도 아무런 변화가 없지만 LogOff시 “로그아웃 되었습니다” 를 띄우는 팝업창을 만들어 사용자에게 알림을 줄 수도 있습니다.

마지막으로 LogIn/LogOut 이력 저장 버튼입니다.

이 버튼은 위의 LogIn 이나 LogOut 버튼보다 복잡합니다.

이와 같이 설정을 하면 경보 이력을 Csv 파일로 저장합니다.

간단히 설명을 하면 AlarmCsvWr(경보그룹,Csv파일이름,날짜시간표시형태,출력옵션,Csv저장위치) 이렇게 설정을 하면 됩니다.

자세한 설명은 적용 방법에서 설명드리겠습니다.

 

 

[ 적용 방법 ]

 

먼저 다수의 사용자가 있을 때, 그룹을 달리하거나 한 그룹 내에서 사용자 추가할 시 경보 내용에 각 사용자의 구분 내용을 추가해 어떤 사용자가 로그인/로그아웃 했는지 알 수 있습니다.

위와 같이 Admin2를 추가하였으면 로그온/로그오프 시 동작하는 또 다른 DIG02 태그를 만들고

각 태그의 경보내용을 위와 같이 설정하면 AlarmCsvWr 함수에서 경보내용을 이력으로 남겨 어떤 사용자가 몇 시에 로그인/로그오프 하였는지 알 수 있게 됩니다.

AlarmCsvWr 함수는 위에서 설명했듯이 AlarmCsvWr(경보그룹번호,CVS파일이름,날짜시간표시형태,CVS기록내용,CSV파일저장위치) 의 형식으로 사용합니다.

각 인자를 자세히 설명드리겠습니다.

경보그룹번호는 경보 설정에서 설정한 경보 그룹의 번호입니다.

이번 예제에서 경보 그룹을 하나만 썼기 때문에 1로 설정하지만 경보 그룹을 5번에 설정하였다면 5를 사용하시면 됩니다.

CSV 파일이름은 CSV 파일 앞에 붙을 문자열입니다. “테스트예제” 이렇게 붙이면 테스트예제.csv 파일이 출력됩니다. 하지만 정말로 테스트예제.csv로 출력되진 않습니다.

세 번째 인자는 csv파일 이름 뒤에 붙을 날짜형식입니다.

0 = YYYY/MM/DD HH:MM:SS

1 = DD/MM/YYYY HH:MM:SS

2 = MM/DD/YYYY HH:MM:SS

3 = MM/DD HH:MM:SS

4 = DD/MM HH:MM/SS

5 = HH:MM:SS

의 형식으로 붙습니다.

만약 세 번째 인자를 5를 선택하고 두 번째 인자를 “테스트예제”로 설정하면 12시45분50초에 저장된 CSV 파일은 테스트예제124550.csv의 파일로 출력됩니다.

네 번째 인자는 CSV 파일 내에 기록할 내용들을 선택하는 란입니다.

위와 같은 형식을 가지는데 둘 이상의 Symbol을 선택할 시 ORING표시( | )를 써서 구분합니다.

예를 들어 경보의 시간과 경보의 값을 나타내고 싶으면 _ALMPRT_TIME_|_ALMPRT_VALUE_ 의 형태를 써서 나타내면 됩니다.

이 표현과 1|4는 같은 표현입니다.

마지막으로 다섯 번째 인자는 저장형식을 구분하는 인자입니다.

위와 같은 형식을 가지는데 0을 사용하면 내부 저장소에, 1을 사용하면 지정한 경로에, 2를 사용하면 USB에 CSV 파일을 저장합니다.

위의 인자들을 상황과 목적에 맞게 사용하시면 됩니다.

첨부 1. LogIn_LogOut-1.zip

#Xpanel#LogIn#LogOut#AlarmCsvWr#CSV#엑셀출력#경보출력#경보이력#프로젝트예제#샘플프로젝트#Xpanel프로젝트예제#Xpanel샘플프로젝트#XpanelDesigner사용예제#XpanelDesigner기능#XpanelDesigner사용샘플#

[Xpanel][기능] 프레임 편집기 사용 예제

안녕하세요.
CIMON 입니다.

Xpanel에서 프레임 편집기를 사용하는 방법에 대한 예제입니다.

[이럴 때 사용하시면 됩니다]
화면을 분할해서 프레임 별로 화면 전환을 시키거나 화면을 열고 싶을 때 사용하시면 됩니다.

[프로젝트 예제 작성 버전 및 주의사항]
Xpanel Ver 2.11(R100520)
Ver 2.11 프로젝트는 하위버전에서 프로젝트가 열리지 않습니다. 상위버전 사용자들은 프로젝트 업그레이드로 사용 하실 수 있습니다.

[예제 설명]
이 예제는 프레임편집기 사용 방법에 대해서 예시를 들어 보여줍니다.
CIMON 카탈로그의 페이지들을 프레임편집기를 이용하여 화면에 프레임 별로 표시되도록 해보겠습니다.

1. 카탈로그 화면으로 들어가는 Intro 페이지를 만듭니다.
Intro로 들어갈 그림을 넣고 페이지를 Intro로 저장합니다.

2. 다음과 같은 프레임을 구성하기 위해 3개의 페이지 사이즈를 정해서 구성해야 합니다.
기본이 될 3개의 페이지를 먼저 구성합니다.

3. 위 그림의 페이지1에 프레임 사이즈를 맞춰 페이지를 작성하고 배경색도 변경하여 저장합니다.
페이지1번 위치는 Main1F1으로 저장하였습니다.

4. 페이지2의 프레임 페이지를 작성합니다. Main2F1으로 저장합니다.

5. 페이지3의 프레임 페이지를 작성합니다. Main3F1으로 저장합니다.

6. 다시 프레임편집기로 돌아가서 프레임 페이지를 작성합니다.
프레임 페이지를 작성하지 않고, 각각 페이지를 불러오는 경우에는 정상적으로 동작하지 않을 수 있습니다.

7. 배경화면 중복 터치로 메인 프레임 화면으로 들어가도록 배경그림을 만듭니다.

8. 배경그림을 도구-배경그림으로 설정하고 페이지 환경 설정에서 배경화면 고정, 중첩 터치 동작 허용으로 설정합니다.

9. 화면에 들어갈 프레임 페이지들의 위치가 정확하게 입력되었으면 프레임 페이지 내 오브젝트, 기능만 변경하여 페이지를 다른 이름으로 저장 합니다.

10. 예제는 Main페이지 1번 프레임에 3개의 버튼을 넣었습니다.
각각의 버튼으로 사용될 오브젝트에 프레임페이지를 열 수 있도록 터치 기능을 넣습니다.

11. Main 페이지 2번 프레임 또한 수정하여 다른 이름으로 저장합니다.


이러한 방법으로 해당 프레임에 들어갈 여러 페이지들을 만들 수 있습니다.

12. 필요한 프레임 페이지들을 다 작성하셨으면, 꼼꼼히 페이지들을 버튼이나 스크립트, 기능들을 이용하여 페이지 전환할 수 있게끔 합니다.
그리고 도구-시뮬레이터 실행 이나 Xpanel 다운로드를 통해서 정상동작하는지 확인합니다.

예제 설명으로 충분하지 않으시다면 도움말-Graphic Page Editor-프레임 편집기를 참고하시기 바랍니다.

 

[적용 방법]
기존 프로젝트에 사용하시려면 다음과 같이 작업하시면 됩니다.
프레임 페이지에 들어갈 기본 페이지들을 크기에 맞춰 저장합니다.
프레임 편집기에서 프레임 구성을 설정하고 프레임 페이지를 만듭니다.
기본 프레임 페이지들을 기준으로 다른 이름으로 저장을 통하여 필요한 프레임 페이지들을 만듭니다.
프레임 페이지들이 전환될 수 있도록 버튼이나 스크립트 기능 등을 이용합니다.
모두 저장한 후 시뮬레이터 실행으로 확인합니다.

 

 

첨부 1. FrameEditorV211.zip

 

감사합니다.

 

 

 

#프레임편집기#XPANEL프레임편집기#XPANEL고정페이지#고정페이지#프로젝트예제#샘플프로젝트#XPANEL프로젝트예제#XPANEL샘플프로젝트#엑스판넬프로젝트예제#엑스판넬샘플프로젝트