[[PICマイコンを用いた能動騒音制御系の製作]] -[[README>/:PIC/README]] ... このページのテキスト版 -[[Makefile>/:PIC/Makefile]] ... make 時に参照されるファイル.C ソースファイルのコンパイル方法や,ファイルの依存関係等が記載されている. -[[adc.h>/:PIC/adc.h]],[[adc.c>/:PIC/adc.c]] ... A/D 変換ボード,D/A 変換ボード用のデバイスドライバ. -[[control.c>/:PIC/control.c]] ... PIC 用 C プログラムのメイン部分.補償器の実体コード ax_0.c, ax_1.c 等が include される. -[[freqresp.h>/:PIC/freqresp.h]],[[freqresp_module.c>/:PIC/freqresp_module.c]],[[freqresp_app.c>/:PIC/freqresp_app.c]] .. 周波数応答実験用 --目的: 制御対象の周波数応答を取得する. --入力: なし --出力: data/spk1.dat, data/spk2.dat --使用方法: % make % insmod freqresp_module.o % ./freqresp_app % rmmod freqresp_module -[[nominal.m>/:PIC/nominal.m]] --目的: ノミナルプラントを求める. --入力: ---data/spk1.dat, data/spk2.dat ---n ... ノミナルプラントの次数 (nominal.m 中で定義する) --出力: data/nominal.mat --使用方法: >> nominal -[[weight.m>/:PIC/weight.m]] --目的: ロバスト安定のための重み関数を決める. --入力: ---data/nominal.mat ---W ... 重み関数(weight.m 中で定義する) --出力: data/weight.mat --使用方法: >> weight 重み関数の曲線が,モデル化誤差の点を上から覆うことを確認する. -[[hinf_discrete_zoh.m>/:PIC/hinf_discrete_zoh.m]] --目的: 離散化 H∞ 制御問題を解き,補償器の状態空間実現を求める. --入力: ---data/nominal.mat ---data/weight.mat --出力: ---data/controller_discrete_zoh.dat ... 補償器の状態空間実現 ---data/controller_order_discrete.dat ... 補償器の次数 ---data/controller_discrete_zoh.mat ... 補償器のデータ (Matlab フォー マット) ---定数スケーリング d の範囲 (hinf_discrete_zoh.m 中の for 文で指 定) ---sample ... サンプリング周期 (hinf_discrete_zoh.m 中に定義) --使用方法: >> hinf_discrete_zoh k が極大となるように d の範囲を調整する. -[[sym_trans.m>/:PIC/sym_trans.m]] --目的: 補償器の状態空間実現をブロック対角可制御正準形に変換する. --入力: data/controller_discrete_zoh.mat --出力: data/controller0_mode_r.dat --使用方法: >> sym_trans -[[hinf.h>/:PIC/hinf.h]],[[hinf_module.c>/:PIC/hinf_module.c]],[[hinf_app.c>/:PIC/ hinf_app.c]] --目的: 消音制御実験を行い,理想状況下での観測主力 y と制御入力 u および状態変数 x を記録する.また,PIC に制御開始を指示し,PIC の制御入力を記録する. --入力: ---data/controller0_mode_r.dat ---data/controller_order_discrete.dat --出力: data/result.dat --使用方法: % make % insmod hinf_module.o % ./hinf_app % rmmod hinf_module -[[gen_binary_code.c>/:PIC/gen_binary_code.c]] --目的: ブロック対角可制御正準形で表された補償器の状態空間実現を近似して PIC 用 C コードを生成する --入力: ---data/controller0_mode_r.dat ---data/controller_order_discrete_dat ---M ... 補償器の係数を近似する有効桁 (実数の乗算をシフト演算で実現する際のシフトの段数の最大値,プ ログラム中に定義する) ---SPLIT_A ... x[k+1] = A x[k] + y のコード ax_0.c, ax_1.c のうち,ax_0.c が占める割合 (プログラム中に定義する) --出力: ax_0.c, ax_1.c, cx_0.c, cx_1.c, dy.c, def.h --使用方法: % make codes -[[simu_shift_binary.c>/:PIC/simu_shift_binary.c]] --目的: PIC 用 C コードのシミュレーションを行う. --入力: ---data/result.dat, ax_0.c, ax_1.c, cx_0.c, cx_1.c, dy.c, def.h ---S ... スケーリング (data/S.dat で定義) ---INTERVAL ... 補償器のサンプリング周期 / 0.125msec をプログラム中で指定する.0.75msec の場合は,6 を指定する. --出力: simu_shift_binary.dat --使用方法: % make simu