07/07/18 17:39:41
ソフトで組んだフィードバック制御の応答性や安定性の確認方法についてお教えください。
ハードで組まれたフィードバック制御の場合は、計測値、目標値、制御出力値の3点をオシロに繋ぎ、応答性や安定性を確認しています。
ソフトで組まれている場合は計測値、目標値、制御出力値の3つとも単なる変数でしかないため、見る方法に悩んでいます。
なお、このフィードバック制御の処理周期(制御出力値の更新周期)は17kHz(58usインターバル)です。
ターゲットは、現在、ルネサスSH2。将来、テキサスDSPです。
自分では下記を思いつきましたが、それぞれ問題があります。
皆さんはどうやって確認されているのでしょうか。
1.エミュレータで3点(計測値、目標値、制御出力値)のデータをトレースする
×.応答性等の確認段階でエミュレータを使うのは現実的に難しい
×.リアルタイムに見れない
2.シリアル通信でパソコンに送信し、パソコンのツールで3点のデータを表示する
×.グラフ表示をするツールを作らなければいけない
×.ターゲットマイコンの都合上19200bpsまでしか扱えず、これでは全然遅い
3.パラレル接続のD/A変換器を使って、3点のデータをオシロで見れるようにしてあげる
×.パラレル接続できるほど端子数に余裕が無い
4.シリアル接続のD/A変換器を使って、3点のデータをオシロで見れるようにしてあげる
×.処理が重く、1kHzより更新周期を速くするとセンシングに影響が出てしまった
920:仕様書無しさん
07/07/18 18:30:42
>>919
GPIOが3本使えるなら、
計測値、目標値、制御出力値 それぞれの値を、
デューティー比の変化として取り出すのはどうだろう?
ベースとなるクロックは 17kHz でいいんじゃないでしょうか?
921:仕様書無しさん
07/07/18 23:05:19
>>919
2はできるのに面倒ってだけじゃん。やれよ。
922:仕様書無しさん
07/07/18 23:23:03
>>919
そのサンプリング周期とか制御系の安定性とかってのを聞くと
どうも似たような業界の人のような気が……。
まあでも、そのあたりの仕掛けがまだ無いってのはやっぱ異業種かな。
とりあえず、基本は2ですよ。
923:仕様書無しさん
07/07/18 23:43:41
シリアル通信でも、マイコンを水晶駆動してやれば、相当な速度だせるんじゃ。
無理なら頑張ってパラレル出力。
924:仕様書無しさん
07/07/19 00:09:54
俺だったら内蔵カウンタ使うかなぁ。
(SH2だと4本しかないんで他で使ってたら無理だけど)
F-V変換つけてオシロでモニタ。
ハード屋上がりの発想ですかそうですか。
925:仕様書無しさん
07/07/19 01:33:39
>>919
2は簡単だろ
時刻(タイマのカウンタ値かなんか)と測定値をCSV形式にして垂れ流すだけ
それをTeraTermかなんかで受けて、ログ取ればそのままExcelでグラフにできる。
926:仕様書無しさん
07/07/19 01:49:21
>>925
ツールを作らなければならないって書いてあるのにExcelかよ。
927:仕様書無しさん
07/07/19 07:47:46
内部で応答性や安定性を数値化して、それをシリアル通信で1秒10回くらい見ればいいんじゃないの?
928:仕様書無しさん
07/07/19 09:57:29
エクセルってツールじゃないの?
929:仕様書無しさん
07/07/19 11:23:39
返信ありがとうございます。
ご意見を参考にし、以下の 5 と 6 を検討に加えさせて頂きます。(>>920,924,927)
5.マイコン内蔵タイマを使って3点のデータをパルス出力し、電圧に変換してオシロで見る
○.リアルタイムに完全なデータを見ることができる
○.オシロの便利な機能を使ってデータを分析できる
×.数少ないマイコン内蔵タイマを1つ、または2つ割り当てないといけない
6.3点の生データではなく、それぞれの分析データをパソコンに送信して表示する
?.~
ご意見の多かった 2 について補足します。
> 2.シリアル通信でパソコンに送信し、パソコンのツールで3点のデータを表示する
> ×.グラフ表示をするツールを作らなければいけない
> ×.ターゲットマイコンの都合上19200bpsまでしか扱えず、これでは全然遅い
問題は表示方法よりも19200bpsという通信速度の方だと考えています。
例えば、計測値、目標値、制御出力値の3つの16bitデータをバイナリ形式でリアルタイムにパソコンへ送信するとすると、
(データ8bit+スタート1bit+ストップ1bit)*サイズ2octet*個数3つ*更新周期17000Hz=1,020,000bps
1Mbpsという速度は遠すぎてどうも実現可能に思えません。
また、RAMにデータを溜め込んで、後でまとめてパソコンへ送信するという手が考えられますが、
アドレスバスとデータバスを割り当てられるほど端子数に余裕が無いため、外付けRAMを使えません。
現在、テキサスDSPがI2Cを装備していることを利用してなにかできないか調べています。
930:仕様書無しさん
07/07/19 20:13:38
純粋にソフトのアルゴリズムの検証だけをしたいのなら、シミュレータデバッガにファイル入出力機能のあるものがあるんじゃないの?
入力データのログを外部手段で例えば10s分とか作っておいて、それをSDにかましてとか。
ハードのロジック検証のISSほど厳密なものじゃなくてもいいんでしょ?
931:仕様書無しさん
07/07/19 20:39:13
>>929
I2Cって、400K以上だと、少し回路構成が繊細になった気がした。
SPIのほうが速度でるし、シリアルでダメならパラレルしか。
ピンを増やした分だけクロックを落とせる。
932:仕様書無しさん
07/07/19 21:05:35
シリアルで19200しか出せないってコトは、クロック元に制約あってシリアル系クロックあげられないんじゃないの?
933:仕様書無しさん
07/07/19 21:48:41
I2Cってデータバスがオープンドレインドライブなんで速度がすごく遅いと思ったが。
SPIの方が早いけど、ワンチップマイコンでサポートしてるデバイスって少なくないか?
934:仕様書無しさん
07/07/20 12:08:31
返信ありがとうございます。
>>919 >>929です。
> 純粋にソフトのアルゴリズムの検証だけをしたいのなら
デバッグやテストというよりも、応答性や安定性等、フィードバック制御演算の係数を調整して、
性能をチューンナップする際に活用したいと考えています。
> シリアルで19200しか出せないってコトは
現在使っているSH2マイコンは、28.6MHz、または40MHzで動作させているのですが、
内蔵SCIに設定する通信速度を19200bpsより上げると誤差が許容量を超えてしまうのです。
> SPIのほうが速度でるし
SPIがなんなのかよくわかっていなかったので調べました。
なるほど、MicrowireやI2Cと同じく、シリアル接続方式の1つなんですね。
(続く)
935:仕様書無しさん
07/07/20 12:09:04
(続き)
将来使う予定のテキサスDSP(TMS320F2802)の資料を見てみると、
I2C以外に、SPIも内蔵ハードの支援を受けられるようでした。
内蔵ハードの支援を受けられるのであれば、ソフトのみでシリアル接続した時と違い、
> 4.シリアル接続のD/A変換器を使って、3点のデータをオシロで見れるようにしてあげる
> ×.処理が重く、1kHzより更新周期を速くするとセンシングに影響が出てしまった
の方法が余裕を持って実現できそうです。
パッと見たところ、DSPの資料のSPIの項には最大通信速度10Mbpsとありました。
大分考えが決まってきたのでまとめました。
誤りあればご指摘ください。
問題:58μ秒ごとに更新されている4つの変数の動きをリアルタイムに完全に観測するには?
回答1:ルネサスSH2(SH7044,SH4047)の場合
・パラレル接続したD/A変換器によりデータを出力し、電圧を観測する
・内蔵ハードによりデータをパルス出力し、電圧に変換してから観測する
回答2:テキサスDSP(TMS320F2802)の場合
・回答1の方法
・内蔵ハードの支援を受けてSPI接続したD/A変換器によりデータを出力し、電圧を観測する
936:仕様書無しさん
07/07/20 13:12:16
>電圧を観測する
まで読んだ
937:仕様書無しさん
07/07/20 13:37:22
>>934 商品化するんじゃないんだから 2%くらいまでは大丈夫だよ
128000BPSなんてどう?
938:仕様書無しさん
07/07/20 18:28:40
サブクロックは外部から入れられないんだっけか?
939:仕様書無しさん
07/07/20 18:46:14
長時間の制御じゃなかったら一旦データをRAMに貯めてから、シリアルで吐き出したらいいんじゃない?