Main Content

이 페이지는 기계 번역을 사용하여 번역되었습니다. 영어 원문을 보려면 여기를 클릭하십시오.

모델 아키텍처 이해

프로젝트에 대한 모델링 지침을 평가할 때 기능/하위 기능 계층, 스케줄 계층, 제어 흐름 계층, 섹션 계층 및 데이터 흐름 계층과 같은 컨트롤러 모델의 아키텍처를 이해하는 것이 중요합니다.

컨트롤러 모델의 계층 구조

이 섹션에서는 컨트롤러 모델을 예로 들어 기본 모델의 계층적 구조에 대한 높은 수준의 개요를 제공합니다. 이 테이블은 계층 구조의 레이어 개념을 정의합니다.

레이어 개념레이어 목적

위쪽

계층

기능 레이어광범위한 기능 구분
스케줄 레이어실행시기 표현(샘플링, 순서)

아래쪽

계층

하위 기능 레이어세부 기능 구분
제어 흐름 계층처리순서에 따른 구분(입력 → 판정 → 출력 등)
선택 레이어활성 서브시스템을 전환하고 활성화하는 형식으로 분할(병합으로 출력 선택)
데이터 흐름 계층분할할 수 없는 하나의 계산을 수행하는 레이어

레이어 개념을 적용할 때:

  • 레이어 개념은 레이어에 할당되어야 하며 그에 따라 서브시스템이 구분되어야 합니다.

  • 레이어 개념이 필요하지 않은 경우에는 레이어에 할당할 필요가 없습니다.

  • 여러 레이어 개념을 하나의 레이어에 할당할 수 있습니다.

계층 구조를 구축할 때 레이어 내 공간 절약을 위해 서브시스템으로 분할하는 것은 피해야 합니다.

최상위 레이어

최상위 레이어의 레이아웃 방법은 다음과 같습니다.

  • 단순 제어 모델 — 동일한 레이어에 기능 레이어와 스케줄 레이어를 모두 나타냅니다. 여기서 함수는 실행단위이다. 예를 들어 제어 모델에는 샘플링 주기가 하나만 있고 모든 기능은 실행 순서대로 정렬됩니다.

  • 복잡한 제어 모델 유형 α - 스케줄 레이어가 맨 위에 위치합니다. 이 방법을 사용하면 코드와의 통합이 용이하지만 기능이 분할되어 모델의 가독성이 떨어집니다.

  • 복합 제어 모델 β형 — 기능 레이어는 상단에 배치되고 스케줄 레이어는 개별 기능 레이어 아래에 배치됩니다.

The first example shows the top level as a schedule layer with two function layers, one for a low speed subsystems and the second for a high speed subsystem. In the example illustration, the top layer is the function layer with two schedule layers, one for a sensing function subsystem and the second for a control function subsystem.

기능 레이어 및 하위 기능 레이어

기능 및 하위 기능 레이어를 모델링하는 경우:

  • 서브시스템은 기능별로 나누어지며, 각 서브시스템은 하나의 기능을 나타냅니다.

    • 하나의 함수가 항상 실행 단위는 아니므로 해당 서브시스템이 반드시 Atomic Subsystem일 필요는 없습니다. 아래 유형 β 예에서는 기능 계층 서브시스템이 가상 서브시스템인 것이 더 적합합니다. 대수적 루프는 Atomic Subsystem으로 변경될 때 생성됩니다.

    • 개별 기능 단위를 기술해야 한다.

    • 모델에 여러 개의 큰 함수가 포함되어 있는 경우 각 함수에 대한 모델 참조를 사용하여 모델을 분할하는 것을 고려하세요.

The first example shows the top level as a schedule layer with two function layers, one for a low speed subsystems and the second for a high speed subsystem. There is an arrow connecting sub-function "C1" in the low speed subsystems to sub-function "S2" in the high speed subsystems layer. In the second example, the top layer is the function layer with two schedule layers, one for a sensing function subsystem and the second for a control function subsystem. There is a connection arrow between sub-function "C1" in the control function subsystem to sub-function "S2" in the sensing function subsystem.

스케줄 레이어

레이어를 예약할 때:

  • 시스템 샘플링 간격과 실행 우선순위를 설정해야 합니다. 여러 샘플링 간격을 설정할 때는 주의하십시오. 샘플링 간격이 다양한 연결된 시스템에서는 각 샘플링 간격에 대해 시스템이 분할되어 있는지 확인하십시오. 이는 빠른 사이클과 느린 사이클에 대해 신호 값 처리가 다른 상황에서 이전 값을 저장하는 데 필요한 RAM을 최소화합니다.

  • 우선 순위가 설정됩니다. 이는 여러 개의 독립적인 기능을 설계할 때 중요합니다. 가능하다면 모든 서브시스템의 계산 순서는 서브시스템 연결을 기반으로 해야 합니다.

  • 두 가지 유형의 우선 순위 순위가 설정되어야 합니다. 하나는 서로 다른 샘플링 간격에 대한 것이고 다른 하나는 동일한 샘플링 속도에 대한 것입니다.

샘플링 간격과 우선순위 순위를 설정하는 데 사용할 수 있는 방법에는 두 가지가 있습니다.

  • 서브시스템 및 블록의 경우 블록 파라미터 샘플 시간 및 블록 속성 우선 순위를 설정합니다.

  • 조건부 서브시스템을 사용하는 경우 스케줄러와 일치하도록 독립적인 우선순위 순위를 설정하세요.

사용자 정의 샘플링 간격에 대한 구성 파라미터, Atomic Subsystem 설정 및 모델 참조 사용과 같은 다양한 조건에 대한 패턴이 존재합니다. 특정 패턴의 사용은 코드 구현 방식과 밀접하게 연관되어 있으며 프로젝트 진행 상황에 따라 크게 달라진다. 일반적으로 영향을 받는 모델은 다음과 같습니다.

  • 샘플링 간격이 여러 개인 모델

  • 여러 개의 독립적인 기능을 갖는 모델

  • 모델 참조 활용

  • 모델 수(및 생성된 코드 세트가 두 개 이상 있는지 여부)

생성된 코드의 경우 영향을 받는 요소는 다음과 같습니다.

  • 실시간 운영체제의 적용 가능성

  • 구현될 사용 가능한 샘플링 간격 및 계산 주기의 일관성

  • 적용 가능 영역(응용 도메인 또는 기본 소프트웨어)

  • 소스 코드 유형: AUTOSAR 준수 - 비준수 - 지원되지 않음.

제어 흐름 레이어

계층구조에서 컨트롤 레이어는 입력처리, 중간처리, 출력처리를 모두 하나의 함수로 표현합니다. 이 계층에서는 블록과 서브시스템의 배열이 중요합니다. 다중, 혼합된 작은 기능은 제어의 개념적 기반을 형성하는 입력 처리, 중간 처리 및 출력 처리의 세 가지 가장 큰 단계로 나누어 그룹화되어야 합니다. 일반적인 구성은 데이터 흐름 계층 근처에서 발생하며 수평선으로 표시됩니다. 데이터 흐름 계층의 차이점은 여러 서브시스템과 블록으로 구성된다는 것입니다.

제어 흐름 레이어에서 가로 방향은 서로 다른 중요성을 갖는 처리를 나타냅니다. 동일한 의미를 갖는 블록은 수직으로 배열됩니다.

Illustrates three control flow layers column that are arranged from left to right. The first column is labeled Input Processing, the middle is labeled Intermediate Processing, the and last column is labeled Output Processing. The blocks in the control flow layer column have the same significance with regard to function of the vertical column.

블록 그룹은 수평으로 배열되며 잠정적인 의미를 부여받습니다. 보이지 않는 처리를 위한 구분 기호를 나타내는 빨간색 테두리는 가상 개체라는 개체에 해당합니다. 주석을 사용하여 구분 기호를 표시하면 이해하기가 더 쉽습니다.

Illustrates the Input Processing, Intermediate Processing, and Output Processing control flow columns that are presented horizontally from left to right. The blocks in each control flow layer column have the same significance with regard to function of the column. Red borders are used to mark the delimiter for processing that is not visible.

제어 흐름 레이어는 기능이 있는 블록과 공존할 수 있습니다. 하위 기능 계층과 데이터 흐름 계층 사이에 위치합니다. 제어 흐름 레이어는 다음과 같은 경우에 사용됩니다.

  • 블록 수가 너무 많아진다

  • 모든 것은 데이터 흐름 레이어에 설명되어 있습니다.

  • 최소한의 부분적 의미를 부여할 수 있는 단위를 서브시스템으로 만든다.

계층 구조에 배치하면 내부 레이어 구성이 구성되어 이해하기 쉬워집니다. 또한 불필요한 레이어 생성을 방지하여 유지 관리성을 향상시킵니다.

모델이 블록만으로 구성되고 서브시스템의 혼합을 포함하지 않는 경우 수평 레이아웃이 입력/중간/출력 처리로 분할될 수 있으면 제어 흐름 레이어로 간주됩니다.

선택 레이어

선택 레이어를 모델링하는 경우:

  • 선택 레이어는 세로로 또는 나란히 작성해야 합니다. 어떤 방향을 선택했는지는 의미가 없습니다.

  • 선택 레이어는 제어 흐름 레이어와 혼합되어야 합니다.

서브시스템이 빨간색 테두리 안의 조건부 제어 흐름에 따라 하나의 서브시스템만 실행되도록 하는 스위치 기능을 갖는 경우 이를 선택 레이어라고 합니다. 입력 처리/중간 처리(조건부 제어 흐름)/출력 처리를 구성하므로 제어 흐름 계층이라고도 합니다.

제어 흐름 계층에서 가로 방향은 다른 의미를 갖는 처리를 나타냅니다. 동일한 의미를 갖는 병렬 처리는 수직적으로 구성됩니다. 선택 레이어에서는 가로, 세로 방향에 아무런 의미가 부여되지 않지만, 하나의 서브시스템만 실행할 수 있는 레이어를 보여줍니다. 예를 들면 다음과 같습니다.

  • 결합된 기능을 위쪽 또는 아래쪽으로 전환하여 시간순으로 변경

  • 1회째(리셋 직후)와 2회째에 연산 방식이 전환되는 설정을 전환합니다.

  • 대상 A와 대상 B 간 전환

Illustrates the Input Processing, Intermediate Processing, and Output Processing control flow columns that are presented horizontally from left to right. The blocks in each control flow layer column have the same significance with regard to function of the column. Blue borders are used to mark the selection layers that are grouped to flow horizontally across multiple control flow columns.

데이터 흐름 계층

데이터 흐름 레이어는 제어 흐름 레이어와 선택 레이어 아래에 있는 레이어입니다.

데이터 흐름 계층은 하나의 기능 전체를 나타냅니다. 입력처리, 중간처리, 출력처리가 구분되지 않습니다. 예를 들어, 분할할 수 없는 하나의 연속 계산을 수행하는 시스템입니다.

데이터 흐름 계층은 제외 조건이 적용되는 계층을 제외하고 서브시스템과 공존할 수 없습니다. 제외 조건은 다음과 같습니다.

  • 재사용 가능한 기능이 설정된 서브시스템

  • Simulink® 표준 라이브러리에 등록된 마스크된 서브시스템

  • 사용자가 라이브러리에 등록한 마스크된 서브시스템

간단한 데이터 흐름 레이어의 예.

Basic model that illustrates the left-to-right flow of data between blocks.

복잡한 데이터 흐름 계층의 예.

Complex model that illustrates the left-to-right flow of data between blocks.

위와 같이 입력 처리와 중간 처리를 명확하게 구분할 수 없는 경우 데이터 흐름 레이어로 표현됩니다.

동일한 신호의 피드포워드 응답과 피드백 응답이 동시에 계산되면 데이터 흐름 계층이 복잡해집니다. 이러한 경우 블록의 개수가 많더라도 기능을 명확하게 구분할 수 없는 경우 서브시스템 생성을 설계에 포함해서는 안 됩니다. 분할을 통해 의미가 부여되는 경우 제어흐름 레이어로 설계되어야 한다.

Simulink 모델과 임베디드 구현 간의 관계

실제 마이크로 컨트롤러를 실행하려면 Simulink 모델에서 생성된 코드를 마이크로 컨트롤러에 삽입해야 합니다. 이 요구 사항은 구성 Simulink 모델에 영향을 미치며 다음에 따라 달라집니다.

  • Simulink 모델이 기능을 모델링하는 정도

  • 생성된 코드가 삽입되는 방식

  • 임베디드 마이크로 컨트롤러의 스케줄 설정

내장형 마이크로 컨트롤러의 작업이 Simulink에 의해 모델링된 작업과 다를 때 구성이 크게 영향을 받습니다.

임베디드 소프트웨어의 스케줄러 설정

임베디드 소프트웨어의 스케줄러에는 싱글태스크 및 멀티태스크 설정이 있습니다.

싱글태스크 스케줄 설정

싱글태스크 스케줄러는 기본 샘플링을 사용하여 모든 처리를 수행합니다. 따라서 더 긴 샘플링 처리가 필요한 경우에는 CPU 부하가 최대한 균등하게 분산되도록 기능을 분할한 후 기본 샘플링을 사용하여 처리합니다. 그러나 균등 분할이 항상 가능한 것은 아니므로 모든 주기에 기능을 할당하지 못할 수도 있습니다.

예를 들어 기본 샘플링은 2밀리초이고 모델 내에는 2밀리초, 8밀리초, 10밀리초의 샘플링 속도가 존재합니다. 8밀리초 기능은 2밀리초 주기 4번마다 한 번씩 실행되고, 10밀리초 기능은 5번 주기마다 한 번씩 실행됩니다. 실행 횟수는 2밀리초마다 계산되며 이 빈도로 지정된 샘플링 기능이 실행됩니다. 2밀리초, 8밀리초, 10밀리초 주기는 모두 동일한 2밀리초로 계산된다는 사실에 주의해야 합니다. 모든 계산은 2밀리초 이내에 완료되어야 하기 때문에 8밀리초와 10밀리초 함수는 여러 개로 분할되어 모든 2밀리초 계산이 거의 동일한 양이 되도록 조정됩니다.

다음 다이어그램은 8밀리초 함수를 4개로 분할한 것과 10밀리초 함수를 5개로 분할한 것을 보여줍니다.

함수기본주파수오프셋
8밀리초0밀리초
2-28밀리초2밀리초
2-38밀리초4밀리초
2-48밀리초6밀리초
3-110밀리초0밀리초
3-210밀리초2밀리초
3-310밀리초4밀리초
3-410밀리초6밀리초
3-510밀리초8밀리초

Illustrates the splitting of the function. The 8 millisecond function is executed once for every four 2-millisecond cycles. The 10 millisecond function is executed once for every five 2-millisecond cycles.

빈도 분할 작업을 설정하려면:

  1. 구성 파라미터 Treat each discrete rate as a separate task를 지웁니다.

  2. Atomic Subsystem 블록 파라미터 샘플 시간에 대해 샘플링 기간 오프셋 값을 입력합니다. 샘플링 주기를 지정할 수 있는 서브시스템을 Atomic Subsystem이라고 합니다.

    Screen capture of the "Sample time" block parameter.

    멀티태스크 스케줄러 설정

    멀티태스킹 샘플링을 지원하는 실시간 OS를 사용하여 멀티태스킹 샘플링을 실행합니다. 싱글태스크 샘플링에서는 CPU 부하 균등화가 자동으로 이루어지지 않고 사람이 기능을 나누어 지정된 작업에 할당합니다. 멀티태스크 샘플링에서 CPU는 현재 상태에 따라 자동으로 계산을 수행합니다. 세부적인 설정을 할 필요가 없습니다. 우선 순위가 가장 높은 작업부터 시작하여 계산이 수행되고 결과가 출력되지만 작업 우선 순위는 사용자가 지정합니다. 일반적으로 빠른 작업에는 가장 높은 우선순위가 할당됩니다. 이 작업의 실행 순서는 사용자가 지정합니다.

    CPU processing of 2, 8, and 10 millisecond functions.

    느린 작업을 포함하여 계산이 주기 내에서 완료되는 것이 중요합니다. 우선순위가 높은 계산 처리가 완료되고 CPU를 사용할 수 있게 되면 다음 우선순위의 시스템에 대한 계산이 시작됩니다. 높은 우선순위 계산 프로세스는 낮은 우선순위 계산을 중단할 수 있으며, 그 후 중단되어 높은 우선순위 계산 프로세스가 먼저 실행될 수 있습니다.

샘플링 차이가 있는 서브시스템 연결의 효과

20밀리초 샘플링 간격의 서브시스템 B가 10밀리초 샘플링 간격의 서브시스템 A의 출력을 사용하는 경우 서브시스템 A의 출력 결과는 서브시스템 B가 컴퓨팅을 수행하는 동안 변경될 수 있습니다. 도중에 값이 변경되면 서브시스템 B의 계산 결과가 예상과 다를 수 있습니다. 예를 들어, 서브시스템 B의 첫 번째 계산에서 서브시스템 A의 출력을 비교하고, 이 출력을 기반으로 조건부 판단을 통해 결과를 계산합니다. 이 시점에서 비교 결과는 true입니다. 그런 다음 서브시스템 B의 끝에서 다시 비교됩니다. A의 출력이 다르면 비교 결과가 거짓일 수 있습니다. 일반적으로 이러한 형태의 함수 개발에서는 true, true로 생성된 로직이 true, false가 되어 예상치 못한 계산 결과가 생성되는 경우가 발생할 수 있습니다. 이러한 유형의 오작동을 방지하기 위해 작업이 변경되면 서브시스템 A의 출력 결과는 서브시스템 A 출력 신호에서 사용되는 것과 다른 RAM에서 사용되므로 서브시스템 B에서 사용되기 직전에 수정됩니다. 즉, 프로세스 중에 서브시스템 A 값이 변경되더라도 서브시스템 B가 보고 있는 값은 다른 RAM에 있으므로 아무런 영향도 미치지 않습니다.

Simulink에서 모델이 생성되고 Simulink에서 샘플링 간격이 다른 서브시스템이 연결되면 Simulink가 자동으로 필요한 RAM을 예약합니다.

그러나 직접 코딩한 코드와의 통합을 통해 서로 다른 샘플링 간격으로 입력값을 얻는 경우에는 임베딩 작업을 수행하는 엔지니어가 이러한 설정을 설계해야 합니다. 예를 들어, AUTOSAR를 사용하는 RTW 개념에서는 서로 다른 RAM이 모두 수신 및 내보내기 측에서 정의됩니다.

CPU processing of 2, 8, and 10 millisecond functions. If Function 2 uses computation results of Function 1, computation results for Function 1 do not change during computation for Functions 2-1, 2-2, 2-3, but there is a possibility that Functions 2-1, 2-2, 2-3 use different values that have been computed on the respective different time axes. Different RAM should be allocated for signal values with different rates.

싱글태스크 스케줄러 설정

동일한 2ms 주기 내에서는 신호값이 동일하지만, 2ms 주기가 다를 경우에는 앞선 것과 계산값이 달라집니다. Function 2-1과 2-2가 Function 1의 신호 A를 사용하는 경우, 2-1과 2-2는 서로 다른 시간의 결과를 사용한다는 점에 유의하십시오.

멀티태스크 스케줄러 설정

멀티태스크의 경우 계산 결과를 어느 시점에 사용할지 지정할 수 없습니다. 멀티태스크를 사용하면 항상 새 RAM에 다양한 작업에 대한 신호를 저장하십시오.

작업 내에서 새 계산이 수행되기 전에 모든 값이 복사됩니다.

CPU processing of 2, 8, and 10 millisecond functions. If Function 2 uses computation results of Function 1, it is possible that computation results from Function 1 will replace them while Function 2 is computing. For that reason, computation results that vary at the point when computation starts for each sampling are generally stored in a different RAM.