<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://openinverter.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Doobedoobedo</id>
	<title>openinverter.org wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://openinverter.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Doobedoobedo"/>
	<link rel="alternate" type="text/html" href="https://openinverter.org/wiki/Special:Contributions/Doobedoobedo"/>
	<updated>2026-04-29T06:25:15Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://openinverter.org/wiki/index.php?title=Nissan_Leaf_Gen2_Board&amp;diff=438</id>
		<title>Nissan Leaf Gen2 Board</title>
		<link rel="alternate" type="text/html" href="https://openinverter.org/wiki/index.php?title=Nissan_Leaf_Gen2_Board&amp;diff=438"/>
		<updated>2020-02-26T23:09:55Z</updated>

		<summary type="html">&lt;p&gt;Doobedoobedo: Added board removal a stub for the kit build and basic info on what&amp;#039;s available on the connector&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Shop link: https://openinverter.org/shop/index.php?route=product/product&amp;amp;product_id=57&lt;br /&gt;
&lt;br /&gt;
Swap video: https://www.youtube.com/watch?v=T_6hw6vGzfM&lt;br /&gt;
&lt;br /&gt;
== The Kit ==&lt;br /&gt;
The kit comprises a Brain board R3, a wifi board, connectors, and a bare replacement board which replaces the stock Nissan board. This board needs the supplied components and connectors to be soldered in place along with the large proprietary connector which must be salvaged from the Nissan board.&lt;br /&gt;
&lt;br /&gt;
== Nissan Board Removal ==&lt;br /&gt;
[[File:Nissan inverter board.jpg|alt=Nissan board, yet to be removed. The large connector on the left must be salvaged and re-used.￼|thumb|Nissan board, yet to be removed. The large connector on the left must be salvaged and re-used.]]The inverter casing attaches directly to the motor and may be opened by removing the 10mm hex head bolts underneath the top lip along with the waterproof guard for the large connector.&lt;br /&gt;
&lt;br /&gt;
Once opened the board with the controller is easily distinguished as it has the large connector attached. It is on it&#039;s own carrier attached to the lid by 3 allen head bolts. Start by disconnecting the plugs from the four connectors at the top of the board, then remove the allen bolts to free the carrier.&lt;br /&gt;
&lt;br /&gt;
Next remove the screws holding the board to the carrier. Nissan use some very strong thread lock so be prepared for some of the screw heads to shear, the sheared stubs can be removed afterwards using heat to burn off the thread lock.&lt;br /&gt;
[[File:Nissan Proprietary connector.jpg|alt=Nissan Proprietary connector as seen from outside the housing.￼|thumb|Nissan Proprietary connector as seen from outside the housing.]]&lt;br /&gt;
[[File:Leaf adapter pin map.png|alt=Pin function descriptions, pins as seen from outside the housing|thumb|Proprietary connector pin function descriptions, pins as seen from outside the housing.]]&lt;br /&gt;
Once the board has been removed from the carrier the large connector must be salvaged from it. One method is shown in the swap video, a vacuum soldering iron is also known to work.&lt;br /&gt;
&lt;br /&gt;
== Kit Build ==&lt;br /&gt;
Solder the components to the board as per the instructions. Use fresh screws to attach the board to the carrier and bolt it back in place using the allen head screws. Next plug in the brain board and wifi adapter.&lt;br /&gt;
&lt;br /&gt;
== Proprietary Connector ==&lt;br /&gt;
Not all pins of the connector are available. The top group are blanked off, so the brake and BMS signals are not available.&lt;br /&gt;
&lt;br /&gt;
The resolver and CAN bus signals remain on the same pins as used by Nissan. If other signals are required then they must be added to the female connector.&lt;/div&gt;</summary>
		<author><name>Doobedoobedo</name></author>
	</entry>
	<entry>
		<id>https://openinverter.org/wiki/index.php?title=File:Leaf_adapter_pin_map.png&amp;diff=437</id>
		<title>File:Leaf adapter pin map.png</title>
		<link rel="alternate" type="text/html" href="https://openinverter.org/wiki/index.php?title=File:Leaf_adapter_pin_map.png&amp;diff=437"/>
		<updated>2020-02-26T22:57:41Z</updated>

		<summary type="html">&lt;p&gt;Doobedoobedo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Leaf adapter pin map&lt;/div&gt;</summary>
		<author><name>Doobedoobedo</name></author>
	</entry>
	<entry>
		<id>https://openinverter.org/wiki/index.php?title=File:Nissan_Proprietary_connector.jpg&amp;diff=436</id>
		<title>File:Nissan Proprietary connector.jpg</title>
		<link rel="alternate" type="text/html" href="https://openinverter.org/wiki/index.php?title=File:Nissan_Proprietary_connector.jpg&amp;diff=436"/>
		<updated>2020-02-26T22:54:31Z</updated>

		<summary type="html">&lt;p&gt;Doobedoobedo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Nissan Proprietary connector as seen from outside the housing&lt;/div&gt;</summary>
		<author><name>Doobedoobedo</name></author>
	</entry>
	<entry>
		<id>https://openinverter.org/wiki/index.php?title=Nissan_Leaf_Gen2_Board&amp;diff=435</id>
		<title>Nissan Leaf Gen2 Board</title>
		<link rel="alternate" type="text/html" href="https://openinverter.org/wiki/index.php?title=Nissan_Leaf_Gen2_Board&amp;diff=435"/>
		<updated>2020-02-26T22:33:05Z</updated>

		<summary type="html">&lt;p&gt;Doobedoobedo: description of the kit.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Shop link: https://openinverter.org/shop/index.php?route=product/product&amp;amp;product_id=57&lt;br /&gt;
&lt;br /&gt;
Swap video: https://www.youtube.com/watch?v=T_6hw6vGzfM&lt;br /&gt;
&lt;br /&gt;
== The Kit ==&lt;br /&gt;
The kit comprises a Brain board R3, a wifi board, connectors, and a bare replacement board which replaces the stock Nissan board. This board needs the supplied components and connectors to be soldered in place along with the large proprietary connector which must be salvaged from the Nissan board.&lt;br /&gt;
[[File:Nissan inverter board.jpg|alt=Nissan board, yet to be removed. The large connector on the left must be salvaged and re-used.￼|thumb|Nissan board, yet to be removed. The large connector on the left must be salvaged and re-used.]]&lt;/div&gt;</summary>
		<author><name>Doobedoobedo</name></author>
	</entry>
	<entry>
		<id>https://openinverter.org/wiki/index.php?title=File:Nissan_inverter_board.jpg&amp;diff=434</id>
		<title>File:Nissan inverter board.jpg</title>
		<link rel="alternate" type="text/html" href="https://openinverter.org/wiki/index.php?title=File:Nissan_inverter_board.jpg&amp;diff=434"/>
		<updated>2020-02-26T22:30:11Z</updated>

		<summary type="html">&lt;p&gt;Doobedoobedo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Nissan board attached to it&#039;s carrier.&lt;/div&gt;</summary>
		<author><name>Doobedoobedo</name></author>
	</entry>
	<entry>
		<id>https://openinverter.org/wiki/index.php?title=Parameters&amp;diff=359</id>
		<title>Parameters</title>
		<link rel="alternate" type="text/html" href="https://openinverter.org/wiki/index.php?title=Parameters&amp;diff=359"/>
		<updated>2020-02-18T15:13:35Z</updated>

		<summary type="html">&lt;p&gt;Doobedoobedo: fixed typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The inverter can be adapted to many kinds of motors, battery packs and driver preferences by changing parameters.&lt;br /&gt;
&lt;br /&gt;
== Motor Parameters ==&lt;br /&gt;
The parameters to adjust the inverter to the motor are boost, fweak, fslipmin, fslipmax, polepairs, fmin, fmax and numimp.&lt;br /&gt;
&lt;br /&gt;
They can be deduced from the motors nameplate or by trying which feels best. For illustration we will assume a bus voltage of 500V and a 4-pole (p=2) motor with a nominal speed of n=1450rpm@f=50Hz and 230V. With 500V DC an AC voltage of 500/1.41=355V can be generated.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;boost&#039;&#039;&#039; is the digital amplitude of the sine wave at motor startup. It is needed to overcome the motors ohmic resistance. Digital amplitude is an internal quantity. 0 means no voltage is generated at all, 37813 means the full possible voltage is generated.&lt;br /&gt;
&lt;br /&gt;
Example: boost=1700&lt;br /&gt;
&lt;br /&gt;
At full throttle an effective voltage of 1700/37813*355=16V is generated. The best way to find a feasible value is to optimize it in the finished car. Start with the default value and increase until you get a good startup.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;fweak&#039;&#039;&#039; is the frequency at which the full possible voltage is generated. It is also the point of the highest motor power. Beyond fweak torque will decrease to the square of frequency and thus power will decrease linear with frequency.&lt;br /&gt;
&lt;br /&gt;
A starting point for fweak is the motors nameplate:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;figure-inline class=&amp;quot;mw-default-size&amp;quot;&amp;gt;&amp;lt;figure-inline&amp;gt;&amp;lt;figure-inline&amp;gt;&amp;lt;figure-inline&amp;gt;&amp;lt;figure-inline&amp;gt;&amp;lt;figure-inline&amp;gt;[[File:Fweak.png|210x210px]]&amp;lt;/figure-inline&amp;gt;&amp;lt;/figure-inline&amp;gt;&amp;lt;/figure-inline&amp;gt;&amp;lt;/figure-inline&amp;gt;&amp;lt;/figure-inline&amp;gt;&amp;lt;/figure-inline&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With our illustration motor fweak=355/230*50=77Hz. fweak can be configured lower than that resulting in more torque at the low end.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;fslipmin&#039;&#039;&#039;/&#039;&#039;&#039;fslipmax&#039;&#039;&#039; is the slip frequency at which the motor is run at minimum/maximum throttle. fslipmin is set to the motors optimal slip frequency which can be deduced from the nameplate. fslipmin=f-p*n/60. With our illustration motor fslipmin=50-2*1450/60=1.66Hz. fslipmax can be set as high as breakdown torque which is not found on the nameplate. So its best found experimental starting with 2*fslipmin. If set too high the motor will start to rock violently on startup, possibly tripping the over current limit.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;polepairs&#039;&#039;&#039; is set to p, 2 in our example.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;fmin&#039;&#039;&#039; should be set just below fslipmin.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;fmax&#039;&#039;&#039; is used to limit the speed of the motor. The default 200Hz would result in a maximum speed of about 6000rpm.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ampmin&#039;&#039;&#039; Is the minimum relative amplitude fed to the motor. At very low amplitudes the motor does not generate any noticable torque and throttle travel is wasted that does nothing. Find out a good value by experimenting. &lt;br /&gt;
&lt;br /&gt;
== Inverter Parameters ==&lt;br /&gt;
&#039;&#039;&#039;pwmfrq&#039;&#039;&#039; Sets the frequency at which the IGBTs are switched on and off. The faster the switching the higher the losses in the inverter and the lower the losses in the motor. The maximum frequency is also limited by the driver boards as explained here.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;pwmpol&#039;&#039;&#039; Sets the polarity of the PWM signals, active high or active low. Do not touch this parameter if you don&#039;t know what you&#039;re doing. When configured inversely it will blow up your power stage immediatly if connected to a potent power source like batteries.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;deadtime&#039;&#039;&#039; The time between switching off one IGBT and switching on the other. 28=800ns, 63=1.5µs. More values can be found in the STM32 data sheet. Make sure to test the deadtime at low power levels. Setting the deadtime too low while operating of a potent power source can blow up your power stage! &lt;br /&gt;
&lt;br /&gt;
== Parameter Reference ==&lt;br /&gt;
The following parameters currently exist to customize the controller software. Type&lt;br /&gt;
 set   &lt;br /&gt;
to change it. Type&lt;br /&gt;
 get &lt;br /&gt;
to get the current value.&lt;br /&gt;
&lt;br /&gt;
Parameters are internally stored with 5 binary fraction digits. That means there are 32 possible values after the decimal point. So when you set a value of 0.35 you might end up with 0.33. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Unit&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Min&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Max&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Default&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; |&#039;&#039;&#039;Motor (FOC)&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|curkp&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|20000&lt;br /&gt;
|64&lt;br /&gt;
|Current controller proportional gain&lt;br /&gt;
|-&lt;br /&gt;
|curki&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|100000&lt;br /&gt;
|20000&lt;br /&gt;
|Current controller integral gain&lt;br /&gt;
|-&lt;br /&gt;
|curkifrqgain&lt;br /&gt;
|dig/Hz&lt;br /&gt;
|0&lt;br /&gt;
|1000&lt;br /&gt;
|50&lt;br /&gt;
|Current controllers integral gain frequency coefficient&lt;br /&gt;
|-&lt;br /&gt;
|fwkp&lt;br /&gt;
|&lt;br /&gt;
| -10000&lt;br /&gt;
|0&lt;br /&gt;
| -100&lt;br /&gt;
|Cross comparison field weakening controller gain&lt;br /&gt;
|-&lt;br /&gt;
|dmargin&lt;br /&gt;
|dig/Hz&lt;br /&gt;
| -10000&lt;br /&gt;
|0&lt;br /&gt;
| -2000&lt;br /&gt;
|Margin for residual torque producing current (so field weakening current doesn&#039;t use up the entire amplitude)&lt;br /&gt;
|-&lt;br /&gt;
|syncadv&lt;br /&gt;
|dig/Hz&lt;br /&gt;
| -100&lt;br /&gt;
|100&lt;br /&gt;
|10&lt;br /&gt;
|Shifts &amp;quot;syncofs&amp;quot; downwards/upwards with frequency&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; |&#039;&#039;&#039;Motor (sine)&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|boost&lt;br /&gt;
|dig&lt;br /&gt;
|0&lt;br /&gt;
|37813&lt;br /&gt;
|1700&lt;br /&gt;
|0 Hz Boost in digit. 1000 digit ~ 2.5%&lt;br /&gt;
|-&lt;br /&gt;
|fweak&lt;br /&gt;
|Hz&lt;br /&gt;
|0&lt;br /&gt;
|400&lt;br /&gt;
|67&lt;br /&gt;
|Frequency where V/Hz reaches its peak&lt;br /&gt;
|-&lt;br /&gt;
|udcnom&lt;br /&gt;
|V&lt;br /&gt;
|0&lt;br /&gt;
|1000&lt;br /&gt;
|0&lt;br /&gt;
|Nominal voltage for fweak and boost. fweak and boost are scaled to the actual dc voltage. 0=don&#039;t scale&lt;br /&gt;
|-&lt;br /&gt;
|fpconst&lt;br /&gt;
|Hz&lt;br /&gt;
|0&lt;br /&gt;
|400&lt;br /&gt;
|400&lt;br /&gt;
|Frequency where slip frequency is derated to form a constant power region. Only has an effect when &amp;lt; fweak&lt;br /&gt;
|-&lt;br /&gt;
|fslipmin&lt;br /&gt;
|Hz&lt;br /&gt;
|0&lt;br /&gt;
|100&lt;br /&gt;
|1&lt;br /&gt;
|Slip frequency at minimum throttle&lt;br /&gt;
|-&lt;br /&gt;
|fslipmax&lt;br /&gt;
|Hz&lt;br /&gt;
|0&lt;br /&gt;
|100&lt;br /&gt;
|3&lt;br /&gt;
|Slip frequency at maximum throttle&lt;br /&gt;
|-&lt;br /&gt;
|fmin&lt;br /&gt;
|Hz&lt;br /&gt;
|0&lt;br /&gt;
|400&lt;br /&gt;
|1&lt;br /&gt;
|Below this frequency no voltage is generated&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; |&#039;&#039;&#039;Motor (common)&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|polepairs&lt;br /&gt;
|&lt;br /&gt;
|1&lt;br /&gt;
|16&lt;br /&gt;
|2&lt;br /&gt;
|Pole pairs of motor (e.g. 4-pole motor: 2 pole pairs)&lt;br /&gt;
|-&lt;br /&gt;
|respolepairs&lt;br /&gt;
|&lt;br /&gt;
|1&lt;br /&gt;
|16&lt;br /&gt;
|1&lt;br /&gt;
|Pole pairs of resolver (normally same as polepairs of motor, but sometimes 1)&lt;br /&gt;
|-&lt;br /&gt;
|encflt&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|16&lt;br /&gt;
|4&lt;br /&gt;
|Filter constant between pulse encoder and speed calculation. Makes up for slightly uneven pulse distribution&lt;br /&gt;
|-&lt;br /&gt;
|encmode&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|4&lt;br /&gt;
|0&lt;br /&gt;
|0=single channel encoder, 1=quadrature encoder,&lt;br /&gt;
2=quadrature /w index pulse, &lt;br /&gt;
3=SPI (deprecated),&lt;br /&gt;
4=Resolver,&lt;br /&gt;
5=sin/cos chip&lt;br /&gt;
|-&lt;br /&gt;
|fmax&lt;br /&gt;
|Hz&lt;br /&gt;
|0&lt;br /&gt;
|400&lt;br /&gt;
|200&lt;br /&gt;
|At this frequency rev limiting kicks in&lt;br /&gt;
|-&lt;br /&gt;
|numimp&lt;br /&gt;
|Imp/rev&lt;br /&gt;
|8&lt;br /&gt;
|8192&lt;br /&gt;
|60&lt;br /&gt;
|Pulse encoder pulses per turn&lt;br /&gt;
|-&lt;br /&gt;
|dirchrpm&lt;br /&gt;
|rpm&lt;br /&gt;
|0&lt;br /&gt;
|2000&lt;br /&gt;
|100&lt;br /&gt;
|Motor speed at which direction change is allowed&lt;br /&gt;
|-&lt;br /&gt;
|dirmode&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|1&lt;br /&gt;
|1&lt;br /&gt;
|0=button (momentary pulse selects forward/reverse), 1=switch (forward or reverse signal must be constantly high)&lt;br /&gt;
|-&lt;br /&gt;
|syncofs&lt;br /&gt;
|dig&lt;br /&gt;
|0&lt;br /&gt;
|65535&lt;br /&gt;
|0&lt;br /&gt;
|Phase shift of sine wave after receiving index pulse&lt;br /&gt;
|-&lt;br /&gt;
|snsm&lt;br /&gt;
|&lt;br /&gt;
|2&lt;br /&gt;
|3&lt;br /&gt;
|2&lt;br /&gt;
|Motor temperature sensor. 2=KTY83, 3=KTY84&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; |&#039;&#039;&#039;Inverter&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|pwmfrq&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|3&lt;br /&gt;
|2&lt;br /&gt;
|PWM frequency. 0=17.6kHz, 1=8.8kHz, 2=4.4kHz, 3=2.2kHz. Needs PWM restart&lt;br /&gt;
|-&lt;br /&gt;
|pwmpol&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|PWM polarity. 0=active high, 1=active low. DO NOT PLAY WITH THIS!&lt;br /&gt;
Needs PWM restart&lt;br /&gt;
|-&lt;br /&gt;
|deadtime&lt;br /&gt;
|dig&lt;br /&gt;
|0&lt;br /&gt;
|255&lt;br /&gt;
|28&lt;br /&gt;
|Deadtime between highside and lowside pulse. 28=800ns, 56=1.5µs. Not always linear, consult STM32 manual. Needs PWM restart&lt;br /&gt;
|-&lt;br /&gt;
|ocurlim&lt;br /&gt;
|A&lt;br /&gt;
| -65535&lt;br /&gt;
|65535&lt;br /&gt;
|100&lt;br /&gt;
|Hardware over current limit. RMS-current times sqrt(2) + some slack&lt;br /&gt;
|-&lt;br /&gt;
|minpulse&lt;br /&gt;
|dig&lt;br /&gt;
|0&lt;br /&gt;
|4095&lt;br /&gt;
|1000&lt;br /&gt;
|Narrowest or widest pulse, all other mapped to full off or full on, respectively&lt;br /&gt;
|-&lt;br /&gt;
|il1gain&lt;br /&gt;
|dig/A&lt;br /&gt;
|0&lt;br /&gt;
|4095&lt;br /&gt;
|4.7&lt;br /&gt;
|Digits per A of current sensor L1&lt;br /&gt;
|-&lt;br /&gt;
|il2gain&lt;br /&gt;
|dig/A&lt;br /&gt;
|0&lt;br /&gt;
|4095&lt;br /&gt;
|4.7&lt;br /&gt;
|Digits per A of current sensor L2&lt;br /&gt;
|-&lt;br /&gt;
|udcgain&lt;br /&gt;
|dig/V&lt;br /&gt;
|0&lt;br /&gt;
|4095&lt;br /&gt;
|6.15&lt;br /&gt;
|Digits per V of DC link&lt;br /&gt;
|-&lt;br /&gt;
|udcofs&lt;br /&gt;
|dig&lt;br /&gt;
|0&lt;br /&gt;
|4095&lt;br /&gt;
|0&lt;br /&gt;
|DC link 0V offset&lt;br /&gt;
|-&lt;br /&gt;
|udclim&lt;br /&gt;
|V&lt;br /&gt;
|0&lt;br /&gt;
|1000&lt;br /&gt;
|540&lt;br /&gt;
|High voltage at which the PWM is shut down&lt;br /&gt;
|-&lt;br /&gt;
|snshs&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|Heatsink temperature sensor. 0=JCurve, 1=Semikron&lt;br /&gt;
|-&lt;br /&gt;
|pinswap&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|7&lt;br /&gt;
|0&lt;br /&gt;
|Swap pins (only &amp;quot;FOC&amp;quot; software). Multiple bits can be set. 1=Swap Current Inputs, 2=Swap Resolver sin/cos, 4=Swap PWM output 1/3&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; |&#039;&#039;&#039;Derating&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|bmslimhigh&lt;br /&gt;
|%&lt;br /&gt;
|0&lt;br /&gt;
|100&lt;br /&gt;
|50&lt;br /&gt;
|Positive throttle limit on BMS under voltage&lt;br /&gt;
|-&lt;br /&gt;
|bmslimlow&lt;br /&gt;
|%&lt;br /&gt;
| -100&lt;br /&gt;
|0&lt;br /&gt;
| -1&lt;br /&gt;
|Regen limit on BMS over voltage&lt;br /&gt;
|-&lt;br /&gt;
|udcmin&lt;br /&gt;
|V&lt;br /&gt;
|0&lt;br /&gt;
|1000&lt;br /&gt;
|450&lt;br /&gt;
|Minimum battery voltage&lt;br /&gt;
|-&lt;br /&gt;
|udcmax&lt;br /&gt;
|V&lt;br /&gt;
|0&lt;br /&gt;
|1000&lt;br /&gt;
|520&lt;br /&gt;
|Maximum battery voltage&lt;br /&gt;
|-&lt;br /&gt;
|iacmax&lt;br /&gt;
|A&lt;br /&gt;
|0&lt;br /&gt;
|5000&lt;br /&gt;
|5000&lt;br /&gt;
|Maximum peak AC current&lt;br /&gt;
|-&lt;br /&gt;
|ifltrise&lt;br /&gt;
|dig&lt;br /&gt;
|0&lt;br /&gt;
|32&lt;br /&gt;
|10&lt;br /&gt;
|Controls how quickly slip and amplitude recover. The greater the value, the slower&lt;br /&gt;
|-&lt;br /&gt;
|ifltfall&lt;br /&gt;
|dig&lt;br /&gt;
|0&lt;br /&gt;
|32&lt;br /&gt;
|3&lt;br /&gt;
|Controls how quickly slip and amplitude are reduced on over current. The greater the value, the slower&lt;br /&gt;
|-&lt;br /&gt;
|idcmax&lt;br /&gt;
|A&lt;br /&gt;
|0&lt;br /&gt;
|5000&lt;br /&gt;
|5000&lt;br /&gt;
|Maximum DC input current&lt;br /&gt;
|-&lt;br /&gt;
|idcmin&lt;br /&gt;
|A&lt;br /&gt;
| -5000&lt;br /&gt;
|0&lt;br /&gt;
| -5000&lt;br /&gt;
|Maximum DC output current (regen)&lt;br /&gt;
|-&lt;br /&gt;
|throtmax&lt;br /&gt;
|%&lt;br /&gt;
|0&lt;br /&gt;
|100&lt;br /&gt;
|100&lt;br /&gt;
|Throttle limit&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; |&#039;&#039;&#039;Charger&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|chargemode&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|4&lt;br /&gt;
|0&lt;br /&gt;
|0=Off, 3=Boost, 4=Buck&lt;br /&gt;
|-&lt;br /&gt;
|chargecur&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|50&lt;br /&gt;
|0&lt;br /&gt;
|Charge current setpoint. Boost mode: charger INPUT current. Buck mode: charger output current&lt;br /&gt;
|-&lt;br /&gt;
|chargekp&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|100&lt;br /&gt;
|80&lt;br /&gt;
|Charge controller gain. Lower if you have oscillation, raise if current set point is not met&lt;br /&gt;
|-&lt;br /&gt;
|chargeflt&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|10&lt;br /&gt;
|8&lt;br /&gt;
|Charge current filtering. Raise if you have oscillations&lt;br /&gt;
|-&lt;br /&gt;
|chargemax&lt;br /&gt;
|%&lt;br /&gt;
|0&lt;br /&gt;
|99&lt;br /&gt;
|90&lt;br /&gt;
|Charge mode duty cycle limit. Especially in boost mode this makes sure you don&#039;t overvolt you IGBTs if there is no battery connected.&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; |&#039;&#039;&#039;Throttle&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|potmin&lt;br /&gt;
|dig&lt;br /&gt;
|0&lt;br /&gt;
|4095&lt;br /&gt;
|0&lt;br /&gt;
|Value of &amp;quot;pot&amp;quot; when pot isn&#039;t pressed at all&lt;br /&gt;
|-&lt;br /&gt;
|potmax&lt;br /&gt;
|dig&lt;br /&gt;
|0&lt;br /&gt;
|4095&lt;br /&gt;
|4095&lt;br /&gt;
|Value of &amp;quot;pot&amp;quot; when pot is pushed all the way in&lt;br /&gt;
|-&lt;br /&gt;
|pot2min&lt;br /&gt;
|dig&lt;br /&gt;
|0&lt;br /&gt;
|4095&lt;br /&gt;
|4095&lt;br /&gt;
|Value of &amp;quot;pot2&amp;quot; when regen pot is in 0 position&lt;br /&gt;
|-&lt;br /&gt;
|pot2max&lt;br /&gt;
|dig&lt;br /&gt;
|0&lt;br /&gt;
|4095&lt;br /&gt;
|4095&lt;br /&gt;
|Value of &amp;quot;pot2&amp;quot; when regen pot is in full on position&lt;br /&gt;
|-&lt;br /&gt;
|potmode&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|0=Pot 1 is throttle and pot 2 is regen strength preset,&lt;br /&gt;
1=Pot 2 is proportional to pot 1 (redundance)&lt;br /&gt;
2=Throttle controlled via CAN&lt;br /&gt;
|-&lt;br /&gt;
|throtramp&lt;br /&gt;
|%/10ms&lt;br /&gt;
|0&lt;br /&gt;
|100&lt;br /&gt;
|100&lt;br /&gt;
|Max positive throttle slew rate&lt;br /&gt;
|-&lt;br /&gt;
|throtramprpm&lt;br /&gt;
|rpm&lt;br /&gt;
|0&lt;br /&gt;
|20000&lt;br /&gt;
|20000&lt;br /&gt;
|No throttle ramping above this speed&lt;br /&gt;
|-&lt;br /&gt;
|ampmin&lt;br /&gt;
|%&lt;br /&gt;
|0&lt;br /&gt;
|100&lt;br /&gt;
|10&lt;br /&gt;
|Minimum relative sine amplitude (only &amp;quot;sine&amp;quot; software)&lt;br /&gt;
|-&lt;br /&gt;
|slipstart&lt;br /&gt;
|%&lt;br /&gt;
|10&lt;br /&gt;
|100&lt;br /&gt;
|50&lt;br /&gt;
|% positive throttle travel at which slip is increased (only &amp;quot;sine&amp;quot; software)&lt;br /&gt;
|-&lt;br /&gt;
|throtcur&lt;br /&gt;
|A/%&lt;br /&gt;
| -10&lt;br /&gt;
|10&lt;br /&gt;
|1&lt;br /&gt;
|Motor current per % of throttle travel (only &amp;quot;FOC&amp;quot; software)&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; |&#039;&#039;&#039;Regen&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|brknompedal&lt;br /&gt;
|%&lt;br /&gt;
| -100&lt;br /&gt;
|0&lt;br /&gt;
| -50&lt;br /&gt;
|Foot on break pedal regen torque&lt;br /&gt;
|-&lt;br /&gt;
|brkpedalramp&lt;br /&gt;
|%/10ms&lt;br /&gt;
|1&lt;br /&gt;
|100&lt;br /&gt;
|100&lt;br /&gt;
|Ramp speed when entering regen. E.g. when you set brkmax to 20% and brkpedal to -60% and brkpedalramp to 1, it will take 400ms to arrive at brake force of -60%&lt;br /&gt;
|-&lt;br /&gt;
|brknom&lt;br /&gt;
|%&lt;br /&gt;
|0&lt;br /&gt;
|100&lt;br /&gt;
|30&lt;br /&gt;
|Regen padel travel&lt;br /&gt;
|-&lt;br /&gt;
|brkmax&lt;br /&gt;
|%&lt;br /&gt;
|0&lt;br /&gt;
|100&lt;br /&gt;
|30&lt;br /&gt;
|Foot-off regen torque&lt;br /&gt;
|-&lt;br /&gt;
|brkout&lt;br /&gt;
|%&lt;br /&gt;
| -100&lt;br /&gt;
| -1&lt;br /&gt;
| -50&lt;br /&gt;
|Activate brake light output at this amount of braking force&lt;br /&gt;
|-&lt;br /&gt;
|brkrampstr&lt;br /&gt;
|Hz&lt;br /&gt;
|0&lt;br /&gt;
|400&lt;br /&gt;
|10&lt;br /&gt;
|Below this frequency the regen torque is reduced linearly with the frequency&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; |&#039;&#039;&#039;Automation&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|idlespeed&lt;br /&gt;
|rpm&lt;br /&gt;
| -100&lt;br /&gt;
|1000&lt;br /&gt;
| -100&lt;br /&gt;
|Motor idle speed. Set to -100 to disable idle function. When idle speed controller is enabled, brake pedal must be pressed on start.&lt;br /&gt;
|-&lt;br /&gt;
|idlethrotlim&lt;br /&gt;
|%&lt;br /&gt;
|0&lt;br /&gt;
|100&lt;br /&gt;
|50&lt;br /&gt;
|Throttle limit of idle speed controller&lt;br /&gt;
|-&lt;br /&gt;
|idlemode&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|Motor idle speed mode. 0=always run idle speed controller, 1=only run it when brake pedal is released, 2=like 1 but only when cruise switch is on&lt;br /&gt;
|-&lt;br /&gt;
|speedkp&lt;br /&gt;
|Hz&lt;br /&gt;
|0&lt;br /&gt;
|100&lt;br /&gt;
|1&lt;br /&gt;
|Speed controller gain (Cruise and idle speed). Decrease if speed oscillates. Increase for faster load regulation&lt;br /&gt;
|-&lt;br /&gt;
|cruisemode&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|0=button (set when button pressed, reset with brake pedal), 1=switch (set when switched on, reset when switched off or brake pedal)&lt;br /&gt;
|-&lt;br /&gt;
|speedflt&lt;br /&gt;
|dig&lt;br /&gt;
|0&lt;br /&gt;
|16&lt;br /&gt;
|1&lt;br /&gt;
|Filter before cruise controller&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; |&#039;&#039;&#039;Contactor Control&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|udcsw&lt;br /&gt;
|V&lt;br /&gt;
|0&lt;br /&gt;
|1000&lt;br /&gt;
|330&lt;br /&gt;
|Voltage at which the DC contactor is allowed to close&lt;br /&gt;
|-&lt;br /&gt;
|udcswbuck&lt;br /&gt;
|V&lt;br /&gt;
|0&lt;br /&gt;
|1000&lt;br /&gt;
|540&lt;br /&gt;
|Voltage at which the DC contactor is allowed to close in buck charge mode&lt;br /&gt;
|-&lt;br /&gt;
|tripmode&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|What to do with relays at a shutdown event. 0=All off, 1=Keep DC switch closed, 2=close precharge relay&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; |&#039;&#039;&#039;Auxillary PWM&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|pwmfunc&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|2&lt;br /&gt;
|0&lt;br /&gt;
|Quantity that controls the PWM output. 0=tmpm, 1=tmphs, 2=speed&lt;br /&gt;
|-&lt;br /&gt;
|pwmgain&lt;br /&gt;
|dig/C&lt;br /&gt;
|0&lt;br /&gt;
|65535&lt;br /&gt;
|100&lt;br /&gt;
|Gain of PWM output&lt;br /&gt;
|-&lt;br /&gt;
|pwmofs&lt;br /&gt;
|dig&lt;br /&gt;
| -65535&lt;br /&gt;
|65535&lt;br /&gt;
|0&lt;br /&gt;
|Offset of PWM output, 4096=full on&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; |&#039;&#039;&#039;Communication&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|canspeed&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|3&lt;br /&gt;
|0&lt;br /&gt;
|Baud rate of CAN interface 0=250k, 1=500k, 2=800k, 3=1M&lt;br /&gt;
|-&lt;br /&gt;
|canperiod&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|1&lt;br /&gt;
|0&lt;br /&gt;
|0=send configured CAN messages every 100ms, 1=every 10ms&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;6&amp;quot; |&#039;&#039;&#039;Testing&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|fslipspnt&lt;br /&gt;
|Hz&lt;br /&gt;
| -100&lt;br /&gt;
|100&lt;br /&gt;
|0&lt;br /&gt;
|Slip setpoint in mode 2. Written by software in mode 1&lt;br /&gt;
|-&lt;br /&gt;
|ampnom&lt;br /&gt;
|%&lt;br /&gt;
|0&lt;br /&gt;
|100&lt;br /&gt;
|0&lt;br /&gt;
|Nominal amplitude in mode 2. Written by software in mode 1&lt;br /&gt;
|}&lt;br /&gt;
The following values are available for diagnostic purposes. Type&lt;br /&gt;
 get &lt;br /&gt;
to get the current value. To read more then one you can provide a list like&lt;br /&gt;
 get il1,il2,udc&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Unit&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|version&lt;br /&gt;
|&lt;br /&gt;
|Firmware version&lt;br /&gt;
|-&lt;br /&gt;
|opmode&lt;br /&gt;
|&lt;br /&gt;
|Operating mode. 0=Off, 1=Run, 2=Manual_run, 3=Boost, 4=Buck, 5=Sine, 6=2 Phase sine&lt;br /&gt;
|-&lt;br /&gt;
|udc&lt;br /&gt;
|V&lt;br /&gt;
|DC link voltage&lt;br /&gt;
|-&lt;br /&gt;
|uac&lt;br /&gt;
|V&lt;br /&gt;
|Calculated AC voltage&lt;br /&gt;
|-&lt;br /&gt;
|idc&lt;br /&gt;
|A&lt;br /&gt;
|Calculated DC current&lt;br /&gt;
|-&lt;br /&gt;
|il1&lt;br /&gt;
|A&lt;br /&gt;
|AC current L1&lt;br /&gt;
|-&lt;br /&gt;
|il2&lt;br /&gt;
|A&lt;br /&gt;
|AC current L2&lt;br /&gt;
|-&lt;br /&gt;
|il1rms&lt;br /&gt;
|A&lt;br /&gt;
|RMS current L1&lt;br /&gt;
|-&lt;br /&gt;
|il2rms&lt;br /&gt;
|A&lt;br /&gt;
|RMS current L2&lt;br /&gt;
|-&lt;br /&gt;
|boostcalc&lt;br /&gt;
|A&lt;br /&gt;
|DC link adjusted boost setting&lt;br /&gt;
|-&lt;br /&gt;
|fweakcalc&lt;br /&gt;
|A&lt;br /&gt;
|DC link adjusted fweak setting&lt;br /&gt;
|-&lt;br /&gt;
|fstat&lt;br /&gt;
|Hz&lt;br /&gt;
|Stator frequency&lt;br /&gt;
|-&lt;br /&gt;
|speed&lt;br /&gt;
|rpm&lt;br /&gt;
|Motor speed&lt;br /&gt;
|-&lt;br /&gt;
|amp&lt;br /&gt;
|dig&lt;br /&gt;
|Sine amplitude, 37813=max&lt;br /&gt;
|-&lt;br /&gt;
|pot&lt;br /&gt;
|dig&lt;br /&gt;
|Pot value, 4095=max&lt;br /&gt;
|-&lt;br /&gt;
|pot2&lt;br /&gt;
|dig&lt;br /&gt;
|Regen Pot value, 4095=max&lt;br /&gt;
|-&lt;br /&gt;
|potnom&lt;br /&gt;
|%&lt;br /&gt;
|Scaled pot value, 0 accel&lt;br /&gt;
|-&lt;br /&gt;
|dir&lt;br /&gt;
|&lt;br /&gt;
|Rotation direction. -1=REV, 0=Neutral, 1=FWD&lt;br /&gt;
|-&lt;br /&gt;
|tmphs&lt;br /&gt;
|°C&lt;br /&gt;
|Heatsink temperature&lt;br /&gt;
|-&lt;br /&gt;
|tmpm&lt;br /&gt;
|°C&lt;br /&gt;
|Motor temperature&lt;br /&gt;
|-&lt;br /&gt;
|uaux&lt;br /&gt;
|°C&lt;br /&gt;
|Auxiliary voltage (i.e. 12V system). Measured on pin 11 (mprot)&lt;br /&gt;
|-&lt;br /&gt;
|din_cruise&lt;br /&gt;
|&lt;br /&gt;
|Cruise Control. This pin activates the cruise control with the current speed. Pressing again updates the speed set point.&lt;br /&gt;
|-&lt;br /&gt;
|din_start&lt;br /&gt;
|&lt;br /&gt;
|State of digital input &amp;quot;start&amp;quot;. This pin starts inverter operation&lt;br /&gt;
|-&lt;br /&gt;
|din_brake&lt;br /&gt;
|&lt;br /&gt;
|State of digital input &amp;quot;brake&amp;quot;. This pin sets maximum regen torque (brknompedal). Cruise control is disabled.&lt;br /&gt;
|-&lt;br /&gt;
|din_mprot&lt;br /&gt;
|&lt;br /&gt;
|State of digital input &amp;quot;motor protection switch&amp;quot;. Shuts down the inverter when =0&lt;br /&gt;
|-&lt;br /&gt;
|din_forward&lt;br /&gt;
|&lt;br /&gt;
|Direction forward&lt;br /&gt;
|-&lt;br /&gt;
|din_reverse&lt;br /&gt;
|&lt;br /&gt;
|Direction backward&lt;br /&gt;
|-&lt;br /&gt;
|din_emcystop&lt;br /&gt;
|&lt;br /&gt;
|State of digital input &amp;quot;emergency stop&amp;quot;. Shuts down the inverter when =0&lt;br /&gt;
|-&lt;br /&gt;
|din_ocur&lt;br /&gt;
|&lt;br /&gt;
|Over current detected&lt;br /&gt;
|-&lt;br /&gt;
|din_bms&lt;br /&gt;
|&lt;br /&gt;
|BMS over voltage/under voltage&lt;br /&gt;
|-&lt;br /&gt;
|cpuload&lt;br /&gt;
|%&lt;br /&gt;
|CPU load for everything except communication&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Tuning Guide ==&lt;br /&gt;
First you want to find a flat surface - a parking lot etc. so you can drive and stop without checking traffic. Change only one parameter at a time and save settings that work! &lt;br /&gt;
&lt;br /&gt;
1. set fslipmin so that you feel car taking off smoothly and try to change it by +/-0,1Hz and check differences in starting. Save when satisfied.&lt;br /&gt;
&lt;br /&gt;
2. lower boost value in 100 point until motor jitters at start. Then return it to last good value.&lt;br /&gt;
&lt;br /&gt;
3. try lowering ampmin in 0,1 increments and observe throttle travel. When throttle is not just smooth but becomes sluggish return some previous increments until throttle reaction is acceptable.&lt;br /&gt;
&lt;br /&gt;
4. change fweak value in +/-10Hz increments from starting point and observe torque in starting. This value is very dependent on battery voltage and is very subjective.&lt;br /&gt;
&lt;br /&gt;
Now you find a hill or ramp and set car on it. You want to hold car in position on slope just using throttle pedal. If there parameters are not good motor will jump or will feel sluggish&lt;br /&gt;
&lt;br /&gt;
1. add boost if motor is oscillating if it is smooth reduce it in 100 point increments until you get oscillation. Then return to last good value&lt;br /&gt;
&lt;br /&gt;
2. reduce/increase ampmin in 0,25 increments untill you get oscilation in motor and return last good value&lt;br /&gt;
&lt;br /&gt;
Now set the car into a hill to set fslipmax. Warning full throttle will be used. Be sure there is no other traffic!&lt;br /&gt;
&lt;br /&gt;
Set fslipmax to chosen value (guess it at 2xfslipmin if you have no other way) and try to take off with full throttle.&lt;br /&gt;
&lt;br /&gt;
If car feels sluggish with full throttle you have to add more slip.&lt;br /&gt;
&lt;br /&gt;
If motor starts to jitter there is too much slip. Try to reduce it in 0.1Hz increments.&lt;br /&gt;
&lt;br /&gt;
When you feel satisfied with settings save them and go on setting regen and braking effect.&lt;/div&gt;</summary>
		<author><name>Doobedoobedo</name></author>
	</entry>
	<entry>
		<id>https://openinverter.org/wiki/index.php?title=CAN_communication&amp;diff=277</id>
		<title>CAN communication</title>
		<link rel="alternate" type="text/html" href="https://openinverter.org/wiki/index.php?title=CAN_communication&amp;diff=277"/>
		<updated>2020-01-21T00:56:10Z</updated>

		<summary type="html">&lt;p&gt;Doobedoobedo: Added note on endianness. Which is implemented seems to depend on which library or driver is used. eg. Arduino UNO with can bus shield and matching library is Big-endian, Arduino Due with due_can library is Little-endian.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Revision 2 main board supports CAN communication. The CAN bus can be used for configuration and for obtaining values like voltages, input states etc. The CAN messages are configurable and can be adjusted to be compatible with existing equipment.&lt;br /&gt;
&lt;br /&gt;
Since firmware 3.75 throttle and digital inputs can be controlled via CAN.&lt;br /&gt;
&lt;br /&gt;
== Controlling throttle via CAN ==&lt;br /&gt;
If you want to send the throttle and regen magnitude commands via CAN rather then via analog inputs you have to set &amp;quot;potmode&amp;quot; to &amp;quot;CAN&amp;quot; (=2). Next you have to map a CAN message to pot and optionally pot2. So say you have a digital throttle that sends values from 0 to 1000 for 0 to 100% travel on CAN-Id 100 in the first two bytes.&lt;br /&gt;
* Configure potmin=0 and potmax=1000&lt;br /&gt;
* Map CAN message to pot: can rx pot 100 0 16 32&lt;br /&gt;
The last parameter, 32, tells the CAN module to apply the internal fixed point scaling.&lt;br /&gt;
&lt;br /&gt;
CAN messages must be received every 500ms, otherwise throttle times out and is set to 0.&lt;br /&gt;
&lt;br /&gt;
== Controlling Digital IO via CAN ==&lt;br /&gt;
6 signals, namely cruise, start, brake, forward, backward and bms can be controlled via CAN. The CAN message is ORed to the physical inputs so you can have mixed signals also. Digital CAN IO doesn&#039;t need to be explicitely configured, it works as soon as you map a CAN message to &amp;quot;canio&amp;quot;. &amp;quot;canio&amp;quot; is bit-encoded:&lt;br /&gt;
* Bit 0: cruise&lt;br /&gt;
* Bit 1: start&lt;br /&gt;
* Bit 2: brake&lt;br /&gt;
* Bit 3: forward&lt;br /&gt;
* Bit 4: reverse&lt;br /&gt;
* Bit 5: bms&lt;br /&gt;
So say you have a BMS that transmits an over/under voltage bit on CAN Id 200, 2nd data bit&lt;br /&gt;
 can rx canio 200 2 1 1024&lt;br /&gt;
Note the 1024x gain that shifts the bit into the correct position (5 fraction bits plus 5th data bit). In this case all other IOs remain traditional, only BMS is controlled via CAN. Note that you cannot map multiple CAN messages onto &amp;quot;canio&amp;quot; as they would overwrite each other.&lt;br /&gt;
&lt;br /&gt;
If you have a managed to mangle all 5 bits into one message, say CAN Id 300, first 5 bits the mapping is done like so&lt;br /&gt;
 can rx canio 300 0 5 32&lt;br /&gt;
The same timeout mechanism is used as for throttle control, so after 500ms with no message the CAN-mapped inputs are assumed off. Traditional inputs remain unaffected.&lt;br /&gt;
&lt;br /&gt;
== Setting and reading parameters via SDO ==&lt;br /&gt;
The abbreviation SDO is taken from the CANOpen protocol. It assigns a certain meaning to the 8 data bits of a CAN frame.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Purpose&lt;br /&gt;
!CAN-Id&lt;br /&gt;
!Byte 1 (Cmd)&lt;br /&gt;
!Bytes 2-3 (Index)&lt;br /&gt;
!Byte 4 (Subindex)&lt;br /&gt;
!Bytes 5-8 (Data)&lt;br /&gt;
|-&lt;br /&gt;
|Set Value&lt;br /&gt;
|0x601&lt;br /&gt;
|0x40&lt;br /&gt;
|0x2000&lt;br /&gt;
|Value Index&lt;br /&gt;
|Value x 32&lt;br /&gt;
|-&lt;br /&gt;
|Set Value Reply&lt;br /&gt;
|0x581&lt;br /&gt;
|0x23&lt;br /&gt;
|0x2000&lt;br /&gt;
|Value Index&lt;br /&gt;
|Value x 32&lt;br /&gt;
|-&lt;br /&gt;
|Get Value&lt;br /&gt;
|0x601&lt;br /&gt;
|0x22&lt;br /&gt;
|0x2000&lt;br /&gt;
|Value Index&lt;br /&gt;
|don&#039;t care&lt;br /&gt;
|-&lt;br /&gt;
|Get Value Reply&lt;br /&gt;
|0x581&lt;br /&gt;
|0x43&lt;br /&gt;
|0x2000&lt;br /&gt;
|Value Index&lt;br /&gt;
|Value x 32&lt;br /&gt;
|-&lt;br /&gt;
|Abort - invalid index&lt;br /&gt;
|0x581&lt;br /&gt;
|0x80&lt;br /&gt;
|0x2000&lt;br /&gt;
|Value Index&lt;br /&gt;
|Abort Code = 0x06020000&lt;br /&gt;
|-&lt;br /&gt;
|Abort - value out of range&lt;br /&gt;
|0x581&lt;br /&gt;
|0x80&lt;br /&gt;
|0x2000&lt;br /&gt;
|Value Index&lt;br /&gt;
|Abort Code = 0x06090030&lt;br /&gt;
|}&lt;br /&gt;
The value index must be determined by counting the output of the list command. E.g. &amp;quot;boost&amp;quot; at the very top has index 0, potnom has index 77. The indexes can change over firmware versions as new parameters are added somewhere in between.&lt;br /&gt;
&lt;br /&gt;
== Mapping values to arbitrary CAN messages ==&lt;br /&gt;
Values can be mapped into a certain bit range of the 64 payload bits of a CAN message. They can either be read from the message or sent via a message. To do so enter&lt;br /&gt;
 can tx udc 123 0 16 10&lt;br /&gt;
This maps the value of udc to a CAN message with id 123 bits 0..15 (start at bit 0, span over 16 bits) with a gain of 10.&lt;br /&gt;
 can tx din_forward 123 24 1 1&lt;br /&gt;
If you want to clear all messages, type&lt;br /&gt;
 can clear&lt;br /&gt;
If you want to remove only a specific signal (starting version 4.18.R) type&lt;br /&gt;
 can del &amp;lt;name&amp;gt;&lt;br /&gt;
would map the pin state of the forward input to bit 24 of CAN message with id 123&lt;br /&gt;
&lt;br /&gt;
To save your can map simply type &amp;quot;save&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Limits ===&lt;br /&gt;
* A maximum of 10 messages can be defined&lt;br /&gt;
* Per message a maximum of 8 values can be mapped&lt;br /&gt;
* a value can not span across the 32-bit boundary, i.e. it must be fully contained in the first or second 32 bits of the message. E.g. &amp;quot;can tx udc 123 16 32 10&amp;quot; is not allowed&lt;br /&gt;
* A value can span maximum 32 bits&lt;br /&gt;
&lt;br /&gt;
== Endianness ==&lt;br /&gt;
CAN messages sent to, or received from the inverter are Little-endian.&lt;br /&gt;
&lt;br /&gt;
If you are sending or receiving messages containing multi-byte values then the byte order must be taken into account.&lt;/div&gt;</summary>
		<author><name>Doobedoobedo</name></author>
	</entry>
</feed>