Scilab Home page | Wiki | Bug tracker | Forge | Mailing list archives | ATOMS | File exchange
Please login or create an account
Change language to: English - Français - Português - Русский

Please note that the recommended version of Scilab is 6.0.1. This page might be outdated.
See the recommended documentation of this function

Scilab help >> Elementary Functions > signalprocessing > bloc2ss

bloc2ss

ブロックを状態空間表現に変換b

呼び出し手順

[sl]=bloc2ss(blocd)

パラメータ

blocd

リスト

sl

リスト

説明

線形システムのブロック図表現を指定すると, bloc2ssはこの形式を状態空間線形システムに変換します. リスト blocdの最初の要素は, 文字列 'blocd'である必要があります. このリストのその他の各要素はそれ自体,以下の型のリストとなります:

list('transfer','name_of_linear_system')
list('link','name_of_link',
             [number_of_upstream_box,upstream_box_port],
             [downstream_box_1,downstream_box_1_portnumber],
             [downstream_box_2,downstream_box_2_portnumber],
             ...)

文字列 'transfer' および 'links' はブロック図の中での要素の型を示す キーワードです.

ケース1 : リストの2番目のパラメータは, 状態空間表現(syslin リスト)または伝達関数形式(有理数の行列) で指定される 線形システムのScilab名を指す(またはそのように評価される)文字列 です.

各伝達関数ブロックには1つの整数値がふられます. 伝達関数ブロックの各入力および出力にも整数値の番号がふられます. (例を参照)

ケース2 : ブロック図表現の2種類目の要素はリンクです. リンクは, 対[number_of_upstream_box,upstream_box_port]で 表されるブロックの出力と 他のブロックの入力を結合します. この際,各入力は,対 [downstream_box_i,downstream_box_i_portnumber] のように表されます.

ブロックの異なる要素を任意の順序で 定義できます.

例えば,

[1] ゲイン1のフィードバックを有するS1*S2.

3つの伝達関数, S1 (番号 n_s1=2) , S2 (番号 n_s2=3) および伝達関す記号が['1','1'] となる加算器 (番号 n_add=4) があります.

リンクは 4 つあります. 最初のリンク (名前は 'U') 入力 を加算器のポート1に結合します. 2番目と3番目のリンクはそれぞれ, 加算器の(出力)ポート1をシステムS1の(入力)ポート1, S1の(出力)ポート1をS2の(入力)ポート1 に結合します. ('Y'という名前の)4番目のリンクは, S2の出力ポート1を出力 (仮想的なブロック -1 のポート0, 省略されている) および加算器の(入力)ポート2に結合します.

//Initialization
syst=list('blocd'); l=1;

//Systems
l=l+1;n_s1=l;syst(l)=list('transfer','S1');  //System 1
l=l+1;n_s2=l;syst(l)=list('transfer','S2');  //System 2
l=l+1;n_adder=l;syst(l)=list('transfer',['1','1']);  //adder

//Links
// Inputs  -1 --> input 1
l=l+1;syst(l)=list('link','U1',[-1],[n_adder,1]);

// Internal 
l=l+1;syst(l)=list('link',' ',[n_adder,1],[n_s1,1]);
l=l+1;syst(l)=list('link',' ',[n_s1,1],[n_s2,1]);

// Outputs // -1 -> output 1
l=l+1;syst(l)=list('link','Y',[n_s2,1],[-1],[n_adder,2]);

With s=poly(0,'s');S1=1/(s+1);S2=1/s; the result of the evaluation call sl=bloc2ss(syst); is a state-space representation for 1/(s^2+s-1).

[2] LFT の例

//Initialization
syst=list('blocd'); l=1;

//System (2x2 blocks plant)
l=l+1;n_s=l;syst(l)=list('transfer',['P11','P12';'P21','P22']); 
 
//Controller
l=l+1;n_k=l;syst(l)=list('transfer','k');
 
//Links
l=l+1;syst(l)=list('link','w',[-1],[n_s,1]);
l=l+1;syst(l)=list('link','z',[n_s,1],[-1]);
l=l+1;syst(l)=list('link','u',[n_k,1],[n_s,2]);
l=l+1;syst(l)=list('link','y',[n_s,2],[n_k,1]);

With

A=[0,1;0,0];
B=[1;1];
C=[1,1];
D=poly(0,'s');
P=syslin('c',A,B,C,D);

bloc2exp(syst) は, P および KのLFT表現を返します.

参照

  • bloc2exp — ブロック図の記号評価
Scilab Enterprises
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Mon Oct 01 17:40:23 CEST 2012