Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

sumblk

이름 기반 상호 연결을 위한 합산점

설명

예제

S = sumblk(formula)는 전달 함수(tf) 모델 S의 형태로 formula로 기술되는 합산점을 만듭니다. string형 formula"e = r - y"와 같은 S의 스칼라 입력 신호와 스칼라 출력 신호를 연결하는 방정식을 지정합니다. 함수는 formula를 기반으로 SInputNameOutputName 속성을 설정합니다. 동적 시스템 모델을 상호 연결하고 블록 다이어그램에 대한 합산 모델을 도출하려면 Sconnect와 함께 사용하십시오.

예제

S = sumblk(formula,signalsize)는 벡터 값 합산점을 반환합니다. 입력 신호와 출력 신호는 signalsize 요소로 구성된 벡터입니다.sumblkformula의 신호 이름을 벡터 확장하여 InputNameOutputName 속성을 설정합니다.

예제

S = sumblk(formula,signames1,...,signamesN)formula의 자리 표시자를 신호 이름 signames로 바꿉니다. %로 시작하는 신호 이름을 사용하여 formula의 자리 표시자를 나타내십시오. signames 인수 개수는 formula에 있는 자리 표시자 개수와 일치해야 합니다. formula에 있는 첫 번째 자리 표시자는 signames1로, 두 번째 자리표시자는 signames2로 바뀌는 식입니다.

예제

모두 축소

다음 그림과 같은 합산점을 만듭니다. 모든 신호는 스칼라 값입니다.

sumblk1.png

이 합산점의 식은 u = u1 + u2 + u3입니다. 이 식을 sumblk와 함께 사용하여 합산점을 만드십시오.

S = sumblk('u = u1 + u2 + u3');

S는 합 u = u1 + u2 + u3을 전달 함수(tf)로 표현한 것입니다. 즉, S는 3개의 입력과 1개의 출력을 갖는 정적 이득 tf이며, 이는 입력의 합과 같습니다. 전달 함수 S는 식에서 입력 이름과 출력 이름을 얻습니다.

S.OutputName
ans = 1x1 cell array
    {'u'}

S.InputName
ans = 3x1 cell
    {'u1'}
    {'u2'}
    {'u3'}

따라서 Sconnect 명령의 이름 기반 구문과 함께 사용하여 다음 블록 다이어그램의 시스템과 같은 합산 모델을 작성할 수 있습니다.

sumblk2.png

이렇게 하려면 H1, H2, H3에 대한 LTI 모델을 만들고 다이어그램에 따라 입력과 출력의 이름을 지정합니다. 이 예제에서는 전달 함수를 사용합니다.

H1 = tf(1,[1 2],"InputName","z1","OutputName","u1");
H2 = tf([1 -2],[1 1],"InputName","z2","OutputName","u2");
H3 = tf(2,[2 1],"InputName","u","OutputName","u3");

모델과 합산점을 연결하여 입력 z1z2, 출력 u가 있는 합산 모델을 만듭니다. connect 명령은 구성요소의 출력을 일치하는 이름이 있는 입력에 자동으로 연결합니다.

T = connect(H1,H2,H3,S,{"z1","z2"},{"u"});
T.InputName
ans = 2x1 cell
    {'z1'}
    {'z2'}

T.OutputName
ans = 1x1 cell array
    {'u'}

합산점 v = u - d를 만듭니다. 여기서 u, d, v는 길이가 2인 벡터 값 신호입니다. 이 합산점은 다음 다이어그램에 나와 있으며, 여기서 각 화살표는 두 개의 신호를 나타냅니다.

sumblk3.png

이 합산점은 v(1) = u(1) - d(1)v(2) = u(2) - d(2)를 출력합니다. sumblk를 사용하여 이 연결점을 만들려면 식과 신호 길이를 모두 지정하십시오.

S = sumblk('v = u - d',2);
size(S)
Transfer function with 2 outputs and 4 inputs.

결과는 4개의 입력과 2개의 출력이 있는 전달 함수입니다. du에 대해 각각 2개의 입력, v에 대해 2개의 출력입니다. sumblk는 신호 이름의 벡터 확장을 자동으로 수행하고 S.InputNameS.OutputName에 할당합니다.

S.InputName
ans = 4x1 cell
    {'u(1)'}
    {'u(2)'}
    {'d(1)'}
    {'d(2)'}

S.OutputName
ans = 2x1 cell
    {'v(1)'}
    {'v(2)'}

다른 MIMO 전달 함수를 사용하는 것처럼 S를 다른 동적 시스템 모델에 연결하여 합산 모델을 작성할 수 있습니다. 예를 들어 다음 2채널 피드백 루프, 즉 다이어그램의 각 선이 두 개의 신호를 나타내는 피드백 루프를 나타내는 모델을 만든다고 가정합니다.

sumblk4.png

H1H2에 대한 2-입력, 2-출력 모델을 만들고 다이어그램에 표시된 대로 InputNameOutputName 속성을 설정합니다. 이 예제에서는 무작위 상태공간 모델을 사용합니다.

H1 = rss(3,2,2);
H1.InputName = 'v';
H1.OutputName = 'w';

H2 = rss(3,2,2);
H2.InputName = 'w';
H2.OutputName = 'd';

sumblkS의 신호 이름을 확장하는 것처럼 동적 시스템 모델의 신호 이름은 자동으로 확장됩니다. 예를 들어 H1의 출력을 검토해 봅니다.

H1.OutputName 
ans = 2x1 cell
    {'w(1)'}
    {'w(2)'}

connect 명령도 이 확장을 수행합니다. 따라서 다음 명령으로 합산 시스템을 조립할 수 있습니다.

T = connect(S,H1,H2,'u','w');
size(T)
State-space model with 2 outputs, 2 inputs, and 6 states.

예제 벡터 값 신호를 갖는 합산점에서 볼 수 있듯이 벡터 신호에 대한 합산점을 만들 때 기본적으로 sumblk는 사용자가 제공하는 신호 이름에 인덱스를 추가합니다. 이 벡터 확장 대신 다른 신호 이름을 지정해야 하는 경우 합산점 식에서 자리 표시자를 사용하여 이름을 지정하려는 신호를 표현하십시오. 그런 다음, 합산점을 만들 때 자리 표시자에 대입할 특정 이름을 제공하도록 signames 입력 인수를 사용하십시오.

예를 들어 다음 식을 갖는 합산점을 만듭니다.

e(1)=setpoint(1)-alphae(2)=setpoint(2)-q

이 식은 다음 다이어그램에 표시된 합산점입니다. 여기서 setpoint는 2개의 입력을 나타내고 e는 2개의 출력을 나타냅니다.

sumblk5.png

이 합산점을 만들려면, sumblkesetpoint를 확장하도록 허용하되 signames 인수에 제공한 특정 신호 이름에 대한 자리 표시자로 %로 시작하는 신호 이름을 사용합니다.

formula = 'e = setpoint - %y';
signames = ["alpha","q"];
S = sumblk(formula,signames);

sumblk는 자리 표시자 %y를 신호 이름 alphaq로 바꾸고 다른 신호 이름을 확장합니다. sumblksignames의 신호 개수에서 벡터 신호의 크기를 취합니다. 따라서 Ssetpoint 입력과 e 출력에는 각각 두 개의 신호가 포함됩니다.

S.InputName
ans = 4x1 cell
    {'setpoint(1)'}
    {'setpoint(2)'}
    {'alpha'      }
    {'q'          }

S.OutputName
ans = 2x1 cell
    {'e(1)'}
    {'e(2)'}

이 구문은 InputName이나 OutputName 속성이 이미 설정된 기존 모델을 연결하기 위해 합산점을 만들려는 경우에 특히 유용합니다. 예를 들어 다음과 같은 2-입력, 2-출력 상태공간 모델을 고려해 볼 수 있습니다.

A = [-0.004 0.03; 0.03 -0.19];
B = [0.3 0.2; -0.06 0];
C = [0.99 0.5; 0 0];
D = 0;
G = ss(A,B,C,D);
G.InputName = {'angle','rate'};
G.OutputName = {'current','temp'};

다음과 같이 한 쌍의 기준 입력에서 G의 출력을 빼는 합산점을 만듭니다.

e(1)=ref(1)-currente(2)=ref(2)-temp

그러기 위해서는 식에서 이러한 신호에 대해 자리 표시자를 사용합니다. 그런 다음, G.OutputNamesignames 입력으로 사용하십시오.

S = sumblk('e = ref - %outputs',G.OutputName);
S.InputName
ans = 4x1 cell
    {'ref(1)' }
    {'ref(2)' }
    {'current'}
    {'temp'   }

여러 자리 표시자를 사용하여 식의 여러 요소를 바꿀 수 있습니다. sumblk는 사용자가 제공한 순서로 자리 표시자를 바꿉니다. 예를 들면 기준 신호에 ref(1)ref(2) 대신 특정 이름을 지정하는 것입니다.

refnames = ["refcur","reftemp"];
S = sumblk('e = %refs - %outputs',refnames,G.OutputName);
S.InputName
ans = 4x1 cell
    {'refcur' }
    {'reftemp'}
    {'current'}
    {'temp'   }

입력 인수

모두 축소

합산점 전달 함수 S의 입력 신호와 출력 신호를 연결하는 방정식으로, string형 벡터나 문자형 벡터로 지정됩니다. 예를 들어 다음 다이어그램과 같은 합산점을 고려해 볼 수 있습니다.

Summing junction with positive inputs r and d, negative input y, and output e

이 합산점을 3-입력, 1-출력 전달 함수로 나타내려면 다음 명령을 사용합니다.

formula = "e = r + d - y";
S = sumblk(formula);

벡터 값 신호의 경우 formula에서 하나 이상의 자리 표시자를 선택적으로 사용하여 sumblkS.InputNameS.OutputName에 할당하는 이름을 제어할 수 있습니다. formula에 자리 표시자를 넣으려면 %로 시작하는 신호 이름을 사용하십시오. 신호 이름을 S에 할당할 때 sumblk 명령은 각 자리 표시자를 signames 인수에 제공한 이름으로 바꿉니다.

이러한 자리 표시자는 이름이 지정된 신호가 있는 기존 모델을 연결하기 위한 합산점을 만드는 데 특히 유용합니다. 예를 들어 CG가 각각 비어 있지 않은 InputName 속성과 OutputName 속성을 가진 동적 시스템 모델인 경우 다음 표현식을 사용해 합산점을 만들 수 있습니다.

S = sumblk("%e = r - %y",C.InputName,G.OutputName)

sumblk%e%y 대신 C.InputName의 값과 G.OutputName의 값을 각각 사용합니다. C.InputNameG.OutputName의 벡터 차원은 일치해야 합니다. sumblk는 신호 r에 동일한 차원을 할당합니다. 예제는 벡터 값 신호를 사용하여 합산점에서 개별 이름 지정하기 항목을 참조하십시오.

S의 각 입력 신호와 출력 신호에 있는 요소 개수로, 양의 정수로 지정됩니다. signalsize를 1보다 큰 값으로 설정하면 벡터 값 신호에 대해 연산을 수행하는 합산점을 지정할 수 있습니다. 예를 들어 S = sumblk("e = r - y",2)는 입력 ry, 출력 e가 2개의 요소를 갖는 벡터 신호인 합산점을 만듭니다. 벡터 값 신호를 갖는 합산점 항목을 참조하십시오.

formula 인수에서 자리 표시자(%로 시작하는 신호 이름)에 대입할 신호 이름으로, string형 배열이나 문자형 벡터로 구성된 셀형 배열로 지정됩니다. formula의 각 자리 표시자에 대해 하나의 signames 인수를 제공하십시오.

signames를 다음과 같이 지정하십시오.

  • ["alpha","q"]와 같은 string형 배열.

  • 신호 이름으로 구성된 셀형 배열(예: {'alpha','q'}).

  • MATLAB® 작업 공간에 있는 모델의 InputName 또는 OutputName 속성. 예를 들면 다음과 같습니다.

    S = sumblk("%e = r - y",C.InputName)

    이 명령은 출력 이름이 MATLAB 작업 공간에 있는 모델 C의 입력 이름과 동일한 연결점을 만듭니다. signames를 사용하는 방법을 보여주는 예제는 벡터 값 신호를 사용하여 합산점에서 개별 이름 지정하기 항목을 참조하십시오.

    자리 표시자와 signames 인수를 사용하면 sumblkS 신호의 벡터 길이를 설정합니다. 여러 자리 표시자를 사용하는 경우 모든 signames 인수의 신호 개수가 같아야 합니다.

출력 인수

모두 축소

합산점의 전달 함수로, tf 모델로 반환됩니다.

sumblkformula의 신호 이름을 사용하여 SInputNameOutputName 속성을 설정합니다. 예를 들어 S = sumblk("e = r + d - y")를 입력하면 sumblkS.InputName = {'r';'d';'y'}S.OutputName = {'e'}S를 생성합니다. 이러한 입력 이름과 출력 이름을 사용하여 S를 다른 동적 시스템 모델과 상호 연결하여 복합 시스템을 구축할 수 있습니다. 예제는 스칼라 값 신호를 갖는 합산점 항목을 참조하십시오.

signalsize가 1보다 크면 Sformula의 신호 이름당 signalsize개의 입력(또는 출력)을 갖습니다. 이 함수는 {'e(1)','e(2)',...}와 같이 formula에 지정된 신호 이름에 벡터 확장을 적용하여 S.InputNameS.OutputName을 설정합니다. 예제는 벡터 값 신호를 갖는 합산점 항목을 참조하십시오.

formula에서 자리 표시자를 사용하는 경우 sumblksignames에서 제공한 이름을 사용하여 SInputNameOutputName 속성을 설정합니다. 예제는 벡터 값 신호를 사용하여 합산점에서 개별 이름 지정하기 항목을 참조하십시오.

버전 내역

R2008a에 개발됨