{"id":3779,"date":"2019-02-12T16:09:53","date_gmt":"2019-02-12T16:09:53","guid":{"rendered":"https:\/\/cyflexdoc.wpengine.com\/usage-help-manual\/17-i-o-systems\/modbus_slave\/"},"modified":"2025-09-26T12:06:31","modified_gmt":"2025-09-26T17:06:31","slug":"modbus_slave","status":"publish","type":"page","link":"https:\/\/cyflex.com\/index.php\/usage-help-manual\/14-i-o-systems\/modbus_slave\/","title":{"rendered":"modbus_slave"},"content":{"rendered":"<div>\n<h3>Purpose:<\/h3>\n<\/div>\n<dl>\n<dd>\n<p>Implement a Modbus slave that interacts with a Modbus master to exchange data with CyFlex variables based on configuration from a specification file.<\/p>\n<\/dd>\n<\/dl>\n<h3>Enter:<\/h3>\n<dl>\n<dd>\n<p><strong>modbus_slave<\/strong> &lt;priority&gt; &lt;specification_filename&gt; &amp;<\/p>\n<\/dd>\n<\/dl>\n<h3>Where:<\/h3>\n<dl>\n<dd>\n<div>\n<table cellspacing=\"0\" cellpadding=\"0\">\n<colgroup>\n<col \/>\n<col \/> <\/colgroup>\n<tbody>\n<tr>\n<td>\n<p>priority<\/p>\n<\/td>\n<td>\n<p>Specify the real-time task priority.<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>specification_filename<\/p>\n<\/td>\n<td>\n<p>Specify the modbus slave configuration filename.<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/dd>\n<\/dl>\n<h3>Example:<\/h3>\n<dl>\n<dd>\n<p><strong>modbus_slave<\/strong> 17 \/specs\/modbus_slave.spec &amp;<\/p>\n<div>\u00a0\u00a0\u00a0Sample\u00a0spec\u00a0file: \u00a0<br \/>\n\u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0@REG_NAME \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0modbus_slave \u00a0<br \/>\n\u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0#\u00a0serail\u00a0port:baud,bits,stobits,parity, \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$Device \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0#\/dev\/ttyS0:9600,8,1,0 \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0#127.0.0.1:502 \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0143.222.168.84:32070 \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$modbusaddress \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a01 \u00a0<br \/>\n\u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$TimeOut \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a01500 \u00a0<br \/>\n\u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$Debug \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0True \u00a0<br \/>\n\u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0#Write\u00a0to\u00a0holdings \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0#Supporting\u00a0short,\u00a0unsigned\u00a0short,\u00a0long,\u00a0unsigned\u00a0long\u00a0,float \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0#CyFlex Variable, CyFlex Units,\u00a0type,\u00a0register\u00a01\u00a0&#8211;\u00a0256,\u00a0scale\u00a0slope,\u00a0scale\u00a0offset \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0#takes\u00a02\u00a0registers\u00a0for\u00a0floats \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$Write \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0#float \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mbus_write_f1 \u00a0none\u00a0 \u00a0f 1 1.0 0.0 \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mbus_write_f2 \u00a0none\u00a0 \u00a0f 3 1.0 0.0 \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mbus_write_f3 \u00a0none\u00a0 \u00a0f 5 1.0 0.0 \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mbus_write_f4 \u00a0none\u00a0 \u00a0f 10 1.0 0.0 \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0#short \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mbus_write_s1 \u00a0none\u00a0 \u00a0s 7 1.0 0.0 \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mbus_write_s2 \u00a0none\u00a0 \u00a0s 12 1.0 0.0 \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0#ushort \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mbus_write_u1 \u00a0none\u00a0 \u00a0us 13 1.0 0.0 \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mbus_write_u2 \u00a0none\u00a0 \u00a0us 15 1.0 0.0 \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0#long \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mbus_write_l1 \u00a0none\u00a0 \u00a0l 28 1.0 0.0 \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mbus_write_l2 \u00a0none\u00a0 \u00a0l 110 1.0 0.0 \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0#double \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mbus_write_d1 \u00a0none\u00a0 \u00a0d 120 1.0 0.0 \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mbus_write_d2 \u00a0none\u00a0 \u00a0d 140 1.0 0.0 \u00a0<br \/>\n\u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$ \u00a0<br \/>\n\u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0#Read\u00a0Input \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0#Supporting\u00a0short,\u00a0unsigned\u00a0short,\u00a0long,\u00a0unsigned\u00a0long\u00a0,float \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0#ASSET\u00a0Variable,\u00a0Asset\u00a0Units,\u00a0type,\u00a0register\u00a01\u00a0&#8211;\u00a0256,\u00a0scale\u00a0slope,\u00a0scale\u00a0offset \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$Input \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0#ushort \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mbus_read_u1 \u00a0none\u00a0 \u00a0us 21 1.0 0.0 \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mbus_read_u2 \u00a0none\u00a0 \u00a0us 24 1.0 0.0 \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0#short \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mbus_read_s1\u00a0\u00a0 \u00a0\u00a0 \u00a0\u00a0none\u00a0 s 33 1.0 0.0 \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mbus_read_s2\u00a0\u00a0 \u00a0\u00a0 \u00a0\u00a0none\u00a0 s 35 1.0 0.0 \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0#floats \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mbus_read_f1\u00a0\u00a0 \u00a0\u00a0 \u00a0\u00a0none\u00a0 f 69 1.0 0.0 \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mbus_read_f2\u00a0\u00a0 \u00a0\u00a0 \u00a0\u00a0none \u00a0 f 72 1.0 0.0 \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mbus_read_f3\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0none\u00a0 f 74 1.0 0.0 \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mbus_read_f4\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0none\u00a0 f 80 1.0 0.0 \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0#doubles \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mbus_read_d1 \u00a0none\u00a0 \u00a0d 110 1.0 0.0 \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mbus_read_d2 \u00a0none\u00a0 \u00a0d 150 1.0 0.0 \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0#long \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mbus_read_l1 \u00a0none\u00a0 \u00a0l 16 1.0 0.0 \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mbus_read_l2 \u00a0none\u00a0 \u00a0l 100 1.0 0.0 \u00a0<br \/>\n\u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$ \u00a0<br \/>\n\u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0#Write\u00a0coil \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0#Will\u00a0be\u00a0read\u00a0as\u00a0a\u00a0logical\u00a0regardless\u00a0of\u00a0type \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0#\u00a0ASSET\u00a0Variable,\u00a0register\u00a0offset\u00a01\u00a0&#8211;\u00a0256 \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$WriteCoil \u00a0<br \/>\n\u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mbus_write_b1 1 \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mbus_write_b2 3 \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mbus_write_b3 5 \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mbus_write_b4 7 \u00a0<br \/>\n\u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$ \u00a0<br \/>\n\u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0#Read\u00a0coil \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0#Will\u00a0be\u00a0read\u00a0as\u00a0a\u00a0logical\u00a0regardless\u00a0of\u00a0type \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0#\u00a0ASSET\u00a0Variable,\u00a0register\u00a0offset\u00a01\u00a0&#8211;\u00a0256 \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$ReadCoil \u00a0<br \/>\n\u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mbus_read_b1 9 \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mbus_read_b2 11 \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mbus_read_b3 13 \u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mbus_read_b4 15 \u00a0<br \/>\n\u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$<\/div>\n<\/dd>\n<\/dl>\n<h3>Notes:<\/h3>\n<dl>\n<dd>\n<p>The program operates as a background service and requires a valid specification file for initialization.Ensure the file includes necessary parameters like device, modbus address, and variable definitions.<\/p>\n<\/dd>\n<\/dl>\n<h3>See Also:<\/h3>\n<dl>\n<dd>\n<p><a href=\"\/wp-content\/uploads\/GModBus-Device-Driver-Setup.pdf\">GModBus Setup<\/a><\/p>\n<\/dd>\n<\/dl>\n","protected":false},"excerpt":{"rendered":"<p>Purpose: Implement a Modbus slave that interacts with a Modbus master to exchange data with CyFlex variables based on configuration from a specification file. Enter: modbus_slave &lt;priority&gt; &lt;specification_filename&gt; &amp; Where: priority Specify the real-time task priority. specification_filename Specify the modbus slave configuration filename. Example: modbus_slave 17 \/specs\/modbus_slave.spec &amp; \u00a0\u00a0\u00a0Sample\u00a0spec\u00a0file: \u00a0 \u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0@REG_NAME \u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0modbus_slave \u00a0 [&hellip;]<\/p>\n","protected":false},"author":47,"featured_media":0,"parent":1964,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-3779","page","type-page","status-publish","hentry"],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/cyflex.com\/index.php\/wp-json\/wp\/v2\/pages\/3779","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cyflex.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/cyflex.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/cyflex.com\/index.php\/wp-json\/wp\/v2\/users\/47"}],"replies":[{"embeddable":true,"href":"https:\/\/cyflex.com\/index.php\/wp-json\/wp\/v2\/comments?post=3779"}],"version-history":[{"count":0,"href":"https:\/\/cyflex.com\/index.php\/wp-json\/wp\/v2\/pages\/3779\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/cyflex.com\/index.php\/wp-json\/wp\/v2\/pages\/1964"}],"wp:attachment":[{"href":"https:\/\/cyflex.com\/index.php\/wp-json\/wp\/v2\/media?parent=3779"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}