# 신호 흐름선도와 전달함수의 연관성

#### 신호 흐름선도의 개념과 기본 원리

제어공학에서 블록선도를 활용하여 시스템 전반의 물리적 동작 과정을 시각적으로 나타내는 것은 매우 효과적이다. 그러나 복잡한 상호 연결 관계를 보다 체계적으로 해석하기 위해서는 블록선도보다 더 정교한 기법이 필요해진다. 이때 도입되는 것이 바로 신호 흐름선도(signal flow graph)이다. 신호 흐름선도는 노드(node)와 가지(branch)로 구성되며, 각 노드는 신호가 담고 있는 물리적 혹은 추상적 변수를 나타낸다. 한 노드에서 다른 노드로 이어지는 가지는 그 경로를 통해 신호가 전달되는 경로와 전달 계수를 나타내며, 이를 통해 복잡한 시스템 내부에서의 신호 흐름을 정확하게 추적할 수 있다.

신호 흐름선도에서 노드는 하나의 스칼라 값(혹은 벡터)로 간주된다. 시스템 내에서 여러 개의 노드가 각각 서로 다른 단계 또는 전달 요소와 연결되어 있으므로, 노드 간의 양방향 혹은 단방향 흐름을 통해 전체 시스템을 설명할 수 있다. 이러한 신호 흐름선도는 블록선도와 마찬가지로 시스템이 갖고 있는 일반적인 선형 관계를 나타내는 데 강력하지만, 차이점은 루프(loop), 분기, 병합 등의 구조를 더욱 직관적이고 수학적으로 체계적인 방식으로 다룰 수 있다는 것이다.

#### Mason의 공식과 전달함수 도출

신호 흐름선도가 유용한 이유 중 하나는 Mason의 공식(Mason’s Gain Formula)을 통해 입력에서 출력까지의 전달함수를 직접적으로 구할 수 있기 때문이다. Mason의 공식은 모든 가능한 경로(정방향 경로)와 이에 포함된 루프들을 한꺼번에 고려하여, 전달함수를 하나의 식으로 정리해주는 강력한 수학적 방법론이다. 이는 블록선도를 단순화하거나 루프를 제거하는 기법과 유사하지만, 보다 일반화된 형태로 제시된다는 장점이 있다.

Mason의 공식은 다음과 같은 형태로 쓸 수 있다.

$$
\frac{Y}{U} = \frac{\displaystyle \sum\_{k=1}^{N} P\_k \Delta\_k}{\Delta\_0}
$$

여기서

* $Y$는 출력 노드에 해당하는 변수이고
* $U$는 입력 노드에 해당하는 변수이며
* $P\_k$는 $k$번째 정방향 경로(forward path)의 전이함수(해당 경로를 따라 곱해진 모든 가지들의 전달 계수)
* $\Delta\_0$는 모든 고립(loop가 없는) 정방향 경로를 제외한 전체 루프의 결합(bonding) 효과를 반영한 행렬식과 유사한 개념
* $\Delta\_k$는 $k$번째 정방향 경로가 포함되어 있는 루프를 제외한 나머지 루프들의 결합 항
* $N$은 가능한 모든 정방향 경로의 개수

로 정의된다.

신호 흐름선도에서 루프(loop)란 어떤 노드에서 출발하여 그 노드로 다시 돌아오는 닫힌 경로를 의미한다. 각 루프에 대한 전이함수는 닫힌 경로를 이루는 모든 가지의 전달 계수를 곱하여 구하며, 두 루프가 공유하는 노드가 있으면 그 루프들은 상호 의존(loop coupling)이 있다고 본다. Mason의 공식에 나타나는 $\Delta\_0$와 $\Delta\_k$가 바로 이 루프들의 상호작용을 고려하는 핵심 지표가 된다.

#### 단순 예시를 통한 이해

예를 들어 단일 입력 $u(t)$와 단일 출력 $y(t)$를 갖는 시스템에서, 신호 흐름선도에 두 개의 정방향 경로와 세 개의 루프가 존재한다고 가정해 보자. 각각의 정방향 경로 전이함수를 $P\_1, P\_2$라 하고, 세 루프 전이함수를 $L\_1, L\_2, L\_3$라 하며, 루프 간 결합 여부에 따라 특정 항들이 생성될 수 있다. 이를 Mason의 공식에 대입하면 다음과 같은 형태가 된다.

$$
\frac{y(t)}{u(t)} = \frac{P\_1 \Delta\_1 + P\_2 \Delta\_2}{\Delta\_0}
$$

여기서 $\Delta\_0 = 1 - (L\_1 + L\_2 + L\_3) + (L\_1 L\_2 + L\_2 L\_3 + L\_3 L\_1) - (L\_1 L\_2 L\_3)$ 와 같은 구조를 띠게 되며, $\Delta\_1$는 $P\_1$이 포함하는 루프를 제외한 나머지 루프들의 결합을 반영한 항이 될 것이다. 루프의 갯수와 상호 결합 방식에 따라 $\Delta\_0$와 $\Delta\_k$의 구체적인 형태는 달라지지만, 개념적으로는 위와 같은 다항식으로 확장된다고 볼 수 있다. 따라서 신호 흐름선도를 구성한 뒤 Mason의 공식에 따라 단계별로 계수들을 산출하면, 별도의 블록선도 단순화 과정 없이도 시스템의 전체 전달함수를 바로 도출할 수 있다.

#### 전이함수와 신호 흐름선도의 행렬적 해석

신호 흐름선도는 노드 사이의 관계를 선형 행렬 방정식으로도 표현할 수 있다. 모든 노드를 순서대로 나열하고, 그 노드 간 연결 계수를 행렬 형태로 나열하면, 어떤 행렬 방정식을 통해 각 노드 변수를 구할 수 있다. 예를 들어 $n$개의 노드가 있다고 할 때, 노드 변수들을 $\mathbf{x} = \[x\_1, x\_2, \ldots, x\_n]^T$ 라고 두면 다음과 같은 선형 방정식으로 나타낼 수 있다.

$$
\mathbf{x} = \mathbf{A}\mathbf{x} + \mathbf{b}
$$

$\mathbf{A}$는 가지(branch)의 전달 계수를 적절히 배치한 $n \times n$ 행렬이며, $\mathbf{b}$는 시스템으로 유입되는 외부 입력에 대응하는 항이다. 이를 재정렬하면

$$
(\mathbf{I} - \mathbf{A}) \mathbf{x} = \mathbf{b}
$$

의 꼴이 되고, 따라서

$$
\mathbf{x} = (\mathbf{I} - \mathbf{A})^{-1} \mathbf{b}
$$

로 해를 구할 수 있다. 이 방식은 신호 흐름선도의 구조를 모색하기보다는 행렬의 역행렬을 구하는 절차로 귀결된다. 일반적인 대규모 시스템에서 행렬 역연산이 까다로울 수 있다는 단점이 있으나, 이론적으로는 Mason의 공식과 등가인 해를 제공한다. 실제로 Mason의 공식을 심도 있게 이해하면, 행렬로 표현되는 부분을 스칼라 계수로 단순화하여 전체 전달함수를 구하는 것과 동일한 원리임을 알 수 있다.

#### 전이 특성의 해석

신호 흐름선도에서 노드 간 가지의 방향성과 계수를 통해 시스템 전반의 전이 특성을 종합적으로 관찰할 수 있다. 예를 들어, 어떤 노드로 향하는 입력 가지의 계수가 매우 크다면, 해당 노드가 시스템 동작에서 상대적으로 높은 이득을 갖는 경로일 수 있다. 반대로, 음의 이득을 갖는 가지가 존재하면 그 경로는 위상 반전이나 부호 반전에 기여하며, 루프 이득(loop gain)에 영향을 미쳐 해석이 필요해진다. 이처럼 단일 입출력 시스템에서든, 다중 입출력 시스템에서든, 신호 흐름선도는 시스템 내부의 모든 신호 경로를 명확하게 구조화하여 보여주므로, 각각의 경로가 시스템 전체에 미치는 영향력을 수학적으로 분석하기에 편리한 도구가 된다.

#### 블록선도와 신호 흐름선도의 상호 변환

블록선도는 각 노드가 동작 블록(주로 전송 요소)을 중심으로 구성되며, 입력과 출력 간의 흐름이 직관적으로 보이도록 배열된다. 한편 신호 흐름선도는 노드들이 시스템에서 취급되는 변수를 표현하고, 그 사이를 연결하는 가지가 수학적 관계(이득 혹은 전달 계수)를 나타낸다는 점이 다르다. 블록선도와 신호 흐름선도 간에는 표현 차이가 있지만, 시스템을 설명하는 점에서는 서로 등가적이다. 따라서 둘 중 어느 형태를 사용하더라도 동일한 전달함수를 구할 수 있다.

블록선도를 신호 흐름선도로 변환하기 위해서는 블록선도의 각 연산 노드를 정의하고, 그 연산 노드에 관련된 입력 및 출력 변수들을 명확히 명명한 뒤에, 블록에서 입력 신호와 출력 신호 사이를 나타내는 가지에 대한 전달 계수를 지정한다. 피드백 루프가 존재할 경우, 해당 블록을 통해 신호가 순환되는 구간을 신호 흐름선도 상에서 닫힌 경로로 표현하게 되며, 그때의 이득이 루프 이득으로 해석된다.

블록선도에서 내부 신호가 서로 중첩되거나 합성되는 노드(서머(summer), 분기점, 분배점 등)를 신호 흐름선도에서 어떻게 나타낼지도 고려해야 한다. 예를 들어 블록선도에서 서머는 서로 다른 입력들을 단순히 더하는 기능을 갖는다. 신호 흐름선도에서는 이 서머를 별도의 노드로 둔 뒤, 각 입력 노드에서 가지를 통해 전달 이득을 모두 1로 할당하여 합성 노드에 연결하면 된다. 분기점 역시 한 노드에서 다수의 노드로 가지가 나가는 형태로 표현되는데, 블록선도에서 분기점에 해당하는 노드 값을 하나의 노드로 명명하고, 그것을 여러 개의 가지로 뻗어 나가게 함으로써 동일한 효과를 얻을 수 있다.

이런 변환 과정을 통해 신호 흐름선도로 재정렬한 시스템은 Mason의 공식 적용이 쉬워지고, 각 경로별 특성을 한눈에 파악할 수 있다. 특히, 복잡한 피드백 루프가 여러 겹 중첩되어 있거나, 병렬 경로가 혼재되어 있는 경우에도, 신호 흐름선도 방식으로 구조를 정립하면 기하급수적으로 늘어나는 루프와 경로를 체계적으로 다룰 수 있다.

#### 피드백 시스템 해석과 안정성

신호 흐름선도가 갖는 또 다른 장점은 피드백 시스템에서의 안정성과 극점(pole) 구조 해석에 용이하다는 점이다. 전형적인 피드백 시스템은 폐루프 전달함수를 구한 뒤 그 전달함수의 분모(특성 방정식)의 근사를 바탕으로 안정성을 판단하게 되는데, 신호 흐름선도는 루프 이득 및 경로의 이득이 특성 방정식에 어떻게 참여하는지를 명시적으로 보여준다. Mason의 공식을 사용하면 루프의 상호 결합까지 반영한 특성 방정식을 직접적으로 얻을 수 있으며, 이를 통해 극점을 해석하거나 근사 계산이 가능하다.

예를 들어 하나의 폐루프 시스템에서 블록선도로 얻어진 폐루프 전달함수가 고전적인 형태

$$
\frac{Y(s)}{U(s)} = \frac{G(s)}{1 + G(s)H(s)}
$$

와 같이 표현된다면, 신호 흐름선도에서는 $G(s)$와 $H(s)$가 이루는 루프를 노드와 가지를 통해 상세하게 묘사할 수 있다. 이때 단순히 $G(s)$와 $H(s)$ 두 블록만 고려하는 것이 아니라, 내부적으로 더 복잡한 중첩 루프나 병렬 경로가 포함되어 있을 수도 있다. 이러한 상황을 신호 흐름선도로 표현하면, Mason의 공식이

$$
\frac{Y(s)}{U(s)} = \frac{\sum P\_k \Delta\_k}{\Delta\_0}
$$

의 형태로 확장되고, 모든 루프의 결합 항을 명시적으로 보여주므로 여러 부분 루프가 조합된 시스템의 안정성 판단에 도움이 된다.

#### 다중 입출력(MIMO) 시스템

블록선도나 신호 흐름선도 기법은 단일 입력 단일 출력(SISO) 시스템에 국한되지 않는다. 다중 입력 다중 출력(MIMO) 시스템의 경우에도, 각 입력 변수를 노드로 두고 각 출력 변수를 별도의 노드로 구성하여, 내부 노드들을 경유시키는 구조로 신호 흐름선도를 구성할 수 있다. 이때 노드 간 전달 계수는 행렬 형태로 정의될 수도 있으며, Mason의 공식 역시 행렬적 확장 버전이 적용된다.

예를 들어 두 개의 입력 $u\_1(t), u\_2(t)$와 두 개의 출력 $y\_1(t), y\_2(t)$를 갖는 시스템에서, 내부 노드가 여러 개 존재한다고 하면, 블록선도를 직접 그리는 대신 신호 흐름선도로 표현하여 각 노드와 가지를 정리한 뒤, 이를 기반으로 다중 경로 해석을 시도한다. 혹은 행렬적 해석으로 옮겨가

$$
\mathbf{x}(t) = \mathbf{A} \mathbf{x}(t) + \mathbf{B}\mathbf{u}(t)
$$

에서

$$
(\mathbf{I} - \mathbf{A}) \mathbf{x}(t) = \mathbf{B}\mathbf{u}(t)
$$

와 같은 형태로 단일화한다. 여기서 $\mathbf{u}(t)$는 두 개 이상의 입력, $\mathbf{x}(t)$는 내부 상태 노드를 벡터 형태로, $\mathbf{y}(t)$는 출력 노드를 벡터 형태로 표현할 수 있다. 이처럼 MIMO 시스템에서 신호 흐름선도를 적절히 구성하면, 블록선도상의 복잡한 상호 연결 구조를 한층 더 체계적이고 투명하게 분석할 수 있다.

#### 신호 흐름선도의 응용과 제한점

신호 흐름선도는 전형적인 선형 시스템에서 경로 이득을 추적하거나, 폐루프 전달함수를 구하는 데는 매우 강력한 도구다. 하지만 특정 상황에서는 이 기법을 적용하기 위해 변환 과정이 까다로울 수 있다. 예를 들어 시간지연이 존재하거나, 비선형 요소가 혼재되어 있으면, 신호 흐름선도상에서 단순 이득이나 전송 함수로 표시하기 어려운 블록들이 등장한다. 이때는 블록선도와 신호 흐름선도를 혼합하거나, 수치 해석 기법과 병행해야 한다.

또한 Mason의 공식은 여러 루프 간 상호 결합이 복잡해질수록, 그 모든 항을 완전하게 세분화해야 하므로 계산 과정이 수작업으로는 오류가 생기기 쉽다. 따라서 전산도구를 활용해 시스템의 신호 흐름선도를 데이터 구조로 표현하고, Mason의 공식을 알고리즘화하여 전달함수를 심볼릭(Symbolic)으로나 수치적으로 계산하는 접근법이 제안되기도 한다. 이러한 방식을 통해 대규모 시스템의 신호 흐름선도를 취급할 때 생기는 실수를 줄이고, 계산 과정을 자동화할 수 있다.

#### 예제 구현 관점

간단한 SISO 예제를 들어 보면, 블록선도에서 $G\_1(s)$, $G\_2(s)$ 등의 직렬, 병렬 연결과 피드백 루프 $H\_1(s)$, $H\_2(s)$가 복합적으로 연결되어 있는 구조를 신호 흐름선도로 바꿀 때, 합성 노드와 분기 노드를 세분화하여 각각의 내부 변수를 정의하고, 그 사이를 가로지르는 가지를 해당 블록의 전달함수로 설정한다. 모든 내부 노드를 명명한 뒤 Mason의 공식을 적용하면, 종국적으로는 전체 폐루프 전달함수를 하나의 분수 표현으로 구하게 된다.

이 과정을 C++로 시연할 때, 먼저 각 노드 번호를 매핑하고, 노드 간 연결 관계를 구조체나 클래스로 정의하여 신호 흐름선도에 대응하는 그래프 자료구조를 만든다. 그 후, 모든 정방향 경로 탐색, 루프 탐색, 루프 결합 관계 파악 등의 알고리즘을 차례로 수행하여 Mason의 공식에 필요한 항들을 구한다. 마지막으로 전체 전달함수를 기호 연산을 통해 산출한다. 물론 실제 프로젝트에서는 수학적 단순화 과정을 심볼릭 라이브러리나 CAS(Computer Algebra System)에 의존하기도 하며, 이때 오차 없는 표현을 얻으려면 유리함수 형태를 유지할 수 있는 CAS를 사용해야 한다.

#### Mason의 공식 심화 고찰

Mason의 공식은 블록선도를 비롯해 다양한 시스템 표현에서 유도된 신호 흐름선도를 토대로 전체 전달함수를 산출하는 매우 일반화된 방법이다. 이를 심층적으로 이해하기 위해서는, 정방향 경로(forward path)의 정의와 루프(loop) 간 결합(coupling)을 어떻게 파악하는지가 핵심이다. 정방향 경로는 입력 노드에서 시작하여 출력 노드로 도달하는, 중간에 어떤 노드를 중복해서 거치지 않는 경로를 말한다. 이 경로 위에 놓인 모든 가지(branch)의 전달 계수를 곱한 값이 곧 해당 경로의 전이함수가 된다.

루프는 한 노드에서 시작하여 동일한 노드로 되돌아오는 닫힌 경로이지만, 중간 경로에서 노드를 중복하여 거쳐서는 안 된다. 여러 개의 루프가 존재할 때, 어떤 두 루프가 서로 공유하는 노드를 갖지 않으면 이 두 루프는 서로 독립이라고 하며, 공유 노드가 있을 경우 결합 관계가 생긴다. Mason의 공식에서 $\Delta\_0$와 $\Delta\_k$가 바로 이 결합 관계를 계수적으로 반영한 요소로, 모든 루프 조합에 대해 부호를 적절히 배분하여 다항식 형태로 정리된다.

예를 들어 세 개의 루프 $L\_1, L\_2, L\_3$가 서로 독립이면, $\Delta\_0$ 항에서 이들의 결합 효과는

$$
\Delta\_0 = 1 - (L\_1 + L\_2 + L\_3) + (L\_1 L\_2 + L\_2 L\_3 + L\_3 L\_1) - (L\_1 L\_2 L\_3)
$$

로 나타난다. 만약 세 루프 중 일부가 서로 노드를 공유한다면, 위와 같은 다항식 구조가 변형된다. Mason의 공식에서 모든 결합 관계가 귀납적으로 수용되기 때문에, 복잡한 다중 루프 시스템에서도 입력-출력 전달함수를 직접 계산할 수 있다.

#### 신호 흐름선도 해석과 특성 다항식

선형 시불변(LTI) 시스템을 대상으로 하면, 블록선도에서 얻어지는 폐루프 전달함수의 분모가 곧 시스템의 특성 다항식을 의미한다. 신호 흐름선도를 구성해 Mason의 공식을 적용하면, 루프 이득(loop gain)의 모든 조합이 정리되어 그 결과가 분모 항으로 나타난다. 이는 곧 안정성 해석에 필요한 정보로 이어진다.

예를 들어 어떤 SISO 피드백 구조에서 다음과 같은 형태의 폐루프 전달함수를 얻었다고 해보자.

$$
\frac{Y(s)}{U(s)} = \frac{N(s)}{D(s)}
$$

여기서 $D(s)=0$이 특성 방정식이 된다. 신호 흐름선도를 통해 얻은 $D(s)$에는 모든 루프의 전이 계수들이 적절히 조합되어 포함되어 있으며, 루프 결합 효과에 따라 항이 복잡하게 형성될 수 있다. 그러나 Mason의 공식은 이 조합 과정을 알기 쉽게 정리해 주므로, 여러 경로와 루프를 반복적으로 단순화하지 않고도, 곧바로 $D(s)$를 산출하는 장점을 제공한다.

#### 내부 변수 정의와 노드 확장 기법

복잡한 물리 시스템 혹은 블록선도에서 신호 흐름선도 모델을 세우기 위해서는, 시스템 내에서 발생하는 모든 중간 신호들을 노드로 재정의해야 할 수도 있다. 블록선도에서 여러 개의 서머(summer), 분기점(branching point)이 등장하면, 이를 노드로 분할하여 각각의 변수를 명명하는 과정이 필요하다.

예를 들어, 어떤 블록선도에서 세 개의 신호가 합성되는 서머가 있다면, 신호 흐름선도에서는 서머에 해당하는 노드에 세 개의 가지가 유입되는 구조를 만든다. 이때 유입 가지의 계수는 각 신호가 서머 노드에 기여하는 크기(대개 1 혹은 -1 등)가 된다. 블록선도 내 피드백 루프 역시, 신호 흐름선도에서는 노드에서 출발하여 같은 노드로 돌아오는 닫힌 경로가 되어 Mason의 공식에 직접 참여한다.

#### 높은 차수 시스템과 전산 해법

고차(高次) 시스템, 즉 차수가 매우 큰 전달함수를 갖거나 루프가 많이 중첩된 복잡한 시스템의 경우, 수작업으로 신호 흐름선도를 단순화하여 Mason의 공식을 적용하는 것은 현실적으로 어렵다. 중첩 루프나 분기 경로가 많을수록 서로 결합된 루프 항이 기하급수적으로 늘어나므로, 각 항을 추적하기가 쉽지 않다.

이때는 신호 흐름선도를 그래프 자료구조로 관리하고, Mason의 공식에 대응되는 알고리즘을 프로그래밍하여 자동으로 계산하는 방식이 효과적이다. 예를 들어 C++에서 클래스를 정의해 노드 및 가지 정보를 입력받으면, 정방향 경로 탐색 알고리즘(깊이 우선 탐색이나 너비 우선 탐색 변형)을 활용해 모든 정방향 경로를 찾을 수 있고, 루프 탐색 알고리즘으로는 그래프 순환(cycle)을 검출하여 각 루프 이득을 산출할 수 있다. 그 후 루프 간 독립성 판정, 혹은 공유 노드 유무 판정을 자동화해, Mason의 공식을 위한 $\Delta\_0$와 $\Delta\_k$를 생성한다.

심볼릭 수학 라이브러리를 연동하면, 각 경로와 루프의 전이 계수를 $s$의 다항식 형태로 유지한 채 연산하여, 최종적으로 얻어지는 전달함수를 유리함수(rational function) 형태로 간단히 정리해줄 수 있다. 이는 고차 다항식에 대해 수치 해석적 근사만으로 다루는 방식보다, 전달함수의 극과 영점(pole-zero) 정보를 해석하는 데 훨씬 투명하다.

#### 시스템 해석의 확장성

신호 흐름선도의 표현은 물리적 차원에서 제어공학뿐만 아니라, 전기회로망 이론, 열전달 네트워크, 유체 시스템 등 다양한 영역에도 확장하여 적용 가능하다. 선형화가 가능한 범위 내라면, 물리적 구성요소를 블록이나 노드로 치환하고, 그 사이의 연결 관계를 전달 계수로 삼아 신호 흐름선도로 만들 수 있기 때문이다. 다만 실제로는 이러한 절차가 항상 간단하지 않고, 일부 비선형 요소나 대규모 분산 파라미터가 섞여 있을 때는 별도의 선형 근사 과정이 필요하다.

특히 MIMO 구조가 일반화된 현대 제어 시스템에서는 상태방정식 접근이 훨씬 간단할 때도 많다. 그럼에도 불구하고 특정 상황에서 신호 흐름선도가 제공하는 직관적 해석(예: 어떤 경로가 출력에 가장 크게 기여하는지, 어떤 루프가 시스템을 불안정화하는지 등)은 매우 유용하다. 블록선도만 보고서 단순화 과정을 거치는 것과 달리, 신호 흐름선도는 경로별 세부 이득 구조와 상호 결합을 한눈에 보여주는 시각적 도식이기 때문이다.

#### 디지털 제어에서의 신호 흐름선도 적용

아날로그 시스템에서와 마찬가지로, 디지털 제어 시스템에서도 신호 흐름선도를 활용할 수 있다. 차이가 있다면 시스템 구성 요소가 $z$-영역에서 표현된다는 점이다. 예컨대, $G(z)$라는 전송 요소와 $H(z)$라는 피드백 요소를 포함하는 폐루프 시스템이 있을 때, 블록선도 자체는 여전히 “입력→블록→출력” 형태를 유지하지만, 그 내부 전달함수를 $G(s)$에서 $G(z)$로 바꾸고 적분기나 미분기 대신 지연요소 혹은 차분 방정식을 사용한다.

신호 흐름선도 또한 같은 방식으로 변환 가능하다. 하나의 노드에서 다른 노드로 향하는 가지에 부여되는 전달 계수(이득)가 $z$-영역 상에서의 다항식이나 유리함수가 되고, 루프 이득(loop gain)은 $z$-영역으로 표현된다. 결국 Mason의 공식이나 행렬 방정식 기법도 동일하게 적용되며, 전체 전달함수를 $\displaystyle \frac{Y(z)}{U(z)}$ 형태로 얻을 수 있다. 이 과정에서 주의해야 할 점은 샘플링 시간이나 $z$-변수 해석이다. 특히 $z = e^{sT}$ (단 $T$는 샘플링 주기)로의 변환 과정에서 시간축의 이산화(discretization)에 따른 차이가 발생하므로, 연속 시스템에서 썼던 직관을 그대로 적용하기는 어렵지만, 신호 흐름선도라는 구조적 표현 방식 자체는 그대로 유효하다.

#### 구현 예시: 다이어그램으로 나타내는 신호 흐름선도

아래는 단순화된 형태의 신호 흐름선도를 mermaid로 표현한 예시다. 예를 들어 $U$에서 $Y$로 가는 두 개의 정방향 경로가 존재하고, 그중 하나는 내부 노드 $X$를 거쳐 가며, 피드백 루프가 $Y$에서 $X$로 돌아온다고 하자.

{% @mermaid/diagram content="flowchart LR
U((U)) -->|"G1(s)"| X((X))
X -->|"G2(s)"| Y((Y))
U -->|"G3(s)"| Y
Y -->|"-H(s)"| X" %}

위 도식에서

* U, X, Y가 각각 노드가 되며
* G1(s), G2(s), G3(s), H(s)는 전달 요소가 된다.

이 시스템은 입력 $U$에서 출력 $Y$로 가는 두 개의 정방향 경로 (U→X→Y, U→Y)와 하나의 음성 피드백 루프 (Y→X→Y)를 포함한다. Mason의 공식을 적용하면, 루프를 형성하는 이득 항과 정방향 경로 항을 모두 고려하여 전체 전달함수를 얻을 수 있다.

#### Mason의 공식 적용 절차 예시

위 mermaid 그림에 해당하는 신호 흐름선도를 대상으로 개념적인 Mason의 공식 계산을 간단히 살펴보면, 먼저 정방향 경로를 정의한다.

* 경로 1: $U \to X \to Y$의 전이 계수는 $G\_1(s),G\_2(s)$가 된다.
* 경로 2: $U \to Y$의 전이 계수는 $G\_3(s)$가 된다.

피드백 루프는 $Y \to X \to Y$로서, 그 전이 계수는 $-H(s),G\_2(s)$이다. 음의 부호는 블록선도나 신호 흐름선도에서 피드백이 “-” 단자로 들어가는 형태를 표현한 것에 상응한다.

정방향 경로가 2개이므로, Mason의 공식에서 분자의 합은

* $\displaystyle P\_1 \Delta\_1 + P\_2 \Delta\_2$ 가 된다.
* $\displaystyle P\_1 = G\_1(s) G\_2(s)$,
* $\displaystyle P\_2 = G\_3(s)$.

루프는 하나뿐이므로, 루프 간 결합은 고려할 필요가 없고,

$$
\displaystyle \Delta\_0 = 1 - \bigl( -,H(s),G\_2(s) \bigr) = 1 + H(s),G\_2(s)
$$

$\displaystyle \Delta\_1$는 정방향 경로 1이 루프와 노드를 공유하므로, 해당 루프를 제외하면 고려할 루프가 없으므로 $\Delta\_1 = 1$이다. 마찬가지로, $\Delta\_2$도 경로 2가 루프와 노드를 공유하므로(출력 노드와 그 피드백 루프) 루프 제외 시 남는 루프가 없으므로 $\Delta\_2 = 1$이 된다.

이제 Mason의 공식을 적용해 전체 전달함수를 쓰면,

$$
\frac{Y(s)}{U(s)} = \frac{G\_1(s) G\_2(s) \cdot 1 + G\_3(s) \cdot 1}{1 + H(s) G\_2(s)}
$$

로 정리된다.

#### C++로 구현하는 단순 구조 예시

신호 흐름선도를 계산하기 위한 간단한 C++ 예시 코드를 아래에 제시한다. 이 코드는 노드와 가지에 대한 정보를 그래프 형태로 저장한 뒤, 모든 정방향 경로와 루프를 탐색해 Mason의 공식을 구성하는 골격을 보여주는 형태로 가정한 것이다. 실제로는 $s$나 $z$의 다항식까지 심볼릭으로 처리하려면 별도의 라이브러리가 필요하다.

```cpp
#include <iostream>
#include <vector>
#include <string>
#include <unordered_map>

// 간단한 구조체: 가지 정보
struct Branch {
    int fromNode;
    int toNode;
    std::string transfer; // 예: "G1(s)", "H(s)" 등
};

class SignalFlowGraph {
public:
    // 노드 이름을 int로 매핑
    std::unordered_map<std::string, int> nodeIndex;
    std::vector<Branch> branches;
    
    int nodeCount = 0;

    int addNode(const std::string& nodeName) {
        if(nodeIndex.find(nodeName) == nodeIndex.end()) {
            nodeIndex[nodeName] = nodeCount++;
        }
        return nodeIndex[nodeName];
    }

    void addBranch(const std::string& from, const std::string& to, const std::string& tf) {
        int f = addNode(from);
        int t = addNode(to);
        Branch b{f, t, tf};
        branches.push_back(b);
    }
};

int main() {
    SignalFlowGraph sfg;

    // 예시: U -> X (G1(s)),  X -> Y (G2(s)), U -> Y (G3(s)), Y -> X (-H(s))
    sfg.addBranch("U", "X", "G1(s)");
    sfg.addBranch("X", "Y", "G2(s)");
    sfg.addBranch("U", "Y", "G3(s)");
    sfg.addBranch("Y", "X", "-H(s)");

    // 실제로는 여기서 모든 정방향 경로와 루프를 DFS/BFS 등으로 찾아
    // Mason's Gain Formula에 필요한 항을 구성한다.
    // 이 코드는 단순 데모이므로 실제 알고리즘 구현은 생략.
    
    std::cout << "Signal Flow Graph for a simple example." << std::endl;
    for(auto &b : sfg.branches) {
        std::cout << "Node " << b.fromNode << " -> Node " << b.toNode
                  << " : " << b.transfer << std::endl;
    }

    return 0;
}
```

이 코드는 노드와 가지를 등록하는 기초적인 부분만 보여주고, Mason의 공식에 필요한 루프 검출과 정방향 경로 검출 알고리즘 구현 부분은 생략했다. 실제로 루프 검출을 위해서는 그래프의 모든 사이클을 탐색하는 알고리즘(예: Johnson’s algorithm)을 활용할 수 있으며, 정방향 경로 탐색은 입력 노드에서 출력 노드까지의 모든 단순 경로(simple path)를 나열하는 방식으로 구현할 수 있다.

심볼릭 처리 측면에서는, `"G1(s)"`, `"H(s)"` 등의 문자열을 단순히 저장하는 대신, 다항식 혹은 유리함수 형태로 내부 표현하고 곱셈이나 덧셈 연산을 지원해주어야 Mason의 공식 계산 시 혼합 연산을 정확히 처리할 수 있다. 이는 C++에서 오버로딩(operator overloading) 기법을 사용하거나, 외부 라이브러리(예: SymEngine, GiNaC 등)를 연계하여 구현할 수 있다.

#### 실제 적용 시 고려사항

신호 흐름선도를 활용해 전달함수를 구하는 과정은, 특히 시스템의 규모가 커지거나 루프 결합이 복잡해질수록 매우 체계적인 접근을 요구한다. 블록선도에서 간단하게 보이던 연결 구조도, 노드 관점으로 세부 분해하면 엄청나게 많은 가지와 노드를 거느린 신호 흐름선도가 된다. 따라서 모든 내부 노드에 대해 중복 없이 식별자를 부여하고, 각 가지를 일관성 있게 추가하는 작업이 필요하며, 루프나 경로를 전산적으로 탐색해 Mason의 공식을 처리할 때도 각 경로와 루프가 중복 계산되지 않도록 주의해야 한다.

이 모든 과정을 통합적으로 잘 진행한다면, 전통적인 블록선도 단순화 절차(루프 제거, 병렬/직렬/피드백 공식 등)를 여러 단계로 수행하지 않고도, 일괄적으로 입력-출력 전달함수를 구할 수 있다는 장점이 있다.

#### 상태방정식 접근과 신호 흐름선도의 연관성

신호 흐름선도를 이용해 전반적인 입력-출력 전달함수를 얻는 것과, 상태방정식을 세워 해석하는 것은 이론적으로 동등한 결과를 낳는다. 예를 들어 $n$차 선형 시불변 시스템이 상태공간 표현

$$
\begin{aligned}
\dot{\mathbf{x}}(t) &= \mathbf{A}\mathbf{x}(t) + \mathbf{B}\mathbf{u}(t),
\\
\mathbf{y}(t) &= \mathbf{C}\mathbf{x}(t) + \mathbf{D}\mathbf{u}(t)
\end{aligned}
$$

을 갖는다고 하자. 이를 블록선도 형태로 나타내면, $\mathbf{x}(t)$를 묘사하는 적분 블록과 행렬 연산 블록들이 연결된 구조를 얻게 된다. 이를 다시 신호 흐름선도로 변환하면, 상태변수마다 하나의 노드가 생기고, 입력 $\mathbf{u}(t)$와 출력 $\mathbf{y}(t)$가 각각 노드로 표현되며, 가지(branch)에 해당하는 계수들은 $\mathbf{A}, \mathbf{B}, \mathbf{C}, \mathbf{D}$의 원소들로 채워지게 된다.

이 과정을 통해 상태방정식으로부터 얻은 모델과 신호 흐름선도가 대응함을 확인할 수 있다. 사실 상태방정식 접근은 행렬을 통해 시스템 전반을 묘사하므로, Mason의 공식을 사용하는 신호 흐름선도 접근과 비교했을 때 실무적으로 간결할 때가 많다. 하지만 신호 흐름선도가 주는 직관적 그래프 구조는, 여러 상호 연결 관계와 폐루프 간섭을 시각적으로 즉시 파악하기 좋기 때문에, 대규모 시스템이나 교육용 예시에서 자주 활용된다.

#### 캐노니컬한 형태와 신호 흐름선도

상태방정식에서 흔히 언급되는 캐노니컬(canonical) 형태는 최소한의 상태변수를 사용해 시스템을 표현하는 것이다. 예를 들어 제어 캐노니컬 형(control canonical form), 관측 캐노니컬 형(observable canonical form) 등으로 바꿔 쓰면, 행렬 $\mathbf{A}, \mathbf{B}, \mathbf{C}, \mathbf{D}$가 특정 패턴을 갖는다. 이를 블록선도로 옮기면, 일부 직렬 형태나 피드백 요소가 명확하게 드러나며, 신호 흐름선도로 표현할 때도 비교적 간단한 구조의 노드 배열을 얻게 된다.

예를 들어 3차 시스템에서 제어 캐노니컬형은

$$
\mathbf{A} =  \begin{pmatrix}
0 & 1 & 0
\ 0 & 0 & 1
\ -a\_3 & -a\_2 & -a\_1
\end{pmatrix},
\quad \mathbf{B} = \begin{pmatrix}
0 \ 0 \ b
\end{pmatrix},
\quad \mathbf{C} = \begin{pmatrix}
c\_1 & c\_2 & c\_3
\end{pmatrix}, \quad \mathbf{D} = d
$$

의 꼴로 나타날 수 있다. 이를 신호 흐름선도로 구성하면, 각 상태변수 $x\_1, x\_2, x\_3$가 일렬로 연결되고, 적절한 피드백 가지를 통해 $x\_3$에서 $x\_1$로 전달되는 이득이 $-a\_3$, $-a\_2$, $-a\_1$ 형태로 배치되는 등, 하나의 체계적인 그래프가 형성된다. 이처럼 캐노니컬형 구조는 상태변수 간 결합을 단순화하여 놓았기 때문에, 신호 흐름선도 역시 직렬·피드백 경로가 명료하다.

#### RLC 회로망과 신호 흐름선도

전기회로망 이론에서 RLC 소자(저항 R, 인덕터 L, 커패시터 C)가 연결된 2차 혹은 고차 회로를 해석할 때도, 이를 KCL(키르히호프 전류법칙)과 KVL(키르히호프 전압법칙)로부터 상태방정식을 세우고, 곧바로 신호 흐름선도로 나타낼 수 있다.

가령 2차 RLC 직렬회로에서 전압 입출력을 정의할 때, 상태변수로 인덕터 전류와 커패시터 전압을 택하면, 두 식의 미분방정식이 나온다. 이를 행렬 형태로 쓰면

$$
\begin{pmatrix} \dot{i\_L}(t) \ \dot{v\_C}(t) \end{pmatrix} = \begin{pmatrix} -\frac{R}{L} & -\frac{1}{L} \ \frac{1}{C} & 0 \end{pmatrix} \begin{pmatrix} i\_L(t) \ v\_C(t) \end{pmatrix} + \begin{pmatrix} \frac{1}{L}\ 0 \end{pmatrix} u(t)
$$

여기서 $u(t)$는 외부 인가 전압이고, 출력이 어떤 변수인지는 시스템 분석 목적에 따라 달라진다. 이 상태방정식을 노드화하면, $i\_L(t)$와 $v\_C(t)$를 노드로 두고, 각각에 대한 미분(적분) 및 계수 연산 블록을 가지(branch) 형태로 표현해 신호 흐름선도를 작성할 수 있다. 이렇게 만들어진 신호 흐름선도에 Mason의 공식을 적용하면, $i\_L(t)$ 혹은 $v\_C(t)$가 $u(t)$에 대해 어떤 전달함수를 갖는지 직접 구할 수 있다. 특히 RLC 회로처럼 다소 복잡한 상호작용이 존재하는 시스템도, 신호 흐름선도는 완전히 선형인 이상 어디든 적용이 가능하다.

#### 비선형 요소에 대한 제한

신호 흐름선도는 앞서 언급했듯, 선형 시스템에서 유효한 기법이다. 일부 비선형 소자가 포함된 시스템(예: 다이오드, 트랜지스터의 특정 구간, 혹은 포화 블록 등)을 그대로 신호 흐름선도로 표시할 수는 없다. 비선형 요소는 주어진 입력-출력의 관계가 단순한 배율(선형 이득)이 아니라, 곱셈이나 지수, 기타 복잡한 함수 형태일 수 있기 때문이다.

실무에서는 이런 비선형 요소를 선형 근사(예: 작동점 주변의 소신호 선형화)를 통해 등가 이득으로 치환할 수 있다면, 그 치환된 모델을 신호 흐름선도에 반영하기도 한다. 그러나 치환 오차가 큰 구간이나, 작동점이 변동되는 상황에서는 신호 흐름선도의 유용성이 제한된다.

#### 공정제어와 신호 흐름선도

산업 공정 제어에서도, 열교환기, 반응기, 유량 제어 시스템 등에서 수학적 모델을 세워 이를 신호 흐름선도로 표현해 볼 수 있다. 화학공정에서 흔히 나타나는 동특성은 전달지연, 열관성, 혼합동작 등에 의해 복합적 형태를 갖지만, 전달함수로 선형 근사할 수 있는 구간이 있다면, 이를 연결하여 전체 공정의 신호 흐름선도를 구성할 수 있다. 예컨대 반응기 온도 제어의 대표적인 제어 구조는, 온도 측정 신호와 조절기, 밸브, 히터 등이 서로 결합된 폐루프이다. 이 시스템 각각의 부분 블록을 이득이나 1차-2차 지연 전달함수로 근사하면, Mason의 공식을 통해 한번에 폐루프 전달함수를 추출할 수 있다.

#### 상호참조: 블록선도 단순화 vs. Mason의 공식

블록선도로부터 폐루프 전달함수를 얻는 전통적인 접근법은, 직렬/병렬/피드백 구조를 하나씩 단계별로 단순화하여 최종적으로 입력-출력 전달함수를 얻는다. 이 방식은 비교적 직관적이지만, 루프나 분기점이 많아지면 단순화 과정이 여러 번의 수작업을 필요로 한다. 반면 신호 흐름선도와 Mason의 공식은, 한 번에 전체 그래프 구조를 스캔해 모든 경로와 루프를 식별하고, 자동적으로 전체 전달함수를 계산할 수 있게 해 준다.

이때 루프의 결합이나 분기점의 중첩 정도가 높으면, Mason의 공식에서 $\Delta\_0$와 $\Delta\_k$가 커다란 다항식으로 불어난다는 점은 동일하게 부담이 될 수 있지만, 적어도 절차가 일관적이라는 장점이 있다. 또한 전산화를 통해 대규모 시스템도 실수 없이 처리하기 쉬워진다.

#### 루프 이득과 폐루프 극점의 해석

제어공학에서 가장 중요한 분석 대상 중 하나는 폐루프 극점(pole)이다. 폐루프 극점의 위치는 폐루프 전달함수의 분모를 $0$으로 만드는 $s$값(또는 $z$값)에 의해 결정되며, 이는 곧 시스템의 안정성 및 응답 특성을 결정한다. 신호 흐름선도에서는 루프들의 전이함수를 모두 고려한 결과가 폐루프 분모 항에 반영되므로, 어떤 루프가 안정성에 더 크게 기여하는지, 혹은 특정 루프가 폐루프 극점에 어떤 영향을 미치는지를 정량적으로 파악하기 쉬워진다.

특히 다중 루프 구조에서 각 루프를 차례로 끊어보거나(루프 분리 기법), 부분 이득을 0으로 만들었을 때의 시스템 극점 이동을 살펴보면, 메인 루프와 서브 루프가 상호작용하여 전체 극점 분포를 어떻게 바꾸는지를 추적할 수 있다. 이는 블록선도를 단계적으로 단순화할 때도 가능하지만, 신호 흐름선도는 경로별, 루프별 이득이 명시적으로 드러나므로 좀 더 직관적이다.

#### 현대적 시뮬레이션 툴과의 연계

MATLAB/Simulink나 Python의 Control Toolbox 등 현대적 소프트웨어들은 블록선도 기반으로 시스템을 구축하고, 자동으로 전달함수를 얻거나 상태방정식을 구성해준다. 이 과정에서 사실상 내부적으로 신호 흐름선도와 유사한 그래프 개념을 사용한다. 사용자는 직접 “노드”나 “가지”라는 용어를 쓰지 않더라도, 프로그램이 블록 간 연결을 그래프 데이터로 인식하여 Mason의 공식에 상응하는 알고리즘(또는 행렬 풀기)을 실행해 결과를 보여주는 것이다.

만일 사용자 측에서 이 프로세스의 내부 작동 원리를 이해하고 싶다면, 작은 예제로 블록선도를 만든 뒤 신호 흐름선도를 손으로 구성하고 Mason의 공식을 적용해 본다. 그 결과가 Simulink에서 자동으로 도출한 폐루프 전달함수와 일치한다면, 내부적으로 어떤 연산이 이루어졌는지 확인할 수 있다.

#### 감도 해석과 신호 흐름선도

복잡한 제어 시스템에서 특정 요소(블록 또는 가지)의 이득이 조금씩 변할 때, 폐루프 전달함수나 특성 방정식이 어떻게 바뀌는지 살펴보는 과정이 감도 해석(sensitivity analysis)이다. 예컨대 피드백 루프 이득이 오차를 줄이는 데에 중요하다면, 그 루프 이득이 약간 변동될 때 폐루프 극점이 얼마나 이동하는지, 출력 응답이 얼마나 달라지는지 등의 정보를 얻고자 할 수 있다. 블록선도만으로 이를 분석하려 하면 각 단계의 단순화 과정을 다시 거쳐야 하지만, 신호 흐름선도를 구성해 두면 Mason의 공식에 나타나는 루프 이득 항에 직접 미분을 적용하거나, 부분적으로 이득을 파라미터로 두어 민감도를 구하는 것이 좀 더 체계적으로 가능해진다.

예를 들어 시스템 내부에 $G\_k(s)$라는 블록이 있고, 해당 블록이 특정 파라미터 $\alpha$에 의해 미세하게 변경된다고 하자. 블록선도에서는 $G\_k(s)$ 항만 다른 블록과 합성되어 큰 폐루프 전달함수로 합쳐져 있을 수 있으므로, 파라미터 변동이 전체 시스템에 어떻게 퍼지는지 파악하기 까다롭다. 반면 신호 흐름선도에서는 $G\_k(s)$를 포함하는 가지가 명확히 표시되어 있고, 어떤 경로 혹은 루프가 이 가지를 거쳐 가는지를 Mason의 공식을 이용해 식별하기가 상대적으로 쉽다. 따라서 $\alpha$에 대한 국소 감도(local sensitivity)를 계산하거나, $\alpha$가 특정 범위에서 움직일 때 폐루프 극점이 어떤 궤적을 갖는지 분석하는 일이 용이해진다.

#### 설계 관점에서의 신호 흐름선도 활용

제어기를 설계할 때, 목표 성능(예: 빠른 응답, 작은 오버슈트, 충분한 위상 여유 등)을 만족하는 시스템 파라미터를 찾기 위해 블록선도를 출발점으로 삼는 경우가 많다. 그런데 블록선도의 각 노드가 단순히 “입력→출력” 흐름만 보여주기 때문에, 여러 군데에 분기점이 있고 폐루프가 중첩된 상황에서는 블록 단순화 과정을 반복하거나, 다수의 중간 변수 관계를 일일이 추적해야 한다. 이때 신호 흐름선도로 모델을 옮기면, 모든 변수가 노드로 드러나므로 제어기 블록(이득, PD, PI, PID, 리드/래그 보상 등)이 들어가는 가지를 변수화하여 Mason의 공식을 적용할 수 있다.

예를 들어 PID 제어기를 단일 블록으로 본다면, 신호 흐름선도 상에서 이 블록이 담당하는 이득 항이 $K\_P + \dfrac{K\_I}{s} + K\_D s$ 등으로 표현될 수 있다. 이를 추가 변수(적분 상태, 미분 신호 등)로 분해하고, 각각을 노드로 세분화하여 블록을 구현하기도 한다. 어떤 식으로 구성하든, 최종적으로 전이 계수가 각 경로와 루프에 어떻게 반영되는지 일관되게 표시되므로, 시스템의 전달함수에서 PID 제어기가 기여하는 항을 명시적으로 볼 수 있다. 나아가 설계자가 $K\_P, K\_I, K\_D$를 조금씩 조정했을 때 전체 폐루프가 어떠한 극점 변화나 응답 변화로 이어지는지, 신호 흐름선도를 통하면 이론적으로 상세히 추적 가능하다.

#### 주파수영역 해석과 신호 흐름선도

주파수영역에서의 해석(보드선도, 나이퀴스트선도 등) 또한 신호 흐름선도로부터 직접 전달함수를 구해 $s = j\omega$ 대입 후 응답 특성을 살피는 것과 동일하다. 가령 블록선도에서 $G(s)$와 $H(s)$가 주파수응답 함수라면, 신호 흐름선도에서 이들을 가지 이득으로 표현한 뒤 Mason의 공식으로 폐루프 전달함수를 구하고, 이후 $\omega$에 대해 대입해 크기와 위상 응답을 구하면 된다.

나이퀴스트선도나 보드선도 같은 시각적 방법은 루프 이득의 크기변화에 대한 안정성 여유(위상 여유, 이득 여유)를 확인하기 용이하지만, 루프가 여러 개 겹치는 복잡한 구조에서 개방루프(open-loop) 전이를 명쾌하게 한 번에 얻기 어려울 때가 있다. 이때 신호 흐름선도를 잘 구성해 두면, 어느 지점에서 루프를 끊어 개방루프 보드선도를 그려야 할지, 혹은 시스템 내부의 부분 루프를 어떻게 취급해야 할지 체계적으로 정리할 수 있다.

특히 MIMO 시스템에 대해서는 보드선도나 나이퀴스트선도가 다중 입력-출력 간의 행렬적 주파수응답을 다뤄야 하므로, 신호 흐름선도는 내부 구조 파악에 도움을 주되, 실제 해석 과정에서는 상태방정식이나 주파수응답 행렬(transfer matrix)로 전환해 검토하는 경우가 일반적이다. 그래도 신호 흐름선도의 장점은, 특정 부분 경로가 주파수영역 해석에서 어떤 행렬 원소에 대응하는지를 밝히는 데 있어 시각적으로 직관성을 제공한다는 데 있다.

#### 루프 차단 기법과 신호 흐름선도

고전 제어이론에서 특정 루프를 끊어서 개방루프 특성을 본 뒤, 이를 기반으로 설계나 안정성 진단을 진행한다. 예를 들어 주 피드백 루프를 끊어놓고 $G(s)H(s)$ 개방루프 보드선도를 구한 뒤, 이득 여유와 위상 여유를 측정하는 식이다. 그런데 중첩 루프가 여러 개 있을 경우, 어느 노드에서 어떻게 끊어야 개방루프가 명확히 정의되는지 헷갈릴 수 있다.

신호 흐름선도를 사용하면, 임의의 노드와 그 노드로부터 이어지는 경로를 식별하기가 수월하므로 루프 차단 기법(loop breaking)에 필요한 위치를 시각적으로 정하기 쉽다. 예컨대 피드백 루프가 출력 노드에서 특정 중간 노드로 돌아가는 구조라면, 블록선도에서 그 경로를 파악하기 전에 신호 흐름선도에서 그 루프를 바로 확인하고, 한 지점(가지)을 끊어서 개방루프가 어떻게 생기는지 도식화할 수 있다. 이는 곧 루프 이득 $L(s)$를 명확히 정의하는 데에 도움을 준다. 나아가 블록선도 상에서 보이지 않던 부분 루프나, 병렬 루프가 혼재된 곳도 신호 흐름선도로는 명확히 잡아낼 수 있다.

#### 고차 시스템의 축약과 모드 분리

고차 시스템이 여러 모드(mode)로 구성되어 있을 때, 각 모드가 다른 시간상수나 공진주파수를 갖게 되며, 그중 일부 모드는 설계상 중요하거나 문제를 일으키는 모드일 수 있다. 신호 흐름선도를 구성하면, 특정 모드에 관련된 가지와 노드들이 식별되기도 하며, 상호 결합이 약한 모드들의 그룹을 부분적으로 분리해 해석할 수 있다. 예컨대 전력계통에서 발생하는 전압·주파수 동역학과, 기계 회전체의 진동 모드가 같이 들어 있는 상황에서, 둘 사이 결합이 약하면 신호 흐름선도 상에서 그 경로 이득이 상대적으로 작아 따로 묶어 해석할 수도 있다.

이런 경우, 블록선도만 놓고 보면 전체가 하나로 섞여 있는 것처럼 보이지만, 신호 흐름선도에서는 내부 노드를 구체적으로 드러냄으로써 어떤 부분 경로가 어느 모드에 해당하는지를 파악하기 수월해진다. 물론 완전히 분리된 모드는 없더라도, 결합 이득이 매우 작은 경로는 2차 이상 항에서 미약하게 기여하는 정도라서, 대략적인 설계나 해석에서는 무시하거나 근사화해도 된다. 이를 통해 고차 시스템을 축약해 저차 근사 모델을 얻으려 할 때, 신호 흐름선도는 유익한 정보(예: 무시해도 될 가지, 반드시 포함해야 할 경로 등)를 제공한다.

#### 실험적 모델 식별과 신호 흐름선도

물리 실험이나 시스템 식별을 통해, 시스템의 일부 블록 혹은 전체 전달함수를 측정할 수 있다. 예컨대 주변 온도 제어 시스템에서 실험적으로 주 입력과 출력 간 보드선도를 측정해 근사 전달함수를 획득했다면, 신호 흐름선도상에서 “전체 경로”가 단일 블록으로 퉁쳐진 형태로 취급될 수 있다. 그러나 세부 노드를 더 세밀하게 구분하고 싶다면, 부분 실험을 통해 내부 블록을 식별하거나, 회로/공정의 물리식을 기반으로 부분 모델을 정립한 뒤, 둘을 결합해 더 큰 신호 흐름선도를 구성할 수 있다.

또한 여러 실험 데이터를 기반으로 부분 전달함수를 추론해 신호 흐름선도를 점진적으로 완성해 가는 방법도 있다. 이를 위해서는 노드 간 변수(내부 상태)가 측정 가능해야 하고, 각 가지의 이득이나 동특성을 추정할 수 있는 입력-출력 데이터를 모아야 한다. 실무 현장에서는 모든 내부 노드를 직접 측정하기 어려운 경우가 많으나, 부분적으로라도 관측이 가능한 구간이 있으면, 그 구간을 블록으로 구분한 뒤 신호 흐름선도의 일부로 편입할 수 있다.

#### 추가적인 디스플레이: 달크비스트 혹은 블록선도와의 비교

신호 흐름선도 자체가 시스템을 매우 상세히 보여주는 반면, 블록선도는 조금 더 단순화된 그림이어서, 최종 보고나 문서화에서는 블록선도 형태가 선호될 때도 있다. 따라서 신호 흐름선도로부터 대략적인 블록선도를 역으로 축약 생성하기도 한다. 예컨대 서로 긴밀히 연결된 노드들은 하나의 블록으로 묶고, 미미한 가지는 무시해버리면, 거칠지만 개략적인 블록선도가 나온다.

또한 MIMO 구조일 때 블록선도가 너무 복잡해져서 그리기조차 어렵다면, 신호 흐름선도의 노드-가지 정보를 바탕으로만 전달함수 행렬을 구하고, 최종 결과만을 $\mathbf{G}(s)$ 형태로 문서화할 수도 있다. 그 이후 주파수 해석, 극점 배치, $H\_\infty$ 제어 등의 설계 과정을 진행할 때에는, 상태방정식이나 전달함수 행렬 표기를 주로 사용한다. 즉 신호 흐름선도는 “심층 내부 구조”를 보려 할 때 효과적인 툴이지만, “결과”에 해당하는 전달함수(혹은 상태방정식, 주파수응답 행렬)를 구한 뒤에는 비교적 익숙한 다른 표현으로 옮겨가도 무방하다.

#### 개방루프 해석과 고전 제어이론의 접목

고전 제어이론에서 가장 보편적인 방식 중 하나는, 먼저 시스템을 개방루프로 보고 그 동특성을 분석한 뒤 제어기 파라미터(이득, 위상 보상 등)를 조정해 폐루프 성능을 만족시키도록 하는 절차다. 블록선도에서는 주 피드백 경로를 끊어서 개방루프 전달함수 $G\_{OL}(s)$를 정의하고, 나이퀴스트 선도나 보드선도를 통해 안정성 여유를 평가한다. 신호 흐름선도를 사용해도 동일한 방식으로 접근할 수 있는데, 신호 흐름선도를 구성한 뒤 특정 루프(가지)를 끊고, 그 경로를 통해 정의되는 개방루프 이득을 찾으면 된다.

이때 신호 흐름선도가 유리한 점은, 시스템 내부에 여러 개의 루프가 중첩되어 있는 경우에도, “어떤 루프를 끊어야 우리가 정의하고 싶은 개방루프가 되는가”를 그래프 위에서 명시적으로 식별할 수 있다는 것이다. 블록선도에서는 복잡하게 얽힌 피드백 구조라서 어디서 끊어야 할지 직관적이지 않을 수 있다. 반면 신호 흐름선도에서는 피드백 루프가 명시적 닫힌 사이클 형태를 이루므로, 각 노드와 가지의 연결 상태를 추적해 한 가지(branch)를 가상적으로 차단함으로써 개방루프를 구성할 수 있다. 이후 Mason의 공식을 각 루프 차단 상태에 맞춰 재적용하거나, 행렬 방식으로 해석하면 된다.

#### 시스템 동특성 분석과 시간영역 응답

폐루프 전달함수를 구한 뒤, 임의의 입력(계단, 램프, 임펄스 등)에 대해 시간영역 응답을 살펴보는 것은 고전 제어이론과 동일하다. 신호 흐름선도는 이 전달함수를 구하는 과정에서 큰 유용성을 제공할 뿐만 아니라, 여러 내부 신호의 동작 역시 쉽게 추적할 수 있게 해준다. 예컨대 특정 노드가 출력 $y(t)$에 어느 정도 기여를 하고 있는지, 혹은 특정 블록(전달함수)로 인한 지연이나 감쇠가 어느 정도인지를 구하고 싶다면, 해당 노드와 가지를 중심으로 세부 경로를 파악할 수 있다.

예를 들어 충격 입력(임펄스) $\delta(t)$가 시스템에 주어졌을 때, 각 노드마다 시간에 따른 응답값을 해석하기 위해서는, 우선 전체 전달함수를 구하거나(출력 응답), 상태방정식으로 직접 적분을 수행해야 한다. 그러나 노드별 응답을 얻기 위해 블록선도 단순화만으로 접근하면, 중간 변수에 대응하는 블록을 모조리 추적해야 하므로 복잡도가 커진다. 신호 흐름선도에서는 노드 하나하나가 이미 명명되어 있으므로, 필요하다면 그 노드에서 Mason의 공식과 유사한 방식(해당 노드를 ‘출력 노드’로 간주)으로 입력에 대한 전달함수를 부분적으로 구할 수 있다. 이렇게 하면 시스템 전체뿐 아니라 중간 노드 응답도 직접 계산 가능해진다.

#### 내부 노드 상태 모니터링과 관측 문제

제어 시스템에서 ‘상태’라는 개념은 매우 중요하다. 내부 상태변수(예: 회로에서 코일 전류, 축 회전각, 열전달 시스템의 온도 등)를 직접 측정하기 어려울 때는, 상태 관측기(Observer)를 설계하여 추정 값을 얻는다. 블록선도로 이 과정을 표현하면, 본래 시스템 블록 외에 관측기 블록이 추가로 붙어서, 측정 가능한 출력으로부터 내부 상태를 추정하는 구조가 형성된다. 신호 흐름선도는 이때 내부 상태가 노드로 분리되어 있으므로, 관측기 설계나 분석에 필요한 변수 연결 관계를 좀 더 상세히 파악할 수 있다.

예를 들어 확장 신호 흐름선도에서, 실제 시스템 노드와 관측기 노드가 일부 공유되는 지점이 있을 것이고, 관측기로부터 나오는 추정된 상태변수가 다시 제어기에 유입되는 구조가 나타날 수 있다. 이는 전형적인 상태피드백 + 관측기 구조를 시각화한 것으로, 달면달수록 복잡해지는 블록선도를 신호 흐름선도로 바꿔 놓으면, Mason의 공식 자체를 그대로 쓰기보다는 상태공간 해석으로 돌아가게 되지만, 그래도 각 노드 간 상호 연결이 분명하게 드러난다는 장점이 있다.

#### 로버스트 제어와 신호 흐름선도

현대 제어이론 중 하나인 로버스트 제어( robust control ) 역시 신호 흐름선도와 무관하지 않다. 로버스트 제어 설계에서는 시스템 모델에 불확실성이 포함되어 있고, 이를 구조적 방식으로 나타내기 위해 주로 블록다이어그램 표기를 사용하는데, 불확실성 블록 $\Delta(s)$와 명확한 요소 블록 $G(s)$가 상호 연결된 형태를 고려한다. 이때도 불확실성 블록의 위치나 연결 방식을 더 정교하게 표현하려면, 신호 흐름선도로 그려서 내부 경로가 어떻게 흐르고 어떤 지점에서 신호가 섞이는지 표시해 줄 수 있다.

물론 로버스트 제어 해석에서는 이후 $\mu$-분석, 노름(norma) 분석, 주파수영역 해석 등으로 넘어가야 하므로, 실제 설계는 블록다이어그램 기반의 표준형(standard form) 접근이 일반적이다. 그럼에도 불구하고, 신호 흐름선도는 복잡한 불확실성 구조(예: 여러 지점에서 상호 연동된 $\Delta$ 블록들)가 있을 때, 그 상호 결합을 시각적으로 투명하게 보여주는 자료가 될 수 있다. 이를 통해 설계자나 연구자가 문제 구조를 파악하기 쉽게 하며, 궁극적으로는 해석 및 설계를 체계화해 준다.

#### 중첩된 시간지연과 신호 흐름선도

실제 산업현장이나 물리계에서, 시간지연 요소(transport delay)가 여러 경로에 걸쳐 중복 등장하는 경우가 있다. 간단히는 $e^{-Ls}$ 형태로 표현되지만, 블록선도에서 이것이 여러 경로에 복수로 등장하면 시스템 분석이 어려워진다. 이때 신호 흐름선도를 구성해 놓으면, 각 지연 요소가 들어가는 가지마다 독립적인 전달함수(곱해지는 항)로 간주하므로, Mason의 공식을 직접 쓰면 결과 식에 지연항들이 포함된 분수 형태가 나온다. 그러나 지연요소가 비정수차 전송함수처럼 다뤄지므로, 실제로는 이를 정확히 해석하기가 쉽지 않고, 근사 모델(패드 변환, Pade approximation 등)을 사용한다.

그래도 신호 흐름선도 상에서 지연 요소를 분리해 두면, 어느 경로가 가장 큰 지연을 일으키고, 루프 내 지연요소가 폐루프 안정성에 어떤 경향을 주는지 시각적으로 구분해볼 수 있다. 시간지연이 큰 경로는 주파수응답에서 높은 주파수대에서 위상에 치명적인 영향을 미칠 수 있고, 결국 폐루프 극점 위치나 안정 한계를 좌우하는 주요 인자가 될 수 있다. 블록선도만을 이용하면 지연요소가 여러 곳에 산재되어 있는지, 혹은 어떤 부분 루프를 통해 지연이 다시 피드백되는지 확인하기 다소 번거롭지만, 신호 흐름선도는 모든 가지를 명시하기 때문에 체계적인 분석이 가능하다.

#### 신호 흐름선도의 학습과 숙련

신호 흐름선도가 블록선도에 비해 훨씬 체계적이고 강력하다는 점은 널리 알려져 있지만, 처음 접하는 학습자 입장에서는 노드와 가지로 이뤄진 그래프를 세팅하고 Mason의 공식을 적용하는 과정이 낯설 수 있다. 따라서 실제로 시스템을 예제로 삼아 블록선도에서 신호 흐름선도로 변환해보고, 루프와 경로를 찾아 전달함수를 계산하는 일련의 과정을 손으로 수행해보는 것이 큰 도움이 된다.

특히 간단한 2차 혹은 3차 시스템, 예를 들어 병렬/직렬/피드백 연결 요소가 각각 하나씩 섞여 있는 정도의 시스템에 대해 직접 해보면, 블록선도를 단계별로 단순화하는 방식과 신호 흐름선도를 통해 Mason의 공식을 적용하는 방식이 서로 어떻게 일치하는지 체감할 수 있다. 한 번 손으로 해본 뒤에는, 조금만 복잡해져도 금방 계산량이 폭증한다는 걸 알게 되어, 신호 흐름선도의 전산화 알고리즘을 연구하거나, 적절히 상태방정식 접근으로 돌아가게 되는 것이 일반적이다.

#### 연구 및 실무 활용 사례

연구 분야에서는, 다중 루프를 갖는 미래형 자동차 제어 시스템(예: 스티어링, 브레이크, 파워트레인, 차량 동역학 등)을 종합적으로 해석할 때 신호 흐름선도로 전환하여, 각 서브시스템 간 상호작용 경로를 확인하는 사례가 보고되어 있다. 실무에서도 복잡한 로봇 제어 구조나 항공기의 플라이바이와이어(fly-by-wire) 시스템에서 루프가 중첩될 때, 초기 설계 단계에서 신호 흐름선도로 논리적 상호 연결을 검증하기도 한다.

특히 로봇 팔 제어처럼 조인트마다 여러 센서와 액추에이터가 있고, 서로 다른 축(axis) 간 역운동학적 커플링이 있을 때, 단순 블록선도는 여러 개의 큰 블록을 혼합해서 그리는 식으로는 내부 구조가 잘 안 보인다. 이를 신호 흐름선도로 분해하면, 조인트각, 토크, 속도 등의 노드가 분명하게 구분되고, 이들이 피드백 루프나 보상기 루프를 통해 어떻게 상호 영향을 주고받는지 투명하게 드러나서, 시스템 해석과 설계에 큰 도움이 된다.

#### 미래적 활용 전망

최근에는 모델 기반 설계(MBD: Model-Based Design)를 광범위하게 채택하고 있어, 시스템 모델을 통합적으로 관리하면서 자동 코드 생성, 시뮬레이션, 하드웨어 인터페이스를 지원한다. 이러한 MBD 툴들은 내부적으로 그래프 구조를 다루기 때문에, 근본적으로 신호 흐름선도의 확장판이라고도 볼 수 있다. 사용자는 블록선도 형태로 모델을 그리고, 그 연결 구조가 실제로는 노드-가지 형태의 데이터베이스로 저장되어 Mason의 공식이나 행렬 해석 같은 알고리즘으로 처리되는 식이다.

결국 제어 시스템이 복잡해질수록, 직관적으로 “블록 선 하나, 블록 둘” 하는 그림만으로는 그 연동 관계를 모두 파악하기 어려워진다. 신호 흐름선도 방식은 이미 이론적으로 검증된 체계이므로, 향후에도 대규모 제어 구조나 분산형 시스템, 네트워크 제어 등에서, 내부 경로 분석이나 부분 루프 안정성 검토에 적극 활용될 여지가 많다. 실제 제품 설계에서는 사용자 인터페이스 측면에서 블록선도가 더 익숙할 수 있으나, 연구나 교육, 복잡 사례 해석 차원에서는 신호 흐름선도가 훨씬 깊이 있는 접근을 제공한다.

#### 고급 해석 기법과 통합 활용

신호 흐름선도가 제어공학의 핵심 도구로 자리 잡은 것은, 블록선도를 단순화하는 전통 기법보다 더욱 직접적으로 복잡한 경로와 루프를 다룰 수 있기 때문이다. 그렇다고 해서 블록선도를 대체한다기보다는, 블록선도를 보다 구조적으로 확장하고 해석 가능성을 넓혀주는 또 하나의 강력한 표현 방법으로 보는 것이 적절하다. 블록선도는 시스템 개요를 파악하고 설계안을 구상하기에 좋고, 신호 흐름선도는 내부 변수와 경로를 면밀히 추적하고 공식적인 수학적 계산(특히 Mason의 공식)을 수행하기에 탁월하다.

복합적인 제어 문제에서는 신호 흐름선도만으로 모든 해석을 끝내기보다는, 필요에 따라 상태방정식 모델이나 주파수영역 해석을 보완적으로 활용한다. 예컨대 설계 단계에서 대략적인 목표를 정할 때는 블록선도로 구성을 단순히 파악하고, 최종적으로 세부 경로와 전달함수를 엄밀히 구해야 할 때 신호 흐름선도로 전환하여 Mason의 공식을 적용한다. 여기서 구한 폐루프 전달함수를 기반으로 안정성 분석, 극점 배치, 주파수응답 계산 등을 수행한다. 이후, 제어기 파라미터를 찾는 최적화 과정에서는 상태방정식을 통해 시뮬레이션 효율을 높일 수도 있다.

이처럼 다층적 접근을 통해, 블록선도 ↔ 신호 흐름선도 ↔ 상태방정식 사이를 자유롭게 오가며 자신에게 필요한 정보를 골라낼 수 있다. 수학적으로는 모두 등가적인 표현이지만, 제어 시스템을 바라보는 관점이나 계산의 용이성, 시각적 직관성에서 차이가 생긴다. 신호 흐름선도가 특별히 유용한 시점은, 루프의 다중 중첩이나 병렬 경로가 존재할 때, 혹은 내부 변수별 역할이 분명해야 할 때, 또는 Mason의 공식으로 직접 전달함수를 산출해 확인하고자 할 때 등이다.

#### 실습 및 교육적 측면

제어공학 교육 과정에서 학생들이 블록선도만으로 접근하다가, 점차 시스템 복잡도가 높아지면 쉽게 혼란을 느낀다. 이런 환경에서 신호 흐름선도와 Mason의 공식을 접하게 되면, 복잡한 시스템도 일정한 규칙에 따라 입력-출력 전달함수를 빠짐없이 구할 수 있다는 점에서 강력함을 체감하게 된다. 다만, 여러 노드와 가지를 정의하고, 루프와 정방향 경로를 빠짐없이 찾고, 루프 결합 관계를 모두 계산하는 과정이 처음에는 다소 번거롭게 느껴질 수 있다. 따라서 비교적 간단한 예제부터 한 단계씩 실습하고, 나중에 전산도구를 활용해 대규모 시스템을 다루는 순으로 학습이 진행된다.

특히 신호 흐름선도는 시각적인 면모가 강조되어, 교육 과정에서 “이 경로는 이렇게 이어져 있고, 이 가지를 통해 반전 이득이 들어온다”는 식으로 시스템 구조를 실감나게 보여줄 수 있다. 블록선도는 노드를 적게 두고 큰 단위 블록으로만 그려 두었을 경우, 실제 내부 변수가 어떻게 흐르는지 모호해질 수 있는데, 신호 흐름선도에서는 숨겨진 부분이 노드로 모두 드러나기 때문에 분석 과정에 투명성을 부여한다.

#### 대규모 네트워크 제어계로의 확장

네트워크화된 제어시스템(예: 분산 제어, 산업 IoT, CPS(Cyber-Physical Systems) 등)은 서로 다른 위치나 장치가 통신망으로 연결되어 데이터를 주고받으며, 이 과정에서 수많은 피드백과 경로가 생성된다. 이를 블록선도로 간단히 묘사하는 것은 사실상 거의 불가능할 정도로 복잡해진다. 신호 흐름선도라면, 네트워크상의 각 지점(혹은 그룹화된 지점)을 노드로 두고, 데이터 흐름과 제어 이득을 가지로 표시할 수 있으므로, 이론적으로는 모든 상호작용을 한 장의 그래프로 나타낼 수 있다.

물론 이렇게 커다란 그래프를 실제로 손으로 그리기는 쉽지 않고, 컴퓨터를 이용해 자동화된 노드-링크(가지) 모델로 관리하면서, Mason의 공식에 준하는 알고리즘 혹은 행렬 접근을 취해 해석하는 편이 일반적이다. 이런 접근은 네트워크 전체의 루프나 병목(가장 영향력 큰 경로), 병렬 흐름 등을 구조적으로 평가하는 데 도움이 된다. 따라서 향후 분산형 제어 시스템이 더욱 확장되는 추세에서도, 신호 흐름선도 개념은 각 노드 간 상호 연결을 이해하고, 전체 전달 특성을 한꺼번에 분석하는 데 중요한 역할을 할 수 있다.

#### 정리

신호 흐름선도와 Mason의 공식은 블록선도의 한계를 뛰어넘어, 복잡한 피드백 구조와 경로들이 교차하는 시스템에서 전달함수와 내부 신호 흐름을 한층 깊이 있게 파악할 수 있게 해준다. 노드와 가지로 구성된 그래프라는 직관적인 시각 모델을 바탕으로, 모든 정방향 경로와 루프를 일관된 규칙 하에 계산함으로써, 폐루프 전달함수나 부분 응답을 비교적 간단하게 얻을 수 있다. 상태방정식 접근이나 주파수영역 해석과도 유기적으로 결합하여, 실제 제어 시스템의 설계·분석·시뮬레이션 과정 전반에서 폭넓게 쓰인다.
