c言語プログラムについての質問です。画像のハーフブリッジインバータ回路で正弦波と三角波を用いたPWM制御で、抵抗の値関係なく目標電流値を出力するプログラムが作りたいのですがどうすればいいのでしょうか。
#include <math.h>
#include <stdio.h>
__declspec(dllexport) void simuser (t, delt, in, out)
double t, delt;
double *in, *out;
{
static double f1=10000,f2=60,v=0,n=0,h=0,c=0,x1=0,x2=0,s=0,im=0;
double vout=0,k1,k2,vs,vtri,vt,pai=3.14,rad,vsin,i,j,k3,k4,va,vs1=0,vs2=0,iout,ts=0.0000025;
三角波
vtri=2;
k1=1/delt;
k2=(k1/f1)/2;
vs=vtri/k2;
h=h+1;
if(h<=k2){
v=v+vs;
}else if(h>=k2){
v=v-vs;
}else{
v=v;
}
if(h>=(k2*2)){
h=0;
}
vt=v-(vtri/2);
正弦波
j=90;
k3=1/delt;
k4=(k3/f2)/4;
i=j/k4;
n=n+i;
rad=(pai*n)/180;
vsin=sin(rad);
スイッチ制御1
if(vsin<vt){
x1=x1+delt;
if(x1>=ts){
vs1=1;
}else if(x1<ts){
vs1=0;
}else{
x1=x1;
}
}else if(vsin>vt){
vs1=0;
x1=0;
}else{
vs1=vs1;
}
スイッチ制御2
if(vsin<vt){
vs2=0;
x2=0;
}else if(vsin>vt){
x2=x2+delt;
if(x2>=ts){
vs2=1;
}else if(x2<ts){
vs2=0;
}else{
x2=x2;
}
}else{
vs2=vs2;
}
ここからが上手くいきません。
電流フィードバック
iout=in[0];
im=1.5;
if(im<iout){
vsin=vsin*0.09;
}else if(im>iout){
vsin=vsin*1.01;
}else if(im=iout){
vsin=vsin;
}
出力
out[0]=vs1;
out[1]=vs2;
out[2]=vt;
out[3]=vsin;
}
プログラムはこのようにしています。vsinの値を増減することで、出力電流は制御できます。プログラムとしては、出力電流値ioutをフィードバックし、目標値imと比べ、vsinの大きさを変えて、目標値に近づける、というものが作りたいです。自分で作ったものでは上手く動作しません。
c言語については初心者なので、どなたか教えていただけるとありがたいです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAの繰り返し処理について教えてください。 3 2022/08/02 13:21
- C言語・C++・C# プログラムの時、フローチャートはどうなりますか?図でお願いします。 int main(void) { 1 2022/10/01 22:45
- C言語・C++・C# C言語で再起関数とポインタを用いて文字列反転をする方法がわかりません。 4 2023/04/29 20:32
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- Visual Basic(VBA) エクセルVBAで教えて頂きたいのですが? 2 2022/12/31 20:28
- その他(プログラミング・Web制作) Pythonでのかんたんな物理シミュレーションについての書籍 5 2023/06/02 07:37
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- JavaScript jsで、配列内の文章を改行する際どのようにすればいいですか。 3 2022/07/05 20:40
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・ハマっている「お菓子」を教えて!
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
System.out.printlnの出力先
-
System.err. printlnとSystem.o...
-
flush()とclose()について
-
Javaで改行などが出来ないのです。
-
Log4jで機能毎に別ファイルへ出...
-
javaのwhile文で九九の表
-
一定のスペースを空けて端を揃...
-
Javaで任意のパスへ任意のファ...
-
1~100までの数字を表示し、か...
-
system.out.printが出力されない
-
Java 九九の表について
-
tomcatのstdout.logを停止したい。
-
Apache POI のログについて
-
javacのエラー出力をテキストフ...
-
VBSエラー"オブジェクト型の変...
-
JavaScriptの変数をjavaのメソ...
-
Eclipseのコンソールを常に表示...
-
JavaScriptでcgiの戻り値を受け...
-
Tomcatが無応答となる現象が起...
-
プールとスプールの違いがわか...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
System.err. printlnとSystem.o...
-
Javaで改行などが出来ないのです。
-
1~100までの数字を表示し、か...
-
flush()とclose()について
-
Log4jで機能毎に別ファイルへ出...
-
System.out.printlnの出力先
-
1~100までの数字を表示したい
-
system.out.printが出力されない
-
Eclipseのコンソールを常に表示...
-
JavaScriptの変数をjavaのメソ...
-
tomcatのstdout.logを停止したい。
-
数字文字列をパック10進数に変...
-
java ファイル操作について
-
InputStreamはreadが1回しかで...
-
switch分が機能しません。
-
VBAでEUC-JPのHTMLソースを取得...
-
テキストエリアで改行する
-
Tomcatが無応答となる現象が起...
-
VBSエラー"オブジェクト型の変...
-
JAVAのServletで、画像表示につ...
おすすめ情報