{"id":1156,"date":"2021-03-30T11:58:19","date_gmt":"2021-03-30T11:58:19","guid":{"rendered":"https:\/\/imperix.com\/doc\/?p=1156"},"modified":"2025-06-10T08:53:21","modified_gmt":"2025-06-10T08:53:21","slug":"direct-torque-control","status":"publish","type":"post","link":"https:\/\/imperix.com\/doc\/example\/direct-torque-control","title":{"rendered":"Direct Torque Control of a Permanent Magnet Synchronous Motor"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 ez-toc-wrap-right-text counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/imperix.com\/doc\/example\/direct-torque-control\/#Downloads\" >Downloads<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/imperix.com\/doc\/example\/direct-torque-control\/#General-description-and-related-notes\" >General description and related notes<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/imperix.com\/doc\/example\/direct-torque-control\/#Setup-presentation-video\" >Setup presentation video<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/imperix.com\/doc\/example\/direct-torque-control\/#Direct-Torque-Control-implementation\" >Direct Torque Control implementation<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/imperix.com\/doc\/example\/direct-torque-control\/#Motor-torque-and-flux-estimator\" >Motor torque and flux estimator<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/imperix.com\/doc\/example\/direct-torque-control\/#Speed-control-and-motor-torque-reference\" >Speed control and motor torque reference<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/imperix.com\/doc\/example\/direct-torque-control\/#Field-weakening-and-flux-reference\" >Field weakening and flux reference<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/imperix.com\/doc\/example\/direct-torque-control\/#Output-PWM-state-and-cycle-delay\" >Output PWM state and cycle delay<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/imperix.com\/doc\/example\/direct-torque-control\/#Initialization-of-rotor-position\" >Initialization of rotor position<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/imperix.com\/doc\/example\/direct-torque-control\/#Braking-chopper-sizing-and-control\" >Braking chopper sizing and control<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/imperix.com\/doc\/example\/direct-torque-control\/#Experimental-implementation-of-Direct-Torque-Control\" >Experimental implementation of Direct Torque Control<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/imperix.com\/doc\/example\/direct-torque-control\/#Quick-start-guide\" >Quick-start guide<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/imperix.com\/doc\/example\/direct-torque-control\/#Direct-Torque-Control-test-bench\" >Direct Torque Control test bench<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/imperix.com\/doc\/example\/direct-torque-control\/#Experimental-results-of-Direct-Torque-Control\" >Experimental results of Direct Torque Control<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/imperix.com\/doc\/example\/direct-torque-control\/#Flux-and-torque-control\" >Flux and torque control<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/imperix.com\/doc\/example\/direct-torque-control\/#Torque-and-flux-ripples\" >Torque and flux ripples<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/imperix.com\/doc\/example\/direct-torque-control\/#Speed-control\" >Speed control<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/imperix.com\/doc\/example\/direct-torque-control\/#Acknowledgment\" >Acknowledgment<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/imperix.com\/doc\/example\/direct-torque-control\/#References\" >References<\/a><\/li><\/ul><\/nav><\/div>\n\n<p>This application note is a complete example of how Direct Torque Control (DTC) can be implemented to control effectively the speed of a Permanent Magnet Synchronous Motor (PMSM). It gathers the content of different specialized technical notes and provides experimental results of the developed control.<\/p>\n\n\n\n<p>In this note, the Direct Torque Control algorithm is developed using the imperix <a href=\"https:\/\/imperix.ch\/software\/acg-sdk\">ACG SDK<\/a> and is executed entirely on the CPU of a <a href=\"http:\/\/imperix.ch\/products\/control\/bbox\">B-Box RCP<\/a> controller.<\/p>\n\n\n\n<p>Another approach is presented in <a href=\"https:\/\/imperix.com\/doc\/implementation\/fpga-based-direct-torque-control\">FPGA-based DTC using Vivado HLS<\/a>, where the Direct Torque Control algorithm is offloaded to the FPGA, showing much better control performance.<\/p>\n\n\n\n<p>Please note that imperix offers a <a href=\"https:\/\/imperix.com\/products\/electric-motor-drive-bundle\/\">ready-to-use motor drive system<\/a> to develop and test motor control techniques.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img decoding=\"async\" src=\"https:\/\/cdn.imperix.com\/doc\/wp-content\/uploads\/2021\/03\/main_schematic-1024x543.png\" alt=\"Schematic of direct torque control\" class=\"wp-image-1162\" width=\"800\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/main_schematic-1024x543.png 1024w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/main_schematic-300x159.png 300w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/main_schematic-768x407.png 768w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/main_schematic-1536x815.png 1536w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/main_schematic.png 1700w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-downloads\"><span class=\"ez-toc-section\" id=\"Downloads\"><\/span>Downloads<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>The following zip file contains an example of control using <a href=\"https:\/\/www.mathworks.com\/products\/simulink.html\">MATLAB Simulink<\/a>.<\/p>\n\n\n\n<div class=\"wp-block-file\"><a href=\"https:\/\/cdn.imperix.com\/doc\/wp-content\/uploads\/2021\/03\/DTC_of_a_PMSM_Simulink-2.zip\">DTC_of_a_PMSM_Simulink<\/a><a href=\"https:\/\/cdn.imperix.com\/doc\/wp-content\/uploads\/2021\/03\/DTC_of_a_PMSM_Simulink-2.zip\" class=\"wp-block-file__button\" download>Download<\/a><\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-large is-resized\"><img decoding=\"async\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-228-1024x489.png\" alt=\"Direct Torque Control of a Permanent Magnet Synchronous Motor\" class=\"wp-image-1159\" width=\"378\" title=\"Application notes &gt; AN004: Direct Torque Control of a Permanent Magnet Synchronous Motor &gt; image2020-10-22_14-45-28.png\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-228-1024x489.png 1024w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-228-300x143.png 300w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-228-768x367.png 768w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-228-1536x733.png 1536w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-228.png 1625w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-large is-resized\"><img decoding=\"async\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-229.png\" alt=\"Motor inverter direct torque control\" class=\"wp-image-1160\" width=\"378\" title=\"Application notes &gt; AN004: Direct Torque Control of a Permanent Magnet Synchronous Motor &gt; image2020-10-22_14-46-1.png\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-229.png 881w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-229-300x186.png 300w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-229-768x475.png 768w\" sizes=\"(max-width: 881px) 100vw, 881px\" \/><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p>Minimum requirements.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Imperix ACG SDK 3.5.1.1 or newer.<\/li><li>MATLAB Simulink R2016a or newer.<\/li><li>Plexim PLECS VIEWER 4.4.2 or newer (free)<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-general-description-and-related-notes\"><span class=\"ez-toc-section\" id=\"General-description-and-related-notes\"><\/span>General description and related notes<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>The overall system is depicted below and consists of a DC voltage source inverter supplying a PMSM. It notably comprises the following elements:<\/p>\n\n\n\n<figure class=\"wp-block-table aligncenter\"><table><tbody><tr><th><strong>Hardware<\/strong><\/th><th><strong>Software<\/strong><\/th><\/tr><tr><td>Three-phase inverter<br>Permanent magnet synchronous motor<br>Braking chopper<\/td><td>Direct Torque Control<br>Motor speed control (<a href=\"https:\/\/imperix.com\/doc\/implementation\/motor-speed-control\">TN114<\/a>)<br>Position incremental decoder (<a href=\"https:\/\/imperix.com\/doc\/help\/using-the-angle-decoder-modules\">PN104<\/a>)<br>Field weakening<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-setup-presentation-video\"><span class=\"ez-toc-section\" id=\"Setup-presentation-video\"><\/span>Setup presentation video<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Direct Torque Control of a Permanent Magnet Synchronous Motor\" width=\"720\" height=\"405\" src=\"https:\/\/www.youtube.com\/embed\/xK4VE-60vp0?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-direct-torque-control-implementation\"><span class=\"ez-toc-section\" id=\"Direct-Torque-Control-implementation\"><\/span>Direct Torque Control implementation<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>The different parts of the Direct Torque Control algorithm used in this note are presented in what follows.<\/p>\n\n\n\n<p>In this example, the whole Direct Torque Control algorithm is run at the same rate as the sampling. Another approach would be to implement the elements that require a fast reaction time in FPGA (i.e. torque and flux estimator, hysteresis comparators, and the lookup tables). This approach is presented in the <a href=\"https:\/\/imperix.com\/doc\/implementation\/fpga-based-direct-torque-control-using-vivado-hls\">TN133<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-motor-torque-and-flux-estimator\"><span class=\"ez-toc-section\" id=\"Motor-torque-and-flux-estimator\"><\/span>Motor torque and flux estimator<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>The implemented torque and flux estimator is depicted below and is derived from [1]. It is based on the current model of the machine, where the estimated stator flux vector is derived from the stator currents (in the stationary reference frame) as well as the rotor position. This approach assumes that the stator inductance is independent of the rotor position and is thus only applicable to PMSMs with surface magnets.<\/p>\n\n\n\n<p>This estimator has been chosen for its simplicity and accuracy, which mainly depends on rotor position measurement.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"324\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-230-1024x324.png\" alt=\"Torque and flux estimator for direct torque control\" class=\"wp-image-1163\" title=\"Application notes &gt; AN004: Direct Torque Control of a Permanent Magnet Synchronous Motor &gt; flux_and_torque_estimator_current_model.png\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-230-1024x324.png 1024w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-230-300x95.png 300w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-230-768x243.png 768w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-230-1536x486.png 1536w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-230.png 1597w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-speed-control-and-motor-torque-reference\"><span class=\"ez-toc-section\" id=\"Speed-control-and-motor-torque-reference\"><\/span>Speed control and motor torque reference<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>It is well known that a motor speed can be controlled by the applied torque. The plant can be modeled as a first-order transfer function, which can be effectively controlled by a simple PI controller.<\/p>\n\n\n\n<p>The speed error is computed from the variation of the measured rotor position, as addressed in&nbsp;<a href=\"https:\/\/imperix.com\/doc\/help\/using-the-angle-decoder-modules\">PN104<\/a>. The output of the speed controller serves as torque reference for the Direct Torque Control algorithm and is limited to +\/-110% of rated torque to avoid too high stator currents.<\/p>\n\n\n\n<p>The speed control scheme is shown below, with tunable Kp and Ki coefficients. The reset input maintains the integral term of the PI controller equal to zero while speed control is not activated (i.e. while the B-Box PWM outputs are blocked and during the initialization of the rotor position).<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-231-1024x424.png\" alt=\"Speed controller model\" class=\"wp-image-1164\" width=\"512\" height=\"212\" title=\"Application notes &gt; AN004: Direct Torque Control of a Permanent Magnet Synchronous Motor &gt; speed_control.png\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-231-1024x424.png 1024w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-231-300x124.png 300w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-231-768x318.png 768w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-231.png 1522w\" sizes=\"auto, (max-width: 512px) 100vw, 512px\" \/><\/figure><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-field-weakening-and-flux-reference\"><span class=\"ez-toc-section\" id=\"Field-weakening-and-flux-reference\"><\/span>Field weakening and flux reference<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Beyond rated speed, the back-EMF must be reduced, in order to allow sufficient current flow in the motor while keeping the inverter output voltage within the motor rated voltage. In the present note, the back-EMF voltage is reduced by reducing the flux magnitude reference when the rotor speed exceeds the rated speed, as shown below. This is equivalent to imposing a negative current along the d-axis in Field Oriented Control.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-232-1024x507.png\" alt=\"Field weakening for direct torque control\" class=\"wp-image-1165\" width=\"512\" height=\"254\" title=\"Application notes &gt; AN004: Direct Torque Control of a Permanent Magnet Synchronous Motor &gt; image2020-10-21_16-40-56.png\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-232-1024x507.png 1024w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-232-300x149.png 300w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-232-768x380.png 768w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-232.png 1472w\" sizes=\"auto, (max-width: 512px) 100vw, 512px\" \/><\/figure><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-output-pwm-state-and-cycle-delay\"><span class=\"ez-toc-section\" id=\"Output-PWM-state-and-cycle-delay\"><\/span>Output PWM state and cycle delay<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>In Direct Torque Control, the <em>torque<\/em>, <em>flux <\/em>and <em>sector <\/em>states are directly converted into switching states with a lookup table, which makes its implementation particularly easy. The PWM signal generation process is shown below, with the detail of the output lookup table.<br><\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"312\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-233-1024x312.png\" alt=\"Output state lookup table\" class=\"wp-image-1166\" title=\"Application notes &gt; AN004: Direct Torque Control of a Permanent Magnet Synchronous Motor &gt; DTC_LUTs_DO_PWM.png\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-233-1024x312.png 1024w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-233-300x91.png 300w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-233-768x234.png 768w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-233-1536x468.png 1536w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-233.png 1951w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-234.png\" alt=\"Simulink lookup table dialog\" class=\"wp-image-1167\" width=\"573\" height=\"258\" title=\"Application notes &gt; AN004: Direct Torque Control of a Permanent Magnet Synchronous Motor &gt; LUT_sw_states.PNG\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-234.png 643w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-234-300x135.png 300w\" sizes=\"auto, (max-width: 573px) 100vw, 573px\" \/><\/figure><\/div>\n\n\n\n<p>The switching state of each phase leg is then passed to a Direct Output PWM block (DO_PWM). Each of these blocks generates a complementary signal with a dead-time of 1 \u00b5s.<\/p>\n\n\n\n<div class=\"wp-block-simple-alerts-for-gutenberg-alert-boxes sab-alert sab-alert-info\" role=\"alert\">Further details on the selection of a dead-time duration are given in\u00a0<a href=\"https:\/\/imperix.com\/doc\/help\/dead-time-selection-for-imperix-power-modules\">PN115<\/a>.<\/div>\n\n\n\n<p>With DO_PWM, the inverter switching state is updated as soon as the interrupt computation is finished (plus a slight read delay [sub-\u03bcs]). The \u201creaction time\u201d of the algorithm &#8211; i.e. the delay between a sampling instant and the application of the proper switching vector &#8211; is called the \u201ccycle delay\u201d and is the sum of the delays of the table below. This cycle delay, summed with the sampling period, defines the maximum overshoot of the controlled quantities.<\/p>\n\n\n\n<figure class=\"wp-block-table aligncenter\"><table><tbody><tr><th><strong>Delay<\/strong><\/th><th><strong>Value<\/strong><\/th><\/tr><tr><td>ADC conversion<\/td><td>2 \u03bcs<\/td><\/tr><tr><td>ADC read<\/td><td>~400 ns <\/td><\/tr><tr><td>Interrupt duration<\/td><td>5 \u03bcs<\/td><\/tr><tr><td>Driver write<\/td><td>~400 ns<\/td><\/tr><tr><td><strong>Total (cycle delay)<\/strong><\/td><td><strong>8 \u03bcs<\/strong><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-initialization-of-rotor-position\"><span class=\"ez-toc-section\" id=\"Initialization-of-rotor-position\"><\/span>Initialization of rotor position<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>The rotor position encoder used in this application is an incremental encoder and needs therefore to be initialized in order to give an absolute position of the rotor. In the scope of this application example, the initialization phase is manual and has been simplified to the minimum viable solution; other approaches are of course possible. The initialization procedure is as follows:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Before energizing the converter, one complete rotation of the rotor is done manually to reset the decoder counter with a pulse on the <em>Z<\/em> signal.<\/li><li>The converter is energized (DC bus charged) and a current (typically 0.5 p.u.) is applied to the phase <em>a<\/em> of the motor. This will align the rotor with one of the poles of phase <em>a<\/em>.<\/li><li>The offset of the measured angle is compensated, in order to measure 0 rad when the rotor is aligned with phase <em>a<\/em> (i.e. when the permanent magnet flux is completely along the \u03b1-axis).<\/li><\/ol>\n\n\n\n<p>This initialization is necessary for the flux estimator to work properly.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-braking-chopper-sizing-and-control\"><span class=\"ez-toc-section\" id=\"Braking-chopper-sizing-and-control\"><\/span>Braking chopper sizing and control<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>In drive applications, the braking energy of the controlled motor is sent back towards the DC side of the inverter. If the back-EMF voltage of the machine exceeds the DC bus voltage (which can occur at high speed or if reduced DC voltage is used), the generated energy is transferred toward the DC side through the inverter diodes. If the DC source is not capable of absorbing this energy (e.g. unidirectional source) this results in a rising DC bus voltage, possibly damaging the equipment. One possible way of avoiding such behavior is to add a braking chopper on the DC bus to burn the extra energy into a power resistor when needed.<\/p>\n\n\n\n<p>In the present implementation, the braking chopper is simply built with an additional phase leg and a braking resistor connected between its switching point and the DC- terminal of the converter. The lower switch is left open, and the duty-cycle applied on the upper switch allows to control the voltage on the resistor, and thus the amount of burnt power. The duty-cycle is:<\/p>\n\n\n\n<p>$$d_{BC} = \\cfrac{V_{dc}-V_{dc,n}-5}{10} = \\cfrac{V_{dc}-305}{10},$$<\/p>\n\n\n\n<p>which starts acting at 305 V and keeps the DC bus voltage below 315 V, as shown below.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-235-1024x413.png\" alt=\"Breaking chopper circuit and regulation\" class=\"wp-image-1168\" width=\"654\" height=\"263\" title=\"Application notes &gt; AN004: Direct Torque Control of a Permanent Magnet Synchronous Motor &gt; Braking_chopper.png\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-235-1024x413.png 1024w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-235-300x121.png 300w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-235-768x310.png 768w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-235-1536x619.png 1536w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-235.png 2014w\" sizes=\"auto, (max-width: 654px) 100vw, 654px\" \/><\/figure><\/div>\n\n\n\n<p>The braking resistor was sized to allow sufficient power dissipation at 315 V. With a 50 \u03a9 resistor, the braking chopper can dissipate up to 2 kW, which is well above the rated power of the machine.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-experimental-implementation-of-direct-torque-control\"><span class=\"ez-toc-section\" id=\"Experimental-implementation-of-Direct-Torque-Control\"><\/span>Experimental implementation of Direct Torque Control<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-quick-start-guide\"><span class=\"ez-toc-section\" id=\"Quick-start-guide\"><\/span>Quick-start guide<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>This section gives instructions on how to build and use a similar setup to drive a PMSM.<\/p>\n\n\n\n<div class=\"wp-block-simple-alerts-for-gutenberg-alert-boxes sab-alert sab-alert-warning\" role=\"alert\">Don\u2019t forget to properly configure protection thresholds on the B-Box RCP <strong>before starting <\/strong>experimental activities. The related documentation can be found in\u00a0<a href=\"https:\/\/imperix.com\/doc\/help\/analog-front-end-configuration-on-b-box-rcp\">PN105<\/a>.<\/div>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-required-hardware\">Required hardware<\/h4>\n\n\n\n<p>The converter part can be made with the following standard imperix equipment:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>1x <a href=\"https:\/\/imperix.com\/products\/control\/bbox\">B-Box RCP<\/a> controller with <a href=\"https:\/\/imperix.com\/software\/acg-sdk\">ACG SDK<\/a> software<\/li><li>4x <a href=\"https:\/\/imperix.com\/products\/power\/peb\">PEB8032 or PEB4046<\/a> half-bridge modules (very fast dV\/dt can be harmful to some machines: IGBT modules may be preferred over SiC)<\/li><li>1x <a href=\"https:\/\/imperix.com\/products\/power\/rack-material\"><em>type C<\/em> (or <em>type A)<\/em> rack<\/a> for power modules<\/li><li>1x <a href=\"https:\/\/imperix.com\/products\/control\/accessories\">VHDCI breakout board<\/a> for easy interfacing of the position encoder signals<\/li><li>(optional) 1x emergency button connected to the interlock connector of the B-Box<\/li><\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-i-os-configuration\">I\/Os configuration<\/h4>\n\n\n\n<p>A possible configuration is detailed below.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><th><strong>Physical value<\/strong><\/th><th><strong>Sensor<\/strong><\/th><th><strong>B-Box input<\/strong><\/th><th><strong>Input configuration<\/strong><\/th><\/tr><tr><td>\\(I_{s,a}\\)<\/td><td>PEB8032<\/td><td>AI0<\/td><td>Impedance: Low-Z | Gain: x8 | HW limits: [-3.5 V; +3.5 V]<\/td><\/tr><tr><td>\\(I_{s,b}\\)<\/td><td>PEB8032<\/td><td>AI1<\/td><td>Impedance: Low-Z | Gain: x8 | HW limits: [-3.5 V; +3.5 V]<\/td><\/tr><tr><td>\\(I_{s,c}\\)<\/td><td>PEB8032<\/td><td>AI2<\/td><td>Impedance: Low-Z | Gain: x8 | HW limits: [-3.5 V; +3.5 V]<\/td><\/tr><tr><td>\\(V_{dc}\\)<\/td><td>DIN800V *<\/td><td>AI3<\/td><td>Impedance: High-Z | Gain: x8 | HW limits: [-1 V; 7 V]<\/td><\/tr><\/tbody><\/table><figcaption>Analog measurements<\/figcaption><\/figure>\n\n\n\n<p class=\"has-text-align-right\">* can also be measured by the braking chopper leg embedded sensor<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-table\"><table><tbody><tr><th><strong>PWM signal<\/strong><\/th><th><strong>B-Box PWM output<\/strong><\/th><\/tr><tr><td>S<sub>aH<\/sub> &#8211; S<sub>aL<\/sub><\/td><td>Channel 0<\/td><\/tr><tr><td>S<sub>bH<\/sub> &#8211; S<sub>bL<\/sub><\/td><td>Channel 1<\/td><\/tr><tr><td>S<sub>cH<\/sub> &#8211; S<sub>cL<\/sub><\/td><td>Channel 2<\/td><\/tr><tr><td>S<sub>BC<\/sub><\/td><td>Lane 6 (CH 3H)<\/td><\/tr><\/tbody><\/table><figcaption>PWM signals<\/figcaption><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-table\"><table><tbody><tr><th><strong>GPI<\/strong><\/th><th><strong>Signal<\/strong><\/th><\/tr><tr><td>0<\/td><td>A<\/td><\/tr><tr><td>1<\/td><td>B<\/td><\/tr><tr><td>2<\/td><td>Z<\/td><\/tr><tr><td>3<\/td><td>\\A<\/td><\/tr><tr><td>4<\/td><td>\\B<\/td><\/tr><tr><td>5<\/td><td>\\Z<\/td><\/tr><\/tbody><\/table><figcaption>Digital inputs (encoder)<\/figcaption><\/figure>\n<\/div>\n<\/div>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-start-up-procedure\">Start-up procedure<\/h4>\n\n\n\n<p>The commissioning of the converter consists of the following steps:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Configure the analog inputs of the B-Box, according to the table above.<\/li><li>Build the Simulink model (Ctrl+B). This opens Cockpit and allows to connect to the B-Box. Further getting-started instructions are available in <a href=\"https:\/\/imperix.com\/doc\/help\/programming-imperix-controllers\" target=\"_blank\" rel=\"noreferrer noopener\">Programming and operating imperix controllers<\/a>.<\/li><li>Calibrate the current sensors by setting their offsets in their respective ADC blocks and re-build the model.<\/li><li>Initialize the rotor position (see above section). To that end, in Cockpit, set <code>init_procedure = 1<\/code> and enable\/disable the PWM outputs (Ctrl+E\/Ctrl+D).<\/li><li>Disable the PWM outputs and charge the DC bus (200 V) from the DC source.<\/li><li>Set <code>init_procedure = 0<\/code>, make sure the <code>speed_ref<\/code> has a reasonable value and enable the PWM outputs.<\/li><\/ol>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-direct-torque-control-test-bench\"><span class=\"ez-toc-section\" id=\"Direct-Torque-Control-test-bench\"><\/span>Direct Torque Control test bench<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>The Direct Torque Control algorithm has been validated experimentally using the following test bench. The different elements of the test bench are shown below.<\/p>\n\n\n\n<div class=\"wp-block-columns are-vertically-aligned-bottom is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-vertically-aligned-bottom is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"825\" height=\"1024\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-8-825x1024.jpeg\" alt=\"Motor inverter for direct torque control\" class=\"wp-image-1197\" title=\"Application notes &gt; AN004: Direct Torque Control of a Permanent Magnet Synchronous Motor &gt; DTC_setup_1.JPEG\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-8-825x1024.jpeg 825w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-8-242x300.jpeg 242w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-8-768x954.jpeg 768w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-8-1237x1536.jpeg 1237w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-8.jpeg 1308w\" sizes=\"auto, (max-width: 825px) 100vw, 825px\" \/><figcaption>Motor drive inverter<\/figcaption><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-bottom is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"707\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-9-1024x707.jpeg\" alt=\"Motor testbench with permanent magnet motor\" class=\"wp-image-1198\" title=\"Application notes &gt; AN004: Direct Torque Control of a Permanent Magnet Synchronous Motor &gt; DTC_setup_2.JPEG\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-9-1024x707.jpeg 1024w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-9-300x207.jpeg 300w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-9-768x531.jpeg 768w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-9-1536x1061.jpeg 1536w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-9.jpeg 1604w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>Motor test bench<\/figcaption><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p>The inverter and the chopper leg are implemented with four <a href=\"https:\/\/imperix.com\/products\/power\/peb\">PEB8032<\/a> modules. The machine parameters are:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><th>Model: Control techniques 095U2B300BACAA100190<\/th><\/tr><tr><td><strong>Parameter<\/strong><\/td><td><strong>Value<\/strong><\/td><td><strong>Unit<\/strong><\/td><\/tr><tr><td>Rated power<\/td><td>1.23<\/td><td>kW<\/td><\/tr><tr><td>Pole pairs<\/td><td>3<\/td><td>&#8211;<\/td><\/tr><tr><td>Rated phase voltage<\/td><td>460<\/td><td>V<\/td><\/tr><tr><td>Rated phase current<\/td><td>2.7<\/td><td>A<\/td><\/tr><tr><td>Rated mechanical speed<\/td><td>3000<\/td><td>rpm<\/td><\/tr><tr><td>Rated torque<\/td><td>3.9<\/td><td>Nm<\/td><\/tr><tr><td>Stator resistance<\/td><td>3.4<\/td><td>Ohm<\/td><\/tr><tr><td>Stator inductance (d and q axis)<\/td><td>24.3<\/td><td>mH<\/td><\/tr><tr><td>Permanent magnet flux that encircles the stator winding<\/td><td>0.25<\/td><td>Wb<\/td><\/tr><tr><td>Moment of inertia (PMSM only)<\/td><td>2.9<\/td><td>kg cm<sup>2<\/sup><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><br>The PMSM has a built-in encoder with differential outputs, Z signal and 4096 ppr.<\/p>\n\n\n\n<p>The operating conditions are:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><th><strong>Parameter<\/strong><\/th><th><strong>Value<\/strong><\/th><\/tr><tr><td>Load torque<\/td><td>2 Nm<\/td><\/tr><tr><td>DC link voltage<\/td><td>200 V<\/td><\/tr><tr><td>Interrupt and sampling frequency (unless otherwise specified)<\/td><td>40 kHz<\/td><\/tr><tr><td>Torque comparator tolerance<\/td><td>+\/- 5% \\(T_n\\) = +\/- 0.195 Nm<\/td><\/tr><tr><td>Flux comparator tolerance<\/td><td>+\/- 2% \\(\\Psi_n\\) = +\/- 5 mWb<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-experimental-results-of-direct-torque-control\"><span class=\"ez-toc-section\" id=\"Experimental-results-of-Direct-Torque-Control\"><\/span>Experimental results of Direct Torque Control<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-flux-and-torque-control\"><span class=\"ez-toc-section\" id=\"Flux-and-torque-control\"><\/span>Flux and torque control<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>A detailed look at the samples of the torque and flux estimators is shown below. As soon as a comparator limit is reached, the appropriate switching vector is applied to produce the required effect on torque and flux. It can be seen that as soon as the torque estimation reaches the reference level (2 Nm), a zero switching vector is applied (000 or 111), with the effect of keeping the flux magnitude constant. It can also be noticed that the rate of decrease of torque is the fastest dynamic and can reach 4600 Nm\/s. This suggests that the maximum limit violation of the estimated torque with a 40 kHz sampling is around 0.11 Nm.<\/p>\n\n\n\n<p>Finally, it can be seen in the displayed window that the maximum switching frequency is 10 kHz. This maximum switching frequency is limited by a combination of the system dynamics (in particular motor inductance and DC bus voltage) and the hysteresis bandwidth of the comparators, but its absolute maximum value is half the control frequency.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-236-1024x662.png\" alt=\"Torque and flux experimental results\" class=\"wp-image-1182\" width=\"656\" height=\"423\" title=\"Application notes &gt; AN004: Direct Torque Control of a Permanent Magnet Synchronous Motor &gt; 40kHz_torque_and_flux_v2.png\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-236-1024x662.png 1024w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-236-300x194.png 300w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-236-768x496.png 768w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-236-1536x993.png 1536w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-236-2048x1323.png 2048w\" sizes=\"auto, (max-width: 656px) 100vw, 656px\" \/><\/figure><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-torque-and-flux-ripples\"><span class=\"ez-toc-section\" id=\"Torque-and-flux-ripples\"><\/span>Torque and flux ripples<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>To characterize the ability of the control to keep the torque and flux values within their tolerance, the amplitude of their ripples has to be computed. It has been proposed in [2] to compute a \u201cstandard amplitude\u201d of the ripples as follows:<\/p>\n\n\n\n<p>$$A_{std} = \\displaystyle\\sqrt{\\frac{3}{N}\\sum^N_{i=1}(\\hat{x}_i-x_i^*)^2},$$<\/p>\n\n\n\n<p>with \\(\\hat{x}_i\\) the ith sample of the estimated quantity, and \\(x_i^*\\) the ith sample of the reference value. This corresponds to the standard deviation around the reference value, multiplied by \\(\\sqrt{3}\\) to get the amplitude of the ripples (amplitude of a triangular waveform). The figure below shows how the above-defined standard amplitude gives a fair idea of the mean amplitude of the torque ripples.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"462\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-237-1024x462.png\" alt=\"Torque ripple measurements\" class=\"wp-image-1183\" title=\"Application notes &gt; AN004: Direct Torque Control of a Permanent Magnet Synchronous Motor &gt; std_amplitude.png\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-237-1024x462.png 1024w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-237-300x135.png 300w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-237-768x347.png 768w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-237.png 1081w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Using that definition, the following torque and flux ripples amplitudes have been obtained, for different sampling frequencies:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><th><strong>Sampling and control frequency<\/strong><\/th><th><strong>Torque ripple standard amplitude<\/strong><\/th><th><strong>Flux ripple standard amplitude<\/strong><\/th><\/tr><tr><td><\/td><td>[Nm] (%\\(T_n\\))<\/td><td>[mWb] (%\\(\\Psi_n\\))<\/td><\/tr><tr><td>10 kHz<\/td><td>0.58 (15%)<\/td><td>13.26 (5.3%)<\/td><\/tr><tr><td>20 kHz<\/td><td>0.36 (9.3%)<\/td><td>8.25 (3.3%)<\/td><\/tr><tr><td>40 kHz<\/td><td>0.27 (7.0%)<\/td><td>6.74 (2.69%)<\/td><\/tr><tr><td>150 kHz<\/td><td>0.27 (7.0%)<\/td><td>5.57 (2.23%)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><br>It is clear that increasing the sampling and control frequency decreases the torque and flux ripples, since the reaction time of the algorithm is shortened. The torque and flux ripples are inevitably larger than the hysteresis comparator thresholds, for the reasons already mentioned.<\/p>\n\n\n\n<p>The same can be observed on the stator currents below. The operating speed is 100 rad\/s and the load torque is 2 Nm. In that operating point, the torque is always an accelerating torque and is controlled between \\(T_{em}^*\\) and \\(T_{em}^*-\\varepsilon\\).<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"842\" height=\"573\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/worddavd3e698bc8cdd6fcdcbb8ce16d2979ace.png\" alt=\"Direct torque control performance\" class=\"wp-image-1185\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/worddavd3e698bc8cdd6fcdcbb8ce16d2979ace.png 842w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/worddavd3e698bc8cdd6fcdcbb8ce16d2979ace-300x204.png 300w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/worddavd3e698bc8cdd6fcdcbb8ce16d2979ace-768x523.png 768w\" sizes=\"auto, (max-width: 842px) 100vw, 842px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-speed-control\"><span class=\"ez-toc-section\" id=\"Speed-control\"><\/span>Speed control<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>An example of a step change in the speed reference is shown below. It shows the ability of the control to follow a speed reversal from 40 to \u221240 rad\/s. As the applied torque is a deceleration torque, the speed change is very fast and the complete speed reversal is achieved in just above 300 ms. The figure shows that the phase order is actually changed during the reversal.<\/p>\n\n\n\n<p>Another interesting point to raise is the negative power flow when the speed and torque have opposite signs. In this case, the energy stored in the inertia of the rotating mass is transferred back towards the source and burned in the braking chopper.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-239.png\" alt=\"Speed control results with direct torque control\" class=\"wp-image-1186\" width=\"601\" height=\"396\" title=\"Application notes &gt; AN004: Direct Torque Control of a Permanent Magnet Synchronous Motor &gt; worddav37813c2fd48a1f3d7e6d59b8140d26a2.png?version=1&amp;modificationDate=1582098969864&amp;cacheVersion=1&amp;api=v2&amp;width=393\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-239.png 897w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-239-300x198.png 300w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-239-768x506.png 768w\" sizes=\"auto, (max-width: 601px) 100vw, 601px\" \/><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-acknowledgment\"><span class=\"ez-toc-section\" id=\"Acknowledgment\"><\/span>Acknowledgment<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>The setup was built thanks to laboratory facilities made available by Prof. Samuel Chevailler at the HES-SO in Sion, Switzerland. Many thanks indeed!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-references\"><span class=\"ez-toc-section\" id=\"References\"><\/span>References<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>[1] J. Mengjia, S. Cenwei, Q. Jianqi, and L. Ruiguang, \u201cStator flux estimation for direct torque<br>controlled surface mounted permanent magnet synchronous motor drives over wide speed region,\u201d in 2005 International Conference on Electrical Machines and Systems, vol. 1, Sept 2005,<br>pp. 350\u2013354.<\/p>\n\n\n\n<p>[2] J. Orsinger, \u201cControl of Variable-Speed Electric Drives\u201c, <em>Master\u2019s thesis, <\/em>Aug 2017<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The note introduces an example of Direct Torque Control (DTC) for an electric drive using a permanent magnet synchronous motor (PMSM) and a programmable inverter.<\/p>\n","protected":false},"author":2,"featured_media":1157,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"categories":[2],"tags":[18],"software-environments":[103],"provided-results":[108],"related-products":[50,32,166,114,111],"guidedreadings":[],"tutorials":[131],"user-manuals":[],"coauthors":[63],"class_list":["post-1156","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-example","tag-motor-drives","software-environments-matlab","provided-results-experimental","related-products-acg-sdk","related-products-b-box-rcp","related-products-b-box-rcp-3-0","related-products-motor","related-products-pm","tutorials-direct-torque-control-of-a-permanent-magnet-synchronous-motor"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Direct Torque Control of a Permanent Magnet Synchronous Motor - imperix<\/title>\n<meta name=\"description\" content=\"The note introduces an example of Direct Torque Control (DTC) for an electric drive using a PMSM motor and a programmable inverter.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/imperix.com\/doc\/example\/direct-torque-control\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Direct Torque Control of a Permanent Magnet Synchronous Motor - imperix\" \/>\n<meta property=\"og:description\" content=\"The note introduces an example of Direct Torque Control (DTC) for an electric drive using a PMSM motor and a programmable inverter.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/imperix.com\/doc\/example\/direct-torque-control\" \/>\n<meta property=\"og:site_name\" content=\"imperix\" \/>\n<meta property=\"article:published_time\" content=\"2021-03-30T11:58:19+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-10T08:53:21+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image2020-10-23_13-44-53-e1749545596260.png\" \/>\n\t<meta property=\"og:image:width\" content=\"682\" \/>\n\t<meta property=\"og:image:height\" content=\"456\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Julien Orsinger\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Julien Orsinger\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/example\\\/direct-torque-control#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/example\\\/direct-torque-control\"},\"author\":{\"name\":\"Julien Orsinger\",\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/#\\\/schema\\\/person\\\/65ef663818eab76f53cc627ab80e0a51\"},\"headline\":\"Direct Torque Control of a Permanent Magnet Synchronous Motor\",\"datePublished\":\"2021-03-30T11:58:19+00:00\",\"dateModified\":\"2025-06-10T08:53:21+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/example\\\/direct-torque-control\"},\"wordCount\":2348,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/example\\\/direct-torque-control#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/imperix.com\\\/doc\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/image2020-10-23_13-44-53-e1749545596260.png\",\"keywords\":[\"Motor drives\"],\"articleSection\":[\"Application notes\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/imperix.com\\\/doc\\\/example\\\/direct-torque-control#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/example\\\/direct-torque-control\",\"url\":\"https:\\\/\\\/imperix.com\\\/doc\\\/example\\\/direct-torque-control\",\"name\":\"Direct Torque Control of a Permanent Magnet Synchronous Motor - imperix\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/example\\\/direct-torque-control#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/example\\\/direct-torque-control#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/imperix.com\\\/doc\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/image2020-10-23_13-44-53-e1749545596260.png\",\"datePublished\":\"2021-03-30T11:58:19+00:00\",\"dateModified\":\"2025-06-10T08:53:21+00:00\",\"description\":\"The note introduces an example of Direct Torque Control (DTC) for an electric drive using a PMSM motor and a programmable inverter.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/example\\\/direct-torque-control#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/imperix.com\\\/doc\\\/example\\\/direct-torque-control\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/example\\\/direct-torque-control#primaryimage\",\"url\":\"https:\\\/\\\/imperix.com\\\/doc\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/image2020-10-23_13-44-53-e1749545596260.png\",\"contentUrl\":\"https:\\\/\\\/imperix.com\\\/doc\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/image2020-10-23_13-44-53-e1749545596260.png\",\"width\":682,\"height\":456,\"caption\":\"Train bogie with direct torque controlled motors\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/example\\\/direct-torque-control#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Knowledge base\",\"item\":\"https:\\\/\\\/imperix.com\\\/doc\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Application notes\",\"item\":\"https:\\\/\\\/imperix.com\\\/doc\\\/category\\\/example\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Direct Torque Control of a Permanent Magnet Synchronous Motor\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/#website\",\"url\":\"https:\\\/\\\/imperix.com\\\/doc\\\/\",\"name\":\"imperix\",\"description\":\"power electronics\",\"publisher\":{\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/imperix.com\\\/doc\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/#organization\",\"name\":\"imperix\",\"url\":\"https:\\\/\\\/imperix.com\\\/doc\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/imperix.com\\\/doc\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/imperix_logo.png\",\"contentUrl\":\"https:\\\/\\\/imperix.com\\\/doc\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/imperix_logo.png\",\"width\":350,\"height\":120,\"caption\":\"imperix\"},\"image\":{\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/#\\\/schema\\\/person\\\/65ef663818eab76f53cc627ab80e0a51\",\"name\":\"Julien Orsinger\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0a0328b09c6abe61fa1e263a1066dcb26ea8f3b9e8b1d78056047620947bb388?s=96&d=mm&r=g6545a7220411572e799ad58574cce259\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0a0328b09c6abe61fa1e263a1066dcb26ea8f3b9e8b1d78056047620947bb388?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0a0328b09c6abe61fa1e263a1066dcb26ea8f3b9e8b1d78056047620947bb388?s=96&d=mm&r=g\",\"caption\":\"Julien Orsinger\"},\"description\":\"Julien is a senior power electronics engineer. On the knowledge base, he is acting as the editorial manager and is therefore the co-author of numerous articles on a broad variety of topics.\",\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/in\\\/julien-orsinger-640ab2129\\\/\"],\"url\":\"https:\\\/\\\/imperix.com\\\/doc\\\/author\\\/orsinger\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Direct Torque Control of a Permanent Magnet Synchronous Motor - imperix","description":"The note introduces an example of Direct Torque Control (DTC) for an electric drive using a PMSM motor and a programmable inverter.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/imperix.com\/doc\/example\/direct-torque-control","og_locale":"en_US","og_type":"article","og_title":"Direct Torque Control of a Permanent Magnet Synchronous Motor - imperix","og_description":"The note introduces an example of Direct Torque Control (DTC) for an electric drive using a PMSM motor and a programmable inverter.","og_url":"https:\/\/imperix.com\/doc\/example\/direct-torque-control","og_site_name":"imperix","article_published_time":"2021-03-30T11:58:19+00:00","article_modified_time":"2025-06-10T08:53:21+00:00","og_image":[{"width":682,"height":456,"url":"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image2020-10-23_13-44-53-e1749545596260.png","type":"image\/png"}],"author":"Julien Orsinger","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Julien Orsinger","Est. reading time":"15 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/imperix.com\/doc\/example\/direct-torque-control#article","isPartOf":{"@id":"https:\/\/imperix.com\/doc\/example\/direct-torque-control"},"author":{"name":"Julien Orsinger","@id":"https:\/\/imperix.com\/doc\/#\/schema\/person\/65ef663818eab76f53cc627ab80e0a51"},"headline":"Direct Torque Control of a Permanent Magnet Synchronous Motor","datePublished":"2021-03-30T11:58:19+00:00","dateModified":"2025-06-10T08:53:21+00:00","mainEntityOfPage":{"@id":"https:\/\/imperix.com\/doc\/example\/direct-torque-control"},"wordCount":2348,"commentCount":0,"publisher":{"@id":"https:\/\/imperix.com\/doc\/#organization"},"image":{"@id":"https:\/\/imperix.com\/doc\/example\/direct-torque-control#primaryimage"},"thumbnailUrl":"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image2020-10-23_13-44-53-e1749545596260.png","keywords":["Motor drives"],"articleSection":["Application notes"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/imperix.com\/doc\/example\/direct-torque-control#respond"]}]},{"@type":"WebPage","@id":"https:\/\/imperix.com\/doc\/example\/direct-torque-control","url":"https:\/\/imperix.com\/doc\/example\/direct-torque-control","name":"Direct Torque Control of a Permanent Magnet Synchronous Motor - imperix","isPartOf":{"@id":"https:\/\/imperix.com\/doc\/#website"},"primaryImageOfPage":{"@id":"https:\/\/imperix.com\/doc\/example\/direct-torque-control#primaryimage"},"image":{"@id":"https:\/\/imperix.com\/doc\/example\/direct-torque-control#primaryimage"},"thumbnailUrl":"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image2020-10-23_13-44-53-e1749545596260.png","datePublished":"2021-03-30T11:58:19+00:00","dateModified":"2025-06-10T08:53:21+00:00","description":"The note introduces an example of Direct Torque Control (DTC) for an electric drive using a PMSM motor and a programmable inverter.","breadcrumb":{"@id":"https:\/\/imperix.com\/doc\/example\/direct-torque-control#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/imperix.com\/doc\/example\/direct-torque-control"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/imperix.com\/doc\/example\/direct-torque-control#primaryimage","url":"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image2020-10-23_13-44-53-e1749545596260.png","contentUrl":"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image2020-10-23_13-44-53-e1749545596260.png","width":682,"height":456,"caption":"Train bogie with direct torque controlled motors"},{"@type":"BreadcrumbList","@id":"https:\/\/imperix.com\/doc\/example\/direct-torque-control#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Knowledge base","item":"https:\/\/imperix.com\/doc\/"},{"@type":"ListItem","position":2,"name":"Application notes","item":"https:\/\/imperix.com\/doc\/category\/example"},{"@type":"ListItem","position":3,"name":"Direct Torque Control of a Permanent Magnet Synchronous Motor"}]},{"@type":"WebSite","@id":"https:\/\/imperix.com\/doc\/#website","url":"https:\/\/imperix.com\/doc\/","name":"imperix","description":"power electronics","publisher":{"@id":"https:\/\/imperix.com\/doc\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/imperix.com\/doc\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/imperix.com\/doc\/#organization","name":"imperix","url":"https:\/\/imperix.com\/doc\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/imperix.com\/doc\/#\/schema\/logo\/image\/","url":"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/imperix_logo.png","contentUrl":"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/imperix_logo.png","width":350,"height":120,"caption":"imperix"},"image":{"@id":"https:\/\/imperix.com\/doc\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/imperix.com\/doc\/#\/schema\/person\/65ef663818eab76f53cc627ab80e0a51","name":"Julien Orsinger","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/0a0328b09c6abe61fa1e263a1066dcb26ea8f3b9e8b1d78056047620947bb388?s=96&d=mm&r=g6545a7220411572e799ad58574cce259","url":"https:\/\/secure.gravatar.com\/avatar\/0a0328b09c6abe61fa1e263a1066dcb26ea8f3b9e8b1d78056047620947bb388?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0a0328b09c6abe61fa1e263a1066dcb26ea8f3b9e8b1d78056047620947bb388?s=96&d=mm&r=g","caption":"Julien Orsinger"},"description":"Julien is a senior power electronics engineer. On the knowledge base, he is acting as the editorial manager and is therefore the co-author of numerous articles on a broad variety of topics.","sameAs":["https:\/\/www.linkedin.com\/in\/julien-orsinger-640ab2129\/"],"url":"https:\/\/imperix.com\/doc\/author\/orsinger"}]}},"_links":{"self":[{"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/posts\/1156","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/comments?post=1156"}],"version-history":[{"count":40,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/posts\/1156\/revisions"}],"predecessor-version":[{"id":14513,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/posts\/1156\/revisions\/14513"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/media\/1157"}],"wp:attachment":[{"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/media?parent=1156"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/categories?post=1156"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/tags?post=1156"},{"taxonomy":"software-environments","embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/software-environments?post=1156"},{"taxonomy":"provided-results","embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/provided-results?post=1156"},{"taxonomy":"related-products","embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/related-products?post=1156"},{"taxonomy":"guidedreadings","embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/guidedreadings?post=1156"},{"taxonomy":"tutorials","embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/tutorials?post=1156"},{"taxonomy":"user-manuals","embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/user-manuals?post=1156"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/coauthors?post=1156"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}