[SCADA][스크립트]태그값을 다른 태그에 저장하는 방법 예제

안녕하세요.
CIMON 입니다.

스크립트를 이용하여 A 태그값을 B태그에 저장하는 방법에 대한 예제입니다.

[이럴 때 사용하시면 됩니다]
이 예제는 태그값을 SCADA 내에서 다른 태그에 저장하여 응용하고 싶을 때 사용하시면 됩니다.

[프로젝트 예제 작성 버전 및 주의사항]
SCADA Ver 2.10(R100618), SCADA Ver 3.04(R160224)
v3.04에서 작성된 프로젝트는 하위버전에서 열리지 않습니다.
v2.10을 받으셔서 프로젝트 업그레이드를 하시기 바랍니다.
명령어와 함수를 작성할 때, 데이터형식을 확인해주세요.

[예제 설명]
SetTagVal “태그명”, [지정값] 명령어와 GetTagVal(“태그명”) 내부함수를 이용하여 A태그값을 B태그에 저장하는 예제입니다.
SetTagVal “태그명B”, GetTagVal(“태그명A”) 형식을 이용하여 태그명A의 태그값을 태그명B에 저장할 수 있습니다. 자주 사용되니 기억해두시면 편리합니다.
이 예제에서는 태그 데이터를 복사하는 방법에 있어서 태그폴더(A)에 들어있는 A~Z(A1~A100)라는 태그값들을 다른 폴더(B)에 있는 A~Z(B1~B100) 태그에 1:1로 태그값을 저장하도록 하였습니다.

1. 데이터베이스에 태그들을 등록합니다.
배열을 사용하여 한 번에 처리하기 위해 A그룹 태그 100개와 B그룹 태그 100개를 번호 순서대로 등록하였습니다. (A그룹 : A1~A100, B그룹 : B1~B100)
쉽게 연속태그를 만드는 방법은 도움말-데이터베이스-엑셀을 이용한 데이터베이스 편집 또는 CSV 파일을 이용한 데이터베이스 편집을 참고하세요.

2. 스크립트를 작성합니다.
SetTagVal “태그명B”, GetTagVal(“태그명A”) 형식을 이용하여 태그명A의 태그값을 태그명B에 저장합니다.

3. 버튼을 이용하여 스크립트를 실행시킬 수 있도록 합니다.

4. CimonX를 실행하고, 데이터베이스 창을 열고 A그룹의 태그값들을 변경합니다. 시작 버튼을 눌러서 B그룹의 태그로 데이터가 저장되었는지 확인합니다.

확인하셨으면, 기존프로젝트의 태그에도 적용해봅시다.

[적용 방법]
기존 프로젝트에 사용하시려면 다음과 같이 작업하시면 됩니다.
예제와 같이 스크립트에 SetTagVal “태그명B”, GetTagVal(“태그명A”) 형식으로 작성합니다.
예제의 100개로 표현된 수를 복사할 태그 개수로 변경합니다.(For문의 숫자도 변경)
“A.A” 위치에 “그룹태그명.태그명” 형식으로 맞춰 써주시면 됩니다.
첨부 1. TagValueCopy-v304.zip
첨부 2. TagValueCopy-v210.zip
감사합니다.
#예제프로젝트#SCADA예제프로젝트#스카다예제프로젝트#SCADA샘플프로젝트#스카다샘플프로젝트#태그값복사#태그복사#데이터복사#태그데이터복사#스크립트예제

[SCADA][스크립트] 생성하고자하는 폴더가 이미 있는지 검사하는 예제

 

안녕하세요.

CIMON 입니다.

스크립트로 원하는 경로에 폴더가 이미 있는지 검사하는 예제입니다.

 

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

SCADA 프로그램 가동 중 탐색기에 접근이 힘든 경우, 스크립트 만으로 SCADA에서 해당 위치에 생성된 폴더가 있나 확인하고 싶을 때 사용하시면 됩니다.

 

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

SCADA Ver 3.04(R160224)

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

 

[ 예제 설명 ]

 

1. 프로그램은 확인하고 싶은 파일의 경로를 입력 받는 “경로” 태그 하나와 입력확인 버튼 하나로 이루어져 있습니다. 모든 동작은 SCH search 스크립트에서 실행됩니다.

 

2. 아래와 같이 원하시는 확인 경로를 적어주시고 입력 확인을 누르시면 입력 확인 버튼의 명령식 RunScript(“SCH”) 가 실행되며 파일을 찾아줍니다. 입력한 경로가 존재하는 경로면 스크립트의 GetAttr 함수가 16을 반환하고 MsgBox로 “폴더가 존재합니다” 라는 메시지를 띄웁니다.

 

3. 입력했던 경로가 존재하지 않는 경로면 16을 반환하지 않고 다른 수를 반환하게 되고 이는 오류로 인식되어 오류 처리 구문으로 넘어가 메시지 박스로 “폴더가 없습니다”를 띄우게 됩니다.

 

4. 입력확인 버튼을 누르면 실행되는 SCH 스크립트는 다음과 같습니다.

 

 

[ 적용 방법 ]
폴더가 이미 있는지 검사하고 나서 하위 폴더를 만들거나 해당 폴더에 파일을 만들면 됩니다. 이와 관련한 스크립트는 다운로드 센터에서 [SCADA][스크립트] CimonX를 통한 파일 관리 예제 프로젝트 를 참조하시면 됩니다.

[SCADA][스크립트] CimonX를 통한 파일 관리 예제 프로젝트

 

Mkdir 함수와 FileCopy 명령어를 통해 SCADA에서 폴더를 확인 후 존재하지 않는 경로면 디렉토리를 생성 후 파일을 생성하도록 스크립트를 작성할 수 있습니다.

Mkdir 함수와 FileCopy 명령어는 아래와 같이 사용하실 수 있습니다.
delFilePath$ = GetTagVal(“DELFILEPATH”) ‘지정한 파일 경로를 delFilePath 문자열에 대입합니다.
MoveFilePath$ = GetTagVal(“MOVEFILEPATH”) ‘지정한 파일 경로를 MoveFilePath 문자열에 대입합니다.
BackupFile$ = GetTagVal(“BACKUPFILE”) ‘지정한 파일 경로를 BackupFile 문자열에 대입합니다.

Dim FileName$() ‘FileName 문자열 배열을 선언합니다.
FileList FileName$, delFilePath$+BackupFile$+”.*” ‘FileName 문자열 배열에 삭제 경로의 지정한 백업파일.형식 을 저장해줍니다.

If ( FileExists(MoveFilePath$) = 0 ) Then ‘GetAttr가 16을 반환하는 지와 같은 기능을 합니다.(경로가 존재하는지)
MkDir MoveFilePath$ ‘그 디렉토리를 만들어줍니다.
End If

i% = 0 ‘정수형 변수 i = 0 를 선언합니다.
While ( FileName$(i) <> “” ) ‘FileName 문자열 배열이 EMPTY가 아닐 때까지

FileCopy delFilePath$+FileName$(i%), MoveFilePath$+FileName$(i%) ‘삭제 디렉토리의 파일을 옮기고자 하는 디렉토리에 복사해줍니다.
Kill delFilePath$+FileName$(i%) ‘옮기고 난 후 삭제 디렉토리의 파일은 삭제합니다.
i% = i%+1 ‘한 루프를 돌고 i를 증가시켜 다음 FileName 문자열에 접근합니다.
또한 리스트박스와 wcInsertItem을 사용하여 해당 폴더의 파일들을 나타내줄 수도 있습니다.
첨부 1. FolderSCH.zip
#경로검사#폴더검사#파일검사#SCADA폴더#SCADA경로#SCADA검사#프로젝트예제#샘플프로젝트#SCADA프로젝트예제#SCADA샘플프로젝트#SCADA스크립트사용예제#SCADA스크립트사용방법#SCADA스크립트사용샘플#SCADA스크립트

[SCADA][스크립트]자동으로 화면 전환하는 스크립트 작성 방법 예제

안녕하세요.
CIMON 입니다.

자동으로 화면 전환하는 스크립트 작성하는 방법에 대한 예제입니다.

[이럴 때 사용하시면 됩니다]
이 예제는 일정시간에 따라 자동으로 화면을 전환시키고 싶을 때 사용하시면 됩니다. 화면보호기, 광고판과 같이 만들 수 있습니다.

[프로젝트 예제 작성 버전 및 주의사항]
SCADA Ver 2.10(R100618), SCADA Ver 3.04(R160224)
v3.04에서 작성된 프로젝트는 하위버전에서 열리지 않습니다.
v2.10을 받으셔서 프로젝트 업그레이드를 하시기 바랍니다.

[예제 설명]
스크립트 내 While ~ Wend 명령어 구문을 이용하여, 동작이 무한 반복되게 합니다. StopScript() 명령어를 이용하여, 중지할 수 있습니다.
ReplacePage “닫을페이지”, “열페이지” 명령어를 이용하여, “닫을페이지”를 닫고, “열페이지”를 엽니다. 화면전환명령어에서 페이지화면은 열려있는 페이지 “닫을페이지”의 크기와 위치로 고정됩니다.
(CimonD에서 “열페이지”의 위치와 크기를 맞추지 않더라도 닫을페이지 위치와 크기에 맞춰 페이지가 열립니다.)

1. 스크립트를 실행할 MAIN 페이지를 작성합니다.
다음과 같이 RunScript()와 StopScript()를 시작, 중지 버튼을 이용하여 자동전환동작을 제어하겠습니다.
스크립트 이름을 기억하세요.

2. 전환될 화면들을 작화하고, 페이지이름 정하여 저장합니다.

이 예제에서는 각 페이지이름을 PAGE 1, PAGE 2, PAGE 3, PAGE 4로 정하였습니다.
위와 같이 도구-페이지 환경설정에서 페이지 위치와 크기를 달리하여 적용하고 저장하였더라도 ReplacePage “Page 1“, “Page 2“ 페이지전환명령어는 닫을 페이지(Page 1)의 위치와 크기가 고정되어 전환됩니다.
예제를 통해 확인하시기 바랍니다.

3. 자동전환 스크립트를 작성합니다.
4번 페이지를 닫고, 1번 페이지를 여는 것으로 시작하여 순서대로 페이지가 전환됩니다.
동작이 처음 실행될 때, 4번 페이지가 없으므로, 1번 페이지는 1번 페이지의 크기와 위치로 화면이 열리게 됩니다.
1번 페이지가 나타나고 5초 후  2번 페이지로 전환됩니다. 2번 페이지는 1번 페이지의 위치와 크기에 맞춰 열리게 됩니다.

4. CimonX를 실행하고, 시작 버튼을 눌러서 자동으로 화면이 전환되는지 확인합니다.

다 확인하셨으면, Sleep()의 시간을 변경해서도 해보시고, 도구-페이지환경설정으로 Page 1의 위치와 크기를 변경하여, 화면이 나오는 위치와 크기도 변경해보시기 바랍니다.

[적용 방법]
기존 프로젝트에 사용하시려면 다음과 같이 작업하시면 됩니다.
예제와 같이 스크립트를 작성하시고 실행시켜주시면 됩니다. 버튼이나 오브젝트 터치 등 다양한 방법이 가능합니다.
전환하고 싶은 화면들을 예제의 스크립트의 ReplacePage “닫을페이지”, “열페이지” 대신에 넣어주면 자동으로 전환되는 페이지 화면을 구성할 수 있습니다.

첨부 1. ReplacePage-v304.zip
첨부 2. ReplacePage-v210.zip
감사합니다.
#화면전환#스크립트#화면전환스크립트#예제프로젝트#SCADA예제프로젝트#스카다예제프로젝트#SCADA샘플프로젝트#스카다샘플프로젝트#스크립트예제