SimulinkのCoulomb modelとは?

このQ&Aのポイント
  • SimulinkのCoulomb modelとは、クーロン (静的) 摩擦と粘性 (動的) 摩擦をモデル化するブロックです。
  • このブロックは、零点では不連続性を表現し、それ以外では線形ゲインのモデルを作成します。
  • 具体的には、入力値の符号によって出力を決定し、非ゼロの入力値には信号ゲインを適用し、クーロン摩擦をオフセットとして加えます。
回答を見る
  • ベストアンサー

SimulinkのCoulomb model

Matlab simulinkのCoulomb&Visous Frictionというブロックパラメータがあるのですが、 このパラメータの意味が分かりません。 解説には以下のように書いてあるのですが、デフォルトパラメータが [1 3 2 0] 粘性係数(ゲイン) 1 とあるのですが、この意味が良く分からないのです。 解説は以下にあるのですが、摩擦係数がどこに入るのかとか、粘性係数がどこに入るのかとか判りません。この関数は単に係数だけで前段でゲインで入れるならそうしますが、ピンと来ません。 ご存知の方いらっしゃいましたら、お手数ですがお教え願えないでしょうか?よろしくお願いいたします。 ********************************** Coulomb and Viscous Friction ブロックは、クーロン (静的) 摩擦と粘性 (動的) 摩擦のモデルを作成します。ブロックは、零点では不連続性を、それ以外では線形ゲインのモデルを作成します。 ブロック出力は、以下に対する MATLAB® の結果に一致します。 y = sign(x) .* (Gain .* abs(x) + Offset) ここで、y は出力、x は入力、Gain は非ゼロの入力値の信号ゲインであり、Offset はクーロン摩擦です。 ブロックは 1 つの入力を受け入れ、1 つの出力を生成します。入力は、要素に実数および複素数をもつスカラー、ベクトルまたは行列にできます。 http://www.mathworks.co.jp/jp/help/simulink/slref/coulombandviscousfriction.html

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

私にも良くわかりませんが、推測を書きます。(MATLABでデジタル信号処理をしたことがありますが、Simulinkは使ったことがありません。) Offsetが[1 3 2 0]と4次元ベクトル(4成分)で、Gainが1というスカラー(1成分)ですから、説明文に2つある場合わけの内の最初の場合、すなわち「 ・ スカラー入力の場合」になります。「Gain と Offset は入力とは異なる次元」となる場合です。 ここでOffsetの4成分が、どうして4成分なのか、不明です。 例えば入力xが2の場合、出力yは sign(x)=+1, abs(x)=2 なので y=+1*(1*2+[1 3 2 0])=[2 5 4 2]となるように思いますが、一体4つの係数を受け取った側は、どうすれば良いのでしょうか? Gainが動的摩擦係数もしくは粘性で、xは速度、Gain*abs(x)は速さに比例した摩擦力に対応すると思います。 Offsetがクーロン摩擦で、速度xに依存しない、常に働く(速さゼロの場合でも働く)摩擦になると思います。

ji-young
質問者

お礼

回答ありがとうございます。 つまり、4ベクトル成分のクーロン摩擦値をオフセット値を与えるということですか。 スカラなら[1 0 0 0]で良いということです。 その上で粘性係数のGainを別にあたえるんですね。

関連するQ&A

  • MATLAB/simulinkでのD/A変換の仕方

    現在MATLABで制御の勉強をしている大学生です。 今、デジタル制御について勉強しているのですが、MATLAB/simulinkを使いながら進めています。 MATLAB/simulinkでのD/A変換のやり方がわからなくて質問いたしました。 通常のアナログ制御の場合、 入力 → コントローラー → プラント → 出力 で多分、設計されると思うのですが、 デジタル制御の場合、 入力 → A/D変換器 → コントローラー → D/A変換器 → プラント → 出力 という流れになると聞きました。 A/D変換器はゼロ次ホールドを行うブロックがsimulinkにあったのでそれを使えばいいと思うのですが、D/A変換器を行ってくれるブロックが見当たりません。 探し方が悪いのでしょうか。。。 もしご存知であればD/A変換に相当するブロックを教えてください。 無ければ、s-functionか何かでのD/A変換のやり方を教えて頂けると助かります。 よろしくお願いします。

  • ※緊急です

    MATLAB Simulinkについて質問です。 初期値の設定の仕方がわからず困っています。 図のようなMATLAB Functionブロックで、以下の式であらわされるあるシステムの状態・出力を計算したいと思っています。 そこで、計算毎に状態の計算結果をブロックから出力し、そのままフィードバックしてブロックに入力しなおして次回の状態の計算に用いたいんですが、状態の初期値を設定していないためコンパイル時にエラーが出てしまいます。 どうすればいいでしょう? システムの状態・出力方程式↓ x(k+1)=Ax(k)+Bu(k); y(k)=Cx(k)+Du(k); x(k):現在のシステムの状態(図の中ではxと表記) x(k+1):次のシステムの状態(図の中ではx_nextと表記) y(k):現在のシステムの出力(図の中ではyと表記) A,B,C,D:ある定数パラメータ

  • Matlabで作成したmファイルをC言語に自動変換することは可能ですか?

    大学の研究室で使っているmatlabの機能にC言語のソースを自動生成 する機能があると先生に伺ったのですが、 常識的に考えてそんな便利なことができるとは思えません。 実際に下記に示すtoolboxで自分が作ったmファイルからC言語のソースを、ある程度自動生成することは可能でしょうか? Matlab 2008 b windows-x64版 Matlab 7.7 Simulink 7.2 Image processing toolbox Signal processing toolbox Real time workshop SimulinkとReal time workshopを一度も使ったことが無いので 少し調べて良く判らない点がありました。 Realtimeworkshopでは、Simulinkで生成したブロック線図のみC言語で出 力できるものであり、mファイルからの変換はできないのでしょうか?

  • FIRにおける小数点を含む係数の乗算について(VHDL記述)

    お世話になっております。 掲題の件ですが、 現在VHDLを使ってFIRフィルタを設計しておりますがbit演算に困っています。 FIRはxilinxのcoreを使っており、係数の設計はMATLABのFDATOOLを使っています。 フィルタを通すデータビット幅は14bit(-4096~4095)、 フィルタ係数も14bit、 フィルタ出力も14bitを考えています。 MATLABでフィルタを設計し、はきだされる係数は1未満の小数点でした。 データ入力(14bit)×係数(14bit)=データ出力28bit→丸めて14bit となりますが、1未満の係数をどうやって14bitに表すか、 28bitをどうやって丸めるか悩んでいます。 係数をデータ入力に揃える為に、係数に4096を掛けて、小数点以下を四捨五入して丸めて、その整数部を14bitに直してデータ入力に掛けて、 データ出力28bitは1/4096して12bitビットシフトして、マイナスもあるため先頭bitを移動すれば宜しいのでしょうか? よろしくお願いします。

  • 制御工学で粘性係数を求める問題について質問です。

    大学に上がってから独学し始めた 普通科高校卒の大学1年生ですが、 制御工学の問題で質問です。 (僕の理解度のおおよその 目安 だと思ってください。) 移動する力学台車にダンパが 取り付けられている時、 ダンパーの粘性摩擦係数を 求める問題を写真の様な 途中式で解いたのですが、 間違えてしまいました。 まず、入力を力 f、出力を速度v としてこの系の伝達関数を求め、 そこから時定数=(質量/粘性係数) と求め、時定数=T とおいて -T × log (1-0.632) を利用して 粘性係数を出そうとしたのですが、 「移動物体に1Nの力を 加えた時の定常速度」 を前の設問で求めさせられ、 この粘性係数を求める設問でも 「移動物体に1Nの力を加えた時」 という条件が書いてあり、これらを どう使えば良いのか当惑しています。 どこが原因でしょうか。 ヒントでも良いので教えて下さい。 なお、正答は 0.83 だそうです。 写真が見にくい、情報が足りない等の ご指摘があれば、補足で対応します。

  • matlabに関する質問です.

    タイトルの通りmatlabに関する質問です. matlabの組み込み関数ndgridにつきまして,[X1,X2,...,Xn] = ndgrid(x1,x2,...,xn)のように入力をx1,x2,...,xnと増加させると出力もX1,X2,...,Xnと増加するのですが,任意の入力数(セル配列で入力)に対して出力側も任意の出力数に対応させたいのですが [Xn_cell{:}] = ndgrid(xn_cell{:})としてもエラーが出てしまい上手く出来ません. 何か良い方法はありませんでしょうか. ご教授の程,宜しくお願いいたします.

  • 砂防ダムの土圧係数と壁面摩擦角の算出方法

    砂防ダムの土圧係数について質問です。 砂防ダムの土圧計算の式で、土圧係数C(0.3~0.6)とあり、 クーロン式では考える場合、以下の式よりとなっています。 C=cosi-√(cos2i-cos2φ)/cosi+√(cos2i-cos2φ) 上記の式は、どのように導かれたのか教えて頂けるでしょうか ・もとのクーロンの式とそこからの誘導の方法? ・壁面摩擦角はどうしたのか? できましたら、具体的な変形の仕方を教えてください。 ※当方、砂防公式集が手元になく、ネットでも探すことができませんでした。 よろしくお願いいたします。

  • 深海魚は海水との大きな摩擦抵抗でも泳げる理由

    船を前進させるには断面積に比例する抗力と摩擦抵抗と造波抵抗に打ち勝って進むと考えています。水中では造波抵抗は無視しても抗力と摩擦抵抗が残ります。 抗力は粘性と密度と形状と速度の2乗で決まることも理解できます。 わからないのは摩擦抵抗です。表面面積に摩擦係数と圧力をかけて速度をかければ、前進するための出力(電力W、馬力)が計算できるように思うのですが、魚のことを考えるとふと不思議な気持ちになります。 浅い海に泳いでいる魚は船や私たちが泳いで居るときと同じような感覚で考えることができます。つまり水の摩擦抵抗でなかなか前へ進めないこともわかります。 しかし何千mという深海にいる魚がもし船と同じ摩擦係数を持つとすれば圧力が何百気圧と大きいので前進するための摩擦抵抗力は大きく桁違いの大きな力が出せる体力が必要だと思います。しかし映像で見ると結構スイスイ泳ぐように見えます。 いったいどうやって抵抗力に逆らって泳ぐことができるのでしょうか。 よろしくお願いします。 ちなみに私は流体力学は素人です。

  • 入力波形と出力波形

    線形の2次遅れ要素の伝達関数を求め、ゲイン線図と位相線図を書きました。それはいいのですが、今度は入力波形と出力波形を書く場合に、減衰係数ζの数値が変わることで 波形はどう変わるのでしょうか?ζはどう関わっていくのでしょうか?お願いします。

  • MATLABのrbboxについての質問です。

    MATLABのrbboxについての質問です。 MATLABである画像の領域内の情報を取得できるようにしたいのですが、調べてみると、rbboxという関数を使って出来るらしいです。実際にMATLABのHPにあったソースコードを動かしてみると、画像にマウスでドラッグした領域の枠が描かれるのですが、その画像の領域をどうやって処理を行えるように出来るのかがわかりません。出来れば教えてほしいです。rbboxのソースコードを下に示します。宜しくお願いします。 figure; pcolor(peaks); k = waitforbuttonpress; point1 = get(gca,'CurrentPoint'); % ボタンダウンの検出 finalRect = rbbox; % figure単位の出力 point2 = get(gca,'CurrentPoint'); % ボタンアップの検出 point1 = point1(1,1:2); % x と y の抽出 point2 = point2(1,1:2); p1 = min(point1,point2); % 位置と大きさの計算 offset = abs(point1-point2); % x = [p1(1) p1(1)+offset(1) p1(1)+offset(1) p1(1) p1(1)]; y = [p1(2) p1(2) p1(2)+offset(2) p1(2)+offset(2) p1(2)]; hold on axis manual plot(x,y,'r','linewidth',5) % ボックスの回りに選択した領域の描画