【开源电机驱动】符号-幅值驱动方式

2023-11-19

原文地址:http://www.modularcircuits.com/blog/articles/h-bridge-secrets/sign-magnitude-drive/

本文为翻译校正稿件,含有译者个人理解

Sign-Magnitude Drive

符号幅值驱动方式


1.Introduction

引言

In this article I’ll talk about one of the popular drive-modes of H-bridges, the Sign-magnitude drive in detail. If you’re not familiar with H-bridges in general, I suggest you read the previous part of the series first, where we’ve looked at the basic operating principles of an H-bridge and went through the various meaningful operating modes.

在本文中,我将详细讨论 h 桥流行的驱动模式之一符号幅度驱动。如果您通常不熟悉 h 桥,我建议您首先阅读本系列文章的前一部分,其中我们了解了 h 桥的基本操作原理,并介绍了各种有意义的操作模式。

Let’s quickly review the basics first! Our H-bridge looks like this:We will also make use of our motor equivalent circuit that I’ve introduced before:

让我们先快速回顾一下基础知识!我们的 H桥是这样的: 我们还将使用我之前介绍过的电机等效电路:

image_thumb[10]
H桥
image_thumb47
电机等效电路

2.Basic operation

基本操作

In sign-magnitude drive, we have four control modes to choose from(we use ‘0’ replace ‘close’ and ‘1’ instead ‘open’ ):

在符号-幅值驱动中,我们有四种控制模式可供选择:(我们使用1代表打开,0代表关闭)

notes:Reversal then Slide
Mapping 1  Q1  Q2  Q3  Q4 
on-time state 0 1 1 0
off-time state  0 1 0 1

 之前文章中已经讲过,在导通(on-time state)状态:即所谓的电机运行过程中,对角线的开关管是被打开的,而

notes:Reversal then Break
Mapping 2  Q1 Q2  Q3  Q4 
on-time state  0 1 1 0
off-time state  1 0 1 0

 

notes:Forward then Slide
Mapping 5  Q1  Q2  Q3  Q4 
on-time state  1 0 0 1
off-time state  0 1 0 1

 

notes:Forward then Break
Mapping 6 Q1  Q2  Q3  Q4 
on-time state  1 0 1
off-time state  1 0 0

These modes describe the way we map the states of the four switches to the ‘on-time’ and the ‘off-time’ of our PWM control signal. If you carefully investigate these tables, you’ll see that the four options describe the four possibilities for two binary choices: whether to keep the a-side or the b-side in a constant state, and whether to keep the low-side or the high-side switch closed continuously.

这些模式描述了我们将四个开关的状态映射到PWM控制的“开启时间”和“关闭时间”的方式。如果仔细研究这些表,您将看到这四个选项描述了两个二进制选择的四种可能性:是保持a侧还是b侧处于恒定状态,以及是保持低压侧还是高压侧开关持续闭合。

You will see pretty soon that one of these binary choices is usually made statically, while a control signal is used to decide between the remaining two choices.

您很快就会看到,其中一个二进制选项通常是静态地执行的,而控制信号用于在其余两个选项之间做出选择。

However, for now, let’s just concentrate on mapping 1 and see, how the bridge operates! As the mapping tells us, during the on-time, Q1 and Q4 are closed. This means that the left-side of the motor is connected to Vbat, while the right-side is grounded. Current can flow from the supply through the motor:

但是,现在,让我们集中精力在下面的映射上,看看这个桥是如何操作的!正如映射告诉我们的那样,在工作状态时,Q1和 Q4是导通的。这意味着电机的左侧连接到 Vbat,而右侧接地。电流可以通过电动机从电源流出:

notes:Reversal then Slide
Mapping 1  Q1  Q2  Q3  Q4 
on-time state 1 0 0 1
off-time state  1 0 1 0

image

When the off-time comes along, Q1 stays closed, but Q4 opens and Q3 closes instead. In this state, there’s no path from the supply to ground through the bridge. However, both of the motor terminals are connected to Vbat, basically short-circuiting the motor. If there was current flowing through the motor at the time the switch-over happened, that current can continue circulating around the in that loop:

休息时间到来时,Q1保持关闭状态,但 Q4开启,Q3关闭。在这种状态下,没有通过桥梁从供应点到地面的路径。然而,两个电机终端都连接到 Vbat 上,基本上使电机短路。如果在开关切换时有电流通过电机,那么电流可以继续在回路中循环:

image

The voltages and the current through the bridge will follow the following wave-forms:

通过电桥的电压和电流将遵循以下波形(下面的波形中高低只表示某一侧的状态是否有翻转):

image

The average voltage the motor sees can be calculated as the following:

电机所能看到的平均电压可以计算如下:

                                         Vmot_avg = Vbat * ton/tcycle, 其中 tcycle 是循环时间,ton + toff = tcycle

From this equation something should be immediately obvious: this mapping can’t move the motor backwards. For that we would need to be able to apply a negative (average) voltage to the motor terminals, but that’s not possible: the motor voltage can only be adjusted between 0 and Vbat. That would be a problem, but if we do the same math for mapping 5, we’ll see that in that mode, the opposite is true: that mode can only turn the motor in the reverse direction and the average motor voltage can only be between 0 and -Vbat.

从这个方程式可以看出,有些东西是显而易见的: 这种映射不能使电机向后移动。为此,我们将需要能够适用于负(平均)电压的电机终端,但这是不可能的: 电机电压只能调整0和 Vbat 之间。这是个问题,但是如果我们用同样的数学方法来计算映射5,我们会发现在这种模式下,反过来也是正确的: 这种模式只能使电动机转向相反的方向,而电动机的平均电压只能在0到-Vbat 之间。

In order to make a functional H-bridge, we need to employ both of these mappings and introduce a control signal that can choose between the two. This is the origin of the name of the drive mode: one control signal – the one that chooses between the two mappings – is used to determine the ‘sign’ of the voltage applied to the motor, while the other – the PWM signal – is used to determine the ‘magnitude’ of that (average) voltage.

为了构造一个H桥的函数,我们需要利用这两种映射,并引入一个控制信号在两者之间进行选择。这是驱动模式名称的起源: 一个控制信号——在两个映射之间选择的信号——用来确定施加到电机的电压的“符号” ,而另一个—— PWM 信号——用来确定该(平均)电压的“幅值”。

The remaining two mappings are only slightly different from the previous two: the difference is that, during the off-time, instead of the two high-side switches, the two low-side ones are turned on. This means that the motor terminals are both connected to ground instead of the battery, but they are still shorted together and the motor current still circulates inside the bridge during the off-time:

其余两个映射与前两个只有轻微的不同: 不同之处在于,在关闭时间期间,两个低端开关被打开,而不是两个高端开关。这意味着电动机的两个端子都连接到地上,而不是电池,但它们仍然短路在一起,电动机电流在休息时间仍然在桥内循环:

image


3.Current flow

电流流向

Let’s take a closer look now at the way the current flows in the system! During the ‘on-time’ the motor inductors see a voltage difference of Vbat-Vg (provided the motor rotates in the same direction, the bridge tries to rotate it). If we disregard the internal resistance of the motor for a minute (or assume that the switching frequency is much higher than the electrical resonance frequency of the motor) this voltage will create a linear current ramp on the inductor (dI/dt = V/Lm). Since we assume Vbat is constant, the slope of the current increase will be determined by Vg, or in other words by the speed of the motor.

现在让我们仔细看看电流在当前系统中流动的方式!在“工作”期间,电机电感上有 Vbat-Vg 的电压差(如果电机在同一方向旋转,电桥试图旋转它)。如果我们忽略电机的内部电阻(或假设开关频率远高于电机的谐振电路频率) ,这个电压将在电感器上产生一个线性电流斜坡(dI/dt = V/Lm)。由于我们假设 Vbat 是常数,电流增加的斜率将由 Vg 决定,或者换句话说由电机的速度决定。

When the motor runs under no load Vg is very close to Vbat, so the current will change very slowly. If the motor is stalled, the current will rise much faster, as Vg is 0. The fastest current rise will happen if we abruptly change the drive direction from full-speed one way to full-speed the other way. In that case Vg will be close to Vbat in absolute value, but reversed in polarity.

当电机空载运行时,Vg 非常接近 Vbat,因此电流变化非常缓慢。如果电动机停止工作,电流上升速度会更快,因为 Vg 为0。如果我们突然改变驱动方向,从全速一个方向到全速另一个方向,那么当前最快的上升就会发生。在这种情况下,Vg 的绝对值将接近 Vbat,但在极性上则相反。

During the off-time, the motor is short-circuited. If we disregard the internal resistance of the switches and the motor, the current can flow without interruption, and the inductors see Vg between their terminals. The current will start decreasing linearly, determined by the generator voltage and the motor inductor.

在停机时间,电机短路。如果我们忽略开关和电动机的内部电阻,电流可以不间断地流动,电感器看到两端之间的 Vg。由发电机电压和电机电感决定,电流将线性地开始减小。


4.Steady State

稳态

We say the bridge operates in a steady state if the cycle-to-cycle averages if the various parameters (voltages, currents) remain constant. The motor doesn’t accelerate nor decelerates and outputs a constant torque.

我们说,如果各种参数的平均值(电压、电流)在一个周期到另外一个周期内保持不变,则电桥工作在一个稳定状态。该电机不加速或减速,并输出一个恒定的扭矩。

If things don’t change from cycle-to-cycle, it means that the motor current at the beginning of a cycle must be the same as at the end. Of course this doesn’t mean that the current stays constant during the cycle and this current-change is called ripple-current. Assuming linear current change during both the on- and the off time, the current deltas are the following:

如果没有参数被改变,这意味着电机电流在一个周期的开始和结束都是相同的。当然,这并不意味着电流在周期中保持恒定,这种电流的变化被称为纹波电流。假设电流在开启和关闭期间线性变化,当前的电流变化如下:

                                                                             Iripple = (Vbat-Vg)/Lm*ton = Vg/Lm*toff

 

If we express Vg from this, we get:

如果我们从这里表达 Vg,我们会得到:

                                                                   Vg = Vbat* ton/(ton+toff) = Vbat * ton/tcycle = Vmot_avg

 

What we get is this: in a steady-state, the generator voltage must be equal to the average voltage the motor sees. The average current will be whatever it needs to be to reach that condition. Now, if we put this Vg back to the current equation, we get this:

从上面的式子,我们得到: 在稳态下,发电机电压等于马达所能看到的平均电压。平均电流将是达到这个条件所需的任何电流。现在,如果我们把这个 Vg 放回到当前的等式中,我们会得到:

                                                                    Iripple = Vbat / Lm / tcycle * ton*toff

既然 toff = tcycle-ton:

                                                                Iripple = Vbat / Lm / tcycle * ton*(tcycle-ton)

This is a second-order function (a parabola) with its maximum at ton = tcycle/2. So the ripple current reaches its maximum at 50% duty cycle, and its value is:

这是一个二阶函数(抛物线) ,其最大值为 ton = tcycle/2。纹波电流在50% 占空比时候达到最大值,其值为:

                                                                      Iripple_max = Vbat / Lm * tcycle/4


5.Reality Check

现实检验

If you recall, the generator voltage is proportional to speed and current is proportional to torque. From the previous chapter it seems as though we have perfect speed control: the speed which is proportional to the generator voltage is equal to the average voltage seen by the motor, which in turn only depends on the duty cycle of the PWM input, our control signal. The torque (current) on the motor will be whatever it has to be to make that happen.

回忆一下,发电机的电压与速度成正比,电流与扭矩成正比。从前一章看来,似乎我们有完美的速度控制: 与速度成正比的发电机电压等于电机的平均电压,这反过来只取决于PWM 输入的占空比,我们的控制信号。电动机上的转矩(电流)将是使其发生的任何因素。

There’s something wrong with that picture isn’t here? After all we know that DC motors don’t keep a constant speed under load changes without any control circuit. True, and it’s easy to see what the problem is: we disregarded the internal resistance of the motor (and the switches).

那这种情况下有什么问题吗?然而,我们知道,当负载变化时,如果没有任何对电流的控制,直流电动机的速度将无法保持不变。是的,很容易看出问题所在: 我们忽视了电机的(和开关)的内阻。

Once you take those into account, you’ll see, that the motor current drops some voltage on those resistors, and the inductor sees only the remainder. (In the following equation I’ve made the simplification to assume that the motor current doesn’t change much, so the voltage drop on the resistor is relatively constant during the on- and off-times.)

一旦你把这些考虑进去,你会看到,电流在这些电动机的电阻器上产生了压降,而电感器只得到了了剩余的电压。(在下面的公式中,我简化了一下,假设电动机的电流变化不大,因此电阻器上的电压降在工作状态切换时相对恒定。)在工作状态和休息的情况下:

                                                                   VL_on = Vbat – Vg – Imot_avg*Rm

                                                                   VL_off =  -Vg – Imot_avg*Rm 

If you put this into our previous ripple-current equation, you’ll see the result is a current- (or torque-) dependent difference between our intended speed and the actual speed of the motor:

如果你把它放进我们之前的纹波电流方程式,你会看到我们的预期速度和电机实际速度之间的电流(或转矩)依赖性差异:

                                       Vg = Vbat * ton/tcycle – Imot_avg*Rm = Vmot_avg – Imot_avg*Rm

反电动势 = 电池电压*占空比 - 平均电流*电机内阻 = 电机平均电压 - 电机平均电流*电机内阻


6.Input Capacitor

输入电容器

In the previous chapter we calculated the ripple current, but we kept saying that the average motor current (in the ideal case at least) will settle at whatever level it needs to to make Vg equal to Vmot_avg. This statement has an interesting consequence: we can’t predict the direction the current will flow during the on-time and the off-time. In fact, if Imot_avg is lower than half of Iripple, the motor current changes direction twice during the cycle:

在前一章中我们计算了纹波电流,我们一直说,电机平均电流(至少在理想情况下)将稳定在它需要的任何水平,使 Vg 等于 Vmot _ avg。这种说法有一个有趣的后果: 我们无法预测电流在工作和非工作状态下的流向。事实上,如果 Imot_avg 低于 Iripple 的一半,电机电流在周期中会两次改变方向:

image

Now, one of those direction changes happen during the off-time, when the motor is short-circuited, but the other happens when the motor is connected to the supply. What follows is that at the beginning of every on-time for a short while at least, the current flows out of the bridge. Most supplies can’t deal with this quick reversal of current flow and if the reverse-current can’t find its way back to the power supply, the supply voltage will start rising potentially to dangerous levels.

现在,其中一个方向的改变发生在停机时间,当电机被短路,并且,电机连接到电源。接下来就是在每次工作状态开始的时候,至少有一段时间,电流会从H桥流出。大多数电源无法处理这种电流的快速反转,如果反向电流无法找到回到电源的路,电源电压将开始上升,可能达到危险的水平。

To handle this reverse current properly we need to put a capacitor on the input terminals of the bridge to temporarily soak up the current coming from the bridge. The capacitor will release it’s extra charge back into the motor in the part of the cycle when the current flows to the ‘proper’ direction:

为了正确处理这个反向电流,我们需要在电桥的输入端安装一个电容器,暂时吸收来自电桥的电流。当电流流向正确的方向时,电容器会释放多余的电量返回到电动机中:

image

But just how big this capacitor needs to be? Well, that depends on a lot of things, so let’s list them:

但是这个电容器到底需要多大呢?好吧,这取决于很多因素,所以让我们列出它们:

  • How much reverse-current can the power supply handle? 
  • 电源可以处理多少反向电流?
  • How much voltage-hike can the circuit live with? 
  • 电路能承受多少电压?
  • What are the motor characteristics (mostly inductance)?
  •  电动机的特性(主要是电感)是什么?
  • What is the switching frequency and duty cycle of the bridge? 
  • H桥的开关频率和占空比是多少?
  • How much torque the motor needs to output (the average current through the motor)? 
  • 电机需要输出多少扭矩(通过电机的平均电流) ?

Since some of these parameters are dependent on the operating conditions and the exact application, let’s first do some simplifications and assume worst-case conditions:

由于其中一些参数取决于操作条件和确切的应用,让我们首先进行一些简化,并假设最坏的情况:

  • Let’s assume the power supply can’t take any reverse current 
  • 我们假设电源不能接受任何反向电流
  • Let’s also assume that Imot_avg is 0, so the current changes direction exactly at half of the on-time. (The capacitor can’t be sized for the condition when even Imot_avg is reverse compared Vmot_avg, since in that case the capacitor can’t completely release its extra charge during the cycle. We will discuss that situation later).
  • 我们假设Imot-avg等于0.因而电流在接通时间的一半改变方向(电容的冲村无法被调整,因为在这种情况下 ,电容器在玄幻的过程中无法完全释放其额外的电荷,我们稍后将会讨论这种情况)
  • Finally let’s assume that the ripple current is at its maximum, so the duty cycle is at 50% 
  • 最后,我们假设纹波电流达到最大值,占空比为50%

Under those conditions, the current will rise for 50% of the time, and cross 0 at 25% of the total cycle time:

在这些条件下,电流将上升50% 的时间,在25% 的总周期时间处变成0:

image_thumb51.png

The total charge released back to the system during the first-half of the on-time is:

在上半个工作时间内释放回系统的总电荷如下:

                                                             Qrelease = 1/2*((Iripple_max/2)*ton/2)

Q = It = CU

We also know that

我们也知道

                                                                                         ton = tcycle/2

Finally we know our ripple current is at its maximum:

最后,我们知道我们的纹波电流达到了最大值:

                                                                         Iripple_max = Vbat / Lm * tcycle/4

Putting these together and do some simplifications, we get:

把这些放在一起并进行一些简化,我们得到:

                                                                         Qrelease = 1/64 * Vbat / Lm * tcycle2

 

If we assume that the power supply can’t take any of this charge as we’ve said before – in other words all of it needs to be stored in the capacitor – the capacitor voltage will rise:

如果我们假设电源不能像我们之前说的那样吸收这些电荷——换句话说,所有的电荷都需要储存在电容器中——那么电容器的电压就会升高:

                                                                                      Vbat_ripple = Qrelease/C

So if we know how much change in the supply voltage we can tolerate, we get a capacitor value:

因此,如果我们知道我们能够容忍的电源电压的变化有多大,我们就得到了一个电容值:

                                                                                    C = Qrelease/Vmax_bat_ripple

Substituting Qrelease we get:

代换 Qrelease 我们得到:

                                                                      C = 1/64 * Vbat/Vmax_bat_ripple / Lm * tcycle^2

Note that the term Vbat/Vmax_bat_ripple is the ratio between the supply voltage and the ripple voltage allowed on the it. If for example we allow for 5% ripple, this value is a constant 20 independent of the supply level. Also note that the capacitance value needed increases quadratically with the cycle time.

请注意,术语 Vbat/Vmax _ bat _ ripple 是电源电压和它所允许的纹波电压之间的比值。例如,如果我们允许5% 的纹波,这个值是一个常数20。还要注意,所需的电容值随周期时间二次增加。

I’ve measured a few motors, and the lowest inductance value I’ve seen was in the order of 30µH, but of course this value varies a lot from motor to motor. So, to give you actual numbers, let’s take that 30µH inductance value, allow for a 5% ripple on the power supply and a 20kHz switching frequency. With that, we get a minimum ~26µF of capacitance needed on the power supply. If we only want to switch at – let’s say – 1kHz though, the capacitance needed is more than 10000µF!

我测量了一些电机,我看到的最低电感值大约是30uh,当然这个值在不同的电动机之间变化很大。所以,为了给出实际的数字,让我们用30 uh 的电感值,考虑电源5% 的纹波和20kHz 的开关频率。这样,我们就得到了电源所需的最小26 uf 的电容。如果我们只想在1kHz的频率下开关,那么所需的电容将超过10000µF!

作者计算过程:

C = 1/64 * 20/(30*(10^-6)*(5*(10^-5))^2 = 2.6*10^-5 F = 26uF

按照这个公式,我电机电感0.23mH,假设允许10%的纹波,

C = 1/64 * 10/(0.23*10^-3)*(5*10^-5)^2 = 3.396*10^-7 F = 33.96uF


7.Transient states

瞬态

Whenever Vg is not equal to Vmot_avg, the bridge is not in steady-state. When it is lower, the motor is accelerating, when it is higher, it is braking. We’ve seen above that the on-time current change is:

当 Vg 不等于 Vmot _ avg 时,H桥就不处于稳定状态。当它是低,电机加速,当它是高,它是制动。我们已经看到上面提到的工作状态电流变化是:

                                                                               Idelta_on = (Vbat-Vg)/Lm*ton

while the off-time current change is:

而空闲时间的电流变化是:

                                                                                      Idelta_off = Vg/Lm*toff

Let’s express Vbat from Vmot_avg and put that into the first equation! We get:

让我们用 Vmot_avg 来表示 Vbat,并把它放到第一个方程中:

                                                           Idelta_on = (Vmot_avg-Vg)/Lm*ton + Vmot_avg/Lm*toff

Next, let’s see what the difference between the current at the beginning of the on-time and the end of the off-time:

接下来,让我们看看工作状态的电流和非工作状态的电流有什么不同:

                        Idelta_cycle = Idelta_on – Idelta_off = (Vmot_avg-Vg)/Lm*ton + Vmot_avg/Lm*toff – Vg/Lm*toff

                  Idelta _ cycle = Idelta _ on-Idelta _ off = (Vmot _ avg-vg)/Lm * ton + Vmot _ avg/Lm * toff-vg/Lm * toff

After some re-arranging:

经过一些重新安排:

                                                                Idelta_cycle = (Vmot_avg-Vg)/Lm*tcycle

image

In other words, the motor current changes from cycle to cycle proportionally to the difference between the intended generator voltage (Vmot_avg) and the actual generator voltage (Vg).

换句话说,电机电流随着发电机预期电压(Vmot _ avg)和实际发电机电压(Vg)之间的差值而变化。

Since current is proportional to torque, this means that if there’s a difference between the two voltages, the torque will start changing linearly. In this simple model, the current would keep changing forever, but in reality that of course isn’t the case. For one, internal losses limit the maximum current as we’ll see in a minute, but eventually, the changed torque would hopefully change the motor speed as well, bringing it closer to Vmot_avg, slowing down the current change. Eventually a new steady-state is reached where Vg is equal to Vmot_avg and the torque changed to a new value that is needed in order to maintain that balance. (If you read the article on motor modeling, you’ll see that in many cases the motor and the attached mechanical system can be modeled as a large capacitor and some sort of loss. That capacitor, with the internal internal resistance of the motor determines the time-constant by which this new steady-state is reached, and the actual response will be closer to an exponential curve.)

由于电流与扭矩成正比,这意味着如果两个电压之间存在差异,扭矩将开始线性变化。在这个简单的模型中,当前的情况将永一直持续,但实际上当然不是这样。一方面,内部损耗限制了最大电流,我们将在后面看到,但最终,改变的转矩将有希望改变电机的速度,使其更接近 Vmot 平均值,减缓电流的变化。最终达到一个新的稳定状态,其中 Vg 等于 Vmot _ avg,并且转矩转换为一个新的值,这个值是维持这个平衡所必需的。(如果你阅读关于电机建模的文章,你会发现在许多情况下,电机和附加的机械系统可以被建模为一个大电容器和一些损失。这个电容器,加上电动机的内部电阻,决定了达到这个新的稳定状态的时间常数,并且实际的响应将接近指数曲线


8.Braking

刹车

Now, this is all fine for acceleration, but there’s something strange that happens during braking. When Vg is higher than Vmot_avg, the torque (current) will start decreasing. As the electrical time-constants are usually several orders of magnitude lower than the mechanical ones (again, see the article on motor modeling for the details), the current (and the torque) turns the opposite direction to the shaft rotation (generator voltage).

现在,这些对于加速来说都没问题,但是在刹车的时候会发生一些奇怪的事情。当 Vg 大于 Vmot _ avg 时,转矩(电流)开始减小。由于电气时间常数通常比机械时间常数低几个数量级(同样,详见关于电机模型的文章) ,电流(和转矩)与轴旋转(发电机电压)的方向相反。

image_thumb30.png

 

Let’s see how big this reverse current can be, but in order to do so, we’ll first have to re-introduce the motor resistance into our model. The reason is that without the resistor, the motor current will just keep decreasing (or increasing in the negative direction) until the generator voltage changes and becomes equal to Vmot_avg. In other words, without the resistor, the motor current can be an arbitrarily large negative number. With the resistor in place however, the bridge will quickly settle to a constant cycle-to-cycle current, as the voltage drop on the resistor will put an end to the current-increase over the inductor.

让我们看看这个反向电流能有多大,但是为了做到这一点,我们首先要把电动机的电阻,重新引入到我们的模型中。原因在于,如果没有电阻器,电机电流将不断减小(或在负方向上增大) ,直到发电机电压发生变化,变成等于 Vmot _ avg。换句话说,如果没有电阻,电机的电流可以是一个任意大的负数。然而,当电阻器到位后,电桥将迅速稳定为恒定的循环电流,因为电阻器上的电压降将结束电感器上的电流增加。

Once that happens, we can use our steady-state equations, to figure out the average current:

一旦这种情况发生,我们就可以用我们的稳态方程,计算出平均电流:

                                                                   Vg = Vmot_avg – Imot_avg*Rm

and solving that to the current, we get:

然后求出当前的值,我们得到:

                                                                          Imot_avg = (Vmot_avg-Vg)/Rm

 

The reason the system can be in steady-state, while Vg is not equal to Vmot_avg is the internal motor resistance. What happens is that the internal resistance of the motor makes the cycle-to-cycle current change zero, which was the initial assumption in deriving the steady-state equations.

系统之所以能处于稳态,而 Vg 不等于 Vmot _ avg,是因为电机内部的电阻。电动机的内阻使循环电流变化为零,这是导出稳态方程的初始假设。

You can also see, that the average motor current is negative, as expected. It means that the torque is in opposite direction to the shaft rotation, so we are in fact braking the motor.

你也可以看到,电机的平均电流是负的,正如预期的那样。这意味着扭矩与轴旋转的方向相反,所以我们实际上是制动电机。

During the off-time this current is circulating through the motor and either the two low- or the two high-side FETs. However, during the on-time, the only way for the current to flow is through the supply. While the current through the motor is always in the ‘negative direction’ –  more precisely opposing the generator voltage – the same current flows into the supply in the positive or negative direction, depending on which way the FETs are open during the on-time:

在关断期间,这种电流通过电机和两个低端或两个高端场效应管循环。然而,在正常工作时间内,电流流动的唯一途径是通过电源。虽然通过电动机的电流总是在“负方向”——更准确地说是与发电机电压相反——但同样的电流流入电源的方向是正方向还是负方向,取决于准时时间内场效应管打开的方向:

image

 

image

This current either charges the battery (first case), which is called regenerative braking or dis-charges it (second case), which is called dynamic braking.

这种电流要么给蓄电池充电(第一种情况),称为再生制动,要么给蓄电池放电(第二种情况),称为动力制动。


9.REGENERATIVE BRAKING

再生制动

While one would think that re-charging the battery is a good thing, there are two serious limitations to the effectiveness of regenerative braking:

虽然有人会认为重新充电电池是一件好事,但再生制动的有效性有两个严重的限制:

  1. As we’ve seen, the average current during braking depends on the difference between Vmot_avg and Vg, and reaches its maximum when Vmot_avg = -Vbat. However, re-charging only happens if the current flow goes against the battery voltage, so we can’t operate the bridge in the reverse direction. This limits the amount of torque that’s available during regenerative braking. If more torque is needed, the bridge needs to operate in the non-regenerative (dynamic braking) domain. The regenerative braking torque will also decrease as the speed (Vg) decreases: it’s not possible to provide a constant deceleration down to 0 using regenerative braking alone.                                              如前所述,制动期间的平均电流取决于Vmot_avg和Vg之间的差值,当 Vmot_avg = -Vbat时达到最大值。然而,重新充电只有在电流与电池电压相反的情况下才会发生,所以我们不能反向操作电桥。这限制了再生制动期间可用的扭矩量。如果需要更大的扭矩,桥梁需要在非再生(动态制动)领域运行。再生制动扭矩也会随着速度(Vg)的降低而减小:单独使用再生制动不可能提供一个恒定的减速度使得电机速度降到0。
  2. Even though the motor braking current gets greater, as Vmot_avg gets further away from Vg, that doesn’t mean that all that current will re-charge the battery: only during the on-time does the current flow through the battery. As you decrease Vmot_avg to increase the braking current, tonwill decrease as well and the re-charging effect will decrease with it. To be more precise, the amount of energy transferred in each cycle to the battery is the following:Ere-charge = Vbat * Imot_avg * tonwhich becomes this after doing the proper substitutions for Imot_avg and Vmot_avg:Ere-charge = Vbat/Rm*(Vbat*ton/tcycle-Vg)*ton,As you can see this is a quadratic function of ton, and it reaches its maximum when ton = 1/2 * Vg/Vbat * tcycle,in other words when the Vmot_avg is half of Vg. This effect will further limit your ability to regenerate energy from the motor while braking, or your ability to quickly brake the motor while maintaining good re-generation efficiency, depending on which way you look at it.                                      即使马达制动电流越来越大,当Vmot_avg离Vg越来越远时,这并不意味着所有的电流都会重新给电池充电:只有在接通时,电流才会流过电池。当您降低Vmot_avg以增加制动电流时,Ton也会降低,重新充电效果也会随之降低。更准确地说,每个循环中传递给电池的能量量是以下:Ere-charge = Vbat/Rm*(Vbat*ton/tcycle-Vg)*ton,你可以看到这是一个关于ton的二次函数,当ton = 1/2 * Vg/Vbat * tcycle时,换言之。这种影响将进一步限制你在刹车时从马达中再生能量的能力,或者你在保持良好的再生效率的同时快速刹车的能力,这取决于你如何看待它。

Even if you’re fine with all the limitations above, the question still remains: what to do with the back-converted energy? If your system is battery operated, the battery may or may not absorb this energy, depending on its technology. Even more serious problem is that the amount of charge a battery can take depends on its charge level – a fully charged battery can’t take any more charge. This means that you either risk overcharging your battery or limit your braking capability at least under some circumstances. Neither options are too pleasing.

即使你对上述所有的限制都没有意见,问题仍然存在: 如何处理回收的能源?如果你的系统是电池驱动的,电池可能会也可能不会吸收这种能量,这取决于它的技术。更严重的问题是,电池的充电量取决于它的充电水平——充满电的电池不能再充电了。这意味着你要么冒着过度充电的风险,要么至少在某些情况下限制你的制动能力。两种选择都不太令人满意。

If you run your system from mains (and necessarily through a power supply, since mains is AC and we’re driving a DC motor here), you’re even more limited: unless you specially design your power supply, it simply can’t pump energy back into the power outlet.

如果你用电源来运行你的系统(而且必须通过电源,因为电源是交流的,而我们在这里驱动的是直流电机),你就更受限制了:除非你专门设计了电源,否则它根本无法将能量泵回电源插座。

In both cases it seems that your safest bet is to consume or store the regenerated energy locally. If you have other loads consuming power, of course you can power those loads up to their current requirements. You might have lights, computers, other motors, heaters, sensors, what not running at the same time, that need energy. All that is great, but you don’t want the brake distance depend on how much the seat-wormer is on in your car, do you?

在这两种情况下,你最安全的选择似乎是在本地消耗或储存再生能源。如果您有其他负载消耗电力,当然可以为这些负载供电,以满足其当前的需求。你可能有电灯,电脑,其他马达,加热器,传感器,不同时运转的东西,需要能量。这一切都很好,但你不希望刹车距离取决于这些东西吧?(留个坑,我会在后面某一节专门讲如何回收这些能量

In other words, all these options provide some, but not very deterministic or reliable places to put energy to. What you would really need is some sort of reliable energy storage device that is not as sensitive as a battery and can store a lot of energy. Effectively a capacitor. Trouble is, actual capacitors of the sizes needed (easily several Farads) are not feasible. There is however another way (you would have to read more on mechanical modeling to understand why): stick another motor with a big wheel attached to it into your system. When you have more energy then what you know what to do with, simply spin-up the wheel to store the energy. When you are in need of energy, use (again) regenerative braking on that wheel to regain the energy and supply your needs. This is called a flywheel, and is in fact used in certain systems.

换言之,所有这些选择都提供了一些,但不是非常确定或可靠的地方来消耗能量。你真正需要的是某种可靠的储能装置,它不像电池那么灵敏,能储存大量能量。实际上是一个电容器。问题是,实际电容器的尺寸(很容易几个法拉)是不可行的。不过,还有另一种方法(你必须阅读更多关于机械建模的知识才能理解为什么):把另一个装有大轮子的马达插入你的系统。当你的能量比你所知道的要多的时候,只需转动轮子来储存能量。当你需要能量的时候,再次使用再生制动来恢复能量并满足你的需要。这被称为飞轮,实际上在某些系统中使用。

Trains, subways and other large, but well controlled systems usually benefit from regenerative braking as well as they quite often have another consumer (another, accelerating train) that can use the regenerated energy.

列车、地铁和其他大型但控制良好的系统通常受益于再生制动,同时它们也经常有另一个耗电元件(另一个加速列车)可以利用再生能源。

As you can probably see from this much, the problem of safely and reliably putting the braking energy somewhere is a complex one. It requires full understanding of the complete electro-mechanical system, and there is no one-size fits all solution.

正如你可能会看到这么多,安全和可靠地把刹车能源的地方是一个复杂的问题。它需要对完整的机电系统有充分的了解,而且没有放之四海而皆准的解决方案。


10.DYNAMIC BRAKING

动力制动

Let’s say you don’t want to use regenerative braking because of all the complexities involved. So you want to operate in the dynamic braking mode of the bridge, and avoid regenerative braking altogether. How do you do that? The first thing you need to do is to figure out if the system is in regenerative braking mode. You can go about it in two ways:

假设你不想使用再生制动,因为这涉及到所有的复杂性。所以你要在桥的动态制动模式下运行,避免再生制动。你怎么做到的?你需要做的第一件事是弄清楚系统是否处于再生制动模式。你可以从两个方面着手:

  1. We know the bridge is in regenerative mode if Vg is higher than Vmot_avg but the same polarity. To use this, we need to measure Vg or something related to it. That’s not necessarily a simple thing to do. I will come back to techniques for doing so in a future article about speed-control mechanisms, but usually you will need a method to measure the shaft speed using an encoder for example.                                                                                                 我们知道,如果Vg高于Vmot_avg,但极性相同,则电桥处于再生模式。为了使用这个,我们需要测量Vg或与之相关的东西。这不一定是件简单的事。在以后的一篇关于速度控制机制的文章中,我将回到这样做的技术,但是通常您需要一种方法来使用编码器来测量轴速度。
  2. Use the knowledge that the bridge is in regenerative mode if the bridge current flows in reverse direction compared to the battery voltage. This involves measuring the current through the bridge including it’s polarity. 如果电桥电流与蓄电池电压反向流动,则应了解电桥处于再生模式。这包括测量通过电桥的电流,包括它的极性。

After you have the right feedback in place, you can adjust your drive direction to make sure that Vmot_avg is always reverse in polarity than Vg any time you’re braking. But there’s another complication: how do you know you need to brake? You only know that if you know the intended and the actual speed of the motor, so you need to measure the shaft-speed (or Vg somehow) and you have to implement some sort of a control circuit.

在你得到正确的反馈后,你可以调整你的驱动方向,以确保Vmot_avg在极性上总是与Vg相反。但还有一个复杂的问题:你怎么知道你需要刹车?你只知道,如果你知道电机的预期速度和实际速度,那么你需要测量轴速度(或Vg),你必须实现某种控制电路。

If you did all that, you can successfully avoid regenerative braking. Then another problem arises: how much torque can you apply in braking mode to the shaft, provided you would only want to operate in the dynamic braking domain? We know that torque is related to the motor current and we’ve also seen that the average motor current during braking is the following:

如果你做到了这些,你就能成功地避免再生制动。然后,另一个问题出现了:如果您只想在动态制动域中操作,在制动模式下,您可以向轴施加多少扭矩?我们知道转矩与电机电流有关,而且我们还发现制动期间的平均电机电流如下:

                                                                    Imot_avg = (Vmot_avg-Vg)/Rm

 

To make sure that the motor remains in the dynamic braking domain, you will have to make sure that Vmot_avg has the same polarity as the motor current, which is opposite to Vg. So if Vg is positive as in all of our examples so far, Vmot_avg will need to be negative. That has the unfortunate consequence that Imot_avg cannot be smaller (in absolute value) than a certain amount:

要确保Vmot_avg 的极性,和电机电流的动态极性相反。所以,如果Vg是正的,就像我们到目前为止的所有例子一样,Vmot_avg将是负的。这就产生了一个不幸的后果,即Imot_avg不能小于(绝对值)某个特定的值:

                                                                           abs(Imot_avg) >= Vg/Rm

This is a problem because it tells us that we can’t brake the motor arbitrarily gently. The only way to achieve that is with regenerative braking. As a matter of fact, it also tells us that he minimum amount of braking torque we can apply to the motor depends on the speed and is proportional to it. So at high speeds we will have more abrupt braking than at low speeds.

这是一个问题,因为它告诉我们,我们不能随意地轻轻地刹车。实现这一目标的唯一方法是再生制动。事实上,它也告诉我们,我们可以施加到电动机上的最小制动力矩取决于转速,并且与转速成正比。所以在高速行驶时,我们会有比低速时更突然的刹车。


11.Summary

小结

By now you probably see that dealing with bridges in phase-magnitude drive is not simple. At first sight it seems you only need two control signals – a PWM input to set the average voltage on the motor and a digital signal to set the direction – and you’re ready to go.

现在您可能已经看到,在符号-幅值驱动器中处理H桥并不简单。乍一看,似乎你只需要两个控制信号:一个 PWM 输入设置电机的平均电压和数字信号设置电机的方向-你已经迫不及待了。

Detailed analysis however shows that no matter how you operate your bridge, braking is a problem. You either use regenerative braking with all of its complications or try to avoid it which isn’t simple either. You probably need to monitor the bridge current and the supply voltage to make sure you you don’t over-charge your battery. If you want to avoid regenerative braking completely you’ll most likely have to somehow measure the motor speed as well.

然而,详细的分析表明,无论你如何操作你的桥,刹车都是一个问题。你要么使用再生制动及其所有的并发症,要么尽量避免它,这也不简单。你可能需要监控电桥电流和电源电压,以确保你不会过度充电。如果你想完全避免再生制动,你很可能不得不测量电机的速度。

The silver lining is that at least you have a fail-safe mode to go back to: you can always set the PWM to 0% duty-cycle, effectively short-circuiting the motor. That will safely brake it down to a halt (almost) without risking to over-charge your battery or causing any other harm to your system. When you do that however, you have no control over how long it will take for the motor to stop though, so while it sounds safe from an electrical perspective, it might not be from the mechanical side.

一线希望是,至少你有一个故障安全模式可以回到:你可以总是把PWM设置为0%的占空比,有效地使电机短路。这将安全地将它刹车到一个停止(几乎)而不会冒着电池过度充电或对系统造成任何其他伤害的风险。然而,当你这样做的时候,你无法控制电机停止所需的时间,因此,虽然从电气角度看,这听起来是安全的,但从机械方面来说,可能不是这样。

Also, if there’s an external torque applied to the motor, simply short-circuiting it will never completely stop it as the braking torque is proportional to the speed: your electrical car will never stop on a slope just by short-circuiting the motor. You’re battery won’t explode, so there’s some benefit, but you would still end up in the ditch.

此外,如果有一个外部转矩施加在电机上,简单地短路它永远不会完全停止它,因为制动转矩与速度成正比:你的电动车永远不会仅仅通过短路电机就停在斜坡上。你的电池不会爆炸,所以有一些好处,但你还是会掉进水沟里

Talking about safety, there’s another positive about sign-magnitude drive: you can set the input signals to a static state (0% PWM is basically a constant low- or high- voltage) at which point the motor won’t see any voltage from the battery. This is especially important in systems where some setup is needed on power-on before normal operation can start, like in the case of microcontrollers. You can configure the HW so that the default state of the control pins is such that the motor is safely stationary and only move out from that state only after the system initialization is complete.

说到安全,符号幅度驱动器还有另一个好处: 你可以将输入信号设置为静态(0% 的 PWM 基本上是一个恒定的低电压或高电压) ,在这一点上,电动机不会看到任何电压来自电池。这在系统中特别重要,因为在正常操作开始之前需要进行一些开机设置,就像微控制器的情况一样。您可以配置硬件,使缺省状态的控制引脚是这样的电机是安全静止的,只有从该状态移出后,系统初始化完成。

All in all, sign-magnitude drive seems simple at first, but as with many things, the devil is in the details. For undemanding, simple applications it might be a good fit as it is, in most cases you’re probably going to need some sort of monitoring circuitry that can detect dangerous or unwanted situations and intervene to prevent them.

总而言之,符号幅度驱动一开始看起来很简单,但和许多事情一样,细节决定成败。对于要求不高、简单的应用场合,它可能是一个很好的选择,在大多数情况下,你可能需要一些监测电路,可以发现危险或不需要的情况,并干预。

Where to go from there?

接下来该怎么办?

I will come back to the sign magnitude drive when we will talk about drive circuits and component selection. Before that however I will cover cover the other main drive mode, the lock anti-phase drive and compare the two to each other.

当我们讨论驱动电路和元件选择时,我会回到符号幅度驱动。然而在此之前,我将涵盖其他主驱动模式,锁反相驱动器和比较两个对方。

 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【开源电机驱动】符号-幅值驱动方式 的相关文章

  • 摄像头网络模组的使用

    摄像头和网络模组尾线如上图所示 利用上面两个模组 打算自己做一个简单的网络摄像头 在上面的模组网站上找到对应模组的接口定义资料 因为我们要自己将对应的网线接口等接好 本模组的接口如下 具体的该模组的接线如上所示 该网络模组尾线总共有 根 根
  • B07_NumPy 高级索引(整数数组索引,布尔索引,花式索引)

    NumPy高级索引 NumPy 比一般的 Python 序列提供更多的索引方式 除了之前看到的用整数和切片的索引外 数组可以由整数数组索引 布尔索引及花式索引 整数数组索引 以下实例获取数组中 0 0 1 1 和 2 0 位置处的元素 实例
  • 文储研习社第17期

    文储研习社是文储区块链技术人员自发组织的学习交流社区 旨在于追踪区块链时下最新热点 解码热点蕴含的未知领域 享受思想交流的碰撞 欢迎志同道合的小伙伴加入我们 共同学习与成长 第17期 为了提高考证通过率 不小心搭了条链 作者 Bingo 你
  • java springboot 8080端口号冲突时 修改当前项目端口号

    背景 springboot 项目启动时报错 Web server failed to start Port 8080 was already in use 报错原因 端口被占用 解决方案 修改项目application properties
  • SpringCloud整合Eureka出现“Error creating bean with name ‘configurationPropertiesBeans‘ defined in......“

    笔者在实现SpringCloud整合Eureka注册中心时出现如下报错 org springframework beans factory BeanCreationException Error creating bean with nam
  • C++ 类:类相关的非成员函数、构造函数

    前提 仍有 Sales data 类的代码 struct Sales data std string isbn const return bookNo 返回 isbn 编号 Sales data combine const Sales da
  • cpplint在VS Code中的安装及使用

    目录 前言 Python环境的配置 在VS Code中安装相应插件 补充 如何将VS Code默认的格式化风格改为Google风格 相关链接 前言 cpplint是一款Google的代码检查工具 确定一种编码风格对于我们有非常大的帮助 也可
  • Qt视频播放器[QMediaPlayer+QVideowidget]

    目录 参考 一 安装K Lite 解码器 二 Qt代码结构 VideoPlayer pro main cpp videoplayer h 播放器 videoplayer cpp 播放器 videoplayer ui 播放器 playersl
  • Python爬虫抓取经过JS加密的API数据的实现步骤

    随着互联网的快速发展 越来越多的网站和应用程序提供了API接口 方便开发者获取数据 然而 为了保护数据的安全性和防止漏洞 一些API接口采用了JS加密技术这种加密技术使得数据在传输过程中更加安全 但也给爬虫开发带来了一定的难度 在面对经过J
  • 常用集成运放电路合集(简洁易懂,附Multisim仿真文件)

    电赛初试培训整理的常用的集成运放电路集合 尽可能地追求全面 本文省略繁琐的推导过程 直接给出电路及其功能 以便读者使用时进行查阅 由于每个电路的介绍可能相对简略 实际使用或学习时可在站内查阅资料 网上资料丰富 在此不再赘述 本文目的是提供一
  • 树莓派体验3 - SSH登录树莓派

    如果没有HDMI转接线 显示器 USB转TTL串口线 那么可以通过网络SSH远程登录的方式访问树莓派 无显示器使用SSH访问 开启SSH服务 首先 通过镜像版本号确认一下SSH是否默认开启 树莓派官网的release note中说明 201
  • SQL的使用规范

    高程序运行效率 优化应用程序 在SP编写过程中应该注意以下几点 a SQL的使用规范 i 尽量避免大事务操作 慎用holdlock子句 提高系统并发能力 ii 尽量避免反复访问同一张或几张表 尤其是数据量较大的表 可以考虑先根据条件提取数据
  • 小程序主体为个人的教育类小程序备案——教育APP备案问题

    今天微信小程序后台发了通知 看了一下 我的小程序选择了 教育分类 思考了一下 虽然我选择了 教育 但是我的小程序是属于字典工具类的 与教育备案没什么关联 解决的办法 删除教育分类 老老实实备案 我选择了 因为我想了解下个人主体的小程序能不能
  • VS2019下的GAMES101作业环境配置

    序 很久很久以前 好像看过这个 GAMES101 现代计算机图形学入门 闫令琪 哔哩哔哩 bilibili 里面好像还有一个实验 当时只是看了看视频里的热闹 并没有写实验 现在想想 还是写一写的好 万一以后用上了呢 虽然是个24K纯小白 估
  • 解决Logback日志不会每天生成新文件的问题

    logback配置文件 问题现象 上图是最初的logback的配置 线上发现经常不会按日生成日志文件 而是一个日志越来越大 只有在项目重启之后才会生成当天的日志文件 原因分析 该配置使用了基于时间的滚动切割策略 TimeBasedRolli
  • 离散数学模拟微信红包算法升级版

    可以自定义红包总金额 总包数 每包最小金额
  • 关于springboot的序列化和反序列化问题

    在springboot中有时候需要将Datatime的格式进行格式化 有时候Long型的数据超过16位传值到前端js中会丢失精度 解决这个问题需要将Long型先转为String类型在传值到前端 所以可以编写实现类继承ObjectMapper
  • PicoNeo3开发VR——小白教程

    不断更新中 欢迎大佬们来指导 纠错 导入PicoVRSDK 1 新创一个Unity工程 Unity版本最好选择2019 4以上版本 以及需配置好安卓环境 然后导入官方picoVRSDK 2 渲染设置 Graphics APIs暂不支持Vul

随机推荐

  • DirectShow系列讲座之二——Filter原理

    在上一讲中 笔者介绍了DirectShow的总体系统框架 从这一讲开始 我们要从程序员的角度 进一步深入探讨一下DirectShow的应用以及Filter的开发 在这之前 笔者首先要特别提一下微软提供的一个Filter测试工具 GraphE
  • SpringBoot 高级进阶

    目录标题 SpringBoot 高级 1 RabbitMQ概述 1 RabbitMQ简介 消息服务中两个重要概念 消息队列主要有两种形式的目的地 异步处理 应用解耦 流量削峰 核心概念 2 RabbitMQ运行机制 3 RabbitMQ安装
  • 分布式部署 Zabbix 监控平台

    分布式部署 Zabbix 监控平台 一 基本介绍 二 部署 LNMP 架构 1 配置 MySQL 服务 2 配置 Nginx PHP 服务 1 安装 Nginx 2 安装 PHP 3 修改 PHP 配置文件 4 启动脚本 三 部署 Zabb
  • 跨站脚本攻击XSS(最全最细致的靶场实战)

    一 XSS跨站漏洞 1 XSS简介 网站中包含大量的动态内容以提高用户体验 比过去要复杂得多 所谓动态内容 就是根据用户环境和需要 Web应用程序能够输出相应的内容 动态站点会受到一种名为 跨站脚本攻击 Cross Site Scripti
  • 教你如何快速下载python

    1 打开python官网 链接 py官网 2 找到自己要安装的版本 点击下载 3 下载 exe文件 打开 4 弹出标题为Install Python X X X X bit 的窗口 将下面的Add Python 打勾 点Install No
  • (一)软件架构概述

    1 系统结构 B S架构 Browser Server 浏览器 服务器的交互形式 Browser支持哪些语言 HTML CSS JavaScript 写HTML CSS JavaScript代码的这波人职位叫做 WEB 前端开发工程师 Ja
  • Python学习笔记(四)

    文章目录 1 进程 1 1 系统原生 OS 模块 创建进程 1 2 multiprocessing 模块 1 2 1 Process 单进程 1 2 2 Pool 进程池 1 3 subprocess 模块 使用外部子进程 2 线程 2 1
  • 爬虫 跨域请求 获取json数据 解决参数加密

    分析网址 提示 抓取对方信息是通过对方允许的 请不要违法操作 抓取其他个人有关信息 网址先发送了一个OPTIONS请求 Request URL http xxxxxxxx com Request Method OPTIONS Status
  • C++知识积累:内存对齐理解

    为什么要进行内存对齐 这是因为CPU的读取总是对齐的 举个例子 假设CPU是32位的 那么CPU每次读取的4字节数据的首地址都是4的倍数 也就是说 内存中数据首地址为4的倍数时 CPU一次操作就可以完成数据读取 假设有一个int型四字节大小
  • 警告: Can't initialize javac processor due to (most likely) a class loader problem: java.lang.NoClassD

    说明 主要参考了这位大佬的文章 https www cnblogs com xxjcai p java compiler html 不过我是在使用IDEA的时候遇到的问题 所以我这里介绍一下在IDEA中的解决方案 错误信息 src main
  • VS2017 NuGet包管理

    一 在 https www nuget org 注册账号并生成APIKEY 二 在命令行窗口启动nuget exe 三 生成 nuspec文件 将nuget exe放置在项目目录 注意下图 处的id version 打包后会生成 id ve
  • C/C++ int a[]和int (*a)[]的区别

    int a a与 先结合 a为数组 数组element type int int a a与 先结合 a为指针 指向数组 同int a link https www jianshu com p 548ff8e1b243
  • CentOS7修改SSH端口

    CentOS7 修改SSH端口 文章目录 CentOS7 修改SSH端口 1 修改ssh配置文件 1 1 查看默认端口 1 2 修改端口 2 防火墙放行 2 1 查看防火墙状态 2 2 防火墙放行端口 202 2 3 查看已开启端口 2 4
  • svn客户端检出的工程导入eclipse后不显示SVN信息

    1 首先确定原因 是由于SVN客户端与SVN插件版本不对应导致的 因此需要更换SVN插件版本 1 1 SVN插件与SVN客户端版本对应关系 插件svn1 4 x对应TortoiseSvn 1 5 x 插件svn1 6 x对应Tortoise
  • Keil MDK编程环境下的 STM32 IAP下载(学习笔记)

    IAP下载 IAP的引入 不同的程序下载方式 ICP ICP In Circuit Programing 在电路编程 可通过 CPU 的 Debug Access Port 烧录代码 比如 ARM Cortex 的 Debug Interf
  • Jsp页面java.lang.NumberFormatException: For input string: ““错误解决办法

    Jsp页面报Java lang NumberFormatException For input string 错误解决办法 昨天写代码遇到一个错误 在日志和控制台报一个错误说jsp页面一个出现java lang NumberFormatEx
  • React-Router V6 使用详解

    一 基本用法 React Router的安装方法 npm npm install react router dom 6 yarn yarn add react router dom 6 目前官方从5开始已经放弃原有的react router
  • Java中Date日期处理类,Calendar日期类,SimpleDateFormat

    1 date 获取当前系统时间 date getTime 获取系统时间毫秒值 package import java util Date public class DateDemo public static void main Strin
  • Java 多线程模式 —— Guarded Suspension 模式

    Part1Guarded Suspension 模式的介绍 我们只从字面上看 Guarded Suspension 是受保护暂停的意思 1Guarded Suspension 模式 在实际的并发编程中 Guarded Suspension
  • 【开源电机驱动】符号-幅值驱动方式

    原文地址 http www modularcircuits com blog articles h bridge secrets sign magnitude drive 本文为翻译校正稿件 含有译者个人理解 Sign Magnitude