• 제품선택
  • 안녕하세요.

    CIMON입니다.

     

    프로젝트를 CimonX에서 실행하였을 때, 다음과 같은 오류 메시지가 나타나는 경우가 있습니다.

    이는 프로젝트 내부의 SQL 파일이 손상되거나 삭제되었을 때 나타나는 오류이며,

    아래 해결 방안을 통하여 정상적으로 프로젝트를 실행할 수 있습니다.

     

    [해결 방법]

    1. 새로운 프로젝트를 동일한 이름으로 다른 경로에 생성합니다.

    2. 새 프로젝트 폴더의 내부에 다음과 같이 기본 파일들이 생성됩니다.

    이 중에서 SQL 파일(ODBC Document)을 복사하여, 기존 프로젝트의 폴더 내부로 붙여넣기 하여 주시기 바랍니다.

     

    언제나 고객을 먼저 생각하는 CIMON이 되겠습니다.

    감사합니다.

     

  • 안녕하세요.

    CIMON입니다.

     

    CIMON-SCADA 설치  후 실행시,

    “오디날(ordinal) 12404 DLL mfc90u.dll에서 찾을 수 없습니다” 또는 “오디날(ordinal) 12404 DLL mfc90.dll에서 찾을 수 없습니다” 메시지가 발생하는 경우가 있습니다.

    이러한 오류의 원인은 다음과 같습니다.

    [오류원인]
    (1)   CIMON-SCADA 설치시 윈도우 시스템상 문제로 mfc 라이브러리가 정상적으로 설치되지 못한 경우
    (2)  Windows 8 또는 Windows 10 OS인 경우, mfc 라이브러리를 수동으로 설치해야 합니다.

     

    이에 대한 해결 방안으로 다음과 같이 진행하여 주시기 바랍니다.


    [해결방법]
    CIMON 홈페이지 또는 설치 CD 를 통하여 설치 파일을 다운로드 받은 경우, 설치 파일 내

    ISSetupPrerequisites 폴더의 {0BE9572E-8558-404f-B0A5-8C347D145655} 경로에 있는 vcredist_X86.exe 파일을 실행하여 주십시오.

    이후, CimonD를 재실행하여 주시기 바랍니다.

     

    언제나 고객을 먼저 생각하는 CIMON이 되겠습니다.

    감사합니다.

     

  • 안녕하세요.

    CIMON입니다.

     

    스크립트 상에서 DateSerial 함수와 DateAdd 함수를 사용하여 전 월의 말일을 출력할 수 있습니다.

    다음의 예제를 참고하여 주시기 바랍니다.

     

    [예제]

    1. 데이터베이스에서 문자열 태그 ‘말일’을 생성합니다.

     

    2. [도구]-[스크립트]에 진입하여 다음과 같이 스크립트를 작성합니다.

    Sub EMonth()

    Dim sDate#

    sDate# = DateSerial(YYYY, M, 1)                                      ‘당 월 1일

    eDate# = DateAdd(“d”, -1, sDate#)                                   ‘당월 1일에 -1일(전 월 말일)

    endDate$ = Format(eDate#, “YYYY 년MM월DD일”)   ‘문자열 변환

    SetTagVal “말일”, endDate$                                               ‘말일 문자열태그에 Write

     End Sub

    =============================

    DateSerial(YYYY, M, D) 함수에는 금월의 1일 날짜를 입력합니다.

    DateAdd 함수의 “d”는 하루 단위를 의미하며, -1은 -1d(일)을 의미합니다.

    sDate#의 시간값에서 -1일 한 값을 endDate에 문자열 형태로 저장합니다.

    아래 그림과 같이 스크립트를 등록합니다.

     

    3. 버튼 오브젝트를 생성한 후, [동작정의]에서 ‘명령식 동작’을 선택하고 ‘RunScript(“EMonth”)’를 입력합니다.

    4. CimonX를 실행 후, 버튼을 클릭하면 문자열 태그에 전월의 말일 날짜가 출력되는 것을 확인할 수 있습니다.

     

    언제나 고객을 먼저 생각하는 CIMON이 되겠습니다.

    감사합니다.

  • 안녕하세요.

    CIMON입니다.

     

    텍스트 파일 생성 시, 최근의 데이터를 최상위에 표시하고자 할 때 다음 예제의 스크립트를 사용할 수 있습니다.

      

    [예제]

    1. [도구]-[스크립트]에 진입하여 다음과 같이 스크립트를 입력합니다.

    Sub TxtFileReadWrite()

    Dim Arr(0 to 32767)                                   ‘배열 선언

     

    UFILENAME$ = “D:\TESTSCADA.txt”

    ‘txt파일위치

     

    If(fileExists(UFILENAME$)=True) then                                  ‘txt파일이 있을 경우

    UFileNum = FreeFile

    Open UFILENAME For Input As UFileNum                            ‘txt 파일 열기

    txtRecordNum% = 0                                                                       ‘txt파일 레코드 초기화

    Do Until EOF(UFileNum)

    txtRecordNum% = txtRecordNum% +1                                      ‘txt파일 레코드 카운터

    Line Input #UFileNum, Arr(txtRecordNum%)                         ‘txt 내용 읽어 Arr 배열에 저장

     

    Loop

    Close UFileNum     ‘txt 파일 닫기

     

    Open UFILENAME For Output As #1                                       ‘txt 파일 열기

    Print #1, Timestr(44)                                                                    ‘YYYY년MM월DD일 hh시mm분ss초로 txt파일에 쓰기

    For i = 1 to txtRecordNum%

    Print #1, Arr(i)                                                                                 ‘Arr 배열에 저장한 데이터 txt 파일에 쓰기

     

    Next i

    Close #1

    Else

    Open UFILENAME For Output As #1                                       ‘파일이 없을 경우 txt 파일 열기

    Print #1, Timestr(44)                                                                     ‘YYYY년MM월DD일 hh시mm분ss초로 txt파일에 쓰기

     

    Close #1  ‘txt 파일 닫기

     

    End If

    End Sub

    =====================================================

    아래의 그림과 같이 스크립트를 등록합니다.

     

    2. 버튼 오브젝트를 생성합니다.

    [버튼정의]-[동작정의]에서 ‘명령식’ 동작을 선택하고 ‘RunScript(“TxtFileReadWrite”)을 입력합니다.

    3. CIMONX 실행 후, 스크립트를 실행하였을 때 경로에 텍스트 파일이 생성된 것을 확인할 수 있습니다.

    스크립트 동작 시 텍스트 파일을 읽고, 먼저 저장된 데이터의 상위에 최근의 데이터를 표시합니다.

     

    언제나 고객을 먼저 생각하는 CIMON이 되겠습니다.

    감사합니다.

  • 안녕하세요.

    CIMON입니다.

     

    사용자 보안 설정 시 ‘로그인 동작’ 기능을 이용하여 각 사용자의 시작 페이지를 다르게 설정할 수 있습니다.

    다음 예시를 참고하여 주시기 바랍니다.

     

    [적용 방법]

    1. [도구]-[사용자 보안]에 진입하여 ‘새 사용자’ 버튼을 누른 후, 두 명의 사용자(A, B)를 등록합니다.

    2. 사용자 ID ‘A’와 ‘B’의 로그인 동작에 Openpage(“페이지 이름”) 명령식을 입력합니다.

    사용자 ID ‘A’와 ‘B’가 로그인했을 때, 각자 “A로그인”, “B로그인”페이지가 실행되도록 합니다.

    3. CimonX를 실행하여 각 사용자 ID로 로그인합니다.

    각 계정으로 로그인 시 시작 페이지가 다르게 나타나는 것을 확인할 수 있습니다.

     

    언제나 고객을 먼저 생각하는 CIMON이 되겠습니다.

    감사합니다.

  • 안녕하세요.

    CIMON입니다.

     

    태그값을 텍스트 파일로 저장하고자 하는 경우, 다음 예제와 같이 스크립트를 작성하여 활용할 수 있습니다.

     

    [적용 방법]

    파일이 저장되는 경로는 C 드라이브 내 ‘TEST’ 폴더입니다.

    1. 데이터베이스에서 아날로그 태그 DATA1, DATA2를 생성합니다.

    2. [도구]-[스크립트]에 진입하여 다음과 같이 스크립트를 작성합니다.

    Sub MakeTextFile1()

     

    Dim StrRecord As String                              ‘text 에 데이터를 저장할 스트링 버퍼

    Const crlf = Chr$(13) + Chr$(10)      ‘줄바꾸기 변수

     

    ‘파일저장 경로

    Path$ = “C:\TEST\”

     

    ‘파일명 저장하기 위한 현재시간 받아오기

    CurTime# = Now()

    YYYY$ = FormatStr(“%04d”, 0, Year(CurTime#))       ‘현재 연도

    Mon$ = FormatStr(“%02d”, 0, MonTh(CurTime#))     ‘현재 월

    DD$ = FormatStr(“%02d”, 0, Day(CurTime#))           ‘현재 일

    HH$ = FormatStr(“%02d”, 0, Hour(CurTime#))         ‘현재 시

    MM$ = FormatStr(“%02d”, 0, Minute(CurTime#))    ‘현재 분

    SS$ = FormatStr(“%02d”, 0, Second(CurTime#))       ‘현재 초

    DateTime$ = YYYY$ & Mon$ & DD$ & HH$ & MM$ & SS$

     

    ‘파일 이름

    FileName$ = Path$ & DateTime$ & “.txt”

    If FileExists(FileName$ ) Then

    Kill FileName$                              ‘파일 이름 똑같은 경우 삭제함

    Sleep(100)

    End If

     

    ‘저장될 데이터 얻어오기

    StrRecord = FormatStr(“%f”, 1, GetTagVal(“DATA1”))+_     ‘Binary 데이터를 스트링 데이터로 변환

    crlf+_                                                                                                                      ‘줄바꾸기

    FormatStr(“%5.2f”, 1, GetTagVal(“DATA2”))

    Open FileName$ For Append Access Read Write Shared As #1

    Print #1, StrRecord

    Close

     

    End Sub

     

    ===============================================

    아래 그림과 같은 형식으로 스크립트를 등록합니다.

     

    3. 버튼 오브젝트를 생성합니다.

    [버튼정의]-[동작정의] 선택 후 ‘명령식’ 동작으로 Runscript(“MakeTextFile1”)을 입력합니다.

    4. CimonX를 실행하여 동작을 확인합니다.

    스크립트 동작 시, ‘C:\TEST\’ 경로 내에 ‘YYYYMMDDhhmmss.txt’의 형식으로 텍스트 파일이 생성됩니다.

    스크립트 구동 시의 DATA1, DATA2 태그값이 파일 내에 저장됩니다.

     

    언제나 고객을 먼저 생각하는 CIMON이 되겠습니다.

    감사합니다.

  • 안녕하세요.

    CIMON입니다.

     

    원격 지원 서비스를 받는 방법은 다음과 같습니다.

     

    1. Cimon 웹사이트에 접속합니다. (www.cimon.co.kr)

     

    2. 원격지원을 받기 위해서는 로그인을 하여야 합니다.

    로그인 절차를 거친 후 상단 메뉴의 [고객지원] – [원격지원]으로 진입합니다.

     

    3. 다음 화면에서 [원격지원 서비스 실행]을 클릭합니다.

     

    4. 아래와 같은 화면이 나타나면 원격지원을 받을 준비가 완료됩니다.

    원격지원을 받을 준비가 완료되면 담당자에게 연락하여 상담을 받으시기 바랍니다.

     

    언제나 고객을 먼저 생각하는 CIMON이 되겠습니다.

    감사합니다.

    다운로드
  • 안녕하세요.

    CIMON입니다.

     

    PulseOn 내부함수를 명령식 또는 스크립트로 사용하면 특정 태그를 ON으로 출력한 후, 일정 시간 후에 다시 OFF 전환할 수 있습니다.

    다음 함수 설명을 참조하여 주시기 바랍니다.

    PulseOn 지정된 태그를 주어진 Pulse 폭만큼 ON 출력한 후, OFF로 전환합니다.
    명령함수 명령식 표기 PulseOn(태그이름”, Pulse폭)
    스크립트 표기 PulseOn태그이름”, Pulse폭
    기능 지정된 태그를 지정한 Pulse 폭 (msec 단위)만큼 Pulse ON 출력합니다.
    사용 예제 “TEST” 태그를 1초동안 ON(1)출력한 뒤 다시 0(OFF)을 출력합니다.

    명령식으로 사용할 때: PulseOn(“TEST”,1000 )

    스크립트 내에서 사용할 때: PulseOn“TEST”,1000

     

    [적용방법]

    1. 데이터베이스에서 디지털 태그 ‘TEST’, ‘TEST1’을 생성합니다.

     

    2. [도구]-[스크립트]를 선택하여 다음과 같이 스크립트를 작성합니다.

    ‘TEST’ 태그가 1일 때 ‘TEST1’ 태그를 1초동안 ON 시킨 후 OFF 시키는 스크립트입니다.

    Sub Pulse()

    A= GetTagval(“TEST”) ‘TEST라는 태그를 A변수로 설정합니다

    if A = 1 then       ‘A 변수   값이 1일 때

    PulseOn “TEST1”, 1000   ‘TEST1 태그를 1초동안 ON시킵니다. (2000으로 했을시 2초)

    end if

    End Sub

    ================================================

    아래와 같이 스크립트를 등록합니다.

    
    

    3. CimonX를 실행하여 동작을 확인합니다.

    TEST 태그의 값이 1일 때 스크립트를 동작시키면, TEST1태그의 값이 1초 동안 ON으로 출력되었다가 다시 OFF로 전환됩니다.

     

    언제나 고객을 먼저 생각하는 CIMON이 되겠습니다.

    감사합니다.

  • 안녕하세요.

    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이 되겠습니다.

    감사합니다.

     

  •  

    안녕하세요.

    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” , Tn

    End Sub

    ===========================

     

    위 스크립트는 다음 그림과 같이 등록합니다.

    4. CimonX를 실행합니다.

    입출력 테이블의 두 번째 행을 선택한 상태에서 스크립트를 실행하면 ANA1 태그에 2 값이 출력됩니다.

     

    언제나 고객을 먼저 생각하는 CIMON이 되겠습니다.

    감사합니다.