<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Write to Slave in modbus]]></title><description><![CDATA[<p dir="auto">Hi<br />
I want to change slave ID In modbus, current slave ID is 3 and i want to change it to 4;<br />
the ID is stored in address 3 of holding registers; I use this code but doesn't work:</p>
<pre><code>void MainWindow::on_pushButton_WriteID_clicked()
{
    QModbusDataUnit writeUnit = QModbusDataUnit(QModbusDataUnit::HoldingRegisters) ;//specify register type
    writeUnit.setStartAddress(3);//set start address
    writeUnit.setValueCount(1);//set number of data blocks
    writeUnit.setValue(0,4);//set value 4 in index 0 (new slave ID)

    if(auto *reply = ModbusObject-&gt;sendWriteRequest(writeUnit,/*device slave ID:*/ 3))//send data unit to slave ID 3
    {
        if(!reply-&gt;isFinished()){
            connect(reply,&amp;QModbusReply::finished,this,MainWindow::WriteID);
            qDebug()&lt;&lt;"ok";
        }

        else{
            statusBar()-&gt;showMessage("error!",2000);
            delete reply;
        }
    }
    else
        statusBar()-&gt;showMessage("error!",2000);
}
</code></pre>
<pre><code>void MainWindow::WriteID()
{

    auto reply = qobject_cast&lt;QModbusReply *&gt;(sender());
    if (!reply){
        qDebug()&lt;&lt;"returned";
        return;
    }

    if(reply-&gt;error()){
        statusBar()-&gt;showMessage(tr("ERROR:%1").arg(reply-&gt;errorString()),2000);
    }
    else{
        statusBar()-&gt;showMessage("Write Successful!",2000);
    }
    reply-&gt;deleteLater();

}
</code></pre>
<p dir="auto">when I Click on Write button "Write successful" is printed but the ID is not changed.</p>
]]></description><link>https://forum.qt.io/topic/98051/write-to-slave-in-modbus</link><generator>RSS for Node</generator><lastBuildDate>Thu, 30 Apr 2026 14:49:05 GMT</lastBuildDate><atom:link href="https://forum.qt.io/topic/98051.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 29 Dec 2018 06:45:44 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Write to Slave in modbus on Sat, 29 Dec 2018 09:17:52 GMT]]></title><description><![CDATA[<p dir="auto">modifying writeUnit like this also doesn't work:</p>
<pre><code>    auto writeUnit = QModbusDataUnit(QModbusDataUnit::HoldingRegisters
                                     ,/*address*/3,/*new value*/4);
/*
  writeUnit.setStartAddress(3);//set start address
  writeUnit.setValueCount(1);//set number of data blocks
  writeUnit.setValue(2,4);//set value 4 in index 0 (new slave ID)
*/
</code></pre>
]]></description><link>https://forum.qt.io/post/501916</link><guid isPermaLink="true">https://forum.qt.io/post/501916</guid><dc:creator><![CDATA[rezaMSLM]]></dc:creator><pubDate>Sat, 29 Dec 2018 09:17:52 GMT</pubDate></item><item><title><![CDATA[Reply to Write to Slave in modbus on Sat, 29 Dec 2018 08:49:07 GMT]]></title><description><![CDATA[<p dir="auto">It is good idea to look at modbus slave side for troubleshooting this issue.</p>
]]></description><link>https://forum.qt.io/post/501912</link><guid isPermaLink="true">https://forum.qt.io/post/501912</guid><dc:creator><![CDATA[dheerendra]]></dc:creator><pubDate>Sat, 29 Dec 2018 08:49:07 GMT</pubDate></item></channel></rss>