Dartで三相交流電力の抵抗、電流、電圧、電力を計算してみました。
【Dart】三相交流電力の各種計算
import 'dart:math';
class AcPhase3 {
AcPhase3() {
}
El_P3p_Cos(double El, double P3p, double Cos, String wire) {
var dst = {};
double Pp, Ep, Il, Ip, Zp, Rp, Xp;
dst["El"] = El;
dst["P3p"] = P3p;
dst["Cos"] = Cos;
dst["Pp"] = Pp = P3p / 3;
// delta
if(wire == "delta"){
dst["Ep"] = Ep = El;
dst["Il"] = Il = P3p / (sqrt(3) * El * Cos);
dst["Ip"] = Ip = Il / sqrt(3);
}
// star結線
if(wire == "star"){
dst["Ep"] = Ep = El / sqrt(3);
dst["Il"] = Il = P3p / (sqrt(3) * El * Cos);
dst["Ip"] = Ip = Il;
}
dst["Zp"] = Zp = Ep / Ip;
dst["Rp"] = Rp = Zp * Cos;
dst["Xp"] = Xp = sqrt(Zp*Zp - Rp*Rp);
return dst;
}
// 入力が(線間電圧、抵抗、リアクタンス)の場合
El_Rp_Xp(double El, double Rp, double Xp, String wire){
var dst = {};
double P3p, Pp, Ep, Il, Ip, Zp, Cos;
dst["El"] = El;
dst["Rp"] = Rp;
dst["Xp"] = Xp;
// Δ結線
if(wire == "delta"){
dst["Ep"] = Ep = El;
}
// star結線
if(wire == "star"){
dst["Ep"] = Ep = El / sqrt(3);
}
dst["Zp"] = Zp = sqrt(Rp*Rp + Xp*Xp);
dst["Cos"] = Cos = Rp/ Zp;
dst["Pp"] = Pp = (Ep*Ep) / Rp;
dst["P3p"] = P3p = Pp * 3;
dst["Il"] = Il = P3p / (sqrt(3) * El * Cos);
dst["Ip"] = Ip = Il;
return dst;
}
// 入力が(線電流、インピーダンス、力率)の場合
Il_Zp_Cos(double Il, double Zp, double Cos, String wire){
var dst = {};
double P3p, Pp, Ep, El, Ip, Rp, Xp;
dst["Il"] = Il;
dst["Zp"] = Zp;
dst["Cos"] = Cos;
dst["Rp"] = Rp = Zp * Cos;
dst["Xp"] = Xp = sqrt(Zp*Zp - Rp*Rp);
// Δ結線
if(wire == "delta"){
dst["Ip"] = Ip = Il / sqrt(3);
dst["Ep"] = Ep = Zp * Ip;
dst["El"] = El = Ep;
}
// star結線
if(wire == "star"){
dst["Ip"] = Ip = Il;
dst["Ep"] = Ep = Zp * Ip;
dst["El"] = El = Ep * sqrt(3);
}
dst["Pp"] = Pp = Ep * Ip * Cos;
dst["P3p"] = P3p = Pp * 3;
return dst;
}
// 入力が(線電流、抵抗、リアクタンス)の場合
Il_Rp_Xp(double Il, double Rp, double Xp, String wire){
var dst = {};
double P3p, Pp, Ep, El, Ip, Zp, Cos;
dst["Il"] = Il;
dst["Rp"] = Rp;
dst["Xp"] = Xp;
dst["Zp"] = Zp = sqrt(Rp*Rp + Xp*Xp);
// Δ結線
if(wire == "delta"){
dst["Ip"] = Ip = Il / sqrt(3);
dst["Ep"] = Ep = Zp * Ip;
dst["El"] = El = Ep;
}
// star結線
if(wire == "star"){
dst["Ip"] = Ip = Il;
dst["Ep"] = Ep = Zp * Ip;
dst["El"] = El = Ep * sqrt(3);
}
dst["Pp"] = Pp = Rp * Ip*Ip;
dst["P3p"] = P3p = Pp * 3;
dst["Cos"] = Cos = Rp / Zp;
return dst;
}
// 入力が(線間電圧、線電流、力率)の場合
El_Il_Cos(double El, double Il, double Cos, String wire){
var dst = {};
double P3p, Pp, Ep, Ip, Zp, Rp, Xp;
dst["Il"] = Il;
dst["El"] = El;
dst["Cos"] = Cos;
// Δ結線
if(wire == "delta"){
dst["Ep"] = Ep = El;
dst["Ip"] = Ip = Il / sqrt(3);
}
// star結線
if(wire == "star"){
dst["Ep"] = Ep = El / sqrt(3);
dst["Ip"] = Ip = Il;
}
dst["Zp"] = Zp = Ep / Ip;
dst["Rp"] = Rp = Zp * Cos;
dst["Pp"] = Pp = Rp * Ip*Ip;
dst["Xp"] = Xp = sqrt(Zp*Zp - Rp*Rp);
dst["P3p"] = P3p = Pp * 3;
return dst;
}
// 入力が(線間電圧、消費電力、力率)の場合
Il_P3p_Cos(double Il, double P3p, double Cos, String wire){
var dst = {};
double Pp, Ep, El, Ip, Zp, Rp, Xp;
dst["Il"] = Il;
dst["P3p"] = P3p;
dst["Cos"] = Cos;
dst["Pp"] = Pp = P3p / 3;
// Δ結線
if(wire == "delta"){
dst["Ip"] = Ip = Il / sqrt(3);
dst["Zp"] = Zp = P3p /(3 * Ip*Ip * Cos);
dst["Ep"] = Ep = Zp * Ip;
dst["El"] = El = Ep;
}
// star結線
if(wire == "star"){
dst["Ip"] = Ip = Il;
dst["Zp"] = Zp = P3p /(3 * Ip*Ip * Cos);
dst["Ep"] = Ep = Zp * Ip;
dst["El"] = El = Ep * sqrt(3);
}
dst["Rp"] = Rp = Zp * Cos;
dst["Xp"] = Xp = sqrt(Zp*Zp - Rp*Rp);
return dst;
}
}
void main() {
var ac3 = AcPhase3();
var result = ac3.El_P3p_Cos(480, 2000000, 1, "delta");
print(result);
/*
{El: 480.0, P3p: 2000000.0, Cos: 1.0, Pp: 666666.6666666666, Ep: 480.0, Il: 2405.626121623441, Ip: 1388.8888888888891, Zp: 0.34559999999999996, Rp: 0.34559999999999996, Xp: 0.0}
*/
}
コメント