How to Group control in NiagaraFramework

이미지
개요 나이아가라에서 그룹제어를 효과적으로 하는 방법에 대해 알아보자 Contents 효과적인 그룹제어하기  간단한 그룹제어  본문에서는 그룹제어를 위한 프로그램 방법을 알아본다. 물론 여러가지 방법이 있겠지만 1차원적인 방법으로 아래와같은 방법이 있다. <1차원적인 그룹 컨트롤> 얼핏 보기에는 심플하고 좋은 방법 같지만 실제로 적용해보면 문제점들이 발생한다. (특히 많은 포인트를 제어해야할때는 99%이상 문제가 발생한다) 1차원적인 방법의 문제점 NiagaraSupervisor는 PC레벨에서 동작한다. 즉, 스펙도 좋고 퍼포먼스도 좋다. 조명제어를 예를 들어보겠다. (조명을 예로 드는 이유는 한 기기가 담당하는 Points수가 많기떄문) 조명컨트롤러는 보통 약 256개의 회로를 관리한다. 회로에 대한 정보를 메인 컨트롤러가 갖고 있으며 내부에 ModbusSlave 서버를 두어 상부의 HMI나 기타 컨트롤러와 통신하게 된다. 상부에서 위와같은 방식으로 그룹제어를 하게되면 통상 비슷한 시간대에 모든 포인트에 명령을 내보내게 된다. (점심시간, 퇴근시간, 출근시간 등...) 중요한것은 위와같이 여러 포인트를 동시간대에, 한번에 명령을 내릴경우 컨트롤러가 이를 소화하기 어렵다는 점이다. 이는 출력을 내보내는 시스템에서도, 입력을 받아들이는 시스템에서도 부담스러울것이다. 심지어 임베디드 컨트롤러에 이런식으로 명령을 주고받는다면 운영자에게도, 컨트롤러에도 신뢰에 금이가는 모습을 몸소 느끼게 될것이다. 한번에 다량의 명령을 내보내는것은 웹 서버를 다운시키기위한 DDOS공격과 다를게 없다. 효과적인 그룹제어를 위한 방법 내 스스로 나의 컨트롤러를 공격하는 행위를 하면서까지 운영자들에게 그룹제어의 기능을 제공하고싶지 않다. 이런식으로 기능을 제공해봤자 제살파먹기다. 이 문제를 해결하기위해 필요한 기술은 쓰레드이다. 엔지니어들이 쓰레드를 완전히 이해하고 사용하기엔 무리가 있다. 하지만 "무엇이다" 정도의 개념을 알게된다면 어떻게 해야하는지도 궁굼해질...

Niagara Program Service 를 이용한 Batch Editor for History

이미지
개요 나이아가라 서비스를 이용해서 batch 에디터 히스토리를 알아보자 Contents 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의 사용법에 대한 이해가 필요하니 다음의 글을 참조하라. 본 글은 기본적인것을...

RS485통신과 데이지체인(DaisyChain) 결선방식

이미지
개요 우리는 산업용 프로토콜로 Modbus를 많이 사용하고있다. Modbus에는 ModbusTCP도 있지만 ModbusRTU(rs485)도 많이 이용한다. 최근 대부분의 ModbusRTU 장비는 RS485통신을 선호하며 결선은 DaisyChain으로 하고 마지막에 종단저항을 설치하기를 권고한다. 왜일까. 왜 데이지 체인을 해야하는지 궁굼하다. 그래서 Why 에 중점을두고 왜 RS485를 사용해야하는지, 왜 RS485에서 DaisyChain을 이용해야하는지를 적어볼까 한다. (사실 저는 컴퓨터공학 전공으로 전기나 전자에 약합니다....) Contents 시리얼 통신 방식의 종류와 특징 학생때는 참 딱딱한 내용이었는데 지금은 너무나 와닿는 내용이다. 복잡하게 설명해봐야 직접 느껴보기전엔 나와같지않을까.. 하는 생각으로 간단한 표 하나 투척한다. 위의 표로 알 수 있듯이 RS485는 시리얼통신중에서 경제적 유리한 위치에 있다. 실제 산업현장이나 빌딩자동제어에서는 RS485통신이 주를 이룬다. 물론 LAN통신이나 Wireless들도 있지만 가격적으로나 엔지니어 인프라에 부담되는것이 현실이다. RS485 권장 케이블 노이즈를 줄이기위해 꼬임선을 사용하며 특성 임피던스가 120옴인 케이블 사용을 권장. CAT5 , CAT6도 RS485연결에 사용가능. 120옴의 특성 임피던스를 갖는 차폐꼬임케이블을 사용하는것이 가장 통신 품질이 좋다. <차폐 꼬임 케이블 예> 데이지체인(Daisy Chain) 의 결선방법과 이유 한마디로 정의하면 "반드시 순서대로 장비를 거쳐서 연결하라" 이다. 아래의 그림을 참고하자. 쉽게말해.. 중간에 뭐 거...

NiagaraWorkbench의 Modbus Polling Config 옵션을 이용하여 트래픽 줄이기

이미지
개요 How to communicate faster use the Modbus protocol 산업용 프로토콜인 모드버스를 이용하여 데이터를 얻거나 제어한다. 본 내용에서는 모드버스 프로토콜을 이용하여 통신 트래픽을 줄이기 위한 방법으로 데이터를 읽거나 쓰기위한 범위를 지정하는 방법에 대해 알아본다. 아.. 물론 Niagara Workbench 에서 말이다~ Contents Understanding Modbus Protocol Modbus Protocol 은 아래와같이 구성된다. UnitID | FunctionCode | StartAddress | Length | ByteCount)  예를들어 01 03 00 00 00 01 신호를 보낸다는것은 01    : 01번 장비에 03    : 03번 펑션코드(Read Multiple Registers)로 0000 : 0번 주소부터 0001 : 1개의 워드를 읽어오라는 뜻 입니다. 여기서 보아야할것은 마지막의 ByteCount입니다. 이 갯수를 200개로 한다면 한 명령으로 200개의 데이터를 모두 요청할 수 있는것입니다. Understanding how to engineering 보통 통신수량이 많은 조명컨트롤을 예로 들어보겠습니다. 조명은 통상 약 256~ 512개의 포인트를 통신하게 되어있습니다. 또한 이 포인트들은 연속적인 주소체계를 갖습니다. ---------------------- 예문1 ------------------------------------ 01 01 00 00 00 01 01 01 00 01 00 01 01 01 00 02 00 01       패킷 256개를 장치에 매번 전송          ... 01 01 00 ff 00 01 ---------------------- 예문2 ------------------------------------ 01 01 00 00...

Increasing JAVA Heap memory on NiagaraSupervisor (나이아가라 슈퍼바이저 힙메모리 확장하기)

이미지
개요 IncreaseHeapMemory in NiagaraFramework Niagara Supervisor 에서는 많은 포인트를 집합하여 보여줍니다. 또한 History, Alarm, Log, 접근관리, 웹서버 등 보이지않는 많은 일들을 수행합니다. 한가지 간단한 예를 들겠습니다. Niagara Supervisor로 운영되어지는 현장에 1년이상의 데이터가 수집된 상태에서 History들을 확인하여 운영에 도움되는 데이타를 수집하려 한다고 가정해봅시다. 아마 당신은 History의Point를 더블클릭하는순간, 혹은 History List를 보는 순간 프리징 현상을 격게 될것입니다. 램을 아무리 늘려도 소용 없습니다. 시스템상에서 램을 조금만 사용하라고 설정되어있는데.. 본 내용에서는 HeapMemory를 확장하여 원활한 운영과 쾌적한 엔지니어링을 할 수 있는 방법에 대해 알아봅니다. Contents What does HeapMemory do? 힙 메모리는 Niagara Platform 내부에서 변수를 메모리에 맵핑하거나 지우는 역활을 합니다. 새로운 포인트를 생성하는것, 혹은 특정 리스트를 불러오는 등의 행위는 모두 힙메모리를 필요로 합니다. <좌측 NAV를 확장하는것 만으로 HeapMemory가 필요하다> How to increase Heap Memory on Niagara Supervisor (AX and N4 System) 핵심입니다. 힙 메모리를 어떻게 늘리느냐. 본 내용은 AX버전(3.8이하)과 N4버전에서 동일하게 적용 가능합니다. 경로상의 차이가 있을 뿐 동작 메커니즘은 변함이 없습니다.  힙메모리 증가시키기 (AX Version ) 경로  C:\Niagara\Niagara-3.8.41/lib/nre.properties 내용 java.options=-Xmx256M -XX:MaxPermSize=128M -Dfile.encoding=UTF-8 -Xss256K 방법 내용중 Xmx256M 부분을...

구직시 고려해야할 사항 , 계약 및 업체선정

개요 회사생활이나 프로젝트 수주, 계약시 참고할 만한 글이다. 본문의 링크는 아래와 같으며 주요 내용은 아래에 요약해보려 한다. 인생 실전이니만큼 ... 이해가 필요하다. 원문 :  http://www.okjsp.pe.kr/seq/177368 퍼온곳 : http://www.itunion.or.kr/xe/index.php?document_srl=268357&mid=JOBQNA01 Contents 구직 시 고려해야 할 사항  1) 출퇴근 거리  2) 업무 환경 (개발자가 무시당하지 않고, 개발에만 열중할수 있는)  3) 배우고 싶은 (배울만한 것이 있는, 내가 얻어갈만한것이 있는) 프로젝트  4) 급여 및 개발자 처우    - 사람이 너무 적거나, 자본금이 너무 적으면 패스 회사 선택시 고려해야할 사항 1) 잡한국, people인에서 업체명을 검색 2) 일터Q&A 및 Java서비스넷 채용정보 등을 적극 활용    -  악평으로 소문난 곳이라 안가는게 좋습니다 같은 덧글등 3) 원청과 몇차 협렵업체인지 (을별정 그 이하인건지)    - 프로젝트와 나 사이에 업체가 많이 낄수록 급여 차이가 많이 남 연락이 오기만을 기다리지 말고 적극적으로 알아보자.  - 직접 좋은 프로젝트를 찾는 노력도 있어야 할것 같습니다. 계약이 성사될것 같을때 계약할 회사의 반응을 잘 살피자.  1) 단가를 깍으려고 함.     a) 처음 만족스러운 단가 제시     b) 계약이 될 것 같으면 그정도는 어렵다고 깎을려고 함       (이때 경력이 어떻고 학벌이 어떻고 얘기가 처음 나오죠)     c) 실제 계약서 쓸때 다시 깎으려고 함     d) 실제 급여줄때 더 깎음 2) 계약서 쓸때가 되가니 반말을 하기 시작 ...

net 명령어

상황설명 1. 클라이언트는 NAS의 SAMBA 서버에 접속하여 파일 공유를 사용중 2. NAS에서 비밀번호를 변경함 3. 클라이언트는 NAS의 SAMBA 서버에 접속하여 파일을 볼 수는 있지만    실제 파일을 열었을때 권한문제에 걸림. 해결방법 윈도우의 net 명령어를 이용하여 해결. 커맨드창에 아래와같이 입력   c:\net use \\nas\기술연구소 그럼 계정과 PW를 입력하라는 메시지 출력 새로운 계정과 PW를 입력하고 파일을 열면 권한문제 해결됨. 또한 제어판의 자격증명관리자 부분을 이용하여 해결 가능한것같은데.. 테스트가 필요함 (필자는 nas의 접속권한을 삭제 했는데도 불구하고 접속이 잘되어서...)