{"id":13383,"date":"2022-09-20T13:06:30","date_gmt":"2022-09-20T13:06:30","guid":{"rendered":"https:\/\/imperix.com\/doc\/?p=13383"},"modified":"2025-12-19T12:00:00","modified_gmt":"2025-12-19T12:00:00","slug":"programming-imperix-controllers","status":"publish","type":"post","link":"https:\/\/imperix.com\/doc\/help\/programming-imperix-controllers","title":{"rendered":"Programming and operating imperix controllers"},"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\/programming-imperix-controllers\/#Programming-workflows\" >Programming workflows<\/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\/programming-imperix-controllers\/#Phase-A-Developing-and-generating-a-real-time-control-code\" >Phase A) - Developing and generating a real-time control code<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/imperix.com\/doc\/help\/programming-imperix-controllers\/#Phase-B-Code-flashing-and-monitoring-in-Cockpit\" >Phase B) - Code flashing and monitoring in Cockpit<\/a><\/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\/help\/programming-imperix-controllers\/#Where-to-go-from-here\" >Where to go from here?<\/a><\/li><\/ul><\/nav><\/div>\n\n<p class=\"wp-block-paragraph\">This document provides guidance for first-time users on the essential procedures for deploying code to imperix controllers and connecting to the equipment. It is applicable to all variants of programmable controllers, including <a href=\"https:\/\/imperix.com\/products\/control\/rcp-controller\/\">B-Box 4<\/a>, <a href=\"https:\/\/imperix.com\/products\/control\/rcp-controller\/\">B-Box 3 (RCP)<\/a>, <a href=\"https:\/\/imperix.com\/products\/control\/power-inverter-controller\/\">B-Box 3 Micro<\/a>, <a href=\"https:\/\/imperix.com\/products\/control\/inverter-control-board\/\">B-Board 3 (PRO)<\/a>, and <a href=\"https:\/\/imperix.com\/products\/power\/programmable-inverter\/\">TPI8032<\/a>. Among other aspects, it notably addresses:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Code generation:<\/strong> how to generate and compile code using Simulink, PLECS, or the imperix IDE.<\/li>\n\n\n\n<li><strong>Connectivity:<\/strong> how to establish the PC \u2194\ufe0e Controller connection via Ethernet.<\/li>\n\n\n\n<li><strong>Monitoring basics:<\/strong> the fundamentals of remote monitoring and debugging using <a href=\"https:\/\/imperix.com\/doc\/help\/cockpit-user-guide\">Cockpit<\/a>.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Before following this guide, readers who work with Simulink or PLECS are advised to consult the articles on the ACG workflow shown in the table below. A series of video tutorials is also available with similar content. Readers who develop their code in C\/C++ should consult <a href=\"\/doc\/help\/getting-started-cpp-sdk\/installation-and-utilisation-of-cpp-sdk\">PN146<\/a> for instructions about the CPP SDK.<\/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    font-style: italic;\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    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>\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>\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\" class=\"cell-highlight\">\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=\"Programming-workflows\"><\/span>Programming workflows<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Imperix controllers utilize a CPU+FPGA architecture to execute control algorithms. Typically, the control task (user code) runs on the CPU, while low-level, time-critical functions (such as PWM modulation and safety) are handled by the FPGA. More information about the devices' architecture is available in <a href=\"\/doc\/help\/architecture-of-imperix-controllers\">PN253<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Thanks to their similar architecture, all imperix controllers benefit from an identical development workflow, consisting of the following two phases:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A)<\/strong> <strong>Control code development and offline simulation:<\/strong> With Simulink or PLECS, this phase takes place entirely within the simulation software on the PC. It includes the implementation of the control algorithms themselves, as well as the optional - but highly recommended - modeling of the plant and validation of the algorithms using offline simulations. With the imperix IDE, only C\/C++ code can be implemented. Offline simulation is not supported. This phase is mainly covered by the dedicated user guides: general getting-started instructions in <a href=\"\/doc\/help\/getting-started-with-acg-sdk\">PN134<\/a>, and software-specific instructions in <a href=\"\/doc\/help\/simulation-essentials-simulink\">PN135<\/a> (Simulink) and <a href=\"\/doc\/help\/simulation-essentials-plecs\">PN137<\/a> (PLECS).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>B)<\/strong> <strong>Code generation and device programming:<\/strong> With Simulink or PLECS, this phase also takes place within the simulation software, thanks to automated code generation. Subsequently, once the runtime executable code is generated, its deployment and all interactions with the hardware occur via imperix's dedicated software, <a href=\"https:\/\/imperix.com\/doc\/help\/cockpit-user-guide\">Cockpit<\/a>. This second phase is the main object of this article.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For the first step (A), imperix supports three possible development environments,\u00a0summarized below. For the second step <strong>B)<\/strong>, all actions rely on Cockpit, independently of the chosen development environment.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Environment<\/strong><\/td><td><strong>Language<\/strong><\/td><td><strong>Offline simulation<\/strong><\/td><td><strong>Required SDK<\/strong><\/td><td><strong>User guide<\/strong><\/td><\/tr><tr><td>Simulink<\/td><td>Graphical <sup>1)<\/sup><\/td><td>Yes <sup>2)<\/sup><\/td><td><a href=\"https:\/\/imperix.com\/software\/acg-sdk\/\">ACG SDK<\/a><sup> 3)<\/sup><\/td><td><a href=\"https:\/\/imperix.com\/doc\/help\/getting-started-acg-sdk\">ACG user guide<\/a><\/td><\/tr><tr><td>PLECS<\/td><td>Graphical <sup>4)<\/sup><\/td><td>Yes<\/td><td><a href=\"https:\/\/imperix.com\/software\/acg-sdk\/\">ACG SDK<\/a><sup> 3)<\/sup><\/td><td><a href=\"https:\/\/imperix.com\/doc\/help\/getting-started-acg-sdk\">ACG user guide<\/a><\/td><\/tr><tr><td>Imperix IDE<\/td><td>C\/C++<\/td><td>No<\/td><td><a href=\"https:\/\/imperix.com\/software\/cpp-sdk\/\">CPP SDK<\/a><sup> 5)<\/sup><\/td><td><a href=\"https:\/\/imperix.com\/doc\/help\/getting-started-cpp-sdk\/installation-and-utilisation-of-cpp-sdk\">CPP user guide<\/a><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><sup>1)<\/sup> <em>requires Matlab Simulink, Matlab Coder, Simulink Coder, and Embedded Coder<\/em><br><sup>2)<\/sup> <em>requires Simscape Electrical or PLECS Blockset for Simulink<\/em> <br><sup>3)<\/sup> <em>requires specific license issued by imperix (more details in <a href=\"https:\/\/imperix.com\/doc\/help\/software-licensing\">Licensing<\/a>)<\/em><br><sup>4)<\/sup> <em>requires PLECS and PLECS Coder<\/em><br><sup>5)<\/sup> <em>requires specific license issued by imperix (more details in <a href=\"https:\/\/imperix.com\/doc\/help\/software-licensing\">Licensing<\/a>)<\/em><\/p>\n\n\n\n<div class=\"wp-block-simple-alerts-for-gutenberg-alert-boxes sab-alert sab-alert-info\" role=\"alert\"><strong>FPGA development<\/strong>: For advanced users interested in developing custom logic for the FPGA, specific documentation and examples are available in the article titled <a href=\"https:\/\/imperix.com\/doc\/help\/fpga-development-on-imperix-controllers\">FPGA development on imperix controllers<\/a>. This requires installing the Vivado Design Suite, which can be used with a free license on all imperix controllers. High-Level Synthesis (HLS) workflows are also supported, and relevant documentation is available in <a href=\"https:\/\/imperix.com\/doc\/implementation\/high-level-synthesis-for-fpga\">High-Level Synthesis for FPGA development<\/a>.<\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Phase-A-Developing-and-generating-a-real-time-control-code\"><\/span>Phase A) - Developing and generating a real-time control code<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Using Simulink or PLECS<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Code development<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">As introduced in <a href=\"https:\/\/imperix.com\/doc\/help\/getting-started-acg-sdk-simulink\">PN134<\/a>, when developing control code on Simulink or PLECS with ACG SDK, the model is usually organized with two main subsystems, each serving a distinct purpose in the development workflow:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Plant <\/strong>subsystem: Used only in <strong>Simulation mode<\/strong>, this subsystem enables offline validation and tuning of the control algorithm. It uses blocks from the <strong><a href=\"https:\/\/imperix.com\/doc\/help\/getting-started-with-imperix-power-library\">Power library<\/a><\/strong> and Simscape Electrical \/ PLECS blocks to model the hardware dynamics of imperix power products. In <strong>Automated Code Generation<\/strong> mode, it is ignored.<\/li>\n\n\n\n<li><strong>Controller <\/strong>subsystem: Used for both <strong>Simulation <\/strong>and <strong>Automated Code Generation<\/strong>. It contains the core control implementation along with target-specific peripheral blocks (such as <a href=\"https:\/\/imperix.com\/doc\/software\/analog-data-acquisition\">ADC<\/a> and <a href=\"https:\/\/imperix.com\/doc\/software\/pulse-width-modulator\">PWM<\/a>) from the <strong>Control library<\/strong> for direct deployment to the hardware.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Important guidelines and best practices for effective use of Simulation mode are provided in <a href=\"https:\/\/imperix.com\/doc\/help\/simulation-essentials-simulink\">PN135 (Simulink)<\/a> and <a href=\"https:\/\/imperix.com\/doc\/help\/simulation-essentials-plecs\">PN137 (PLECS)<\/a>.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Code generation<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Once implemented and tested, the Simulink or PLECS model must be translated into code and compiled into an executable before it can be deployed onto the target. This process is handled automatically by Simulink or PLECS, thanks to the scripts and configuration files installed by the ACG SDK. From the user's perspective, all these tasks are carried out <strong>in one click<\/strong> using the following procedure:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>In Simulink<\/strong>:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Select \u201cAutomated Code Generation\u201d in the <a href=\"https:\/\/imperix.com\/doc\/software\/config-control-task-configuration\">CONFIG<\/a> block of the model.<\/li>\n\n\n\n<li>Select the right generation of the controller. The B-Box 4 is \"Gen. 4\". Other controllers are \"Gen. 3\". This information is required by the compiler to account for hardware-specific instructions.<\/li>\n\n\n\n<li>Build the model by clicking the \u201cBuild\u201d button (or with the shortcut Ctrl+B). <br>If the Build button is not shown, make sure that Simulink Coder and Embedded Coder are installed, and open the Embedded Coder app in the <em>APPS <\/em>tab. The Build button should appear in a new <em>C CODE<\/em> tab.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>In PLECS<\/strong>:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Open the Coder &gt; Coder option window (Ctrl+alt+B).<\/li>\n\n\n\n<li>Select the subsystem containing the control implementation in the left column.<\/li>\n\n\n\n<li>In the Target tab, select the target generation corresponding to your controller. The B-Box 4 is \"Gen. 4\". Other controllers are \"Gen. 3\". This information is required by the compiler to account for hardware-specific instructions.<\/li>\n\n\n\n<li>Click the \"Build\" button to start the building process.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">At the end of a successful build, <a href=\"\/software\/cockpit\/\" type=\"link\" id=\"\/software\/cockpit\/\">Cockpit<\/a> automatically launches and creates a new project with a pre-filled project name. Now, to deploy the code to the target, a connection must be established, as detailed below (phase B).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Using the imperix IDE for C\/C++<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">This workflow uses the imperix IDE, an Integrated Development Environment (IDE) built on the Eclipse platform. Users are required to implement their control algorithm directly in C or C++. The workflow relies on a provided library of peripheral routines (effectively hardware drivers) to interface with each hardware resource. A simple API is also provided for interfacing the application-level code with kernel functions.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To build the code and generate the runtime executable, select the current project in the project explorer, then click the \u201cRun\u201d icon (green play button). Specific getting-started instructions are provided in <a href=\"\/doc\/help\/getting-started-with-cpp-sdk\">PN148<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Phase-B-Code-flashing-and-monitoring-in-Cockpit\"><\/span>Phase B) - Code flashing and monitoring in Cockpit<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Once the code is generated, it is uploaded to the controller (hereafter called\u00a0the target)\u00a0<span style=\"box-sizing: border-box; margin: 0px; padding: 0px;\">via Cockpit, which\u00a0<\/span>opens automatically at the end of the build process.<\/p>\n\n\n\n<h3 id=\"ethernet-configuration\" class=\"wp-block-heading\">Connecting the target to the host PC<\/h3>\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\" style=\"flex-basis:66.66%\">\n<p class=\"wp-block-paragraph\">First, an Ethernet connection must be established between the host computer and the target(s). Two scenarios can be implemented:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The target is connected to a <strong>local Ethernet network<\/strong>. In this case, an IP address is generally automatically attributed to the target  by a server or router (over DHCP).<\/li>\n\n\n\n<li>A <strong>point-to-point link<\/strong> is established between the target and the host computer using a single Ethernet cable. In this case, the IP address is automatically assigned from the 169.254.x.x range.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">In Cockpit, no specific configuration is required. Connected targets are normally auto-detected and appear in the left bar of the Target perspective, as shown on the right.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\"><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"226\" height=\"347\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/06\/image-6.png\" alt=\"\" class=\"wp-image-33554\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/06\/image-6.png 226w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/06\/image-6-195x300.png 195w\" sizes=\"auto, (max-width: 226px) 100vw, 226px\" \/><\/figure>\n<\/div><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-simple-alerts-for-gutenberg-alert-boxes sab-alert sab-alert-info\" role=\"alert\">When multiple targets are interconnected using SFP fiber(s), only the top master device requires Ethernet connectivity. Ethernet traffic is indeed carried to the slaves without impacting real-time traffic.<\/div>\n\n\n\n<div class=\"wp-block-simple-alerts-for-gutenberg-alert-boxes sab-alert sab-alert-success\" role=\"alert\">Imperix controllers always respond to <a href=\"https:\/\/learn.microsoft.com\/en-us\/windows-server\/administration\/windows-commands\/ping\">ping<\/a> requests. When needed, testing TCP\/IP connectivity separately from Cockpit may provide useful debugging information. <\/div>\n\n\n<style>.kt-accordion-id13383_3cad87-33 .kt-accordion-inner-wrap{column-gap:var(--global-kb-gap-md, 2rem);row-gap:8px;}.kt-accordion-id13383_3cad87-33 .kt-accordion-panel-inner{padding-top:var(--global-kb-spacing-sm, 1.5rem);padding-right:var(--global-kb-spacing-sm, 1.5rem);padding-bottom:var(--global-kb-spacing-sm, 1.5rem);padding-left:var(--global-kb-spacing-sm, 1.5rem);}.kt-accordion-id13383_3cad87-33 > .kt-accordion-inner-wrap > .wp-block-kadence-pane > .kt-accordion-header-wrap > .kt-blocks-accordion-header{padding-top:var(--global-kb-spacing-xxs, 0.5rem);padding-right:var(--global-kb-spacing-xs, 1rem);padding-bottom:var(--global-kb-spacing-xxs, 0.5rem);padding-left:var(--global-kb-spacing-xs, 1rem);}@media all and (max-width: 767px){.kt-accordion-id13383_3cad87-33 .kt-accordion-inner-wrap{display:block;}.kt-accordion-id13383_3cad87-33 .kt-accordion-inner-wrap .kt-accordion-pane:not(:first-child){margin-top:8px;}}<\/style>\n<div class=\"wp-block-kadence-accordion alignnone\"><div class=\"kt-accordion-wrap kt-accordion-id13383_3cad87-33 kt-accordion-has-4-panes kt-active-pane-0 kt-accordion-block kt-pane-header-alignment-left kt-accodion-icon-style-basic kt-accodion-icon-side-right\" style=\"max-width:none\"><div class=\"kt-accordion-inner-wrap\" data-allow-multiple-open=\"false\" data-start-open=\"none\">\n<div class=\"wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-1 kt-pane13383_e90400-f6\"><div class=\"kt-accordion-header-wrap\"><button class=\"kt-blocks-accordion-header kt-acccordion-button-label-show\" type=\"button\"><span class=\"kt-blocks-accordion-title-wrap\"><span class=\"kt-blocks-accordion-title\">Connection within a local Ethernet network<\/span><\/span><span class=\"kt-blocks-accordion-icon-trigger\"><\/span><\/button><\/div><div class=\"kt-accordion-panel kt-accordion-panel-hidden\"><div class=\"kt-accordion-panel-inner\">\n<div class=\"wp-block-columns are-vertically-aligned-top is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-vertically-aligned-top is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<p class=\"wp-block-paragraph\">For the computer to communicate with the target, IP communication must be possible, which means both devices must belong to the same network.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If the target is connected to a local network the computer is already connected to, it will usually receive a compatible IP address automatically. In this case, Cockpit should automatically find the target on the network and display it in the target list. If not, its IP address can be manually added by clicking the <em>Can't find your target?<\/em> link.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-top is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"350\" height=\"292\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/06\/A1.png\" alt=\"\" class=\"wp-image-33663\" style=\"width:260px\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/06\/A1.png 350w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/06\/A1-300x250.png 300w\" sizes=\"auto, (max-width: 350px) 100vw, 350px\" \/><\/figure>\n<\/div>\n<\/div>\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\" style=\"flex-basis:66.66%\">\n<p class=\"wp-block-paragraph\">If this address is unknown, it can be easily found on the B-Box 3 and 4 using the front panel. However, with a TPI, B-Box Micro, or B-Board PRO, such a display does not exist. Manually configuring the computer's IP address within the same range as the target's backup static IP address may be the only recourse (see <a href=\"https:\/\/imperix.com\/doc\/help\/advanced-network-configurations\">PN144<\/a>).<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"506\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-42-1024x506.png\" alt=\"B-Box IP address display\" class=\"wp-image-327\" style=\"width:329px;height:auto\" title=\"Product notes &gt; PN139: Getting started with BB Control &gt; B-Box IP screen.png\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-42-1024x506.png 1024w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-42-300x148.png 300w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-42-768x380.png 768w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/image-42.png 1076w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-simple-alerts-for-gutenberg-alert-boxes sab-alert sab-alert-info\" role=\"alert\">If the B-Box shows a dynamic IP in the 169.254.x.x range, it means it did not receive any IP address automatically. This is a self-assigned address, allocated whenever no DHCP response is received.<br>In this case, manually configuring the computer's IP address may be required (see <a href=\"https:\/\/imperix.com\/doc\/help\/advanced-network-configurations\">PN144<\/a>).<\/div>\n\n\n\n<div class=\"wp-block-simple-alerts-for-gutenberg-alert-boxes sab-alert sab-alert-info\" role=\"alert\">Cockpit uses the following TCP ports: 4840 and 59000 through 59010.<br>These ports must <strong>not<\/strong> be blocked by a firewall.<\/div>\n<\/div><\/div><\/div>\n\n\n\n<div class=\"wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-4 kt-pane13383_53b8eb-12\"><div class=\"kt-accordion-header-wrap\"><button class=\"kt-blocks-accordion-header kt-acccordion-button-label-show\" type=\"button\"><span class=\"kt-blocks-accordion-title-wrap\"><span class=\"kt-blocks-accordion-title\">Direct (point-to-point) Ethernet connection<\/span><\/span><span class=\"kt-blocks-accordion-icon-trigger\"><\/span><\/button><\/div><div class=\"kt-accordion-panel kt-accordion-panel-hidden\"><div class=\"kt-accordion-panel-inner\">\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\" style=\"flex-basis:66.66%\">\n<p class=\"wp-block-paragraph\">In the case of a direct point-to-point connection (e.g., using a USB-to-Ethernet dongle adapter), both the computer and the target should automatically assign an IP address from the 169.254.x.x range. This process is known as Automatic Private IP Addressing (APIPA).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In this case, Cockpit should automatically find the target on the network and display it in the target list. If not, its IP address can be manually added by clicking the <em>Can't find your target? <\/em> link.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"350\" height=\"268\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/06\/A3.png\" alt=\"\" class=\"wp-image-33664\" style=\"width:260px\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/06\/A3.png 350w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/06\/A3-300x230.png 300w\" sizes=\"auto, (max-width: 350px) 100vw, 350px\" \/><\/figure>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-simple-alerts-for-gutenberg-alert-boxes sab-alert sab-alert-warning\" role=\"alert\">APIPA requires firmware version 2025.2 or later. For older versions or in case of trouble, using a static IP may be required. Detailed instructions are given in <a href=\"https:\/\/imperix.com\/doc\/help\/advanced-network-configurations\">Advanced Network Configurations<\/a>.<\/div>\n<\/div><\/div><\/div>\n<\/div><\/div><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Flashing and launching the code<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">At the end of a successful build, Cockpit automatically launches and creates a new project with a pre-filled project name and path. From there, only a few steps are required to load the code to the target and launch it:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li> Using the Cockpit left bar, click on \"Link target\" and choose the desired target (see images below). <\/li>\n\n\n\n<li>Once the project is linked to a target, the code is immediately uploaded to that target and launched.<\/li>\n\n\n\n<li>If the code is re-generated from the same location (i.e., the model is rebuilt), Cockpit simply loads the new version of the code and restarts it.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">More information on managing projects in Cockpit is given in the <a href=\"https:\/\/imperix.com\/doc\/help\/cockpit-user-guide#How-to-create-a-new-project\" target=\"_blank\" rel=\"noreferrer noopener\">Cockpit user guide<\/a>.<\/p>\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\"><img loading=\"lazy\" decoding=\"async\" width=\"312\" height=\"139\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2022\/09\/new_project_pane.png\" alt=\"\" class=\"wp-image-32662\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2022\/09\/new_project_pane.png 312w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2022\/09\/new_project_pane-300x134.png 300w\" sizes=\"auto, (max-width: 312px) 100vw, 312px\" \/><figcaption class=\"wp-element-caption\">Cockpit creates a new project using the user code built from Simulink, PLECS, or imperix IDE.<\/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\"><img loading=\"lazy\" decoding=\"async\" width=\"315\" height=\"76\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2022\/09\/target_pane_linking.png\" alt=\"\" class=\"wp-image-32664\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2022\/09\/target_pane_linking.png 315w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2022\/09\/target_pane_linking-300x72.png 300w\" sizes=\"auto, (max-width: 315px) 100vw, 315px\" \/><figcaption class=\"wp-element-caption\">Upon clicking \"Link target,\" Cockpit displays a list of potential targets to upload the user code to<\/figcaption><\/figure>\n<\/div><\/div>\n<\/div>\n\n\n\n<h3 id=\"enablepwm\" class=\"wp-block-heading\">Enabling PWM outputs<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Once the code is deployed on the target, it is automatically launched and runs continuously. However,<strong> the PWM signals are not produced at the device's physical outputs unless explicitly enabled by the operator<\/strong>. Enabling or disabling the gating signals is done in Cockpit using the dedicated button (project-related, left pane). This effectively serves as an allow\/block switch that determines when the converter is actually switching.<\/p>\n\n\n<div class=\"wp-block-image is-resized\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"374\" height=\"147\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2023\/01\/Block_diagram_activate_enable_PWM-1.png\" alt=\"\" class=\"wp-image-13976\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2023\/01\/Block_diagram_activate_enable_PWM-1.png 374w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2023\/01\/Block_diagram_activate_enable_PWM-1-300x118.png 300w\" sizes=\"auto, (max-width: 374px) 100vw, 374px\" \/><\/figure>\n<\/div>\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\"><img loading=\"lazy\" decoding=\"async\" width=\"281\" height=\"85\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2022\/09\/pwm.png\" alt=\"\" class=\"wp-image-32665\"\/><figcaption class=\"wp-element-caption\">When the button is red, PWM outputs are disabled. Clicking enables them.<\/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\"><img loading=\"lazy\" decoding=\"async\" width=\"281\" height=\"85\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2022\/09\/pwm_enable.png\" alt=\"\" class=\"wp-image-32666\"\/><figcaption class=\"wp-element-caption\">When the button is green, PWM outputs are enabled. Clicking disables them.<\/figcaption><\/figure>\n<\/div><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-simple-alerts-for-gutenberg-alert-boxes sab-alert sab-alert-danger\" role=\"alert\">Disabling PWM outputs only stops switching. <strong>This does not guarantee de-energization of the system<\/strong>. For instance, a DC bus may remain charged. A proper discharge mechanism (through converter-related actions or external power supplies) may be required. <\/div>\n\n\n\n<div class=\"wp-block-simple-alerts-for-gutenberg-alert-boxes sab-alert sab-alert-warning\" role=\"alert\">The enable\/disable mechanism should not be confused with the activation of individual PWM channels:<br>- <strong>enable\/disable<\/strong> is a global setting related to protection and manual start\/stop actions on switching.<br>- <strong>activate\/deactivate<\/strong> selects which channel will actually produce an output once enabled. This is controlled by the user code, typically to selectively turn different parts of a power converter on or off.<\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"498\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2022\/09\/image-10-1024x498.png\" alt=\"\" class=\"wp-image-47555\" style=\"aspect-ratio:2.056256378852827;width:695px;height:auto\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2022\/09\/image-10-1024x498.png 1024w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2022\/09\/image-10-300x146.png 300w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2022\/09\/image-10-768x373.png 768w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2022\/09\/image-10-1536x747.png 1536w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2022\/09\/image-10-2048x995.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<h3 id=\"operating-states-of-the-controller\" class=\"wp-block-heading\">Understanding the CORE operating states<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Imperix controllers have three possible states and conform to the state diagram below.<\/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=\"276\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2022\/09\/image-12-1024x276.png\" alt=\"\" class=\"wp-image-47557\" style=\"aspect-ratio:3.710349907918969;width:743px;height:auto\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2022\/09\/image-12-1024x276.png 1024w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2022\/09\/image-12-300x81.png 300w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2022\/09\/image-12-768x207.png 768w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2022\/09\/image-12-1536x413.png 1536w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2022\/09\/image-12-2048x551.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>BLOCKED<\/strong>: The CPU tasks are running, but all PWM outputs are blocked (ready to be enabled).<\/li>\n\n\n\n<li><strong>OPERATING<\/strong>: The PWM outputs are enabled, and the system is operating without errors.<\/li>\n\n\n\n<li><strong>FAULT<\/strong>: An error occurred, and the system is waiting for acknowledgment. The PWMs are blocked.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">The controller goes into <code>OPERATING<\/code> state when the PWM outputs are enabled, and goes back to <code>BLOCKED<\/code> state when disabled. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In case of error (e.g. due to an overcurrent detection in the power setup), the controller immediately goes into <code>FAULT<\/code> state, which immediately disables the PWM outputs. The source of the fault is described in Cockpit, either in the red banner located in the \"Project pane\u201c (see image below) or in the \"Log module\". The return to the <code>OPERATING<\/code> mode is only allowed once the fault is cleared and acknowledged by the user.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If anything goes wrong during converter operation, such as an overcurrent being detected, PWM outputs are immediately blocked by software-independent protections. Information about the fault source is provided in Cockpit's Log module and on the front panel (B-Boxes 3 and 4). Users must then acknowledge that a hardware, software, or user fault has occurred before operation can be resumed. Until then, the controller is frozen in the so-called <code>FAULT<\/code> state.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Controllers can reach the FAULT state for various reasons. The most common ones are listed in the table below. Any fault immediately switches off the PWM outputs, stopping the converter's operation.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Cause<\/th><th>Type<\/th><th>Reason(s)<\/th><\/tr><\/thead><tbody><tr><td>Configuration<\/td><td>Software<\/td><td>Misconfiguration, such as a physical resource being used multiple times (e.g. an analog input channel can't be used twice).<\/td><\/tr><tr><td>Overrun<\/td><td>Software<\/td><td>Excessive interrupt frequency considering the code complexity.<\/td><\/tr><tr><td>Code crash<\/td><td>Software<\/td><td>Can be a CPU or FPGA watchdog expiration, a C exception, etc...<\/td><\/tr><tr><td>Overvalue<\/td><td>Hardware<\/td><td>The configured threshold on an analog input has been exceeded.<\/td><\/tr><tr><td>Interlock<\/td><td>Hardware<\/td><td>A fault is triggered by an external device connected to the interlock connector (electrical or optical).<\/td><\/tr><tr><td>Fault line<\/td><td>Hardware<\/td><td>One of the fault inputs (FLT) is pulled high.<\/td><\/tr><tr><td>User code<\/td><td>User<\/td><td>An error has been intentionally thrown from within the user code.<\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">Most common types of faults encountered on an imperix controller<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">More information about the operating states that govern imperix controllers is provided in <a href=\"\/doc\/help\/operating-principles-of-imperix-controllers@core-states\" type=\"link\" id=\"\/doc\/help\/operating-principles-of-imperix-controllers\">PN261<\/a>. Further details on their hardware protection mechanisms are provided in <a href=\"\/doc\/help\/hardware-protections-on-imperix-controllers\" type=\"link\" id=\"\/doc\/help\/hardware-protections-on-imperix-controllers\">PN263<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Monitoring the controller in real-time using Cockpit<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/imperix.com\/software\/cockpit\/\" type=\"link\" id=\"https:\/\/imperix.com\/software\/cockpit\/\">Cockpit<\/a> offers different visualization modules that can be fed with real-time data. In fact, any signal connected to a <a href=\"\/doc\/software\/probe-variable\">Probe<\/a> or <a href=\"\/doc\/software\/tunable-parameter\">Tunable parameter<\/a> block can be monitored in Cockpit. The most useful modules include:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/imperix.com\/doc\/help\/scope-module\">Scope module<\/a> to display variables at the control rate, or oversampled data (B-Box 4 only).<\/li>\n\n\n\n<li><a href=\"https:\/\/imperix.com\/doc\/help\/scope-module#transient-generator\">Transient generator<\/a> to apply reference steps and ramps.<\/li>\n\n\n\n<li><a href=\"https:\/\/imperix.com\/doc\/help\/cockpit-user-guide#spectral-analyzer\">Spectral Analyzer<\/a> to analyze data in the frequency domain.<\/li>\n\n\n\n<li><a href=\"https:\/\/imperix.com\/doc\/help\/gui-builder-module\">GUI Builder module<\/a> to create custom dashboards for interacting with the controller.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/imperix.com\/doc\/help\/cockpit-user-guide\">Cockpit's user manual<\/a> provides more details on the software's capabilities.<\/p>\n\n\n<div class=\"wp-block-image is-resized\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"761\" height=\"548\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2022\/09\/cockpit_overview_2025.1.png\" alt=\"\" class=\"wp-image-32669\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2022\/09\/cockpit_overview_2025.1.png 761w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2022\/09\/cockpit_overview_2025.1-300x216.png 300w\" sizes=\"auto, (max-width: 761px) 100vw, 761px\" \/><figcaption class=\"wp-element-caption\">Cockpit software - Providing run-time monitoring and parameter tuning<\/figcaption><\/figure>\n<\/div>\n\n\n<h3 class=\"wp-block-heading\">Using the protection mechanisms<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Imperix controllers feature configurable <a href=\"\/doc\/help\/hardware-protections-on-imperix-controllers\">hardware protections<\/a> that operate independently from the rest of the system. Notably, overvoltage thresholds can be easily configured for each analog input channel. These provide vital protection for the power stage and surrounding equipment.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Details on the working principle of these protections are provided in <a href=\"\/doc\/help\/hardware-protections-on-imperix-controllers\">PN263<\/a>. Practical information on how to configure them is provided in the device-specific documentation listed in the table below. <\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Controller<\/th><th>Configurable through<\/th><th>Device-specific documentation<\/th><\/tr><\/thead><tbody><tr><td>B-Box 4<\/td><td>- Device front-panel (LCD+button)<br>- Cockpit Analog I\/O tab<\/td><td><a href=\"https:\/\/imperix.com\/doc\/help\/analog-i-o-configuration-on-b-box-4#How-to-configure-analog-front-end-hardware\" type=\"link\" id=\"https:\/\/imperix.com\/doc\/help\/analog-i-o-configuration-on-b-box-4#How-to-configure-analog-front-end-hardware\">PN252<\/a><\/td><\/tr><tr><td>B-Box 3 (RCP)<\/td><td>- Device front-panel (LCD+button)<\/td><td><a href=\"https:\/\/imperix.com\/doc\/help\/analog-front-end-configuration-on-b-box-rcp#Front-end-configuration-hardware\">PN105<\/a><\/td><\/tr><tr><td>B-Board 3 (PRO)<\/td><td>N\/A<\/td><td>N\/A<\/td><\/tr><tr><td>B-Box 3 micro<\/td><td>- Cockpit Analog I\/O tab<\/td><td><a href=\"https:\/\/imperix.com\/doc\/help\/analog-inputs-configuration-on-b-box-micro#Safety-limits\">PN106<\/a><\/td><\/tr><tr><td>TPI8032<\/td><td>N\/A<\/td><td><a href=\"https:\/\/imperix.com\/doc\/help\/tpi-quick-start-guide?currentThread=active-power-filter#Instructions-for-safe-use\">PN190<\/a><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 id=\"h-where-to-go-from-here\" class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Where-to-go-from-here\"><\/span>Where to go from here?<span class=\"ez-toc-section-end\"><\/span><\/h2>\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\">\n<p class=\"wp-block-paragraph\"><strong>Get started with specific controllers<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/imperix.com\/doc\/help\/b-box-4-quick-start-guide\">B-Box 4 - Quick start Guide<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/imperix.com\/doc\/help\/getting-started-with-b-box-micro\">B-Box micro  - Quick start Guide<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/imperix.com\/doc\/help\/tpi-quick-start-guide\">TPI 8032 - Quick start Guide<\/a><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Get inspired by numerous code examples<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/imperix.com\/doc\/example\/three-phase-pv-inverter\">Grid-tied inverters<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/imperix.com\/doc\/tag\/motor-drives\">Motor drives<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/imperix.com\/doc\/tag\/multilevel-converters\">Multi-level converters<\/a> <\/li>\n<\/ul>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>Build power converter setups<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/imperix.com\/doc\/help\/how-to-build-a-buck-converter\">How to build a buck converter<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/imperix.com\/doc\/help\/how-to-build-a-3-phase-inverter\">How to build a 3-phase inverter<\/a><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Learn how to program the FPGA of the controller<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/imperix.com\/doc\/help\/fpga-development-on-imperix-controllers\">Getting started with FPGA development<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/imperix.com\/doc\/implementation\/high-level-synthesis-for-fpga\">High-Level Synthesis for FPGA developments<\/a><\/li>\n<\/ul>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This document provides guidance for first-time users on the essential procedures for deploying code to imperix controllers and connecting to the equipment. It is applicable&#8230;<\/p>\n","protected":false},"author":2,"featured_media":39333,"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":[105,103,104],"provided-results":[],"related-products":[50,31,32,92,166,51],"guidedreadings":[],"tutorials":[],"user-manuals":[139,178,137,177,136],"coauthors":[63],"class_list":["post-13383","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-getting-started-acg-sdk","category-help","software-environments-c-plus-plus","software-environments-matlab","software-environments-plecs","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-cpp-sdk","user-manuals-b-board-pro","user-manuals-b-box-4","user-manuals-b-box-rcp-3-0","user-manuals-getting-started-with-acg-sdk","user-manuals-cpp-sdk"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Programming and operating imperix controllers - imperix<\/title>\n<meta name=\"description\" content=\"This page provides an overview and getting started instructions for the Cockpit debugging and monitoring software.\" \/>\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\/programming-imperix-controllers\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Programming and operating imperix controllers - imperix\" \/>\n<meta property=\"og:description\" content=\"This page provides an overview and getting started instructions for the Cockpit debugging and monitoring software.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/imperix.com\/doc\/help\/programming-imperix-controllers\" \/>\n<meta property=\"og:site_name\" content=\"imperix\" \/>\n<meta property=\"article:published_time\" content=\"2022-09-20T13:06:30+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-19T12:00:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/12\/3_2_ratio_PN138.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=\"15 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/help\\\/programming-imperix-controllers#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/help\\\/programming-imperix-controllers\"},\"author\":{\"name\":\"Julien Orsinger\",\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/#\\\/schema\\\/person\\\/65ef663818eab76f53cc627ab80e0a51\"},\"headline\":\"Programming and operating imperix controllers\",\"datePublished\":\"2022-09-20T13:06:30+00:00\",\"dateModified\":\"2025-12-19T12:00:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/help\\\/programming-imperix-controllers\"},\"wordCount\":2669,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/help\\\/programming-imperix-controllers#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/imperix.com\\\/doc\\\/wp-content\\\/uploads\\\/2025\\\/12\\\/3_2_ratio_PN138.png\",\"articleSection\":[\"Getting started with ACG SDK\",\"Product notes\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/imperix.com\\\/doc\\\/help\\\/programming-imperix-controllers#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/help\\\/programming-imperix-controllers\",\"url\":\"https:\\\/\\\/imperix.com\\\/doc\\\/help\\\/programming-imperix-controllers\",\"name\":\"Programming and operating imperix controllers - imperix\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/help\\\/programming-imperix-controllers#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/help\\\/programming-imperix-controllers#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/imperix.com\\\/doc\\\/wp-content\\\/uploads\\\/2025\\\/12\\\/3_2_ratio_PN138.png\",\"datePublished\":\"2022-09-20T13:06:30+00:00\",\"dateModified\":\"2025-12-19T12:00:00+00:00\",\"description\":\"This page provides an overview and getting started instructions for the Cockpit debugging and monitoring software.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/help\\\/programming-imperix-controllers#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/imperix.com\\\/doc\\\/help\\\/programming-imperix-controllers\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/help\\\/programming-imperix-controllers#primaryimage\",\"url\":\"https:\\\/\\\/imperix.com\\\/doc\\\/wp-content\\\/uploads\\\/2025\\\/12\\\/3_2_ratio_PN138.png\",\"contentUrl\":\"https:\\\/\\\/imperix.com\\\/doc\\\/wp-content\\\/uploads\\\/2025\\\/12\\\/3_2_ratio_PN138.png\",\"width\":450,\"height\":300},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/help\\\/programming-imperix-controllers#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\":\"Programming and operating imperix controllers\"}]},{\"@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":"Programming and operating imperix controllers - imperix","description":"This page provides an overview and getting started instructions for the Cockpit debugging and monitoring software.","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\/programming-imperix-controllers","og_locale":"en_US","og_type":"article","og_title":"Programming and operating imperix controllers - imperix","og_description":"This page provides an overview and getting started instructions for the Cockpit debugging and monitoring software.","og_url":"https:\/\/imperix.com\/doc\/help\/programming-imperix-controllers","og_site_name":"imperix","article_published_time":"2022-09-20T13:06:30+00:00","article_modified_time":"2025-12-19T12:00:00+00:00","og_image":[{"width":450,"height":300,"url":"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/12\/3_2_ratio_PN138.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\/help\/programming-imperix-controllers#article","isPartOf":{"@id":"https:\/\/imperix.com\/doc\/help\/programming-imperix-controllers"},"author":{"name":"Julien Orsinger","@id":"https:\/\/imperix.com\/doc\/#\/schema\/person\/65ef663818eab76f53cc627ab80e0a51"},"headline":"Programming and operating imperix controllers","datePublished":"2022-09-20T13:06:30+00:00","dateModified":"2025-12-19T12:00:00+00:00","mainEntityOfPage":{"@id":"https:\/\/imperix.com\/doc\/help\/programming-imperix-controllers"},"wordCount":2669,"commentCount":0,"publisher":{"@id":"https:\/\/imperix.com\/doc\/#organization"},"image":{"@id":"https:\/\/imperix.com\/doc\/help\/programming-imperix-controllers#primaryimage"},"thumbnailUrl":"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/12\/3_2_ratio_PN138.png","articleSection":["Getting started with ACG SDK","Product notes"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/imperix.com\/doc\/help\/programming-imperix-controllers#respond"]}]},{"@type":"WebPage","@id":"https:\/\/imperix.com\/doc\/help\/programming-imperix-controllers","url":"https:\/\/imperix.com\/doc\/help\/programming-imperix-controllers","name":"Programming and operating imperix controllers - imperix","isPartOf":{"@id":"https:\/\/imperix.com\/doc\/#website"},"primaryImageOfPage":{"@id":"https:\/\/imperix.com\/doc\/help\/programming-imperix-controllers#primaryimage"},"image":{"@id":"https:\/\/imperix.com\/doc\/help\/programming-imperix-controllers#primaryimage"},"thumbnailUrl":"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/12\/3_2_ratio_PN138.png","datePublished":"2022-09-20T13:06:30+00:00","dateModified":"2025-12-19T12:00:00+00:00","description":"This page provides an overview and getting started instructions for the Cockpit debugging and monitoring software.","breadcrumb":{"@id":"https:\/\/imperix.com\/doc\/help\/programming-imperix-controllers#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/imperix.com\/doc\/help\/programming-imperix-controllers"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/imperix.com\/doc\/help\/programming-imperix-controllers#primaryimage","url":"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/12\/3_2_ratio_PN138.png","contentUrl":"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/12\/3_2_ratio_PN138.png","width":450,"height":300},{"@type":"BreadcrumbList","@id":"https:\/\/imperix.com\/doc\/help\/programming-imperix-controllers#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":"Programming and operating imperix controllers"}]},{"@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\/13383","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=13383"}],"version-history":[{"count":295,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/posts\/13383\/revisions"}],"predecessor-version":[{"id":47563,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/posts\/13383\/revisions\/47563"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/media\/39333"}],"wp:attachment":[{"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/media?parent=13383"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/categories?post=13383"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/tags?post=13383"},{"taxonomy":"software-environments","embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/software-environments?post=13383"},{"taxonomy":"provided-results","embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/provided-results?post=13383"},{"taxonomy":"related-products","embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/related-products?post=13383"},{"taxonomy":"guidedreadings","embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/guidedreadings?post=13383"},{"taxonomy":"tutorials","embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/tutorials?post=13383"},{"taxonomy":"user-manuals","embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/user-manuals?post=13383"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/coauthors?post=13383"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}