{"id":227,"date":"2021-03-23T10:00:02","date_gmt":"2021-03-23T10:00:02","guid":{"rendered":"https:\/\/imperix.com\/doc\/?p=227"},"modified":"2025-12-19T10:43:11","modified_gmt":"2025-12-19T10:43:11","slug":"simulation-essentials-simulink","status":"publish","type":"post","link":"https:\/\/imperix.com\/doc\/help\/simulation-essentials-simulink","title":{"rendered":"Simulation essentials with Simulink"},"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\/help\/simulation-essentials-simulink\/#Fundamental-concepts\" >Fundamental concepts<\/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\/help\/simulation-essentials-simulink\/#Working-principle-of-the-main-blocks\" >Working principle of the main blocks<\/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\/help\/simulation-essentials-simulink\/#Configuration-block-and-its-clocks\" >Configuration block and its clocks<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/imperix.com\/doc\/help\/simulation-essentials-simulink\/#ADC\" >ADC<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/imperix.com\/doc\/help\/simulation-essentials-simulink\/#PWM\" >PWM<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/imperix.com\/doc\/help\/simulation-essentials-simulink\/#Mastering-the-sample-times\" >Mastering the sample times<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/imperix.com\/doc\/help\/simulation-essentials-simulink\/#Verifying-the-sample-times\" >Verifying the sample times<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/imperix.com\/doc\/help\/simulation-essentials-simulink\/#Altering-the-sample-times\" >Altering the sample times<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/imperix.com\/doc\/help\/simulation-essentials-simulink\/#Further-readings\" >Further readings<\/a><\/li><\/ul><\/nav><\/div>\n\n<p>This note provides in-depth content for an accurate and efficient offline simulation of an imperix controller and the corresponding plant model using&nbsp;<a href=\"https:\/\/imperix.com\/software\/acg-sdk\/\">ACG SDK<\/a>&nbsp;on Simulink.<\/p>\n\n\n\n<p>Recommended articles related to the ACG workflow are shown below. A series of video tutorials is also available with similar content.<\/p>\n\n\n\n<style>\n  .tech-table {\n    border-collapse: collapse;\n    width: 100%;\n    max-width: 800px;\n    color: #000;\n  }\n\n  .tech-table th {\n    text-align: left;\n    font-weight: bold;\n    padding: 6px;\n    font-size: 18px;\n  }\n\n  \/* The first column header is empty in the image *\/\n  .tech-table th:f<style>\n  .tech-table {\n    border-collapse: collapse;\n    width: 100%;\n    max-width: 800px;\n    color: #000;\n  }\n\n  .tech-table th {\n    text-align: left;\n    font-weight: bold;\n    font-style: italic;\n    padding: 6px;\n    font-size: 18px;\n  }\n\n  .tech-table th:first-child {\n    width: 20%;\n  }\n\n  .tech-table td {\n    background-color: #f2f2f2;\n    padding: 8px;\n    vertical-align: top;\n    border: 4px solid white;\n  }\n\n  \/* UPDATED PN styling *\/\n  .pn-code {\n    color: #d32f2f;\n    display: inline;\n    margin-left: 6px;\n    font-weight: normal;\n    white-space: nowrap;\n  }\n\n  \/* UPDATED Video styling *\/\n  .video-code {\n    color: #d32f2f;\n    display: inline;\n    margin-left: 6px;\n    font-weight: normal;\n    white-space: nowrap;\n  }\n  .video-code::before {\n  content: \"\ud83c\udfac \";\n  }\n\n.cell-highlight {\n  outline: 3px solid #d32f2f;\n  outline-offset: -4px;\n}\n<\/style>\n\n<table class=\"tech-table\">\n  <thead>\n    <tr>\n      <th>Step<\/th>\n      <th>Documentation<\/th>\n      <th><\/th>\n      <th>Videos<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr  class=\"row-red\">\n      <td>1. Software installation<\/td>\n      <td colspan=\"2\">\n        Installation guide for the ACG SDK\n        <a href=\"https:\/\/imperix.com\/doc\/help\/installation-guide-acg-sdk\" class=\"pn-code\">PN133<\/a>      <\/td>\n      <td>\n        N\/A\n      <\/td>\n    <\/tr>\n\n    <tr>\n      <td>2. Getting started<\/td>\n      <td colspan=\"2\">\n        Getting started with the ACG SDK\n        <a href=\"https:\/\/imperix.com\/doc\/help\/getting-started-with-acg-sdk\" class=\"pn-code\">PN134<\/a> \n      <td>\n        Create the model\n        <a href=\"https:\/\/www.youtube.com\/watch?v=8TBpIigcN2w\" class=\"video-code\">Video 1<\/a>\n      <\/td>\n    <\/tr>\n\n    <tr>\n      <td>3. Running simulations<\/td>\n      <td class=\"cell-highlight\">\n        Simulation essentials with Simulink\n        <a href=\"https:\/\/imperix.com\/doc\/help\/simulation-essentials-simulink\" class=\"pn-code\">PN135<\/a> \n      <\/td>\n      <td>\n        Simulation essentials with PLECS\n        <a href=\"https:\/\/imperix.com\/doc\/help\/simulation-essentials-plecs\" class=\"pn-code\">PN137<\/a>       \n      <td>\n        Simulate it\n        <a href=\"https:\/\/www.youtube.com\/watch?v=HklMDtAADUU\" class=\"video-code\">Video 2<\/a>\n      <\/td>\n    <\/tr>\n\n    <tr>\n      <td>4. Device programming<\/td>\n      <td colspan=\"2\">\n        Programming and operating imperix controllers\n        <a href=\"https:\/\/imperix.com\/doc\/help\/programming-imperix-controllers\" class=\"pn-code\">PN138<\/a> \n      <\/td>\n      <td rowspan=\"2\">\n        Generate code\n        <a href=\"https:\/\/www.youtube.com\/watch?v=6dGeExgX-rE\" class=\"video-code\">Video 3<\/a>\n      <\/td>\n    <\/tr>\n\n    <tr>\n      <td>5. Monitoring<\/td>\n      <td colspan=\"2\">\n        Cockpit user guide\n        <a href=\"https:\/\/imperix.com\/doc\/help\/cockpit-user-guide\" class=\"pn-code\">PN300<\/a>\n      <\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Fundamental-concepts\"><\/span>Fundamental concepts<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>The offline simulation is meant to faithfully reproduce the behavior of the overall system (controller and plant). To that end, the imperix blockset for Simulink was designed with the following guidelines in mind:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The&nbsp;<strong>plant&nbsp;<\/strong>quantities are to be modeled with&nbsp;<strong>continuous&nbsp;<\/strong>signals\n<ul class=\"wp-block-list\">\n<li>This calls for using a&nbsp;<strong>variable-step solver<\/strong><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>The&nbsp;<strong>control&nbsp;<\/strong>algorithm is modeled with&nbsp;<strong>discrete&nbsp;<\/strong>signals, sampled at a rate equal to the interrupt frequency of the physical controller, and with a phase corresponding to the corresponding sampling phase.\n<ul class=\"wp-block-list\">\n<li>This requires a discretized algorithm (in&nbsp;\\(z\\)&nbsp;domain)<\/li>\n\n\n\n<li>This is modeled accurately with the variable-step solver, as it is forced to take a major step at each execution of the interrupt<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>The behavior of the real PWM generators is modeled, in particular:\n<ul class=\"wp-block-list\">\n<li>The frequency and phase of the carrier<\/li>\n\n\n\n<li>The instants when the duty-cycle and phase parameters are updated (at zero and\/or max of the carrier)<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>The duration of the algorithm execution is modeled\n<ul class=\"wp-block-list\">\n<li>This induces a delay between the start of the interruption and the availability of the new data<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>With all the phases and delays modeled accurately, the simulated controller has the same dynamics as the real controller, which allows tuning the control parameters during the offline simulation.<\/p>\n\n\n\n<p>The imperix blockset is already implemented such that these guidelines are automatically observed. As such, no particular action is required from the user.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"PN135:SimulationessentialswithSimulink-Workingprincipleofthemainblocks\"><span class=\"ez-toc-section\" id=\"Working-principle-of-the-main-blocks\"><\/span>Working principle of the main blocks<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>The three fundamental blocks are the Config, ADC, and PWM blocks. Most applications can work with only those three, as in the standard configuration shown below:<\/p>\n\n\n<div class=\"wp-block-image is-resized\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"285\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/usual_configuration_3_blocks-1024x285.png\" alt=\"Typical content of the controller model\" class=\"wp-image-230\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/usual_configuration_3_blocks-1024x285.png 1024w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/usual_configuration_3_blocks-300x83.png 300w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/usual_configuration_3_blocks-768x214.png 768w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/usual_configuration_3_blocks-1536x427.png 1536w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/usual_configuration_3_blocks-2048x570.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Typical content of the controller model\n<\/figcaption><\/figure>\n<\/div>\n\n\n<h3 class=\"wp-block-heading\" id=\"PN135:SimulationessentialswithSimulink-ClockandConfiguration\"><span class=\"ez-toc-section\" id=\"Configuration-block-and-its-clocks\"><\/span>Configuration block and its clocks<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>The Config block configures the main global parameters of the model, such as:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The model execution purpose (offline simulation or code generation for a real-time target)<\/li>\n\n\n\n<li>The configuration of the default clock&nbsp;<code>CLK0<\/code>, which is always used for sampling the triggering of the control interrupt.<\/li>\n\n\n\n<li>Other advanced configuration parameters.<\/li>\n<\/ul>\n\n\n\n<p>To configure and implement&nbsp;<code><code>CLK0<\/code><\/code>, the Config block contains a <a href=\"https:\/\/imperix.com\/doc\/software\/clock-generators\">CLK<\/a> block. A clock is a time base serving as a time reference for different peripherals that are connected to it.<\/p>\n\n\n\n<p>In simulation, the CLK block outputs a sawtooth signal with the clock period&nbsp;\\(T_{clk0}=1\/f_{clk0}\\)&nbsp;and a phase of zero. Then, this clock signal is passed through a subsystem that generates a sampling clock, with a relative phase-shift of&nbsp;\\(\\phi_s\\)&nbsp;and a period defined by:<\/p>\n\n\n\n<p>$$T_s = \\left\\{ \\begin{array}{ll} T_{\\text{clk0}} &amp; \\text{if postscaler = 0}\\\\  \\text{postscaler}\\cdot T_{\\text{clk0}} &amp; \\text{otherwise} \\end{array}\\right.$$<\/p>\n\n\n\n<p>The Config block also sets the value of the sample time variable <code>CTRLPERIOD<\/code>. This variable can be used in any block requiring a sample time (e.g. discrete transfer functions): <\/p>\n\n\n\n<p>$$\\text{CTRLPERIOD} = \\left[T_s, \\phi_s T_s\\right]$$<\/p>\n\n\n\n<p>The fundamental elements of the Configuration block are mapped below, with the waveform of the generated signals.<\/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\"><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"498\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-9-1024x498.png\" alt=\"Configuration block content\" class=\"wp-image-231\" title=\"Product notes &gt; PN135: Simulation essentials with Simulink &gt; PN135_Schema1_6col.png\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-9-1024x498.png 1024w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-9-300x146.png 300w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-9-768x373.png 768w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-9.png 1280w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"586\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-10-1024x586.png\" alt=\"Configuration block signals\" class=\"wp-image-232\" title=\"Product notes &gt; PN135: Simulation essentials with Simulink &gt; Simulation_schemes_1.png\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-10-1024x586.png 1024w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-10-300x172.png 300w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-10-768x440.png 768w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-10.png 1280w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div><\/div>\n<\/div>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"ADC\"><\/span>ADC<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>The ADC block allows retrieving the sampled value of a given ADC channel and converts it to its value in physical unit.<\/p>\n\n\n\n<p>The simulation model simply sample-and-holds the input signal (2) with the rising edges of the sampling clock (1). The input signal is typically a continuous signal coming from the plant model and representing a measurement value. The sample time of the output signal (3) is set to <code>CTRLPERIOD<\/code> in order to be automatically propagated to other connected blocks.<\/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\"><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"470\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-13-1024x470.png\" alt=\"ADC block content\" class=\"wp-image-235\" title=\"Product notes &gt; PN135: Simulation essentials with Simulink &gt; PN135_Sampling_6col.png\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-13-1024x470.png 1024w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-13-300x138.png 300w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-13-768x352.png 768w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-13.png 1280w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"535\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-14-1024x535.png\" alt=\"ADC block signals\" class=\"wp-image-236\" title=\"Product notes &gt; PN135: Simulation essentials with Simulink &gt; Simulation_schemes_2.png\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-14-1024x535.png 1024w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-14-300x157.png 300w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-14-768x401.png 768w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-14.png 1280w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div><\/div>\n<\/div>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"PWM\"><\/span>PWM<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Various types of pulse-width modulators exist within the imperix blockset. Among them, the carrier-based PWM modulator (CB PWM block) is probably the default and most generic one. It configures the corresponding FPGA peripheral and generates the PWM signals according to the duty-cycle and phase parameters.<\/p>\n\n\n\n<p>In the simulation model, the clock signal (1) connected to the clock input is used as a time reference to generate the carrier signal (2). In parallel, the duty-cycle value (3) is sampled (once or twice per switching period depending on the update-rate parameter) and compared to the carrier to produce the output PWM signal (5). (A more complex model is used to generate a carrier with a variable phase, which is beyond the scope of this document.)<\/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\"><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"486\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-11-1024x486.png\" alt=\"PWM modulator content\" class=\"wp-image-233\" title=\"Product notes &gt; PN135: Simulation essentials with Simulink &gt; PN135_PWM_8col.png\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-11-1024x486.png 1024w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-11-300x142.png 300w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-11-768x364.png 768w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-11.png 1280w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"869\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-12-1024x869.png\" alt=\"PWM modulator signals\" class=\"wp-image-234\" title=\"Product notes &gt; PN135: Simulation essentials with Simulink &gt; Simulation_schemes-PWM.png\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-12-1024x869.png 1024w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-12-300x255.png 300w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-12-768x652.png 768w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-12.png 1267w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div><\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"mastering-sample-times\"><span class=\"ez-toc-section\" id=\"Mastering-the-sample-times\"><\/span>Mastering the sample times<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Mastering the <em>sample time<\/em> (essentially the <em>execution rate<\/em>) of each block is key for an accurate and efficient simulation of discrete control algorithms in Simulink, as well as the generation of proper run-time code. In particular, the execution rates must comply with the fundamental concepts listed above and be clearly identified by the Simulink Coder engine, namely:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The plant (i.e. <strong>physical<\/strong>) signals are represented by <strong>continuous <\/strong>signals<\/li>\n\n\n\n<li>The <strong>control <\/strong>signals (i.e. those computed during the controller main interrupt) are represented by <strong>discrete <\/strong>signals with a sampling rate and phase corresponding to the configuration of the main interrupt. Their sample time is, therefore, the vector <code>CTRLPERIOD<\/code>.<\/li>\n<\/ul>\n\n\n\n<p>The blocks of the imperix blockset are built in such a way that they comply with these concepts. The user is only recommended to make sure that his\/her control implementation is executed at the proper rate. In some situations, the <code>CTRLPERIOD<\/code> may not be propagated automatically to the whole control model (see the example of the step block below).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Verifying-the-sample-times\"><\/span>Verifying the sample times<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>In Simulink, the sample time of each signal can be conveniently displayed by choosing Display &gt; Sample Time &gt; Colors. The color legend can be displayed by pressing Ctrl+J (see below)<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"323\" height=\"349\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-15.png\" alt=\"Sample time color legend\" class=\"wp-image-238\" title=\"Product notes &gt; PN135: Simulation essentials with Simulink &gt; sample_time_legend.PNG\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-15.png 323w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-15-278x300.png 278w\" sizes=\"auto, (max-width: 323px) 100vw, 323px\" \/><figcaption class=\"wp-element-caption\">Sample time color legend<\/figcaption><\/figure>\n<\/div>\n\n\n<div class=\"wp-block-simple-alerts-for-gutenberg-alert-boxes sab-alert sab-alert-info\" role=\"alert\">In Simulink, the sample time of \u201ccontinuous\u201d signals (as opposed to discrete signals with a fixed period) can either be <strong>Continuous <\/strong>or <strong>Fixed in Minor Step<\/strong>. The latter is essentially an optimized version of \u201ccontinuous,\u201d applicable when the value of the signal cannot change between the major steps of the solver. For instance, the PWM signals do not vary between the switching instants. They can be considered as \u201csemi-continuous\u201d signals. For further reading, see <a href=\"https:\/\/mathworks.com\/help\/simulink\/ug\/types-of-sample-time.html\">https:\/\/mathworks.com\/help\/simulink\/ug\/types-of-sample-time.html<\/a>.<\/div>\n\n\n\n<p>With the colors defined above, a typical control implementation should look like this:<\/p>\n\n\n<div class=\"wp-block-image is-resized\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"603\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-16-1024x603.png\" alt=\"Typical sample times of a simulation model\" class=\"wp-image-239\" style=\"width:357px;height:auto\" title=\"Product notes &gt; PN135: Simulation essentials with Simulink &gt; usual_configuration_with_plant.png\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-16-1024x603.png 1024w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-16-300x177.png 300w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-16-768x453.png 768w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-16-1536x905.png 1536w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-16-2048x1207.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Typical sample times of a simulation model<\/figcaption><\/figure>\n<\/div>\n\n\n<p>As the ADC and PWM blocks serve as an interface between the continuous plant signals and the discretized control, they contain blocks with different sample times and have thus a <strong>Hybrid <\/strong>sample time.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Altering-the-sample-times\"><\/span>Altering the sample times<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>In most cases, inherited sample time (-1) ensures that the whole discretized control is executed at the proper rate. The illustration below shows a discrete PI controller whose sample time is -1 and the sample time is correctly propagated from outside the system:<\/p>\n\n\n<div class=\"wp-block-image is-resized\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"717\" height=\"351\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-17.png\" alt=\"\" class=\"wp-image-240\" style=\"width:251px;height:auto\" title=\"Product notes &gt; PN135: Simulation essentials with Simulink &gt; sample_time_-1.png\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-17.png 717w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-17-300x147.png 300w\" sizes=\"auto, (max-width: 717px) 100vw, 717px\" \/><\/figure>\n<\/div>\n\n\n<p>In some cases, a certain block can enforce a wrong sample time, as in the example below, where the step block is continuous (its default sample time) and propagates the wrong sample time to the PI controller (in this case, this even results in an error, since the discrete PI cannot run at a continuous sample time):<\/p>\n\n\n<div class=\"wp-block-image is-resized\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"946\" height=\"470\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-18.png\" alt=\"\" class=\"wp-image-241\" style=\"width:353px;height:auto\" title=\"Product notes &gt; PN135: Simulation essentials with Simulink &gt; sample_time_wrong.png\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-18.png 946w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-18-300x149.png 300w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-18-768x382.png 768w\" sizes=\"auto, (max-width: 946px) 100vw, 946px\" \/><\/figure>\n<\/div>\n\n\n<p>To solve this, there are basically two options to force the sample time of a particular signal or block.<\/p>\n\n\n\n<p><strong>1)<\/strong> Set the sample time of the \u201cfaulty\u201d block or the discrete block to <code>CTRLPERIOD<\/code>:<\/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\"><div class=\"wp-block-image is-resized\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"946\" height=\"479\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-19.png\" alt=\"\" class=\"wp-image-242\" style=\"width:337px;height:auto\" title=\"Product notes &gt; PN135: Simulation essentials with Simulink &gt; sample_time_CTRLPERIOD.png\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-19.png 946w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-19-300x152.png 300w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-19-768x389.png 768w\" sizes=\"auto, (max-width: 946px) 100vw, 946px\" \/><\/figure>\n<\/div><\/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\"><img loading=\"lazy\" decoding=\"async\" width=\"455\" height=\"433\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-20.png\" alt=\"Step block parameters\" class=\"wp-image-243\" title=\"Product notes &gt; PN135: Simulation essentials with Simulink &gt; sample_time_CTRLPERIOD_dialog.png\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-20.png 455w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-20-300x285.png 300w\" sizes=\"auto, (max-width: 455px) 100vw, 455px\" \/><figcaption class=\"wp-element-caption\">Step block parameters<\/figcaption><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p><strong>2)<\/strong> If the faulty block cannot be found or its sample time cannot be specified, use a <strong>Signal specification<\/strong> block with <code>CTRLPERIOD<\/code> as sample time<\/p>\n\n\n<div class=\"wp-block-image is-resized\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"368\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-21-1024x368.png\" alt=\"\" class=\"wp-image-244\" style=\"width:467px;height:auto\" title=\"Product notes &gt; PN135: Simulation essentials with Simulink &gt; sample_time_signal_specification.png\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-21-1024x368.png 1024w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-21-300x108.png 300w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-21-768x276.png 768w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-21-1536x552.png 1536w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-21.png 1544w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Further-readings\"><\/span>Further readings<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/imperix.com\/doc\/help\/programming-imperix-controllers\">Programming and operating imperix controllers (PN138)<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/imperix.com\/doc\/help\/cockpit-user-guide\">Cockpit user guide (PN300)<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/imperix.com\/doc\/help\/going-further-with-acg-sdk\/speeding-up-simulink-simulation\">Speeding up simulation with Simulink (PN131)<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>This note provides in-depth content for an accurate and efficient offline simulation of an imperix controller and the corresponding plant model using&nbsp;ACG SDK&nbsp;on Simulink. Recommended&#8230;<\/p>\n","protected":false},"author":2,"featured_media":3005,"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":[12,3],"tags":[],"software-environments":[103],"provided-results":[],"related-products":[50,31,32,92],"guidedreadings":[],"tutorials":[],"user-manuals":[177],"coauthors":[63],"class_list":["post-227","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-getting-started-acg-sdk","category-help","software-environments-matlab","related-products-acg-sdk","related-products-b-board-pro","related-products-b-box-rcp","related-products-b-box-micro","user-manuals-getting-started-with-acg-sdk"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Simulation essentials with Simulink - imperix<\/title>\n<meta name=\"description\" content=\"This notes describes the main principles of the simulation models included inside the ACG SDK library for Simulink.\" \/>\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\/help\/simulation-essentials-simulink\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Simulation essentials with Simulink - imperix\" \/>\n<meta property=\"og:description\" content=\"This notes describes the main principles of the simulation models included inside the ACG SDK library for Simulink.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/imperix.com\/doc\/help\/simulation-essentials-simulink\" \/>\n<meta property=\"og:site_name\" content=\"imperix\" \/>\n<meta property=\"article:published_time\" content=\"2021-03-23T10:00:02+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-19T10:43:11+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/3_2_ratio_PN135.png\" \/>\n\t<meta property=\"og:image:width\" content=\"450\" \/>\n\t<meta property=\"og:image:height\" content=\"300\" \/>\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=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/help\\\/simulation-essentials-simulink#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/help\\\/simulation-essentials-simulink\"},\"author\":{\"name\":\"Julien Orsinger\",\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/#\\\/schema\\\/person\\\/65ef663818eab76f53cc627ab80e0a51\"},\"headline\":\"Simulation essentials with Simulink\",\"datePublished\":\"2021-03-23T10:00:02+00:00\",\"dateModified\":\"2025-12-19T10:43:11+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/help\\\/simulation-essentials-simulink\"},\"wordCount\":1329,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/help\\\/simulation-essentials-simulink#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/imperix.com\\\/doc\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/3_2_ratio_PN135.png\",\"articleSection\":[\"Getting started with ACG SDK\",\"Product notes\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/imperix.com\\\/doc\\\/help\\\/simulation-essentials-simulink#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/help\\\/simulation-essentials-simulink\",\"url\":\"https:\\\/\\\/imperix.com\\\/doc\\\/help\\\/simulation-essentials-simulink\",\"name\":\"Simulation essentials with Simulink - imperix\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/help\\\/simulation-essentials-simulink#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/help\\\/simulation-essentials-simulink#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/imperix.com\\\/doc\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/3_2_ratio_PN135.png\",\"datePublished\":\"2021-03-23T10:00:02+00:00\",\"dateModified\":\"2025-12-19T10:43:11+00:00\",\"description\":\"This notes describes the main principles of the simulation models included inside the ACG SDK library for Simulink.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/help\\\/simulation-essentials-simulink#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/imperix.com\\\/doc\\\/help\\\/simulation-essentials-simulink\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/help\\\/simulation-essentials-simulink#primaryimage\",\"url\":\"https:\\\/\\\/imperix.com\\\/doc\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/3_2_ratio_PN135.png\",\"contentUrl\":\"https:\\\/\\\/imperix.com\\\/doc\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/3_2_ratio_PN135.png\",\"width\":450,\"height\":300,\"caption\":\"PWM modulator content\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/help\\\/simulation-essentials-simulink#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Knowledge base\",\"item\":\"https:\\\/\\\/imperix.com\\\/doc\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Product notes\",\"item\":\"https:\\\/\\\/imperix.com\\\/doc\\\/category\\\/help\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Simulation essentials with Simulink\"}]},{\"@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":"Simulation essentials with Simulink - imperix","description":"This notes describes the main principles of the simulation models included inside the ACG SDK library for Simulink.","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\/help\/simulation-essentials-simulink","og_locale":"en_US","og_type":"article","og_title":"Simulation essentials with Simulink - imperix","og_description":"This notes describes the main principles of the simulation models included inside the ACG SDK library for Simulink.","og_url":"https:\/\/imperix.com\/doc\/help\/simulation-essentials-simulink","og_site_name":"imperix","article_published_time":"2021-03-23T10:00:02+00:00","article_modified_time":"2025-12-19T10:43:11+00:00","og_image":[{"width":450,"height":300,"url":"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/3_2_ratio_PN135.png","type":"image\/png"}],"author":"Julien Orsinger","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Julien Orsinger","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/imperix.com\/doc\/help\/simulation-essentials-simulink#article","isPartOf":{"@id":"https:\/\/imperix.com\/doc\/help\/simulation-essentials-simulink"},"author":{"name":"Julien Orsinger","@id":"https:\/\/imperix.com\/doc\/#\/schema\/person\/65ef663818eab76f53cc627ab80e0a51"},"headline":"Simulation essentials with Simulink","datePublished":"2021-03-23T10:00:02+00:00","dateModified":"2025-12-19T10:43:11+00:00","mainEntityOfPage":{"@id":"https:\/\/imperix.com\/doc\/help\/simulation-essentials-simulink"},"wordCount":1329,"commentCount":0,"publisher":{"@id":"https:\/\/imperix.com\/doc\/#organization"},"image":{"@id":"https:\/\/imperix.com\/doc\/help\/simulation-essentials-simulink#primaryimage"},"thumbnailUrl":"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/3_2_ratio_PN135.png","articleSection":["Getting started with ACG SDK","Product notes"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/imperix.com\/doc\/help\/simulation-essentials-simulink#respond"]}]},{"@type":"WebPage","@id":"https:\/\/imperix.com\/doc\/help\/simulation-essentials-simulink","url":"https:\/\/imperix.com\/doc\/help\/simulation-essentials-simulink","name":"Simulation essentials with Simulink - imperix","isPartOf":{"@id":"https:\/\/imperix.com\/doc\/#website"},"primaryImageOfPage":{"@id":"https:\/\/imperix.com\/doc\/help\/simulation-essentials-simulink#primaryimage"},"image":{"@id":"https:\/\/imperix.com\/doc\/help\/simulation-essentials-simulink#primaryimage"},"thumbnailUrl":"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/3_2_ratio_PN135.png","datePublished":"2021-03-23T10:00:02+00:00","dateModified":"2025-12-19T10:43:11+00:00","description":"This notes describes the main principles of the simulation models included inside the ACG SDK library for Simulink.","breadcrumb":{"@id":"https:\/\/imperix.com\/doc\/help\/simulation-essentials-simulink#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/imperix.com\/doc\/help\/simulation-essentials-simulink"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/imperix.com\/doc\/help\/simulation-essentials-simulink#primaryimage","url":"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/3_2_ratio_PN135.png","contentUrl":"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/3_2_ratio_PN135.png","width":450,"height":300,"caption":"PWM modulator content"},{"@type":"BreadcrumbList","@id":"https:\/\/imperix.com\/doc\/help\/simulation-essentials-simulink#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Knowledge base","item":"https:\/\/imperix.com\/doc\/"},{"@type":"ListItem","position":2,"name":"Product notes","item":"https:\/\/imperix.com\/doc\/category\/help"},{"@type":"ListItem","position":3,"name":"Simulation essentials with Simulink"}]},{"@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\/227","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=227"}],"version-history":[{"count":57,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/posts\/227\/revisions"}],"predecessor-version":[{"id":39349,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/posts\/227\/revisions\/39349"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/media\/3005"}],"wp:attachment":[{"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/media?parent=227"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/categories?post=227"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/tags?post=227"},{"taxonomy":"software-environments","embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/software-environments?post=227"},{"taxonomy":"provided-results","embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/provided-results?post=227"},{"taxonomy":"related-products","embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/related-products?post=227"},{"taxonomy":"guidedreadings","embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/guidedreadings?post=227"},{"taxonomy":"tutorials","embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/tutorials?post=227"},{"taxonomy":"user-manuals","embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/user-manuals?post=227"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/coauthors?post=227"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}