Niagara 관련 용어 및 서비스 정리 - Engineer of NiagaraFramework

Tridium, NiagaraFramework, SCADA, HMI, PLC, Automation, SmartFAM etc.. About controls.
나이아가라 프레임워크 QnA : neverlikekami@gmail.com

2021년 8월 20일 금요일

Niagara 관련 용어 및 서비스 정리

개요

나이아가라 용어 및 서비스를 정리한 문서이다.

    NiagaraWorkbench AX 기준 용어 및 기능정리

    * PLATFORM
     - DDNSConfiguration : 다이나믹 DNS -> dns로 접속한다.
     - Lexlcon Installer : 한글화 작업시 사용한다.
     - tools > LexlcnEditor : 한글화 작업시 사용한다.(툴에 해당되는 한글화)
     - platform > Sedona Manager : 3.4.4 이후 버전에서 생긴 프로그램 : easyIO나 기타등등을 접속 하는데 사용한다.

    * station : service
     - User Service : 유저에 대한 설정 ( 카테고리 서비스의 룰을 적용할 계정 관리)
     - Category Service : 유저별 접근 권한 설정(퍼미션 룰을 만든다)
     - alarm Service : AlarmExtension이 되어진 포인트들을 수집/관리하는 객체
     - history Service : HistoryExtension이 되어진 포인트들을 수집/관리하는 객체
     - program Service : 프로그래밍으로 객체를 컨트롤 할 때 사용, GUI기능 지원
     - Backup Service : 백업 서비스
     - Platform Service : Platform의 기능들을 Station레벨에서 설정할 수 있는 서비스

    Station Auto Backup Frequency
     - 자동백업에대한 설정. Bog파일만 저장하며, 포인트, 알람, 히스토리등을 저장

    * JACE setting
     - 24Volt TR 파워모듈, 전용 어뎁터로 꽂을 수 있다.
     - 하이퍼터미널로 접속시 점퍼를 Serial 통신용으로 잡고 RS232를 연결한다.(디버깅시)

    * BacNet 통신연결
     - ALERTON VLC853모델 : 24v AC전원 , KS6909 - BacNet 국가 표준
     - VLC Input output 을 셋팅할 수 있는 Mvision 프로그램 : 락키가 있으며 USB로 가능하다.
     - 디바이스 스캔으로 상 하위에 장비들을 찾을 수 있다.
     - 이 프로그램은 Microsoft Visio 프로그램으로 로직을 작성한다.

    * HISTORY 포인트
     - Numericlnterval : 일정기간동안 히스토리를 저장한다.
     - 델타 : 바로전 데이터와 현재 데이터의 차이를 보여준다.

    * fects 설정
     - precision : 소수점 몇째짜리를 설정

    * Alarm Setting
     - Service에서 오른쪽 버튼을 누르게 되면 각 매니저들이 떠오른다.
     - 이 매니저를 클릭하여 현재 어떤 포인트에 알람이 설정되어있는지 여부를 체크할 수 있다.
     - Default Alarm Service 에서 알람에 대한 경보를 주게 된다.

    *e- mail 보내는법
     - EmailService : 서비스에 추가해준다
     - Outgoing Account : 상단의 emailService하부에 추가될 계정정보들을 추가한다.
     - pollrate : 메일을 보낼때까지 대기하는 시간
     - lastPollFailure : 메일을 보내는 시점에서 보내기가 실패할경우 에러메세지를 뱉는다.
     - ReplyTo : 보내는 나 자신의 주소를 넣어준다.

    * 알람과 연동
     - Alarm Service 하부에 EmailRecipient를 추가한다.
     - 기본 알람에서 주는 신호를 emailPecipient로 넣어준다.

    * emailRecipient의 형식
     - to : 받는이 주소
     - Cc : 함께 받는 이
     - Boc : 숨은 함께 받는 이
     - emailAccount : Emailservice 하부에 추가한 계정을 선택해준다.
     - persistent : 메일을 보내기 전에 보낼 메일에 대한 정보를 해당 위치에 저장하게 된다.

    원격 PC 제어를 위한 프로그램 리스트
    VNC  : 오픈소스로 제공되는 쉐어웨어 프로그램
    MSTSC : 윈도우즈 XP Professional 이상 버전에서 제공하는 원격제어 프로그램(home edition 사용불가)
    gomypc : 유동아이피일경우 gomypc를 사용(유료)

    프리젠테이션중 문자열 처리방법

    %parent.DisplayName.substring(6,8)%_%DisplayName%

    나이아가라 엑셀리포트 + 참고사항


    엑셀리포트

    엑셀리포트를 하기위해선 새로운 계정을 만들어서 엑셀 프로그램이 나이아가라 또는 JACE를 엑세스 할 수 있도록 권한을 주어야 한다.  보안을 위하여 config->Category에서 GUEST가 접근할 수 있는 카테고리를 2로 정해놓고 HISTORY를 Category2로 한정지어 놓는다. 이와같이 설정한 뒤 guest로 접속을 하게되면 JACE가 서비스를 거부한다. 
    즉 카테고리(HISTORY) 이외의 화면은 볼 수 없게 된다는 뜻이다.
    하나더 첨부하자면 guest 계정은 엑셀리포트를 위하여만 쓰이는 계정으로서 히스토리만을 접근할 수 있도록 선택된 계정이다.
    이 계정이 엑셀이 언제 어느때든 접근할 수 있도록 한번 로그인하면 로그아웃하기전까지 데이터를 계속 리로딩 할 수 있어야 한다. 이 계정은 엑셀이 언제 어느때든 접근할 수 있도록 한번 로그인하면 로그아웃하기전까지 데이터를 계속 리로딩 할 수 있어야 한다. 이는 config -> WedbServices 에서 오토 로그아웃 기능을 제거해주면 된다.
    이렇게 설정이 되었으면 GUEST계정으로 접속을 하였을 때 데이터를 기존의 APLLET 화면으로 출력하는 것이 아닌, XML 데이타로 출력하게 끔 변경해 주어야 한다. GUEST 계정의 WebServices의 Type을 변경해준다.
    Default HX Profile로 선택을 해주면 데이터들이 XML데이터로 Table화 되어 출력된다. 데이터를 얻기 위하여 BQL쿼리문을 사용한다, 다음 EXCEL에서 웹링크를 걸어서 데이터를 뽑아내는 일이다. 이는 data > import external data > new web query에서 할 수 있다.

    나이아가라에서 LOCALHOST 접속시 참고사항

    자신의 IP로 두계정 접속을 해야할 경우가 있다. 물론 브라우저를 하나 띄워서 admin 로그인을 한뒤 확인을 마치고 로그아웃하여 다시 브라우저를 띄우고 새로 로그인하고.. 이런 방법으로 해결 할수 있다. 하지만 좀더 괜찮은 방법이 있다.
    (가)
     1. 두개의 브라우저를 띄운다.
     2. localhost/login <-- 이런형식의 URL을 입력하면 login 창이 무조건 뜨게 되어있다.
    (나)
     1. 하나는 admin으로 하나는 guest로 접속한다

    이는 간혹 loclhost만 URL에 치고 접속하려면 브라우저를 아무리 새로 띄우고 접속해도 기존의 정보로 접속되는 경우가 있기 때문이다.

    NIAGARA 온도, 날씨정보, 일출,일몰시간 얻는 방법

    1. 모듈을 나이아가라에 복사한다.

    이 모듈은 yahoo,google에서 제공하는 openAPI를 이용하여 온도, 날씨, 일출, 일몰에 대한 정보를 보기좋게 제공한다.
    2. 나이아가라에서 모듈을 확인해보면 weatherGoogle, weatherYahoo 라는 두개의 모듈이 추가됨을 확인 할 수 있다. 팔레트에서 weatherGoogle을 선택한 뒤 weatherService를 스테이션의 config - services밑에 추가한다.
    3. new버튼을 눌러서 위치정보를 입력한다.
     예시)
     provider
     - location id: daejeon, korea
     - longitude(위도) : 126.98343
     - latitude(경도) : 37.56241
    *예시의 위도와 경도는 일출 일몰 시간을 구하는데 사용한다.

    위와같이 설정한뒤 확인을 하면 리스트에 목록이 추가된다. 추가된 리스트에 마우스 오른쪽 버튼을 눌러서 action의 update를 실행하면 각 정보들이 업데이트 된다





    Program Object의 Static변수 사용

    Program 오브젝트끼리 사용시 데이터 연결 노하우


    Program 오브젝트끼리는 static 변수로 공유 할 수 있다.
    아래의 순서대로 테스트 해볼 수 있다.

    1. 프로그램1 오브젝트를 만든다.

    2. 프로그램1의 최상단에 public static int test로 선언을 한다.

    3. 프로그램1상에서 onExecute() 함수안에 test 변수를 증가나 감소 시킨다.

    4. 프로그램2 오브젝트를 만든다.

    5. 프로그램2 오브젝트에서 test변수를 출력한다.

    6. 프로그램1에서 test변수를 변화시켜도 프로그램2 에서 test변수의 데이터가 함께 변한다. ( 공유가능)

    이 방법을 이용하여 데이터 공유를 위한 쓸모없는 메모리를 낭비하지 않아도 된다.

    *Document API를 참고하여 STATIC METHOD를 정리해볼 필요가 있다.
     해당 메소드는 딱히 생성하지 않고 Classname.API()로 호출하여 바로 사용할 수 있다.

    static이라는 의미는 jvm의 클래스 로더가 클래스를 로딩할 때 인스턴스를 시키지 않고 클래스의 템플릿만 메모리에 로딩을 시키는데 이때 static이라는 변수를 만나면 static 메모리 공간이라는 특별한 장소에 해당 메소드 또는 변수를 올려놓습니다.
    이 static 메모리 공간은 상당히 경량이고 jvm의 메모리에 영향을 끼치지 않기 때문에 수행속도와는 상관관계가 거의 없다고 보면 된다. 즉 클래스는 생성되면서 heap에 올라가고 템플릿은 로딩될때 stack에 올라간다. static 메모리 공간에 올라가게 된다. static을 사용하는 대표적인 이유로는 바로 공유와 클래스가 생성되기 전에 반드시 거쳐야 할 부분 코딩 등으로 나누어 볼수 있는데 역시 공유 목적이 가장 큰 이유라고 보시면 된다.

    Program Object의 Static변수 사용

    Program 오브젝트끼리 사용시 데이터 연결 노하우

    Program 오브젝트끼리는 static 변수로 공유 할 수 있다.
    아래의 순서대로 테스트 해볼 수 있다.

    1. 프로그램1 오브젝트를 만든다.

    2. 프로그램1의 최상단에 public static int test로 선언을 한다.

    3. 프로그램1상에서 onExecute() 함수안에 test 변수를 증가나 감소 시킨다.

    4. 프로그램2 오브젝트를 만든다.

    5. 프로그램2 오브젝트에서 test변수를 출력한다.

    6. 프로그램1에서 test변수를 변화시켜도 프로그램2 에서 test변수의 데이터가 함께 변한다. ( 공유가능)

    이 방법을 이용하여 데이터 공유를 위한 쓸모없는 메모리를 낭비하지 않아도 된다.

    *Document API를 참고하여 STATIC METHOD를 정리해볼 필요가 있다.
     해당 메소드는 딱히 생성하지 않고 Classname.API()로 호출하여 바로 사용할 수 있다.

    static이라는 의미는 jvm의 클래스 로더가 클래스를 로딩할 때 인스턴스를 시키지 않고 클래스의 템플릿만 메모리에 로딩을 시키는데 이때 static이라는 변수를 만나면 static 메모리 공간이라는 특별한 장소에 해당 메소드 또는 변수를 올려놓습니다.
    이 static 메모리 공간은 상당히 경량이고 jvm의 메모리에 영향을 끼치지 않기 때문에 수행속도와는 상관관계가 거의 없다고 보면 된다. 즉 클래스는 생성되면서 heap에 올라가고 템플릿은 로딩될때 stack에 올라간다. static 메모리 공간에 올라가게 된다. static을 사용하는 대표적인 이유로는 바로 공유와 클래스가 생성되기 전에 반드시 거쳐야 할 부분 코딩 등으로 나누어 볼수 있는데 역시 공유 목적이 가장 큰 이유라고 보시면 된다.


    Notification Class 설정법

    JACE에서 EBI로 경보 포인트를 BACnet으로 넘겨줄 때 Notification Class 설정법을 설명한다.

    Niagara에서 Point를 등록하고 해당 포인트에 경보 설정을 하게 되면 경보의 클래스를 지정하게 된다. 경보의 클래스는 기본적으로 Default Alarm Class로 설정되어 있으며 여러 클래스를 만들었을 경우 선택을 할 수 있도록 되어있다.

    BACNET Export Table에 포인트를 추가하게 되면 BACnet을 통하여 다른 디바이스에 포인트 정보를 전송할 수 있다. 여기서 NotificationClass정보는 그냥 넘어가지 않는데 이 정보를 함께 넘겨야 해당 포인트가 경보 포인트임을 알 수 있게 된다.
     이 정보라 함은 Default Alarm Class를 이야기ㅏ는 것이며 반듸 export table에 추가해주어야 한다. 추가한 뒤 해당 포인트(default alarm class)의 property sheet를 확인하면 NC(Notification Class)의 설정에 관한 화면을 볼 수 있다.
    -셋팅방법-


    Niagara JACE 에서 Email로 경보 보내기

    사전지식

    POP 서버 (Incoming)     : 메일을 읽을 수 있도록 해주는 서버 ( 포트: 110, SSL 사용: 995)
    SMTP 서버 (Outcoming) : 메일을 보내줄 수 있는 서버 (포트: 25, SSL 사용: 587)
    * SSL : 접속인증을 위한 정보를 암호화하는 방식

    경보를 메일로 보내는 법


    1. Pallete > email
    2.config > Services에 EmailService를 드래그하여 넣는다.
    3. 추가된 EmailService에 OutgoingAccount를 넣는다.
    4. OutgoingAccount를 더블클릭하여 빈칸을 채워준다.

    예시)
    Hostname : smtp.mail.com
    port         : 25
    Account    : honggildong@mail.com
    password  : Ho@@@@@@@@@$
    Pollrate     : 적당한 시간설정 (3초)
    Enable      : true
    Debug      : false
    Use SSL    : false (이부분을 사용하기 위해선 Crypto.jar을 사용해아하고 라이센스가 있어야                         한다.)
    Transport  : smtp

    5. Service에 Alarm Service를 더블클릭하여 email모듈의 EmailRecipient를 넣고  RouteAlarm과 연결해 준다.

    6. 연결한 EmailRecipient를 더블클릭한 뒤
     To (메일을 보낼 곳),CC(같이 보낼 사람), 기타 정보를 적은 뒤 저장한다.

    *참고사항 : NIAGARAAX에서 설정할 때는 인터넷이 된다는 것이고 JACE에서 설정할 때는 인터넷이 되는지 안되는지 모른다는 것이다. 즉 JACE에서 설정할때는 DNS를 반드시 확인해줘야 한다. DNS를 사용하지 않는다면 SMTP나 POP 메일서버를 IP로 직접 등록해 주면 된다.


    Program Object를 이용하여 History뽑아내기.

    SLOT 추가

    Out 슬롯을 추가합니다. Out 슬롯은 baja의 StatusNumeric 타입으로 추가합니다.

    Import List

    User Defined List
     - javax. baja. naming
     - javax. baja. history
     - javax. baja. collection

    Source Code


    public void on Execute() throws Exception
    {
      BObject base = getProgram();
      BOrd ord = BOrd.make(" history :/ StationName/HistoryName eld : select value  where"+
     " tim estamp. year=2011 and tim estamp .month.monthOfYear=12 and" +
     " tim estamp. day=11 and tim estamp. hour=10 and:" +
     " tim estamp. minute=0 and tim estamp. second =0");

     BITable result = (BITable)ord.resolve(base).get();

     Column List columns = result. getColumns();
     Column ValueColumn = columns.get(0);

     TableCursor c = (TableCursor)result.cursor();

     BStatusNumeric outValue = new BStatusNumeric(0);

     while(c.next())
     {
      outValue. set Value((c. getDouble(valueColumn)));
      System. out. println("test:" + c.getDouble(valueColumn));
     }

     setOut(outValue);
    }


    나이아가라 IE10 접속 불가 및 java1.7버전 접속 에러 문제 해결법

    1. workbench 및 station 종료
    2. wbapplet.jar를 나이아가라가 설치된 폴더의 lib폴더에 붙여넣기 (버전에 맞도록)
    3. baja.jar, fox.jar 파일을 modules 폴더 안에 붙여넣기 (버전에 맞도록)
    4. workbench 및 station 재실행
    * 이렇게 해도 안된다면 IE10에서 도구 >> 옵션 >> 쿠키 및 이전 임시파일들을 모두 삭제 후 다시 시도.


    댓글 없음:

    댓글 쓰기

    Post list