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