C#ModBus Tcp 报文解析
<p>上一篇博客已经完成 <strong>C#ModBus Tcp Master的实现</strong></p><p>本篇主要对不同的功能码所发出的报文进行解析(包括请求报文及响应报文)</p>
<p><strong><span style="font-size: 16px">读操作</span></strong></p>
<p>功能码 0x01 读一组线圈 读取站号为1 从地址12开始的10个线圈</p>
<p>测试结果</p>
<p><img src="https://img2018.cnblogs.com/blog/1630815/201905/1630815-20190510181441380-1035543879.png" alt=""></p>
<p>上一篇博客已经总结了<span style="color: rgba(255, 0, 0, 1)">读操作</span>报文格式,就按照格式划分</p>
<p><img src="https://img2018.cnblogs.com/blog/1630815/201905/1630815-20190507125605486-1036070568.png" alt=""></p>
<p> </p>
<p>报文解析:</p>
<p><img src="https://img2018.cnblogs.com/blog/1630815/201905/1630815-20190510183553735-2007331914.png" alt=""></p>
<p><span style="color: rgba(255, 0, 0, 1)">注意:报文中线圈起始地址 00000 对应设备中 10001 地址,其他顺延</span> </p>
<p> </p>
<p>功能码0x02 报文格式与功能码0x01一致,只是第八字节的功能码变为02 其他完全一致,不再重复解析</p>
<p>功能码0x03 读一组保持寄存器 读取站号为1 从地址12开始的10个值</p>
<p><img src="https://img2018.cnblogs.com/blog/1630815/201905/1630815-20190510190045552-230039486.png" alt=""></p>
<p>报文解析:</p>
<p><img src="https://img2018.cnblogs.com/blog/1630815/201905/1630815-20190510191353804-697453985.png" alt=""></p>
<p> 功能码0x04 报文格式与功能码0x03一致,只是第八字节的功能码变为04 其他完全一致,也不再重复解析</p>
<p> </p>
<p><span style="font-size: 16px"><strong>写操作</strong></span></p>
<p>操作码:0x05 写单个线圈 将站号为1 地址为21的线圈置为On</p>
<p>注意:在报文中 <span style="color: rgba(255, 0, 0, 1)">指定线圈通断标志 FF00 置线圈为ON 0000置线圈为OFF</span></p>
<p><img src="https://img2018.cnblogs.com/blog/1630815/201905/1630815-20190510201738294-757735980.png" alt=""></p>
<p>报文解析:</p>
<p><img src="https://img2018.cnblogs.com/blog/1630815/201905/1630815-20190510202713559-525769030.png" alt=""></p>
<p> </p>
<p>功能码0x0F 写一组线圈 将站号1 起始地址21 的连续五个线圈置为 通,断,断,通,通</p>
<p>测试结果:</p>
<p><img src="https://img2018.cnblogs.com/blog/1630815/201905/1630815-20190510205207418-869645667.png" alt=""></p>
<p>报文解析:</p>
<p><img src="https://img2018.cnblogs.com/blog/1630815/201905/1630815-20190510205259390-1138719863.png" alt=""></p>
<p> </p>
<p>功能码 0x06 写单个保持寄存器 将6666写入从站1 地址为21 的保持寄存器中</p>
<p>测试结果</p>
<p><img src="https://img2018.cnblogs.com/blog/1630815/201905/1630815-20190510210234553-451130699.png" alt=""></p>
<p>报文解析:</p>
<p><img src="https://img2018.cnblogs.com/blog/1630815/201905/1630815-20190510210250406-1451441253.png" alt=""></p>
<p>功能码0x10 写一组保持寄存器 例如 将12 23 34 45 56 67 78 分别写入从站1 起始地址为21的7个连续的保持寄存器中</p>
<p>测试结果</p>
<p><img src="https://img2018.cnblogs.com/blog/1630815/201905/1630815-20190510211859008-180180752.png" alt=""></p>
<p>报文解析:</p>
<p><img src="https://img2018.cnblogs.com/blog/1630815/201905/1630815-20190510211938701-1859410713.png" alt=""></p>
<p> </p>
<p> </p>
<p>到此为止,我们常用的几个ModBus功能码报文都解析完毕了 有错误之处 希望大家不吝赐教,感谢(抱拳~)</p>
<p><span style="font-size: 16px"><strong>C#ModBus Tcp Master</strong></span></p>
<p> </p>
<div id="mttContainer" class="bootstrapiso notranslate" title="" data-original-title=""> </div>
</div>
<div id="MySignature" role="contentinfo">
<div style="border: solid 1px; padding: 10px; background: #EECFA1 url("https://images.cnblogs.com/cnblogs_com/grenet/226272/o_o_o_info.png") no-repeat scroll 15px 50%; padding-left: 80px">
<p>
作者:
Niuery Daily
</p>
<p>
出处:
https://www.cnblogs.com/pandefu/>
</p>
<p>邮箱:
defu_pan@163.com
</p>
<p>
关于作者:.Net Framework,.Net Core ,WindowsForm,WPF ,控件库,多线程
</p>
<p>
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出
原文链接,否则保留追究法律责任的权利。
如有问题, 可邮件咨询。
</p>
</div><br><br>
来源:https://www.cnblogs.com/pandefu/p/10824848.html
頁:
[1]