Home
Description
Contents
1. Code Description UI_SCODE_HALL This code identifies the Hall sensor UI_SCODE_ENC This code identifies the Encoder sensor UI_SCODE_STO_PLL This code identifies the State observer PLL sensor UI_SCODE_STO_CR This code identifies the State observer CORDIC sensor Doc ID 18458 Rev 3 105 127 User Interface class overview UM1052 9 3 106 127 Table 31 User interface configuration CFG bit descriptions Code Description UI_CFGOPT_NONE Enable this option when no other option is selected Enable this option when the flux weakening is enabled in the MC UI_CFGOPT_FW F firmware Enable this option when the speed controller has a derivative UI CFGOPT SPEED KD F action UI CFGOPT Iq KD Enable this option when the la controller has a derivative action UI CFGOPT Id KD Enable this option when the controller has a derivative action UI CFGOPT DAC Enable this option if a DAC object is associated with the UI Enable this option to allow setting the ly reference when MC is in speed mode UI_CFGOPT_SETIDINSPDMODE UI_CFGOPT_PLLTUNING Enable this option to allow the PLL KP and KI setting LCD manager class CLCD Ul This is a derived class of UI that implements the management of the LCD screen It is based on the LCD graphical library STMFC written in C language A functional block diagram of LCD manager is shown in Figure 76 The MC objects MCI MCT are
2. Encoder sensor feedback processing Quadrature incremental encoders are widely used to read the rotor position of electric machines As the name implies incremental encoders actually read angular displacements with respect to an initial position if that position is known then the rotor absolute angle is known too For this reason it is always necessary when processing the encoder feedback to perform a rotor prepositioning before the first startup after any fault event or microcontroller reset Quadrature encoders have two output signals represented in Figure 50 as TI1 and T12 Together with the Root part number 1 standard timer in the encoder interface mode once the said alignment procedure has been executed it is possible to get information about the actual rotor angle and therefore the rolling direction by simply reading the counter of the timer used to decode encoder signals For the purpose of MC Library and as information provided by the MC API the rotor angle is expressed in s16degrees see Section 7 4 Measurement units Doc ID 18458 Rev 3 57 127 Rotor position speed feedback UM1052 5 3 1 58 127 Figure 50 Encoder output signals counter operation forward jitter backward jitter forward l a COUNTER up down up a a Bal The rotor angular velocity can be easily calculated as a time derivative of the angular position Setting
3. Project System amp Drive Params stm32f 2xx_MC_it c GUI generated according to system parameters Libraries STM32F2xx_StdPeriph_Driver src standard peripheral driver sources as needed for STM32F4xx projects Libraries CMSIS CMSTS_2_x Device ST STM32F4xx Source Template ssystem stm32f4xx c Libraries CMSIS CMSTS_2_x Device ST STM32F4xx Source Template s XXX startup_stm32f4xx s XXX according to IDE Project stm32f4xx_it c removing conditional compilation can be modified Project System amp Drive Params stm32f4xx_MC_it c GUI generated according to system parameters Libraries STM32F4xx_StdPeriph_Driver src standard peripheral driver sources as needed 3 include paths Note In the following code stands for Installation Folder for STM32F 1xx projects Libraries CMSIS CM3 DeviceSupport ST STM32F10x Libraries STM32F10x_StdPeriph Driver inc SAMC library interface common SAMC Application interface S System amp Drive Params Project for STM32F2xx projects Libraries CMSIS CM3 DeviceSupport ST STM32F2xx Libraries STM32F2xx_StdPeriph_Driver ine SAMC library interface common SAMC Application interface S System amp Drive Params Project a 78 127 Doc ID 18458 Rev 3 UM1052 MC application programming interface API 4 for STM32F4xx projects Libraries CMSIS CMSIS_2_
4. Flux wk PI gain KI field 11 in Figure 66 Sets the integral coefficient of the flux weakening controller for the active motor This control is only present if the flux weakening feature is enabled in the firmware The value set in this control is automatically sent to the motor control related object allowing the run time tuning of the flux weakening controller a Doc ID 18458 Rev 3 UM1052 LCD user interface 8 2 6 Current controller page To enter the current controller page press the RIGHT joystick from the speed controller page or from one of the above described pages if the speed controller page is not visible It is possible to navigate between focusable controls present in the page pressing the UP DOWN joystick The current controller page shown in Figure 67 is used to send commands and get a feedback related to current controllers from the active motor There are five control groups in this page listed in the table below Table 24 Control groups Control group Description Set point Used to set the current references and read measured currents lq PID gains I Used to change in real time the speed controller gains ld PID gains Measured speed Composed of two controls that are also present in the current controller page with start stop and in the sensorless tuning page this provides a fast access to the measured button speed and to the motor start stop function
5. 00 c eee eee 38 DT Ty Ts 2 lt ADuty4 lt Dr Ty and ADutyap lt Dy7 TptTs AA AA ee aetna 38 ADutyA lt DT Ty Ts 2 and ADutya_p gt DT T Rts 2 eee 39 ADutyy lt DT Ty Ts 2 and ADutya p lt DT TRtls 1 eee 39 Single shunt hardware architecture 00 cece eae 40 Single shunt current reading 0 00 cee tetas 41 Boundary between two space vector sectors n ausus 0c eee ee 42 Low modulation index 0 0 0 teens 43 Definition of noise parameters tees 44 Regularregion sernir aaa cornat roek AYANG NAG eee aa Seo ve asa eae Geers 44 Boundary Tasa ete aoe eS edie einem EEE EEA Os maa GN DRAG 45 Boundary 2 ama eee ied ee e BIAG PI eos a an Bee bee we eS 45 Boundary Seye genan cee PEGE aaah gates 2 ta be eee ahead Ge ene Ba Sa eee RS 46 ICS hardware architecture cc teens 46 Stator currents sampling in ICS configuration 000 c eee eee 48 General sensorless algorithm block diagram cece eee 50 PMSM back emfs detected by the sensorless state observer algorithm 51 Hall sensors output state correspondence 0 cee eee 52 Hall sensor timer interface prescaler decrease c eee eee 53 Hall sensor timer interface prescaler increase 0000 cece eee 53 TIMx_IRQHandler flowchart 0 0 00 00 cece 54 Hall sensor output transitions 0 0 eee 55 60 and 120 displaced Hall sensor output waveforms 000 eee
6. If DUAL DRIVE was selected the proper output file among the following MC_Library_STM32F10x_dual_drive a MC Library STM32F2xx dual drive a MC Library STM32F4xx dual drive a is created in Installation folder Project EWARM MC Library Compiled Exe or Installation folder FreeRTOS Project EWARM MC Library Compiled Exe 5 Compliancy with MISRA C rules 2004 can be checked using IAR EWARM The test is performed by uncommenting line 35 define MISRA C 2004 BUILD in the header file Installation folder MC Library Interface Common MC_type h The compiler should be configured in Strict ISO ANSI standard C mode MISRA C 2004 rule 1 1 6 4 Motor control application project As explained in previous sections the Motor Control Application project is the Motor Control application program 1 Access the project using IAR IDE by opening an MC workspace FreeRTOS based or not and clicking its name in the workspace tabbed browser callout 1 Figure 55 IDE toolbars and commands always refer to the active project the one whose tab is engraved Figure 55 displays the logical arrangement of files a similar arrangement is in folders Figure 55 Motor control application project IAR Embedded Workbench IDE File Edit View Project Simulator Tools Window Help Dok RELEASE H 1 s44 A ELLLLLLLLLRRRRRRRELELELELLLLLLLLLLLLLLLLLEEE file MCInterfaceClass c Files a GMC Application RELEASE Ha G MC Applicat
7. Phase A Phase B Phase C Sector 1 Sector 2 Sector 3 Sector 4 Sector 5 Sector 6 With the following definitions for U 8x Tx V Ug Tx Vg and X Up a U U Ug U y and2 literature demonstrates that the space vector sector is identified by the conditions shown in Table 2 Doc ID 18458 Rev 3 29 127 Overview of the FOC and other implemented algorithms UM1052 3 10 30 127 Table 2 Sector identification Yz0 Y gt 0 Z lt 0 Z 0 Z lt 0 Z 0 Xzs0 X gt 0 X lt 0 X gt 0 Sector V IV Ill Vi l II The duration of the positive pulse widths for the PWM applied on Phase A B and C are respectively computed by the following relationships Sector I IV ta EXE ta ta Z to ty xX Sector Il V ty E tg ta Z to ta Y Sector Ill VI t tg tc X to ta Y where T is the PWM period T X Y 2 Ei Considering that the PWM pattern is center aligned and that the phase voltages must be centered at 50 of duty cycle it follows that the values to be loaded into the PWM output compare registers are given respectively by Sector I IV TimePhA TEL TimePhB TimePhA Z TimePhC TimePhB X LI BAVSZ Sector Il V TimePhA 5 TimePhB TimePhA Z TimePhC TimePhA Y BA T T 2 Y X Sector Ill VI TimePhA J 5 TimePhB TimePhC X TimePhC TimePhA Y Detailed explanation about reference frame transformations PM synchronou
8. Kp x Errorsys Kix YErrorsys T Kg x Errorsys EfTOrsys 1 0 N ra Derivative term can be disabled Equation 1 corresponds to a classical PID implementation where K is the proportional coefficient e Kis the integral coefficient Kg is the differential coefficient Regulator sampling time setting The sampling time needs to be modified to adjust the regulation bandwidth As an accumulative term the integral term is used in the algorithm increasing the loop time decreases its effects accumulation is slower and the integral action on the output is delayed Inversely decreasing the loop time increases its effects accumulation is faster and the integral action on the output is increased This is why this parameter has to be adjusted prior to setting up any coefficient of the PID regulator In order to keep the CPU load as low as possible and as shown in equation 1 in Figure 12 the sampling time is directly part of the integral coefficient thus avoiding an extra multiplication Figure 13 describes the link between the time domain and the discrete system Doc ID 18458 Rev 3 25 127 Overview of the FOC and other implemented algorithms UM1052 3 8 26 127 Figure 13 Time domain to discrete PID equations Time domain f t Ky x Error y t K x J pEMOrgyg t dt Ky x Error gye t Discrete f X KX Errorgy Hk X D Errorsys Kax Errorgy Errorgy domain 0 sampling
9. N UM1052 Y User manual STM32F103xx STM32F100xx STM32F2xx STM32F4xx PMSM single dual FOC SDK v3 2 March 2012 Introduction This manual describes the Motor Control Software Development Kit generically called software library designed for and to be used with STM32F103xx STM32F 1 00xx STM32F2xx or STM32F4xx microcontrollers The software library implements the Field Oriented Control FOC drive of 3 phase Permanent Magnet Synchronous Motors PMSM both Surface Mounted SM PMSM and Internal I PMSM The control of an AC induction motor equipped with encoder or tacho generator is described in the UM0483 user manual S The STM32F family of 32 bit Flash microcontrollers is based on the breakthrough ARM Cortex M cores the Cortex M3 for STM32F 1xx and STM32F2xx and the Cortex M4 for STM32F4xx specifically developed for embedded applications These microcontrollers combine high performance with first class peripherals that make it suitable for performing both permanent magnet and AC induction motor FOC The PMSM FOC library can be used to quickly evaluate ST microcontrollers and complete ST application platforms as well as to save time when developing Motor Control algorithms to be run on ST microcontrollers This PMSM FOC library is written in C language and implements the core Motor Control algorithms reference frame transformations currents regulation speed regulation space vector modulation energy efficiency optim
10. The feed forward feature provided by this firmware library aims at improving the performance of the CR PWM current regulated pulse width modulation part of the motor drive It calculates in advance the vg and vg stator voltage commands required to feed the motor with the i and ig current references By doing so it backs up the standard PID current regulation see Figure 10 The feed forward feature works in the synchronous reference frame and requires good knowledge of some machine parameters such as the winding inductances Ly and Lg or Ls if an SM PMSM is used and the motor voltage constant Kg The feed forward algorithm has been designed to compensate for the frequency dependent back emf s and cross coupled inductive voltage drops in permanent magnet motors As a result the q axis and d axis PID current control loops become linear and a high performance current control is achieved As a further effect since the calculated stator voltage commands vg and vg are compensated according to the present DC voltage measurement a bus voltage ripple compensation is accomplished Doc ID 18458 Rev 3 ky UM1052 Overview of the FOC and other implemented algorithms 3 6 Figure 10 Feed forward current regulation r Kama HI aaa z bus voltage measurement AC Mains Bus voltage Or Depending on certain overall system parameters such as the DC bulk capacitor size e
11. oxo 0x00 CRC OR Execute ramp frame PC naay 0x07 0x06 FS p DR LB DR HB CRC Error Acknowledgment frame BOARD gt OxFF 0x1 ERROR CODE CRC MS19376V1 Payload length is always 6 The four bytes FS x represent the final speed expressed in rpm least significant byte and most significant byte DR LB and DR HB represent the duration expressed in milliseconds respectively least significant byte and most significant byte The Acknowledgment frame can be of two types e Data Acknowledgment frame if the operation has been successfully completed The payload of this Data Acknowledgment frame will be zero e Error Acknowledgment frame if the operation has not been successfully completed by the firmware The payload of this Error Acknowledgment frame is always 1 The list of error codes is shown in Table 37 List of error codes Figure 84 Speed ramp Speed rpm A Final speed Actual speed 1 me 5 f Duration Exec Ramp command MS19377V1 120 127 Doc ID 18458 Rev 3 1677 UM1052 Serial communication class overview 10 5 Get revup data frame The get revup data frame Figure 85 is sent by the master to retrieve the current revup parameters Revup sequence is a set of commands performed by the motor control firmware to drive the motor from zero speed up to run condition It is mand
12. 3 Activate Project gt Download gt Download file in the IAR menu 4 Select the appropriate pre compiled file STM3210B EVAL out STM32100B EVAL out STM3210E EVAL out STEVAL IHM022V1 out STM322xG EVAL out STM32F2xx_dual out STM324xG EVAL out STM32F4xx dual out Option 2 1 Use the STM32 and STMB8 Flash loader demonstrator PC software package This is available from the ST web site http www st com internet com SOFTWARE RESOURCES SW COMPONENT SW DEMO um0462 zip and in the Installation folder Utilities Flash loader The User Manual UM0462 included in the package fully explains how to operate it For communication purposes you need to verify that you have an available COM port RS232 on your PC 2 After the program is installed run the Flash loader demonstrator application from the Programs menu making sure that the device is connected to your PC and that the boot configuration pins are set correctly to boot from the system memory check the evaluation board user manual 3 Reset the microcontroller to restart the system memory boot loader code 4 When the connection is established the wizard displays the available device information such as the target ID the firmware version the supported device the memory map and the memory protection status Select the target name in the target combo box 5 Click the Download to device radio button see Figure 57 and browse to select the appropriate hexadecimal file STM
13. File Subfile Description MC library Source file of the MC library layer interface Public definitions interfaces of classes inc available only in confidential distribution src available only in confidential distribution Private definitions data structure of classes Source files Public definitions interfaces of classes and common definitions exported up to the highest level PI Digital Output reference frame transformation obj Compiled classes MC Application Source file of the MC application layer interface Public definitions interfaces of classes inc Private definitions data structure of classes src Source files UI library Source file of the User Interface layer interface Public definitions interfaces of classes inc Private definitions data structure of classes src Source files STMFC LCD graphics library Libraries FreeRTOS source FreeRTOS V1 6 distribution GNU GPL license http freertos org a001 14 html CMSIS Cortex Microcontroller Software Interface Standard v1 30 Doc ID 18458 Rev 3 ky UM1052 Working environment Table 10 File structure continued File Subfile STMF10x_StdPeriph_Driver Description STMF10x Standard Peripherals Library Drivers V3 5 0 STMF2xx_StdPeriph_Driver STMFe2xx Standard Peripherals Library Drivers V1 0 0 STMF4xx_StdPeriph_Driver STMF4xx Standard Periphe
14. In the default firmware configuration the LCD management is enabled It can be disabled using the STM32 MC Workbench or disabling the feature and manually changing the line define define LCD_JOYSTICK_BUTTON_FUNCTIONALITY DISABLE line 316 of the Drive parameters h file The LCD management is provided by a separate workspace UI Project that should be compiled and programmed before the motor control firmware programming LCD User interface structure The demonstration program is based on circular navigation pages Figure 62 shows the page structure The visibility of certain pages shown in Figure 62 depends on the firmware configuration e Dual control panel is only present if the firmware is configured for dual motor drive Speed controller page is only present when the firmware is configured in speed mode Sensorless tuning page PLL is only present if the firmware is configured with state observer with PLL as primary or auxiliary speed sensor Sensorless tuning page CORDIC is only present if the firmware is configured with state observer with CORDIC as primary or auxiliary speed sensor To navigate the help menus use e RIGHT to navigate to the next page on the right e LEFT to navigate to the next page on the left Figure 62 Page structure and navigation WELCOME LERT HELP PAGE RIGHT CONFIG DUAL SPEED CURRENT SENSORLESS SENSORLESS AND DEBUG CONTROL CONTROLLER CONTROLLERS
15. MS19340V1 Figure 5 Speed control loop AC Mains 16 127 Doc ID 18458 Rev 3 ky UM1052 Overview of the FOC and other implemented algorithms Table 1 References Reference Detail Section 3 4 PMSM maximum torque Explains the MTPA maximum torque per ampere strategy per ampere MTPA control optimized for IPMSM Section 3 6 Flux weakening control Explains the flux weakening control Section 3 5 Feed forward current Shows how to take advantage of the feed forward current regulation regulation Figure 5 Speed control loop shows the speed control loop built around the core torque control loop plus additional specific features offered by this motor control library see Table 1 References Each of them can be set as an option depending on the motor being used and user needs via the ST MC Workbench GUI which generates the h file used to correctly initialize the MCA during its boot stage 3 2 PM motor structures Two different PM motor constructions are available In drawing a in Figure 6 the magnets are glued to the surface of the rotor and this is the reason why it is referred to as SM PMSM surface mounted PMSM e In drawings b and c in Figure 6 the magnets are embedded in the rotor structure This construction is known as IPMSM interior PMSM Figure 6 Different PM motor constructions a b c SM PMSMs inherently have an isot
16. The MC Library Interface folder contains all the interfaces of each class belonging to the MC Library The System and Drive Parameters folder contains the header files that should be filled in so as to describe characteristics and parameters of the user s system To adjust system and drive parameters callout 2 Figure 55 separately for Motor 1 and Motor 2 edit the header files manually or generate them using the ST MC Workbench GUI The header file SystemNDriveParams h arranges all these parameters in the form of constant structures for object initialization so that the MC Application can create the controls required during the initial run time boot After these settings have been performed build the Motor Control Interface callout 3 Figure 55 The proper output file among the following MC Application STM32F 10x a MC Application STM32F2xx a MC Application STM32F4xx a is created in Installation folder Project EWARM MC Application Compiled Exe or Installation folder FreeRTOS Project EWARM MC Application Compiled Exe User project The User project is the application layer that exploits the MC API 1 Access the project using IAR IDE by opening an MC workspace FreeRTOS based or not and clicking its name in the workspace tabbed browser callout 1 Figure 56 Remember that IDE toolbars and commands always refer to the active project the one whose tab is engraved Doc ID 18458 Rev 3 67 127 Working e
17. time without notice All ST products are sold pursuant to ST s terms and conditions of sale Purchasers are solely responsible for the choice selection and use of the ST products and services described herein and ST assumes no liability whatsoever relating to the choice selection or use of the ST products and services described herein No license express or implied by estoppel or otherwise to any intellectual property rights is granted under this document If any part of this document refers to any third party products or services it shall not be deemed a license grant by ST for the use of such third party products or services or any intellectual property contained therein or considered as a warranty covering the use in any manner whatsoever of such third party products or services or any intellectual property contained therein UNLESS OTHERWISE SET FORTH IN ST S TERMS AND CONDITIONS OF SALE ST DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY WITH RESPECT TO THE USE AND OR SALE OF ST PRODUCTS INCLUDING WITHOUT LIMITATION IMPLIED WARRANTIES OF MERCHANTABILITY FITNESS FOR A PARTICULAR PURPOSE AND THEIR EQUIVALENTS UNDER THE LAWS OF ANY JURISDICTION OR INFRINGEMENT OF ANY PATENT COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT UNLESS EXPRESSLY APPROVED IN WRITING BY TWO AUTHORIZED ST REPRESENTATIVES ST PRODUCTS ARE NOT RECOMMENDED AUTHORIZED OR WARRANTED FOR USE IN MILITARY AIR CRAFT SPACE LIFE SAVING OR LIFE SUSTAINING APPLICATIONS NOR
18. 2 1 Definition of the noise parameter and boundary zone 43 4 3 Current sampling in isolated current sensor topology 46 5 Rotor position speed feedback aman 49 5 1 Sensorless algorithm ick sees ieetee KAKALAS ERE veces ieneee bes 49 5 1 1 A priori determination of state observer gains 50 5 2 Hall sensor feedback processing a 52 2 127 Doc ID 18458 Rev 3 ky UM1052 Contents 5 2 1 Speed measurement implementation aaa 52 5 2 2 Electrical angle extrapolation implementation 54 5 2 3 Setting up the system when using Hall effect sensors 55 5 3 Encoder sensor feedback processing aan 57 5 3 1 Setting up the system when using an encoder 58 6 Working environment cece eee eee 60 6 1 Motor control workspace 4 aman haw RE KAAREKNERBLEN RUDE RADG 61 6 2 MC SDK customization process cece eee 63 6 3 Motor control library project confidential distribution 65 6 4 Motor control application project 1 0 eee ee 66 6 5 Yser project AA case caer ndesaue secure E E he es a S 67 66 LEDULPRNEO aa Banawa aaa bleed mid ee keep O KENA GS NAPAG Saree 69 7 MC application programming interface API 73 7 1 MClnterfaceClass aa baa the heenbe KA KALA pow ceriuttewnere 73 7 1 1 User commands 0 000 E EEE 74 7 1 2 Buffer
19. D converter is configured to sample the correct channels Table 3 3 shunt current reading used resources single drive F103 LD MD Adv timer DMA ISR ADC ADC Note master slave DMA is used to enable ADC injected TIM1 DMA1 CH5 None ADC1 ADC2 conversion external trigger Disabling is performed by software Doc ID 18458 Rev 3 35 127 Current sampling UM1052 36 127 Table 4 3 shunt current reading used resources single drive or dual drive F103 HD F2xx F4xx Adv timer DMA ISR ADC Note Used by first or second motor configured in ADC1 three shunt according to user selection TIMI None TIMI UP ADC2 ADC is used in time sharing Trigger selection is performed in the TIM UP ISR Used by first or second motor configured in ADC1 three shunt according to user selection TIM Nene TIM8 UP ADC2 ADC is used in time sharing Trigger selection is performed in the TIM_UP ISR Tuning delay parameters and sampling stator currents in three shunt resistor topology Figure 24 shows one of the three inverter legs with the related shunt resistor Figure 24 Inverter leg and shunt resistor position To indirectly measure the phase current I it is possible to read the voltage V provided that the current flows through the shunt resistor R It is possible to demonstrate that whatever the direction of current I it always flows through the resistor
20. F2xx F4xx 36 Current through the shunt resistor 0 0 000 cette 40 single shunt current reading used resources single drive F103 F100 LD MD 41 single shunt current reading used resources single or dual drive F103HD F2xx F4xx 42 ICS current reading used resources single drive F103 LD MD 47 ICS current reading used resources single or dual drive F103 HD F2xx F4xx 47 File StruCtUre na eet ed NG ee KP ee NG NG KABAN he 60 Project configurations AA eee 69 Integrating the MC Interface in a user project 0c cece eee 77 MC application preemption priorities c cee ee 80 Priority configuration overall non FreeRTOS 0 cece eee 80 Priority configuration overall FreeRTOS 000000 eee 80 Joystick actions and conventions 0 00 eee 83 List of controls used in the LCD demonstration program eee eee 85 DGPINITIONS esse mad ee Bee eee he eee ga eee SEE BG we ee NewS 87 List of DAC variables 0 0 00 cece 88 DAC variables related to each state observer sensor when two state observer speed sensors are selected 89 Fault conditions liSl ocea a maseaan ee de ee be PG ee a ee 90 Control groups tae 93 Speed controller page controls eee 93 Control groups 2 6 ae 95 Current controller page controls 0 2 20 00 c cece 96 Control groups 1 2 6 ae 98 Sensorless tuning STO amp
21. Measured motor electrical angle This variable is related to a real sensor encoder Hall configured as a primary or auxiliary speed sensor MC PROTOCOL REG MEAS RO Measured motor speed This variable is related to a real sensor F ALPHA T SPEED encoder Hall configured as a primary or auxiliary speed MC PROTOCOL REG OBS EL Observed mer electrical angle This variable is related to a state pena observer PLL sensor configured as a primary or auxiliary speed 7 sensor MC_PROTOCOL_REG_OBS_ROT Observed motor speed This variable is related to a state pues observer PLL sensor configured as a primary or auxiliary speed Gi sensor MC PROTOCOL REG OBS LA Observed alpha component of motor phase s cumani expressed in TPHA alpha beta reference This variable is related to a state observer PLL sensor configured as a primary or auxiliary speed sensor MC PROTOCOL REG OBS _I B Observed beta component of motor phase s current expressed in HTA alpha beta reference This variable is related to a state observer PLL sensor configured as a primary or auxiliary speed sensor rv Iph mponent of motor BE i MC PROTOCOL REG OBS BEM Observed alpha component of moto MF expressed in alpha beta reference This variable is related to a state observer PLL sensor configured as a primary or auxiliary speed sensor MC PROTOCOL F BETA Do EG OBS BEM Observed beta compon
22. Measured phase A motor current MC_PROTOCOL_REG_I_B Measured phase B motor current MC PROTOCOL REG I ALPHA Measured alpha component of motor phase s current expressed in alpha beta reference MC PROTOCOL REG I BETA Measured beta component of motor phase s current expressed in alpha beta reference MC_PROTOCOL_REG_I_Q MC PROTOCOL REG I D Measured q component of motor phase s current expressed in q d reference Measured d component of motor phase s current expressed in q d reference MC PROTOCOL REG I Q REF Target q component of motor phase s current expressed in q d reference MC PROTOCOL REG I D REF Target d component of motor phase s current expressed in q d reference Doc ID 18458 Rev 3 109 127 User Interface class overview UM1052 Table 32 Description of relevant DAC variables continued Variable name MC_PROTOCOL_REG_V_Q Description Forced q component of motor phase s voltage expressed in q d reference MC_PROTOCOL_REG_V_D Forced d component of motor phase s voltage expressed in q d reference MC_PROTOCOL_REG_V_ALPHA Forced alpha component of motor phase s voltage expressed in alpha beta reference MC_PROTOCOL_REG_V_BETA Forced beta component of motor phase s voltage expressed in alpha beta reference MC PROTOCOL REG MEAS EL ANGLE
23. Motor Control SDK MC SDK customization process This section explains how to customize the Motor Control SDK using IAR EWARM IDE so that it corresponds to the user s current system 1 Using the ST MC Workbench GUI enter the page information to reflect the system configuration and parameters This part of the process ends by generating the h parameters in the correct directory Installation folder System amp Drive Params 2 Ifthe system is configured to enable the LCD User Interface download the specific firmware See Section 6 6 LCD UI project Doc ID 18458 Rev 3 63 127 Working environment UM1052 Note 64 127 3 Open one of the MC workspaces FreeRTOS based Installation folder FreeRTOS Project EWARM STM32F 10x RTOS Workspace eww Installation folder FreeRTOS Project EWARM STM32F2xx_RTOS_Workspace eww Non FreeRTOS Installation folder Project EWARM STM32F 10x Workspace eww Installation folder Project EWARM STM32F2xx_Workspace eww Installation folder Project EWARM STM32F4xx_Workspace eww 4 Enable the user project callout 1 in Figure 56 User project and select the appropriate option from the combo box callout 2 in Figure 56 User project If none of the boards displayed is in use read Section 6 5 User project to perform a correct configuration 5 Press F8 to batch build the entire workspace The dialog box shown in Figure 53 Workspace batch build appears 6 Select a batch command callo
24. Option selection Selects options Figure 67 Current controller page PMSM FOC ver 3 0 Current controllers Measured speed 1500 rpm Start Stop If the firmware is configured as a dual motor drive it is possible to know which is the active motor reading the label at the bottom of the page To change the active motor the motor field in the configuration and debug page has to be changed field 1 in Figure 67 Table 25 lists the actions that can be performed using this page Doc ID 18458 Rev 3 95 127 LCD user interface UM1052 Table 25 Current controller page controls Control reference field 1 in Figure 67 Description To set and read the I reference for the active motor This control is read only if the active motor is set in speed mode otherwise it can be modified The lq reference is expressed in s16A To convert current expressed in Amps to current expressed in digits use the formula Current s16A Current Amp 65536 Rshunt Aop Vdd micro lg reference field 2 in Figure 67 To set and read the ly reference for the active motor This control is usually read only if the active motor is set in speed mode otherwise it can be modified The reference is expressed in digits It is also possible to configure the firmware to have an lg reference editable even in speed mode To convert current expressed in Amps to current expressed in s16A it is possible to use t
25. PLL page controls 000 ccc eee eee eee 98 Control groups 0 0 eee 100 Sensorless tuning STO amp PLL page controls 0 00 e eee eee 101 User interface configuration Sensor codes 0c eee eee 105 User interface configuration CFG bit descriptions 0 00 02 cee eee 106 Description of relevant DAC variables 000 cece eee 109 Generic starting frame 20 6 114 FRAME START byte 00000 teeta 114 FRAME_START motor bits 0000 cette eae 114 Starting frame codes 0 0 teens 115 List of error CodeS aaa 116 List of relevant motor control registers auaa auaa aaae 116 List of abbreviations 0 0 ett eee 124 Document revision history e cette 126 Doc ID 18458 Rev 3 5 127 List of figures UM1052 List of figures Figure 1 Figure 2 Figure 3 Figure 4 Figure 5 Figure 6 Figure 7 Figure 8 Figure 9 Figure 10 Figure 11 Figure 12 Figure 13 Figure 14 Figure 15 Figure 16 Figure 17 Figure 18 Figure 19 Figure 20 Figure 21 Figure 22 Figure 23 Figure 24 Figure 25 Figure 26 Figure 27 Figure 28 Figure 29 Figure 30 Figure 31 Figure 32 Figure 33 Figure 34 Figure 35 Figure 36 Figure 37 Figure 38 Figure 39 Figure 40 Figure 41 Figure 42 Figure 43 Figure 44 Figure 45 Figure 46 Figure 47 Figure 48 6 127 MC software library architecture 0 c eee 10 Mo
26. R if transistor T2 is switched on and T1 is switched off This implies that in order to properly reconstruct the current flowing through one of the inverter legs it is necessary to properly synchronize the conversion start with the generated PWM signals This also means that current reading cannot be performed on a phase where the duty cycle applied to the low side transistor is either null or very short As discussed in Section 4 1 to reconstruct the currents flowing through a generic three phase load it is sufficient to simultaneously sample only two out of three currents the third one being computed from the relation given in Section 4 1 Thus depending on the space vector sector the A D conversion of voltage V will be performed only on the two phases where the duty cycles applied to the low side switches are the highest Looking at Figure 19 Doc ID 18458 Rev 3 1677 UM1052 Current sampling Note you can deduct that in sectors 1 and 6 the voltage on phase A shunt resistor can be discarded likewise in sectors 2 and 3 for phase B and in sectors 4 and 5 for phase C Moreover in order to properly synchronize the two stator current reading A D conversions it is necessary to distinguish between the different situations that can occur depending on PWM frequency and applied duty cycles The explanations below refer to space vector sector 4 They can be applied in the same manner to the other sectors Case 1 Duty cycle ap
27. TUNING PAGE TUNING PAGE PAGE PAGE PAGE PLL CORDIC RIGHT LEFT MS19355V1 Each page is composed of a set of controls Table 17 presents the list of controls used in the LCD demonstration program You can navigate between focusable controls in the page by pressing the UP and DOWN joystick The focused control is highlighted with a blue rectangle When focused you can activate the control by pressing JOYSEL Doc ID 18458 Rev 3 ky UM1052 LCD user interface 8 2 1 4 Table 17 List of controls used in the LCD demonstration program Control name and Example Description Manages a numerical value It can be read only or read write A read only edit box has a gray background and cannot be focusable A read write edit box has a white background and can be focusable When a read write edit box is focused it can be activated for modification by Edit box pressing JOYSEL An activated read write edit box has a green background and its value can be modified pressing and or keeping pressed the UP DOWN joystick rpm When the UP joystick is kept pressed the value is increased with a constant acceleration When the DOWN joystick is kept pressed the value is decreased with a constant acceleration The new value is set to the motor control related object instantaneously when the value changes unless otherwise mentioned in this manual The control can be deactivated by pressing JOYSEL again Manages a li
28. W write Regld Table 38 List of relevant motor control registers Register name Type Payload length Access Reg Id Target motor u8 2 RW 0x00 Flags u32 5 0x01 Status u8 2 R 0x02 Control mode u8 2 RW 0x03 Speed reference s32 5 R 0x04 Speed KP u16 3 RW 0x05 Speed KI u16 3 RW 0x06 Speed KD u16 3 RW 0x07 Torque reference Iq s16 3 RW 0x08 Torque KP u16 3 RW 0x09 Torque KI u16 3 RW Ox0A 116 127 Doc ID 18458 Rev 3 KYT UM1052 Serial communication class overview 4 Table 38 List of relevant motor control registers continued Register name Type Payload length Access Reg Id Torque KD u16 3 RW Ox0B Flux reference lg s16 3 RW Ox0C Flux KP u16 3 RW 0x1D Flux Kl u16 3 RW Ox1E Flux KD u16 3 RW Ox1F Observer C1 s16 3 RW 0x10 Observer C2 s16 3 RW 0x11 Cordic Observer C1 s16 3 RW 0x12 Cordic Observer C2 s16 3 RW 0x13 PLL KI u16 3 RW 0x14 PLL KP u16 3 RW 0x15 Flux weakening KP u16 3 RW 0x16 Flux weakening KI u16 3 RW 0x17 Flux weakening BUS Voltage allowed percentage u16 3 RW 0x18 reference Bus Voltage u16 3 0x19 Heatsink temperature u16 3 0x1A Motor power u16 3 0x1B DAC Out 1 u8 2 RW Ox1C DAC Out 2 u8 2 RW 0x1D Speed measured 32 5 R Ox1E Torque measured Iq s16 3 Ox1F Flux measured Iq s16 3 R 0x20 Flux weakening BUS Voltage allowed percentage u16 3 R 0x21 measured Revup st
29. achieved by means of what is usually called a synchronous frame CR PWM PMSM maximum torque per ampere MTPA control The electromagnetic torque equation of an IPMSM is T 3000 3 Ai Bo BUT Lii e 5P ds qs 7 qslds E Pl dslds qs mlqs 7 qs qslas 3 3 Sg Te 5P Pmlas 5PLas Laslaslas The first term in this expression is the PM excitation torque The second term is the so called reluctance torque which represents an additional component due to the intrinsic salient magnetic structure Besides since Lg lt L typically reluctance and excitation torques have the same direction only if igs lt 0 Considering the torque equation it can be pointed out that the current components igs and igs both have a direct influence on the torque generation The aim of the MTPA maximum torque per ampere control is to calculate the reference currents igs las which maximize the ratio between produced electromagnetic torque and copper losses under the following condition 2 2 l igs las In Therefore given a set of motor parameters pole pairs direct and quadrature inductances Lg and Lg magnets flux linkage nominal current the MTPA trajectory is identified as the locus Of igs ids pairs that minimizes the current consumption for each required torque see Figure 8 This feature can be activated through correct settings in h parameter files generated by the ST MC Workbench GUI used to initialize the MC Application
30. application e Demonstration user project Figure 1 MC software library architecture Demo User Project Demo FreeRTOS User Project StartMotor MC API StopMotor C ExecSpeedRamp CMCTuning MCTasks ra Aa croc Yc o a Wow ee am Ye Library FreeRTOS MS19303V1 From the bottom layer upwards The STM32Fxxx standard peripherals library is an independent firmware package that contains a collection of routines data structures and macros that cover the features of the STM32 peripherals Version 3 5 0 of STM32F 10x standard peripheral library is included in the MC SDK version 1 0 0 is available for STM32F2xx and for STM32F4xx The STM32F xxx standard peripherals library is CMSIS and MISRA C compliant Visit www st com stm32 for complete documentation The motor control library is a wide collection of classes that describe the functionality of elements involved in motor control such as speed sensors current sensors algorithms Each class has an interface which is a list of methods applicable to objects of that class Figure 2 is a conceptual representation of the library Two distributions of the motor control library are available e Web distribution available free of charge at www st com where the motor control library is provided as a compiled lib file e Confidential distribution available free of charge on demand by contacting your nearest ST sales office or
31. configuration CH3 DMA1_CH4 DMA1_CH4_TC Rep gt 1 Doc ID 18458 Rev 3 41 127 Current sampling UM1052 Table 7 single shunt current reading used resources single or dual drive F103HD F2xx F4xx Adv timer AUX DMA ISR ADC Note timer Option1 used by the first motor configured TIM1 TIM5 DMA2 CH1 TIM1 UP ADC3 in single shunt or the CH4 DMA1 CH4 DMA1_CH4_TC Rep gt 1 second motor when the first is not single shunt Option1 used by the second motor mme Tma OMAL_CHS TiMe_UP Pe aaa CH3 DMA2_CH2 DMA2 CH2 TC Rep gt 1 motor is alen configured in single shunt Option2 used by the first motor configured TIM8 TIM5 DMA2 CH1 TIM8 UP ADC3 in single shunt or by CH4 DMA2 CH2 DMA2_CH2_TC Rep gt 1 the second motor when the first is not single shunt Option2 used by the second motor figured in single TiM4 DMA1_CHS5 TIM1_UP oe TIM1 ADC1 shunt when the first CH3 DMA1 CH4 DMA1_CH4_TC Reps1 motoris als configured in single shunt Using F103HD F2xx F4xx in single drive it is possible to choose between option 1 and option 2 Table 7 resources are allocated or saved accordingly Figure 32 Boundary between two space vector sectors r F 1 i lj 1 i i Shunt Shunt AG IC ai15137 Similarly for a low modulation index the three duty cycles assume approximately the same v
32. done at Fs 1 Ts frequency pa ki x Ta K In theory the higher the sampling rate the better the regulation In practice you must keep in mind that The related CPU load will grow accordingly e For speed regulation there is absolutely no need to have a sampling time lower than the refresh rate of the speed information fed back by the external sensors this becomes especially true when Hall sensors are used while driving the motor at low speed A priori determination of flux and torque current PI gains This section provides a criterion for the computation of the initial values of the torque flux PI parameters K and Kp This criterion is also used by the ST MC Workbench in its computation To calculate these starting values it is required to know the electrical characteristics of the motor stator resistance R and inductance L and the electrical characteristics of the hardware shunt resistor Rshunt current sense amplification network Ag and the direct current bus voltage VpysDC The derivative action of the controller is not considered using this method Figure 14 shows the PI controller block diagram used for torque or flux regulation Figure 14 Block diagram of PI controller Target Voltage current command Measured current aii4850 For this analysis the motor electrical characteristics are assumed to be isotropic with respect to the q and d axes It is assumed that the torque and
33. oMCT MC NULL Select the motor drives UI_SelectMC oUI 2 Set the MC PROTOCOL REG SPEED KP register value UI SetReg oUI MC PROTOCOL REG SPEED KP lt Desired values A similar sequence can be used to get values from MC objects replacing the UI SetReg method with the Ul GetReg method Execute an MC command Ul ExecCmd The list of available MC commands MC PROTOCOL CMD xxx is exported by UserlnterfaceClass h See STM32 FOC PMSM FW library v3 2 developer Help file chm For example to execute a Start command to the first motor Obtain the oMCT and oMCI object through GetMCIList GetMCTList functions exported by MCTasks h The oMCI and oMCT are two arrays of objects CMCI oMCI MC_NUM CMCT oMCT MC_NUM GetMCIList oMCI GeMCTList OMCT Instantiate and initialize a CUI object oUI UI_NewObject MC NULL UI Init oUI MC NUM oMCI oMCT MC NULL Doc ID 18458 Rev 3 ky UM1052 User Interface class overview Note 9 2 Note 3 Select the motor drives UI SelectMC oUI 2 4 Provide a command for example Start motor UI ExecCmd oUI MC PROTOCOL CMD START MOTOR e Execute torque and speed ramps set the current reference and set or get revup data See STM32 FOC PMSM FW library v3_2 developer Help file chm e Execute specific functions dedicated to CDAC objects See Section 9 7 DAC manager class CDACx_UI All derived classes of CUI act on MCI and MCT objects thr
34. s magnetic field They provide a logic output which is O or 1 depending on the magnetic pole they face and thus on the rotor position Typically in a three phase PM motor three Hall effect sensors are used to feed back the rotor position information They are usually mechanically displaced by either 120 or 60 and the presented firmware library was designed to support both possibilities As shown in Figure 48 the typical waveforms can be visualized at the sensor outputs in case of 60 and 120 displaced Hall sensors More particularly Figure 48 refers to an electrical period that is one mechanical revolution in case of one pole pair motor ky Doc ID 18458 Rev 3 55 127 Rotor position speed feedback UM1052 56 127 Figure 48 60 and 120 displaced Hall sensor output waveforms 3 sensors 120 3 sensors 60 ai14826 Because the rotor position information they provide is absolute there is no need for any initial rotor prepositioning Particular attention must be paid however when connecting the sensors to the proper microcontroller inputs This software library assumes that the positive rolling direction is the rolling direction of a machine that is fed with a three phase system of positive sequence In this case to work correctly the software library expects the Hall sensor signal transitions to be in the sequence shown in Figure 48 for both 60 and 120 displaced Hall sensors For these reas
35. string containing the Firmware version and Release version It is separated by the 0x0 character that will be sent back to PC after a get firmware info command Manage the serial communication timeout After the first byte has been received by the microcontroller a timeout timer is started If all the expected bytes of the frame sequence have been received the timeout counter is stopped On the contrary if the timeout occurs the timeout event must be handled calling Exec UI IRQ Handler UI_IRQ_USART 3 0 These functions are performed inside UITask c The time base for serial communication timeout also uses Timebase c or RTOS by default DAC manager class CDACx Ul There are three derivatives of CUI that implement DAC management DAC UI DAC_UI DAC peripheral used as the output DACRCTIMER UI DACT_UI General purpose timer used and output together with an RC filter DACSPI UI DACS_UI SPI peripheral used as the output The data can be codified by an oscilloscope for instance For each DAC class the number of channels two is defined The DAC variables are predefined motor control variables or user defined variables that can be output by DAC objects DAC variables can be any MC PROTOCOL REG xxx value exported by UserlnterfaceClass h Table 32 describes a set of relevant motor control quantities Table 32 Description of relevant DAC variables Variable name Description MC_PROTOCOL_REG_I_A
36. that ST MC Workbench GUI and IDE are left open The following sections provide more information about each of the three projects of the MC workspace Doc ID 18458 Rev 3 ky UM1052 Working environment 6 3 Motor control library project confidential distribution The MC Library project available only in confidential distribution is a collection of classes related to motor control functionalities 1 Toaccess the project using IAR IDE open an MC workspace FreeRTOS based or not and click the name in the workspace tabbed browser callout1 Figure 54 Remember that IDE toolbars and commands always refer to the active project the one whose tab is engraved Figure 54 displays the logical arrangement of files on the left hand side similar arrangement is in folders For each class the MC Library subfolder sre contains the source code private contains its private definitions interface contains its public interface obj contains compiled object files of certain classes Figure 54 MC Library project IAR Embedded Workbench IDE File Edit View Project Simulator Tools Window Help Doug SINGLE DRIVE 39 40 brief Uncomment define MC CLASS DYNAMIC to er allocation on the contrary static mec that case the pool size of each class i 1a ilink MLibraryConf Static Size definitions 1 af 45 define MC CLASS DYNAMIC es 3 i 47 ifdef MC_LIBRARY_DUAL K MCLibraryConf h 48 R stm32f1 Dx
37. the application to enhance the reliability by redundancy and so on Refer to Section 5 1 Sensorless algorithm Section 5 2 Hall sensor feedback processing and Section 5 3 Encoder sensor feedback processing for further details The selection of speed position feedback can be performed through correct settings in the h parameter files generated by the ST MC Workbench GUI used to initialize the MC Application during its boot stage Sensorless algorithm This firmware library provides a complete solution for sensorless detection of rotor position speed feedback which is based on the state observer theory The implemented algorithm is applicable to both SM PM and IPM synchronous motors as explained in 5 Appendix Section A 1 References A theoretical and experimental comparison between the implemented rotor flux observer and a classical VI estimator 6 Appendix Section A 1 References has pointed out the observer s advantage which turns out to be a clearly reduced dependence on the stator resistance variation and an overall robustness in terms of parameter variations A state observer in control theory is a system that provides an estimation of the internal state of a real system given its input and output measurement In our case the internal states of the motor are the back emfs and the phase currents while the input and output quantities supplied are the phase voltages and measured currents respectively see Figure 11 D
38. x Device ST STM32F4xx Include Libraries STM32F4xx_StdPeriph_Driver ince MC library interface common MC Application interface System amp Drive Params Project include libraries if in single motor drive Select the proper libraries according to the microcontroller family MC Library Compiled Exe MC_Library_STM32F10x_single_drive a MC Library Compiled Exe MC_Library_STM32F2xx_single_drive a MC Library Compiled Exe MC_Library_STM32F4xx_single_drive a if in dual motor drive Select the proper libraries according to the microcontroller family MC Library Compiled Exe MC_Library_STM32F10x_dual_drive a MC Library Compiled Exe MC_Library_STM32F2xx_dual_drive a MC Library Compiled Exe MC_Library_STM32F4xx_dual_drive a Select the proper libraries according to the microcontroller family MC Application Compiled Exe MC_Application_STM32F10x a MC Application Compiled Exe MC_Application_STM32F2xx a MC Application Compiled Exe MC_Application_STM32F4xx a is the path where the MC Library IDE project is located is the path where the MC Application IDE project is located define symbols USE_STDPERIPH_DRIVER STM32F10X MD STM32F10X HD STM32F10X MD VL STM32F2XX STM32F40X according to STM32 part Set the STM32 NVIC Nested Vectored Interrupt Controller priority grou
39. 1 Prescaler active 30 bd 30 31 gt lt Fr Transfer from preload to active on next capture update event The prescaler modification is done in the capture interrupt taking advantage of the buffered registers the new prescaler value is taken into account only on the next capture event by the hardware without disturbing the measurement Further details are provided in the flowchart shown in Figure 46 which summarizes the actions taken into the TIMx_IRQHandler Doc ID 18458 Rev 3 53 127 Rotor position speed feedback UM1052 5 2 2 54 127 Figure 46 TIMx_IRQHandler flowchart HALL_IRQHandler Capture event Update OVF event v Read present state OVF Counter Extract spinning direction Extract electrical angle OVF Counter gt HALL MAX OV ERFLOWS There were overflows Re compute capture Yes Captured value Store capture Store capture is too low prescaler direction prescaler direction Store capture prescalondirectan Prescaler Prescaler Time out TRUE MS19555V1 Electrical angle extrapolation implementation As shown in Figure 46 the speed measurement is not the only task performed in TIMx_IRQHandler As well as the speed measurement the high to low or low to high transition of the XORed signal also gives the possibility of synchronizing the softw
40. 1 MC software development kit architecture 10 2 Documentation architecture eee ee 13 2 1 Where to find the information you need eee eee eee 13 2 2 Related documents 0002 eee eee 14 3 Overview of the FOC and other implemented algorithms 15 3 1 Introduction to the PMSM FOC drive 00 0 eee eee 15 3 2 PM motor structures 3 daa Kas BEA GA AGA aakel woes teas BETA EES 17 3 3 PMSM fundamental equations 0 0 00 ee 18 3 3 1 SM PMSM field oriented control FOC 0002 cee eee 19 3 4 PMSM maximum torque per ampere MTPA control 20 3 5 Feed forward current regulation 0 e eee ee 22 3 6 Flux weakening control 0 cece eee ee 23 3 7 PID regulator theoretical background 0 00 e eee ee eee 25 3 7 1 Regulator sampling time setting 0 ce eee eee 25 3 8 A priori determination of flux and torque current PI gains 26 3 9 Space vector PWM implementation 0000 eee eee 28 3 10 Detailed explanation about reference frame transformations 30 3 10 1 Circle limitation 2 0 0 0 eee eae 32 4 Current sampling naaa kk ee sede e eee ieee nes da AA 34 4 1 Current sampling in three shunt topology aa 34 4 1 1 Tuning delay parameters and sampling stator currents in three shunt resistor topology 36 4 2 Current sampling in single shunt topology aaa 40 4
41. 27 Figure 17 Block diagram of closed loop system after pole zero cancellation Target current ai14853 The parameters used inside the PI algorithms must be integer numbers thus calculated KI and KP values have to be expressed as fractions dividend divisor Moreover the PI algorithm does not include the PI sampling time T in the computation of the integral part See the following formula t n n kj e t dt kT Se kT K X e kT 0 k 1 k 1 Since the integral part of the controller is computed as a sum of successive errors it is required to include T in the K computation The final formula can be expressed as Kp Le 7S KpDIV Kina do NPV AB AB VBus DC Rehunt Aop 3 3 Usually it is possible to set ap the bandwidth of the closed loop system to 1500 rad s to obtain a good trade off between dynamic response and sensitivity to the measurement noise Space vector PWM implementation Figure 18 shows the stator voltage components V and Vg while Figure 79 illustrates the corresponding PWM for each of the six space vector sectors Doc ID 18458 Rev 3 ky UM1052 Overview of the FOC and other implemented algorithms Figure 18 V and Vg stator voltage components 0 5 0 3 0 1 0 5 Vbeta Valfa Figure 19 SVPWM phase voltage waveforms 100 90 80 70 60 50 40 30 20 10 0 0 60 120 180 240 300 360
42. 3210B EVAL hex STM32100B EVAL hex STM3210E EVAL hex STEVAL IHM022V1 hex STM322xG EVAL hex STM32F2xx dual hex STM324xG EVAL hex STM32F4xx_dual hex from Installation folder LCD Project Hex 6 Program the downloading to Flash memory After the code has been successfully flashed set up the board to reboot from the user Flash memory and reset the microcontroller Doc ID 18458 Rev 3 ky UM1052 Working environment 7 To test that the LCD UI has been correctly flashed for both option 1 and 2 open build and download the user project see Section 6 2 MC SDK customization process and Section 6 5 User project 8 From the debug session run the firmware F5 and then after a while stop debugging CTRL Shift D The LCD UI has not been properly flashed if the program is stalled in a trap inside UlTask c line 133 Figure 57 Flash loader wizard screen Flash Loader Demonstrator x z El Download to device Download from file TIONSLCD Project HEX STM3210B_EVAL_SINGLEDRIVE hed ka Erase necessary pages No Erase C Global Erase h 8013800 v I Jump to the user program F Optimize Remove some FFs IV Verify after download I Apply option bytes Upload from device r Upload to file Enable Disable Flash protection il Edit option bytes Back MS19348V1 Option 3 This option is intended for users who want to modify the LCD UI code 1 Use an ID
43. 5088 ron rpm Id ref Ramp duration p Exec simultanous Ramps Release 1 6 MS19358V1 e To set the ly reference field 3 in Figure 65 This is related to motor 1 This control is only present if motor 1 is set in torque mode ly reference is expressed in s16A In this page the current references are always expressed as Cartesian coordinates Iq lq Note To convert current expressed in Amps to current expressed in digit it is possible to use the following formula Current s16A Current Amp 65536 Rshunt Aop Vdd micro Set the final motor speed of a speed ramp field 6 in Figure 65 This is related to motor 2 This control is only present if motor 2 is set in speed mode Motor speed is expressed in RPM The value set in this control is not automatically sent to the motor Doc ID 18458 Rev 3 91 127 LCD user interface UM1052 8 2 5 92 127 control related object but it is used to perform a speed ramp execution See the Exec button description field 9 in Figure 65 Set the duration of a speed ramp field 8 in Figure 65 This is related to motor 2 This control is only present if motor 2 is set in speed mode The duration is expressed in milliseconds The value set in this control is not automatically sent to the motor control related object but it is used to perform a speed ramp execution See the Exec button description field 9 in Figure 65 It is possible to set a duration value of O to program a ramp wit
44. 52 5 2 5 2 1 52 127 Hall sensor feedback processing Speed measurement implementation Thanks to the STM32 general purpose timer TIMx features it is very simple to interface the microcontroller with three Hall sensors When the TI1S bit in the TIMx_CR2 register is set the three signals on the TIMx_CH1 TIMx_CH2 and TIMx CH3 pins are XORed and the resulting signal is input to the logic performing TIMx input capture Thus the speed measurement is converted into the period measurement of a square wave with a frequency six times higher than the real electrical frequency The only exception is that the rolling direction which is not extractable from the XORed signal is performed by a direct access to the three Hall sensor outputs Rolling direction identification As shown in Figure 43 it is possible to associate any of Hall sensor output combinations with a state whose number is obtainable by considering H3 H2 H1 as a three digit binary number H3 is the most significant bit Figure 43 Hall sensors output state correspondence 3 sensors 120 3 sensors 60 State5 gt State1 gt State 3 5 State1 gt State3 gt State 7 gt State2 gt State6 gt State 4 gt Stateb gt State4 gt State 0 gt ai14846 Consequently it is possible to reconstruct the rolling direction of the rotor by comparing the present state with the previous one In the presence of a positive sp
45. 7 DAC manager class CDACx Ul 9 8 Using the DAC manager a 9 9 How to configure the user defined DAC variables 10 Serial communication class overview 10 1 Set register frame 0a 10 2 Get register frame 0 eee eee 10 3 Execute command frame 0 10 4 Execute ramp frame a 10 5 Getrevup data frame eee 10 6 Setrevup data frame eee 10 7 Setcurrent references frame 11 Document conventions aan Appendix A Additional information A 1 References ce eee eee 12 Revision history cece eee eee 4 127 Doc ID 18458 Rev 3 UM1052 List of tables List of tables Table 1 Table 2 Table 3 Table 4 Table 5 Table 6 Table 7 Table 8 Table 9 Table 10 Table 11 Table 12 Table 13 Table 14 Table 15 Table 16 Table 17 Table 18 Table 19 Table 20 Table 21 Table 22 Table 23 Table 24 Table 25 Table 26 Table 27 Table 28 Table 29 Table 30 Table 31 Table 32 Table 33 Table 34 Table 35 Table 36 Table 37 Table 38 Table 39 Table 40 AA pn nnna dure dae VM ee dea adie ch a Gia Ba ne aa dh oa ane 17 Sector identification 2 0 0 een e nets 30 3 shunt current reading used resources single drive F103 LD MD 35 3 shunt current reading used resources single drive or dual drive F103 HD
46. ACChannelConfig CUI o0oDAC DAC CH1 MC PROTOCOL In this case the motor current la and Ib will be put in output Periodically update the DAC output by calling the Ul DACExec method that performs the update of DAC channel into the physical output bu EG EG Pu These functions are performed inside UlTask c For the update the DAC outputs also use stm32fxxx MC it c Doc ID 18458 Rev 3 111 127 User Interface class overview UM1052 9 9 112 127 How to configure the user defined DAC variables Two user defined DAC variables can be put as analog outputs These variables enable custom debugging on variables that change in real time and monitor the correlation with relevant motor control values such as real measured currents You cannot put more than two DAC variables motor control predefined or user defined in the output To store the user value in a user defined DAC variable follow these steps 1 Obtain the oDAC DAC objects through the GetDAC function exported by UITask h 2 Call the Ul DACSetUserChannelValue method of a CUI object to update the content of a user defined DAC variable UI DACSetUserChannelValue oDAC 0 hUser1 In this case the hUser1 value is set in the first 0 user defined DAC variable 3 Configure user defined DAC variables to be put in output using the UI DACChannelConfig method or put the user defined
47. C bus voltage measurement is used to convert voltage commands into voltage applied to motor phases Doc ID 18458 Rev 3 49 127 Rotor position speed feedback UM1052 50 127 Figure 41 General sensorless algorithm block diagram a a PAA J ghunts Va b c lap s The observed states are compared for consistency with the real system via the phase currents and the result is used to adjust the model through a gain vector K1 K2 The motor back emfs are defined as ex Pn pacos pot e5 PnP SIN pat As can be seen they hold information about the rotor angle Then back emfs are fed to a block which is able to reconstruct the rotor electrical angle and speed This latter block can be a PLL Phase Locked Loop or a CORDIC COordinate Rotation Digital Computer depending on the user s choice In addition the module processes the output data and by doing so implements a safety feature that detects locked rotor condition or malfunctioning Figure 42 shows a scope capture taken while the motor is running in field oriented control positive rolling direction The yellow and the red waveforms C1 C2 are respectively the observed back emfs alpha and beta The blue square wave C3 is a signal coming from a Hall sensor cell placed on the a axis The green sinewave is current i C4 In confidential distribution the classes that implement the sensorless algorithm are provided as compiled o
48. E to rebuild and download the LCD UI 2 After parameter files have been generated by the GUI to set the single dual drive configuration using IAR EWARM IDE V6 30 open the workspace located in Installation folder LCD Project EWARM UI Project eww ky Doc ID 18458 Rev 3 71 127 Working environment UM1052 Note 72 127 Figure 58 LCD UI project 1 IAR Embedded Workbench IDE File Edit View Project Tools Window Help Dos x yappa STM32100B EYAL 34 define HardFault Handler OxABCDEF12 Files aia TAR dependent ayan T 3 lependen a KO STMIZIOUB EVA L Pr i 37extern void iar data init3 void i 38 EWARMv5 39 void main void LCD Interface E 40 FR Set evel Drive a 41 y Don t run application from here Just flas O STM32_EV 42 STMFC 43 UI Library Interface aa see c i 45 E Output rief This function is used as entry poir 46 param void List of imported functions 47 retval void List of exported functions 48 47 49 void const LCDI_Entry void ImportedFunctior y Ul Project gt Ln 41 Col 11 Ready MS19351V1 Figure 58 displays the logical arrangement of files left hand side and actions that may be needed for set up and download Three project configurations are provided for the STM32F10x Workspace callout 1 Figure 58 one for each STM32 evaluation board that has been tested with th
49. Enabling or disabling the link between I and ly controllers KP and KI gains is performed by checking or unchecking the link check box field 9 in Figure 67 It is possible to change the current reference variables from Cartesian coordinates Iq Id to polar coordinates Amp Eps Figure 68 using the input combo box field 10 in Figure 67 If polar coordinates are selected the current controller page is modified as in Figure 68 a Doc ID 18458 Rev 3 UM1052 LCD user interface Figure 68 Current controller page with polar coordinates PMSM FOC ver 3 0 Current controllers Set points Amp Iq Measured speed E500 rom Start Stop KP 1000 KI 500 The Amp field field 1 in Figure 68 is used to set and read the current reference amplitude for the active motor This control is read only if the active motor is set in speed mode otherwise it is editable Amplitude reference is expressed in digits e The Eps field field 2 in Figure 68 is used to set and read the current reference phase for the active motor This control is read only if the active motor is set in speed mode otherwise it is editable The phase is expressed in degrees Figure 69 Iq Id component versus Amp Eps component T Iq Nu q Amp Eps MS19362V1 8 2 7 Sensorless tuning STO amp PLL page This page is present only if the firmware is configured to use a state observer STO plus a PLL sensor set as a prim
50. HB ld LB ld HB CRC Data Acknowledgment frame No errors BOARD gt OxFO 0x00 CRC OR Set current references frame PC gt oxa 0x04 lq LB lq HB ld LB ld HB CRC Error Acknowledgment frame BOARD gt OxFF 0x1 ERROR_CODE CRC roe The Master sends the requested current references The payload length is always 4 lq LB and Iq_HB are the requested new references expressed in digit respectively the least significant byte and the most significant byte ld LB and Id_HB are the requested new ly reference expressed in digit respectively the least significant byte and the most significant byte Note To convert current expressed in Amps to current expressed in digit it is possible to use the formula Current digit Current Amp x65536xR_ShuntxA_OP j Vdd micro The Acknowledgment frame can be of two types e Data Acknowledgment frame if the operation has been successfully completed The payload of this Data Acknowledgment frame will be zero e Error Acknowledgment frame if the operation has not been successfully completed by the firmware The payload of this Error Acknowledgment frame is always 1 The list of error codes is shown in Table 37 List of error codes Doc ID 18458 Rev 3 123 127 Document conventions UM1052 11 Document conventions Table 39 List of abbreviations Abbreviation Definition AC Alternate Current API Application Programm
51. IN PRODUCTS OR SYSTEMS WHERE FAILURE OR MALFUNCTION MAY RESULT IN PERSONAL INJURY DEATH OR SEVERE PROPERTY OR ENVIRONMENTAL DAMAGE ST PRODUCTS WHICH ARE NOT SPECIFIED AS AUTOMOTIVE GRADE MAY ONLY BE USED IN AUTOMOTIVE APPLICATIONS AT USER S OWN RISK Resale of ST products with provisions different from the statements and or technical features set forth in this document shall immediately void any warranty granted by ST for the ST product or service described herein and shall not create or extend in any manner whatsoever any liability of ST ST and the ST logo are trademarks or registered trademarks of ST in various countries Information in this document supersedes and replaces all information previously supplied The ST logo is a registered trademark of STMicroelectronics All other names are the property of their respective owners 2012 STMicroelectronics All rights reserved STMicroelectronics group of companies Australia Belgium Brazil Canada China Czech Republic Finland France Germany Hong Kong India Israel Italy Japan Malaysia Malta Morocco Philippines Singapore Spain Sweden Switzerland United Kingdom United States of America www st com ky Doc ID 18458 Rev 3 127 127
52. L sensor is configured as a primary or auxiliary speed sensor and it is relative to this sensor Obs El Ang CR Observed motor electrical angle This variable is present only if a state observer plus CORDIC sensor is configured as a primary or auxiliary speed sensor and it is relative to this sensor Obs Rot Spd CR Observed motor speed This variable is present only if a state observer plus CORDIC sensor is configured as a primary or auxiliary speed sensor and it is relative to this sensor Obs lalpha CR 4 Observed alpha component of motor phase s current expressed in alpha beta reference This variable is present only if a state observer plus CORDIC sensor is configured as a primary or auxiliary speed sensor and it is relative to this sensor Doc ID 18458 Rev 3 89 127 LCD user interface UM1052 90 127 Table 20 DAC variables related to each state observer sensor when two state observer speed sensors are selected continued Variable name Obs Ibeta CR Description Observed beta component of motor phase s current expressed in alpha beta reference This variable is present only if a state observer plus CORDIC sensor is configured as a primary or auxiliary speed sensor and it is relative to this sensor Obs Bemf a CR Observed alpha component of motor BEMF expressed in alpha beta reference This variable is present only if a state observer plus CORDIC senso
53. M Doc ID 18458 Rev 3 ky UM1052 Current sampling For the conditions showed in Figure 31 there are two pairs subperiods II and VI during which igpunt is equal to ic subperiods Ill and V during which igpunt is equal to i4 Under these conditions it is possible to reconstruct the three phase current through the motor from the sampled values ais ighynt Measured during subperiod Ill or V ici ishunt Measured during subperiod Il or VI ig iy ic Figure 31 Single shunt current reading I il HI IY V VI VII ai15136 If the stator voltage demand vector lies in the boundary space between two space vector sectors two out of the three duty cycles will assume approximately the same value In this case the seven subperiods are reduced to five subperiods Under these conditions only one current can be sampled the other two cannot be reconstructed This means that it is not possible to sense both currents during the same PWM period when the imposed voltage demand vector falls in the gray area of the space vector diagram represented in Figure 31 Single shunt current reading Table 6 single shunt current reading used resources single drive F103 F100 LD MD Adv timer Aux timer DMA ISR ADC Note TIM1 TIM3 DMA1 CH93 TIM1 UP ADC1 LD device configuration CH4 DMA1_CH4 DMA1 CH4 TC Rep gt 1 RC DAC cannot be used DMA1_CH5 TIM1 UP TIM1 TIMA U ADC1 MD device
54. M32F2xx or STM32F4xx Speed feedback Sensorless B EMF State Observer PLL rotor speed angle computation from B EMF Sensorless B EMF State Observer CORDIC rotor angle computation from B EMF 60 or 120 displaced Hall sensors decoding rising falling edge responsiveness Quadrature incremental encoder For each motor dual simultaneous speed feedback processing On the fly speed sensor switching capability Current sampling methods Two ICS only when running on STM32F103xx or STM32F2xx or STM32F4xx Single common DC link shunt resistor ST patented Three shunt resistors placed on the bottom of the three inverter legs only when running on STM32F103xx or STM32F2xx or STM32F 4xx Flux weakening algorithm to attain higher than rated motor speed optional Feed Forward high performance current regulation algorithm optional SVPWM generation Centered PWM pattern type Adjustable PWM frequency Torque control mode speed control mode on the fly switching capability Brake strategies optional Dissipative DC link brake resistor handling Motor phases short circuiting with optional hardware over current protection disabling When running Dual FOC any combination of the above mentioned speed feedback current sampling control mode optional algorithm Optimized I PMSM and SM PMSM drive Programmable speed ramps parameters duration and final target Programmable torque r
55. MCI 0 and oMCT 0 refer to Motor 1 oMCI 1 and oMCT 1 refer to Motor2 GetMCIList function to be called if necessary after MCboot returns a pointer to the CMCI oMCI vector instantiated by MCboot The vector has a length equal to the number of motor drives GetMCTList function to be called if necessary after MCboot returns a pointer to the CMCT oMCT vector instantiated by MCboot The vector has a length equal to the number of motor drives MCinterfaceClass Commands of the MCInterfaceClass can be grouped in two different typologies User commands commands that become active as soon as they are called If the state machine is not in the expected state the command is discarded and the method returns FALSE The user must manage this by resending the command until it is accepted or by discarding the command e Buffered commands commands that do not execute instantaneously but are stored in a buffer and become active when the state machine is in a specified state These commands are not discarded until they become active unless other delayed commands are sent to the buffer thus clearing the previous one Doc ID 18458 Rev 3 73 127 MC application programming interface API UM1052 Detailed information can be found in the Motor Control Application source documentation doxygen compiled html Help file 7 1 1 User commands bool MCI StartMotor CMCI oMCI starts the motor It is mandatory to set the targe
56. MisraCompliance h i 49 defgroup MCLibraryConf Static Static compilati E stm32f1 0x h r Ta La LI Output 1 Files a MC Library SINGLE DRIYE ka C Libra 54 rief PIRegulatorClass pool dimension 55 56 define MAX PI NUM l0u nal lt j gt Overview MC Application MC Library UsetProject Fo jo Ready MS19349V1 2 Depending on system characteristics configure the project for single motor drive or dual motor drive by selecting SINGLE_DRIVE or DUAL_DRIVE from the combo box callout 2 Figure 54 3 Classes of the MC Library can create new objects resorting to dynamic memory allocation or statically allotting them from predefined size pools This is a matter of preference Modify the header file MCLibraryConf h to choose the allocation callout 3 Figure 54 To activate the dynamic allocation uncomment line 45 define MC_CLASS_DYNAMIC To activate the static allocation comment this line 4 Once all these settings have been configured and checked build the library callout 4 Figure 54 If SINGLE DRIVE was selected the proper output file among the following MC Library STM32F10x single drive a MC Library STM32F2xx single drive a MC Library STM32F4xx single drive a is created in Installation folder Project EWARM MC Library Compiled Exe or Installation folder FreeRTOS Project EWARM MC Library Compiled Exe Doc ID 18458 Rev 3 65 127 Working environment UM1052
57. PLL KI Rev up tuning Duration 700 Elms Stage F Speed 0 Birpm Iq 20000 Measured speed 1500 rpm Start Stop Motor selected 1 M519363V1 If the firmware is configured as a dual motor drive it is possible to know which is the active motor by reading the label at the bottom of the page To change the active motor change the motor field in the configuration and debug page Table 27 lists the actions that can be performed using this page Table 27 Sensorless tuning STO amp PLL page controls Control Description To modify the G1 gain parameter in real time The value set in this control is G1 automatically sent to the motor control related object allowing the run time field 1 in Figure 70 tuning of the state observer object This value is proportional to the K1 observer gain and is equal to C2 STO object parameter See STM32 FOC PMSM FW library v3 O developer Help file chm G2 field 2 in Figure 70 To modify the G2 gain parameter in real time The value set in this control is automatically sent to the motor control related object allowing the run time tuning of the state observer object This value is proportional to the K2 observer gain and is equal to C4 STO object parameter See STM32 FOC PMSM FW library v3 O developer Help file chm PLL KP field 3 in Figure 70 To set the proportional coefficient of the PLL for the active motor The value set in this control is automa
58. Section 6 5 built lib files are linked with the user project in order to generate the file that can be downloaded into the microcontroller memory for execution Figure 52 provides an overview of the IAR EWARM IDE workspace located in the Installation folder Project EWARM STM32F10x_Workspace eww configured for dual FOC drive The following sections provide details on this The equivalent workspace based on FreeRTOS is located in the Installation folder FreeRTOS Project EWARM STM32F10x_RTOS_Workspace eww Figure 52 Workspace overview JE IAR Embedded Workbench IDE File Edit View Project Tools Window Help UserProject STEVAL IHMO22V1 Ol g e Files POPI PESIAR SESS EEL AAE EEEE file main c AG RELEASE author IMS Systems Lab and Techni version Betal 0 date 03 Feb 2011 15 57 brief Main program body KALIIRRALLLLLERRRALLLEEERRRRLLEEER EL MC Library SINGLE DRIVE UserProject STEYAL IHM022V1 i copy THE PRESENT FIRMWARE WHICH IS FOR G WITH CODING INFORMATION REGARDING T TIME AS A RESULT SIMICROELECTRONI DIRECT INDIRECT OR CONSEQUENTIAL D FROM THE CONTENT OF SUCH FIRMWARE A CODING INFORMATION CONTAINED HEREIN Hoh dh hh hh OH lt h2 gt lt center gt ecopy COPYRIGHT 2011 S m 2 Ln 1 Col 1 N Overview MC Application MC Library UserProject MS19319V1 Section 6 2 MC SDK customization process provides the procedure for customizing the
59. Ts 2 and ADuty 4 p5DT TptTs In this case it is no longer possible to sample the currents during phase A low side switch on Anyway the two currents can be sampled between phase B low side switch on and phase A high side switch off The choice was made to sample the currents Ts us before of phase A high side switch off see Figure 28 Doc ID 18458 Rev 3 ky UM1052 Current sampling Figure 28 ADutyA lt DT Ty Ts 2 and ADuty4 p5DT TptTs 1 ADuty 2 i Low side phase A i FAN High side phase A e Low side phase B tor rt High side phase B j iho ay NT TiTgg H t id EN NA Current feedback phase B 1 R we es angkat HE ampling sta i lar 4 Current feedback phaseC Lh iA Sampling end Space available for sampling i o lt a Case 4 ADuty lt DT Ty Ts 2 and ADuty 3 lt DT TR Ts In this case the duty cycle applied to phase A is so short that no current sampling can be performed between the two low side commutations If the difference in duty cycles between phase B and A is not long enough to allow the A D conversions to be performed between phase B low side switch on and phase A high side switch off it is impossible to sample the currents See Figure 29 To avoid this condition it is necessary to reduce the maximum modulation index or to decrease the PWM frequency Figure 29 ADuty lt DT Ty Ts 2 and ADuty 3 lt DT Tpt Ts ADuty 5 Low side phase A a a Hig
60. Tursini A Scafati A Guerriero R Petrella Extended torque speed region sensor less control of interior permanent magnet synchronous motors ACEMP 07 pp 647 652 2007 6 M Cacciato G Scarcella G Scelba S M Bill D Costanzo A Cucuccio Comparison of Low Cost Implementation Sensorless Schemes in Vector Controlled Adjustable Speed Drives SPEEDAM 08 Applied Power Electronics Conference and Exposition 2008 Doc ID 18458 Rev 3 125 127 Revision history UM1052 12 126 127 Revision history Table 40 Document revision history Date Revision Changes 18 Apr 2011 1 Initial release Added references for web and confidential distributions of STM32 2t Mayapa 2 FOC PMSM SDK v3 0 The product range has been expanded from STM32F103xx or STM32F100xx to STM32F103xx STM32F100xx STM32F2xx STM32F4xx This has 28 Mar 2012 3 impacted several sections among them the Introduction Section 7 3 How to create a user project that interacts with the MC API Section 10 Serial communication class overview and Section 10 1 Set register frame a Doc ID 18458 Rev 3 UM1052 Please Read Carefully Information in this document is provided solely in connection with ST products STMicroelectronics NV and its subsidiaries ST reserve the right to make changes corrections modifications or improvements to this document and the products and services described herein at any
61. ach other by more than Dyin This is represented in Figure 35 Figure 35 Regular region ai15140 The voltage demand vector lies in a region called Boundary 1 when two duty cycles differ from each other by less than Dn and the third is greater than the other two and differs from them by more than Dyin This is represented in Figure 36 Doc ID 18458 Rev 3 ky UM1052 Current sampling Figure 36 Boundary 1 ai15141 The voltage demand vector lies in a region called Boundary 2 when two duty cycles differ from each other by less than Dyn and the third is smaller than the other two and differs from them by more than Dyjn This is represented in Figure 37 Figure 37 Boundary 2 ai15142 The voltage demand vector lies in a region called Boundary 3 when the three PWM signals differ from each other by less than Dyn This is represented in Figure 38 ky Doc ID 18458 Rev 3 45 127 Current sampling UM1052 4 3 46 127 Figure 38 Boundary 3 ma KO HG ai15143 If the voltage demand vector lies in Boundary 1 or Boundary 2 region a distortion must be introduced in the related PWM signal phases to sample the motor phase current An ST patented technique for current sampling in the Boundary regions has been implemented in the firmware Please contact your nearest ST sales office or suppo
62. active motor by reading the label at the bottom of the page To change the active motor change the motor field in the configuration and debug page field 1 Figure 66 Table 23 lists the actions that can be performed using this page Table 23 Speed controller page controls Control Target speed field 1 in Figure 66 Description This sets the final motor speed of a speed ramp for the active motor The motor speed is expressed in RPM The value set in this control is not automatically sent to the motor control related object but it is used to perform a speed ramp execution See the Exec button description field 3 in Figure 66 Ramp duration field 2 in Figure 66 This sets the duration of a speed ramp for the active motor The duration is expressed in milliseconds The value set in this control is not automatically sent to the motor control related object but it is used to perform a speed ramp execution See the description of the exec button field 3 in Figure 66 It is possible to set a duration value of 0 to program a ramp with an instantaneous change in the speed reference from the current speed to the final motor speed field 1 in Figure 66 sa Doc ID 18458 Rev 3 93 127 LCD user interface UM1052 Table 23 Speed controller page controls continued Control Exec button field 3 in Figure 66 Description This executes a speed ramp for the active motor The execute spee
63. age numbers u8 2 R 0x22 Maximum application speed u32 5 R Ox3F Minimum application speed u32 5 R 0x40 lq reference in speed mode s16 3 W 0x41 Expected BEMF level PLL s16 3 R 0x42 Observed BEMF level PLL s16 3 R 0x43 Coes baka s16 3 R 0x44 co level s16 3 R 0x45 Doc ID 18458 Rev 3 117 127 Serial communication class overview UM1052 Table 38 List of relevant motor control registers continued Register name Type Payload length Access Reg Id Feedforward 1Q 32 5 RW 0x46 Feedforward 1D 32 5 RW 0x47 Feedforward 2 32 5 RW 0x48 Feedforward VQ s16 3 R 0x49 Feedforward VD s16 3 0x4A Feedforward VQ PI out s16 3 0x4B Feedforward VD PI out s16 3 Ox4C Ramp final speed s32 5 RW 0x5B Ramp duration u16 3 RW Ox5C 10 2 118 127 Get register frame The get register frame Figure 81 is sent by the master to read a value from a relevant motor control variable Figure 81 Get register frame PC BOARD OR PC BOARD Get register frame gt 0x02 0x1 REG_ID CRC Data Acknowledgment frame No errors gt OxFO PAYLOAD_LENGTH REG LB REG_HB Get register frame gt 0x02 0x1 REG_ID CRC Error Acknowledgment frame gl OxFF 0x1 ERROR CODE CRC CRC MS19374V1 Payload length is always 1 Reg Id indicates the register to be queried See Table 38 The Acknowledgment frame c
64. al This is the default setting when DAC output is enabled using the STM32F100 Value line or STM32F103xE High density or STM32F2xx or STM32F4xx devices Doc ID 18458 Rev 3 ky UM1052 User Interface class overview Figure 74 User interface block diagram MCP Init CDACS UI M519367V1 The DAC manager CDACT Ul manages DAC outputs using a virtual DAC implemented with a filtered PWM output generated by a timer peripheral This is the default setting when a DAC output is enabled using the STM32F103xB Medium density device CDACS UI does not perform a digital to analog conversion but sends the output variables through an SPI communication 9 1 User interface class CUI This class implements the interaction between the user and the motor control library MC Library using the motor control application layer MC Application In particular the CUI object is to be used to read or write relevant motor control quantities for example Electrical torque Motor speed and to execute the motor control commands exported by the MC Application for example Start motor execute speed or torque ramps customize the startup Any object of this class must be linked to a derived class object The user interface class requires the following steps implemented inside the UI Init method e Defines the number of motor drives managed by user interface objects The implementation of the MC firmware manages at most two motor drives Th
65. alue In this case the seven subperiods are reduced to three subperiods During all three 42 127 Doc ID 18458 Rev 3 1577 UM1052 Current sampling subperiods the current through the shunt resistor is zero This means that it is not possible to sense any current when the imposed voltage vector falls in the gray area of the space vector diagram represented in Figure 33 Figure 33 Low modulation index i Wl hy K 1 I V3 Vo E a V4 a 1 I I K T3 I H I ighunt 1 i i i i i V5 Ve 4 2 1 Definition of the noise parameter and boundary zone TRise is the time required for the data to become stable in the ADC channel after the power device has been switched on or off The duration of the ADC sampling is called the sampling time Tmin is the minimum time required to perform the sampling and Tain TRise Sampling time dead time Dm is the value of Tm expressed in duty cycle percent It is related to the PWM frequency as follows Dyin Tmin x Fpwm x 100 Doc ID 18458 Rev 3 43 127 Current sampling UM1052 44 127 Figure 34 Definition of noise parameters Ts switched off To switched on iShunt i Sampling time o End of noise start of sampling e End of sampling start of conversion ai15139 The voltage demand vector lies in a region called the Regular region when the three duty cycles calculated by space vector modulation inside a PWM pattern differ from e
66. amps parameters duration and final target Real time fine tuning of PID regulators Sensorless algorithm Flux weakening algorithm Start up procedure in case of sensorless Fault conditions management Over current Over voltage Over temperature Speed feedback reliability error FOC algorithm execution overrun Doc ID 18458 Rev 3 ky UM1052 e Easy customization of options pin out assignments CPU clock frequency through ST MC Workbench GUI C language code Compliant with MISRA C 2004 rules Conforms strictly with ISO ANSI Object oriented programming architecture User project and interface features Two options are available FreeRTOS based user project for STM32 performance line only e SysTick timer easy scheduler based user project Available User Interface options and combinations of them LCD C programmed plus joystick Serial communication protocol e Drive system variables logging displaying via SPI DAC DAC peripheral is not present in the STM32F103xx in this case RC filtered PWM signal option is available ky Doc ID 18458 Rev 3 9 127 MC software development kit architecture UM1052 10 127 MC software development kit architecture Figure 1 shows the system architecture The Motor Control SDK has a four layer structure STM32Fxxx standard peripherals library and CMSIS library e Motor control library e Motor control
67. an be of two types e Data Acknowledgment frame if the operation has been successfully completed In this case the returned value is embedded in the Data Acknowledgment frame The size of the payload depends on Reg Id and is equal to the Payload length present in Table 38 minus 1 The value is returned starting from the least significant byte to the most significant byte e Error Acknowledgment frame if the operation has not been successfully completed by the firmware The payload of this Error Acknowledgment frame is always 1 The list of error codes is shown in Table 37 Doc ID 18458 Rev 3 UM1052 Serial communication class overview 10 3 sa Execute command frame The execute command frame Figure 82 is sent by the master to the motor control firmware to request the execution of a specific command Figure 82 Execute command frame Execute command frame PC 0x1 COMMAND D cRC Data Acknowledgment frame No errors BOARD OxFO 0x00 CRC OR Execute command frame PC 0x03 0x1 COMMAND ID CRC Error Acknowledgment frame BOARD OxFF 0x1 ERROR CODE CRC MS19375V1 Payload length is always 1 Command Id indicates the requested command See Table The Acknowledgment frame can be of two types e Data Acknowledgment frame if the operation has been successfully completed In this case the returned value embedded in the Data Acknowledgment frame is an ech
68. are variable that contains the present electrical angle The synchronization is performed avoiding abrupt changes in the measured electrical angles In order to do this the difference between the expected electrical angle computed from the last speed measurement and the real electrical angle coming from the Hall sensor signals see Figure 66 is computed The new speed measurement is adjusted with this information in order to compensate for the difference As can be seen in Figure 47 any Hall sensor transition gives very precise information about the rotor position Doc ID 18458 Rev 3 ky UM1052 Rotor position speed feedback Figure 47 Hall sensor output transitions 3 sensors 120 ai14847 Furthermore the utilisation of the FOC algorithm implies the need for a good and constant rotor position accuracy including between two consecutive falling edges of the XORed signal which occurs each 60 electrical degrees For this reason it is clearly necessary to interpolate rotor electrical angle information For this purpose the latest available speed measurement see Section 7 4 Measurement units in dpp format adjusted as described above is added to the present electrical angle software variable value any time the FOC algorithm is executed See Section 7 4 Measurement units 5 2 3 Setting up the system when using Hall effect sensors Hall effect sensors are devices capable of sensing the polarity of the rotor
69. ary or auxiliary speed and position sensor If the state observer sensor is set as an auxiliary speed and position sensor the AUX label will be shown near the page title See field 9 in Figure 70 To enter the sensorless tuning page press the RIGHT joystick from the current controller page It is possible to navigate between focusable controls present in the page by pressing the UP DOWN joystick The sensorless tuning page shown in Figure 70 is used to send commands and get a feedback related to a state observer plus a PLL object from the active motor There are three groups of control in this page ky Doc ID 18458 Rev 3 97 127 LCD user interface UM1052 98 127 Table 26 Control groups Control group State observer tuning Description Used to configure the parameters of the state observer object in real time Rev up tuning gains Used to change the start up related parameters in real time This group is only present if the state observer plus PLL sensor is selected as the primary speed and position sensor Measured speed with start stop button Composed of two controls that are also present in the current controller page and in the sensorless tuning page this provides a fast access to the measured speed and to the motor start stop function Figure 70 Sensorless tuning STO amp PLL page PMSM FOC ver 3 0 Sensorless tuning STO amp PLL AUX G1 A G2 J 1500 1500 PLL KP
70. ass overview UM1052 e Error Acknowledgment frame if the operation has not been successfully completed by the firmware The payload of this Error Acknowledgment frame is always 1 The list of error codes is shown in Table 37 Table 37 List of error codes Error code Description 0x01 BAD Frame ID The Frame ID has not been recognized by the firmware 0x02 Write on read only The master wants to write on a read only register 0x03 Read not allowed The value cannot be read 0x04 Bad target drive The target motor is not supported by the firmware 0x05 Out of range The value used in the frame is outside the range expected by the firmware 0x07 Bad command ID The command ID has not been recognized 0x08 Overrun error The frame has not been received correctly because the transmission speed is too fast Timeout error The frame has not been received correctly and a timeout occurs 0x09 This kind of error usually occurs when the frame is not correct or is not correctly recognized by the firmware Ox0A Bad CRC The computed CRC is not equal to the received CRC byte 0x0B Bad target drive The target motor is not supported by the firmware Table 38 indicates the following for each of the relevant motor control registers Type u8 8 bit unsigned u16 16 bit unsigned u32 32 bit unsigned s16 16 bit signed 32 32 bit signed e Payload length in Set register frame allowed access R read
71. ation user project that can be used as a run time command launcher a fine tuning or monitoring tool screens and functionalities are detailed in Section 8 This option can be selected via a setting in the ST MC Workbench GUI see Section 6 2 In this case the LCD UI software single or dual drive configuration is downloaded in the microcontroller in a reserved area located at the end of the addressable Flash memory Doc ID 18458 Rev 3 69 127 Working environment UM1052 70 127 Unless you erase it or change the configuration from single drive to dual drive or vice versa there is no need to download it again Even disabling the option with the GUI does not mean you need to flash it again when you reenable the option The latest STM3210B MCKIT Motor Control starter kits come with the Motor Control Library and the LCD UI software single drive pre flashed If your Motor Control kit has a version of Motor Control Library lower than 3 0 or if you do not have the Motor Control kit but you are using one of the evaluation boards mentioned or if you are changing the configuration single dual you should follow one of the three procedures explained below to download the LCD UI Option 1 Option 1 is straightforward and the preferred one 1 Use the IAR Embedded Workbench IDE to download the LCD pre compiled file opening the proper MC workspaces as explained in section 6 1 2 Select the proper User project as explained in section 6 5
72. atory for a sensorless configuration The sequence is split into several stages a duration final speed and final torque actually l reference can be set up for each stage See Figure 86 Figure 85 Get revup data frame Get revup data frame DataAcknowledgment frame No errors BOARD sl oxFo x06 FS x FTLB FT HB DR LB DR HB CRC OR Get revup data frame PC _ gt 0x08 0x01 Stage CRC Error Acknowledgment frame BOARD gt oxFF 0x1 ERROR CODE CRC The master indicates the requested stage parameter sending the stage number in the starting frame payload Payload length is always 1 The Acknowledgment frame can be of two types e Data Acknowledgment frame if the operation has been successfully completed In this case the returned values are embedded in the Data Acknowledgment frame The payload size of this Data Acknowledgment frame is always 8 The four bytes FS x represent the final speed of the selected stage expressed in rpm from the least significant byte to the most significant byte FT LB and FT HB represent the final torque of the selected stage expressed in digit respectively the least significant byte and the most significant byte Note To convert current expressed in Amps to current expressed in digit use the formula Current digit Current Amp x65536xR ShuntxA OP J V_ DD Micro DR LB and DR HB represent the duration of the selected stage expressed in milliseconds respectively the least signifi
73. bject files The source code is available free of charge from ST on request Please contact your nearest ST sales office A priori determination of state observer gains The computation of the initial values of gains K1 and K2 is based on the placement of the state observer eigenvalues The required motor parameters are r motor winding resistance L motor winding inductance T sampling time of the sensorless algorithm which coincides with FOC and stator currents sampling Doc ID 18458 Rev 3 ky UM1052 Rotor position speed feedback The motor model eigenvalues could be calculated as ET e 1 1 Ls e 1 The observer eigenvalues are placed with 1obs 7 20bs 7 BABU Typically as a rule of the thumb set f 4 The initial values of K1 and K2 could be calculated as r S1obs t E20bs 2 _s 3b K L 1 210bs E20bs P10bs 20bs 2 2 CU e This procedure is followed by the ST MC Workbench GUI to calculate proper state observer gains It is also possible to modify these values using other criteria or after fine tuning Figure 42 PMSM back emfs detected by the sensorless state observer algorithm C1 b emf alpha C2 b emf beta C3 Hall 1 C4 phase A measured current ION o More information on how to fine tune parameters to make the firmware suit the motor can be found in Section 8 LCD user interface Doc ID 18458 Rev 3 51 127 Rotor position speed feedback UM10
74. cant byte and the most significant byte e Error Acknowledgment frame if the operation has not been successfully completed by the firmware The payload of this Error Acknowledgment frame is always 1 The list of error codes is shown in Table 37 List of error codes Doc ID 18458 Rev 3 121 127 Serial communication class overview UM1052 Figure 86 Revup sequence Duration Stage time Stage 9 10 6 Set revup data frame The set revup data frame Figure 87 is sent by the master to modify the revup parameters Revup sequence is a set of commands performed by the motor control firmware to drive the motor from zero speed up to run condition It is mandatory for a sensorless configuration The sequence is split into several stages For each stage a duration final speed and final torque actually reference can be set up See Figure 86 Figure 87 Set revup data frame Set revup data frame a PC gt _0x09 0x09 stage Fs i FT_LB FT_HB DR LB DR HB CRC Data Acknowledgment frame No errors BOARD gt oxo 0x00 CRC OR Setrevup data frame PC gt 0x09 0x09 stage Fs FTB FT_HB DR LB DR HB CRC Error Acknowledgment frame BOARD OxFF 0x1 ERROR_CODE CRC Ms19380V1 The Master sends the requested stage parameter The payload length is always 9 Stage is the re
75. ch as serial communication protocol drive variables monitoring through DAC SPI HID Doc ID 18458 Rev 3 11 127 MC software development kit architecture UM1052 12 127 generically called UI library and a description of LCD screens can be found in Section 8 LCD user interface and Section 9 User Interface class overview Figure 3 Example scenario User Application Layer MC Application MC Library STM 32Fxxx Std Lib MS19302V2 ta Doc ID 18458 Rev 3 UM1052 Documentation architecture 2 Documentation architecture 2 1 Where to find the information you need Technical information about the MC SDK is organized by topic The following is a list of the documents that are available and the subjects they cover This manual UM1052 STM32F103xx STM32F100xx STM32F2xx or STM32F4xx permanent magnet synchronous motor single dual FOC software library V3 2 This provides the following Features Architecture Workspace Customization processes Overview of algorithms implemented FOC current sensors speed sensors MC API Demonstrative user project Demonstrative LCD user interface Demonstrative serial communication protocol Advanced developers guide for STM32F 103xx STM32F 100xx STM32F2xx or STM32F4xx PMSM single dual FOC library UM1053 This provides the following Object oriented programming style used for developing the MC library Descr
76. cific h files that are generated by the ST MC Workbench GUI or manually edited It coordinates them continuously for the purpose of accomplishing received commands by means of tasks of proper priority and periodicity More information about the MCA can be found in Section 7 MC application programming interface API and details on tasks and implemented algorithms in the Advanced developers guide for STM32F 103xx STM32F 100xx PMSM single dual FOC library UM1053 At the user level a user project has been implemented to demonstrate how to interact with the MC API to successfully achieve the execution of commands Depending on definable options the user project can act as a Human Interface Device using a joystick buttons and LCD screens as a command launcher through a serial communication protocol as a data logging displaying utility or as a tuning tool Two versions of this user project are available One is based on FreeRTOS the other is not The demonstration user project can be dismantled and replaced by the user application layer or quite easily integrated as shown in Figure 3 The user application layer uses the STM32Fxxx Standard Library for its own purposes and sends commands directly to the MC API while the serial communication interface provided in the demonstration user project dispatches commands received from the outer world to the MC API More information about the modules integrated with the demonstration user project su
77. cribed in Section 7 3 How to create a user project that interacts with the MC API is in place The MCA grants the user layer the execution of a set of commands named the MC Application Programming Interface MC API The MC API is divided into two sections and is included in two files MCInterfaceClass h and MCTuningClass h MCInterfaceClass details in Section 7 1 holds the principal high level commands while MC TuningClass details in Section 7 2 acts as a gateway to set and read data to and from objects such as sensors PI controllers belonging to the Motor Control Application A third section belongs to MC API MCtask h it holds the MCboot function and tasks low medium high frequency and safety to be clocked by the user project see Section 7 3 How to create a user project that interacts with the MC API for details When the user project calls function MCboot oMCI oMCT the Motor Control Application starts its operations the booting process begins objects are created from the Motor Control Library according to the system configuration specified in parameter files and the application is up and represented by two objects oMCI and oMCT whose type is respectively CMCI and CMCT type definition can be obtained by including MClnterfaceClass h and MCTuningClass h Methods of MCInterfaceClass must be addressed to the oMCI object oMCT addresses methods of MCTuningClass oMCI and oMCT are two arrays each of two elements so that o
78. currently running on the microcontroller 0x07 Exec ramp It is used to execute a speed ramp See Section 10 4 Execute ramp frame 0x08 Get revup data It is used to retrieve the revup parameters See Section 10 5 Get revup data frame 0x09 Set revup data It is used to set the revup parameters See Section 10 6 Set revup data frame Ox0A Set current references lt is used to set the current reference See Section 10 7 Set current references frame Set register frame The set register frame Figure 80 is sent by the master to write a value into a relevant motor control variable Figure 80 Set register frame PC BOARD OR PC BOARD Set register frame 0x01 PAYLOAD LENGTH REG ID REG LB REG HB CRC Data Acknowledgment frame No errors OxFO 0x00 CRC Set register frame 0x01 PAYLOAD_LENGTH REG D REG 1B FE REG HB CRC Error Acknowledgment frame ERROR_CODE ORC ii The payload length depends on REG_ID See Table 37 Reg Id indicates the register to be updated The remaining payload contains the value to be updated starting from the least significant byte to the most significant byte The Acknowledgment frame can be of two types e Data Acknowledgment frame if the operation has been successfully completed The payload of this Data Acknowledgment frame is zero Doc ID 18458 Rev 3 115 127 Serial communication cl
79. d ramp command is sent to the motor control related object together with the final motor speed and duration presently selected field 1 and 2 in Figure 66 The execute speed ramp command performs a speed ramp from the current speed to the final motor speed in a time defined by duration The command is buffered and takes effect only when the motor becomes in RUN state Measured speed field 4 in Figure 66 This reads the motor speed for the active motor The motor speed is expressed in RPM and is a read only control Start Stop button field 5 in Figure 66 This sends a start stop command for the active motor A start stop command starts the motor if it is stopped or stops a running motor Used with a motor start a speed ramp with the last values of the final motor speed and duration is performed If a fault condition occurs at any time the motor is stopped if running and the configuration and debug page displays Speed PID gain KP field 6 in Figure 66 This sets the proportional coefficient of the speed controller for the active motor The value set in this control is automatically sent to the motor control related object allowing the run time tuning of the speed controller Speed PID gain KI field 7 in Figure 66 This sets the integral coefficient of the speed controller for the active motor The value set in this control is automatically sent to the motor control related object allowing the run time tuning of t
80. de the clocks listed in Table 12 Table 12 Integrating the MC Interface in a user project Number Function to call Periodicity Priority Preemptiveness Yes over non MC 4 TSK LowFrequencyTask 10 ms Base SPW qu X functions Equal to that set in TSK_MediumFrequencyTa ST MC Workbench sk speed regulation rate Higher than 1 Yes over 1 Yes over 1 3 TSK_SafetyTask 0 5 ms Higher than 2 optional over 2 2 include source files In the following code stands for Installation Folder For STM32F1xx projects Libraries CMSIS CM3 DeviceSupport ST STM32F10x system_stm32f1 Ox c Libraries CMSIS CM3 DeviceSupport ST STM32F10x startup XXX st artup stm32f10x YYY s XXX according to IDE YYY according to device Project stm32f10x_it c removing conditional compilation can be modified Project System amp Drive Params stm32 10x_MC_it c GUI generated according to system parameters Libraries STM32F10x_StdPeriph_Driver src standard peripheral driver sources as needed Doc ID 18458 Rev 3 77 127 MC application programming interface API UM1052 for STM32F2xx projects Libraries CMSIS CM3 NDeviceSupport 1 ST YSTM32F2xx1system stm32f2 xX C Libraries CMSIS CM3 DeviceSupport ST STM32F2xx startup XXxX st artup_stm32f2xx s XXX according to IDE Project stm32f2xx_it c removing conditional compilation can be modified
81. during its boot stage In confidential distribution the classes that implement the MTPA algorithm are provided as compiled object files The source code is available free of charge from ST on request Please contact your nearest ST sales office Doc ID 18458 Rev 3 ky UM1052 Overview of the FOC and other implemented algorithms Figure 8 MTPA trajectory ome TPA trajectory Tn Nominal Torque 0 8 Tn 06 Tn 04 Tn 0 2 Tn me lin Current limit circle Figure 9 shows the MTPA strategy implemented inside a speed control loop In this case iq output of the PI regulator is fed to the MTPA function iy is chosen by entering the linear interpolated trajectory Figure 9 8MTPA control MTPA control Doc ID 18458 Rev 3 21 127 Overview of the FOC and other implemented algorithms UM1052 3 5 22 127 In all cases by acting on the direct axis current igs the magnetic flux can be weakened so as to extend the achievable speed range As a consequence of entering this operating region the MTPA path is left see Section 3 6 Flux weakening control for details about the flux weakening strategy In conclusion by regulating the motor currents through their igs and iy components FOC manages to regulate the PMSM torque and flux Current regulation is then achieved by means of what is usually called a synchronous frame CR PWM Feed forward current regulation
82. e by pressing the LEFT joystick Pressing the KEY button at any time starts or stops the motor If you are using a dual motor control pressing KEY stops both motors Configuration and debug page Press the RIGHT joystick from the welcome page to enter the configuration and debug page To navigate between focusable controls on the page press the UP DOWN joystick Use the configuration and debug page shown in Figure 64 to e select the active motor drive field 1 in Figure 64 This control is present only for dual motor control applications This combo box enables you to select the active motor drive Once the active motor is selected it is shown in the status bar present at the bottom of the screen field 2 in Figure 64 Commands performed on or feedback from a control are only relative to the active motor e select the control mode field 3 in Figure 64 Two control modes are available speed and torque You can change the control mode from speed to torque and vice versa on the fly even if the motor is already running Doc ID 18458 Rev 3 ky UM1052 LCD user interface Figure 64 Configuration and debug page PMSM FOC ver Configuration and debug Motor Ctrl mode Power board status DC Bus volt Heatsink T 135 4 DAC Settings Under volt chi fil sma Motor selected MS19357V1 read the DC bus voltage value field 4 in Figure 64 This control is read only read the heat sink temperatu
83. e it is possible to say that FOC consists of controlling and orienting stator currents in phase and quadrature with the rotor flux This definition makes it clear that a means of measuring stator currents and the rotor angle is needed Basic information on the algorithm structure and then on the library functions is represented in Figure 4 The igs and igs current references can be selected to perform electromagnetic torque and flux control The space vector PWM block SVPWM implements an advanced modulation method that reduces current harmonics thus optimizing DC bus exploitation The current reading block allows the system to measure stator currents correctly using either cheap shunt resistors or market available isolated current Hall sensors ICS The rotor speed position feedback block allows the system to handle Hall sensor or incremental encoder signals in order to correctly acquire the rotor angular velocity or position Moreover this firmware library provides sensorless detection of rotor speed position e The PID controller blocks implement proportional integral and derivative feedback controllers current regulation e The Clarke Park Reverse Park amp Circle limitation blocks implement the mathematical transformations required by FOC Doc ID 18458 Rev 3 15 127 Overview of the FOC and other implemented algorithms UM1052 Figure 4 Basic FOC algorithm structure torque control Power converter
84. e CUI can manage N drivers Creates the link between MC tuning MCT MC interface MCI objects and user interface objects See Section 7 1 MCInterfaceClass and Section 7 2 MCTuningClass for more information about MCI and MCT Doc ID 18458 Rev 3 103 127 User Interface class overview UM1052 104 127 Configures the options of user interface objects See Section 9 2 User interface configuration Once initialized the UI object is able to Get and set the selected motor control drive that the UI operates on Ul_GetSlectedMC UI_SelectMC For example Ul SelectMC is required in the case of a dual motor control in order to select the active drive to which commands are applied for example Set Get register start motor Get and set registers UI_SetReg UI_GetReg A register is a relevant MC quantity that can be exported from or imposed to MC objects through MCI MCT The list of this quantity MC PROTOCOL REG xxx is exported by UserlnterfaceClass h See STM32 FOC PMSM FW library v3 2 developer Help file chm For example to set up the proportional term of the speed controller of the second motor Obtain the oMCT and oMCI object through GetMCIList GetMCTList functions exported by MCTasks h The oMCI and oMCT are two arrays of objects CMCI oMCI MC_NUM CMCT oMCT MC_NUM GetMCIList oMCI GeMCTList OMCT Instantiate and initialize a CUI object oUI UI_NewObject MC NULL UI Init oUI MC NUM oMCI
85. e MC SDK STM32F10B EVAL STM32F10E EVAL STEVAL IHM022V1 Two projects configurations are provided for the STM32F2xx_Workspace STM322xG EVAL STM32F2xx dual Two projects configurations are provided for the STM32F4xx Workspace STM324xG EVAL STEVAL IHM039V1 To download the LCD firmware for STM32F100B EVAL please use option 1 or option 2 This configuration affects the LCD driver and linker file selection Build the project callout 2 Figure 58 and download it to the microcontroller memory callout 3 Figure 58 To test that the LCD UI has been correctly flashed for both option 1 and 2 open build and download the user project see Section 6 2 MC SDK customization process and Section 6 5 User project From the debug session run the firmware F5 and then after a while stop debugging CTRL Shift D The LCD UI has not been properly flashed if the program is stalled in a trap in UlTask c line 133 Doc ID 18458 Rev 3 ky UM1052 MC application programming interface API 7 7 1 MC application programming interface API The Motor Control Application is built on top of the Motor Control Library provided that parameter files are generated by the ST MC workbench GUI or manually edited starting from default for the purpose of describing the system configuration auser project such as the one included in the SDK or any other one that complies with the guidelines des
86. e configured to use a position and speed sensor as a primary or auxiliary speed sensor A primary speed and position sensor is used by the FOC algorithm to drive the motor It is mandatory to configure a primary speed sensor An auxiliary speed and position sensor may be used in parallel with the primary sensor for debugging purposes It is not used by the FOC algorithm It is not mandatory to configure an auxiliary speed sensor Doc ID 18458 Rev 3 85 127 LCD user interface UM1052 8 2 2 8 2 3 86 127 The following sensors are implemented in the MC library e Hall sensor Quadrature encoder State observer plus PLL State observer plus CORDIC Welcome message After the STM32 evaluation board is powered on or reset a welcome message displays on the LCD screen to inform the user about the firmware code loaded and the version of the release See Figure 63 Figure 63 STM32 Motor Control demonstration project welcome message Paan aaa aaa aaa PMSM FOC ver 3 0 i R ang Firmware code Use the joystick to work with the application UP DOWN to move between enabled controls LEFT RIGTH to move between application pages LCD manager P SEL to interact with the selected control version en ee ee Release version ky The page shows a brief help on the operation of the demonstration program You can navigate to the next page by pressing the RIGHT joystick or go back to the previous pag
87. e currents measurement unit used in the MC API has been named s16A being MaxMeasureableCurrent 32767 1s16A A current expressed in Ampere can be easily converted to s16A using the formula _ i X 65536 e RShunt x AmplificationGain s16A PC VDD 74 4 Voltage measurement Applied phase voltage unit used in the MC API has been named s16V being MaxApplicablePhaseVoltagey 1s16V 32767 82 127 Doc ID 18458 Rev 3 ky UM1052 LCD user interface 8 LCD user interface 8 1 Running the motor control firmware using the LCD interface The STM32 motor control library V3 2 includes a demonstration program that enables you to display drive variables customize the application by changing parameters and enable and disable options in real time The user interface reference is the one present in the STM32 evaluation boards and is shown in Figure 671 Figure 61 User interface reference The interface is composed of A 320x240 pixel color LCD screen e A joystick see Table 16 for the list of joystick actions and conventions e A push button KEY button Table 16 Joystick actions and conventions Keyword User action UP Joystick pressed up DOWN Joystick pressed down LEFT Joystick pressed to the left RIGHT Joystick pressed to the right JOYSEL Joystick pushed KEY Press the KEY push button ky Doc ID 18458 Rev 3 83 127 LCD user interface UM1052 8 2 84 127
88. ed commands 2 75 7 2 MCTUNINGOC ASS 23822544 b54000 AA AA AA 76 7 3 How to create a user project that interacts with the MC API 77 7 4 Measurement units annaa annaa anaana anaa 81 7 4 1 Rotor angle sa sese edan rahata see ee be a Re m KG KLANG 81 7 4 2 Rotor speed ecr cerronrd stnn bantar eee 81 7 4 3 Current measurement 82 74 4 Voltage measurement 0 eee eee 82 8 LCD user interface ssa KG AN AA nnne 83 8 1 Running the motor control firmware using the LCD interface 83 8 2 LCD User interface structure 0c eee eee 84 8 2 1 Motor control application layer configuration speed sensor 85 8 2 2 Welcome message 2 eee 86 8 2 3 Configuration and debug page eee eee 86 8 2 4 Dual control panel page eee 91 8 2 5 Speed controller page eee 92 8 2 6 Current controller page c cee 95 8 2 7 Sensorless tuning STO amp PLL page 0a 97 Ky Doc ID 18458 Rev 3 3 127 Contents UM1052 8 2 8 Sensorless tuning STO amp CORDIC page 9 User Interface class overview 9 1 User interface class CUI 9 2 User interface configuration 9 3 LCD manager class CLCD Ul 9 4 Using the LCD manager 2 0000 9 5 Motor control protocol class CMCP Ul 9 6 Using the motor control protocol 9
89. eed the sequence must be as illustrated in Figure 43 Period measurement Although the principle for measuring a period with a timer is quite simple it is important to keep the best resolution in particular for signals such as the one under consideration that can vary with a ratio easily reaching 1 1000 In order to always have the best resolution the timer clock prescaler is constantly adjusted in the current implementation Doc ID 18458 Rev 3 ky UM1052 Rotor position speed feedback The basic principle is to speed up the timer if the captured values are too low for an example of short periods see Figure 44 and to slow it down when the timer overflows between two consecutive captures see the example of large periods in Figure 45 Figure 44 Hall sensor timer interface prescaler decrease Capture q Capture q Capture q Capture q OxFFFF Capture value is too low the prescaler is decreased Ox5500 ampaw ahas a PAPA ARE PA a a a a ee se E NA AA KA Aa 0x0000 Prescaler preload Prescaler active Transfer from preload to active on next capture update event Figure 45 Hall sensor timer interface prescaler increase Capture Capture Capture Capture OxFFFF i ovf VIN ovf Timer overflowed the i prescaler is increased 0x5500 at fen Lf AE RA KEY AP ee 0x0000 Prescaler preload 30 pa 31 31 3
90. eee 56 Doc ID 18458 Rev 3 ky UM1052 List of figures Figure 49 Figure 50 Figure 51 Figure 52 Figure 53 Figure 54 Figure 55 Figure 56 Figure 57 Figure 58 Figure 59 Figure 60 Figure 61 Figure 62 Figure 63 Figure 64 Figure 65 Figure 66 Figure 67 Figure 68 Figure 69 Figure 70 Figure 71 Figure 72 Figure 73 Figure 74 Figure 75 Figure 76 Figure 77 Figure 78 Figure 79 Figure 80 Figure 81 Figure 82 Figure 83 Figure 84 Figure 85 Figure 86 Figure 87 Figure 88 Determination of Hall electrical phase shift 0 00 0 eee 57 Encoder output signals counter operation 0 000 cee eee 58 MC workspace structure 2 6 ete 62 Workspace overvieW 0 ene 63 Workspace batch build ee ete tees 64 MC Library project anaua 65 Motor control application project 0 0 0 ce eae 66 SEP araser e ppa dom ante dh athe a ae a aha Rhee ales AG Mae ad ets 68 Flash loader wizard SCreen 1 eee 71 LCD Ul project ce eee 72 State machine flow diagram 0000 tetas 74 Radians VS SIG ness nk ei Sin nah de Meee nde Sa phe E eee ed an eg aes 81 User interface reference 2 00 eee 83 Page structure and navigation eee eee 84 STM32 Motor Control demonstration project welcome message 86 Configuration and debug page eee 87 Dual control panel page ete eee 91 Speed contr
91. ent of motor BEMF expressed in alpha beta reference This variable is related to a state observer PLL sensor configured as a primary or auxiliary speed sensor Observed motor electrical angle This variable is related to a state MC PROTOCOL REG OBS CR I ALPHA MC PROTOCOL REG OBS CR i oe O observer CORDIC sensor configured as a primary or auxiliary speed sensor MC_PROTOCOL_REG_OBS_CR_ Observed motor speed This variable is related to a state 7 ROT SPEED observer CORDIC sensor configured as a primary or auxiliary speed sensor Observed alpha component of motor phase s current expressed in alpha beta reference This variable is related to a state observer CORDIC sensor configured as a primary or auxiliary speed sensor MC_PROTOCOL_REG_OBS_CR_ I BETA 110 127 Observed beta component of motor phase s current expressed in alpha beta reference This variable is related to a state observer CORDIC sensor configured as a primary or auxiliary speed sensor a Doc ID 18458 Rev 3 UM1052 User Interface class overview Table 32 Description of relevant DAC variables continued MC_PROTOCOL_REG_OBS_CR_ alpha beta reference This variable is related to a state observer BEMF_ALPHA CORDIC sensor configured as a primary or auxiliary speed Variable name Description Observed alpha component of motor BEMF expressed in senso
92. f DAC output 0 electrical degrees are at 1 65 volt of DAC output Motor speed This is proportional to the maximum application speed 0 speed is at 1 65 volt of DAC output Maximum positive application speed is at 3 3 volt of DAC output Maximum negative application speed is at 0 volt of DAC output Observer BEMF voltage This is referenced to the maximum application speed and the voltage constant configured in the firmware Values of BEMF present at the maximum application speed are at O and 3 3 volt of DAC output sa Doc ID 18458 Rev 3 87 127 LCD user interface UM1052 88 127 Table 19 List of DAC variables Variable name Description la Measured phase A motor current Ib Measured phase B motor current lalpha Measured alpha component of motor phase s current expressed in alpha beta P reference bata Measured beta component of motor phase s current expressed in alpha beta reference lq Measured q component of motor phase s current expressed in q d reference ld Measured d component of motor phase s current expressed in q d reference lq ref Target q component of motor phase s current expressed in q d reference Id ref Target d component of motor phase s current expressed in q d reference Vq Forced q component of motor phase s voltage expressed in q d reference Vd Forced d component of motor phase s voltage expressed in q d refere
93. flux regulators have the same starting value of Kp and the same K value Doc ID 18458 Rev 3 ky UM1052 Overview of the FOC and other implemented algorithms Figure 15 shows the closed loop system in which the motor phase is modelled using the resistor inductance equivalent circuit in the locked rotor condition Block A is the proportionality constant between the software variable storing the voltage command expressed in digit and the real voltage applied to the motor phase expressed in Volt Likewise block B is the is the proportionality constant between the real current expressed in Ampere and the software variable storing the phase current expressed in digit Figure 15 Closed loop block diagram Target i e current Measured current ai14851 The transfer functions of the two blocks A and B are expressed by the following formulas Wig De R A 2 A and B Shunt op respectively 516 3 3 ana By putting Kp K Le Re it is possible to perform pole zero cancellation as described in Figure 16 Figure 16 Pole zero cancellation Target current ai1 48252 In this condition the closed loop system is brought back to a first order system and the dynamics of the system can be assigned using a proper value of K See Figure 17 Doc ID 18458 Rev 3 27 127 Overview of the FOC and other implemented algorithms UM1052 Note 3 9 28 1
94. from the configuration and debug page or from the dual control panel page if the firmware is configured in dual motor drive It is possible to navigate between focusable controls present in the page by pressing the UP DOWN joystick Doc ID 18458 Rev 3 ky UM1052 LCD user interface The speed controller page shown in Figure 66 is used to send commands and get a feedback related to the speed controller from the active motor There are four groups of control in this page listed in the table below Table 22 Control groups Control group Set point Description Used to configure and execute a speed ramp PID gains Used to change the speed controller gains in real time Flux wk tuning Used to tune the flux weakening related variables Measured speed with start stop button Composed of two controls that are also present in the current controller page and in the sensorless tuning page this provides a fast access to the measured speed and to the motor start stop function Figure 66 Speed controller page PMSM FOC ver 3 0 Speed controller Set point Target speed 1500 rpm Ramp duration J PID gains KP 1000 K L5 U Measured speed 1500 Elrpm Start Stop H Flux wk tuning BUS amp BUS 3 Motor selected 1 MS19359V1 If the firmware is configured as a dual motor drive it is possible to know which is the
95. g conversions can be performed synchronized with the counter overflow as shown in Figure 26 Figure 26 Low side Phase A duty cycle 5 DT Ty ADuty _ Counter overflow Low side phase A High side phase A BS Low side phase B Far t High side phase B 1 i j i SY r r rir i T H t H lt gt Pret i i NINA o NA Current feedback phase B i Pag i Na EEIT ere a R i ampling star Current feedback phase C Pin LA i e Sampling end EEE Space available for sampling Case 2 DT Tyt Ts 2 lt ADuty4 lt Dr Ty and ADuty 4g lt Dr TrRtTs With the increase in modulation index ADuty can have values smaller than D7 Ty Sampling synchronized with the counter overflow could be impossible In this case the two currents can still be sampled between the two phase A low side commutations but only after the counter overflow To avoid the acquisition of the noise induced on the phase B current feedback by phase A switch commutations it is required to wait for the noise to be over Ty See Figure 27 Figure 27 DT Ty Ts 2 lt ADuty4 lt Dr Tn and ADuty4p lt Dr TRtTs ADuty ADuty gt 4 Low side phase A High side phase a 1 ay Low side phase B io High side phase B 1 Current feedback phase B i e Sampling start Current feedback phaseC BG a uu Sampling end Space available for sampling Case 3 ADutyA lt DT Ty
96. h a generic three phase load it is sufficient to sample only two out of the three currents while the third one can be computed by using the above relationship The flexibility of the Root part number 1 A D converter trigger makes it possible to synchronize the two A D conversions necessary for reconstructing the stator currents flowing through the motor with the PWM reload register updates This is important because as shown in Figure 40 it is precisely during the counter overflow and underflow that the average level of current is equal to the sampled current Refer to the Root part number 1 reference manual to learn more about A D conversion triggering Doc ID 18458 Rev 3 47 127 Current sampling UM1052 Figure 40 Stator currents sampling in ICS configuration Phase current PWM Counter Compare Al Compare Bi ti KGG LowsideA LowsideB Average cu TT TIM1 Update T TIM1 Update ADCtrigger ADCtrigger MS19317V1 48 127 Doc ID 18458 Rev 3 a UM1052 Rotor position speed feedback 5 Rotor position speed feedback Section 3 1 Introduction to the PMSM FOC drive shows that rotor position speed measurement has a crucial role in PMSM field oriented control Hall sensors or encoders are broadly used in the control chain for that purpose Sensorless algorithms for rotor position speed feedback are considered very useful for various reasons to lower the overall cost of
97. h an instantaneous change in the speed reference from the current speed to the final motor speed field 6 in Figure 65 e Execute a speed ramp by pushing the Exec button field 9 in Figure 65 This is related to motor 2 This control is only present if motor 2 is set in speed mode The Exec speed ramp command is sent to the motor control related object together with the final motor speed and duration currently selected field 6 and 8 in Figure 65 The Exec speed ramp command performs a speed ramp from the current speed to the final motor speed in a time defined by duration The command is buffered and takes effect only when the motor is in RUN state To read the motor speed field 2 and 7 in Figure 65 respectively for motor 1 and motor 2 The motor speed is expressed in RPM This control is read only Send a start stop command field 4 for motor 1 field 10 for motor 2 in Figure 65 This is performed by pushing the start stop button A start stop command means start the motor if it is stopped or stop the motor if it is running If the drive is configured in speed mode when the motor starts a speed ramp with the latest values of final motor speed and duration is performed If a fault condition occurs at any time the motor is stopped if running and the start stop button is disabled When a fault condition is over the Fault ack button field 5 for motor 1 field 11 for motor 2 in Figure 65 is enabled Pushing this button acknow
98. h side phase A E 1 Low side phase B i DT High side phase B Current feedback phase B Current feedback phase C JOONE o i No space available for sampling EEE o ky Doc ID 18458 Rev 3 39 127 Current sampling UM1052 4 2 40 127 Current sampling in single shunt topology Figure 30 illustrates the single shunt topology hardware architecture Figure 30 Single shunt hardware architecture K Pa K INA IK pamp Offset al TF KG INI I P OpAmp Offset soon Voltage to be converted Voltage on A Shunt MSIs 05v1 It is possible to demonstrate that for each configuration of the low side switches the current through the shunt resistor is given in Table 5 T4 Ts and Tg assume the complementary values of T4 T and T3 respectively In Table 5 value O means that the switch is open whereas value 1 means that the switch is closed Table 5 Current through the shunt resistor T T2 T3 IShunt 0 0 0 0 0 1 1 in 0 0 1 ra 1 0 1 ig 1 0 0 Ja 1 1 0 ic 0 1 0 EE 1 1 1 0 Using the centered aligned pattern each PWM period is subdivided into 7 subperiods see Figure 31 During three subperiods I IV VII the current through the shunt resistor is zero During the other subperiods the current through the shunt resistor is symmetrical with respect to the center of the PW
99. he formula Current s16A Current Amp 65536 Rshunt Aop Vdd micro Measured lg field 3 in Figure 67 To read the measured lg for the active motor Measured lg is expressed in s16A and is a read only control lq PI D gain KP field 5 in Figure 67 To set the proportional coefficient of the I current controller for the active motor The value set in this control is automatically sent to the motor control related object allowing the run time tuning of the current controller Iq PI D gain KI field 6 in Figure 67 To set the integral coefficient of the current controller for the active motor The value set in this control is automatically sent to the motor control related object allowing the run time tuning of the current controller Id PI D gain KP field 7 in Figure 67 Id PI D gain KI field 8 in Figure 67 To set the proportional coefficient of the ly current controller for the active motor The value set in this control is automatically sent to the motor control related object allowing the run time tuning of the current controller This control is only read if the link check box is checked To set the integral coefficient of the ly current controller for the active motor The value set in this control is automatically sent to the motor control related object allowing the run time tuning of the current controller This control is only read if the link check box is checked
100. he speed controller Bus o field 8 in Figure 66 This sets the maximum percentage quantity of DC bus that can be utilized for a flux weakening operation for the active motor This control is present only if the flux weakening feature is enabled in the firmware This value should be a trade off between bus voltage exploitation a higher bus means that a greater speed can be achieved and control margin the remaining bus voltage from that value to 100 is available for the current regulation used by current regulators If it is too low the control is no longer possible The value set in this control is automatically sent to the motor control related object allowing the run time tuning of flux weakening controller The value is expressed in permillage 960 of DC bus voltage Bus o field 9 in Figure 66 Flux wk PI gain KP field 10 in Figure 66 This reads the quantity of DC bus voltage percentage presently used for the active motor and is a read only control This control is present only if the flux weakening feature is enabled in the firmware The value is actually expressed in permillage o of DC bus voltage the proportional coefficient of the flux weakening controller for the active motor This control is only present if the flux weakening feature is enabled in the firmware The value set in this control is automatically sent to the motor control related object allowing the run time tuning of the flux weakening controller
101. hich is the active motor by reading the label at the bottom of the page To change the active motor change the motor field in the configuration and debug page Table 29 lists the actions that can be performed using this page Doc ID 18458 Rev 3 ky UM1052 LCD user interface sa Table 29 Sensorless tuning STO amp PLL page controls Control Description To modify the G1 gain parameter in real time The value set in this control is G1 field 1 in automatically sent to the motor control related object allowing the run time Figure 72 tuning of the state observer object This value is proportional to the K1 observer gain and is equal to C2 STO object parameter See doxygen chm To modify the G2 gain parameter in real time The value set in this control is G2 field 2 in automatically sent to the motor control related object allowing the run time Figure 72 tuning of the state observer object This value is proportional to the K2 observer gain and is equal to C4 STO object parameter See doxygen chm Duration field 3 in Figure 72 To set the duration of the active rev up stage for the active motor The value set in this control is automatically sent to the motor control related object and becomes active on next motor start up allowing the tuning of the rev up sequence The duration is expressed in milliseconds F Speed field 4 in Figure 72 To set the final mechanical speed for the active motor and active re
102. ing Interface B EMF Back Electromotive Force CORDIC COordinate Rotation Digital Computer DAC Digital to Analog Converter DC Direct Current FOC Field Oriented Control GUI Graphical User Interface I PMSM Internal Permanent Magnet Synchronous Motor IC Integrated Circuit ICS Isolated Current Sensor IDE Integrated Development Environment MC Motor Control MCI Motor Control Interface MCT Motor Control Tuning MTPA Maximum Torque Per Ampere PID controller Proportional Integral Derivative controller PLL Phase Locked Loop PMSM Permanent Magnet Synchronous Motor SDK Software Development Kit SM PMSM Surface Mounted Permanent Magnet Synchronous Motor SV PWM Space Vector Pulse Width Modulation UI User Interface 124 127 a Doc ID 18458 Rev 3 UM1052 Additional information Appendix A Additional information A 1 References 1 P C Krause O Wasynczuk S D Sudhoff Analysis of Electric Machinery and Drive Systems Wiley IEEE Press 2002 2 T A Lipo and D W Novotny Vector Control and Dynamics of AC Drives Oxford University Press 1996 3 S Morimoto Y Takeda T Hirasa K Taniguchi Expansion of Operating Limits for Permanent Magnet Motor by Optimum Flux Weakening Conference Record of the 1989 IEEE pp 51 56 1989 4 J Kim S Sul Speed control of Interior PM Synchronous Motor Drive for the Flux Weakening Operation IEEE Trans on Industry Applications 33 pp 43 48 1997 5 M
103. ion Qiinterface Ha G pri A B i i a O private A brief This file contains interface of M La sre HALAL ALLL LL LL LLL ALLL EL LL LLL LL ELLE LEKEKES Ha CI MC Library chee interface z Ha O System amp Drive Params i THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE Ha DI Motor R WITH CODING INFORMATION REGARDING THEIR PR E E Control stage parameters h i TIME AS A RESULT SIMICROELECTRONICS SHAL B Drive parameters h i DIRECT INDIRECT OR CONSEQUENTIAL DAMAGES E E Parameters conversion h FROM THE CONTENT OF SUCH FIRMWARE AND OR T E PMSM motor parameters h CODING INFORMATION CONTAINED HEREIN IN CON L F Power stage parameters h i Ha G Motor i 7 lt h2 gt lt center gt ecopy COPYRIGHT 2011 SIMicroe author IMS Systems Lab and Technical Mar version Betal 0 date 03 Feb 2011 15 57 Kk E Control stage parameters motor 2 h E E Drive parameters motor 2 h E Parameters conversion motor 2 h b PMSM motor 2 parameters h 23 include SpeednTorqCtrlClass h E Power stage parameters motor 2 h i 24 include StateMachineClass h L PM SystemNDriveParams h 25 26 include MCInterfaceClass h MC Library UserProject paps AALAGA AGA P IRORE ADD lt m 21 Includes 22 include FOCDriveClass h Project source files are arranged in the logical folder MC Application 66 127 Doc ID 18458 Rev 3 ky UM1052 Working environment 6 5
104. iption of classes that belong to the MC library Interactions between classes Description of tasks of the MCA MC library source documentation Doxygen compiled HTML file This provides a full description of the public interface of each class of the MC library methods parameters required for object creation MC Application source documentation Doxygen compiled HTML file This provides a full description of the classes that make up the MC API User Interface source documentation Doxygen compiled HTML file This provides a full description of the classes that make up the UI Library STM32F10x STM32F2xx or STM32F4xx Standard Peripherals Library source documentation doxygen compiled html file ST MC Workbench GUI documentation This is a field guide that describes the steps and parameters required to customize the library as shown in the GUI In depth documentation about particular algorithms sensorless position speed detection flux weakening MTPA feed forward current regulation Please contact your nearest ST sales office or support team to obtain the documentation you are interested in if it was not already included in the software package you received or available on the ST web site www st com Doc ID 18458 Rev 3 13 127 Documentation architecture UM1052 2 2 14 127 Related documents Available from www arm com Cortex M3 Technical Reference Manual available from http infocenter arm com help t
105. izations as well as sensor reading decoding algorithms three shunts ST patented single DC link shunt isolated current sensors incremental encoder hall sensors and a sensorless algorithm for rotor position reconstruction When deployed with STM32F103xx High Density XL Density devices Flash memory density between 256 and 512 Kbytes 768 Kbytes and 1 Mbyte or STM32F2xx or STM32F4xx the PMSM FOC library enables simultaneous dual FOC of two different motors The library can be customized to suit user application parameters motor sensors power stage control stage pin out assignment and provides a ready to use Application Programming Interface API A user project has been implemented to demonstrate how to interact with the Motor Control API The project provides an LCD User Interface and a USART User Interface represents a convenient real time fine tuning and remote control tool for the motor control application A PC Graphical User Interface GUI the ST Motor Control Workbench allows a complete and easy customization of the PMSM FOC library In conjunction with the ST motor control starter kits a PMSM motor can be made to run in a very short time using default parameters Basic knowledge of C programming C programming for customizing the LCD User Interface PM motor drives and power inverter hardware is necessary for using the software library Doc ID 18458 Rev 3 1 127 www st com Contents UM1052 Contents
106. l equations given above yields to la las i las 2ip J3 In Park s change of variables stator currents i and ips which belong to a stationary reference frame o 8 are resolved to a reference frame synchronous with the rotor and oriented so that the d axis is aligned with the permanent magnets flux so as to obtain ig and igs Consequently with this choice of reference we have igs luCOS9 ipSino igs loSINO igcos6 On the other hand reverse Park transformation takes back stator voltage Va and vg belonging to a rotating frame synchronous and properly oriented with the rotor to a stationary reference frame so as to obtain v and vg Va Vgs 089 VgsSiNG Vg VgsSiN9 Vas COSO Doc ID 18458 Rev 3 31 127 Overview of the FOC and other implemented algorithms UM1052 3 10 1 32 127 Circle limitation As discussed above FOC allows to separately control the torque and the flux of a 3 phase permanent magnet motor After the two new values V q and v of the stator voltage producing flux and torque components of the stator current have been independently computeg by flux and torque PIDs it is necessary to saturate the magnitude of the resulting vector nk ik before passing them to the Reverse Park transformation and finally to the SVPWM block The saturation boundary is normally given by the value S16_MAX 32767 which produces the maximum output voltage magnitude corresponding to a duty c
107. lectrical frequency required by the application and motor parameters the feed forward functionality can provide a major or a poor contribution to the motor drive It is therefore recommended that you assess the resulting system performance and enable the functionality only if a valuable effect is measured This feature can be activated through proper settings in h parameter files generated by the ST MC Workbench GUI used to initialize the MCA during its boot stage In confidential distribution the classes that implement the feed forward algorithm are provided as compiled object files The source code is available free of charge from ST on request Please contact your nearest ST sales office Flux weakening control The purpose of the flux weakening functionality is to expand the operating limits of a permanent magnet motor by reaching speeds higher than rated as many applications require under operating conditions where the load is lower than rated Here the rated speed is considered to be the highest speed at which the motor can still deliver maximum torque Doc ID 18458 Rev 3 23 127 Overview of the FOC and other implemented algorithms UM1052 24 127 The magnetic flux can be weakened by acting on direct axis current iy given a motor rated current Ip such as i i if we choose to set id O then the maximum available quadrature current i is reduced Consequently in case of an SM PMSM as shown in Section 3 3 1 the
108. ledges the fault conditions that have occurred After the fault is acknowledged the start stop button becomes available again When a fault occurs and before it is acknowledged it is only possible to navigate in the Dual control panel page and the Configuration and debug page e To start or stop both motors simultaneously push the start stop both motors button field 12 in Figure 65 This button is enabled only when the motors are both in Idle state or both in RUN state If any of the motors are configured in speed mode when they start a speed ramp with the last values of final motor speed and duration is performed It is possible to stop both motors at any time by pushing the KEY button To execute simultaneous speed ramps on both motors push the Exec simultaneous ramps button field 13 in Figure 65 This button is disabled when at least one of the two motors is configured in torque mode The Exec speed ramp command is sent to both motor control objects together with related final motor speed and duration currently selected The Exec speed ramp command performs a speed ramp from the current speed to the final motor speed in a time defined by duration for each motor The commands are buffered and take effect only when the related motor is in RUN state Speed controller page This page is only present if the control mode set in ctrl mode field 3 in Figure 64 is the speed mode To enter the speed controller page press the RIGHT joystick
109. levant control variables such as PI coefficients It is also possible to monitor relevant quantities such as the speed of the motor or the bus voltage present in the board related to the controlled system The implemented communication protocol is based on a master slave architecture in which the motor control firmware running on an STM32 microcontroller is the slave The master usually a PC or another microcontroller present on a master board can start the communication at any time by sending the first communication frame to the slave The slave answers this frame with the acknowledge frame See Figure 79 Doc ID 18458 Rev 3 113 127 Serial communication class overview UM1052 114 127 Figure 79 Master slave communication architecture Starting frame Master Slave Acknowledgment frame Master MS19371V1 The implemented MCP is based on the physical layer that uses the USART communication A generic starting frame Table 33 is composed of e Frame start this byte defines the type of starting frame The least significant 5 bits indicate the frame identifier The most significant 3 bits indicate the motor selection See Table 34 e Payload_Length the total number of bytes that compose the frame payload e Payload ID first byte of the payload that contains the identifier of payload Not necessary if not required by this type of frame e Payload x the remaining payload conte
110. linked to the LCD manager by the UI_Init and are accessed only by base class methods Figure 76 LCD manager block diagram LCD Init LCD UpdatsAlil LCD UpdateMeasumd ie it MC object Bi 3_0U1 D wal LCDI_ina oul 9 g_0UL ID N LODER mdig oUI CMD LCDI U UpdateAll oU LCDI_UpdateMessured oU Call functions of that module MS19363V1 The LCD Interface is a module written in C that performs the interface between UI objects and the STMFC library When LCD Init or LCD UpdateAll are called the LCDI UpdateAll method is also called and updates all values of the LCD GUI You can also call LCDI UpdateMesured to update only ky Doc ID 18458 Rev 3 UM1052 User Interface class overview the measured quantity the quantity that changes inside the MC object itself such as measured speed measure l 9 4 Using the LCD manager To use the LCD manager you must 1 Obtain the oMCT and oMCI object through GetMCIList GetMCTList functions exported by MCTasks h The oMCI and oMCT are two arrays of objects CMCI oMCI MC_NUM CMCT oMCT MC_NUM GetMCIList oMCTI GeMCTList OMCT 2 Instantiate and initialize an CLCD_UI object CLCD UI oLCD LCD_NewObject MC NULL UI Init CUI oLCD MC NUM oMCI oMCT pUICfg LCD Init oLCD CUI oDAC s_fwVer Note that you must call both UI Init and LCD Init LCD Init m
111. lt Description This fault occurs when the microcontroller break input signal is activated It is Overcurrent a IE usually used to indicate hardware over current condition This fault occurs when the programmed rev up sequence ends without Revup fail validating the speed sensor information The rev up sequence is performed only when the state observer is configured as the primary speed sensor i i tate when th r no longer meets th Speed fdbk This fault occurs only in RUN state when the sensor no longer meets the conditions of reliability This fault occurs when the software detects a general fault condition In the SW error present implementation the software error is raised when the FOC frequency is too high to allow the FOC execution Under volt This fault occurs when the DC bus voltage is below the configured threshold This fault occurs when the DC bus voltage is above the configured threshold If Over volt EON a i the dissipative brake resistor management is enabled this fault is not raised This fault occurs when the heat sink temperature is above the configured Qyartamp threshold Doc ID 18458 Rev 3 ky UM1052 LCD user interface e Execute the encoder initialization If the firmware is configured to use the encoder as a primary speed sensor or an auxiliary speed sensor the encoder alignment button is also present In this case the alignment of the encoder is required only once after each reset
112. maximum deliverable electromagnetic torque is also reduced On the other hand for an IPM motor acting separately on iy causes a deviation from the MTPA path as explained in Section 3 4 PMSM maximum torque per ampere MTPA control Closed loop flux weakening has been implemented Accurate knowledge of machine parameters is not required which strongly reduces sensitivity to parameter deviation see 3 4 in Appendix Section A 1 References This scheme is suitable for both IPMSMs and SM PMSMs The control loop is based on stator voltage monitoring Figure 11 shows the diagram The current regulator output V is checked against a settled threshold voltage level parameter If V is beyond that limit the flux weakening region is entered automatically by regulating a control signal is that is summed up to ig the output of the MTPA controller This is done by means of a PI regulator whose gain can be tuned in real time in order to prevent the saturation of the current regulators It clearly appears then that the higher the voltage level parameter is settled by keeping up current regulation the higher the achieved efficiency and maximum speed If V is smaller than the settled threshold then ij decreases to zero and the MTPA block resumes control The current iy output from the flux weakening controller must be checked against iy max to avoid the demagnetization of the motor Figure 11 Flux weake
113. nce Walaa Forced alpha component of motor phase s voltage expressed in alpha beta p reference Vbeta Forced beta component of motor phase s voltage expressed in alpha beta reference Measured motor electrical angle This variable is present only if a real sensor Meas El Angle encoder Hall is configured as a primary or auxiliary speed sensor and it is relative to this sensor Measured motor speed This variable is present only if a real sensor encoder Meas Rotor f a f pa maa Speed Hall is configured as a primary or auxiliary speed sensor and it is relative to this j sensor Observed motor electrical angle This variable is present only if a state Obs El Angle observer sensor is configured as a primary or auxiliary speed sensor and it is relative to this sensor Obs Rotor Speed Observed motor speed This variable is present only if a state observer sensor is configured as a primary or auxiliary speed sensor and it is relative to this sensor Observed alpha component of motor phase s current expressed in alpha beta Obs lalpha reference This variable is present only if a state observer sensor is configured as a primary or auxiliary speed sensor and it is relative to this sensor Observed beta component of motor phase s current expressed in alpha beta Obs Ibeta reference This variable is present only if a state observer sensor is configured as a primary or auxiliary speed sensor and it is relative to this senso
114. nd mutual inductances have a second harmonic component Ls proportional to cos 20 k x 27 3 with k 0 1 in addition to the constant component L neglecting higher order harmonics O is the rotor electrical angle 9 is the flux linkage due to permanent magnets The complexity of these equations is apparent as the three stator flux linkages are mutually coupled and as they are dependent on the rotor position which is time varying and a function of the electromagnetic and load torques The reference frame theory simplifies the PM motor equations by changing a set of variables that refers the stator quantities abc that can be visualized as directed along axes each 120 apart to qd components directed along a 90 apart axes rotating synchronously with the rotor and vice versa The d direct axis is aligned with the rotor flux while the q quadrature axis leads at 90 degrees in the positive rolling direction Doc ID 18458 Rev 3 ky UM1052 Overview of the FOC and other implemented algorithms The motor voltage and flux equations are simplified to dx Vas 7 Islas ge t Pas f d y Vas 7 Islas t as Mia Laslas Ads Lids i tO For an SM PMSM the inductances of the d and q axis circuits are the same refer to Section 3 2 that is Lis Shins 2 L ae s qs s s On the other hand IPMSMs show a salient magnetic structure thus their inductances can be written as 3 Li
115. ng Log be L t DE YY 3f ea Las Lis t 2s 3 3 1 SM PMSM field oriented control FOC The equations below describe the electromagnetic torque of an SM PMSM SSO i lt ASAP MF Te aP Ag ig alla 5P Lela la Pmiq Lela la 3 F Te 5P Pnlg The last equation makes it clear that the quadrature current component ig has linear control on the torque generation whereas the current component iy has no effect on it as mentioned above these equations are valid for SM PMSMs Therefore if is the motor rated current then its maximum torque is produced for igs ls and igs O in fact cs ia In any case it is clear that when using an SM PMSM the torque current ratio is optimized by letting iy 0 This choice corresponds to the MTPA maximum torque per ampere control for isotropic motors On the other hand the magnetic flux can be weakened by acting on the direct axis current igs this extends the achievable speed range but at the cost of a decrease in maximum quadrature current ig and hence in the electromagnetic torque supplied to the load see Section 3 6 Flux weakening control for details about the Flux weakening strategy ky Doc ID 18458 Rev 3 19 127 Overview of the FOC and other implemented algorithms UM1052 3 4 20 127 In conclusion by regulating the motor currents through their components igg and igs FOC manages to regulate the PMSM torque and flux Current regulation is
116. ning operation scheme FLUX WEAKENING control voltage level ig limiter This feature can be activated through correct settings in h parameter files generated by the ST MC Workbench GUI used to initialize the MC Application during its boot stage In confidential distribution the classes that implement the flux weakening algorithm are provided as compiled object files The source code is available free of charge from ST on request Please contact your nearest ST sales office Doc ID 18458 Rev 3 1577 UM1052 Overview of the FOC and other implemented algorithms 3 7 3 7 1 PID regulator theoretical background The regulators implemented for Torque Flux and Speed are actually Proportional Integral Derivative PID regulators PID regulator theory and tuning methods are subjects which have been extensively discussed in technical literature This section provides a basic reminder of the theory PID regulators are useful to maintain a level of torque flux or speed according to a desired target Figure 12 PID general equation torque f rotor position 7 torque and flux regulation for maximum flux f rotor position g system efficiency q torque regulation for speed regulation torque f rotor speed of the system Where Errorsys Error of the system observed at time t T Errorsys Error of the system observed at time t T Tsampling T f X7
117. nt Not necessary if not required by this type of frame CRC byte used for cyclic redundancy check The CRC byte is computed as follows Total unsigned 16bit FrameID PayloadLength x7 Payloadli CRC unsigned8bit HighByte Total LowByte Total Table 33 Generic starting frame FRAME_START PAYLOAD LENGTH PAYLOAD ID PAYLOAD 0 PAYLOAD n CRC Table 36 shows the list of possible starting frames Table 34 FRAME START byte Motor FRAME_ID FRAME_START 7 6 5 4 3 2 1 0 Table 35 FRAME_START motor bits FRAME_ID Motor bit 000 The command is applied to the last motor selected 001 The command is applied to motor 1 motor 1 is selected from now on The command is applied to motor 2 motor 2 is selected from now on this can 919 be accepted only in dual drive Doc ID 18458 Rev 3 ky UM1052 Serial communication class overview 10 1 sa Table 36 Starting frame codes Frame ID Description 0x01 Set register frame It is used to write a value into a relevant motor control variable See Set register frame Get register frame It is used to read a value from a relevant motor control 0x02 variable See Get register frame Execute command frame It is used to send a command to the motor control 0x03 object See Execute command frame 0x06 Get board info It is used to retrieve information about the firmware
118. nvironment UM1052 68 127 Figure 56 displays the logical arrangement of files and actions necessary to set up and download the User project Figure 56 User project 9 IAR Embedded Workbench IDE Douga JSk pE Workspace py H 1 A 2 POPP o TCT OCT EOC TTT ITOCTECOT ICT ICTS IOC P IOC EE 3 file Timebase c a C3 EV n See Ha G Motor control NG tan Ha DI MC Applicatiod Er interface 1 LEMIMC Library interface Ha O Std project template Ha CI CMSIS Category 4 Ha C Doc Ha DJ EWARMv5 C C Compiler Ha O StdPeriph_Driver Assembler a LBCISTM32 EVAL Output Converter Target Output Library Configuration Library Options MISRA C 200 4 User interface Custom Build Ha D main c Build Actions 5 p Processor variant Ha E stm32f1 Ox itc A Linker Ha E stm32f10x_MC_it c a Debugger O Core E Timebase c Simulator E UlTask c 3 Angel Device ST STM32F10xxB Be La G Output GDB Server IAR ROM monitor J LinkJ Trace LMI FTDI Marrainnr Little Overview MC Application MC Library Endian mode 1 MS19345V1 The Motor Control folder contains the MC API and interfaces of classes that may also be useful in the user s application such as PI Digital Output reference frame transformation The Std project template folder contains STM832Fxxx S
119. o FAULT_NOW 4 ANY_STOP Permanent states 4 Pass trou gh states STOP N7 STOP IDLE M519353V1 int16 t MCI GetMecSpeedRef01Hz CMCI oMCI returns the current mechanical rotor speed reference expressed in tenths of Hertz 74 127 Doc ID 18458 Rev 3 1677 UM1052 MC application programming interface API 7 1 2 sa int16 t MCI GetAvrgMecSpeed01Hz CMCI oMCT returns the last computed average mechanical speed expressed in tenth of Hertz int16 t MCI GetTorqueRef CMCI oMCTI returns the present motor torque reference This value represents the I current reference expressed in s16A To convert a current expressed in s16A to a current expressed in Ampere use the formula Current A Current s16A Vdd micro V 65536 Rshunt Ohm AmplificationNetworkGain int16 t MCI_GetTorque CMCI oMCTI returns the present motor measured torque This value represents the current expressed in s16A To convert a current expressed in s16A to current expressed in Ampere use the formula Current A Current s16A Vdd micro V 65536 Rshunt Ohm AmplificationNetworkGain Curr_Components MCI_GetCurrentsReference CMCI oMCI returns stator current references I and Id in s16A To convert a current expressed in s16A to a current expressed in Ampere use the formula Current A Current s16A Vdd micro V 65536 Rshunt Ohm AmplificationNet
120. o of the same Command ld The size of payload is always 1 e Error Acknowledgment frame if the operation has not been successfully completed by the firmware The payload of this Error Acknowledgment frame is always 1 The list of error codes is shown in Table 37 Table indicates the list of commands List of commands Command Command ID Description Start Motor 0x01 Indicates the user request to start the motor regardless the state of the motor Stop Motor 0x02 Indicates the user request to stop the motor regardless the state of the motor Stop Ramp 0x03 Indicates the user request to stop the execution of the speed ramp that is currently executed Start Stop 0x06 Indicates the user request to start the motor if the motor is still or to stop the motor if it runs Fault Ack 0x07 Communicates the user acknowledges of the occurred fault conditions Encoder Align 0x08 Indicates the user request to perform the encoder alignment procedure Doc ID 18458 Rev 3 119 127 Serial communication class overview UM1052 10 4 Execute ramp frame The execute ramp frame Figure 83 is sent by the master to the motor control firmware to request the execution of a speed ramp A speed ramp always starts from the current motor speed and is defined by a duration and a final speed See Figure 84 Figure 83 Execute ramp frame Execute ramp frame Data Acknowledgment frame No errors BOARD gt
121. of the microcontroller 8 2 4 Dual control panel page This page is present only if the firmware is configured for a dual motor drive To enter the dual control page press the RIGHT joystick from configuration and debug page It is possible to navigate between focusable controls present in the page by pressing the UP DOWN joystick The dual control panel page shown Figure 65 is used to send commands and get feedback from both motors It is divided into three groups Group A and group B depend on speed torque settings The group content is updated on the fly when the control mode torque speed is changed in the configuration and debug page The control present in group A is related to the first motor The control present in group B relates to the second motor Group C does not depend on speed torque settings The control present in this group is related to both motors Figure 65 shows an example in which the first motor is set in torque mode and the second motor is set in speed mode The controls present in this page are used as follows To set the I reference field 1 in Figure 65 This is related to motor 1 and is only present if motor 1 is set in torque mode reference is expressed in s16A In this page the current references are always expressed as Cartesian coordinates lo la Figure 65 Dual control panel page PMSM FOC ver Dual control panel Torque mode f 1 4 8 Speed mode Iq ref Speed Target Measured 150081
122. oint with the PWM output using the external triggering capability of the peripheral Owing to this current conversions can be performed at any given time during the PWM period To do this the control algorithm uses the fourth PWM channel of TIM1 to synchronize the start of the conversions Doc ID 18458 Rev 3 ky UM1052 Current sampling Figure 23 shows the synchronization strategy between the TIM1 PWM output and the ADC The A D converter peripheral is configured so that it is triggered by the rising edge of TIM1_CH4 Figure 23 PWM and ADC synchronization Counter overflow OCR 4 OCR4 OCR 2 OCR 2 H OCR 3 OCR 3 fy TIM1_CH1 TIM1_CH1 TIM1_CH2 TIM1_CH2 TIM1_CH3 E TIM1_CH3 Sampling point before counter overflow Sampling point after counter overflow In this way supposing that the sampling point must be set before the counter overflow that is when the TIM1 counter value matches the OCR4 register value during the upcounting the A D conversions for current sampling are started If the sampling point must be set after the counter overflow the PWM 4 output has to be inverted by modifying the CC4P bit in the TIM1_CCER register Thus when the TIM1 counter matches the OCR4 register value during the downcounting the A D samplings are started After execution of the FOC algorithm the value to be loaded into the OCR4 register is calculated to set the sampling point for the next PWM period and the A
123. oller page 6 6 tenes 93 Current controller page 2 6 eae 95 Current controller page with polar coordinates 0 eee eee 97 Iq ld component versus Amp Eps component 2 00 0 cee ee ees 97 Sensorless tuning STO amp PLL page 2 2 cece ae 98 Example of rev up sequence 1 keene 99 Sensorless tuning STO amp CORDIC page 0 0 0 0 eee 100 Software lay f Sr renie NANA md eae ee Pee PRA eee wae We Ghee 102 User interface block diagram 00 eee 103 User interface configuration bit field 00 0 e ee eee 105 LCD manager block diagram 0 00 eee 106 Serial communication software layers eee 108 Serial communication in motor control application aaa 113 Master slave communication architecture 0 00 eee 114 Set register frame teens 115 Get register frame teens 118 Execute command frame 0 teens 119 Execute ramp frame te eee 120 Speed TAM a ana NAA mah ha ees baka ie Sed ee fa Ra Kana 120 Get revup data frame 20 00 eee 121 Revup sequence eee eee 122 Set revup data frame cee 122 Set current reference frame cece tee 123 Doc ID 18458 Rev 3 7 127 UM1052 8 127 Motor control library features Single or simultaneous Dual PMSM FOC sensorless sensored Dual PMSM FOC only when running on STM32F103xx High Density STM32F103xx XL Density or ST
124. ons it is suggested to follow the instructions given below when connecting a Hall sensor equipped PM motor to your board 1 Turn the rotor by hand in the direction assumed to be positive and look at the B emf induced on the three motor phases If the real neutral point is not available it can be reconstructed by means of three resistors for instance 2 Connect the motor phases to the hardware respecting the positive sequence Let phase A phase B and phase C be the motor phases driven by TIM1 CH1 TIM1_CH2 and TIM1 CH3 respectively for example when using the MB459 board a positive sequence of the motor phases could be connected to J5 2 1 and 3 3 Turn the rotor by hand in the direction assumed to be positive look at the three Hall sensor outputs H1 H2 and H3 and connect them to the selected timer on channels 1 2 and 3 respectively making sure that the sequence shown in Figure 48 is respected 4 Measure the delay in electrical degrees between the maximum of the B emf induced on phase A and the first rising edge of signal H1 Enter it in the MC hall param h header file HALL PHASE SHIFT For your convenience an example with HALL PHASE SHIFT equal to 90 C is illustrated in Figure 49 Doc ID 18458 Rev 3 ky UM1052 Rotor position speed feedback 5 3 Figure 49 Determination of Hall electrical phase shift Bemf Bemf _ Bemf H1 H2 120 H3 HALL_PHASE_SHIFT
125. opic com arm doc ddi0337e DDI10337E cortex m3 rip 1 trm pdf Cortex M4 Technical Reference Manual available from http infocenter arm com help topic com arm doc ddi0439c DDI0439C cortex m4 r0p 1 trm pdf Available from www st com or your STMicroelectronics sales office STM32F103xx datasheet STM32F100xx datasheet STM32F20x and STM32F21x datasheets STM32F40x and STM32F41x datasheets STM32F103xx user manual RM0008 STM32F100xx user manual RM0041 STM32F20x and STM32F21x user manual RM0033 STM32F40x and STM32F41x user manual RM0090 STM32F103xx AC induction motor IFOC software library V2 0 UM0483 STM32 and STM8 Flash Loader demonstrator UM0462 Doc ID 18458 Rev 3 ky UM1052 Overview of the FOC and other implemented algorithms 3 3 1 Overview of the FOC and other implemented algorithms Introduction to the PMSM FOC drive This software library is designed to achieve the high dynamic performance in AC permanent magnet synchronous motor PMSM control offered by the well established field oriented control FOC strategy With this approach it can be stated that by controlling the two currents igg and igs which are mathematical transformations of the stator currents it is possible to offer electromagnetic torque Te regulation and to some extent flux weakening capability This resembles the favorable condition of a DC motor where those roles are held by the armature and field currents Therefor
126. ough the CUI methods For instance the LCD manager updates a motor control quantity calling Ul SetReg method and so on User interface configuration A user interface object and its derivatives are configured using a 32 bit configuration value see Figure 75 The first byte of this register contains the sensor configuration Each sensor is defined using 4 bits The values Ul SCODE xxx are exported by UserlnterfaceClass h See Table 30 The first 4 bit defines the main speed and position sensor The second 4 bit defines the auxiliary speed and position sensor 1 Figure 75 User interface configuration bit field 4bit 4bit 8bit 8bit 8bit Auxiliary sensor Reserved Reserved Main sensor CFG 8bit PLL Tuning Setld in Spd Id Kd lq Kd Speed Kd Flux weakening The remaining bit field values Ul CFGOPT xxx are exported by UserlnterfaceClass h See Table 31 To configure the user interface object the configuration should be passed in the UI Init function as the 5th parameter The 5th parameter of the UI Init function is an array of configuration values one for each motor drive The 32 bit configuration value is automatically computed by a preprocessor in the Parameters conversion h file based on the configuration present in the System amp Drive Params folder It can be manually edited by the user Table 30 User interface configuration Sensor codes
127. p configuration the default option is NVIC_PriorityGroup_3 NVIC PriorityGroupConfig NVIC PriorityGroup 3 Table 13 shows preemption priorities used by the MC application user priorities should be lower higher number Doc ID 18458 Rev 3 79 127 MC application programming interface API UM1052 80 127 Table 13 MC application preemption priorities TIM1 UPDATE IRQ Preemption priority TIM8 UPDATE F103HD XL F2xx F4xx DMA ADC1 2 F103 F2xx F4xx ADC3 F103HD XL F2xx F4xx ADC1 F100 only USART UI library TIMx GLOBAL speed sensor decoding w v NINI N OJ OoJ o Timebase V ie Table 14 Priority configuration overall non FreeRTOS MC Library Component Preemption priority 0 1 2 3 Timebase MCA clocks 3 4 User Table 15 5 6 7 Priority configuration overall FreeRTOS MC Library Component Preemption priority 0 1 2 3 User only FreeRTOS API 4 5 FreeRTOS 6 7 RTOS priority MCA clock tasks Highest User tasks Lower 7 Include the Motor Control Interface in the source files where the API is to be accessed incl incl incl ude ude ude MCTuningClass h MCInterfaceClass h MCTasks h 8 Declare a static array of CMCI MC Interface class type OMCI MC_NUM MC_NUM is the number of motors to drive 9 Declare a static ar
128. plied to Phase A low side switch is larger than DT Ty Where e DT is dead time Ty is the duration of the noise induced on the shunt resistor voltage of a phase by the commutation of a switch belonging to another phase Tsis the sampling time of the Root part number 1 A D converter the following consideration is made under the hypothesis that Ts lt DT Ty Refer to the Root part number 1 reference manual for more detailed information This case typically occurs when SVPWM with low lt 60 modulation index is generated see Figure 25 The modulation index is the applied phase voltage magnitude expressed as a percentage of the maximum applicable phase voltage the duty cycle ranges from 0 to 100 Figure 26 offers a reconstruction of the PWM signals applied to low side switches of phase A and B in these conditions plus a view of the analog voltages measured on the Root part number 1 A D converter pins for both phase B and C the time base is lower than the PWM period Figure 25 Low side switch gate signals low modulation indexes 100 90 80 70 60 50 40 30 20 10 0 0 30 60 Phase A Phase B Phase C Doc ID 18458 Rev 3 37 127 Current sampling UM1052 Note 38 127 These current feedbacks are constant in Figure 26 because it is assumed that commutations on phase B and C have occurred out of the visualized time window In this case the two stator current samplin
129. r MC_PROTOCOL_REG_OBS_CR_ Observed beta component of motor BEMF expressed in alpha beta reference This variable is related to a state observer CORDIC BEMF_BETA sensor configured as a primary or auxiliary speed sensor R1 MC_PROTOCOL_REG_DAC_USE User defined DAC variable Section 9 9 describes how to configure user defined DAC variables R2 MC_PROTOCOL_REG_DAC_USE User defined DAC variable Section 9 9 describes how to configure user defined DAC variables Each DAC variable can be selected to be output to a DAC channel The DAC channel is physically put in the output by calling the Ul DACExec method 9 8 Using the DAC manager 1 Obtain the oMCT and oMCI object through GetMCIList and GetMCTList functions exported by MCTasks h oMCI and oMCT are two arrays of objects CMCI oMCI MC_NUM CMCT oMCT MC_NUM GetMCIList oMCI GeMCTList oMCT Instantiate and initialize CDACx UI objects Choose the correct CDACx UI object based on the hardware setting CDACx UI oDAC DACT Newobject MC NULL MC NULL UI Init CUI o0oDAC bMCNum oMCIList oMCTList pUICfg UI DACInit CUI oDAC Note that you must call both Ul Init and Ul DACInit pUICfg is the user interface configuration array See Section 9 2 User interface configuration Configure the DAC variables for each DAC channel UI DACChannelConfig CUI o0oDAC DAC CHO MC PROTOCOL UI D
130. r Obs B emf alpha Observed alpha component of motor BEMF expressed in alpha beta reference This variable is present only if a state observer sensor is configured as a primary or auxiliary speed sensor and it is relative to this sensor Obs B emf beta Observed beta component of motor BEMF expressed in alpha beta reference This variable is present only if a state observer sensor is configured as a primary or auxiliary speed sensor and it is relative to this sensor Exp B emf level The expected Bemf squared level Obs B emf level The observed Bemf squared level a Doc ID 18458 Rev 3 UM1052 LCD user interface Table 19 List of DAC variables continued Variable name User 1 Description User defined DAC variable Section 9 9 describes how to configure user defined DAC variables User 2 User defined DAC variable Section 9 9 describes how to configure user defined DAC variables Observed variables Obs in Table 19 refer to a configuration that uses only one sensorless speed sensor confi sensor When the f observer plus PLL gured as a primary or auxiliary sensor and refers to that state observer irmware is configured to use two sensorless speed sensors state and state observer plus CORDIC as a primary and auxiliary speed sensor the DAC variables related to each state observer sensor are indicated in Table 20 Table 20 DAC variables related
131. r by calling the MCT_GetSpeedLoopPID function prototype at line 203 4 Set the KP gain by calling the PI SetKP function prototype at line 659 The resulting C code could be something like include MCTuningClass h f CPI PIspeedMotor2 PIspeedMotor2 MCT GetSpeedLoopPID oMCT 1 1 Doc ID 18458 Rev 3 ky UM1052 MC application programming interface API Note 7 3 Note 1 PI SetKP PIspeedMotor2 NewKpGain To reduce Flash and RAM occupation you can disable the MCTuning section of the MC application This is done by commenting define MC_TUNING_INTERFACE in the MCTask c source file line 80 If you do this disable the LCD UI and Serial Communication UI too See the doxygen compiled html Help file to know which are the other exported functions of MCTasks and refer to section 7 3 to know how to use them How to create a user project that interacts with the MC API This section explains how to integrate the Motor Control Application with a user project thus replacing the provided demonstrative one in order to take advantage of its API 1 Atimebase is needed to clock the MC Application the demonstration timebase c can be considered as an example or used as is It uses the Systick timer and its Systick_Handler and PendSV_Handler as resources Alternatively an Operating System can be used for this purpose as is done in the FreeRTOS based demonstration project The timebase should provi
132. r is configured as a primary or auxiliary speed sensor and it is relative to this sensor Obs Bemf b CR Observed beta component of motor BEMF expressed in alpha beta reference This variable is present only if a state observer plus CORDIC sensor is configured as a primary or auxiliary speed sensor and it is relative to this sensor Table 20 lists the DAC variables related to each state observer sensor when two state observer speed sensors are selected e Itis possible to read the list of fault causes field 7 in Figure 64 if fault conditions have occurred or if they are still present The list of possible faults is summarized in Table 21 and is represented by the list of labels in the LCD screen field 7 in Figure 64 If a fault condition occurred and is over the relative label is displayed in blue If a fault condition is still present the relative label is displayed in red It is gray if there is no error e To acknowledge the fault condition press the Fault ack button field 8 in Figure 64 If a fault condition occurs the motor is stopped and it is no longer possible to navigate in the other pages In this condition it is not possible to restart the motor until the fault condition is over and the occurred faults have been acknowledged by the user pushing the Fault ack button If a fault condition is running the Fault ack button is disabled Table 21 Fault conditions list Fau
133. rals Library Drivers V1 0 0 System amp Drive Params Contains default parameter files unpacked at installation time referring to the STM32 MC Kit or those generated by the ST MC workbench GUI according to user s system Utilities Contains code needed for specific functions of ST evaluation boards LCD drivers I O pin assignment port expanders and the ST Flash loader demonstrator V2 2 0 Project Contains source files of the demonstration user layer application and configuration files for IDEs In addition inside each IDE folder in MC library Compiled exe compiled MC library is provided in case of web distribution or created modified by the IDE in case of confidential distribution for single and dual motor drive FreeRTOS Project Contains source files of the demonstration user layer application based on FreeRTOS and configuration files for IDEs In addition inside each IDE folder in MC library Compiled exe compiled MC library is provided in case of web distribution or created modified by the IDE in case of confidential distribution for single and dual motor drive LCD project Contains source files of the optional LCD user interface and configuration files for IDEs HEX Contains the compiled version of LCD firmware ready to be flashed using ST Flash load EWARM out 6 1 Motor control workspace Contains the compiled version of LCD firmware ready to be flashed
134. rameter to be expressed in milliseconds If hDurationms is set to O a step variation is generated This command is only executed when the state machine is in the START_RUN or RUN state The user can check the status of the command calling the MCI_IsCommandAcknowledged method void MCI_ExecTorqueRamp CMCI oMCI int16 t hFinalTorque uint16 t hDurationms sets the control mode in torque control generates a ramp of torque references from real torque to the hFinalTorque parameter to be expressed as s16A The ramp execution duration is the hDurationms parameter to be Doc ID 18458 Rev 3 75 127 MC application programming interface API UM1052 7 2 76 127 expressed in milliseconds If hDurationms is set to 0 a step variation is generated This command is only executed when the state machine is in the START_RUN or RUN state The user can check the status of the command calling the MCI_IsCommandAcknowledged method void MCI SetCurrentReferences CMCI oMCI Curr Components Iqdref sets the control mode in torque control external see Advanced developers guide for STM32F103xx STM32F 100xx PMSM single dual FOC library UM1053 and directly sets the motor current references and ly to be expressed as s16A This command is only executed when the state machine status is START_RUN or RUN cCommandState_t MC sCommandAcknowledged CMCI oMCI returns info
135. ray of CMCT MC Tuning class type CMCT oMCT MC_NUM MC_NUM is the number of motors to drive 10 Start the MC Interface boot process MCboot OMCI oMCT CMCI Doc ID 18458 Rev 3 ky UM1052 MC application programming interface API 11 Send the command to the MC API For example MCI ExecSpeedRamp oMCI 1 100 1000 MCI_StartMotor oMCI 1 after a laps of time MCI_StopMotor oMCI 1 7 4 Measurement units 7 4 1 Rotor angle The rotor angle measurement unit used in the MC API has been named s16degrees being _ 2n 1s16degree 65536 The picture below shows how an angle expressed in radians can be mapped into the s16degrees domain Figure 60 Radians vs s16 angle 516 4 32767 Sees SSS Sa ie 0 2T angle radians 32768f ai14842 74 2 Rotor speed The rotor speed units used in the MC API are e Tenth of Hertz 01Hz straightforwardly it is 01Hz 0 1 Hz e digit per control period App the dpp format expresses the angular speed as the variation of the electrical angle expressed in s16 format within a FOC period _ 1s16degree tdpp PP 1FOCperiod Doc ID 18458 Rev 3 81 127 MC application programming interface API UM1052 An angular speed expressed as the frequency in Tenth of Hertz 01Hz can be easily converted to dpp using the formula ee 6553s app b1Hz 19 FOCfreq 74 3 Current measurement Phas
136. re layers Level increasing STM32 Std Library This section describes the details of the User interface layer This is the highest software level present in the released STM32 PMSM FOC Library v3 2 The user interface class CUI manages the interaction between the user and the motor control library MC Library via the motor control application layer MC Application In the current implementation the user interaction can be performed by any of the following devices digital to analog converter DAC LCD display plus joystick serial communication For each of these devices one or more derived class of Ul object have been implemented see Figure 74 e LCD Manager Class CLCD_UI is used to interact with the LCD color display It has been implemented over the LCD graphical library STMFC written in C language e Motor control protocol CMCP Ul is used to manage serial communications The serial communication is implemented over the Frame communication protocol class CFCP Transport layer The CFCP is in turn implemented over a physical layer communication class CCOM Physical layer Daughter classes of CCOM are CUSART_COM CI2C COM and CSPI_COM Presently only the CUSART_COM that implements the physical serial communication using the USART channel has been implemented and only with a PC master microcontroller slave configuration DAC manager CDAC_UI is used to manage the DAC outputs using a real DAC peripher
137. re value field 5 in Figure 64 This control is read only e select the variables to be put in output through DAC channels field 6 in Figure 64 These controls are present only if the DAC option is enabled in the firmware The list of variables also depends on firmware settings Table 19 and Table 20 introduce the list of variables that can be present in these combo boxes depending on the configuration Table 18 shows the conventions used for DAC outputs of Currents Voltages Electrical angles Motor Speed and Observed BEMF Note Table 18 assumes that the DAC voltage range is O to 3 3 volt Table 18 Definitions Definition Currents quantity la lq Description Current quantities are output to DAC as signed 16 bit numeric quantities converted in the range of DAC voltage range Zero current is at 1 65 volt of DAC output Maximum positive current that runs from inverter to the motor is at 3 3 volt of DAC output Maximum negative current that runs from inverter to the motor is at O volt of DAC output Voltage quantity Valpha Vq Voltage quantities are output to DAC as signed 16 bit numeric quantities converted in the range of DAC voltage range 0 of modulation index is at 1 65 volt of DAC output 100 of modulation index is at O and 3 3 volt of DAC output Electrical angle This is expressed in digits converted to the DAC voltage range 180 electrical degrees are at 0 and 3 3 volt o
138. rmation about the state of the last buffered command CommandState_t can be one of the following codes MCI_BUFFER_EMPTY if no buffered command has been called MCI COMMAND NOT ALREADY EXECUTED if the buffered command condition has not already occurred MCI_COMMAND_EXECUTED_SUCCESFULLY if the buffered command has been executed successfully In this case calling this function resets the command state to MCI_BUFFER_EMPTY MCI_COMMAND_EXECUTED_UNSUCCESFULLY if the buffered command has been executed unsuccessfully In this case calling this function resets the command state to MCI_BUFFER_EMPTY MCTuningClass The MCTuningClass allows the user to obtain objects of the Motor Control Application and apply methods on them MCTuningClass h is divided into three sections Public definitions of all the MC classes exported MCT GetXXX functions used to receive objects e For each of the classes exported a list of applicable methods For example if you want to read or set parameters of the speed PI controller 1 Make sure that the Motor Control Application is already booted and oMCI and oMCT objects are available you can receive them through GetMCIList or GetMCTList functions 2 Declare a PIspeed automatic variable of the type CPI PI class type definition at line 85 3 Obtain the speed PI object which is actually a pointe
139. ropic structure which means that the direct and quadrature inductances Lg and Lg are the same Usually their mechanical structure allows a wider airgap which in turn means lower flux weakening capability On the other hand IPMSMs show an anisotropic structure with Ly lt Lg typically slight in the b construction called inset PM motor strong in the c configuration called buried or radial PM motor This peculiar magnetic structure can be exploited as explained in Section 3 4 to produce a greater amount of electromagnetic torque their fine mechanical structure usually shows a narrow airgap thus giving good flux weakening capability This firmware library is optimized for use in conjunction with SM PMSMs and IPMSMs machines ky Doc ID 18458 Rev 3 17 127 Overview of the FOC and other implemented algorithms UM1052 3 3 18 127 PMSM fundamental equations Figure 7 Assumed PMSM reference frame convention With reference to Figure 7 the motor voltage and flux linkage equations of a PMSM SM PMSM or IPMSM are generally expressed as oa oe dabo Vabo g Islabe dt i L Lms List Lms o any 2n L L 3 sin 9 Nabe a List Liis ae labo T 39 27 L sin 9 27 i a Lis Lmg 3 where e rg is the stator phase winding resistance Lisisthe stator phase winding leakage inductance Ly is the stator phase winding magnetizing inductance in case of an IPMSM self a
140. rt team for further information about this technique Current sampling in isolated current sensor topology Figure 39 illustrates the ICS topology hardware architecture Figure 39 ICS hardware architecture ICS must generate a positive voltage when current goes 3 JVE out of the inverter gt Voltage from ICS Voltage to be converted MS19316V1 The three currents l4 lo and Is flowing through a three phase system follow the mathematical relationship li lo 4 1350 Doc ID 18458 Rev 3 UM1052 Current sampling Table 8 ICS current reading used resources single drive F103 LD MD ADC ADC Adv timer DMA ISR Note master slave DMA is used to enable ADC injected TIM1 DMA1_CH5 None ADC1 ADC2 conversion external trigger Disabling is performed by software Table 9 ICS current reading used resources single or dual drive F103 HD F2xx F4xx Adv timer DMA ISR ADC Note Used by the first or second motors configured in ADC1 three shunt depending on the user selection ADC TIKA Mong TIM1_UP ADC2 is used in time sharing Trigger selection is performed in the TIM_UP ISR Used by the first or second motor configured in ADC1 three shunt depending on the user selection ADC TMS None TIM8_UP ADC2 is used in time sharing Trigger selection is performed in the TIM_UP ISR Therefore to reconstruct the currents flowing throug
141. ry layer Parameters and configurations related to user s application are used here to create right objects and rights in what is called the run time system boot The Motor Control API is the set of commands granted to the upper layer This project is built as a compiled library not as an executable file see Section 6 4 The user project the demonstration program included in the SDK that makes use of the Motor Control Application through its MC API and provides the required clockings and access to Interrupt Handlers The program can run some useful functionalities depending on user options such as serial communication LCD keys interface system variables displaying through DAC 5 user project workspaces are available They differ in both the supported STM32 family and how they generate the clocks a simple time base itself or an Operating System FreeRTOS STM32F10x_Workspace for both STM32F100xx and STM32F103xx devices and simple time base STM32F2xx_Workspace for STM32F2xx devices and simple time base STM32F4xx_Workspace for STM32F4xx devices and simple time base STM82F10x_RTOS_Workspace for both STM32F100xx and STM32F103xx devices and FreeRTOS STM32F2xx_RTOS_Workspace for STM32F2xx devices and FreeRTOS See Section 7 3 How to create a user project that interacts with the MC API to understand how to create a brand new user project Doc ID 18458 Rev 3 ky UM1052 Working environment 6 2 4 In
142. s motors show very complex and time varying voltage equations By changing a set of variables that refers stator quantities to a frame of reference synchronous with the rotor it is possible to reduce the complexity of these equations This strategy is often referred to as the Reference Frame theory 1 Supposing fax fbx fox are three phase instantaneous quantities directed along axis each displaced by 120 degrees where x can be replaced with s or r to treat stator or rotor quantities see Figure 20 supposing fox fax fox are their transformations directed along paths orthogonal to each other the equations of transformation to a reference frame rotating at an arbitrary angular velocity a can be expressed as cos0 cos 6 cos 9 Zr f 3 3 qx 2 fadox fax 3 sine sin o 22 sin o 22 fox ax h bx cx 1 1 1 2 2 2 Doc ID 18458 Rev 3 ky UM1052 Overview of the FOC and other implemented algorithms where 9 is the angular displacement of the q d reference frame at the time of observation and 6 that displacement at t 0 see Figure 20 Figure 20 Transformation from an abc stationary frame to a rotating frame q d ai14844 With Clark s transformation stator currents ias and ips which are directed along axes each displaced by 120 degrees are resolved into currents i and ip on a stationary reference frame a B An appropriate substitution into the genera
143. shown near the page title See field 7 in Figure 72 To enter the sensorless tuning page press the RIGHT joystick from the current controller page It is possible to navigate between focusable controls present in the page by pressing the UP DOWN joystick The sensorless tuning page shown in Figure 72 is used to send commands and get feedbacks related to the state observer plus CORDIC object from the active motor There are three groups of controls in this page Table 28 Control groups Control group Description State observer tuning Used to configure the parameters of the state observer object in real time Used to change the start up related parameters in real time This group is only Rev up tuning gains present if the state observer plus CORDIC sensor is selected as the primary speed and position sensor Measured speed Composed of two controls that are also present in the current controller page with start stop and in the sensorless tuning page this provides a fast access to the measured button speed and to the motor start stop function Figure 72 Sensorless tuning STO amp CORDIC page PMSM FOC ver 3 0 Sensorless tuning STO amp CORDIC AUX gl i 1500 1500 rpm Start Stop Rev up tuning Duration 700 Elms Stage F Speed 0 Elrpm Iq 20000 Pl Motor selected 1 MS19365 1 If the firmware is configured as a dual motor drive it is possible to know w
144. st of predefined values The values associated to a combo box are text strings that correspond with different configurations or options of the firmware For example Speed or Torque control mode The combo box is always focusable and when focused can be activated for modification by pressing JOYSEL An activated combo box has a green background and its value can be Speed Y modified by pressing the UP DOWN joystick The combo box values are circular Going UP from the first value selects the last value and vice versa The new value is set to the motor control related object instantaneously when the value changes unless otherwise mentioned in this manual The control can be deactivated by pressing JOYSEL again Combo box Sends commands to motor control related object For example a start stop Button button This button can be enabled or disabled A disabled button is drawn in light gray and cannot be focusable An enabled button is painted in black and can be focusable When focused a button can be activated by pressing JOYSEL This corresponds to pushing the button and sending the related command Check box Enables or disables an option It is always focusable and when focused can be activated by pressing JOYSEL This corresponds to check uncheck the Link Kl control and means enable disable the option Motor control application layer configuration speed sensor The motor control application layer can b
145. support team Source class files are provided except for ST protected IPs which are furnished as compiled object files Source files of protected IPs can also be provided free of charge to ST partners upon request Contact your nearest ST office or support team for further information Doc ID 18458 Rev 3 ky UM1052 MC software development kit architecture Figure 2 Motor control library Motor Control Library CSpeedSensor CStateMachine New New GetMechanicalSpeed GetState GetElectricalAngle NextState CFOCDrive New CalcCurrentReferences CurrentController MS19304V1 The motor control library uses the lower STM32Fxxx Standard Peripheral Library layer extensively for initializations and settings on peripherals Direct access to STM32 peripheral registers is preferred when optimizations in terms of execution speed or code size are required More information about the Motor Control Library its classes and object oriented programming can be found in the Advanced developers guide for STM32F 103xx STM32F 100xx PMSM single dual FOC library UM1053 The Motor Control Application MCA is an application that uses the motor control library in order to accomplish commands received from the user level This set of commands is specified in its Application Programming Interface API During its boot stage the MCA creates the required controls in accordance with actual system parameters defined in spe
146. t control mode speed control torque control and initial reference before executing this command otherwise the behavior in run state is unpredictable Use one of these commands to do this MCI ExecSpeedRamp MCI_ExecTorqueRamp or MCI_SetCurrentReferences bool MCI StopMotor CMCI oMCTI stops the motor driving and disables the PWM outputs bool MCI_FaultAcknowledged CMCI oMCI this function must be called after a system fault to tell the Motor Control Interface that the user has acknowledged the occurred fault When a malfunction overcurrent overvoltage is detected by the application the motor is stopped and the internal state machine goes to the Fault state see Figure 59 The API is locked it no longer receives commands The API is unlocked and the state machine returns to Idle when the user sends this MCI_FaultAcknowledged bool MCI_EncoderAlign CMCI oMCT this function is only used when an encoder speed sensor is used It must be called after any system reset and before the first motor start State t MCI_GetSTMState CMCI oMCT returns the state machine status see Figure 59 Further detail is provided in the Advanced developers guide for STM32F103xx STM32F 100xx PMSM single dual FOC library UM1053 Figure 59 State machine flow diagram EEE FAULT_NOW es IDLE_START Ey OVER 4 START ALIGNMENT NG START RUN 4 any state can evolve RUN int
147. t sampling UM1052 4 4 1 34 127 Current sampling Section 3 1 Introduction to the PMSM FOC drive shows that current sampling plays a crucial role in PMSM field oriented control This motor control library provides complete modules for supporting three shunt single shunt and ICS topologies Refer to sections Section 4 1 Section 4 2 Section 4 3 respectively for further details The selection of decoding algorithm to match the topology actually in use can be performed through correct settings in the h parameter files generated by the ST MC Workbench GUI used to initialize the MC Application during its boot stage Current sampling in three shunt topology Figure 22 shows the three shunt topology hardware architecture Figure 22 Three shunt topology hardware architecture Voltage on R Shunt Voltage to be converted MS19310V1 The three currents l4 lo and l3 flowing through a three phase system follow the mathematical relation l lo l3 0 For this reason to reconstruct the currents flowing through a generic three phase load it is sufficient to sample only two out of the three currents while the third one can be computed by using the above relation The flexibility of the Root part number 1 A D converter makes it possible to synchronously sample the two A D conversions needed for reconstructing the current flowing through the motor The ADC can also be used to synchronize the current sampling p
148. tandard Peripherals Library e CMSIS library startup and vector table files for EWARMV5 toolchain e IC drivers LCD IOE SD card used in STM32 evaluation boards All these files belong to V3 5 0 distribution of the STM32 Standard Peripheral Library package for the STM32F 10x and to v1 0 0 distribution for STM32F2xx and STM32F4xx updates available from STMicroelectronics web site www st com This demonstration user project exploits the features offered by the User Interface Library see Section 9 User Interface class overview for further details In the STM32F10x_Workspace four project configurations callout 2 Figure 56 User project are provided one for each STM32 evaluation board that has been tested with the MC SDK e STM32F10B EVAL e STM32F10E EVAL STM32F100B EVAL e STEVAL IHM022V1 In the STM32F2xx_Workspace two project configurations are available STM322xG EVAL Doc ID 18458 Rev 3 ky UM1052 Working environment STM32F2xx_dual In the STM32F4xx_Workspace two project configurations are available STM324xG EVAL e STEVAL IHM039V1 If the target is one of these boards just select its name from the combo box Otherwise the LCD UI should be disabled using the ST MC Workbench GUI and the choice is to be done according to Table 11 Table 11 Project configurations SINIZ GEVICE Pert S ingle dual drive Viable configuration among existing selection STM32F103 lo
149. tically sent to the motor control related object allowing the run time tuning of the current controller This control is only present if the state observer PLL object is set as the primary or auxiliary speed and position sensor and if the PLL tuning option is enabled in the firmware a Doc ID 18458 Rev 3 LCD user interface sa Table 27 Sensorless tuning STO 4 PLL page controls continued Control Description To set the integral coefficient of the PLL for the active motor The value set in PLL KI this control is automatically sent to the motor control related object allowing field 4 in Figure 70 the run time tuning of the current controller This control is only present if the state observer PLL object is set as the primary or auxiliary speed and position sensor and if the PLL tuning option is enabled in the firmware Duration field 5 in Figure 70 To set the duration of the active rev up stage for the active motor The value set in this control is automatically sent to the motor control related object and becomes active on next motor start up allowing the tuning of the rev up sequence The duration is expressed in milliseconds F Speed field 6 in Figure 70 To set the final mechanical speed for the active motor and active rev up controller stage The value set in this control is automatically sent to the motor control related object and becomes active on next motor start up allowing the run
150. time tuning of rev up sequence The final mechanical speed is expressed in RPM q field 7 in Figure 70 Stage Field 8 in Figure 70 To set the final torque reference for the active motor and active rev up controller stage The value set in this control is automatically sent to the motor control related object and becomes active on next motor start up allowing the tuning of the rev up sequence The final torque reference is expressed in lg current and becomes active on next motor start up To convert current expressed in Amps to current expressed in digits use the formula Current s16A Current Amp 65536 Rshunt Aop Vdd micro To set the active rev up stage that receives the Duration F Speed and Final torque reference Iq new values set in Fields 5 6 and 7 The rev up sequence consists of five stages Figure 71 shows an example of a rev up sequence It is possible to tune each stage in run time using rows 5 8 of Table 27 Figure 71 Example of rev up sequence time Stage 0 Stage 1 Stage 2 M519364V1 Doc ID 18458 Rev 3 99 127 LCD user interface UM1052 8 2 8 100 127 Sensorless tuning STO amp CORDIC page This page is only present if the firmware is configured to use a state observer plus CORDIC sensor set as a primary or auxiliary speed and position sensor If the state observer sensor is set as an auxiliary speed and position sensor the AUX label will be
151. tion CRC checksum and so on The CCOM class implements the physical layer through its derivatives For each physical communication channel there is a specific derivative of the CCOM object Only the USART channel has been implemented so far by CUSART_COM class Using the motor control protocol 1 Obtain the oMCT and oMCI object through GetMCIList and GetMCTList functions exported by MCTasks h oMCI and oMCT are two arrays of objects CMCI oMCI MC_NUM CMCT oMCT MC_NUM GetMCIList oMCI GeMCTList OMCT MCP parameters Frame parameters and USART parameters are defined in USARTParams h and can be modified if required Instantiate and initialize CMCP_UI CFCP and COM objects CMCP_UI oMCP MCP_NewObject MC_NULL amp MCPParams CFCP oFCP FCP_NewObject amp FrameParams_str CUSART COM oOUSART USART_NewObject amp USARTParams_str FCP_Init oFCP CCOM oOUSART MCP_Init oMCP oFCP oDAC s fwVer UI Init CUI oMCP bMCNum oMCIList oMCTList pUICfg Doc ID 18458 Rev 3 ky UM1052 User Interface class overview 9 7 Note that you must call both MCP Init and UI Init pUICfg is the user interface configurations array See Section 9 2 User interface configuration ODAC is the related DAC object that should be driven by the LCD manager This DAC object should be correctly instantiated before the LCD Init calls See the DAC manager class CDAC s_fwVer is a
152. tion sensor Considering that absolute information is required for performing field oriented control it is necessary to establish a 0 position This task is performed by means of an alignment phase Section 8 2 3 Configuration and debug page callout 9 in Figure 64 Configuration and debug page and shall be carried out at the first motor startup and optionally after any fault event It consists of imposing a stator flux with a linearly increasing magnitude and a constant orientation Doc ID 18458 Rev 3 ky UM1052 Rotor position speed feedback If properly configured at the end of this phase the rotor is locked in a well known position and the encoder timer counter is initialized accordingly Doc ID 18458 Rev 3 59 127 Working environment UM1052 6 60 127 Working environment The working environment for the Motor Control SDK is composed of e APC A third party integrated development environment IDE A third party C compiler A JTAG SWD interface for debugging and programming An application board with an STM32F103xx STM32F100xx STM32F2xx or STM32F4xx properly designed to drive its power stage PWM outputs to gate driver ADC channels to read currents DC bus voltage Many evaluation boards are available from ST some of them have an ST link programmer onboard e A three phase PMSM motor Table 10 explains the MC SDK file structure for both Web and confidential distributions Table 10 File structure
153. to each state observer sensor when two state observer speed sensors are selected Variable name Obs El Ang PLL Description Observed motor electrical angle This variable is present only if a state observer plus PLL sensor is configured as a primary or auxiliary speed sensor and it is relative to this sensor Obs lalpha PLL Observed alpha component of motor phase s current expressed in alpha beta reference This variable is present only if a state observer plus PLL sensor is configured as a primary or auxiliary speed sensor and it is relative to this sensor Obs Rot Spd PLL Observed motor speed This variable is present only if a state observer plus PLL sensor is configured as a primary or auxiliary speed sensor and it is relative to this sensor Obs Ibeta PLL Observed beta component of motor phase s current expressed in alpha beta reference This variable is present only if a state observer plus PLL sensor is configured as a primary or auxiliary speed sensor and it is relative to this sensor Obs Bemf a PLL Obs Bemf b PLL Observed alpha component of motor BEMF expressed in alpha beta reference This variable is present only if a state observer plus PLL sensor is configured as a primary or auxiliary speed sensor and it is relative to this sensor Observed beta component of motor BEMF expressed in alpha beta reference This variable is present only if a state observer plus PL
154. tor control library 2 0 ete ee 11 Example Scena 2 ce ee ea eee ee Ra ee 12 Basic FOC algorithm structure torque control 000 cee eee 16 Speed control loop 2 tetas 16 Different PM motor constructions 00 0 0 ce tees 17 Assumed PMSM reference frame convention 000 ccc eee eee eee eee 18 MTPA trajectory eee 21 MITPA CONtOI GG ABT PAG PNG Bamba ae AG bee ane ea 21 Feed forward current regulation 0 0 cee eee 23 Flux weakening operation scheme nana 24 PID general equation eee tenes 25 Time domain to discrete PID equations 0 0 eee 26 Block diagram of Pl controller 0 0 0 0 00 cee eee 26 Closed loop block diagram 0 0 ttt eee 27 Pole zero cancellation 2 0 0 cee teens 27 Block diagram of closed loop system after pole zero cancellation 28 Va and Vp stator voltage components 000 c eee 29 SVPWM phase voltage waveforms 00 ccc eee ee 29 Transformation from an abc stationary frame to a rotating frame q d 31 Circle limitation working principle 0 0 0 0 000 cet 32 Three shunt topology hardware architecture 1 2 0 00 c eee eee 34 PWM and ADC synchronization 0000 eee 35 Inverter leg and shunt resistor position 2 0 2 0 cee eee 36 Low side switch gate signals low modulation indexes 0 00 cece eee 37 Low side Phase A duty cycle gt DT TN
155. up the system when using an encoder Extra care should be taken over what is considered to be the positive rolling direction this software library assumes that the positive rolling direction is the rolling direction of a machine that is fed with a three phase system of positive sequence Because of this and because of how the encoder output signals are wired to the microcontroller input pins it is possible to have a sign discrepancy between the real rolling direction and the direction that is read To avoid this kind of reading error apply the following procedure 1 Turn the rotor by hand in the direction assumed to be positive and look at the B emf induced on the three motor phases A neutral point may need to be reconstructed with three resistors if the real one is not available 2 Connect the motor phases to the hardware respecting the positive sequence for instance when using the MB459 board a positive sequence of the motor phases may be connected to J5 2 1 and 3 3 Run the firmware in the encoder configuration and turn by hand the rotor in the direction assumed to be positive If the measured speed shown on the LCD is positive the connection is correct otherwise it can be corrected by simply swapping and rewiring the encoder output signals If this is not practical a software setting may be modified instead using the ST MC Workbench GUI see the GUI help file Alignment settings The quadrature encoder is a relative posi
156. using IAR IDE The Motor Control SDK is composed of three projects as shown in Figure 51 which constitute the MC workspace sa Doc ID 18458 Rev 3 61 127 Working environment UM1052 62 127 Figure 51 MC workspace structure 1101110101 0100101111 0001101010 101 User Project 101001010 1001101011 MC Application Project 0101010101 0100 1100100101 0100010100 1010010101 001 MC Library Project MS19321V1 The Motor Control Library project the collection of all the classes 37 among base and derivative classes developed to implement all the features Each class has its own public interface A public interface is the list of the parameters needed to identify an object of that kind and of the methods or functions available Note that in the case of a derivative class applicable methods are those of the specific derived plus those of the base class Further detail is provided in the Advanced developers guide for STM32F 103xx STM32F 100xx PMSM single dual FOC library UM1053 All these interfaces constitute the Motor Control Library Interface The Motor Control Library project is independent from system parameters the only exception is single dual drive configuration and is built as a compiled library not as an executable file see Section 6 3 The Motor Control Application project the application that uses the Motor Control Libra
157. ust be called after UI Init pUICfg is the user interface configurations array See Section 9 2 User interface configuration oDAC is the related DAC object that should be driven by the LCD manager This DAC object should be correctly instantiated before the LCD Init calls See the DAC manager class CDAC s_fwVer is a string that will be displayed in the LCD See Figure 63 STM32 Motor Control demonstration project welcome message containing both the Firmware version and Release version it must be separated by the 0x0 character 3 Periodically call the LCD_UpdateMeasured method This updates LCD GUI variables and calls the LCD_Exec method that performs the LCD screen refresh LCD_Exec oLCD LCD_UpdateMeasured oLCD These functions are performed inside UlTask c The LCD refresh also uses Timebase c or RTOS 9 5 Motor control protocol class CMCP Ul This is a derived class of Ul that is based on the serial communication This class is on the top layer of the serial communication architecture See Figure 77 and manages the highest level of the motor control protocol Doc ID 18458 Rev 3 107 127 User Interface class overview UM1052 9 6 108 127 Figure 77 Serial communication software layers Level increasing STM32 Std Library The frame communication protocol CFCP implements the transport layer of the serial communication It is responsible for the correct transfer of the informa
158. ut 1 Figure 53 as for step 4 then click the Make button to make the build callout 2 Figure 53 If no error or relevant warning appears download the firmware callout 3 Figure 53 and do a test run Figure 53 Workspace batch build JE IAR Embedded Workbench IDE Dae aw Workspace STM32100B EYAL Files a UserProject STM32100B EYAL F CJ Motor control TA ical Marketir Std projecttemplate ee CJ User interface workspace rebuild STEVAL IHM02241 New D workspace rebuild STM32100B EVAL E stm32f1 0x MC itc E Timebase c berte GUIDANCE ONLY E UlTask c THEIR PRODUCT CI Output Gee ICS SHALL NOI DAMAGES WITH EN IN CONNECTI workspace rebuild 5TM3210B EVAL Edit E stm32t1 Ox_itc workspace rebuild 5TM321DE EVAL Edi Build Dverview MC Application MC Library UserProject Clean Rebuild All Ready STMi croelect2 When the system configuration or parameters are modified it may be necessary to rebuild either all three projects or just one The batch command conveniently builds all three to avoid problems This method is not time consuming from the compiler point of view because if a project is not affected by the modification it is not recompiled Then usually after having run tests on the motor or found a fine tune the procedure required to change drive parameters re build and flash the firmware again is shorter only steps 1 5 6 need to be done It s thus suggested
159. v up controller stage The value set in this control is automatically sent to the motor control related object and becomes active on next motor start up allowing the run time tuning of the rev up sequence The final mechanical speed is expressed in RPM la field 5 in Figure 72 To set the final torque reference for the active motor and active rev up controller stage The value set in this control is automatically sent to the motor control related object and becomes active on next motor start up allowing the tuning of the rev up sequence The final torque reference is expressed in ly current and becomes active on next motor start up To convert current expressed in Amps to current expressed in digits use the formula Current s16A Current Amp 65536 Rshunt Aop Vdd micro Stage Field 8 in Figure 70 To set the active rev up stage that receives the Duration F Speed and Final torque reference Iq new values set in Fields 5 6 and 7 It is possible to set the active rev up stage field 6 in Figure 72 Figure 71 shows an example of a rev up sequence Doc ID 18458 Rev 3 101 127 User Interface class overview UM1052 9 102 127 User Interface class overview The STM32 FOC motor control firmware is arranged in software layers Figure 73 Each level can include the interface of the next level with the exception that the STM32 Std Library can be included in every level Figure 73 Softwa
160. variables in the output using the LCD Joystick interface see Section 8 2 3 Configuration and debug page UI_DACChannelConfig CUI oDAC DAC_CHO MC PROTOCOL REG DAC _USER1 4 The user value is physically put in the output when Ul DACExec is executed UlTask c performs the following UI_DACExec CUI ODAC Doc ID 18458 Rev 3 ky UM1052 Serial communication class overview 10 Serial communication class overview Applications on the market that require an electrical motor to be driven usually have the electronics split in two parts application board and motor drive board To drive the system correctly the application board requires a method to send a command to the motor drive board and get a feedback This is usually performed using a serial communication See Figure 78 Figure 78 Serial communication in motor control application Appfic ati boatdil ay ei at nm a HERES l ie Serial communication To target this kind of application a dedicated serial communication protocol has been developed for real time data exchange The aim of this protocol is to implement the feature requested by motor control related applications The implemented protocol is called motor control protocol MCP MCP makes it possible to send commands such as start stop motor and set the target speed to the STM32 FOC motor control firmware and also to tune in real time re
161. vup stage that will be modified The four bytes FS x is the requested new final speed of the selected stage expressed in rpm from the least significant byte to the most significant byte FT_LB and FT_HB are the requested new final torque of the selected stage expressed in digit respectively the least significant byte and the most significant byte 122 127 Doc ID 18458 Rev 3 ky UM1052 Serial communication class overview Note To convert current expressed in Amps to current expressed in digit it is possible to use the formula Current digit Current Amp 65536 Rshunt Aop Vdd micro DR_LB and DR_HB is the requested new duration of the selected stage expressed in milliseconds respectively the least significant byte and the most significant byte The Acknowledgment frame can be of two types e Data Acknowledgment frame if the operation has been successfully completed The payload of this Data Acknowledgment frame will be zero e Error Acknowledgment frame if the operation has not been successfully completed by the firmware The payload of this Error Acknowledgment frame is always 1 The list of error codes is shown in Table 37 10 7 Set current references frame The set current references frame Figure 88 is sent by the Master to modify the current references lg la Figure 88 Set current reference frame Set current references frame PC gt 0x0A 0x04 lq LB lq
162. w density medium density STM32F10B EVAL STM32F1 03 high density XL density Single STM32F10E EVAL motor drive oe 03 high density XL density Dual motor STEVAL IHM022V1 STM32F100 low medium high density STM32F100B EVAL STM32F2xx Single motor drive STM322xG EVAL STM32F2xx Dual motor drive STM32F2xx_dual STM32F4xx Single motor drive STM324xG EVAL STM32F4xx Dual motor drive STEVAL IHM039V1 If the target is not one of the above mentioned ST evaluation boards or if you want to modify the configurations provided right click on User Project callout 3 Figure 56 gt Option to open the Options dialog box Select the correct device part number callout 4 Figure 56 and edit the linker file callout 5 Figure 56 Note MC SDK default linker files reserve an amount of Flash and RAM heap for LCD UI manager see Section 6 5 We recommend that you restore their total size please refer to the STM32 datasheet if you do not need it Once all these settings have been performed the MC Library and MC Application projects are built and you can build the user project callout 6 Figure 56 and download it to the microcontroller memory callout 7 Figure 56 6 6 LCD UI project When an STM 22 evaluation board equipped with LCD such as STM3210B EVAL STM3210E EVAL STM32100B EVAL STEVAL IHM022V1 STM322xG EVAL STM324xG EVAL STEVAL IHM039V 1 is in use you can enable the LCD plus Joystick User Interface a useful feature of the demonstr
163. workGain int16 t MCI_GetPhaseCurrentAmplitude CMCI oMCI returns the motor phase current amplitude 0 to peak in s16A To convert a current expressed in s16A to a current expressed in Ampere use the formula Current A Current s16A Vdd micro V 65536 Rshunt Ohm AmplificationNetworkGain int16 t MCI_GetPhaseVoltageAmplitude CMCI oMCT returns the applied motor phase voltage amplitude 0 to peak in s16V To convert a voltage expressed in s16V to a voltage expressed in Volt use the formula PhaseVoltage V PhaseVoltage s16V Vbus V sart 3 x32767 STC Modality t MCI GetControlMode CMCI oMCI returns the present control mode speed mode or torque mode int16 t MCI_GetImposedMotorDirection CMCI oMCI returns the motor direction imposed by the last command MCI_ExecSpeedRamp MCI_ExecTorqueRamp or MCI_SetCurrentReferences int16 t MCI_GetLastRampFinalSpeed CMCI this returns information about the last ramp final speed sent by the user expressed in tenths of HZ Buffered commands void MCI ExecSpeedRamp CMCI oMCI int16 t hFinalSpeed uint16_t hDurationms sets the control mode in speed control generates a ramp of speed references from real speed to hFinalSpeed parameter to be expressed as mechanical rotor speed tenth of hertz The ramp execution duration is the nDurationms pa
164. ycle going from 0 to 100 Nevertheless when using a single shunt or three shunt resistor configuration and depending on PWM frequency it might be necessary to limit the maximum PWM duty cycle to guarantee the proper functioning of the stator currents reading block For this reason the saturation boundary could be a value slightly lower than S16_MAX depending on PWM switching frequency when using a single shunt or three shunt resistor configuration The circle limitation function performs the discussed stator voltage components saturation as illustrated in Figure 21 Figure 21 Circle limitation working principle V M Va gt Va r S16 MAX r MMI S16 MAX ai14845 Va and V represent the saturated stator voltage components to be passed to the Reverse Park transformation function while Vg and Va are the outputs of the PID current controllers From geometrical considerations it is possible to draw the following relationship vg MMI S16 MAX 1 o v Va MMI S16 MAX vV e CA AA AA Ng 7 FC Vv In order to speed up the computation of the above equations while keeping an adequate resolution the value MMI 516 MAX FC Vv Doc ID 18458 Rev 3 ky UM1052 Overview of the FOC and other implemented algorithms is computed and stored in a look up table for different values of ka and MMI Maximum Modulation Index Doc ID 18458 Rev 3 33 127 Curren
Download Pdf Manuals
Related Search
Description description synonym description meaning description generator description box description of eczema description of shingles rash description of goods description in spanish translation description of rash description ai description spelling description of heaven description text structure description of jesus in the bible description abbreviation desc description of eczema rash description of poison ivy rash description of scabies rash description of heaven in the bible description of hand foot mouth rash description logic description game description picture description de poste description ideas
Related Contents
, RemotelyAnywhere User Guide 7 - Gartentechnik.com 208258 GrandStand_UG_O:207382 GrandStand Uniflex UG Manual de usuario General International 40-250 M1 Use and Care Manual Impex BF-1201 Fitness Equipment User Manual Kenmore 19 cu. ft. Bottom-Freezer Refrigerator - White Manufacturer's Warranty MODE D`EMPLOI DE VOTRE DEMANDE DE VALIDATION 2013 Copyright © All rights reserved.
Failed to retrieve file