{"id":3341,"date":"2025-04-18T05:07:42","date_gmt":"2025-04-18T05:07:42","guid":{"rendered":"https:\/\/webprojects.cloud\/wordpress\/splatco\/?post_type=spl_knowledgebase&#038;p=3341"},"modified":"2025-06-10T09:33:33","modified_gmt":"2025-06-10T09:33:33","slug":"modbus-master-scripts-a-worked-example","status":"publish","type":"spl_knowledgebase","link":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/serial-communications\/modbus\/modbus-master-configuration\/modbus-master-scripts-a-worked-example\/","title":{"rendered":"ModBus master scripts: A worked example"},"content":{"rendered":"\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"259\" src=\"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-content\/uploads\/2025\/04\/ModBus-.jpg\" alt=\"\" class=\"wp-image-3329\" srcset=\"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-content\/uploads\/2025\/04\/ModBus-.jpg 500w, https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-content\/uploads\/2025\/04\/ModBus--300x155.jpg 300w, https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-content\/uploads\/2025\/04\/ModBus--64x33.jpg 64w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/figure>\n\n\n\n<p>As an example, let&#8217;s go through the steps to set up the connections illustrated in the above diagram. The SPLat is to be the master and the VSD is to be the slave.<\/p>\n\n\n\n<h6 class=\"wp-block-heading\">Step 1: Determine resource addresses and data types<\/h6>\n\n\n\n<p>We have already determined the addresses in SPLat, as they are given in the diagram. Stated verbally &#8220;we want the value in SPLat&#8217;s&nbsp;<a href=\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/glossary-of-terms\/#o414\">RAM<\/a>&nbsp;location 198 to control the speed of the VSD, and we want the VSD&#8217;s status flag to be available as semaphore 56&#8243;. Hence RAM 198 must be written from the SPLat to the VSD, and semaphore 56 must be read from the VSD.<\/p>\n\n\n\n<p>In our example we need to establish the addresses within the VSD. That information must come from the VSD documentation.<\/p>\n\n\n\n<p>Let&#8217;s say that the VSD manual gives the speed register address as 41234 and the status flag as 00025. These addresses tell us that the speed register is mapped as a holding register (4xxxx) and the status flag as an internal coil (0xxxx). By implication the VSD maker is using Modicon references. These are presumably 1-based addresses (a thoughtful vendor will state that quite explicitly somewhere in their documentation)<\/p>\n\n\n\n<p>We can now make up the following chart:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><th>Variable<\/th><th>VSD address<\/th><th>ModBus address<\/th><th>SPLat address<\/th><th>Transfer type<\/th><th>Direction<\/th><\/tr><tr><td>VSD speed<\/td><td>41234<\/td><td>1233<\/td><td>RAM 198<\/td><td>Holding reg<\/td><td>SPLat to VSD<\/td><\/tr><tr><td>VSD status<\/td><td>00025<\/td><td>24<\/td><td>Sem 56 = Byte 7 bit 0<\/td><td>Coil<\/td><td>VSD to SPLat<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h6 class=\"wp-block-heading\">Step 2: Decide what ModBus messages to use<\/h6>\n\n\n\n<p>No equipment maker supports every ModBus function type in every product. You therefore need to compare the supported function lists&nbsp;<a href=\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/serial-communications\/modbus\/modbus-supported-functions\/\">for SPLat<\/a>&nbsp;and for the other device and find appropriate functions supported in both. This is why we have provided some redundancy in the functions we support, to improve the odds of you finding suitable matches.<\/p>\n\n\n\n<p>In the current example the choices will be either function 6 (preset single holding register) or 16 (preset multiple holding registers) for speed, and function 1 (read coil(s)) for the status. Assuming the VSD supports 6, we select that as the simplest of the two.<\/p>\n\n\n\n<h6 class=\"wp-block-heading\">Step 3: Decide on word mode or byte mode for register transfers.<\/h6>\n\n\n\n<p>This is an important point, as it concerns matching the 8-bit world of SPLat to the 16-bit world of ModBus. In the current example we are sending a single byte variable to a 16-bit register, so byte mode is the best choice (it will force the high order byte to 0 automatically).<\/p>\n\n\n\n<h6 class=\"wp-block-heading\">Step 4: Determine the slave address<\/h6>\n\n\n\n<p>Every ModBus device other than the master must have an address. You must consult the VSD documentation to find out how to set its address. Valid addresses are 1 to 247. Assume we set the VSD to 123. The VSD documentation will tell you how to do this (probably via DIP switches or a front panel setting)<\/p>\n\n\n\n<h6 class=\"wp-block-heading\">Step 5: Write the control script<\/h6>\n\n\n\n<p>Once we are this far the hard part is done. The decisions are made and we simply have to encode them into some numbers.<\/p>\n\n\n\n<p>We will write a script that simply runs indefinitely, looping back on itself. That means the SPLat master will generate continuous update messages and keep the VSD and its own memory in step. We call this &#8220;continuous and asynchronous&#8221;, because the communications updates take place all the time, and without regard to anything else going on in the SPLat program or the VSD. It is the simplest thing to do. The downside is that there will be variable delays between the SPLat say changing the speed in RAM 198 and the VSD receiving the changed value. You can make &#8220;one shot, synchronous&#8221; scripts as well, but it is more difficult.<\/p>\n\n\n\n<p>The script will have to specify two ModBus functions, a&nbsp;<a href=\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/programming-reference\/instructions-arranged-by-function\/communications-instructions\/modbus-instructions\/modbus-master-control-script-commands\/presethreg-6-slaveaddr-regaddr16-spaddr16-spmode\/\">function 6<\/a>&nbsp;for the speed and a&nbsp;<a href=\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/programming-reference\/instructions-arranged-by-function\/communications-instructions\/modbus-instructions\/modbus-master-control-script-commands\/readcoils-1-slaveaddr-coiladdr16-itemcount-spaddr16\/\">function 1<\/a>&nbsp;for the status. The hot links in the previous sentence are to the relevant script commands.<\/p>\n\n\n\n<p>The function 6 script command requires: Function number (6), SlaveAddr (123), RegAddr16 (1233), SPAddr16 (56) and SPMode (0). Hence, the script entry for the function 6 will be<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">      <a href=\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/programming-reference\/directives\/nv0byte-directive-d15\/\">NV0Byte<\/a>     6,123,#1233,#56,0<\/pre>\n\n\n\n<p>This entry will eventually be placed in the NVEM0 section of your program. The # characters signal a 16-bit entry.<\/p>\n\n\n\n<p>The function 1 script command requires: Function number (1), SlaveAddr (123), CoilAddr16 (24), ItemCount(1) and SPAddr16 (198). Hence, the script entry for the function 1 will be<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">      NV0Byte     1,123,#24,1,#198<\/pre>\n\n\n\n<p>In order to make this script run continuously we need a\u00a0<a href=\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/programming-reference\/instructions-arranged-by-function\/communications-instructions\/modbus-instructions\/modbus-master-control-script-commands\/goto-128-nvptr16\/\">GoTo script command<\/a>\u00a0and a label to target. Putting it all together we get:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>      <a href=\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/programming-reference\/directives\/nvem0-directive-d15\/\">NVEM0<\/a>                          ;Start of <a href=\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/glossary-of-terms\/#o2970\">NVEM<\/a> page 0 data.    ;This is my very first ModBus script!  ModBusScript:                        ;A target label for the GoTo        <a href=\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/programming-reference\/directives\/nv0byte-directive-d15\/\">NV0Byte<\/a>     6,123,#1233,#56,0  ;Function 6, set the speed        NV0Byte     1,123,#24,1,#198   ;Function 1, read the status        NV0Byte     128                ;GoTo opcode: Loop forever        NV0Ptr      ModBusScript       ;GoTo target<\/code><\/pre>\n\n\n\n<p>Be very careful to get the # in all the arguments that are specified as 16-bits in the script definitions. Double check! A mistake here could be very hard to debug.<\/p>\n\n\n\n<h6 class=\"wp-block-heading\">Step 6: Set up the Communications Control Block (CCB)<\/h6>\n\n\n\n<p>Before the SPLat can communicate in ModBus, it needs have the correct communications parameters set up. This is done through the&nbsp;<a href=\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/serial-communications\/serial-communications-protocol-selection\/protocols-communications-control-blocks-ccb\/\">Communications Control Block<\/a>&nbsp;(CCB). This is documented elsewhere. To set up a CCB you need to study the documentation for all the devices in your system and settle on a set of parameters that will work for them all and also with the communications channel (be it a direct wire hookup or a laser bounced off the moon).<\/p>\n\n\n\n<p>The CCB is stored in NVEM page 0 along with the ModBus command script. Here is a typical CCB for a ModBus master:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ModBus_CCB:     ;Communications Control Block for ModBus master          NV0Byte         2       ;Protocol = ModBus RTU Master          NV0Byte         0       ;Device address (N\/A)          NV0Byte         0       ;Character profile (8,N,1)          NV0Byte         7       ;Baudrate = 38400          NV0Byte         255     ;Not used - set to 255          NV0Byte         255     ;Not used - set to 255          NV0Byte         255     ;Not used - set to 255          NV0Byte         255     ;Not used - set to 255          NV0Byte         255     ;Not used - set to 255          NV0Byte         5       ;Message gap x 10mS          NV0Byte         15      ;Query timeout x 10mS          NV0Byte         3       ;Query attempts before failure          NV0Byte         255,255,255,255,255,255,255,255,     ;Not used - set to 255\n<\/code><\/pre>\n\n\n\n<p>There is a ModBus CCB work sheet&nbsp;<a href=\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/serial-communications\/modbus\/modbus-communication-control-blocks\/\">here<\/a>.<\/p>\n\n\n\n<h6 class=\"wp-block-heading\">Step 7: Invoke!<\/h6>\n\n\n\n<p>All that is left to do is to have your SPLat program execute the right instructions to invoke the CCB and to start the control script running. This would normally be done near the start of your program, during initialization. The instructions for this are:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>;Get the ModBus communications going.                    <a href=\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/programming-reference\/instructions-arranged-by-function\/communications-instructions\/default-serial-port\/comsetccb-pppp-d17\/\">ComSetCCB<\/a>       ModBus_CCB      ;Point processor at CCB for ModBus          <a href=\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/programming-reference\/instructions-arranged-by-function\/communications-instructions\/modbus-instructions\/comrunscript-pppp-d17\/\">ComRunScript<\/a>    ModBusScript    ;Start the comms control script<\/code><\/pre>\n\n\n\n<p>Once those two instructions are executed, the script will start running and simply do its job, fully automatically, in the background. Note that for the first 10 seconds after startup SPLat cannot switch protocols, so the&nbsp;<code>ComSetCCB<\/code>&nbsp;may cause a delay (depending on how you use it).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>As an example, let&#8217;s go through the steps to set up the connections illustrated in the above diagram. The SPLat is to be the master&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":3340,"menu_order":0,"template":"","class_list":["post-3341","spl_knowledgebase","type-spl_knowledgebase","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>ModBus master scripts: A worked example - SPLat Controls<\/title>\n<meta name=\"robots\" content=\"noindex, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"ModBus master scripts: A worked example - SPLat Controls\" \/>\n<meta property=\"og:description\" content=\"As an example, let&#8217;s go through the steps to set up the connections illustrated in the above diagram. The SPLat is to be the master...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/serial-communications\/modbus\/modbus-master-configuration\/modbus-master-scripts-a-worked-example\/\" \/>\n<meta property=\"og:site_name\" content=\"SPLat Controls\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-10T09:33:33+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-content\/uploads\/2025\/04\/ModBus-.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"500\" \/>\n\t<meta property=\"og:image:height\" content=\"259\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/serial-communications\/modbus\/modbus-master-configuration\/modbus-master-scripts-a-worked-example\/\",\"url\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/serial-communications\/modbus\/modbus-master-configuration\/modbus-master-scripts-a-worked-example\/\",\"name\":\"ModBus master scripts: A worked example - SPLat Controls\",\"isPartOf\":{\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/serial-communications\/modbus\/modbus-master-configuration\/modbus-master-scripts-a-worked-example\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/serial-communications\/modbus\/modbus-master-configuration\/modbus-master-scripts-a-worked-example\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-content\/uploads\/2025\/04\/ModBus-.jpg\",\"datePublished\":\"2025-04-18T05:07:42+00:00\",\"dateModified\":\"2025-06-10T09:33:33+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/serial-communications\/modbus\/modbus-master-configuration\/modbus-master-scripts-a-worked-example\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/serial-communications\/modbus\/modbus-master-configuration\/modbus-master-scripts-a-worked-example\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/serial-communications\/modbus\/modbus-master-configuration\/modbus-master-scripts-a-worked-example\/#primaryimage\",\"url\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-content\/uploads\/2025\/04\/ModBus-.jpg\",\"contentUrl\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-content\/uploads\/2025\/04\/ModBus-.jpg\",\"width\":500,\"height\":259},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/serial-communications\/modbus\/modbus-master-configuration\/modbus-master-scripts-a-worked-example\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tutorials, application notes and white papers\",\"item\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Serial communications\",\"item\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/serial-communications\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"ModBus\",\"item\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/serial-communications\/modbus\/\"},{\"@type\":\"ListItem\",\"position\":5,\"name\":\"ModBus: Master configuration\",\"item\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/serial-communications\/modbus\/modbus-master-configuration\/\"},{\"@type\":\"ListItem\",\"position\":6,\"name\":\"ModBus master scripts: A worked example\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/#website\",\"url\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/\",\"name\":\"SPLat Controls\",\"description\":\"OEM Embedded Machine Controllers\",\"publisher\":{\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/#organization\",\"name\":\"SPLat Controls\",\"url\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-content\/uploads\/2024\/10\/logo.svg\",\"contentUrl\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-content\/uploads\/2024\/10\/logo.svg\",\"caption\":\"SPLat Controls\"},\"image\":{\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"ModBus master scripts: A worked example - SPLat Controls","robots":{"index":"noindex","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"en_US","og_type":"article","og_title":"ModBus master scripts: A worked example - SPLat Controls","og_description":"As an example, let&#8217;s go through the steps to set up the connections illustrated in the above diagram. The SPLat is to be the master...","og_url":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/serial-communications\/modbus\/modbus-master-configuration\/modbus-master-scripts-a-worked-example\/","og_site_name":"SPLat Controls","article_modified_time":"2025-06-10T09:33:33+00:00","og_image":[{"width":500,"height":259,"url":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-content\/uploads\/2025\/04\/ModBus-.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/serial-communications\/modbus\/modbus-master-configuration\/modbus-master-scripts-a-worked-example\/","url":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/serial-communications\/modbus\/modbus-master-configuration\/modbus-master-scripts-a-worked-example\/","name":"ModBus master scripts: A worked example - SPLat Controls","isPartOf":{"@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/#website"},"primaryImageOfPage":{"@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/serial-communications\/modbus\/modbus-master-configuration\/modbus-master-scripts-a-worked-example\/#primaryimage"},"image":{"@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/serial-communications\/modbus\/modbus-master-configuration\/modbus-master-scripts-a-worked-example\/#primaryimage"},"thumbnailUrl":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-content\/uploads\/2025\/04\/ModBus-.jpg","datePublished":"2025-04-18T05:07:42+00:00","dateModified":"2025-06-10T09:33:33+00:00","breadcrumb":{"@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/serial-communications\/modbus\/modbus-master-configuration\/modbus-master-scripts-a-worked-example\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/serial-communications\/modbus\/modbus-master-configuration\/modbus-master-scripts-a-worked-example\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/serial-communications\/modbus\/modbus-master-configuration\/modbus-master-scripts-a-worked-example\/#primaryimage","url":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-content\/uploads\/2025\/04\/ModBus-.jpg","contentUrl":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-content\/uploads\/2025\/04\/ModBus-.jpg","width":500,"height":259},{"@type":"BreadcrumbList","@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/serial-communications\/modbus\/modbus-master-configuration\/modbus-master-scripts-a-worked-example\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/webprojects.cloud\/wordpress\/splatco\/"},{"@type":"ListItem","position":2,"name":"Tutorials, application notes and white papers","item":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/"},{"@type":"ListItem","position":3,"name":"Serial communications","item":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/serial-communications\/"},{"@type":"ListItem","position":4,"name":"ModBus","item":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/serial-communications\/modbus\/"},{"@type":"ListItem","position":5,"name":"ModBus: Master configuration","item":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/serial-communications\/modbus\/modbus-master-configuration\/"},{"@type":"ListItem","position":6,"name":"ModBus master scripts: A worked example"}]},{"@type":"WebSite","@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/#website","url":"https:\/\/webprojects.cloud\/wordpress\/splatco\/","name":"SPLat Controls","description":"OEM Embedded Machine Controllers","publisher":{"@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/webprojects.cloud\/wordpress\/splatco\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/#organization","name":"SPLat Controls","url":"https:\/\/webprojects.cloud\/wordpress\/splatco\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/#\/schema\/logo\/image\/","url":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-content\/uploads\/2024\/10\/logo.svg","contentUrl":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-content\/uploads\/2024\/10\/logo.svg","caption":"SPLat Controls"},"image":{"@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-json\/wp\/v2\/spl_knowledgebase\/3341","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-json\/wp\/v2\/spl_knowledgebase"}],"about":[{"href":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-json\/wp\/v2\/types\/spl_knowledgebase"}],"author":[{"embeddable":true,"href":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-json\/wp\/v2\/users\/1"}],"up":[{"embeddable":true,"href":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-json\/wp\/v2\/spl_knowledgebase\/3340"}],"wp:attachment":[{"href":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-json\/wp\/v2\/media?parent=3341"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}