{"id":45995,"date":"2026-08-06T14:29:21","date_gmt":"2026-08-06T14:29:21","guid":{"rendered":"https:\/\/imperix.com\/doc\/?p=45995"},"modified":"2026-08-06T14:40:02","modified_gmt":"2026-08-06T14:40:02","slug":"exchanging-data-with-modbus-tcp","status":"publish","type":"post","link":"https:\/\/imperix.com\/doc\/help\/exchanging-data-with-modbus-tcp","title":{"rendered":"Exchanging data with Modbus TCP"},"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\/exchanging-data-with-modbus-tcp\/#When-to-use-Modbus-TCP\" >When to use Modbus TCP?<\/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\/exchanging-data-with-modbus-tcp\/#How-does-Modbus-TCP-work\" >How does Modbus TCP work?<\/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\/exchanging-data-with-modbus-tcp\/#Modbus-TCP-support-on-imperix-controllers\" >Modbus TCP support on imperix controllers<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/imperix.com\/doc\/help\/exchanging-data-with-modbus-tcp\/#Example-inverter-supervision-using-Modbus-TCP\" >Example: inverter supervision using Modbus TCP<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/imperix.com\/doc\/help\/exchanging-data-with-modbus-tcp\/#Configuration-of-the-Modbus-TCP-mailboxes\" >Configuration of the Modbus TCP mailboxes<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/imperix.com\/doc\/help\/exchanging-data-with-modbus-tcp\/#Configuration-of-the-client-side\" >Configuration of the client side<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/imperix.com\/doc\/help\/exchanging-data-with-modbus-tcp\/#Test-scenario\" >Test scenario<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/en.wikipedia.org\/wiki\/Modbus#Modbus_TCP\" type=\"link\" id=\"https:\/\/en.wikipedia.org\/wiki\/Modbus#Modbus_TCP\">Modbus TCP<\/a> is an industrial communication protocol used to exchange data between various automation devices. Originally developed for serial communication, it was later adapted for Ethernet networks as Modbus <em>TCP<\/em>. The original serial communication protocol is now referred to as Modbus <em>RTU<\/em>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">On <a href=\"https:\/\/imperix.com\/products\/power-electronic-controllers\/\" type=\"link\" id=\"https:\/\/imperix.com\/products\/power-electronic-controllers\/\">imperix controllers<\/a>, Modbus TCP is supported similarly to <a href=\"https:\/\/imperix.com\/doc\/software\/can-input-mailbox\">CAN(-FD)<\/a> and <a href=\"https:\/\/imperix.com\/doc\/software\/ethernet-input-mailbox\">UDP<\/a>. It is mainly useful for non-time-critical data exchanges with third-party equipment. Modbus TCP is notably convenient when an imperix controller must interface with a Programmable Logic Controller (PLC), a Battery Management System (BMS), a Variable Frequency Drive (VFD), or metering and protection equipment. Other real-time communication protocols are also available, as presented in PN202. <br><br>This article explains when to use Modbus TCP with imperix controllers, summarizes the client\/server communication model, and explains its implementation using mailboxes. The article also provides a complete example between a Modbus server running on a TPI8032 and an external client running Modbus Poll. The example is based on TN167 and implements a grid-following inverter that receives active and reactive power references from the Modbus client and returns selected measurements.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"When-to-use-Modbus-TCP\"><\/span>When to use Modbus TCP?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Data exchanges using Modbus TCP typically occur at an execution rate of 0.1-10Hz, with a maximum of 100Hz. This makes Modbus TCP suitable for supervision, monitoring, and setpoint exchanges. However, due to millisecond-scale latency and the absence of deterministic timing, Modbus TCP is generally inadequate for hard real-time control loops. Modbus TCP therefore fits best in applications where inter-device compatibility is more important than communication performance. In power electronics, this often corresponds to supervisory actions such as:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Exchanging setpoints with other control-relevant devices;<\/li>\n\n\n\n<li>Reading measurements corresponding to slowly-varying dynamics (e.g. sun irradiance, motor speed, temperature, etc.);<\/li>\n\n\n\n<li>Transmitting status information to a SCADA system;<\/li>\n\n\n\n<li>Centralizing long-term logging data from a laboratory test bench.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"How-does-Modbus-TCP-work\"><\/span>How does Modbus TCP work?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Modbus operates on a client-server model: The client sends a request specifying a function code (which defines the action to perform, such as reading or writing data), a target address, and the relevant data. The server executes the requested action and returns the requested data or a confirmation that the write operation succeeded.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In Modbus-specific documentation, clients are also referred to as masters, while servers are designated as slaves.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\" id=\"fig1\"><img decoding=\"async\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2026\/06\/pn203-modbus-tcp-network.svg\" alt=\"Typical Modbus TCP network with clients and servers, including imperix controllers, PC tools, and laboratory instruments\" class=\"wp-image-45996\"\/><figcaption class=\"wp-element-caption\">Figure 1: Typical Modbus TCP network with computer-based software or imperix controllers acting as clients, and controllers or laboratory instruments acting as servers.<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">In Modbus TCP, the exchanges described above are encapsulated in standard TCP\/IP packets and transmitted over Ethernet. Each message can carry up to 253 Bytes of Modbus payload. Addressing is based on IP, with four types of so-called data areas within each device. Each data area represents a distinct addressing space of 2^16 bits. These follow Modbus-specific naming conventions, reflecting the number of bits per register as well as the possible access types:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><em>Discrete inputs<\/em> and <em>discrete outputs<\/em> are 1-bit registers. <em>Discrete inputs<\/em>  are read-only, while <em>discrete outputs<\/em>  are R\/W accessible.<\/li>\n\n\n\n<li><em>Input registers<\/em> and <em>holding registers<\/em> are 16-bit registers. <em><em>Input registers<\/em><\/em> are read-only, while <em>holding registers<\/em> are R\/W accessible.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Modbus-TCP-support-on-imperix-controllers\"><\/span>Modbus TCP support on imperix controllers<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Imperix controllers support both Modbus master\/client and Modbus slave\/server. Similar to the other supported communication protocols, the concept of mailbox is used as a communication buffer separating control-related actions from communication-related ones. In practice, data is either read from or written to mailboxes during control interrupts and processed independently by the supervisor core (Linux).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The mailbox direction defines the data flow direction, regardless of the client\/server mode. A <a href=\"https:\/\/imperix.com\/doc\/software\/modbus-input-mailbox\" type=\"link\" id=\"https:\/\/imperix.com\/doc\/software\/modbus-input-mailbox\"><code>Modbus_in <\/code>mailbox<\/a> receives data. Reciprocally, a<a href=\"https:\/\/imperix.com\/doc\/software\/modbus-output-mailbox\" type=\"link\" id=\"https:\/\/imperix.com\/doc\/software\/modbus-output-mailbox\"> <code>Modbus_out <\/code>mailbox<\/a> exposes\/sends data. The choice of the <em>data area<\/em> defines the access rules, as mentioned above.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Importantly, since Modbus uses 16-bit registers, 32-bit values commonly used on imperix controllers must be split across two registers. For this reason, <a href=\"https:\/\/en.wikipedia.org\/wiki\/Endianness\">endianness<\/a> must always be configured consistently with the external client. This is also documented for both the <a href=\"https:\/\/imperix.com\/doc\/software\/modbus-input-mailbox\">input<\/a> and <a href=\"https:\/\/imperix.com\/doc\/software\/modbus-output-mailbox\">output<\/a> mailboxes.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Example-inverter-supervision-using-Modbus-TCP\"><\/span>Example: inverter supervision using Modbus TCP<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The example implements a grid-connected inverter operating in grid-following mode, which injects controllable amounts of active and reactive power into the grid. This application is further presented in <a href=\"https:\/\/imperix.com\/doc\/implementation\/grid-following-inverter?currentThread=static-synchronous-compensator-statcom\" type=\"link\" id=\"https:\/\/imperix.com\/doc\/implementation\/grid-following-inverter?currentThread=static-synchronous-compensator-statcom\">TN167<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">On the communication side, the following configuration is implemented:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The imperix controller, here a <a href=\"https:\/\/imperix.com\/products\/power\/programmable-inverter\/\">TPI8032<\/a>, acts as a Modbus server.<\/li>\n\n\n\n<li>A Modbus client writes active and reactive power setpoints and reads selected measurements. For that, the <a href=\"https:\/\/www.modbustools.com\/modbus_poll.html\" type=\"link\" id=\"https:\/\/www.modbustools.com\/modbus_poll.html\">Modbus Poll<\/a> software is used to mimic the role of a PLC or strategy-level controller.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">For convenience, this example only implements two mailboxes:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>Modbus in<\/code> receives the active and reactive power references, here named <code>P_ref_GF<\/code> and <code>Q_ref_GF<\/code>. It uses <em>holding registers<\/em> (16-bits, R\/W-accessible). The corresponding address map is shown in <a href=\"https:\/\/imperix.com\/doc\/help\/exchanging-data-with-modbus-tcp#table3\" type=\"link\" id=\"https:\/\/imperix.com\/doc\/help\/exchanging-data-with-modbus-tcp#table3\">Table 3<\/a>.<\/li>\n\n\n\n<li><code>Modbus out<\/code> exposes the measured active power, reactive power, and the grid angular frequency. It uses <em>input registers<\/em> (16-bits, read-only). The corresponding address map is shown in <a href=\"https:\/\/imperix.com\/doc\/help\/exchanging-data-with-modbus-tcp#table4\" type=\"link\" id=\"https:\/\/imperix.com\/doc\/help\/exchanging-data-with-modbus-tcp#table4\">Table 4<\/a>.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Here, since the user code employs 32-bit floating-point values, they occupy two consecutive 16-bit registers. It is also worth noting that, in a different application scenario, other <em>data areas<\/em> could be used as well, for instance if the non-imperix device requires it.<\/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\">\n<p class=\"has-text-align-center wp-block-paragraph\"><strong>Writable setpoints<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table aligncenter\" id=\"table3\"><table><tbody><tr><td><strong>Holding<br>register range<\/strong><\/td><td><strong>Signal<\/strong><\/td><td><strong>Meaning<\/strong><\/td><\/tr><tr><td>0-1<\/td><td>P_ref_GF<\/td><td>Active-power<br>reference<\/td><\/tr><tr><td>2-3<\/td><td>Q_ref_GF<\/td><td>Reactive-power<br>reference<\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">Table 3: Holding-register map for the writable active- and<br>reactive-power setpoints.<\/figcaption><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"has-text-align-center wp-block-paragraph\"><strong>Monitored values<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table aligncenter\" id=\"table4\"><table><tbody><tr><td><strong>Input register<br>range<\/strong><\/td><td><strong>Signal<\/strong><\/td><td><strong>Meaning<\/strong><\/td><\/tr><tr><td>0-1<\/td><td>P_GFLI<\/td><td>Measured active<br>power<\/td><\/tr><tr><td>2-3<\/td><td>Q_GFLI<\/td><td>Measured reactive<br>power<\/td><\/tr><tr><td>4-5<\/td><td>w<\/td><td>Grid angular<br>frequency<\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">Table 4: Input-register map for the monitored inverter values.<\/figcaption><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">The corresponding model is shown below in Fig. 2 and can be downloaded using the button below. General instructions for compiling, loading, and running generated user code are covered in <a href=\"https:\/\/imperix.com\/doc\/help\/programming-imperix-controllers\" type=\"link\" id=\"https:\/\/imperix.com\/doc\/help\/programming-imperix-controllers\">PN138<\/a>.<\/p>\n\n\n\n<div class=\"wp-block-file aligncenter\"><a href=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2026\/07\/PN203_Modbus_Grid_Following_Inverter_Simulink.zip\" class=\"wp-block-file__button wp-element-button\" download>Download <strong>PN203_Modbus_Grid_Following_Inverter_Simulink.zip<\/strong><\/a><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\" id=\"fig2\"><img loading=\"lazy\" decoding=\"async\" width=\"2061\" height=\"900\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2026\/06\/pn203-simulink-overview-1.png\" alt=\"Simulink model overview with Modbus in and Modbus out blocks for inverter supervision\" class=\"wp-image-46141\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2026\/06\/pn203-simulink-overview-1.png 2061w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2026\/06\/pn203-simulink-overview-1-300x131.png 300w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2026\/06\/pn203-simulink-overview-1-1024x447.png 1024w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2026\/06\/pn203-simulink-overview-1-768x335.png 768w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2026\/06\/pn203-simulink-overview-1-1536x671.png 1536w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2026\/06\/pn203-simulink-overview-1-2048x894.png 2048w\" sizes=\"auto, (max-width: 2061px) 100vw, 2061px\" \/><figcaption class=\"wp-element-caption\">Figure 2: Control implementation for the grid-following inverter using Modbus for data exchanges.<\/figcaption><\/figure>\n<\/div>\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Configuration-of-the-Modbus-TCP-mailboxes\"><\/span>Configuration of the Modbus TCP mailboxes<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The corresponding configuration of the mailboxes is shown below:<\/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 is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"524\" height=\"659\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2026\/06\/pn203-modbus-in-mask.png\" alt=\"Modbus TCP input mailbox settings for receiving active and reactive power references\" class=\"wp-image-46000\" style=\"width:400px;height:auto\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2026\/06\/pn203-modbus-in-mask.png 524w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2026\/06\/pn203-modbus-in-mask-239x300.png 239w\" sizes=\"auto, (max-width: 524px) 100vw, 524px\" \/><figcaption class=\"wp-element-caption\">Figure 5: Modbus in block mask used when receiving P_ref_GF and Q_ref_GF<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">For the setpoints, the <code>Modbus in<\/code> mailbox is configured as a <em>Holding register<\/em> server because the external client must write into it. The mailbox then starts at address 0, receives two float32 values, and connects them to <code>P_ref_GF <\/code>and <code>Q_ref_GF<\/code>, matching <a href=\"https:\/\/imperix.com\/doc\/help\/exchanging-data-with-modbus-tcp#table3\" type=\"link\" id=\"https:\/\/imperix.com\/doc\/help\/exchanging-data-with-modbus-tcp#table3\">Table 3<\/a>. The data-valid output pin can be used to detect when the client has written a new value.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"524\" height=\"697\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2026\/06\/pn203-modbus-out-mask.png\" alt=\"Modbus TCP output mailbox settings for exposing measured active power, reactive power, and grid frequency\" class=\"wp-image-46001\" style=\"width:407px;height:auto\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2026\/06\/pn203-modbus-out-mask.png 524w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2026\/06\/pn203-modbus-out-mask-226x300.png 226w\" sizes=\"auto, (max-width: 524px) 100vw, 524px\" \/><figcaption class=\"wp-element-caption\">Figure 6: Modbus out block mask used when exposing P_GFLI, Q_GFLI, and w<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">For the measurements, the <code>Modbus out<\/code> mailbox is configured as an <em>Input register<\/em> server because the external client only needs read access. The mailbox also starts at address 0 and exposes three float32 values, which occupy six input registers, as listed in <a href=\"https:\/\/imperix.com\/doc\/help\/exchanging-data-with-modbus-tcp#table4\">Table 4<\/a>.<\/p>\n<\/div>\n<\/div>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Configuration-of-the-client-side\"><\/span>Configuration of the client side<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">On the client side, <a href=\"https:\/\/www.modbustools.com\/modbus_poll.html\" type=\"link\" id=\"https:\/\/www.modbustools.com\/modbus_poll.html\">Modbus Poll<\/a> is used to simulate the behavior of the strategy-level controller that the inverter interacts with. This software is a commonly used tool for testing Modbus communication. It is particularly useful here because it offers advanced debugging features. Modbus Poll is a commercial software with a <a href=\"https:\/\/www.modbustools.com\/download.html\" type=\"link\" id=\"https:\/\/www.modbustools.com\/download.html\">free evaluation version<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The software configuration begins by establishing a connection to the controller at its IP address and TCP port 502, as shown in <a href=\"https:\/\/imperix.com\/doc\/help\/exchanging-data-with-modbus-tcp#fig7\" type=\"link\" id=\"https:\/\/imperix.com\/doc\/help\/exchanging-data-with-modbus-tcp#fig12\">Fig. 7<\/a>.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\" id=\"fig7\"><img loading=\"lazy\" decoding=\"async\" width=\"654\" height=\"684\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2026\/06\/pn203-modbus-poll-connection-setup.png\" alt=\"Modbus Poll connection setup with controller IP address and TCP port 502\" class=\"wp-image-46002\" style=\"aspect-ratio:0.9561872035259403;width:416px;height:auto\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2026\/06\/pn203-modbus-poll-connection-setup.png 654w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2026\/06\/pn203-modbus-poll-connection-setup-287x300.png 287w\" sizes=\"auto, (max-width: 654px) 100vw, 654px\" \/><figcaption class=\"wp-element-caption\">Figure 7: Modbus Poll connection setup using Modbus TCP\/IP, the controller IP address, and TCP port 502.<\/figcaption><\/figure>\n<\/div>\n\n\n<h4 class=\"wp-block-heading\">Reading monitored values<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">For reading the monitored values, the client is configured as shown in Table 5. The register cells are displayed as Little-endian byte swap so that each pair of 16-bit registers is decoded as one float32 value (see <a href=\"https:\/\/imperix.com\/doc\/help\/exchanging-data-with-modbus-tcp#fig7\" type=\"link\" id=\"https:\/\/imperix.com\/doc\/help\/exchanging-data-with-modbus-tcp#fig7\">Fig. 9<\/a>).<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>Setting<\/strong><\/td><td><strong>Value<\/strong><\/td><td><strong>Comment<\/strong><\/td><\/tr><tr><td>Unit ID<\/td><td>1<\/td><td>Conventional unit identifier used by Modbus Poll for this<br>single-server test<\/td><\/tr><tr><td>Function<\/td><td>04 Read Input<br>Registers (3x)<\/td><td>The monitored values are exposed through the input-register<br>data area<\/td><\/tr><tr><td>Address<\/td><td>0<\/td><td>The Modbus out mailbox starts at input register 0<\/td><\/tr><tr><td>Quantity<\/td><td>6<\/td><td>The Modbus out mailbox starts at input register 0<\/td><\/tr><tr><td>Scan rate<\/td><td>100 ms<\/td><td>Polls at 10 Hz<\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">Table 5: Modbus Poll read definition for polling the monitored input registers.<\/figcaption><\/figure>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"643\" height=\"792\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2026\/06\/pn203-modbus-poll-read-input-registers.png\" alt=\"Read definition for polling input registers containing monitored inverter values\" class=\"wp-image-46003\" style=\"aspect-ratio:0.8118993405683532;width:424px;height:auto\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2026\/06\/pn203-modbus-poll-read-input-registers.png 643w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2026\/06\/pn203-modbus-poll-read-input-registers-244x300.png 244w\" sizes=\"auto, (max-width: 643px) 100vw, 643px\" \/><figcaption class=\"wp-element-caption\">Figure 8: Read definition used when polling the six input registers that contain the three monitored float32 values.<\/figcaption><\/figure>\n<\/div>\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\" id=\"fig9\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"776\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2026\/06\/pn203-modbus-poll-read-format-1024x776.png\" alt=\"Display format for decoding register values as 32-bit floats with little-endian byte swap\" class=\"wp-image-46004\" style=\"aspect-ratio:1.3196394885768183;width:667px;height:auto\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2026\/06\/pn203-modbus-poll-read-format-1024x776.png 1024w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2026\/06\/pn203-modbus-poll-read-format-300x227.png 300w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2026\/06\/pn203-modbus-poll-read-format-768x582.png 768w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2026\/06\/pn203-modbus-poll-read-format.png 1122w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Figure 9: Display format used when decoding or entering the Modbus register values as 32-bit floats with little-endian byte swap.<\/figcaption><\/figure>\n<\/div>\n\n\n<h4 class=\"wp-block-heading\">Writing setpoints<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">After that, a second Modbus Poll page is created (<code>File &gt; New<\/code>) so that the read and write requests can be monitored simultaneously in the provided interface. The <em>Holding register<\/em> write definition is configured as shown in Table 6. The same display format (endianness) is also used here.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>Setting<\/strong><\/td><td><strong>Value<\/strong><\/td><td><strong>Comment<\/strong><\/td><\/tr><tr><td>Unit ID<\/td><td>1<\/td><td>Same unit identifier as the read request<\/td><\/tr><tr><td>Function<\/td><td>16 Write Multiple<br>Registers<\/td><td>The two setpoints are writable holding-register values<\/td><\/tr><tr><td>Address<\/td><td>0<\/td><td>The Modbus in mailbox starts at holding register 0<\/td><\/tr><tr><td>Quantity<\/td><td>4<\/td><td>Two float32 values occupy four 16-bit registers<\/td><\/tr><tr><td>Scan rate<\/td><td>100 ms<\/td><td>Writes at 10 Hz, which is sufficient for manual setpoint<br>changes<\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">Table 6: Modbus Poll write definition for writing the active- and reactive-power setpoints.<\/figcaption><\/figure>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"694\" height=\"997\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2026\/06\/pn203-modbus-poll-write-holding-registers.png\" alt=\"Write definition for holding registers mapped to power setpoints\" class=\"wp-image-46005\" style=\"width:430px;height:auto\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2026\/06\/pn203-modbus-poll-write-holding-registers.png 694w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2026\/06\/pn203-modbus-poll-write-holding-registers-209x300.png 209w\" sizes=\"auto, (max-width: 694px) 100vw, 694px\" \/><figcaption class=\"wp-element-caption\">Figure 10: Write definition used when accessing the holding registers mapped to P_ref_GF and Q_ref_GF<\/figcaption><\/figure>\n<\/div>\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Test-scenario\"><\/span>Test scenario<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">For replicating this example, the user code must be first compiled and loaded on the target. The inverter controller and the PC running Modbus Poll must also be connected to the same Ethernet network. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">At first, PWM outputs are left disabled and the proper reception of setpoints is checked. Once communication has been successfully tested, application-level tests can take place.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">As shown in Figure 11, a reference step from 1000 Watts to 3000 Watts is executed, while the reactive-power reference remains at 0. The corresponding result is visible in the <a href=\"https:\/\/imperix.com\/doc\/help\/cockpit-user-guide?currentThread=b-box-4\" type=\"link\" id=\"https:\/\/imperix.com\/doc\/help\/cockpit-user-guide?currentThread=b-box-4\">Cockpit<\/a> screenshots shown in Figure 12.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"725\" height=\"244\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2026\/06\/pn203-modbus-poll-enter-float.png\" alt=\"Value entry showing the active-power reference changed from 1000 watts to 3000 watts\" class=\"wp-image-46006\" style=\"width:469px;height:auto\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2026\/06\/pn203-modbus-poll-enter-float.png 725w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2026\/06\/pn203-modbus-poll-enter-float-300x101.png 300w\" sizes=\"auto, (max-width: 725px) 100vw, 725px\" \/><figcaption class=\"wp-element-caption\">Figure 11: Reference step change of P_ref_GF from 1000W to 3000W.<\/figcaption><\/figure>\n<\/div>\n\n\n<figure class=\"wp-block-image size-full\" id=\"fig12\"><img loading=\"lazy\" decoding=\"async\" width=\"2021\" height=\"1143\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2026\/06\/pn203-modbus-poll-cockpit-validation.png\" alt=\"Cockpit validation showing the active-power reference update and measured inverter response\" class=\"wp-image-46007\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2026\/06\/pn203-modbus-poll-cockpit-validation.png 2021w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2026\/06\/pn203-modbus-poll-cockpit-validation-300x170.png 300w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2026\/06\/pn203-modbus-poll-cockpit-validation-1024x579.png 1024w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2026\/06\/pn203-modbus-poll-cockpit-validation-768x434.png 768w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2026\/06\/pn203-modbus-poll-cockpit-validation-1536x869.png 1536w\" sizes=\"auto, (max-width: 2021px) 100vw, 2021px\" \/><figcaption class=\"wp-element-caption\">Figure 12: Resulting change of active power shown in Imperix Cockpit.<\/figcaption><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Modbus TCP is an industrial communication protocol used to exchange data between various automation devices. Originally developed for serial communication, it was later adapted for&#8230;<\/p>\n","protected":false},"author":31,"featured_media":46007,"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":[3],"tags":[],"software-environments":[103],"provided-results":[108],"related-products":[50,31,32,92,166,110],"guidedreadings":[],"tutorials":[],"user-manuals":[],"coauthors":[173],"class_list":["post-45995","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-help","software-environments-matlab","provided-results-experimental","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"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Exchanging data with Modbus TCP - imperix<\/title>\n<meta name=\"description\" content=\"Learn when to use Modbus TCP with imperix controllers and how to validate Client\/Server exchanges with Modbus Poll.\" \/>\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\/exchanging-data-with-modbus-tcp\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Exchanging data with Modbus TCP - imperix\" \/>\n<meta property=\"og:description\" content=\"Learn when to use Modbus TCP with imperix controllers and how to validate Client\/Server exchanges with Modbus Poll.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/imperix.com\/doc\/help\/exchanging-data-with-modbus-tcp\" \/>\n<meta property=\"og:site_name\" content=\"imperix\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-06T14:29:21+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-06T14:40:02+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2026\/06\/pn203-modbus-poll-cockpit-validation.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2021\" \/>\n\t<meta property=\"og:image:height\" content=\"1143\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Jules Perrin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jules Perrin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/help\\\/exchanging-data-with-modbus-tcp#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/help\\\/exchanging-data-with-modbus-tcp\"},\"author\":{\"name\":\"Jules Perrin\",\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/#\\\/schema\\\/person\\\/32c999aeeedb3d8426771111a1d5c10a\"},\"headline\":\"Exchanging data with Modbus TCP\",\"datePublished\":\"2026-08-06T14:29:21+00:00\",\"dateModified\":\"2026-08-06T14:40:02+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/help\\\/exchanging-data-with-modbus-tcp\"},\"wordCount\":1558,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/help\\\/exchanging-data-with-modbus-tcp#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/imperix.com\\\/doc\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/pn203-modbus-poll-cockpit-validation.png\",\"articleSection\":[\"Product notes\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/imperix.com\\\/doc\\\/help\\\/exchanging-data-with-modbus-tcp#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/help\\\/exchanging-data-with-modbus-tcp\",\"url\":\"https:\\\/\\\/imperix.com\\\/doc\\\/help\\\/exchanging-data-with-modbus-tcp\",\"name\":\"Exchanging data with Modbus TCP - imperix\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/help\\\/exchanging-data-with-modbus-tcp#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/help\\\/exchanging-data-with-modbus-tcp#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/imperix.com\\\/doc\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/pn203-modbus-poll-cockpit-validation.png\",\"datePublished\":\"2026-08-06T14:29:21+00:00\",\"dateModified\":\"2026-08-06T14:40:02+00:00\",\"description\":\"Learn when to use Modbus TCP with imperix controllers and how to validate Client\\\/Server exchanges with Modbus Poll.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/help\\\/exchanging-data-with-modbus-tcp#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/imperix.com\\\/doc\\\/help\\\/exchanging-data-with-modbus-tcp\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/help\\\/exchanging-data-with-modbus-tcp#primaryimage\",\"url\":\"https:\\\/\\\/imperix.com\\\/doc\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/pn203-modbus-poll-cockpit-validation.png\",\"contentUrl\":\"https:\\\/\\\/imperix.com\\\/doc\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/pn203-modbus-poll-cockpit-validation.png\",\"width\":2021,\"height\":1143},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/help\\\/exchanging-data-with-modbus-tcp#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\":\"Exchanging data with Modbus TCP\"}]},{\"@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\\\/32c999aeeedb3d8426771111a1d5c10a\",\"name\":\"Jules Perrin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9adf567c8d657bac518c3c14383ac929cbcfc75f6b25e011e72803abb3d43c38?s=96&d=mm&r=g3dad3fc9bba6b6a2d48c6063ec63d57b\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9adf567c8d657bac518c3c14383ac929cbcfc75f6b25e011e72803abb3d43c38?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9adf567c8d657bac518c3c14383ac929cbcfc75f6b25e011e72803abb3d43c38?s=96&d=mm&r=g\",\"caption\":\"Jules Perrin\"},\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/in\\\/jules-perrin-7aa9b828b\\\/\"],\"url\":\"https:\\\/\\\/imperix.com\\\/doc\\\/author\\\/perrin\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Exchanging data with Modbus TCP - imperix","description":"Learn when to use Modbus TCP with imperix controllers and how to validate Client\/Server exchanges with Modbus Poll.","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\/exchanging-data-with-modbus-tcp","og_locale":"en_US","og_type":"article","og_title":"Exchanging data with Modbus TCP - imperix","og_description":"Learn when to use Modbus TCP with imperix controllers and how to validate Client\/Server exchanges with Modbus Poll.","og_url":"https:\/\/imperix.com\/doc\/help\/exchanging-data-with-modbus-tcp","og_site_name":"imperix","article_published_time":"2026-08-06T14:29:21+00:00","article_modified_time":"2026-08-06T14:40:02+00:00","og_image":[{"width":2021,"height":1143,"url":"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2026\/06\/pn203-modbus-poll-cockpit-validation.png","type":"image\/png"}],"author":"Jules Perrin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Jules Perrin","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/imperix.com\/doc\/help\/exchanging-data-with-modbus-tcp#article","isPartOf":{"@id":"https:\/\/imperix.com\/doc\/help\/exchanging-data-with-modbus-tcp"},"author":{"name":"Jules Perrin","@id":"https:\/\/imperix.com\/doc\/#\/schema\/person\/32c999aeeedb3d8426771111a1d5c10a"},"headline":"Exchanging data with Modbus TCP","datePublished":"2026-08-06T14:29:21+00:00","dateModified":"2026-08-06T14:40:02+00:00","mainEntityOfPage":{"@id":"https:\/\/imperix.com\/doc\/help\/exchanging-data-with-modbus-tcp"},"wordCount":1558,"commentCount":0,"publisher":{"@id":"https:\/\/imperix.com\/doc\/#organization"},"image":{"@id":"https:\/\/imperix.com\/doc\/help\/exchanging-data-with-modbus-tcp#primaryimage"},"thumbnailUrl":"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2026\/06\/pn203-modbus-poll-cockpit-validation.png","articleSection":["Product notes"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/imperix.com\/doc\/help\/exchanging-data-with-modbus-tcp#respond"]}]},{"@type":"WebPage","@id":"https:\/\/imperix.com\/doc\/help\/exchanging-data-with-modbus-tcp","url":"https:\/\/imperix.com\/doc\/help\/exchanging-data-with-modbus-tcp","name":"Exchanging data with Modbus TCP - imperix","isPartOf":{"@id":"https:\/\/imperix.com\/doc\/#website"},"primaryImageOfPage":{"@id":"https:\/\/imperix.com\/doc\/help\/exchanging-data-with-modbus-tcp#primaryimage"},"image":{"@id":"https:\/\/imperix.com\/doc\/help\/exchanging-data-with-modbus-tcp#primaryimage"},"thumbnailUrl":"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2026\/06\/pn203-modbus-poll-cockpit-validation.png","datePublished":"2026-08-06T14:29:21+00:00","dateModified":"2026-08-06T14:40:02+00:00","description":"Learn when to use Modbus TCP with imperix controllers and how to validate Client\/Server exchanges with Modbus Poll.","breadcrumb":{"@id":"https:\/\/imperix.com\/doc\/help\/exchanging-data-with-modbus-tcp#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/imperix.com\/doc\/help\/exchanging-data-with-modbus-tcp"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/imperix.com\/doc\/help\/exchanging-data-with-modbus-tcp#primaryimage","url":"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2026\/06\/pn203-modbus-poll-cockpit-validation.png","contentUrl":"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2026\/06\/pn203-modbus-poll-cockpit-validation.png","width":2021,"height":1143},{"@type":"BreadcrumbList","@id":"https:\/\/imperix.com\/doc\/help\/exchanging-data-with-modbus-tcp#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":"Exchanging data with Modbus TCP"}]},{"@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\/32c999aeeedb3d8426771111a1d5c10a","name":"Jules Perrin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/9adf567c8d657bac518c3c14383ac929cbcfc75f6b25e011e72803abb3d43c38?s=96&d=mm&r=g3dad3fc9bba6b6a2d48c6063ec63d57b","url":"https:\/\/secure.gravatar.com\/avatar\/9adf567c8d657bac518c3c14383ac929cbcfc75f6b25e011e72803abb3d43c38?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/9adf567c8d657bac518c3c14383ac929cbcfc75f6b25e011e72803abb3d43c38?s=96&d=mm&r=g","caption":"Jules Perrin"},"sameAs":["https:\/\/www.linkedin.com\/in\/jules-perrin-7aa9b828b\/"],"url":"https:\/\/imperix.com\/doc\/author\/perrin"}]}},"_links":{"self":[{"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/posts\/45995","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\/31"}],"replies":[{"embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/comments?post=45995"}],"version-history":[{"count":54,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/posts\/45995\/revisions"}],"predecessor-version":[{"id":48239,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/posts\/45995\/revisions\/48239"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/media\/46007"}],"wp:attachment":[{"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/media?parent=45995"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/categories?post=45995"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/tags?post=45995"},{"taxonomy":"software-environments","embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/software-environments?post=45995"},{"taxonomy":"provided-results","embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/provided-results?post=45995"},{"taxonomy":"related-products","embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/related-products?post=45995"},{"taxonomy":"guidedreadings","embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/guidedreadings?post=45995"},{"taxonomy":"tutorials","embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/tutorials?post=45995"},{"taxonomy":"user-manuals","embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/user-manuals?post=45995"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/coauthors?post=45995"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}