• 제품선택
  • 경향감시(트렌드)에서 Y축 범위를 여러 개 표시하는 방법으로는 2가지가 있으며, 내용은 아래와 같습니다.

    1. 왼쪽 눈금자 갯수 설정을 이용한 방법.

    1) 경향감시(트렌드) 오브젝트의 설정에서 눈금자 설정 탭에 있는 왼쪽 눈금자 갯수를 설정합니다.

    2) CimonX를 실행하여 확인합니다.

    2. 경향감시(트렌드) 중 멀티 트렌드를 이용한 방법.

    1) 경향감시(트렌드) 오브젝트 생성 시 트렌드 종류를 Multiple로 설정합니다.

    2) CimonX를 실행하여 확인합니다.

  • 안녕하세요.
    CIMON 입니다.

    Q. SCADA 화면에서 엑셀 시트를 띄울 수 있나요?

    A. SCADA 기능 중 “개체 삽입” 기능을 이용하면 가능합니다.

    1. SCADA 화면에서 띄울 엑셀 파일을 생성합니다.

    양식을 만들고 이번 FAQ에서는 시간 및 현재 값을 취득하여 최대, 최소, 평균 값을 구해보도록 하겠습니다.

    2. CimonD – 편집 – 개체 삽입에 들어가 엑셀 양식을 등록합니다.

    개체 삽입을 클릭하고 PGX 화면을 클릭하면 위와 같은 창이 나옵니다.
    위에서 Create from File으로 맞추고 Browse를 누르고 엑셀 양식을 등록합니다.
    마지막으로 Link를 꼭 체크해야 양식과 연동됩니다.

    화면에 있는 엑셀을 더블클릭하고 조건에 의한 동작을 체크합니다.

    정상적으로 등록이 되면CimonD 화면에 위와 같이 나오게 됩니다.

    3. 데이터베이스에 태그를 등록합니다.

    CELL_NO 태그는 엑셀의 셀 위치를 확인하기 위한 태그이며, EXCEL 태그는 엑셀 개체 삽입에
    등록한 양식의 변화를 SCADA 화면에서 보기 위한 동작 태그입니다.
    A1 ~ A5는 데이터를 취득할 아날로그 태그입니다. 트렌드에서 사용하기 위해 반드시 데이터수집을 설정해야 합니다. 시작_년부터 종료_초 태그까지는
    ”TREND History Mode에서 임의의 시간을 설정하여 데이터 보는 방법 FAQ”를 참고하시면
    됩니다.

    4. TREND를 등록하고 Script 실행 버튼, Real, History 버튼 Object를 등록합니다.


    Script 버튼은 RunScript 버튼이고, History Time Object는 마찬가지로
    ”TREND History Mode에서 임의의 시간을 설정하여 데이터 보는 방법 FAQ”를 참고하시면
    됩니다.

    CimonX 실행 화면입니다.

    5. Script를 작성합니다. TREND를 사용하지 않고 데이터만 보려면 아래의 Script만 사용하시면 됩니다.

    TREND와 같이 사용하려면 위의 Script 중간에 새로운 Script를 추가 작성합니다.
    추가 작성하는 Script는 마찬가지로,
    ”TREND History Mode에서 임의의 시간을 설정하여 데이터 보는 방법 FAQ”를 참고하시면
    됩니다.



    위의 Script는 SCADA에서 엑셀에 데이터를 넣고 저장하는 Script입니다.
    48번 줄은 셀이 32셀까지 도달하면 EXCEL 비트를 살려 개체 삽입에 넣은 엑셀 파일을
    동작 시키는 조건 문입니다.
    추가 Script는 TREND History Mode에서 임의의 시간을 설정하여 데이터를 확인하기 위하여
    시간 형식과 TREND 최대 감시 시간을 표현하기 위한 Script입니다.

    CimonX를 실행하고 Script를 실행합니다.

    Script를 실행하고 화면을 나눠서 올렸습니다. 위의 사진은 엑셀에 데이터를 넣고 저장한 파일을 SCADA 화면으로 불러온 화면입니다.

    위의 트렌드는 엑셀 양식에서 수집된 데이터를 가져와 History TREND에 뿌린 화면입니다.
    위와 같이 개체 삽입 기능을 이용하면 엑셀 양식을 SCADA 화면에서 구현 가능합니다.

    추가 문의는 1899-5001으로 문의 바랍니다.

  • 안녕하세요.
    CIMON 입니다.

    Q. SCADA에서 msec 단위로 트렌드 구현이 가능한가요?

    A. 고속 트렌드를 이용하면 가능합니다.

    1. SCADA 고속 트렌드 사용에 앞서 설정해야 할 사항이 있습니다.
    SCADA 도움말에 ‘고속트렌드’를 검색하면 설정 방법이 나옵니다.


    반드시 SCADA 설치 경로에 있는 AddOn.Lst 파일을 열고 위의 텍스트를 추가해야 합니다.

    텍스트를 추가하면 아래와 같이 고속 트렌드가 생성됩니다.

    2. I/O 디바이스에서 통신 설정을 하고 데이터베이스에서 태그를 등록합니다.


    초기 값 쓰기는 넣지 않아도 무방합니다.

    3. 데이터 변화를 위해 간단하게 Script를 작성했습니다.

    4. 고속 트렌드 모델을 만들고 설정을 합니다.

    고속 트렌드 동작 설정에는 3가지의 설정이 있습니다.

    고속 트렌드의 제한사항을 확인합니다.

    현재 SCADA에서 고속 트렌드를 지원하는 통신 드라이버는 MITSUIBISHI MELSEC,
    CIMON PLC, LS산전 XGTFEnet입니다.

    5. 화면에 트렌드를 띄웁니다.
    CimonD 화면 오른쪽 도구 상자에서 실시간그래프를 선택합니다.

    6. 실시간그래프에서 고속 트렌드 설정을 합니다.

    Fast Trend를 선택하고 그래프 설정을 합니다.


    등록을 하면 위와 같은 화면이 나옵니다.

    트렌드 아래 7개의 버튼 중 위의 4개의 버튼은 SetRTGraphMode 함수의 버튼이고
    아래 3개의 버튼은 Script를 실행 하기위한 RunScript 버튼입니다.

    SetRTGraphMode 함수에서 사용하는 인자 값입니다. 자세한 내용은 도움말을 참고하시기 바랍니다.

    아래 버튼 3개에 대한 Script를 작성합니다.

    데이터 저장 시작전에 반드시 RTGraphChangeDir 함수로 공정을 넣어 주셔야 합니다.


    7. CimonX를 실행하여 확인합니다.

    저장 간격이 10msec이므로 평상시에는 별 다른 변화가 없어 보입니다.
    지금부터 데이터 저장을 시작하고 일정 시간 후 종료하겠습니다.
    데이터 저장 후 SetRTGraphMode 1번 버튼을 이용하여 저장되었는지 확인합니다.

    SEARCH 버튼으로 데이터를 확인했고, 데이터를 선택합니다.

    위와 같은 그림이 그려지고 위의 데이터를 CSV로 저장합니다.


    데이터가 너무 많아 일부의 데이터만 추출하였습니다.
    데이터 저장 주기는 10msec입니다.

    위의 FAQ와 같이 고속 트렌드 기능을 이용하면 msec 단위로 트렌드를 표현하고
    데이터를 저장할 수 있습니다.

    추가 문의는 1899-5001으로 문의 바랍니다.

  • 트렌드 그래프 이동중 과거의 데이터를 트렌드 그래프로 확인 할 경우 사용방안입니다.

    데이터 수집이 등록된 값들을 통하여 히스토리컬 트렌드를 구성할 수 있습니다.

    아래와 같은 방법을 이용하여 구성하시길 바랍니다.

     

    [예제]

    1)트렌드에 표시될 태그를 생성합니다.

    2)도구 – 데이터수집 으로 이동 하여 데이터 수집 모델을 설정 및 생성합니다.

     

    3)태그  (히스토리컬 트렌드 그래프에 표시될 태그)의 편집창으로 이동하여 고급설정의 데이터수집 체크 및 모델을 선택 합니다.

    4)고급 – 트렌드 선택 하여 트렌드 오브젝트를 생성합니다.

    5)트렌드 오브젝트의 펜설정에서 태그 등록 후, 도구모음설정에서 도구모음표시 선택 하여 등록합니다.

     

    6)CimonX 실행 후 트렌드 설정된 페이지로 이동합니다.

    7)설정된 태그값의 이동에 따라 트렌드 그래프 동작을 확인 합니다.

     

    8)하단 도구모음의 버튼을 선택 하여 히스토리컬 트렌드 모드로 이동합니다.

    9)히스토리컬 트렌드 모드로 동작되며,

    앞주기, 뒤주기, 마우스 선택을 통하여 선택된 시간의 데이터 값을 그래프를 통하여 확인 할 수있습니다.

     

     

    [주의사항]

    히스토리컬 트렌드를 사용할 경우 반드시 등록된 태그는 데이터 수집 등록이 되어있어야 합니다.

    ( SCADA ver3.04 “Historical trend” 첨부)

    이점 유의 하여 사용바랍니다.

     

    다운로드
  • 안녕하세요.

    CIMON입니다.

     

    소수점 뒷자리가 길 때 자르고 싶으시다면 스크립트로 해결하실 수 있습니다.

     

    Sub main()

    Dim L As Double
    Dim M As Double

    for i = 1 to 8 ‘8개의 태그를 적용시키기 위해 8까지 반복문을 적용합니다.
    tagname$ = “FLOAT” & i ‘태그이름을 변수로 만듭니다.
    StrRecord = FormatStr(“%0.3f “, 1, GetTagVal(tagname) ) ‘실수인 태그값을 소수점 뒤 3자리까지 자릅니다.
    L = Left(StrRecord , instr(1,StrRecord, “.”) – 1)
    M = Right(StrRecord, len(StrRecord) – instr(1, StrRecord, “.”))
    setTagval tagname, L+(M/1000)
    next

    End Sub

     

    이렇게 하신다면 변수이름이 규칙적일 때 적용하여 사용하실 수 있습니다.

     

    예를 들어, 원래의 소수점 이하의 자리수가 길 때의 태그들이 아래와 같이 있습니다.

    태그들은 당연히 트렌드판넬편집기에서 길게 나오게 되는데 이것을 자르고 싶다면,

    위의 스크립트를 작성하시고

    CimonX를 실행시킵니다.

    소수점 이하 자리수가 원하는 만큼 잘려서 나오게 됩니다.

     

     

     

     

     

     

  • 안녕하세요

    CIMON입니다.

     

    위 현상은 트렌드의 주기와 데이터 수집 주기의 수집주기가 달라서 발생하는 현상입니다.

    트렌드의 수집 주기와 데이터 수집의 수집 주기를 동일하게 설정하면 해결할 수 있습니다.

     

    [ 설정 방법 ]

    1.트렌드를 설정창의 데이터 수집 주기와 데이터수집의 수집 주기를 동일하게 설정합니다.

    2.설정 변경 후 트렌드 화면입니다.

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

    감사합니다.

     

    #트렌드 #수집 주기

  • 안녕하세요.

    CIMON입니다.

     

    콤보박스 선택을 통한 트렌드 펜 보임 방법을 설정하고자 할 때, SetPenStatus 내부함수를 이용하여 구현할 수 있습니다.

    다음 예제를 참조 바랍니다.

     

    [사용 예제]

    1. 트렌드에서 표시할 아날로그 태그 네 개와, 콤보박스 선택을 통해 문자열 값을 가져올 문자열 태그를 생성합니다.

    2. 페이지에 트렌드를 삽입합니다. 트렌드 이름은 ‘TREND_PEN’으로 지정하고, 값을 표현할 아날로그 태그들을 등록합니다.

    3. [그림]-[라이브러리]에서 콤보박스를 선택하여 페이지에 삽입합니다.

    문자열 태그를 등록한 후, 선택 항목을 입력합니다. 항목을 선택했을 때 문자열 태그의 값이 해당 항목 문자열로 변경됩니다.

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

    Sub TREND_PEN()

    if (GetTagVal(“PEN”) = “ANA1″) then                                          ”PEN’값이 “ANAn”일 때 트렌드 n번 펜만 보이게 합니다

    SetPenStatus “TREND_PEN”, 0, 1

    SetPenStatus “TREND_PEN”, 1, 0

    SetPenStatus “TREND_PEN”, 2, 0

    SetPenStatus “TREND_PEN”, 3, 0

    elseif (GetTagVal(“PEN”) = “ANA2”) then

    SetPenStatus “TREND_PEN”, 0, 0

    SetPenStatus “TREND_PEN”, 1, 1

    SetPenStatus “TREND_PEN”, 2, 0

    SetPenStatus “TREND_PEN”, 3, 0

    elseif (GetTagVal(“PEN”) = “ANA3”) then

    SetPenStatus “TREND_PEN”, 0, 0

    SetPenStatus “TREND_PEN”, 1, 0

    SetPenStatus “TREND_PEN”, 2, 1

    SetPenStatus “TREND_PEN”, 3, 0

    elseif (GetTagVal(“PEN”) = “ANA4”) then

    SetPenStatus “TREND_PEN”, 0, 0

    SetPenStatus “TREND_PEN”, 1, 0

    SetPenStatus “TREND_PEN”, 2, 0

    SetPenStatus “TREND_PEN”, 3, 1

    end if

    End Sub

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

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

    SetPenStatus 내부함수에 대한 설명은 다음 표를 참조하여 주시기 바랍니다.

    SetPenStatus 트렌드에서 펜의 표시 여부를 지정합니다.
    명령함수 명령식 표기 SetPenStatus(“트렌드 오브젝트 이름”, 펜 번호, 보임/안보임)
    스크립트 표기 SetPenStatus 트렌드 오브젝트 이름”, 펜 번호, 보임/안보임
    기능 트렌드 오브젝트의 지정된 펜을 보이게 하거나(1), 보이지 않게(0) 설정합니다. 펜 번호는 0부터 시작합니다.
    사용 예제 ‘YtTrend’ 트렌드에서 1번 펜을 보이지 않도록 설정합니다.

    명령식 표기: SetPenStatus(YtTrend, 0, 0)

    스크립트 표기: SetPenStatus YtTrend, 0, 0

     

    5. CimonX를 실행하여 동작을 확인합니다. 콤보박스에서 선택한 펜이 트렌드에 표시됩니다.

     

    언제나 고객을 생각하는 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입니다.

     

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

     

    [ 예문]  

     

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

    감사합니다.