1.电机T型等效电路模型
1.1 Python代码 - 考虑转差率为负
import numpy as np
import matplotlib.pyplot as plt
# 设置已知参数值
rm = 11.421
lm = 553.9e-3
r2 = 7.553
l2 = 42.90e-3
freq_in = 50
# 设置频率值范围和步长
s = np.linspace(-0.05, 0.05, 1000)
im = 380/(rm+(lm+l2)*2*np.pi*freq_in*1j)/np.sqrt(3);
# 计算并绘制曲线
curr_in = (im + im*(rm+(lm+l2)*2*np.pi*freq_in*1j)/(r2 + l2*2*np.pi*freq_in*1j + (1-s)/s*r2))
plt.plot(np.abs(curr_in), s)
plt.xlabel('Absolute value of curr_in')
plt.ylabel('Power out')
plt.title('s of rated power is 2A, the max Y-axis = 5%(but engine''s rated s = 2%, I think it is wrong.)')
# 绘制横线
horiz_line = plt.axhline(y=0.05, color='r', linestyle='--', label='"s" == rated power of engine')
horiz_line = plt.axhline(y=0, color='r', linestyle='--', label='"s" == 0')
# 添加图例
plt.legend()
plt.show()
1.2 I-s曲线
注意在s = 0附近:
你会发现输出电流最小的位置,并不在转差率 = 0是,而是在转差率达到某个负值的时候——转差率为负,意味着此时电机的负载等效电阻是个负值,在中和掉整个电路的视在等效电阻后,此时的电路转为纯感性电路,此时,电流才会出现极小值,越过这条线,转差率继续向负半周偏移——此时,电机并不是在做功,而是作为一台发电机在工作。就是此时电机正转,但是反拉,提供的力矩与旋转方向相反,克服掉重物的力矩,匀速下滑。
2.不同负载,上下行时的线电流差异
2.1 Python代码
import numpy as np
import matplotlib.pyplot as plt
# 设置已知参数值
rm = 11.421
lm = 553.9e-3
r2 = 7.553
l2 = 42.90e-3
freq_in = 50
im = 380/(rm+(lm+l2)*2*np.pi*freq_in*1j)/np.sqrt(3);
s = np.linspace(0, -0.05, 1000)
curr_in_download = (im + im*(rm+(lm+l2)*2*np.pi*freq_in*1j)/(r2 + l2*2*np.pi*freq_in*1j + (1-s)/s*r2))
# 设置频率值范围和步长
s = np.linspace(0, 0.05, 1000)
# 计算并绘制曲线
curr_in_upword = (im + im*(rm+(lm+l2)*2*np.pi*freq_in*1j)/(r2 + l2*2*np.pi*freq_in*1j + (1-s)/s*r2))
curr_diff_of_updown = curr_in_upword - curr_in_download
plt.plot(np.abs(curr_in_upword), s)
plt.plot(np.abs(curr_diff_of_updown), s)
plt.xlabel('Absolute value of curr_in')
plt.ylabel('Power out')
plt.title('s of rated power is 2A, the max Y-axis = 5%(but engine''s rated s = 2%, I think it is wrong.)')
# 绘制横线
horiz_line = plt.axhline(y=0.05, color='r', linestyle='--', label='"s" == rated power of engine')
horiz_line = plt.axhline(y=0, color='r', linestyle='--', label='"s" == 0')
# 添加图例
plt.legend()
plt.show()
2.2 dI_of(up2down)-s曲线
一个奇迹出现了——转差率和上下行电流差之间呈现出线性关系:(当然,它要考虑到电机的运行方向),此时电流的值是有正负号的。
2.3 代入实际数据校验:
2.3.1 数据筛选:
上面这台电机,6日13:10分的最前面这笔数据看起来很像是先空钩下降,然后上升。这是一组完整的数据点,一对儿空钩的电流:
di1 = (21.84a -21.97a) di = 0.13a,空钩
6日 13:20似乎连续做了两次上下操作:
di2 = (22.06, 21.63) di = 0.43 ...
di3 = (22.12, 21.67) di = 0.45
di4,这里似乎是又一组:
di4 = (21.97, 21.80) di = 0.17a
找个电流大一点的:
di5 = (23.87, 21.52) , di = 2.35a
现在把上述5个点,打印出来:
2.3.2 数据呈现:
看起来能看到那个电机曲线的样子对吧?此时这几个数据点似乎还没有达到那个电流极值。 那个蝴蝶结可能无关紧要,仅仅是误差,或者原始数据读取错误。
2.3.3 数据及源码:
数据文件:
{
"engine":"231015062",
"date":"2024/07/06",
"curr":[
{
"up":21.97,
"down":21.84
},
{
"up":22.06,
"down":21.63
},
{
"up":22.12,
"down":21.67
},
{
"up":21.97,
"down":21.80
},
{
"up":23.87,
"down":21.52
}
]
}
import numpy as np
import matplotlib.pyplot as plt
import json
from datetime import datetime
dbFile = "engine_curr.json"
# 读取原始数据文件
with open(dbFile, 'r', encoding='utf-8') as f:
data = json.load(f)
# 选择id为10到20的数据,并提取需要的字段
ardt = []
armax = []
armin = []
for record in data["curr"]:
armax.append(float(record["up"]))
armin.append(float(record["down"]))
ardt.append(armax[-1] - armin[-1])
ardt_neg = [element * -1.0 for element in ardt]
#绘制:
plt.plot(armax, ardt)
plt.plot(armin, ardt_neg)
plt.ylabel(f's * unknowRatio')
plt.xlabel('current (rms)')
plt.title(f'plc_{data["engine"]}_at{data["date"]}')
# 绘制横线
#horiz_line = plt.axhline(y=0.05, color='r', linestyle='--', label='"s" == rated power of engine')
#horiz_line = plt.axhline(y=0, color='r', linestyle='--', label='"s" == 0')
# 添加图例
plt.legend()
plt.show()
2.3.4 更多的数据校验