このQ&Aは役に立ちましたか?
プログラム制御に関する質問
2023/10/19 03:20
- プログラム制御についての質問です。既存のプログラムを解読していますが、理解できない箇所があります。具体的には、LOAD・STORE・-・/・*・+などのコードがありますが、それぞれが何を意味しているのかわかりません。
- 質問文章には、プログラム制御に関連したコードが含まれています。特に、LOAD A・B・DやSTORE C・F・G・H、そして-・/・*・+などの演算子が使われています。これらのコードは、モータのPID制御を行うためのものでしょうか?また、一次方程式を形成しているのか、変動割合を導出しているのかも知りたいです。
- この質問文章は、既存のプログラムの解読に関する質問です。具体的には、LOAD・STORE・-・/・*・+などのコードが使われていますが、その意味や目的が理解できません。また、このプログラムはモータのPID制御を行うためのものなのでしょうか?それとも、一次方程式を形成して変動割合を求めるためのものなのでしょうか?
プログラム制御
2013/12/06 16:26
既存のプログラムが有り解読を行っていますが理解不明です。ご教示を宜しくお願いします。コード内容は、
LOAD A (=6000)
- B (=1500)
STORE C (A-B→C)
LOAD D (=350)
- E (=10)
STORE F (D-E→F)
/ C
STORE G (F/C→G)
* B
+ D
STORE H ((G*B)+D→H)
本プログラムはモータのPID制御を行っており、その一部のコードです。
内容としては、一次方程式を形成し変動割合を導出しているのかと考えましたが一次方程式では+Dのコードが+Eであると思われます。
何を形成しているのでしょうか。
回答 (3件中 1~3件目)
A-B=C
D-E=F
F/C=G
((G*B)+D=H)
(((D-E)/(A-B))*B)+D=H
と、成りますが
問題は
Aは何? <速度指令?
Bは何? <速度フィードバック?
>本プログラムはモータのPID制御を行っており、その一部のコードです。
なので 恐らく結果的には
http://www.picfun.com/motor05.html
// ΔMVn = Kp(en-en-1) + Ki en + Kd((en-en-1) - (en-1-en-2))
// MVn、MVn-1:今回、前回操作量 ΔMVn:今回操作量差分
// en,en-1,en-2:今回、前回、前々回の偏差
このような式に収束すると思います
A,B,C,D全部が定数なら
>A,Dは最大値、B,Eは最小値と思われます。
これから、ただ単にスケーリングパラメータと憶測できる
>Hは、”H-(F(=D-E)/C(=A-B))*回転数データ”として使用され、
DA変換出力ユニットに渡す値とも憶測できる
それなら2047か4095になりそうなものだが?
AD入力ユニットから来たデータと
DA出力ユニットへ渡すデータと
それらから追跡するのが順当な分析手順ではあるが
それらは既に分析出来ているのでしょうか?
例えば本質問の計算はハンチング発生検出とか
加速度異常検出とかの異常検出プログラムとも憶測できる
通常では異常検出は入出力ルーチンから分離して、制御ループとは別に作られる
制御ループを追跡してたつもりが、実は異常検出ルーチンにハマっていたとか?
このQ&Aは役に立ちましたか?
この質問は投稿から一年以上経過しています。
解決しない場合、新しい質問の投稿をおすすめします。
回答ではなくて、申し訳ありませんけど、、、
提示されている限りでは、
ABDEを読み込んで、CFGHを吐き出していることしかわかりません。
> 内容としては、一次方程式を形成し変動割合を導出しているのかと考えましたが
> 一次方程式では+Dのコードが+Eであると思われます。
ここの意味が今ひとつわかりかねます。
1次方程式であれば、ゼロを放り込んで、y切片を確定しないといけないと思いますが。
ABDEの意味の説明とか、(時間差で追記がありますね。)
Hの使われ方を提示されると専門の方の有効な回答が得られると思います。
補足
2013/12/07 09:12
アドバイスありがとうございます。
>ゼロを放り込んで、y切片を確定しないといけない
と有りますがy=ax+bのxに0を入れてy=bに意味でしょうか。
だとした場合、質問プログラム中のEが方程式のbに相当し+Dならば方程式と判断できるが+Eでは何になるのかの問いでした。
また、ABCDについては数値をデータメモリに転送しているだけで判断出来ません。Hは、”H-(F(=D-E)/C(=A-B))*回転数データ”として使用され、その解をEと比較しE(最小値?)<解の場合はDとの大小比較に、 E>解の場合はEの値を有効にすると続きます。
心得のある人には説明不要なのかもしれませんが、プログラム言語が何で
あるかを説明した方がよさそうに感じます。
また、記載なさったコードの前後にもプログラムがあると想像しますが、
すっぱり割り切れるものでしょうか?
さらに、モーターのPID制御とのことですが、制御の対象は回転数、トルク
或いはもっと別のパラメータでしょうか?
補足
2013/12/06 19:30
ご連絡、ありがとう御座います。
プログラム言語はプロセス制御用のシーケンスプログラムです。
制御はモータ回転数です。
前後プログラムについては前段は各データレジスタへの定数設定、後段は別項目のPID制御プラグラムに関するパラメータの設定です。質問対象のプログラムに設定されている項目(A,B,C・・・)はアナログ出力データ関連のパラメータの様です。質問はあくまで記入したプログラムより数学的にどの様な物に相当するかを知りたかった為に省略しました。上記がヒントになりますでしょうか。
補足
2013/12/07 09:38
ご回答頂きありがとうございます。
A,B等については定数が設定されているだけで不明です。但し、ozuさんの補足にも記載しましたがA=6000,B=1500,D=350,E=10で算出された値を後にE及び、Dと大小比較している事からもA,Dは最大値、B,Eは最小値と思われます。
最大値から勘案すると回転数-周波数特性が想像出来ますが質問プログラムより一致するのかが納得いっていない次第です。