Qurak

DC-to-DC buck converter

ตัวอย่าง 5 ขั้นตอน รันตามลำดับในหนึ่งเซสชัน ทุกขั้นถูกรันกับเอนจินจริง และเอาต์พุตด้านล่างคือสิ่งที่มันให้

ขั้นที่ 1
system = {vo'[t] == -vo[t] / (r c) + i[t] / c , i'[t] == -vo[t] / l + q[t]vi / l, vo[0] == 0, i[0] == 0};

ไม่มีเอาต์พุต - ขั้นนี้ตั้งค่าบางอย่างไว้ให้ขั้นถัดไป

ขั้นที่ 2
control = {q[0] == 1, WhenEvent[Mod[t, τ] == (vd / vi)τ, q[t] -> 0], WhenEvent[Mod[t, τ] == 0, q[t] -> 1]};

ไม่มีเอาต์พุต - ขั้นนี้ตั้งค่าบางอย่างไว้ให้ขั้นถัดไป

ขั้นที่ 3
pars = {vi -> 24, vd -> 16, r -> 22, l -> 2 10 ^ -2, c -> 4 10 ^ -6, τ -> 2 10 ^ -4};

ไม่มีเอาต์พุต - ขั้นนี้ตั้งค่าบางอย่างไว้ให้ขั้นถัดไป

ขั้นที่ 4
sol = NDSolve[{system, control} /. pars, {vo, i, q}, {t, 0, .01}, DiscreteVariables -> q, MaxSteps -> Infinity];

ไม่มีเอาต์พุต - ขั้นนี้ตั้งค่าบางอย่างไว้ให้ขั้นถัดไป

ขั้นที่ 5
Row[{Plot[{vo[t] /. sol, vd /. pars}, {t, 0, .01}, PlotRange -> All, PlotLegends -> {"vo(t)", "vd"}], Spacer[50], Plot[q[t] /. sol, {t, 0, .001}, AxesLabel -> {t, q[t]}]}]
เอาต์พุต
-Graphics-Spacer[50]-Graphics-

ฟังก์ชันที่ใช้

สูตรงานที่เกี่ยวข้อง

สูตรงานทั้งหมด · เอกสารอ้างอิงฟังก์ชัน · ใช้สิ่งนี้จากไคลเอนต์ MCP