卒業研究でよく分からないところがあるので教えて欲しいです。
インバータ用組み込みソフトウェア開発システム(RE-PRO/F28335A)を用いてオシロスコープにグラフを表示させました。
プログラムは三相の波形に高調波成分を加えたプログラミングです。
写真のような結果が出ました。
1+5は基本派と5次高調波を合成したものです。
1+5+7は基本派と5次と7次の高調波を合成したものです。
この流れの概要を分かりやすく説明をして頂きたいです。
機器の説明からその機器はどのような役割を果たすのかなど教えて頂きたいです。
/********************************************************************************************************************************************
Title : Sample Program for PE-PRO/F28335A
Sub title : Sample Program of D/A conversion
Copyright : 2010 Myway Corporation
Explanation : This program performs D/A conversion function on PE-PRO/F28335A.
Control board : PE-PRO/F28335A
*********************************************************************************************************************************************/
#define DAC_ENABLE
#include <mwio.h>
/* Header file of I/O library for PEOS/F28335*/
#include <pro_f28335.h>
/* Header file for PE-PRO/F28335A*/
#include <pro_f28335.c>
/* Peculiar module for PE-PRO/F28335A*/
#define PI(n) (3.14159265358979 * (n))
#define PERIOD 20000
/* 1/(50Hz) = 20ms = 20000us*/
#define SAMPL 200
/* Number of sampling points*/
volatile FLOAT32 dwt = PI(2.0) / SAMPL;
volatile FLOAT32 m = 1.0;
FLOAT32 u = 0.0;
FLOAT32 v = 0.0;
FLOAT32 w = 0.0;
FLOAT32 wt = 0.0;
void func_test(void);
#pragma INTERRUPT(func_test)
void func_test(void)
{
int_ack();
wt += dwt;
/* Phase angle*/
if (wt > PI(1.0)) { wt -= PI(2.0); }
/* When the phase angle reaches pi, it is turned to be -pi*/
u = m*mwsin(wt + PI(2.0 / 3.0))+(m/5.0)*mwsin(5.0*wt + PI(10.0/3.0));+(m/7.0)*mwsin(7.0*wt + PI(14.0/3.0));
/* Generation of 3-phase sine wave*/
v = m*mwsin(wt )+(m/
5.0)*mwsin(5.0*wt );+(m/7.0)*mwsin(7.0*wt );
w = m*mwsin(wt - PI(2.0 / 3.0))+(m/5.0)*mwsin(5.0*wt - PI(10.0/3.0));+(m/7.0)*mwsin(7.0*wt - PI(14.0/3.0));
pro_da_out(0,u); /* Output data for viewing waveforms in DAC*/
pro_da_out(1,v);
pro_da_out(2,w);
timer0_clear_int_flag();
/* Clearing the interrupt flag.*/
}
int main(void)
{
int_disable();
system_init();
#if !defined(F28335LMT)
watch_init();
#endif
timer0_init( PERIOD / SAMPL );
/* Initialization of Timer0 and setting interrupt period*/
/* After the initialization, Timer0 is stopped, */
/* and Timer0 interrupt is inactive.*/
timer0_init_vector( func_test );
/* Timer0 interrupt routine definition*/
timer0_start();
/* Starting Timer0 counter*/
timer0_enable_int();
/* Enabling Timer0 interrupt */
int_enable();
/* Enabling all interrupts */
pro_da_init();
/* Initialization of DA converter*/
pro_da_set_range(0, 1.5);
/* Setting range DA output level*/
pro_da_set_range(1, 1.5);
pro_da_set_range(2, 1.5);
while(1){
#if !defined(F28335LMT)
watch_data();
/* Sending data for viewing waveforms in WAVE*/
#endif
}
/* NOTREACHED */
return 0;
}
No.1ベストアンサー
- 回答日時:
現物のことを全く知らないので想像だけでモノを言いますが、それ用のAPIがあって、timer_ほげほげ()関数やpro_da_ほげほげ()関数でパラメータやら条件を設定してやって、無限ループ内でwatch_data()関数を呼び出すと、定期的にfunc_test()関数が呼ばれてほんのちょっとだけ時間パラメータが変化しながら値を出力できる、的なものなのかなと。
オッシロは普通のオッシロなのであれば、信号を取るのに使うプローブ的なものがPCの出力端子になっていて、そこから信号が出るので、オッシロの画面上にプロットした波形が表示される、っていう代物なのかなぁと思います。簡単に言えば、時系列に対する重畳波形をfunc_test()で計算していて、3チャネル(uが0、vが1、wが2)それぞれに出力している、と。変数名から想像するに、wtはωt、dwtはΔωtっぽいので、時系列に対する位相がwtなんでしょう。
で、何が知りたいのですか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# 質問です 下記のコードを分かりやすく解説お願いします 初心者です #include ‹stdio.h 3 2022/05/26 22:03
- C言語・C++・C# C 言語の Gauss Jordan 法について 2 2022/12/28 11:16
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- 英語 この英文は落ち着いた英文だと思いますか? 1 2023/12/03 19:08
- C言語・C++・C# C++ と、 1 2022/11/07 23:45
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# C言語 3 2022/11/09 13:27
- その他(プログラミング・Web制作) 十進BASICでの再帰についての質問です。 2 2022/11/18 09:17
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- 工学 Pythonの3Dグラフ表示に関する質問です。 1 2022/12/06 15:03
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
プログラミング言語の制作方法について
C言語・C++・C#
-
C言語って古いですか?
C言語・C++・C#
-
これなにがちがうんですか??
C言語・C++・C#
-
-
4
C言語について。
C言語・C++・C#
-
5
バッファリングについて。
C言語・C++・C#
-
6
終端記号、非終端記号とは
C言語・C++・C#
-
7
VisualStudio2022でC言語プログラムで全角文字を使用すると不明なエラーが表示される
C言語・C++・C#
-
8
どなたかこのプログラミングを完成させて欲しいです。 ヒントはこちらです↓ 青色:ゲームプログラムのル
C言語・C++・C#
-
9
C言語の関数と配列に関する質問
C言語・C++・C#
-
10
WindowsのCapsLock(キャップスロック)って、何の意味があるんですか?
C言語・C++・C#
-
11
Javaって使いますか、もう古いですか?C++とどっちがいいですか?分析でC++使う授業ありましたけ
C言語・C++・C#
-
12
C言語関数違いについて。
C言語・C++・C#
-
13
C言語について。
C言語・C++・C#
-
14
C言語について
C言語・C++・C#
-
15
擬似コード 長さがmの配列でなんで For i =0 to m とかかくの?m-1までしかないでしょ
C言語・C++・C#
-
16
gcc13.2のバグ?
C言語・C++・C#
-
17
chatgptでつくってもらったコードとかって頭のいい人はみるとわかりますか?
C言語・C++・C#
-
18
C言語 列挙型(enum型)変数について
C言語・C++・C#
-
19
LinuxカーネルのCFSで用いられているような
C言語・C++・C#
-
20
MACで動く実行ファイルをWindowsで作る方法(クロスコンパイラ紹介ください)
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数桁10進数の*桁目だけを抽出...
-
「指定されたキャストは有効で...
-
C言語での引数の省略方法
-
#define _CRT_SECURE_NO_WARNIN...
-
(int *)の意味
-
数字列を3桁ごとにカンマで区切...
-
比較回数と交換回数表示について
-
if と配列の組み合わせ
-
C言語で三目並べをするプログラ...
-
実数の整数部,小数部の取得
-
卒業研究でよく分からないとこ...
-
C言語で分からないところがあり...
-
C言語での奇数の和
-
アスタリスクで正方形
-
警告 W8065について。
-
入力された2つの整数の差を絶対...
-
【C++】関数ポインタの使い方
-
C言語 エラーの原因がわからな...
-
C言語
-
C言語初心者です、、、お助けく...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「指定されたキャストは有効で...
-
C言語での引数の省略方法
-
複数桁10進数の*桁目だけを抽出...
-
#define _CRT_SECURE_NO_WARNIN...
-
ラップ関数とはどんなものですか?
-
卒業研究でよく分からないとこ...
-
【C++】関数ポインタの使い方
-
実数の整数部,小数部の取得
-
std::set<int> で、ある値が何...
-
C言語 エラーの原因がわからな...
-
c言語
-
system関数がうまくいかない
-
C++でvectorにテキストファイル...
-
acceptをalarmでタイムアウトさ...
-
if と配列の組み合わせ
-
return 1L
-
「{ } で囲むだけ」は正しい?
-
(マルチスレッド)_beginthrea...
-
PowerShellがうまくいかない
-
このプログラミング誰か教えて...
おすすめ情報