<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent posts to Write float value in modbus register and Read value whit comma from codesys</title><link href="https://forge.codesys.com/forge/talk/Runtime/thread/be9e02d53f/" rel="alternate"/><link href="https://forge.codesys.com/forge/talk/Runtime/thread/be9e02d53f/feed.atom" rel="self"/><id>https://forge.codesys.com/forge/talk/Runtime/thread/be9e02d53f/</id><updated>2020-02-27T16:12:13.673000Z</updated><subtitle>Recent posts to Write float value in modbus register and Read value whit comma from codesys</subtitle><entry><title>Write float value in modbus register and Read value whit comma from codesys</title><link href="https://forge.codesys.com/forge/talk/Runtime/thread/be9e02d53f/?limit=25#c697" rel="alternate"/><published>2020-02-27T16:12:13.673000Z</published><updated>2020-02-27T16:12:13.673000Z</updated><author><name>alverman</name><uri>https://forge.codesys.com/u/alverman/</uri></author><id>https://forge.codesys.com3713730e29aa6fe31a5233d5338af1bf84aedd17</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Thanks Viacheslav,&lt;br/&gt;
I've understood the Arduino part and applied it to my sketch and it seems to work.&lt;br/&gt;
In fact, from the modbus monitor I see the two bytes assigned.&lt;br/&gt;
The part in codesys is not clear to me, it's out of my reach.&lt;br/&gt;
You could eliminate the superfluous? &lt;br/&gt;
I use modbus tcp&lt;/p&gt;
&lt;p&gt;Thanks, Alberto&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Write float value in modbus register and Read value whit comma from codesys</title><link href="https://forge.codesys.com/forge/talk/Runtime/thread/be9e02d53f/?limit=25#f3c9" rel="alternate"/><published>2020-02-27T16:12:12.660000Z</published><updated>2020-02-27T16:12:12.660000Z</updated><author><name>Anonymous</name><uri>https://forge.codesys.com/u/*anonymous/</uri></author><id>https://forge.codesys.com7cfe7fee0f1158d3a4dc89b98bb034a5873764c8</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;&lt;em&gt;Originally created by:&lt;/em&gt; Viacheslav Mezentsev&lt;/p&gt;
&lt;p&gt;Arduino:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="cm"&gt;/**&lt;/span&gt;
&lt;span class="cm"&gt; *  Modbus slave example 1:&lt;/span&gt;
&lt;span class="cm"&gt; *  The purpose of this example is to link a data array&lt;/span&gt;
&lt;span class="cm"&gt; *  from the Arduino to an external device.&lt;/span&gt;
&lt;span class="cm"&gt; *&lt;/span&gt;
&lt;span class="cm"&gt; *  Recommended Modbus Master: QModbus&lt;/span&gt;
&lt;span class="cm"&gt; *  http://qmodbus.sourceforge.net/&lt;/span&gt;
&lt;span class="cm"&gt; */&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt;
&lt;span class="err"&gt;\#&lt;/span&gt;&lt;span class="n"&gt;include&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;ModbusRtu&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;h&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt;
&lt;span class="c1"&gt;// data array for modbus network sharing&lt;/span&gt;
&lt;span class="kt"&gt;uint16_t&lt;/span&gt; &lt;span class="n"&gt;au16data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1415&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;9265&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;7182&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;28182&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt;
&lt;span class="cm"&gt;/**&lt;/span&gt;
&lt;span class="cm"&gt; *  Modbus object declaration&lt;/span&gt;
&lt;span class="cm"&gt; *  u8id : node id = 0 for master, = 1..247 for slave&lt;/span&gt;
&lt;span class="cm"&gt; *  u8serno : serial port (use 0 for Serial)&lt;/span&gt;
&lt;span class="cm"&gt; *  u8txenpin : 0 for RS-232 and USB-FTDI &lt;/span&gt;
&lt;span class="cm"&gt; *               or any pin number &amp;amp;gt; 1 for RS-485&lt;/span&gt;
&lt;span class="cm"&gt; */&lt;/span&gt;
&lt;span class="n"&gt;Modbus&lt;/span&gt; &lt;span class="n"&gt;slave&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// this is slave @1 and RS-232 or USB-FTDI&lt;/span&gt;
&lt;span class="k"&gt;typedef&lt;/span&gt; &lt;span class="k"&gt;union&lt;/span&gt; 
&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="k"&gt;struct&lt;/span&gt; 
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="kt"&gt;uint16_t&lt;/span&gt; &lt;span class="n"&gt;hi&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="kt"&gt;uint16_t&lt;/span&gt; &lt;span class="n"&gt;lo&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="n"&gt;regs&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="kt"&gt;float&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="n"&gt;Data&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;Data&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;setup&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; 
&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="n"&gt;slave&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;begin&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="mi"&gt;19200&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// baud-rate at 19200&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; 
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;1.0f&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="n"&gt;au16data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;regs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;hi&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="n"&gt;au16data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;regs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;lo&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt;
&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="n"&gt;loop&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="n"&gt;slave&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;poll&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="n"&gt;au16data&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;16&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Codesys 3.5.12.20&lt;/strong&gt;:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nv"&gt;program&lt;/span&gt; &lt;span class="nv"&gt;PLC_PRG&lt;/span&gt;
&lt;span class="nv"&gt;var&lt;/span&gt; &lt;span class="nv"&gt;constant&lt;/span&gt;
   &lt;span class="nv"&gt;READ_COILS&lt;/span&gt;               : &lt;span class="nv"&gt;byte&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="sc"&gt;#01&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;READ_DISCRETE_INPUTS&lt;/span&gt;     : &lt;span class="nv"&gt;byte&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="sc"&gt;#02&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;READ_HOLDING_REGISTERS&lt;/span&gt;   : &lt;span class="nv"&gt;byte&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="sc"&gt;#03&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;READ_INPUT_REGISTERS&lt;/span&gt;     : &lt;span class="nv"&gt;byte&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="sc"&gt;#04&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;WRITE_SINGLE_COIL&lt;/span&gt;        : &lt;span class="nv"&gt;byte&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="sc"&gt;#05&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;WRITE_SINGLE_REGISTER&lt;/span&gt;    : &lt;span class="nv"&gt;byte&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="sc"&gt;#06&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;WRITE_MULTIPLE_COILS&lt;/span&gt;     : &lt;span class="nv"&gt;byte&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="sc"&gt;#0&lt;/span&gt;&lt;span class="nv"&gt;F&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;WRITE_MULTIPLE_REGISTERS&lt;/span&gt; : &lt;span class="nv"&gt;byte&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="sc"&gt;#10&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
    
   &lt;span class="nv"&gt;MODE_IDLE&lt;/span&gt;:        &lt;span class="nv"&gt;byte&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;MODE_CONNECT&lt;/span&gt;:    &lt;span class="nv"&gt;byte&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;MODE_SET_DATA&lt;/span&gt;:  &lt;span class="nv"&gt;byte&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;MODE_REQUEST&lt;/span&gt;:   &lt;span class="nv"&gt;byte&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;MODE_CLOSE&lt;/span&gt;:     &lt;span class="nv"&gt;byte&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
   &lt;span class="nv"&gt;MODE_ERROR&lt;/span&gt;:     &lt;span class="nv"&gt;byte&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="c1"&gt;;  &lt;/span&gt;
    &lt;span class="o"&gt;//&lt;/span&gt; Номера портов для устройств &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;dev&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;ttyUSBn&lt;/span&gt; &lt;span class="nv"&gt;Raspberry&lt;/span&gt; &lt;span class="nv"&gt;Pi&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;.
    &lt;span class="nv"&gt;TTYS0&lt;/span&gt;: &lt;span class="nv"&gt;byte&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;TTYS1&lt;/span&gt;: &lt;span class="nv"&gt;byte&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="c1"&gt;;    &lt;/span&gt;
    &lt;span class="nv"&gt;TTYS2&lt;/span&gt;: &lt;span class="nv"&gt;byte&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;TTYS3&lt;/span&gt;: &lt;span class="nv"&gt;byte&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;TTYS4&lt;/span&gt;: &lt;span class="nv"&gt;byte&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="c1"&gt;;   &lt;/span&gt;
&lt;span class="nv"&gt;end_var&lt;/span&gt;       
&lt;span class="nv"&gt;var&lt;/span&gt;
    &lt;span class="nv"&gt;xBusy&lt;/span&gt;, &lt;span class="nv"&gt;xDone&lt;/span&gt;, &lt;span class="nv"&gt;xError&lt;/span&gt;: &lt;span class="nv"&gt;bool&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;ex&lt;/span&gt;: &lt;span class="nv"&gt;byte&lt;/span&gt;&lt;span class="c1"&gt;;   &lt;/span&gt;
    &lt;span class="nv"&gt;mode&lt;/span&gt;: &lt;span class="nv"&gt;uint&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;MODE_CONNECT&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;dw&lt;/span&gt;: &lt;span class="nv"&gt;dword&lt;/span&gt;&lt;span class="c1"&gt;;        &lt;/span&gt;
    &lt;span class="nv"&gt;start&lt;/span&gt;, &lt;span class="nv"&gt;stop&lt;/span&gt;, &lt;span class="nv"&gt;t&lt;/span&gt;: &lt;span class="nv"&gt;ulint&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;sleepus&lt;/span&gt;: &lt;span class="nv"&gt;ulint&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;rvalue&lt;/span&gt;: &lt;span class="nv"&gt;real&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
    &lt;span class="nb"&gt;timeout&lt;/span&gt;: &lt;span class="nv"&gt;time&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;tmpbuf&lt;/span&gt;: &lt;span class="nv"&gt;array&lt;/span&gt; [ &lt;span class="mi"&gt;0&lt;/span&gt; .. &lt;span class="mi"&gt;255&lt;/span&gt; ] &lt;span class="nv"&gt;of&lt;/span&gt; &lt;span class="nv"&gt;byte&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
    &lt;span class="nb"&gt;result&lt;/span&gt;: &lt;span class="nv"&gt;RTS_IEC_RESULT&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;hCom&lt;/span&gt;: &lt;span class="nv"&gt;RTS_IEC_RESULT&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;t1&lt;/span&gt;: &lt;span class="nv"&gt;ton&lt;/span&gt;&lt;span class="c1"&gt;;        &lt;/span&gt;
    &lt;span class="nv"&gt;pFloatValue&lt;/span&gt;: &lt;span class="nv"&gt;pointer&lt;/span&gt; &lt;span class="nv"&gt;to&lt;/span&gt; &lt;span class="nv"&gt;real&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;ComSettings&lt;/span&gt;: &lt;span class="nv"&gt;COM_Settings&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="ss"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;sPort&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;TTYS0&lt;/span&gt;, &lt;span class="nv"&gt;ulBaudrate&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;SYS_BR_19200&lt;/span&gt;, &lt;span class="nv"&gt;byParity&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;SYS_NOPARITY&lt;/span&gt;, &lt;span class="nv"&gt;byStopBits&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;SYS_ONESTOPBIT&lt;/span&gt;, &lt;span class="nv"&gt;ulBufferSize&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;255&lt;/span&gt; &lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;        &lt;/span&gt;
    &lt;span class="nv"&gt;ReadHoldRegs&lt;/span&gt;: &lt;span class="nv"&gt;ModbusRequest&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="ss"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;uiFunctionCode&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;READ_HOLDING_REGISTERS&lt;/span&gt; &lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;  &lt;/span&gt;
&lt;span class="nv"&gt;end_var&lt;/span&gt;
&lt;span class="o"&gt;//&lt;/span&gt; Перед использованием необходимо:
&lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; обновить устройство&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; обновить библиотеки&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; настроить параметры последовательного порта&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;case&lt;/span&gt; &lt;span class="nv"&gt;mode&lt;/span&gt; &lt;span class="nv"&gt;of&lt;/span&gt;
      
   &lt;span class="nv"&gt;MODE_CONNECT&lt;/span&gt;:
           
      &lt;span class="o"&gt;//&lt;/span&gt; Настройка параметров соединения.
        &lt;span class="o"&gt;//&lt;/span&gt; Таймаут ожидания ответа.
        &lt;span class="nb"&gt;timeout&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;t&lt;/span&gt;&lt;span class="sc"&gt;#50&lt;/span&gt;&lt;span class="nv"&gt;ms&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
           
        &lt;span class="o"&gt;//&lt;/span&gt; Открываем порт.
        &lt;span class="nv"&gt;hCom&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;SysComOpen&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;ComSettings&lt;/span&gt;.&lt;span class="nv"&gt;sPort&lt;/span&gt;, &lt;span class="nv"&gt;adr&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt; &lt;span class="nb"&gt;result&lt;/span&gt; &lt;span class="ss"&gt;)&lt;/span&gt; &lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
        &lt;span class="o"&gt;//&lt;/span&gt; Устанавливаем параметры порта.
        &lt;span class="nb"&gt;result&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;SysComSetSettings&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;hCom&lt;/span&gt;, &lt;span class="nv"&gt;adr&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;ComSettings&lt;/span&gt; &lt;span class="ss"&gt;)&lt;/span&gt;, &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
            
        &lt;span class="nv"&gt;t1&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;in&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;false&lt;/span&gt; &lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
                
        &lt;span class="nv"&gt;mode&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;sel&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt; &lt;span class="nb"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;Errors&lt;/span&gt;.&lt;span class="nv"&gt;ERR_OK&lt;/span&gt;, &lt;span class="nv"&gt;MODE_ERROR&lt;/span&gt;, &lt;span class="nv"&gt;MODE_REQUEST&lt;/span&gt; &lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
            
   &lt;span class="nv"&gt;MODE_REQUEST&lt;/span&gt;:                         
        
        &lt;span class="nv"&gt;SysTimeRtcHighResGet&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;start&lt;/span&gt; &lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
    
        &lt;span class="nv"&gt;repeat&lt;/span&gt;
            
            &lt;span class="o"&gt;//&lt;/span&gt; Выполняем запрос.
            &lt;span class="nv"&gt;ReadHoldRegs&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;xExecute&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;true&lt;/span&gt;, &lt;span class="nv"&gt;usiSlaveAddr&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;, &lt;span class="nv"&gt;uiReadOffset&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;, &lt;span class="nv"&gt;uiReadLen&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;, 
                &lt;span class="nv"&gt;hComPort&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;hCom&lt;/span&gt;, &lt;span class="nv"&gt;tTimeout&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;timeout&lt;/span&gt;, &lt;span class="nv"&gt;pReadBuf&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;adr&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;tmpbuf&lt;/span&gt; &lt;span class="ss"&gt;)&lt;/span&gt;, 
                &lt;span class="nv"&gt;xBusy&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;xBusy&lt;/span&gt;, &lt;span class="nv"&gt;xDone&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;xDone&lt;/span&gt;, &lt;span class="nv"&gt;xError&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;xError&lt;/span&gt;, &lt;span class="nv"&gt;byModbusErrorCode&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;ex&lt;/span&gt; &lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;            &lt;/span&gt;
            
            &lt;span class="nv"&gt;SchedWaitSleep&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;sleepus&lt;/span&gt; &lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
        
        &lt;span class="k"&gt;until&lt;/span&gt; &lt;span class="nv"&gt;xDone&lt;/span&gt; &lt;span class="nv"&gt;or&lt;/span&gt; &lt;span class="nv"&gt;xError&lt;/span&gt; &lt;span class="nv"&gt;end_repeat&lt;/span&gt;
        
        &lt;span class="nv"&gt;SysTimeRtcHighResGet&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;stop&lt;/span&gt; &lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
    
        &lt;span class="o"&gt;//&lt;/span&gt; Фактическое время выполнения запроса, [мсек].
        &lt;span class="nv"&gt;t&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;stop&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nv"&gt;start&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
                
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nv"&gt;xDone&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;                        
            
            &lt;span class="nv"&gt;pFloatValue&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;adr&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;tmpbuf&lt;/span&gt;[&lt;span class="mi"&gt;0&lt;/span&gt;] &lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;           &lt;/span&gt;
            
            &lt;span class="nv"&gt;rvalue&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;pFloatValue&lt;/span&gt;&lt;span class="o"&gt;^&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
     
      &lt;span class="nv"&gt;end_if&lt;/span&gt;
        
        &lt;span class="o"&gt;//&lt;/span&gt; Ошибка.
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nv"&gt;xError&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;
            
            &lt;span class="nv"&gt;case&lt;/span&gt; &lt;span class="nv"&gt;ex&lt;/span&gt; &lt;span class="nv"&gt;of&lt;/span&gt;
            
                &lt;span class="nv"&gt;MB_ErrorCodes&lt;/span&gt;.&lt;span class="nv"&gt;RESPONSE_SUCCESS&lt;/span&gt;: &lt;span class="c1"&gt;;&lt;/span&gt;
                &lt;span class="nv"&gt;MB_ErrorCodes&lt;/span&gt;.&lt;span class="nv"&gt;RESPONSE_TIMEOUT&lt;/span&gt;: &lt;span class="c1"&gt;;&lt;/span&gt;
                &lt;span class="nv"&gt;MB_ErrorCodes&lt;/span&gt;.&lt;span class="nv"&gt;RESPONSE_INVALID_DATA&lt;/span&gt;: &lt;span class="c1"&gt;;&lt;/span&gt;
                &lt;span class="nv"&gt;MB_ErrorCodes&lt;/span&gt;.&lt;span class="nv"&gt;REQUEST_FAILED_TO_SEND&lt;/span&gt;: &lt;span class="nv"&gt;SysComClose&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;hCom&lt;/span&gt; &lt;span class="ss"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;;&lt;/span&gt;
                
            &lt;span class="nv"&gt;end_case&lt;/span&gt;                     
            
        &lt;span class="nv"&gt;end_if&lt;/span&gt;
            
        &lt;span class="nv"&gt;t1&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;in&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;false&lt;/span&gt; &lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
        
        &lt;span class="nv"&gt;mode&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;sel&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;ex&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;MB_ErrorCodes&lt;/span&gt;.&lt;span class="nv"&gt;REQUEST_FAILED_TO_SEND&lt;/span&gt;, &lt;span class="nv"&gt;MODE_IDLE&lt;/span&gt;, &lt;span class="nv"&gt;MODE_ERROR&lt;/span&gt; &lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
      
   &lt;span class="o"&gt;//&lt;/span&gt; Интервал между запросами.
   &lt;span class="nv"&gt;MODE_IDLE&lt;/span&gt;:
   
      &lt;span class="nv"&gt;t1&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;in&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;true&lt;/span&gt;, &lt;span class="nv"&gt;pt&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;t&lt;/span&gt;&lt;span class="sc"&gt;#1&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt; &lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
        
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nv"&gt;t1&lt;/span&gt;.&lt;span class="nv"&gt;q&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;
              
            &lt;span class="nv"&gt;ReadHoldRegs&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;xExecute&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;false&lt;/span&gt; &lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
            &lt;span class="nv"&gt;mode&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;MODE_REQUEST&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
 
        &lt;span class="nv"&gt;end_if&lt;/span&gt;
   &lt;span class="o"&gt;//&lt;/span&gt; Ошибка.
   &lt;span class="nv"&gt;MODE_ERROR&lt;/span&gt;:
   
      &lt;span class="nv"&gt;t1&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;in&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;true&lt;/span&gt;, &lt;span class="nv"&gt;pt&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;t&lt;/span&gt;&lt;span class="sc"&gt;#1&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt; &lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
        
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nv"&gt;t1&lt;/span&gt;.&lt;span class="nv"&gt;q&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt; &lt;span class="nv"&gt;mode&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;MODE_CONNECT&lt;/span&gt;&lt;span class="c1"&gt;; end_if&lt;/span&gt;
 
&lt;span class="nv"&gt;end_case&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;&lt;img alt="IMG: 2018" rel="nofollow" src="https://forum.codesys.com//download/file.php?id=3747"/&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class="" href="https://forum.codesys.com//download/file.php?id=3748" rel="nofollow"&gt;Raspberry.ReadHoldRegsSyncTest.ST.zip &lt;span&gt;&lt;span&gt;[58.72 KiB]&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Write float value in modbus register and Read value whit comma from codesys</title><link href="https://forge.codesys.com/forge/talk/Runtime/thread/be9e02d53f/?limit=25#d205" rel="alternate"/><published>2020-02-27T16:12:11.846000Z</published><updated>2020-02-27T16:12:11.846000Z</updated><author><name>alverman</name><uri>https://forge.codesys.com/u/alverman/</uri></author><id>https://forge.codesys.com1da31c2c0f2349f56ded87fdba4f601a5802b7bf</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;good morning,&lt;br/&gt;
I have an arduino that runs a sct013 probe,&lt;br/&gt;
Its output value is of the float type.&lt;br/&gt;
How should I write it in the modbus register and then read the comma value in codesys?&lt;/p&gt;
&lt;p&gt;Thanks, Alberto&lt;/p&gt;&lt;/div&gt;</summary></entry></feed>