<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://openinverter.org/wiki/index.php?action=history&amp;feed=atom&amp;title=Software_Theory_of_Operation</id>
	<title>Software Theory of Operation - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://openinverter.org/wiki/index.php?action=history&amp;feed=atom&amp;title=Software_Theory_of_Operation"/>
	<link rel="alternate" type="text/html" href="https://openinverter.org/wiki/index.php?title=Software_Theory_of_Operation&amp;action=history"/>
	<updated>2026-04-29T06:27:49Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://openinverter.org/wiki/index.php?title=Software_Theory_of_Operation&amp;diff=5135&amp;oldid=prev</id>
		<title>Johu: Added categories</title>
		<link rel="alternate" type="text/html" href="https://openinverter.org/wiki/index.php?title=Software_Theory_of_Operation&amp;diff=5135&amp;oldid=prev"/>
		<updated>2024-12-02T12:49:00Z</updated>

		<summary type="html">&lt;p&gt;Added categories&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 12:49, 2 December 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l19&quot;&gt;Line 19:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 19:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;To vary the generated torque, the amplitude of the sine wave is modified. At 100% torque it is the value from the V/Hz algorithm, if less than 100% torque is commanded then the V/Hz value is scaled accordingly. Additionally the slip frequency is scaled between optimal and breakdown (or whatever the user sets as maximum).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;To vary the generated torque, the amplitude of the sine wave is modified. At 100% torque it is the value from the V/Hz algorithm, if less than 100% torque is commanded then the V/Hz value is scaled accordingly. Additionally the slip frequency is scaled between optimal and breakdown (or whatever the user sets as maximum).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Tutorial]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Tutorial]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:OpenInverter]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki2-oo:diff:1.41:old-3949:rev-5135:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Johu</name></author>
	</entry>
	<entry>
		<id>https://openinverter.org/wiki/index.php?title=Software_Theory_of_Operation&amp;diff=3949&amp;oldid=prev</id>
		<title>Marcexec at 10:55, 14 June 2023</title>
		<link rel="alternate" type="text/html" href="https://openinverter.org/wiki/index.php?title=Software_Theory_of_Operation&amp;diff=3949&amp;oldid=prev"/>
		<updated>2023-06-14T10:55:57Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 10:55, 14 June 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l18&quot;&gt;Line 18:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 18:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;To vary the generated torque, the amplitude of the sine wave is modified. At 100% torque it is the value from the V/Hz algorithm, if less than 100% torque is commanded then the V/Hz value is scaled accordingly. Additionally the slip frequency is scaled between optimal and breakdown (or whatever the user sets as maximum).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;To vary the generated torque, the amplitude of the sine wave is modified. At 100% torque it is the value from the V/Hz algorithm, if less than 100% torque is commanded then the V/Hz value is scaled accordingly. Additionally the slip frequency is scaled between optimal and breakdown (or whatever the user sets as maximum).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:Tutorial]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Marcexec</name></author>
	</entry>
	<entry>
		<id>https://openinverter.org/wiki/index.php?title=Software_Theory_of_Operation&amp;diff=2014&amp;oldid=prev</id>
		<title>Lsh3rd: Fixed typos and spelling errors.</title>
		<link rel="alternate" type="text/html" href="https://openinverter.org/wiki/index.php?title=Software_Theory_of_Operation&amp;diff=2014&amp;oldid=prev"/>
		<updated>2021-12-12T17:07:13Z</updated>

		<summary type="html">&lt;p&gt;Fixed typos and spelling errors.&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 17:07, 12 December 2021&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Sine Modulation ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Sine Modulation ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The core task of the control software is to generate 6 PWM signals, 2 for each bridge. The PWM has a fixed frequency in the kilohertz region, lets assume 8.8khz. On top of that a variable frequency, variable amplitude sine wave is modulated. The actual PWM generation is done by hardware, software just needs to tell the hardware which &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;dutycycle &lt;/del&gt;to output.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The core task of the control software is to generate 6 PWM signals, 2 for each bridge. The PWM has a fixed frequency in the kilohertz region, lets assume 8.8khz. On top of that a variable frequency, variable amplitude sine wave is modulated. The actual PWM generation is done by hardware, software just needs to tell the hardware which &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;duty cycle &lt;/ins&gt;to output.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The sinewave itself is stored in a lookup table, as small MCUs can&amp;#039;t compute the sine function efficiently. It is output to all three phases but with a 120° phase shift.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The sinewave itself is stored in a lookup table, as small MCUs can&amp;#039;t compute the sine function efficiently. It is output to all three phases but with a 120° phase shift.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Clipping ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Clipping ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The PWM principle has a practical limit when &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;dutycycles &lt;/del&gt;become very large (&amp;gt;99%) or very small (&amp;lt;1%). The IGBTs have a limited switching speed. Therefor, if they&#039;re switched on and right off again (or vice versa) they effectively don&#039;t change state. Therefor, these extreme &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;dutycycles &lt;/del&gt;are mapped to &quot;always on&quot; or &quot;always off&quot; respectively. This logic kicks in 1/3 of the time when a full amplitude sine wave is modulated. Therefore it saves switching losses.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The PWM principle has a practical limit when &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;duty cycles &lt;/ins&gt;become very large (&amp;gt;99%) or very small (&amp;lt;1%). The IGBTs have a limited switching speed. Therefor, if they&#039;re switched on and right off again (or vice versa) they effectively don&#039;t change state. Therefor, these extreme &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;duty cycles &lt;/ins&gt;are mapped to &quot;always on&quot; or &quot;always off&quot; respectively. This logic kicks in 1/3 of the time when a full amplitude sine wave is modulated. Therefore it saves switching losses.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Motor Current Control ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Motor Current Control ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l11&quot;&gt;Line 11:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 11:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Slip Frequency Control ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Slip Frequency Control ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In the academic world an induction machine is seen as a transformer that has a rotating secondary winding (=rotor) that is short circuit. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Therefor&lt;/del&gt;, if the magnetic field caused by the primary winding (=stator) rotates at 100Hz and the motor shaft rotates at 100Hz, the secondary winding doesn&#039;t see any magnetic field, no current flows and therefor the motor doesn&#039;t generate any torque. If the stator rotates at 100Hz and the rotor at 99Hz, the secondary winding sees a 1Hz (the slip frequency) field. This creates a current flow in the rotor which in turn creates a magnetic field that is directed in the opposite direction than the primary field. Now, rotor and stator are coupled by magnetic force. The rotor is forced to follow the spinning magnetic field of the stator. The motor generates torque. The greater the slip frequency, the stronger the magnetic coupling and the more torque can be achieved. On the other hand the &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;effiency &lt;/del&gt;degrades almost proportional with the slip.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In the academic world an induction machine is seen as a transformer that has a rotating secondary winding (=rotor) that is short circuit. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Therefore&lt;/ins&gt;, if the magnetic field caused by the primary winding (=stator) rotates at 100Hz and the motor shaft rotates at 100Hz, the secondary winding doesn&#039;t see any magnetic field, no current flows and therefor the motor doesn&#039;t generate any torque. If the stator rotates at 100Hz and the rotor at 99Hz, the secondary winding sees a 1Hz (the slip frequency) field. This creates a current flow in the rotor which in turn creates a magnetic field that is directed in the opposite direction than the primary field. Now, rotor and stator are coupled by magnetic force. The rotor is forced to follow the spinning magnetic field of the stator. The motor generates torque. The greater the slip frequency, the stronger the magnetic coupling and the more torque can be achieved. On the other hand the &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;efficiency &lt;/ins&gt;degrades almost proportional with the slip.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;For every motor there are two important slip frequency values: &#039;&#039;&#039;optimal&#039;&#039;&#039; and &#039;&#039;&#039;breakdown&#039;&#039;&#039;. At optimal slip the motor operates with its peak &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;effiency&lt;/del&gt;. At breakdown slip the motor operates with its peak torque. The commanded slip should always be between these 2 values.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;For every motor there are two important slip frequency values: &#039;&#039;&#039;optimal&#039;&#039;&#039; and &#039;&#039;&#039;breakdown&#039;&#039;&#039;. At optimal slip the motor operates with its peak &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;efficiency&lt;/ins&gt;. At breakdown slip the motor operates with its peak torque. The commanded slip should always be between these 2 values.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The slip control algorithm tracks the motor shafts current angle, adds the slip angle and outputs the sine wave at the new angle to the inverter bridges. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Thats &lt;/del&gt;it.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The slip control algorithm tracks the motor shafts current angle, adds the slip angle and outputs the sine wave at the new angle to the inverter bridges. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;That&#039;s &lt;/ins&gt;it.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;To vary the generated torque, the amplitude of the sine wave is modified. At 100% torque it is the value from the V/Hz algorithm, if less than 100% torque is commanded then the V/Hz value is scaled accordingly. Additionally the slip frequency is scaled between optimal and breakdown (or whatever the user sets as maximum).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;To vary the generated torque, the amplitude of the sine wave is modified. At 100% torque it is the value from the V/Hz algorithm, if less than 100% torque is commanded then the V/Hz value is scaled accordingly. Additionally the slip frequency is scaled between optimal and breakdown (or whatever the user sets as maximum).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Lsh3rd</name></author>
	</entry>
	<entry>
		<id>https://openinverter.org/wiki/index.php?title=Software_Theory_of_Operation&amp;diff=15&amp;oldid=prev</id>
		<title>Dmpitsch: Initial Draft</title>
		<link rel="alternate" type="text/html" href="https://openinverter.org/wiki/index.php?title=Software_Theory_of_Operation&amp;diff=15&amp;oldid=prev"/>
		<updated>2019-03-25T16:39:30Z</updated>

		<summary type="html">&lt;p&gt;Initial Draft&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Sine Modulation ==&lt;br /&gt;
The core task of the control software is to generate 6 PWM signals, 2 for each bridge. The PWM has a fixed frequency in the kilohertz region, lets assume 8.8khz. On top of that a variable frequency, variable amplitude sine wave is modulated. The actual PWM generation is done by hardware, software just needs to tell the hardware which dutycycle to output.&lt;br /&gt;
&lt;br /&gt;
The sinewave itself is stored in a lookup table, as small MCUs can&amp;#039;t compute the sine function efficiently. It is output to all three phases but with a 120° phase shift. &lt;br /&gt;
&lt;br /&gt;
== Clipping ==&lt;br /&gt;
The PWM principle has a practical limit when dutycycles become very large (&amp;gt;99%) or very small (&amp;lt;1%). The IGBTs have a limited switching speed. Therefor, if they&amp;#039;re switched on and right off again (or vice versa) they effectively don&amp;#039;t change state. Therefor, these extreme dutycycles are mapped to &amp;quot;always on&amp;quot; or &amp;quot;always off&amp;quot; respectively. This logic kicks in 1/3 of the time when a full amplitude sine wave is modulated. Therefore it saves switching losses. &lt;br /&gt;
&lt;br /&gt;
== Motor Current Control ==&lt;br /&gt;
The torque of any motor is proportional to the current through its windings. As those windings represent an inductance, their impedance increases proportional to the frequency. So to create a current flow of 100A at 100Hz takes 10 times the voltage compared to creating a current flow of 100A at 10Hz. Therefor the inverter has to modify the amplitude of the sine wave proportional to its frequency. At some (configurable) point the amplitude reaches its maximum and the current flow decreases with the frequency. This &amp;quot;algorithm&amp;quot; is often called V/Hz. &lt;br /&gt;
&lt;br /&gt;
== Slip Frequency Control ==&lt;br /&gt;
In the academic world an induction machine is seen as a transformer that has a rotating secondary winding (=rotor) that is short circuit. Therefor, if the magnetic field caused by the primary winding (=stator) rotates at 100Hz and the motor shaft rotates at 100Hz, the secondary winding doesn&amp;#039;t see any magnetic field, no current flows and therefor the motor doesn&amp;#039;t generate any torque. If the stator rotates at 100Hz and the rotor at 99Hz, the secondary winding sees a 1Hz (the slip frequency) field. This creates a current flow in the rotor which in turn creates a magnetic field that is directed in the opposite direction than the primary field. Now, rotor and stator are coupled by magnetic force. The rotor is forced to follow the spinning magnetic field of the stator. The motor generates torque. The greater the slip frequency, the stronger the magnetic coupling and the more torque can be achieved. On the other hand the effiency degrades almost proportional with the slip.&lt;br /&gt;
&lt;br /&gt;
For every motor there are two important slip frequency values: &amp;#039;&amp;#039;&amp;#039;optimal&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;breakdown&amp;#039;&amp;#039;&amp;#039;. At optimal slip the motor operates with its peak effiency. At breakdown slip the motor operates with its peak torque. The commanded slip should always be between these 2 values.&lt;br /&gt;
&lt;br /&gt;
The slip control algorithm tracks the motor shafts current angle, adds the slip angle and outputs the sine wave at the new angle to the inverter bridges. Thats it.&lt;br /&gt;
&lt;br /&gt;
To vary the generated torque, the amplitude of the sine wave is modified. At 100% torque it is the value from the V/Hz algorithm, if less than 100% torque is commanded then the V/Hz value is scaled accordingly. Additionally the slip frequency is scaled between optimal and breakdown (or whatever the user sets as maximum).&lt;/div&gt;</summary>
		<author><name>Dmpitsch</name></author>
	</entry>
</feed>