jgjgjgjg 发表于 2015-6-10 22:08

不能下载,强烈建议公开源码

SNYDJ 发表于 2015-6-14 09:15

好资料啊!谢谢提供!

limengde2001 发表于 2015-6-29 09:40

如何计算永磁同步电机最大去磁工作点及仿真部分退磁后电机的性能

jgjgjgjg 发表于 2015-6-10 22:08
不能下载,强烈建议公开源码

源码如下:

''''''''''dim input'''''''''''''''''
Dim U, e0, xad, xaq, r1, x1, theta As Double
Dim xd, xq, id, iq, i1, fai, fainei As Double

''''''''''dim viction'''''''''''''''
Dim ve0x, ve0y, vxadx, vxady, vxaqx, vxaqy, vr1x, vr1y, vx1x, vx1y, vi1x, vi1y, vux, vuy As Double
''''''''''dim location'''''''''''''''
Dim cuxi, movey, ox, oy, e0x, e0y, xadx, xady, xaqx, xaqy, r1x, r1y, x1x, x1y, i1x, i1y, ux, uy As Double





''''''''''loadform'''''''''''''''
Private Sub Form_Load()
'读取数据,初始化窗口用
   Textu.Text = 219
Texte0.Text = 223
Textxad.Text = 2.37
Textxaq.Text = 6.57
Textr1.Text = 0.0743
Textx1.Text = 0.228
Texttheta.Text = 56.5
myinput

'初始化窗口
cuxi = 2
Form1.Height = 8000
Form1.Width = 16000
Form1.ScaleHeight = U * 1.8
Form1.ScaleWidth = U * 3.6
Form1.DrawWidth = cuxi

'定义控件初始值
movey = 20
Labeltxt.Caption = "说明:" & (Chr(13) + Chr(10)) & "1.点击【计算】绘制图形,操作进度条观看动画;" _
& (Chr(13) + Chr(10)) & "2.点击【导出计算结果】计算工作特性保存在当前目录的txt文件中;" _
& (Chr(13) + Chr(10)) & "3.程序为个人学习电机设计所用,未经严密验证。" _
& (Chr(13) + Chr(10)) & "                                  ——李孟德@明腾永磁技术部"
End Sub
'''''''''help'''''''''''''''''
Private Sub Command2_Click()
Labeltxt.Caption = "说明:" & (Chr(13) + Chr(10)) & "1.点击【计算】绘制图形,操作进度条观看动画;" _
& (Chr(13) + Chr(10)) & "2.点击【导出计算结果】计算工作特性保存在当前目录的txt文件中;" _
& (Chr(13) + Chr(10)) & "3.程序为个人学习电机设计所用,未经严密验证。" _
& (Chr(13) + Chr(10)) & "                                  ——李孟德@明腾永磁技术部"

End Sub
''''input''''''''''''''''''
Sub myinput()
U = CDbl(Textu.Text)
e0 = CDbl(Texte0.Text)
xad = CDbl(Textxad.Text)
xaq = CDbl(Textxaq.Text)
r1 = CDbl(Textr1.Text)
x1 = CDbl(Textx1.Text)
theta = CDbl(Texttheta.Text) * 3.14159 / 180
End Sub

''''''''calc''''''''
Sub calc()
myinput
'calc variable
xd = x1 + xad
xq = x1 + xaq
id = (r1 * U * Cos(theta + 3.14159 / 2) + xq * (U * Sin(theta + 3.14159 / 2) - e0)) / (r1 ^ 2 + xq * xd)
iq = -(xd * U * Cos(theta + 3.14159 / 2) - r1 * (U * Sin(theta + 3.14159 / 2) - e0)) / (r1 ^ 2 + xq * xd)
i1 = (id ^ 2 + iq ^ 2) ^ 0.5
fainei = -Atn(id / iq) * 180 / 3.14159
fai = fainei - theta * 180 / 3.14159
'calc viction
ve0x = 0
ve0y = e0

vxadx = 0
vxady = xad * id

vxaqx = -iq * xaq
vxaqy = 0

vr1x = r1 * id
vr1y = r1 * iq

vx1x = -iq * x1
vx1y = id * x1

vi1x = id
vi1y = iq

vux = U * Cos(theta + 3.14159 / 2)
vuy = U * Sin(theta + 3.14159 / 2)

'calc lacation
ox = Form1.ScaleWidth / 3
oy = Form1.ScaleHeight * 9 / 10 * (movey / 20)

e0x = ox + ve0x
e0y = oy - ve0y

xadx = ox + ve0x + vxadx
xady = oy - ve0y - vxady

xaqx = ox + ve0x + vxadx + vxaqx
xaqy = oy - ve0y - vxady - vxaqy

r1x = ox + ve0x + vxadx + vxaqx + vr1x
r1y = oy - ve0y - vxady - vxaqy - vr1y

x1x = ox + ve0x + vxadx + vxaqx + vr1x + vx1x
x1y = oy - ve0y - vxady - vxaqy - vr1y - vx1y

i1x = ox + vi1x
i1y = oy - vi1y

ux = ox + vux
uy = oy - vuy

End Sub

'''''''''''SHOUW'''''''''''''
Sub output()
Labeltxt.Caption = "id=" & Format(id, "0.00E+00") & "" _
& "iq=" & Format(iq, "0.00E+00") & "" _
& "i1=" & Format(i1, "0.00E+00") & "" _
& "id*xad=" & Format(id * xad, "0.00E+00") & (Chr(13) + Chr(10)) _
& "iq*xaq=" & Format(iq * xaq, "0.00E+00") & "" _
& "i1*r1=" & Format(i1 * r1, "0.00E+00") & "" _
& "i1*x1=" & Format(i1 * x1, "0.00E+00") & "" _
& "u=" & Format(U, "0.00E+00") & (Chr(13) + Chr(10)) _
& "fainei=" & Format(fainei, "0.00E+00") & "" _
& "fai=" & Format(fai, "0.00E+00")



End Sub

''''''''DRAW''''''''''''
Sub draw()
Cls

'画坐标轴
Dim x As Integer
Dim y As Integer
Form1.DrawWidth = 1.2
'画x轴坐标系
Form1.Line (ox, oy)-(ox + Form1.ScaleWidth / 4, oy), vbBlue
Form1.ForeColor = vbBlue
Form1.Print "X"
'画x坐标点
Form1.DrawWidth = 4
For y = 0 To 10 Step 1
Form1.PSet (ox + Form1.ScaleWidth / 4 * y / 10, oy)
Next y

'画y轴坐标系
Form1.DrawWidth = 1.2
Form1.Line (ox, oy)-(ox, 1 / 10 * oy), vbBlue
Form1.ForeColor = vbBlue
Form1.Print "Y"
'画y坐标点(以1小时为1个单位)
Form1.DrawWidth = 4
For x = 0 To 15 Step 1
Form1.PSet (ox, oy - 9 / 150 * oy * x)
Next x

'指定位置显示原点o
Form1.CurrentX = ox
Form1.CurrentY = oy
Form1.Print "0"


'画向量
Form1.DrawWidth = cuxi
'i1
Form1.Line (ox, oy)-(i1x, i1y), RGB(128, 0, 255)

'e0
Form1.Line (ox, oy)-(e0x, e0y), RGB(255, 0, 0)
'xad
'Form1.Line (e0x, e0y)-(xadx, xady), RGB(0, 255, 0)
Form1.Line (e0x - Form1.DrawWidth - 1, e0y)-(xadx - Form1.DrawWidth - 1, xady), RGB(255, 128, 0) '偏移防止重合

'xaq
Form1.Line -(xaqx, xaqy), RGB(255, 255, 0)
'r1
Form1.Line -(r1x, r1y), RGB(0, 255, 0)
'x1
Form1.Line -(x1x, x1y), RGB(0, 255, 255)
'u
'Form1.Line -(ox, oy), RGB(255, 0, 0)

'u
Form1.Line (ox, oy)-(ux, uy), RGB(0, 0, 255)

End Sub





''''''''绘制图形''''''''''''''''''''''
Private Sub Command1_Click()
calc
draw
output
End Sub



'''''''''自动绘图参考''''''''''''''''''''''''
Private Sub VScroll1_Change()
theta = VScroll1.Value * 3.14159 / 180
Texttheta.Text = theta * 180 / 3.14159
Command1_Click
End Sub





'''''''''自动绘图1''''''''''''''''''''''''
Private Sub HScrollu_Change()
U = HScrollu.Value / 100 * CDbl(Text1.Text)
Textu.Text = U
Command1_Click
End Sub
'''''''''自动绘图2''''''''''''''''''''''''
Private Sub HScrolle0_Change()
e0 = HScrolle0.Value / 100 * CDbl(Text2.Text)
Texte0.Text = e0
Command1_Click
End Sub
'''''''''自动绘图3''''''''''''''''''''''''
Private Sub HScrollxad_Change()
xad = HScrollxad.Value / 100 * CDbl(Text3.Text)
Textxad.Text = xad
Command1_Click
End Sub
'''''''''自动绘图4''''''''''''''''''''''''
Private Sub HScrollxaq_Change()
xaq = HScrollxaq.Value / 100 * CDbl(Text4.Text)
Textxaq.Text = xaq
Command1_Click
End Sub
'''''''''自动绘图5''''''''''''''''''''''''
Private Sub HScrollr1_Change()
r1 = HScrollr1.Value / 100 * CDbl(Text5.Text)
Textr1.Text = r1
Command1_Click
End Sub
'''''''''自动绘图6''''''''''''''''''''''''
Private Sub HScrollx1_Change()
x1 = HScrollx1.Value / 100 * CDbl(Text6.Text)
Textx1.Text = x1
Command1_Click
End Sub
'''''''''自动绘图7''''''''''''''''''''''''
Private Sub HScrolltheta_Change()
theta = HScrolltheta.Value / 100 * CDbl(Text7.Text) * 3.14159 / 180
Texttheta.Text = theta * 180 / 3.14159
Command1_Click
End Sub


'''''''''清除窗口'''''''''''''''''
Private Sub Command4_Click()
Cls
End Sub

'''''''''放大图形'''''''''''''''''
Private Sub Command5_Click()
Form1.ScaleHeight = 0.9 * Form1.ScaleHeight
Form1.ScaleWidth = 0.9 * Form1.ScaleWidth
Command1_Click
End Sub
'''''''''缩小图形'''''''''''''''''
Private Sub Command6_Click()
Form1.ScaleHeight = 1.1 * Form1.ScaleHeight
Form1.ScaleWidth = 1.1 * Form1.ScaleWidth
Command1_Click
End Sub
'''''''''上移图形'''''''''''''''''
Private Sub Command9_Click()
movey = movey - 1
Command1_Click
End Sub
'''''''''下移图形'''''''''''''''''
Private Sub Command10_Click()
movey = movey + 1
Command1_Click
End Sub
'''''''''加粗图形'''''''''''''''''
Private Sub Command8_Click()
cuxi = cuxi + 1
Command1_Click
End Sub
'''''''''初始化图形'''''''''''''''''
Private Sub Command7_Click()
myinput
Form1.Height = 8000
Form1.Width = 16000
Form1.ScaleHeight = U * 1.8
Form1.ScaleWidth = U * 3.6
cuxi = 2
movey = 20
Command1_Click
End Sub

''''''''''''''导出计算结果‘’‘’‘’‘’‘’‘’
Private Sub Commandexport_Click()

Open App.Path & "\" & "永磁电机不同功角电学参数.txt" For Output As #1

Print #1, " theta   i1      id      iq      fainei      fai   " & (Chr(13) + Chr(10))

For i = 0 To 90

'CALC
theta = i * 3.14159 / 180
Texttheta.Text = theta * 180 / 3.14159
Command1_Click
'RECORD
Labeltxt.Caption = Format(theta * 180 / 3.14159, "0.00E+00") & "" _
& Format(i1, "0.00E+00") & "" _
& Format(id, "0.00E+00") & "" _
& Format(iq, "0.00E+00") & "" _
& Format(fainei, "0.00E+00") & "" _
& Format(fai, "0.00E+00") & "" _
& (Chr(13) + Chr(10))
'SAVEFILE
Print #1, Labeltxt.Caption

Next i

Close #1

End Sub


jgjgjgjg 发表于 2015-7-24 19:29

太酷了!{:soso_e100:}

hnie2008 发表于 2015-7-24 23:06

谢谢楼主的分享{:soso_e179:}

戒僧和尚佛缘 发表于 2015-9-6 16:30

麻烦您能不能将《永磁电机计算程序(电压向量图v1.0).zip》发我一份 364076295@qq.com ,谢谢了

戒僧和尚佛缘 发表于 2015-9-23 16:11

本帖最后由 戒僧和尚佛缘 于 2015-9-23 16:24 编辑

原先下过的同学能帮忙再传上来吗

戒僧和尚佛缘 发表于 2015-9-23 16:23

把源码粘到vb6.0中编译出不出来程序

limengde2001 发表于 2015-10-8 16:04

戒僧和尚佛缘 发表于 2015-9-23 16:23
把源码粘到vb6.0中编译出不出来程序

因为缺少窗体及上面的按钮等可视化对象,vb不像vc,只贴代码编译不了程序。,你照着程序,动手画下窗体、按钮,就能编译了。

limengde2001 发表于 2015-10-8 16:25

部分论坛网友反映无法下载,重新上传下附件,

limengde2001 发表于 2015-10-8 16:32

戒僧和尚佛缘 发表于 2015-9-6 16:30
麻烦您能不能将《永磁电机计算程序(电压向量图v1.0).zip》发我一份,谢谢了

已发,请查收~~~~~~~~~~~

wjqdslz 发表于 2015-10-13 16:12

谢谢楼主的分享{:soso_e100:}

dzl2014 发表于 2015-10-13 20:54

楼主真是雷锋啊,太好了,看到楼主用vb编写的界面非常不错啊,我想用vc实现异步起动永磁同步电机电机的编程,也是按照唐老师那本书上的,但是到工作特性计算模块出不来了,不知道楼主有没有尝试用vc编写啊?

limengde2001 发表于 2015-10-14 19:19

dzl2014 发表于 2015-10-13 20:54
楼主真是雷锋啊,太好了,看到楼主用vb编写的界面非常不错啊,我想用vc实现异步起动永磁同步电机电机的编程 ...

不客气。书上工作特性计算那篇,稍微复杂点的就是几个循环和查表,用vc肯定能编工作特性计算。我喜欢用vb6,就是因为简单且够用。

limengde2001 发表于 2015-10-14 19:22

dzl2014 发表于 2015-10-13 20:54
楼主真是雷锋啊,太好了,看到楼主用vb编写的界面非常不错啊,我想用vc实现异步起动永磁同步电机电机的编程 ...

我在另一篇帖子上发过一个永磁计算程序(后来学Maxwell,没有细致调试),使用vb编的,有工作特性计算的源码,你用vc可以参考

dzl2014 发表于 2015-10-15 19:06

limengde2001 发表于 2015-10-14 19:22
我在另一篇帖子上发过一个永磁计算程序(后来学Maxwell,没有细致调试),使用vb编的,有工作特性计算的 ...

好的,我试试吧,感谢楼主!我最近也在学Ansoft,做电机的不容易啊!

yiersan 发表于 2015-10-19 19:28

已经下载到了,谢谢楼主

流沙SJX 发表于 2015-10-19 19:50

谢谢楼主。楼主好人

shichaojie 发表于 2015-12-23 16:13

多谢楼主!!!!!!!!

张三一 发表于 2016-2-16 13:59

shanzi360 发表于 2015-6-4 09:36
怎么提示无法读取????

材料不错,谢谢提供.
页: 1 [2] 3 4
查看完整版本: 发个永磁电机计算程序,功能是计算工作特性,并绘制电压向量图