매우 간단한 제어 프로토콜

Very Simple Control Protocol
Official VSCP logo.png

VSCP(Very Simple Control Protocol)는 빌딩-오토메이션 또는 홈-오토메이션이 주안점을 이루는 모든 종류의 자동화 작업에 적합한 자유 자동화 프로토콜이다.

각각의 VSCP 노드가 다른 노드의 분산 네트워크의 일부가 되어 완전히 자율적으로 작동할 수 있다는 것이 주요 장점이다.

VSCP는 개별 노드를 연결하여 자동화 네트워크 버스를 형성하는 물리적 계층(예: CAN 버스, 이더넷, RS-485, RS-232, MiWi)으로부터 독립적이다. 버스에는 노드 읽기 스위치, 조명 제어, 블라인드, 창문 또는 정보 표시, 물리적 측정(예: 온도, 조도, 전력 소비 등), 멀티미디어 제어, 도난 또는 화재 경보 등이 있을 수 있다.

CAN 버스와 리소스 제한 마이크로컨트롤러에 매우 적합한 프로토콜(레벨 I)의 하위 집합이 있다. 프로토콜 레벨 II는 이더넷(UDP, TCP 및 자체 이더넷 유형 Raw-Ethernet)과 무선 물리적 계층을 위해 설계된다. 모두 동일한 공통 메시지 필드 및 프레임워크를 공유하며 게이트웨이를 통해 연결할 수 있다.

이벤트

VSCP는 이벤트를 기반으로 한다. 이벤트가 발생할 때마다 다른 모든 노드를 향해 브로드캐스트된다. 네트워크의 각 노드는 이벤트를 수신하고 이 이벤트를 처리해야 하는지 여부를 결정한다.

VSCP event processing diagram.png

다이어그램에 제시된 예는 누르는 버튼에 대해 설명한다. 이는 노드 1이 다른 모든 사람에게 버튼을 눌렀음을 알리는 이벤트 메시지를 버스로 보내는 결과를 가져올 것이다. 노드 2는 메시지를 수신하지만 이 버튼이 노드 2에 대해 이벤트를 트리거하지 않아야 한다고 결정한다. 노드 3은 메시지를 수신하고 이 버튼이 램프 2를 켜도록 트리거해야 한다고 결정한다.

모든 종류의 이 일어날 수 있다: 이벤트는 버튼을 누를 수도 있고, 존재감 센서가 트리거될 수도 있고, 해가 질 수도 있다. 이벤트는 정기적으로 전송될 수 있다. 예를 들어 매 분마다 온도 판독을 한다. VSCP는 발생할 수 있는 많은 이벤트를 사전 정의한다. 이러한 이벤트는 클래스 및 유형으로 정의된다. 수신된 이벤트의 처리 여부는 의사결정 매트릭스 또는 DM에 의해 간단히 결정된다. 또한 DM은 더 자세히 설명된다.

이벤트 클래스 및 유형

이벤트는 클래스로 구성된다. 클래스는 어떻게든 함께 소속된 사건들의 집합체다. Alarm, MEASUREMENT, Control, INFORMATION 등의 클래스가 있다. 현재 VSCP는 약 25개의 클래스를 지정하지만, 1개 이상의 클래스를 사용할 수 있는 여지가 있다. 학급은 유형별로 세분하여 차례를 맞는다. 유형은 클래스 내의 이벤트를 추가로 지정한다. 예를 들어, 클래스 20(0x14)의 이벤트는 INFORMATION 이벤트다. 이 클래스에는 버튼을 누르고 있다는 신호를 보내는 하위 유형 1 (0x01) BUTN이 있다. 이 동일한 정보 클래스에는 ON, OFF, LIMIT 하한 등을 신호하는 유형도 있다. 클래스 측정에서와 마찬가지로 온도, 전류, 전압 등을 신호하는 유형이 있다. 이러한 모든 클래스 및 유형을 정의하면 노드가 동일한 언어를 사용하게 된다. 사전 정의 클래스 및 유형의 전체 목록은 VSCP wiki를 참조하십시오.

VSCP 이벤트 데이터그램 구조

브로드캐스트되는 이벤트는 하나의 VSCP 데이터그램을 구성하는 여러 필드를 함께 포함한다. 이러한 필드가 물리적 계층에 매핑되는 정확한 방법은 CAN, 이더넷, TCP 등과 같은 다수의 물리적 계층 프로토콜에 대해 지정된다. 다른 사람들에게 그것은 아직 정의되지 않았지만, 일반적으로 이러한 필드를 물리적 계층 프로토콜에 매핑하는 것은 어렵지 않다. VSCP 프로토콜에는 LEVEL I&LEVEL II라는 두 가지 레벨이 있다. 그들은 둘 다 기본적으로 프로토콜은 같지만 분야마다 크기가 다르다.

레벨 I은 리소스 제약이 더 많은 노드에서 실행되도록 의도되었으며 필드는 좀 더 보수적으로 정의된다. 레벨 I은 사실상 레벨 II의 하위 집합이며, 적절한 게이트웨이 이벤트를 통해 레벨 I&I 네트워크 사이를 가로지를 수 있다.

VSCP 데이터그램 수준 I
우선 순위 하드코드 ID 클래스 유형 센더닉아이디 데이터 크기 페이로드 CRC
3비트 1비트 9비트 8비트 8비트 4비트 0~8바이트 16비트

레벨 II는 리소스 제약이 거의 없고 더 큰 메시지 크기에 쉽게 대처할 수 있는 노드에서 실행되도록 고안되었다.

VSCP 데이터그램 수준 II
우선 순위 하드코드 ID 클래스 유형 센더GUID 데이터 크기 페이로드 CRC
3비트 1비트 16비트 16비트 128비트 16비트 0~487바이트 16비트

의사결정 행렬

VSCP class/event mask & filter

노드가 이벤트를 수신할 때 노드는 해당 이벤트를 기반으로 태스크를 실행해야 하는지 여부를 결정해야 한다. 이것은 의사결정 매트릭스나 DM을 간단히 평가함으로써 이루어진다. DM 매트릭스는 IF ...의 숫자로 이루어져 있다. 그렇다면... 조건. 그러한 각각의 IF/THEN 조건을 선이라고 하며 여러 선이 의사결정 매트릭스를 구성한다.

수신 메시지의 Class와 Type은 항상 DM 회선에 의해 평가된다. Class & Type 평가는 Class/Type을 마스크로 먼저 통과한 후 필터와 비교하는 방식으로 이루어진다. 이 방법을 사용하면 DM의 한 줄에 대해 여러 클래스/유형이 유효한 조건을 트리거할 수 있다. DM 라인에 대한 다른 조건(SenderGUID, Zone, SubZone)은 선택적으로 평가된다. DM 라인이 유효하면 ACTION이 실행된다. 조치와 함께 조치 매개변수가 있다. 동작의 예: 릴레이 6을 켜고 6동작 매개 변수를 사용한다. 수신 노드에 의해 가능한 정확히 어떤 액션이 노드 자체의 설계에 의해 결정된다. 어떤 조치를 실행할 수 있는지 정의하는 것은 펌웨어 개발자에게 달려 있다. 그런 다음 MDF 파일에 가능한 액션을 문서화하면(나중에 참조), 구성 SW는 이 액션을 선택하는 방법을 알게 된다. DM은 적절한 노드 구성 레지스터를 설정하여 수정할 수 있다. 이를 위한 편리한 방법은 VSCPWorks 구성 SW를 사용하는 것이다.

DataPayload

전송되는 이벤트는 데이터 페이로드도 운반할 수 있다. 이 페이로드의 내용과 구성은 이벤트의 종류와 종류에 따라 달라진다. 예를 들어 등급 10(측정)과 유형 6(온도)의 이벤트는 (바이트 0, 도 또는 섭씨로 결정된 코딩 포함) 온도 데이터를 페이로드에 전달한다. 버튼 이벤트는 데이터페이로드에 버튼 & 버튼 존/하위존에 대한 정보를 전달한다. 각 클래스/유형에 대해 데이터 형식은 사양에서 결정되며 자세한 내용은 wiki를 참조하십시오.

구역/하위 구역

일부(일부 쿼트) 이벤트는 데이터페이로드에 필드 영역과 필드 하위 영역을 포함한다. 이 기능은 노드의 그룹화를 가능하게 하기 위해 존재한다. 예를 들어 특정 램프를 제어하는 모든 버튼이 동일한 그룹의 일부임을 확인할 수 있다. 이것은 특정 시나리오의 DM을 단순화한다. 각 버튼에 대해 하나의 DM 라인을 램프 노드로 사용하는 대신(버튼당 1줄: IF 버튼 x 그 다음 켜기 램프) 1개의 DM 라인을 IF(구역 일치) Turn-on 램프라고만 말할 수 있다. 노드를 구성하여 여러 노드 스위치를 그룹에 포함시키면 노드의 펌웨어가 이 기능을 지원한다.

VSCP 노드 구성

노드를 적절하게 구성해야 기능을 실행할 수 있다. 각 VSCP 노드는 기능에 맞게 조정된 자체 구성 레지스터 세트를 제공한다. 버튼 노드는 버튼이 속한 구역/하위존을 구성할 수 있다. 온도 노드는 트리거 값을 설정할 수 있다. 또한 DM을 구성하는 것도 노드 구성의 일환이다.

구성 레지스터

VSCP 레지스터 공간

노드를 구성하는 작업은 레지스터에 기록하여 수행된다. 각 (Level I) 노드는 256개의 레지스터에 대한 액세스를 제공한다. 가장 높은 128개의 레지스터는 VSCP 핵심 기능을 위해 예약되어 있다. 이러한 128개의 레지스터에서 노드 GUID, 닉네임, MDF 및 페이징 레지스터와 같은 항목을 찾을 수 있다. 하위 128개 레지스터는 애플리케이션별 사용이 무료다. 128개의 레지스터가 충분하지 않으면 16비트 페이징 가능성이 있다. 이를 통해 애플리케이션 사용을 위한 65536 x 128개의 8비트 레지스터가 허용된다. 이러한 레지스터를 작성/읽는 작업은 CLASS 0 이벤트를 사용하여 수행된다. 클래스 0 이벤트는 노드를 구성하고 관리하기 위한 VSCP 프로토콜 기능 메시지 입니다.

모듈 설명 파일

특히 애플리케이션별 레지스터의 경우 어떤 용도로 사용되는지를 추적하는 것이 과제가 될 수 있다. 하지만 여기서 모듈 설명 파일이나 MDF가 나온다. MDF 파일은 모듈의 각 레지스터의 기능을 기술하고, 해당 레지스터에 대한 구성 옵션을 제공하는 등 기계 판독이 가능한 XML 파일이다. 이 파일은 구성 소프트웨어(VSCPWorks)가 어드레싱된 모듈에 특정한 구성 옵션을 표시하기 위해 사용한다. MDF 파일은 노드 자체에 저장되고 VSCPWorks에 의해 거기서 가져올 수 있지만, 더 일반적으로 MDF 파일은 어딘가의 웹서버에서 호스팅되는 XML 파일일 것이다. 그런 다음 노드는 VSCPWorks에 XML 파일을 찾을 수 있는 위치(URL)만 알려주면 된다. 이 URL은 VSCP 예약 레지스터 0xE0-0xFF에 있다.

VSCPWorks

VSCPworks 스크린샷

VSCPworks는 노드를 구성하고 관리하는 PC(리눅스 & 윈도우즈) 기반 툴이다. VSCPWorks는 MDF 파일을 자동으로 구문 분석하여 사람이 판독할 수 있는 형식으로 레지스터를 판독/설정할 수 있다. VSCPWorks는 또한 의사결정 매트릭스를 설정하는 마법사를 제공한다.

VSCP & 프렌즈

VSCP가 프로토콜인 경우 VSCP & Friends는 VSCP를 중심으로 구축된 소프트웨어 API, 스키마 및 추상화 계층의 이름을 지정하는 데 사용된다. VSCP & Friends는 기존 장치를 VSCP 장치처럼 보이게 하는 드라이버를 사용하여 계층화된 추상화를 허용한다. 즉, VSCP & Friends 프레임워크로 모든 장치를 제어하고 모니터링할 수 있다. VSCP & Friends에서 4가지 일반적인 IoTM2M 문제 해결

  • 균일한 장치 검색 및 식별.
  • 균일한 장치 구성.
  • 자동/분산 장치 기능.
  • 장치 펌웨어를 업데이트/유지 관리할 수 있는 균일한 방법

참조

  1. ^ Hedman, Ake. "YAP". VSCP Specification. Grodans Paradis AB. Retrieved 4 September 2017.

외부 링크