{"id":720,"date":"2021-03-25T15:32:18","date_gmt":"2021-03-25T15:32:18","guid":{"rendered":"https:\/\/imperix.com\/doc\/?p=720"},"modified":"2026-08-12T12:00:00","modified_gmt":"2026-08-12T12:00:00","slug":"multi-rate-control-with-acg-sdk-on-simulink","status":"publish","type":"post","link":"https:\/\/imperix.com\/doc\/help\/multi-rate-control-with-acg-sdk-on-simulink","title":{"rendered":"Multi-rate control on Simulink with ACG SDK"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 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\/multi-rate-control-with-acg-sdk-on-simulink\/#Single-tasking-and-multitasking-configurations\" >Single-tasking and multitasking configurations<\/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\/multi-rate-control-with-acg-sdk-on-simulink\/#Rate-configuration\" >Rate configuration<\/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\/multi-rate-control-with-acg-sdk-on-simulink\/#Base-rate-and-sample-time-constraints\" >Base rate and sample-time constraints<\/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\/multi-rate-control-with-acg-sdk-on-simulink\/#Rate-Transition-block\" >Rate Transition block<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/imperix.com\/doc\/help\/multi-rate-control-with-acg-sdk-on-simulink\/#Application-example\" >Application example<\/a><\/li><\/ul><\/nav><\/div>\n\n<p class=\"wp-block-paragraph\">This document provides instructions for configuring CPU-based multi-rate control for <a href=\"\/products\/power-electronic-controllers\/\">imperix controllers<\/a> using Simulink with the <a href=\"\/software\/acg-sdk\/\">ACG SDK<\/a>. It allows executing part of the control algorithm at a slower rate to optimize CPU utilization. This approach is typically useful for executing supervisory logic, slow outer control loops, energy management routines, or MPPT algorithms, while keeping maximum CPU capacity for fast inner control loops.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This page provides configuration instructions specific to Simulink. <a href=\"\/doc\/help\/multi-rate-control\">PN265<\/a> provides a more general introduction to multi-rate control.<\/p>\n\n\n\n<div class=\"wp-block-simple-alerts-for-gutenberg-alert-boxes sab-alert sab-alert-info\" role=\"alert\">The information presented on this page applies starting with ACG SDK and CPP SDK 2026.2. Before this version, multitasking was incompletely supported.<\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Single-tasking-and-multitasking-configurations\"><\/span>Single-tasking and multitasking configurations<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">By default, Simulink code generation processes multi-rate models using multitasking mode. This means the code generator places each discrete sample time into a separate task (technically a distinct function). When deployed on imperix controllers, this translates into priority-based task scheduling with preemption, as detailed in <a href=\"https:\/\/imperix.com\/doc\/help\/multi-rate-control#approaches\">PN265<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Simulink generates code for either single-tasking or multitasking execution based on the model configuration parameter <em>Treat each discrete rate as a separate task<\/em>. To modify this parameter:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Set the <em>Execution purpose<\/em> parameter in the <a href=\"https:\/\/imperix.com\/doc\/software\/config-control-task-configuration\" data-type=\"post\" data-id=\"1564\">CONFIG<\/a> block to <em>Automated Code Generation<\/em> (this setting is hidden in simulation mode).<\/li>\n\n\n\n<li>Open <em>Model Configuration Parameters<\/em> (Ctrl+E) and navigate to <em>Solver <\/em>&gt; <em>Solver details<\/em>.<\/li>\n\n\n\n<li>Select or deselect <em>Treat each discrete rate as a separate task<\/em> based on the expected behavior:\n<ul class=\"wp-block-list\">\n<li>Checked for multitasking mode<\/li>\n\n\n\n<li>Unchecked for single-tasking mode<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-simple-alerts-for-gutenberg-alert-boxes sab-alert sab-alert-info\" role=\"alert\">For older MATLAB versions, under <em>Tasking mode for periodic sample times<\/em>, select <em>SingleTasking<\/em> or <em>MultiTasking<\/em>.<\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"712\" height=\"649\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-376.png\" alt=\"\" class=\"wp-image-48591\" style=\"width:552px;height:auto\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-376.png 712w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-376-300x273.png 300w\" sizes=\"auto, (max-width: 712px) 100vw, 712px\" \/><figcaption class=\"wp-element-caption\">Simulink model Configuration Parameters dialog<\/figcaption><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Rate-configuration\"><\/span>Rate configuration<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In Simulink, different execution rates are defined by their <a href=\"https:\/\/mathworks.com\/help\/simulink\/ug\/what-is-sample-time.html\">Sample Time<\/a>. The base-rate sample time is set via the CONFIG block (calculated as the <code>CLK0<\/code> frequency divided by the optional postscaler). Any block configured with this base sample time generates code that executes at the CPU interrupt rate.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Additional sample rates can be derived from the base rate, either by configuring the <em>Sample time<\/em> parameter directly within individual blocks, or by placing a <a href=\"https:\/\/mathworks.com\/help\/simulink\/slref\/ratetransition.html\">Rate Transition<\/a> block between different rate domains.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Base-rate-and-sample-time-constraints\"><\/span>Base rate and sample-time constraints<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">In Simulink, the model&#8217;s base rate is determined from the sample times defined in the model. Simulink computes a common base period from these sample times, allowing the different rates to be scheduled as integer multiples of this base rate. When deploying the model on an imperix controller, the process assumes that the rate Simulink identifies as the base rate is the rate at which the CPU interrupt is triggered.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This correspondence can be broken if a model rate is defined with a period that is not an integer multiple of the <code>CLK0<\/code> period. In this case, Simulink computes a faster common base rate to accommodate all model rates. Since no hardware interrupt is configured at that faster base rate, the resulting model cannot be deployed, and Cockpit will throw the error &#8220;<em>The control task period set in the CONFIG block is different from Simulink&#8217;s fastest discrete period D1<\/em>&#8220;.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Consequently, all model sample times should be chosen as integer multiples of the <code>CLK0<\/code> period. The interrupt period is available through the <code>CTRLPERIOD<\/code> variable, so it is recommended to define sample times as <code>CTRLPERIOD(1) \u00d7 N<\/code>, where <code>N<\/code> is a positive integer.<\/p>\n\n\n\n<div class=\"wp-block-simple-alerts-for-gutenberg-alert-boxes sab-alert sab-alert-info\" role=\"alert\">The <code>(1)<\/code> index is used because <code>CTRLPERIOD<\/code> may be a vector when a non-zero sampling phase is configured, as described in <a href=\"https:\/\/imperix.com\/doc\/help\/simulation-essentials-simulink\" data-type=\"post\" data-id=\"227\">Simulation essentials on Simulink<\/a>.<\/div>\n\n\n\n<div class=\"wp-block-simple-alerts-for-gutenberg-alert-boxes sab-alert sab-alert-success\" role=\"alert\">To validate that sample times are configured correctly, Simulink can display sample times as colors. To enable sample time colors: <strong>Right-click on the model<\/strong> \u2192 <strong>Sample Time Display<\/strong> \u2192 <strong>Colors<\/strong>. Press <strong>Ctrl+D<\/strong> to update the model. As explained in <a href=\"https:\/\/imperix.com\/doc\/help\/simulation-essentials-simulink\" data-type=\"post\" data-id=\"227\">PN135<\/a>, the red color must correspond to the CPU interrupt frequency defined in the CONFIG block.<\/div>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Rate-Transition-block\"><\/span>Rate Transition block<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">As explained above, the <em>Rate Transition<\/em> block is the go-to block for introducing additional execution rates while properly managing data transfer between different rate domains. An illustrative example of use is shown below.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"856\" height=\"643\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-381.png\" alt=\"\" class=\"wp-image-48689\" style=\"aspect-ratio:1.3312893164878152;width:705px;height:auto\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-381.png 856w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-381-300x225.png 300w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-381-768x577.png 768w\" sizes=\"auto, (max-width: 856px) 100vw, 856px\" \/><figcaption class=\"wp-element-caption\">Definition of a subrate using a Rate Transition block<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">The recommended configuration parameters of the Rate Transition blocks are:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><em>Output port sample time<\/em>: the rate of the subrate task. To avoid the issue mentioned in the previous section, it is advised to set this rate with:\n<ul class=\"wp-block-list\">\n<li><strong>Option 1<\/strong>: <code>CTRLPERIOD(1)*N<\/code> with N being the desired decimation ratio<\/li>\n\n\n\n<li><strong>Option 2<\/strong>: set <em>Output port sample time options<\/em> to <em>Multiple of input port sample time<\/em> and specify the decimation ratio in <em>Sample time multiple<\/em><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 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-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"403\" height=\"358\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/rt-block-config-1.png\" alt=\"\" class=\"wp-image-48607\" style=\"width:auto;height:300px\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/rt-block-config-1.png 403w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/rt-block-config-1-300x267.png 300w\" sizes=\"auto, (max-width: 403px) 100vw, 403px\" \/><figcaption class=\"wp-element-caption\">Sample time configuration option 1<\/figcaption><\/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-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"442\" height=\"358\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/rt-block-config-2.png\" alt=\"\" class=\"wp-image-48608\" style=\"width:auto;height:300px\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/rt-block-config-2.png 442w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/rt-block-config-2-300x243.png 300w\" sizes=\"auto, (max-width: 442px) 100vw, 442px\" \/><figcaption class=\"wp-element-caption\">Sample time configuration option 2<\/figcaption><\/figure>\n<\/div><\/div>\n<\/div>\n\n\n\n<ul class=\"wp-block-list\">\n<li><em>Ensure data integrity during data transfer<\/em>: Leave this parameter checked at all times to avoid data corruption that may occur during preemption.<\/li>\n\n\n\n<li><em>Ensure deterministic data transfer<\/em>: To avoid the induced data transfer delay this introduces, this parameter can be unchecked. Disable this parameter when a non-zero sampling phase is configured in the CONFIG block, since Simulink does not allow it to be enabled with non-zero sample-time offsets.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">More information about these concepts is available directly in MathWorks&#8217; documentation: <a href=\"https:\/\/mathworks.com\/help\/simulink\/slref\/ratetransition.html\">mathworks.com\/help\/simulink\/slref\/ratetransition.html<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Application-example\"><\/span>Application example<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">An example of use is presented in&nbsp;<a href=\"https:\/\/imperix.com\/doc\/implementation\/maximum-power-point-tracking-mppt-techniques\">Maximum Power Point Tracking (MPPT) (TN117)<\/a>. It shows how one part of the control (in red in the figure below) can be executed at a slower rate than the main control code.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"435\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-111-1024x435.png\" alt=\"Multi-rate maximum power point tracking example\" class=\"wp-image-733\" style=\"aspect-ratio:2.354084875677697;width:655px;height:auto\" title=\"Product notes &gt; PN145: Multi-rate control with Simulink &gt; image-20200514-135836.png\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-111-1024x435.png 1024w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-111-300x127.png 300w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-111-768x326.png 768w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-111.png 1428w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>This document provides instructions for configuring CPU-based multi-rate control for imperix controllers using Simulink with the ACG SDK. It allows executing part of the control&#8230;<\/p>\n","protected":false},"author":4,"featured_media":48692,"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":[13,3],"tags":[],"software-environments":[103],"provided-results":[],"related-products":[50,31,32,92,166,110],"guidedreadings":[],"tutorials":[],"user-manuals":[135],"coauthors":[70,175],"class_list":["post-720","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-going-further-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","related-products-b-box-rcp-3-0","related-products-tpi","user-manuals-going-further-with-acg-sdk"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Multi-rate control on Simulink with ACG SDK - imperix<\/title>\n<meta name=\"description\" content=\"This document provides instructions on how to implement multi-rate control in a Simulink model with imperix ACG SDK.\" \/>\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\/multi-rate-control-with-acg-sdk-on-simulink\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Multi-rate control on Simulink with ACG SDK - imperix\" \/>\n<meta property=\"og:description\" content=\"This document provides instructions on how to implement multi-rate control in a Simulink model with imperix ACG SDK.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/imperix.com\/doc\/help\/multi-rate-control-with-acg-sdk-on-simulink\" \/>\n<meta property=\"og:site_name\" content=\"imperix\" \/>\n<meta property=\"article:published_time\" content=\"2021-03-25T15:32:18+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-12T12:00:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/3_2_ratio_PN145_v2.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=\"Beno\u00eet Steinmann, Rafael Basso\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Beno\u00eet Steinmann, Rafael Basso\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/help\\\/multi-rate-control-with-acg-sdk-on-simulink#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/help\\\/multi-rate-control-with-acg-sdk-on-simulink\"},\"author\":{\"name\":\"Beno\u00eet Steinmann\",\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/#\\\/schema\\\/person\\\/a69a3bda75b05d0923cc76d7268cc94f\"},\"headline\":\"Multi-rate control on Simulink with ACG SDK\",\"datePublished\":\"2021-03-25T15:32:18+00:00\",\"dateModified\":\"2026-08-12T12:00:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/help\\\/multi-rate-control-with-acg-sdk-on-simulink\"},\"wordCount\":859,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/help\\\/multi-rate-control-with-acg-sdk-on-simulink#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/imperix.com\\\/doc\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/3_2_ratio_PN145_v2.png\",\"articleSection\":[\"Going further with ACG SDK\",\"Product notes\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/imperix.com\\\/doc\\\/help\\\/multi-rate-control-with-acg-sdk-on-simulink#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/help\\\/multi-rate-control-with-acg-sdk-on-simulink\",\"url\":\"https:\\\/\\\/imperix.com\\\/doc\\\/help\\\/multi-rate-control-with-acg-sdk-on-simulink\",\"name\":\"Multi-rate control on Simulink with ACG SDK - imperix\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/help\\\/multi-rate-control-with-acg-sdk-on-simulink#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/help\\\/multi-rate-control-with-acg-sdk-on-simulink#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/imperix.com\\\/doc\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/3_2_ratio_PN145_v2.png\",\"datePublished\":\"2021-03-25T15:32:18+00:00\",\"dateModified\":\"2026-08-12T12:00:00+00:00\",\"description\":\"This document provides instructions on how to implement multi-rate control in a Simulink model with imperix ACG SDK.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/help\\\/multi-rate-control-with-acg-sdk-on-simulink#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/imperix.com\\\/doc\\\/help\\\/multi-rate-control-with-acg-sdk-on-simulink\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/help\\\/multi-rate-control-with-acg-sdk-on-simulink#primaryimage\",\"url\":\"https:\\\/\\\/imperix.com\\\/doc\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/3_2_ratio_PN145_v2.png\",\"contentUrl\":\"https:\\\/\\\/imperix.com\\\/doc\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/3_2_ratio_PN145_v2.png\",\"width\":450,\"height\":300},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/help\\\/multi-rate-control-with-acg-sdk-on-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\":\"Multi-rate control on Simulink with ACG SDK\"}]},{\"@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\\\/a69a3bda75b05d0923cc76d7268cc94f\",\"name\":\"Beno\u00eet Steinmann\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/22a9252907f853f91d07b143dfcc84f6ec0cc31f6b72408b503a7026eed5b109?s=96&d=mm&r=g3b3f3d8e66019ebcb2848094940b98c0\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/22a9252907f853f91d07b143dfcc84f6ec0cc31f6b72408b503a7026eed5b109?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/22a9252907f853f91d07b143dfcc84f6ec0cc31f6b72408b503a7026eed5b109?s=96&d=mm&r=g\",\"caption\":\"Beno\u00eet Steinmann\"},\"description\":\"Benoit is an embedded systems expert and the leader of software and firmware developments at imperix. On the knowledge base, he is the author of numerous software reference documents.\",\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/in\\\/benoit-steinmann\\\/\"],\"url\":\"https:\\\/\\\/imperix.com\\\/doc\\\/author\\\/steinmann\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Multi-rate control on Simulink with ACG SDK - imperix","description":"This document provides instructions on how to implement multi-rate control in a Simulink model with imperix ACG SDK.","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\/multi-rate-control-with-acg-sdk-on-simulink","og_locale":"en_US","og_type":"article","og_title":"Multi-rate control on Simulink with ACG SDK - imperix","og_description":"This document provides instructions on how to implement multi-rate control in a Simulink model with imperix ACG SDK.","og_url":"https:\/\/imperix.com\/doc\/help\/multi-rate-control-with-acg-sdk-on-simulink","og_site_name":"imperix","article_published_time":"2021-03-25T15:32:18+00:00","article_modified_time":"2026-08-12T12:00:00+00:00","og_image":[{"width":450,"height":300,"url":"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/3_2_ratio_PN145_v2.png","type":"image\/png"}],"author":"Beno\u00eet Steinmann, Rafael Basso","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Beno\u00eet Steinmann, Rafael Basso","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/imperix.com\/doc\/help\/multi-rate-control-with-acg-sdk-on-simulink#article","isPartOf":{"@id":"https:\/\/imperix.com\/doc\/help\/multi-rate-control-with-acg-sdk-on-simulink"},"author":{"name":"Beno\u00eet Steinmann","@id":"https:\/\/imperix.com\/doc\/#\/schema\/person\/a69a3bda75b05d0923cc76d7268cc94f"},"headline":"Multi-rate control on Simulink with ACG SDK","datePublished":"2021-03-25T15:32:18+00:00","dateModified":"2026-08-12T12:00:00+00:00","mainEntityOfPage":{"@id":"https:\/\/imperix.com\/doc\/help\/multi-rate-control-with-acg-sdk-on-simulink"},"wordCount":859,"commentCount":0,"publisher":{"@id":"https:\/\/imperix.com\/doc\/#organization"},"image":{"@id":"https:\/\/imperix.com\/doc\/help\/multi-rate-control-with-acg-sdk-on-simulink#primaryimage"},"thumbnailUrl":"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/3_2_ratio_PN145_v2.png","articleSection":["Going further with ACG SDK","Product notes"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/imperix.com\/doc\/help\/multi-rate-control-with-acg-sdk-on-simulink#respond"]}]},{"@type":"WebPage","@id":"https:\/\/imperix.com\/doc\/help\/multi-rate-control-with-acg-sdk-on-simulink","url":"https:\/\/imperix.com\/doc\/help\/multi-rate-control-with-acg-sdk-on-simulink","name":"Multi-rate control on Simulink with ACG SDK - imperix","isPartOf":{"@id":"https:\/\/imperix.com\/doc\/#website"},"primaryImageOfPage":{"@id":"https:\/\/imperix.com\/doc\/help\/multi-rate-control-with-acg-sdk-on-simulink#primaryimage"},"image":{"@id":"https:\/\/imperix.com\/doc\/help\/multi-rate-control-with-acg-sdk-on-simulink#primaryimage"},"thumbnailUrl":"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/3_2_ratio_PN145_v2.png","datePublished":"2021-03-25T15:32:18+00:00","dateModified":"2026-08-12T12:00:00+00:00","description":"This document provides instructions on how to implement multi-rate control in a Simulink model with imperix ACG SDK.","breadcrumb":{"@id":"https:\/\/imperix.com\/doc\/help\/multi-rate-control-with-acg-sdk-on-simulink#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/imperix.com\/doc\/help\/multi-rate-control-with-acg-sdk-on-simulink"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/imperix.com\/doc\/help\/multi-rate-control-with-acg-sdk-on-simulink#primaryimage","url":"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/3_2_ratio_PN145_v2.png","contentUrl":"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/3_2_ratio_PN145_v2.png","width":450,"height":300},{"@type":"BreadcrumbList","@id":"https:\/\/imperix.com\/doc\/help\/multi-rate-control-with-acg-sdk-on-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":"Multi-rate control on Simulink with ACG SDK"}]},{"@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\/a69a3bda75b05d0923cc76d7268cc94f","name":"Beno\u00eet Steinmann","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/22a9252907f853f91d07b143dfcc84f6ec0cc31f6b72408b503a7026eed5b109?s=96&d=mm&r=g3b3f3d8e66019ebcb2848094940b98c0","url":"https:\/\/secure.gravatar.com\/avatar\/22a9252907f853f91d07b143dfcc84f6ec0cc31f6b72408b503a7026eed5b109?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/22a9252907f853f91d07b143dfcc84f6ec0cc31f6b72408b503a7026eed5b109?s=96&d=mm&r=g","caption":"Beno\u00eet Steinmann"},"description":"Benoit is an embedded systems expert and the leader of software and firmware developments at imperix. On the knowledge base, he is the author of numerous software reference documents.","sameAs":["https:\/\/www.linkedin.com\/in\/benoit-steinmann\/"],"url":"https:\/\/imperix.com\/doc\/author\/steinmann"}]}},"_links":{"self":[{"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/posts\/720","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\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/comments?post=720"}],"version-history":[{"count":35,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/posts\/720\/revisions"}],"predecessor-version":[{"id":48948,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/posts\/720\/revisions\/48948"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/media\/48692"}],"wp:attachment":[{"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/media?parent=720"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/categories?post=720"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/tags?post=720"},{"taxonomy":"software-environments","embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/software-environments?post=720"},{"taxonomy":"provided-results","embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/provided-results?post=720"},{"taxonomy":"related-products","embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/related-products?post=720"},{"taxonomy":"guidedreadings","embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/guidedreadings?post=720"},{"taxonomy":"tutorials","embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/tutorials?post=720"},{"taxonomy":"user-manuals","embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/user-manuals?post=720"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/coauthors?post=720"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}