Niagara Program Service 를 이용한 Batch Editor for History - Engineer of NiagaraFramework

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

2019년 4월 17일 수요일

Niagara Program Service 를 이용한 Batch Editor for History

개요
나이아가라 서비스를 이용해서 batch 에디터 히스토리를 알아보자


    History about BatchEditor in NiagaraFramework

    빌딩 자동제어 프로그램. HMI 를 만들기 위해서는 반드시 해야하는 일들이 있다.

    1. 사용하는 포인트를 등록하고

    2. 하부장비와 통신을 위한 튜닝을하며,
    3. 로직을 구성하고,
    4. 히스토리를 설정하고,
    5. 알람을 설정한다.
    6. 최종적으로 화면에 이러한 내용을 디스플레이할 수 있도록 맵핑한다.

    이러한 과정을 거침으로서 운영자들은 좀더 생산적으로 건물을 관리/운영 할 수 있다.

    그렇다면. 우린 운영자들의 생산성만 존중해주어야하는가..?
    물론 그렇지않다.

    나이아가라 프레임워크에는 엔지니어들의 반복작업을 줄여줄 수 있는 많은 기능들이 내장되어있으며, 없더라도 프로그래밍하여 효과적인 엔지니어링을 할 수 있도록 해준다.


    이 글에서는 Services -> Program Service를 이용하여

    BooleanPoints와 NumericPoints에 히스토리를 한번에 등록하는법을 설명한다.



    Services의 ProgramService 기능


    간단히 말해 Niagara System내의 오브젝트들의 배치작업을 담당하고있다.

    배치작업은 반복적인 일괄 작업을 뜻하며 이로서 많은 노동력을 절감할 수 있다.


    쉽게는 Batch Editor를 통해 컨트롤 할 수 있고, 본인이 NiagaraFramework에 대한 이해와 JAVA 프로그래밍 능력이 있다면 Robot Editor를 이용하여 직접 프로그래밍 하여도 된다.
    <Services - ProgramService>

    ProgramService 의 Batch Editor사용방법

    이를 잘 사용하기위해서는 기본적인 자료형에대한 이해와 라이브러리의 부모자식노드에 대한 이해가 필요하다. 거창하게 설명하면 어려우니 쉽게 쉽게 풀어 보겠다.


    Niagara초심자의경우 기본적으로 History의 사용법에 대한 이해가 필요하니 다음의 글을 참조하라.

    본 글은 기본적인것을 다룰 줄 아는 상태에서 노동력을 줄이기 위한 방법에 촛점이 맞추어져 있다.

    (http://neverlikekami.blogger.com/미작성)


    우리가 NiagaraWorkbench에서 History를 걸어야하는 데이터 타입은 크게 두가지다.

    "Boolean Points"와 "Numeric Points" 이다.


    아래의 화면에서는 에디터의 FindObject 버튼을 이용하여 원하는 타입의 오브젝트를 원하는 위치로부터 리스팅 할 수 있도록 해준다.

    이러한 오브젝트를 찾기위해 내부적으로 BQL(Baja Query Language) 이 이용된다.

    BQL은 SQL과 비슷한 구조를 갖고있으며 추후 여러부분에 응용 가능하므로 별도로 다룰것이다.

    (http://neverlikekami.blogger.com/미작성)


    우리는 나이아가라 프레임워크를 이용하여 빌딩 자동제어 프로그래밍을 주로 한다.

    1. Services -> ProgramService 오브젝트 리스팅


    <FindObjects를 이용하여 원하는 오브젝트 리스팅하기>
    위의 화면에서 Find Object를 누르면 아래 그림과같은 BQL Query Builder창이 팝업되며
    원하는오브젝트 타입을 선택하면된다.

    우리는 예제로 BooleanPoints에 BooleanChangeOfHistoryExtension을 할것이다.
    아래 그림에서는 위의 목적을 위해 Boolean Point 오브젝트 타입을 선택한다.
    <BQL Query Builder 화면, Config 하위의 Boolean Point 타입을 리스팅 한다>

    아래의 스크린샷에서는 쿼리빌더에서 명령한 Config 하위의 BooleanPoint 오브젝트들이 리스팅 된 화면이다. 화면에 리스팅 된 포인트에 한하여 일괄작업을 진행할 수 있으며, 리스팅된 포인트들에는 모두 동일한 명령이 전송된다.

    만일 필요없는 포인트가 있다면 선택후 delete키를 눌러 삭제해주면 된다.
    <쿼리로부터 찾아진 Boolean Points 리스트>

    위의 포인트들에게 BooleanChangeOfValueHistoryExt를 추가할것이다.



    2. 히스토리 오브젝트를 데이터오브젝트에 추가

    추가할 슬롯의 이름을 정해주고 History모듈의 BooleanCovHistoryExt를 선택해준다.아래쪽의 슬롯을 확장하여 옵션들을 선택해줄 수 있으며 HistoryName은 포인트 이름을 참조할 수 있도록 한다.


    적절한 값들을 설정한 후 확인을 누른다.

    <Add Slot Popup, History의 상세 설정을 할 수 있다>
    위에서 확인을 누르게되면 배치에디터가 동작을 시작하고 그에대한 결과값을 보고한다.
    아래는 각 포인트들에 BooleanCOV History Ext가 적절히 추가되었음을 보여준다.

    <배치작업 결과보고창 : 각 포인트들에 히스토리가 정상적으로 추가되었다>

    본인 역시 초창기에는 많은 히스토리들을 일일이 걸거나 조금 발전된 모습으로 BooleanPoints들 에 HistoryExt를 미리 추가해두고 복사해서 사용했었다. 
    물론 아주 오래전 이야기다.

    아직도 많은 사람들이 배치에디터를 사용하지않고 수작업을 하곤한다.
    앞으론 한큐에 끝내시고 내안의 카타르시스를 느끼시길 바래본다.


    3. 히스토리 작업 결과 확인

    이제 배치에디터가 히스토리를 잘 걸어주었는지 확인할 차례다


    아래 두장의 스크린샷으로부터 포인트로 이동하여 포인트 하부에 내가 설정한 히스토리가 추가되어 있음을 확인할 수 있다.

    더 중요한것은 Services의 HistoryService를 반드시 확인해야 한다는 것이다.

    여러가지 원인들로인해 History가 정상등록되지 않을 수 있기떄문이다.








    결론

    고객만을 위한 자동제어를 해주기에는 우린 너무 귀찮고 바쁜 삶을 살고있지 않은가...

    컴퓨터는 많은것을 자동화 해준다.

    우리를 위한 자동화를 항상 생각하고, 적용하여, 아주 조금이라도 더 나은 미래를 만들자.


    당신의 평안한 삶을 위해...


    댓글 없음:

    댓글 쓰기

    Post list