• 제품선택
  • Q: 사용자가 원할때만 데이터 수집을 할 수 있나요?

    A: 데이터 수집 기본 기능으로는 CimonX가 실행되는 순간부터 데이터 수집이 되지만 EnableDataLog 함수를 이용하면 가능 합니다.

     

    1. 데이터 수집 모델을 등록 합니다.

    2. 데이터 수집할 태그를 등록하고 디지털 태그 하나를 추가로 등록 합니다. 디지털 태그에는 태그동작을 하나 걸고 RunScript(“main”)을 등록 합니다.

    3. 스크립트를 작성 합니다. EnableDataLog함수 사용방법은 도움말에 나와 있습니다. EnableDataLog “데이터 수집 모델이름”, 1 혹은 EnableDataLog “데이터 수집 모델이름”, 0 입니다. 1일때는 데이터 수집 모델을 실행 시키고, 0일때는 데이터 수집 모델을 정지 시킵니다.

    Main 스크립트를 사용한 이유는 CimonX가 처음 시작 했을 때 D의 태그값의 초기값이 1일 수도 있기 때문에 Main 스크립트를 사용 하였습니다.

    4. CimonX를 처음 실행 했을때의 시스템 상태 화면 입니다.

    Main 스크립트가 돌고 데이터 수집이 Disable된 것을 확인 할 수 있습니다. 그리고 Main 스크립트가 정지 되었습니다. 데이터 수집이 Disable 된 이유는 D 태그의 초기값이 0이기 때문 입니다.

    5. 여기서 D의 태그값을 1로 바꾸고 시스템 상태 화면을 보았습니다.

    Main 스크립트가 돌고 데이터 수집이 Enable 되었습니다. D의 태그값이 1이고 D태그의 태그동작에 RunScript(“Main”)을 사용 하였기에 태그값이 바뀔 때마다 스크립트가 실행 됩니다.

     

    이와 같이 사용자가 원할 때만 EnableDataLog 함수를 이용하여 데이터 수집을 할 수 있습니다.

     

     

  • 안녕하세요,

    CIMON입니다.

     

    HMI에 있어서 감시하거나 제어해야 할 요소들을 “Tag” 또는 “Point”라고 칭합니다.

    하위콘트롤러로서 PLC를 사용하여 HMI와 통신하는 경우 PLC의 Digital접점이나 Analog Point 및 내부메모리접점 중에서

    상위 HMI System에서 감시하거나 제어해야 할 포인트를 계산하시면 필요하신 HMI 모델을 선정하실 수 있습니다.

    물론 향후 설비의 증설이나 확장계획이 있다면, 이 부분까지 고려하여 HMI모델을 선정하셔야합니다.

    일일이 감시/제어포인트를 산정하시기에 애로를 느끼신다면 “PLC의 총사용포인트 X 1.5” 정도로 산정하셔도 크게 무리는 없습니다.

     

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

    감사합니다.

  • 트랜드 오브젝트의 데이터를 엑셀파일로 출력하는 예제 입니다.  

    [예제]   

    ●예제프로젝트 설명 

    Cycle태그(초단위 주기) 설정에 따라 트랜드 오브젝트에 표시된 데이터를 엑셀 파일로 출력하는 예제  

     

    1.       아래와 같이 데이터 수집모델을 생성합니다. 

             수집방법 : 정주기로 수집 

             수집주기 : 1초

     

    2.       데이터베이스에 3개의 태그를 생성

     

    3.       ANA1과 ANA2에 데이터수집 태그로 설정합니다.  

     

    4.       트랜드 오브젝트를 생성하여 아래와 같이 설정합니다. 

             오브젝트 이름 : Trend 

             펜등록 : ANA1, ANA2

     

     

     

    5.       스크립트를 작성

    아래와 같이 스크립트를 작성합니다.

    Sub StatusSave()

     If GetTagVal(“CYCLE”) <> 0 Then

     ‘주기가 0이 아닐경우

               Set ExcelApp = CreateObject(“Excel.Application”)

                          fFormName$ = “D:TESTSCADAReport양식양식.xlsx”

                          ‘양식파일 위치

                          fTodayName$ = “D:TESTSCADAReport출력”+TimeStr(44)+”.xlsx”

                          ‘생성될 파일 위치

                          If (FileExists(fTodayName$) <> True) Then

                          ‘파일이 없을 경우

                                    FileCopy fFormName$ , fTodayName$

                                    ‘양식파일 복사

                          End If

                          Set DayRpt = ExcelApp.Workbooks.Open(fTodayName$)

                          ‘Excel Workbook Open

                          Set Sheet1 = DayRpt.Worksheets(1)

                                    If GetTrendMode(“Trend”) = 1 Then

                                    ‘과거 트랜드 모드일 경우

                                               hsTrendTime& = TrendGetTime(“Trend”, 4)

                                               ‘트랜드 시작시간

                                               heTrendTime& = TrendGetTime(“Trend”, 5)

                                               ‘트랜드 끝시간

                                               hTrendCycleCounter% = ((heTrendTime& – hsTrendTime&) – ((heTrendTime& – hsTrendTime&) Mod GetTagVal(“Cycle”))) / GetTagVal(“Cycle”)

                                               ‘데이터 갯수

                                               For i = 0 to hTrendCycleCounter%

                                                         hTrendTime& = hsTrendTime& + (i * GetTagVal(“Cycle”))

                                                         ‘시각값

                                                         hTrendTimeStr$ = TimeToStr(hTrendTime&, 12) + TimeToStr(hTrendTime, 5)

                                                         ‘시간 값을 YYYY년MM월DD일hh시mm분ss초 변환

                                                         Set Cell = Sheet1.Range(“A”+CSTR(i + 1))

                                                         Cell.Value = hTrendTimeStr$

                                                         Set Cell = Sheet1.Range(“B”+CSTR(i + 1))

                                                         Cell.Value = Dlogval(“ANA1”,hTrendTimeStr$)

                                                         ‘ANA1의 수집데이터를 셀에 출력

                                                         Set Cell = Sheet1.Range(“C”+CSTR(i + 1))

                                                         Cell.Value = Dlogval(“ANA2”,hTrendTimeStr$)

                                                         ‘ANA2의 수집데이터를 셀에 출력

                                               Next i

                                    Else

                                               ‘과거 트랜드 모드일 경우

                                               rsTrendTime& = TrendGetTime(“Trend”, 0)

                                               ‘트랜드 시작시간

                                               reTrendTime& = TrendGetTime(“Trend”, 1)

                                               ‘트랜드 끝시간

                                               rTrendCycleCounter% = ((reTrendTime& – rsTrendTime&) – ((reTrendTime& – rsTrendTime&) Mod GetTagVal(“Cycle”))) / GetTagVal(“Cycle”)

                                               ‘데이터 갯수

                                               For i = 0 to rTrendCycleCounter%

                                                         rTrendTime& = rsTrendTime& + (i * GetTagVal(“Cycle”))

                                                         ‘시각값

                                                         rTrendTimeStr$ = TimeToStr(rTrendTime&, 12) + TimeToStr(rTrendTime&, 5)

                                                         ‘시간 값을 YYYY년MM월DD일hh시mm분ss초 변환

                                                         Set Cell = Sheet1.Range(“A”+CSTR(i + 1))

                                                         Cell.Value = rTrendTimeStr$

                                                         Set Cell = Sheet1.Range(“B”+CSTR(i + 1))

                                                         Cell.Value = Dlogval(“ANA1”,rTrendTimeStr$)

                                                         ‘ANA1의 수집데이터를 셀에 출력

                                                         Set Cell = Sheet1.Range(“C”+CSTR(i + 1))

                                                         Cell.Value = Dlogval(“ANA2”,rTrendTimeStr$)

                                                         ‘ANA2의 수집데이터를 셀에 출력

                                               Next i

                                    End If

                                    Sheet1.Calculate

                          ‘ Sheet1.PrintOut

                          DayRpt.Save

               ExcelApp.Quit

               Set ExcelApp = Empty

     End If

    End Sub

    이후 CIMONX 실행 후 스크립트 동작 시 설정한 주기로 엑셀파일이 생성되는 것을 확인 할 수 있습니다.  

     

    #트랜드#트렌드#Trend#엑셀#excel#엑셀파일#트렌드데이터#트랜드데이터#data

  • CIMON-SCADA월보인 경우는 3개월을 저장하고 있습니다. 따라서 3개월 이전의 값을 유지 하시려면 가상태그를 만들어서 보관한 후 보고서로 출력할 때 사용 하십시오.

     

    [ 예제설명]       

    스크립트에서 TimeStr(51)  함수를 사용해서 현재 월을 가져옵니다.  

    예제는 ANA1 을 실 태그로 두시고, SUM01~SUM12 는 가상태그입니다.  

    보고서에 출력 전 스크립트를 사용해서 RunScript  를 사용 하시면 됩니다.   

     

    [ 적용방법]  

    ‘ SUM01, SUM02 ~ SUM12  까지가 ANA1  태그에 대한 월 적산합이 들어 갑니다.  

     보고서 셀에는 TLogVal(“SUM01~SUM12″,”-1 “, 적산합) 이 아닌 그냥 SUM01, SUM02  처럼 쓰면 됩니다.  

      

    prevMon$ = TimeStr(51) 

    curMon$ = prevMon$ 

    curMon$ = TimeStr(51) 

        if curMon$ <> prevMon$ then               달이 바뀌었는지 체크  

    nSum = TLogVal (“ANA1″,”-1 “,” 적산값“)               ‘ 전월 적산값을 구한다  

           SetTagVal   “SUM”+prevMon$ , nSum                  전월 태그에 값을 밀어 넣는다  

           prevMon$ = curMon$ 

        end if 

    End Sub 

     

  • 안녕하세요.

    CIMON입니다.

     

    명령식과 스크립트는 태그값 쓰기의 표현 형식 및 내부 함수 사용시 표현 형식에서 차이가 있습니다.

     

    [ 예문]  

     

    1.  태그값 쓰기 (  예를 들어 TAG1  TAG2의  값을 넣을 경우 )  

    ex)

    Sub changevlaue()

    vlaue = gettagval(“TAG1”)

    settagval “TAG2”, value

    end sub

     

    2. 내부함수 사용

    내부 함수를 사용시 명령식은 도움말의 내부함수 표현을 그대로 사용하면 됩니다.  하지만 스크립트의 경우 함수를 사용하여 어떤 값을 쓰거나 지령을 내릴 경우 함수에 괄호가 들어가지 않으며,  그 반대로 값을 불러오거나 상태를 받아올 경우 괄호가 들어 갑니다.

    예를 들어 다음 과 같은 경우 차이점이 발생 합니다.

    1) 트렌드 모드 변경 함수를 이용하여 지령을 내릴 경우

     TrendSetPenVal() 의 자세한 내용은 도움말에 연산식 및 명령식에서 확인하실 수 있습니다.

     – 값 종류에 따라 다음과 같은 Pen에 관련된 값이 설정 됩니다.

    0 : Pen의 이름 (설정값을 문자열로 입력합니다.)

    1 : Pen의 주석 (설정값을 문자열로 입력합니다.)

    2 : Pen에 설정된 최소값

    3 : Pen에 설정된 최대값

    4 : Pen의 연결방법 (0:표시없음, 1:선연결, 2:계단형)


    2) 
    트렌드 모드 함수를 이용하여 펜의 상태를 확인하는 경우

    ※ GetTrendMode()의 자세한 내용은 도움말에 연산식 및 명령식에서 확인하실 수 있습니다.

    – 지정된 Trend Object가 RealTime 트렌드인 경우에는 0을, Historical Trend인 경우에는 1을 출력합니다.

    [T I P] 스크립트 함수와 내부함수의 차이점  

    • 스크립트 : Microsoft 사의 Visual Basic 을 기반으로 만들어진 일종의 컴파일러( 컴퓨터가 인식할 수 있는 언어) 를 사용합니다.  여기서 제공되는 함수를 이용하여Cimon 의 데이터를 접근하여 수정할 수 있습니다.
    • 내부함수( 연산식) : Microsoft 사의 Visual Basic 에서 제공하는 라이브러리를 이용하여 Cimon 을 실행할 때 유용한 함수를 직접 만들어서 Cimon 프로그램 내부에서만 이용할 수 있도록 되어진 함수 입니다.  예를 들어 태그동작이나 터치동작 같은 오브젝트 사용시 동작명령어에 사용할 수 있습니다.  이러한 내부함수는 스크립트 내부에서 사용이 가능합니다.

     

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

    감사합니다.

  • 안녕하세요.

    CIMON입니다.

     

    CIMON-SCADA에서는 기본적으로 아날로그 값이 10진수로 표현됩니다.

    XG 5000 내에서는 디바이스 모니터의 데이터 표시 형식이 ‘명령어에 따른 표시’로 기본값 설정 되어 있습니다.

    이 상태에서 CIMON-SCADA로 아날로그 데이터를 읽어올 경우, 태그값이 각각 다르게 표시될 수 있습니다.

    이 값을 동일하게 맞추고자 하실 경우, 다음 방법을 통해 적용하실 수 있습니다.

     

    [적용 방법]

    XG5000 내 [도구] – [옵션]으로 진입합니다.

    모니터 표시 형식을 ‘명령어에 따라서 표시’에서 ’10진수로 표시’로 변경하여 적용 가능합니다.

     

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

    감사합니다.

  • 안녕하세요.

    CIMON입니다.

     

    보고서에서의 1일 평균값은 ‘TLogVal()’ 함수에서 시간 값을 일단위로 사용하는 것으로 구할 수 있습니다.

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

     

    [함수 설명]

     

    TLogVal 지정한 태그의 보고서 데이터 값을 표시합니다.
    함수명 연산식 표기 TLogVal (태그 이름”, “시각값”, “값종류”)
    스크립트 표기 n = TLogVal (태그 이름”, “시각값”, “값종류”)
    기능 태그 이름이 등록된 보고서 데이터에서, 시각값에 해당하는 시간대에 보고서에 기록된 데이터의 값을 값종류에 따라 표시합니다. 이 때, 태그는 보고서용 태그로 지정되어야 합니다.
    시각값 일단위로 데이터를 표시하고자 할 경우, dd의 형식으로 지정합니다. 음수인 경우에는 금일부터 지정된 수만큼 전일을 표시합니다.
    값종류 평균값으로 지정하여 일별/월별/연도별 평균값을 표시합니다.
    사용 예제 예1) 월보 사용 시, ‘POWER’ 태그의 값에 대하여 전일의 평균값을 표시합니다.

    연산식 표기: TLogVal (“POWER”, “-1일”, “평균값”) = n

    스크립트 표기: n = TLogVal (“POWER”, “-1일”, “평균값”)

    예2) 월보 사용 시, ‘POWER’ 태그의 값에 대하여 전월 1일의 평균값을 표시합니다.

    연산식 표기: TLogVal (“POWER”, “-1월 1일”, “평균값”) = n

    스크립트 표기: n = TLogVal (“POWER”, “-1월 1일”, “평균값”)

    ※ TLogVal() 함수의 자세한 사용 방법은 CimonD 내 도움말을 참조하여 주시기 바랍니다.

     

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

    감사합니다.

  • 안녕하세요.

    CIMON입니다.

     

    태그동작 및 태그동작실행 기능을 사용하고자 할 때, 태그값이 변화했을 때에만 지정된 스크립트를 실행할 수 있습니다.

    PLC의 전원이 재부팅되었을 경우, 태그값이 변화한 것이 아니므로 태그값은 동기화되지 않습니다.

    다음은 PLC의 전원이 재부팅되어도 태그값을 자동으로 동기화시킬 수 있도록 구성한 예제입니다.

     

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

     

     

    2. 태그 A의 값이 변경될 때마다 B의 값도 같은 값으로 동기화하기 위해, 태그 A에 ‘태그 동작을 지정함’과 ‘태그값 변경시 태그 동작을 실행함’ 옵션을 선택합니다.

     

    3. [태그 동작] 탭에 B=A를 입력합니다.

    이는 B의 값을 A에 쓰기하는 동작입니다.

     

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

     

    Sub Main()

     

    while 1                                                     ‘ 통신상태 checking

     

    com = commstatus(“디바이스이름”)

     

    if com <> 0 then                                         ‘ 통신이 오프라인이면

     

    Do                                                                ‘ 무조건 반복 루프 실행

     

    com = commstatus(“디바이스이름”)

    sleep(2000)

     

    Loop Until com = 0                                 ‘ 통신이 정상이 될때 까지

     

    AA = Gettagval(“A”)

     

    settagval “B” , AA

    sleep(2000)

     

    end if

    sleep(2000)

    wend

     

    End Sub

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

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

    Commstatus 함수에 대한 설명은 다음을 참고바랍니다.

    Commstatus 지정된 디바이스 또는 스테이션의 통신 상태를 출력합니다.
    수치함수 연산식 표기 Commstatus (디바이스이름”)

    Commstatus (“디바이스이름.스테이션이름”)

    Commstatus (“”)

    스크립트 표기 n = Commstatus (디바이스이름”)

    n = Commstatus (“디바이스이름.스테이션이름”)

    n = Commstatus (“”)

    기능 지정된 디바이스 또는 스테이션의 통신 상태를 출력합니다. 디바이스 이름을 지정하지 않으면 시스템 전체적인 통신 상태를 출력합니다.
    -1 통신이 비활성화된 상태입니다.
    0 통신이 정상적인 상태입니다.
    1 통신이 비정상적인 상태입니다.
    사용 예제 디바이스 이름이 ‘PLC’일 때, 해당 디바이스의 통신 상태를 확인합니다.

    연산식 입력: Commstatus (“PLC”) = n

    스크립트 입력: n = Commstatus (“PLC”)

     

     

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

    감사합니다.

  •  

    Q: 터치PC에서

    복제모드 사용시 전체화면이 나타나지 않습니다.

    A: 터치 PC에서 멀티모니터 설정시 확장모니터 표현 방식이

    2가지가 있습니다.

     

    1. 확장모니터에 그래픽이 가운데 부분만 나오는 경우

    2. 확장모니터에 꽉 차게 나오는 경우

    1번과 2번의 경우를 설정하기 위해서는

    바탕화면 -> 마우스 우클릭 -> Graphics Options ->

    Panel Fit -> Monitor

    에 가셔서

    1. Center Image

    2. Maintain Display Scaling

    으로 설정선택 하시면 됩니다.

     

    ※ 참고

    위의 설정창은 멀티모니터 복제모드에서만

    가능합니다. (확장모드에서는 불가능)

    #터치복제모드 #트렌드함수 #트랜드태그 #트랜드함수 #트랜드태그변경 #Trend태그 #Trend tag #복제모드사용방법 #복제모드에러 #트랜드태그변경방법 #TOUCH복제모드

     

  • 안녕하세요.

    CIMON 입니다.

     

    다국어기능을 이용하여 제품 운전 중에 표시되는 문자열을 미리 지정한 다른 언어로 변경할 수 있습니다.

     

    [사용예제]
    1. XpanelDesigner를 실행하여 데이터베이스로 진입합니다. 다국어 태그로 사용할 아날로그 태그를 생성합니다.
    2. [도구] -> [다국어설정] 으로 이동하여 다음 그림과 같이 설정합니다. 설정할 내용은 다국어태그로 사용할 태그, 사용할 이름 및 글꼴입니다.

     

    3. [도구] -> [문자열] 으로 이동합니다.

    문자열 화면의 아이콘 내용은 다음과 같습니다.

    4. 문자열 그룹추가 아이콘을 눌러 그룹을 추가합니다.

    1) 단일 칼럼 : 칼럼내용을 0번만 지정할 수 있습니다.

    (하나의 언어 사용시)

    2) 다중 칼럼 : 칼럼내용을 16개까지 설정 할 수 있습니다.

    (하나 이상의 언어 사용시)

    상기의 컬럼 번호는 그룹 번호를 의미합니다.

     

    5. 그룹번호를 선택하고 문자열 추가를 클릭하여 특정 값 또는 표시하고자하는 칼럼 내용을 설정합니다.

    같은 문자열에는 같은 의미의 단어를 언어별로 설정합니다.

    값 내용은 1번항목에서 설정한 다국어 태그의 값을 의미합니다.

     

    6. 3번항목에서 칼럼 속성 설정 버튼을 누른 후, 각각의 칼럼에 2번항목에서 설정한 언어의 이름 및 폰트를 적용합니다.

     

    7. [그림] -> [다국어 문자열] 항목을 선택하여 그룹 및 문자열값을 선택합니다.

     

    8. XPANEL실행하였을 시 문자열 태그값에 의하여 다국어 문자열 오브젝트의 표시언어를 설정 할 수 있습니다.

     

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

    감사합니다.

     

    #엑스판넬다국어 #엑스판넬다국어기능 #다국어설정방법 #엑스판넬다국어설정 #엑스판넬다국어설정방법 #Xpanel다국어 #Xpanel다국어기능 #다국어설정방법 #Xpanel다국어설정 #Xpanel다국어설정방법