-
제품선택
-
안녕하세요.
CIMON입니다.
보고서 기능처럼 엑셀 파일에 데이터를 쓰기 및 출력하고자 할 때, 다음 예제에서 제시되는 스크립트를 통해 기능을 설정할 수 있습니다.
[적용 방법]
1. 데이터 베이스에서 보고서 데이터로 등록할 태그를 생성합니다.
값1, 값2, 값3은 ‘ANA1’, ‘ANA2’, ‘ANA 3’ 태그로 등록합니다.
쓰기 신호는 ‘SIN’ 태그로 등록합니다.
제품코드는 ‘제품코드’ 태그, 제품명은 ‘제품명’ 태그로 등록합니다.
2. 사전에 설정하여야 할 내용은 다음과 같습니다.
*모든 경로는 ‘C:\보고서’입니다. 엑셀 파일을 출력하기 전에 폴더를 만들어 주시거나, 스크립트 내에 입력된 경로들을 동일하게 변경해 주시기 바랍니다.
*보고서 폴더 내에 Test.xls라는 양식 파일이 존재해야 합니다.
*쓰기 신호(‘SIN’ 태그)가 1일 때 보고서 실행을 하면 현재 태그 값이 엑셀에 입력됩니다. 저장 형식은 ‘제품코드-금일 날짜’입니다.
* 제품 코드가 다르거나 날짜가 다를 경우 새로운 파일을 생성하게 됩니다.
* 생성된 파일은 코드 별 날짜 별로 저장이 되기 때문에 금일의 날짜를 기준으로 3일 이전의 파일들은 자동적으로 삭제됩니다.
*엑셀 파일을 출력하고자 할 때, ‘파일 불러오기’ 버튼을 눌러 저장 폴더의 목록을 불러와 파일 선택 후, ‘인쇄’ 버튼을 눌러 출력할 수 있습니다.
3. [도구]-[스크립트]에 진입하여 다음과 같이 메인 스크립트를 작성합니다.
Sub Main()
While 1
SetTagVal”ANA1″,Random(0,100)
SetTagVal”ANA2″,Random(0,100)
SetTagVal”ANA3″,Random(0,100) ‘테스트임으로 각 태그의 값을 랜덤으로 받습니다.
sleep(1000)
Wend
End Sub
===========================================================
아래 그림과 같이 스크립트를 등록합니다.
4. 각 버튼 오브젝트를 다음과 같이 생성합니다.
RUN 버튼을 등록하고, 명령식 동작으로 Runscript(“Scr”)을 입력합니다.
RUN 버튼으로 구동할 스크립트는 다음과 같이 작성합니다.
Sub Scr()
Dim DelFileName(2)
‘신호태그를 불러와 신호 태그가 1이 됐을 경우만 스크립트를 실행한다.
WT = GetTagVal(“SIN”)
Code$ = GetTagVal(“제품코드”)
If WT = 1 Then
‘오늘 부터 3일치 이후의 같은 코드의 파일을 삭제 한다.
For i = 0 to 2
TStr$ = ReportTimeStr(“-” & i+3 & “일”,14)
DelFileName(i) = Left(TStr$,4) & Mid(TStr$,6,2) & Right(TStr$,2)
FileDel$ = “C:\보고서” & Code$ & “-” & DelFileName(i) & “.xls”
If FileExists(FileDel$) Then Kill FileDel$
Next i
‘엑셀파일 경로
FileName$ = “C:\보고서” & Code$ & “-” & TimeStr(50) & TimeStr(51)& TimeStr(52) & “.xls” ‘생성될 파일
FileOld$ = “C:\보고서\Test.xls” ‘양식 파일
If FileExists(FileName$) Then ‘동일한 파일이있면 파일에 계속 쓴다.
Else
FileCopy FileOld$, FileName$ ‘없으면 양식 파일에서 복사해 새로운 파일을 만듬
End If
Set ExcelApp = CreateObject(“Excel.Application”)
Set ExcelFile = ExcelApp.Workbooks.Open(FileName$)
Set ws=ExcelFile.sheets.item(“sheet1”)
‘엑셀 파일에 저장될 행을 불러온다.
Cell_Cnt = ws.range(“A1”).currentregion.rows.count + 1
‘태그들의 값을 가져온다.
Val1% = GetTagVal(“ANA1”)
Val2% = GetTagVal(“ANA2”)
Val3% = GetTagVal(“ANA3”)
‘엑셀 파일에 데이터 쓰기 ‘행, 열
ws.Cells(Cell_Cnt,1) = Cell_Cnt – 3 ‘카운트
ws.Cells(Cell_Cnt,2) = TimeStr(37) ‘시간 출력
ws.Cells(Cell_Cnt,3) = Val1%
ws.Cells(Cell_Cnt,4) = Val2%
ws.Cells(Cell_Cnt,5) = Val3%
ws.Calculate
ExcelFile.Save
ExcelApp.Quit
Set ExcelApp = Empty
End If
End Sub
===============================================
아래 그림과 같이 스크립트를 등록합니다.
5. ‘파일 불러오기’ 버튼을 등록하고, 명령식 동작으로 Runscript(“FileListLoad”)를 입력합니다.
‘파일 불러오기’ 버튼으로 실행할 스크립트는 다음과 같이 작성합니다.
Sub FileListLoad()
On Error Goto Pass
‘ ListBox에 있는 파일 리스트 초기화
wcDeleteAll “List1”
FilePathLoad$ = “C:\보고서”
Dim FileName$()
FileList FileName$, FilePathLoad$+”*.xls”
‘ ListBox에 파일 리스트 추가
i% = 0
While ( FileName$(i) <> “” )
WcInsertItem “List1”, -1, FileName$(i%)
i% = i%+1
Wend
Pass:
End Sub
==========================================
아래 그림과 같이 스크립트를 등록합니다.
6. ‘파일 인쇄’ 버튼을 등록하고, 명령식 동작으로 Runscript(“Scr1”)을 입력합니다.
‘파일 인쇄’ 버튼으로 실행할 스크립트는 다음과 같이 작성합니다.
Sub Scr1()
a$=wcGetData(“List1”,-1)
FileName$ = “C:\보고서” & a$
Set ExcelApp = CreateObject(“Excel.Application”)
Set ExcelFile = ExcelApp.Workbooks.Open(FileName$)
Set ws=ExcelFile.sheets.item(“sheet1”)
ws.PrintOut
ExcelApp.Quit
End Sub
=============================================
아래 그림과 같이 스크립트를 등록합니다.
7. CimonX를 실행한 후 각 버튼을 누를 때 다음과 같이 동작합니다.
쓰기 신호(‘SIN’ 태그)가 1인 상태에서 RUN버튼을 눌렀을 때, TEST.XLS양식 파일을 바탕으로 데이터가 엑셀에 입력되면서 제품코드-금일 날짜 형태의 데이터가 생성됩니다.
제품코드가 CIMON001일 경우, RUN버튼을 누른 후 ‘파일 불러오기’ 버튼을 누르면 CIMON001-20171014 라는 파일이 생성됩니다.
언제나 고객을 먼저 생각하는 CIMON이 되겠습니다.
감사합니다.
-
다음 예제를 참조하시길 바랍니다 .
[설 정]
예제 설정은 다음과 같습니다.
1. 콤보박스 설정은 다음과 같습니다.
2. 데이터베이스 등록 및 보고서 모델 설정
REPORT 태그는 보고서 모델에 등록되어 출력될 태그입니다.
COMBO 태그는 콤보박스에 등록되어 사용될 태그입니다.
RESULT 태그는 스크립트를 통해서 연산식의 결과값을 확인할 수 있는 태그입니다.
3. 엑셀에 찍힌 보고서 데이터
보고서 모델 설정 부분의 보고서 양식 설정 및 등록
위의 설정 및 데이터을 통하여 CimonX 실행 창에서 확인하는 방법을 알아 보도록 하겠습니다.
[방법 1.] 명령창을 이용하는 경우
작업 – 명령창을 클릭하면 아래와 같은 창이 나옵니다.
명령창에 명령식과 연산식 중 아래와 같이 연산식을 클릭한 후 확인하시려는 시점에 대한 보고서의 태그 연산식을 입력하시면 그 시점에 해당하는 값을 확인하실 수 있습니다.
[방법 2.] 스크립트와 콤보박스를 이용하는 경우
1. 콤보 박스 설정
콤보 박스의 설정은 화면설정 창에 설정된 내용을 참고 하시길 바랍니다.
2. 스크립트 등록
Sub MAIN()
WHILE 1
COM = GETTAGVAL(“COMBO”) ‘콤보박스에 들어갈 태그를 변수 등록합니다.
IF COM = 0 THEN ‘콤보박스태그의 위치값이 0일경우
SETTAGVAL “RESULT”,TLogVal(“REPORT”, “-1일1시”, “순간값”)
END IF
IF COM = 1 THEN ‘콤보박스태그의 위치값이 1일경우
SETTAGVAL “RESULT”,TLogVal(“REPORT”, “-1일2시”, “순간값”)
END IF
SLEEP(1000)
WEND
End Sub
3. CimonX 실행
-
안녕하세요.
CIMON입니다.
아래의 방법으로 PLC의 시간을 XPANEL에서 수정할 수 있습니다.
1. DATEWR 명령어를 사용하여 PLC 프로그램을 아래와 같이 작성합니다
2. XPANEL에서 데이터베이스와 UI를 아래와 같이 구성합니다.
요일의 경우 ‘월’ 버튼을 누르면 1, ‘화’ 버튼을 누르면 2를 WEEK 태그에 쓰게 됩니다.
시간을 수정한 후 적용 버튼을 누르면 DATEWR 태그 값이 변경되어 PLC의 시간이 수정됩니다.
[주의사항]
요일 변경 시 해당년도 해당월 해당일에 맞는 요일이 아닐 경우 수정이 불가능합니다
해당 FAQ 설명시 사용된 PLC 프로젝트와 XPANEL 프로젝트 첨부합니다.
언제나 고객을 먼저 생각하는 CIMON이 되겠습니다.
감사합니다.
# PLC 시간 수정
-
안녕하세요.
CIMON입니다.
아래와 같은 방법으로 페이지 전환 속도를 높일 수 있습니다.
[ 해결 방법 ]
1. 배경화면 고정
2. 변경된 오브젝트만 그리기
3. 256색 비트맵 사용
1. 배경화면 고정
페이지에 많은 오브젝트(선, 사각형, 원, 라이브러리 등)을 배치하여 작업한 경우 화면 업데이트가 느려질 수 있습니다. 배경화면 고정 기능을 사용함으로써 오브젝트의 개수를 줄일 수 있으며, 결과적으로 화면의 업데이트 시간이 빨라집니다.
(1) Xpanel Designer에서 배경화면 고정기능을 설정할 페이지를 선택합니다.
(2) [도구] – [페이지 환경 설정]을 선택합니다.
페이지 환경 설정 창에서 [배경화면 고정] 기능을 선택하고 확인 버튼을 선택합니다.
2. 변경된 오브젝트만 그리기
화면 업데이트 시, 그릴 오브젝트의 개수를 줄여 화면 업데이트를 빠르게 합니다.
일반적으로 화면 업데이트 시, 변경된 오브젝트를 검사하여 오브젝트와 겹치는 관계에 있는 오브젝트를 다시 그리게 됩니다. 이 옵션을 선택하면 화면 업데이트 시 다시 그려지는 오브젝트는 그 시점에 변경된 오브젝트로 한정되면서 업데이트 시간이 줄어들게 됩니다.
(1) XpanelDesigner에서 [변경된 오브젝트만 그리기] 기능을 설정할 페이지를 선택합니다.
(2) [도구] – [페이지 환경 설정]을 선택합니다.
(3) [변경된 오브젝트만 그림] 옵션을 선택 후 확인 버튼을 누릅니다.
* [변경된 오브젝트만 그림] 체크 시 유의 사항
(1) [변경된 오브젝트만 그림] 사용 시 변화가 지정된 오브젝트를 겹쳐 놓은 것은 피해야 합니다.
- 변화가 지정된 오브젝트란?
– 출몰, 점멸, 수직 변화, 수직 이동, 수평 이동, 색변화, 회전 기능이 지정된 오브젝트
– 그룹 오브젝트에 변화가 지정된 경우 그룹에 속하는 모든 오브젝트
– 태그값, 날짜, 시각, 문자열 값, 데이터 수집, 경향 감시, 데이터 수집, 경보 요약
위 그림과 같이 색변화가 지정된 3개의 사각형 오브젝트가 배치되어 있는 경우, [변경된 오브젝트만 그림] 옵션을 사용하게 되면 변경된 오브젝트만 그립니다.
마지막에 색이 변경된 오브젝트만 상/하에 관계 없이 제일 위에 있는 것처럼 보여집니다.
(2) 페이지에 수직/수평 이동, 회전이 지정된 오브젝트가 있는 경우 [변경된 오브젝트만 그림] 기능이 동작하지 않습니다.
(3) 오브젝트를 그리기 전에 자신이 그려질 영역을 초기화하게 됩니다. 같은 태그에 의해 출몰이 결정되는 오브젝트가 겹쳐있는 경우, 아래에 있는 오브젝트는 항상 위에 있는 오브젝트 때문에 지워지거나 가려지게 됩니다.
3. 256색 비트맵 사용
256색 비트맵 사용 기능을 통해 페이지 전환 속도를 줄일 수 있습니다. 페이지 파일이 클수록 페이지 파일을 읽어오기 위해 많은 시간이 필요합니다. 이미지를 많이 사용한 페이지의 경우 이미지 정보 때문에 페이지 파일의 크기가 커지게 됩니다. 이러한 경우, 페이지 속성의 [256색 비트맵 사용]을 체크하면 페이지 파일의 크기를 1/2 ~ 1/3 정도까지 줄일 수 있습니다.
(1) XpanelDesigner에서 [256색 비트맵 사용] 기능을 설정할 페이지를 선택합니다.
(2) [도구] – [페이지 환경 설정] 메뉴를 선택합니다.
(3) 페이지 환경 설정창에서 [256색 비트맵 사용] 옵션을 체크하고 확인 버튼을 누릅니다.
언제나 고객을 먼저 생각하는 CIMON이 되겠습니다.
감사합니다.
#페이지 전환 속도
- 다운로드
-
안녕하세요.
CIMON입니다.
wcGridGetPos 내부함수를 이용하면 입출력 테이블에서 선택된 행의 위치를 알 수 있습니다.
[상세설명]
wcGridGetPos 내부함수의 사용방법은 다음과 같습니다.
wcGridGetPos 입출력 테이블 오브젝트의 정보 또는 위치를 알려줍니다. 수치함수 연산식 표기 n=wcGridGetPos(“오브젝트 이름”,Command,행 또는 열) 스크립트 표기 n=wcGridGetPos(“오브젝트 이름”,Command,행 또는 열) 기능 지정된 Command에 따라 “오브젝트 이름” 으로 지정된 입출력 테이블의 행/열 개수, 현재 선택된 셀의 행/열 위치 또는 현재 화면에 나타나는 최상위 행/열의 위치를 알려줍니다. 행을 지정하고자 할 때 0을, 열을 지정하고자 할 때 1을 입력합니다.
행 또는 열 번호는 1 부터 시작합니다.
Command 동작 0 행 또는 열의 개수 1 현재 선택된 행 또는 열의 위치 2 현재 화면에 나타나는 최상위 행 또는 열의 위치 사용 예제 예1) 오브젝트 이름이 “테이블”인 입출력 테이블의 전체 행 개수를 구합니다. wcGridGetData(“테이블”,0,0)=n
예2) 오브젝트 이름이 “테이블”인 입출력 테이블에서 현재 선택된 셀의 열 번호를 구합니다.
wcGridGetData(“테이블”,1,1)=n
[적용 방법]
다음은 입출력 테이블의 셀을 선택했을 때 열의 값을 가져오는 예제입니다.
1. 입출력 테이블을 페이지에 삽입 후, 오브젝트 이름을 ‘GRID’로 입력합니다.
2. 데이터베이스에서 아날로그 태그 ‘ANA1’을 생성합니다.
3. [도구]-[스크립트]에 진입하여 다음과 같이 스크립트를 작성합니다.
Sub RowPosition()
Tn = wcGridGetPos(“GRID”, 1, 1)
SetTagVal “ANA1” , TnEnd Sub
===========================
위 스크립트는 다음 그림과 같이 등록합니다.
4. CimonX를 실행합니다.
입출력 테이블의 두 번째 행을 선택한 상태에서 스크립트를 실행하면 ANA1 태그에 2 값이 출력됩니다.
언제나 고객을 먼저 생각하는 CIMON이 되겠습니다.
감사합니다.
-
안녕하세요, CIMON입니다.
다음은 CIMON-XPANEL 에서 시간을 조건으로 설정하여 페이지를 종료하는 스크립트의 작성방법입니다.
[적용방법]
1) 태그 생성
시간을 입력해줄 아날로그 태그와 페이지 종료 기능을 사용할 디지털 태그를 만듭니다.
2) 스크립트를 다음과 같이 작성합니다.
Gettime 함수를 이용하여 시간을 설정합니다. (**함수값은 하단의 표 참조**)
(1) 시간 태그로 Gettime 함수값을 넣어줍니다.
시간 = Gettime(4);
(2) 시간 태그값이 14시 이고 페이지제어 태그값이 1이면 메인화면 페이지를 닫습니다.
if(시간 == 14 && 페이지제어 == 1)
{
PageClose(“MAIN”);
}
언제나 고객을 먼저 생각하는 CIMON이 되겠습니다.
감사합니다.
-
안녕하세요.
CIMON입니다.
데이터베이스에서 태그 생성 시 ‘보고서용 데이터 생성’ 옵션을 선택 후, 보고서의 ‘태그 등록’ 화면에서 TLogVal 함수를 사용하여 매 시간 순간값을 출력할 수 있습니다.
다음 방법을 참조하여 주시기 바랍니다.
[적용방법]
1. 데이터베이스에서 태그 생성 시, 다음 그림과 같이 ‘보고서용 데이터 생성’ 옵션을 선택합니다.
이 항목이 선택되지 않았을 경우에는 보고서 데이터 수집 및 저장이 되지 않습니다.
2. [도구]-[보고서]에 진입하여 ‘태그 등록’ 버튼을 클릭합니다.
‘보고서 데이터 등록’ 화면에서 다음과 같이 입력합니다.
TLogVal(“ANA1”, “-1일0시”, “순간값”)부터 TLogVal(“ANA1”, “-1일23시”, “순간값”)까지 등록합니다.
24시의 값은 금일의 날짜이므로 TLogVal(“ANA1”, “0시”, “순간값”)으로 등록합니다.
보고서 출력 시간이 0시가 아닐 때 0시~24시의 순간값을 보고서로 출력할 수 있습니다.
언제나 고객을 먼저 생각하는 CIMON이 되겠습니다.
감사합니다.
-
안녕하세요.
CIMON입니다.
[보고서]–[태그등록]에서 ‘프린터로 출력’ 옵션을 선택한 상태일 때 보고서를 프린터로 출력할 수 있습니다.
다음과 같이 설정이 가능합니다.
[적용방법]
1. [도구]-[보고서]를 선택하여 보고서 화면에 진입합니다.
[태그등록] 버튼을 클릭하면 ‘보고서 데이터 등록’ 화면이 표시됩니다.
2. ‘보고서 데이터 등록’ 화면에서 ‘프린터로 출력’ 옵션을 선택합니다.
언제나 고객을 먼저 생각하는 CIMON이 되겠습니다.
감사합니다.
-
안녕하세요.
CIMON입니다.
보고서 출력 시 시스템 상태 창에 ‘OLE 통신 에러’ 메시지가 나타나는 경우가 발생할 수 있습니다.
이는 보고서의 ‘태그 등록’에 설정된 Sheet 이름과, Excel 보고서 양식의 Sheet 이름이 서로 다를 경우 생기는 오류입니다.
동일한 Sheet 이름으로 설정하는 것으로 이러한 오류를 해결할 수 있습니다.
[적용방법]
1. [도구]-[보고서]에 진입한 후 ‘태그 등록’ 버튼을 클릭합니다.
2. ‘보고서 데이터 등록’ 화면에서 ‘이름 변경’ 버튼을 눌러 Sheet 이름을 보고서 양식의 Sheet 이름과 동일하게 입력합니다.
언제나 고객을 먼저 생각하는 CIMON이 되겠습니다.
감사합니다.
-
안녕하세요.
CIMON입니다.
스크립트를 통하여 요일을 숫자로 출력할 수 있습니다.
다음 예제를 참조하여 주시기 바랍니다.
[적용 방법]
1. 데이터베이스에서 아날로그 태그 ‘요일’을 생성합니다.
2. [도구]-[스크립트]에 진입하여 다음과 같이 스크립트를 작성합니다.
* TimeStr 함수를 이용하여 요일 문자열을 aaa변수로 가져옵니다.
If 문으로 비교하여 태그값에 숫자를 저장합니다.
Sub Getdate()
Dim aaa as string ‘aaa를 문자열로 선언
aaa=Timestr(63) ‘월~일 을 aaa로 변수선언
if aaa=”일” then ‘aaa 값이 일 이면 요일 태그에 1값을 저장합니다.
settagval”요일”,1
elseif aaa=”월” then
settagval”요일”,2
elseif aaa=”화” then
settagval”요일”,3
elseif aaa=”수” then
settagval”요일”,4
elseif aaa=”목” then
settagval”요일”,5
elseif aaa=”금” then
settagval”요일”,6
elseif aaa=”토” then
settagval”요일”,7
end if
end sub
===========================================
아래 그림과 같이 스크립트를 등록합니다.
3. 버튼 오브젝트를 생성합니다. [버튼정의]-[동작정의]에서 ‘명령식’ 동작을 선택하고 스크립트 실행 명령식을 입력합니다.
RunScript(“Getdate”)
4. CimonX를 실행합니다.
버튼을 눌러 스크립트를 동작시키면 PC의 시간에 따라 금일의 요일이 숫자로 출력됩니다.
언제나 고객을 먼저 생각하는 CIMON이 되겠습니다.
감사합니다.