본 장에서는 USN 기반의 구동체 제어 미들웨어의 전체적인 시스템 구성과 핵 심 모듈인 데이터 처리 모듈과 구동체 제어 모듈에 대해 설명하고,사용자 응용 에서 구동체를 제어하기 위해 규칙 데이터인 조건 정보와 규칙 연산 정보를 등 록하는 방법에 대해 설명한다.또한 규칙 데이터를 이용하여 제어 메시지를 생성 하는 과정에 대해 기술한다.
1.구동체 제어 미들웨어 구성
그림 7.구동체 제어 미들웨어 및 관련 시스템 구성도
제안하는 구동체 제어 미들웨어는 그림 7의 시스템 구성도와 같이 구동체를 제어하는 시스템에서 핵심적인 역할을 한다.구동체 제어 미들웨어는 등록된 구 동체로 제어 메시지를 전송하고 관리하는 기능을 갖는다.이를 위해 사용자는 제 어 메시지 생성에 필요한 규칙 데이터를 구동체 제어 미들웨어에 설정해주어야
한다.이 기능을 담당하는 등록 웹 서버는 WSN(WirelessSensorNetwork)에서 동작하는 센싱 데이터 수집 미들웨어의 센서 하드웨어 정보를 사용자에게 제공 함으로써 원하는 위치의 센서가 수집하는 데이터에 대하여 규칙 데이터를 생성 할 수 있도록 한다.구동체 제어 미들웨어는 수집되는 센싱 데이터를 등록된 규 칙 데이터 중에서 조건 정보와 비교하고,조건 정보간의 논리 연산인 규칙 연산 과정을 거쳐 구동체 제어 응용 관리자가 요구한 제어 메시지를 생성하고 전송한 다.제안된 구동체 제어 미들웨어의 핵심 모듈로는 센싱 데이터 처리와 분배를 담당하는 데이터 처리 모듈(DataProcessModule)과 제어 메시지를 생성하는 구 동체 제어 모듈(ActuatorControlModule)이 있으며,센싱 데이터 인터페이스로 는 센싱 데이터 수집 미들웨어에서 데이터를 수집하기 위한 데이터 수집 인터페 이스(DataCollectionInterface)와 서비스 응용으로 센싱 데이터를 제공하기 위한 사용자 인터페이스(UserAppInterface)가 있다.그림 8은 구동체 제어 미들웨어 의 모듈 구조도이다.
그림 8.구동체 제어 미들웨어의 모듈 구조도
2.데이터 처리 모듈 설계 2.1데이터 처리 모듈 구조
그림 9.데이터 처리 모듈의 구조도
데이터 처리 모듈은 위의 그림 9와 같은 구조를 갖는다.수집된 데이터는 데 이터 수집 미들웨어에게 하나씩 할당되는 센싱 데이터 저장 스택에 보관된다.스 택을 사용하면 실시간 센싱 데이터를 최우선적으로 처리할 수 있으며,생성되는 스택은 센싱 데이터 수집 미들웨어 정보 등록 웹 서버의 결과물인 XML 정보를 파싱하여 센싱 데이터 수집 미들웨어의 개 수 만큼 미리 생성하게 된다.데이터 분배 모듈에서는 병렬 처리를 위해 멀티 스레드 작업으로 각각의 스택에서 센싱 데이터를 하나씩 꺼내어 구동체 제어 응용의 데이터 처리 요구 정보에 따라서 구동체 제어 모듈이나 메시지 큐 컨트롤러로 분배된다.메시지 큐 컨트롤러는 자 신이 관리하는 메시지 큐들 중에 처리된 최종 센싱 데이터가 저장되어야할 메시 지 큐를 찾아내어 저장하는 역할을 한다.메시지 큐에 저장된 데이터는 순서적으 로 웹 서비스를 통해 사용자 응용에게 제공된다.여기서 중요한 점은 항상 실시 간 센싱 데이터를 제공하기 위해 가장 나중에 저장된 센싱 데이터를 남기고,나
머지 센싱 데이터는 데이터베이스 저장 모듈로 하여금 데이터베이스에 백업 데
그림 10.XML 데이터 파싱 및 환경 변수 저장과정
그림 11.데이터 분배 모듈의 센싱 데이터 처리 과정
데이터 처리 모듈의 데이터 분배 모듈은 데이터 처리 모듈의 가장 핵심적인 부분으로 그림 11과 같이 센싱 데이터 수집 미들웨어 전송된 센싱 데이터를 축 출하고 구동체 제어 모듈로 전달하여 사용자 응용이 요구하는 처리 과정을 거쳐 메시지 큐 컨트롤러에 의해 저장된다.데이터 분배 모듈이 필요한 이유는 다양한 센서 네트워크에서 동작하는 센서 데이터 수집 미들웨어의 다양한 데이터를 효 과적으로 처리할 수 있으며,서비스 응용에 원하는 센싱 데이터를 적절하게 분배 하기 위함이다.그림 11에서 보듯이 P1,P2는 이러한 처리 과정을 담당하는 하나 의 프로세스로 데이터 분배 모듈은 센싱 데이터 수집 미들웨어의 개수,즉 처리 할 센싱 데이터 저장 스택의 수만큼 생성되어 하나의 스택을 분배 받고 작업을
처리하게 된다.
3.구동체 제어 모듈 설계 3.1구동체 제어 모듈 구조
그림 12.구동체 제어 모듈의 구조도
구동체 제어 미들웨어에서 구동체 제어 모듈은 수집되는 센싱 데이터를 분석 하고 등록한 규칙데이터와 비교하여 긴급 상황 혹은 정해진 상황에 따라 등록된 구동체를 동작시키기 위한 제어 메시지를 생성하는 역할을 담당한다.구동체 제 어 모듈의 각 컴포넌트 구조는 그림 12와 같다.구동체 제어 모듈의 핵심 부분은 제어 메시지 생성 컴포넌트로서,관리자가 등록한 규칙 데이터(조건정보,규칙 연 산 정보)에 따라 수집되는 센싱 데이터를 비교하여 제어 메시지를 생성하는 부분 이다.이밖에도 구동체 제어 모듈은 생성된 제어 메시지를 해당하는 구동체의 하 드웨어 특성에 따라 알맞은 제어 신호나 값으로 변환하는 기능,구동체의 현재 동작 유무를 판별하는 상태 관리 기능,구동체 제어 응용과 데이터를 주고받기
기 능 Sentire미들웨어 구동체 제어 미들웨어
들웨어서는 3개의 인터페이스로 확장하고 있다.사용자 응용과 데이터를 주고받
그림 13.구동체 제어 모듈의 데이터 흐름도
3.2.1.센싱 데이터 인터페이스(Sensing DataInterface)
센싱 데이터 인터페이스(Sensing DataInterface)는 데이터 처리 모듈과 구동 체 제어 모듈간의 센싱 데이터의 흐름을 담당한다.데이터 처리 모듈에서 제공되 는 센싱 데이터를 전달받고 제어 메시지를 생성하기 위해 조건 검사와 규칙 연 산을 수행하는 모듈인 제어 메시지 생성 컴포넌트로 전달하여야 한다.센싱 데이 터 인터페이스가 센서 데이터의 전달 기능을 수행하며,센싱 데이터의 특성상 실 시간으로 수집되는 데이터이므로 최신 데이터를 보장하고 흐름제어를 수행하는 중간 버퍼 역할을 하는 스택을 두고 LIFO(Lastinfirstout)방식으로 처리한다.
3.2.2.구동체 스펙 구성 인터페이스(ActuatorSpecConfiguration Interface)
구동체 스펙 구성 인터페이스(ActuatorSpecConfiguration)는 구동체 제어 모
3.2.5. 제어 메시지 관리 컴포넌트(Control Message Management
4.구동체 제어를 위한 구동체 등록 정보 XML 구조
그림 15.구동체 등록 정보 XML 구조
그림 15는 구동체 등록 정보 XML 구조이다.이는 제안한 구동체 제어 미들웨 어에서 새로운 구동체의 확장성을 위해 제공하는 구동체 스펙 구성 인터페이스 와 규칙 데이터 설정 인터페이스의 결과물이다.그림을 보면 우선 구동체의 식별 값,제어 메시지 생성에 필요한 센싱 데이터를 수집하는 센싱 데이터 수집 미들 웨어 ID,구동체와 구동체 제어 미들웨어 간 통신 방법이 정의된다.점선으로 표
시된 부분은 구동체 제어 모듈에서 제어 메시지를 생성하기 위한 조건 정보와
andIntencity <100"이라는 조건이 있을 경우 조건 정보로 전부 나타낼 수 없기
그림 17.제어 메시지 생성 컴포넌트의 조건 검사와 규칙 연산 과정
그림 18은 구동체 제어 메시지 모듈에서 제어 메시지를 생성하는 규칙 연산의 방법과 과정을 나타내는 순서도이다.규칙연산에 사용되는 규칙 연산 문자열은
“%조건정보:%조건정보:@연산자:%조건정보:@연산자:#제어 메시지” 형태를 가진 다.여기서 파싱에 필요한 특수문자 ‘%’는 조건정보 앞에 사용되며,‘@’는 연산 자,‘#’은 제어 메시지 앞에 사용된다.이는 조건간의 연산이 원하는 만큼 연산이 가능하도록 정해진 규칙이며 이 규칙연산 문자열을 먼저 파싱하는 것이 규칙연 산의 처음 과정이다.파싱된 문자열은 연산 순서 배열에 들어가며 최종 규칙연산 의 결과를 나타내는 규칙 연산 결과 변수와 조건 정보간의 연산 결과를 저장할 조건_1,2,3을 선언한다.조건 연산이 많을 경우에도 3개의 변수를 가지고 처리 할 수 있으므로 불필요한 변수는 선언하지 않는다.전체적인 루프는 파싱된 연산 순서 배열의 길이만큼 진행되며 배열의 위치와 루프의 반복횟수를 결정할 인덱 스 1과 인덱스 2변수를 선언한다.규칙연산은 기본적으로 이미 그 결과를 처리 한 조건 정보간의 AND,OR 연산을 취한다.먼저 연산 순서 배열의 처음 인덱스
에는 ‘%’를 가진 조건 정보가 들어 있다.만약 없다면 이것은 잘못된 규칙 연산 문자열이거나 바로 제어 메시지가 있는 경우이기 때문에 ‘#’문자가 있는지 확인 하고 제어 메시지 혹은 에러 메시지를 추가한다.‘%’문자일 경우 조건_1에 연산 순서 배열의 첫 인덱스(인덱스 2)의 조건 정보의 결과 값,즉 True혹은 False 값을 저장하고 인덱스 2를 하나 증가하여 다음 연산 순서 배열의 정보를 가져온 다.다음 문자열이 ‘%’를 가지고 있다면 그것은 두 번째 조건정보를 의미하므로 조건_2에 두 번째 조건정보의 결과 값을 저장하고 인덱스 2를 증가한다.여기서 만약 두 번째가 조건 정보가 아닌 다른 문자열이라면 그 문자열에 ‘@’가 있는지 판단하지만 조건정보가 하나만 나오고 연산이 이루어지는 경우는 없으므로 제어 메시지에 에러 메시지가 저장된다.정상적인 규칙 연산 문자열인 경우 다음 연산
에는 ‘%’를 가진 조건 정보가 들어 있다.만약 없다면 이것은 잘못된 규칙 연산 문자열이거나 바로 제어 메시지가 있는 경우이기 때문에 ‘#’문자가 있는지 확인 하고 제어 메시지 혹은 에러 메시지를 추가한다.‘%’문자일 경우 조건_1에 연산 순서 배열의 첫 인덱스(인덱스 2)의 조건 정보의 결과 값,즉 True혹은 False 값을 저장하고 인덱스 2를 하나 증가하여 다음 연산 순서 배열의 정보를 가져온 다.다음 문자열이 ‘%’를 가지고 있다면 그것은 두 번째 조건정보를 의미하므로 조건_2에 두 번째 조건정보의 결과 값을 저장하고 인덱스 2를 증가한다.여기서 만약 두 번째가 조건 정보가 아닌 다른 문자열이라면 그 문자열에 ‘@’가 있는지 판단하지만 조건정보가 하나만 나오고 연산이 이루어지는 경우는 없으므로 제어 메시지에 에러 메시지가 저장된다.정상적인 규칙 연산 문자열인 경우 다음 연산