当前位置:首页 » 《关注互联网》 » 正文

C# Modbus通信从入门到精通(11)——调试软件Modbus Slave和Modbus Poll的使用

19 人参与  2024年05月26日 08:47  分类 : 《关注互联网》  评论

点击全文阅读


前言

我们在开发Modbus程序的时候,会需要测试以下我们写的Modbus程序有没有问题,这时候就需要使用到Modbus Slave和Modbus Poll这两个软件,Modbus Slave是模拟Modbus从站,Modbus Poll是模拟Modbus从站主站的,

1、协议选择

一般情况下我们开发的Modbus主站程序,当我们没有硬件作为从站的时候,我们可以使用Modbus Slave来模拟Modbus从站,然后我们就可以对Modbus Slave进行访问,进行读取线圈状态,读取保持寄存器的值等操作,当然我们在进行Modbus调试的时候可能有三种不同的协议,也就是ModbusRTU、ModbusASCII、ModbusTCP,下面分别介绍如何在Modbus Slave使用这三种不同的协议

1.1 ModbusRTU

当我们使用ModbusRTU协议时,在连接时选择Serial Port,然后Mode中选择RTU即可,如下图:
https://img-blog.csdnimg.cn/9a0d2e717d4c4d1d87d7b755279437af.png

1.2 ModbusASCII

当我们使用ModbusASCII协议时,在连接时选择Serial Port,然后Mode中选择ASCII即可,如下图:

https://img-blog.csdnimg.cn/5ee65dee3f274ea7acd7aa807b8d1b4b.png

1.3 ModbusTCP

当我们使用ModbusTCP协议时,在连接时选择Modbus TCP/IP,然后设置IP Address、Port即可,如下图:
https://img-blog.csdnimg.cn/a2327a6b3b7e4d08a252ee6fd7227de1.png

2、Modbus Slave

2.1 Modbus Slave创建0到9一共10个地址的线圈

这里以Modbus RTU为例,我们通过Modbus Slave创建0到9一共10个地址的输出线圈,并且将地址0、1、2这三个地址的值赋值为1,其余地址值为0,操作步骤如下: 1)点击“Connect”
https://img-blog.csdnimg.cn/54e4fdc5302f4624bf5a38207a0317ba.png
2)设置通信参数 尤其注意,因为我电脑使用虚拟串口助手,虚拟了COM1、COM2这一对串口,所以我在这里选择的是COM2,因为我会在Modbus主站打开COM1,然后点击“OK”
https://img-blog.csdnimg.cn/b7dc9ec54e924d2bafa602557f835774.png
3)点击“Slave Definition”
https://img-blog.csdnimg.cn/b0fe5c9ee1ba48f89360db501b3e8d88.png
4)设置读取、写入参数

https://img-blog.csdnimg.cn/b562337924134e63a9b26916aa7ea863.png
设置从站地址(Slave Id)为1 设置功能(Function)为01 线圈状态,这里特别要注意的是: 4.1)当主站使用0x01、0x05、0x0F这三个功能码时,ModbusSlave的Function都是选择01 Coil Status 4.2)主站使用0x02这个功能码时,ModbusSlave的Function都是选择02 Input Status
https://img-blog.csdnimg.cn/cfecf5c6e7c045c5bc634c4e89ed92a6.png
4.3)当主站使用0x03、0x06、0x10这三个功能码时,ModbusSlave的Function都是选择03 Holding Register,如下图:
https://img-blog.csdnimg.cn/406a9556a35040b29becaa54285c1875.png

设置起始地址为0 设置数量为10, 结果如下:
https://img-blog.csdnimg.cn/cf3bbd4140da4859880a533567a2c07a.png

我们可以手动的更改每个线圈的值如下: 双击箭头所指处,然后弹出一个窗体,我们可以设置该线圈的值时ON还是OFF。
https://img-blog.csdnimg.cn/01f510f1394145e79ca33bc655ecdee7.png
我们将地址0、1、2设置为ON,如下图:
https://img-blog.csdnimg.cn/b7e17cb4eaf14965ab46ce3a85e135af.png
5)打开Modbus Poll
https://img-blog.csdnimg.cn/3ae07082dbe04591b4da2d4eccc98c40.png

https://img-blog.csdnimg.cn/92db3f73029e4543b20d2258f7787c29.png
将Modbus Poll的参数设置的和Modbus Slave一样,就会发现地址0、1、2的值在ModbusPoll中显示的都是1.

3、为何要学习Modbus通信?

在工业通信领域,Modbus通信是一种使用非常广泛的通信协议,Modbus一般有三种,分别为ModbusRTU、ModbusASCII、ModbusTCP,其中ModbusRTU、ModbusASCII是应用于串行链路上的协议,通俗一点就是说它是走串口的,ModbusTCP通俗点说就是它是走网口的,作者在自动化领域耕耘多年,做过的Modbus项目无数,靠Modbus通信的兼职也赚过数万,毕竟让我徒手撸一个ModbusSlave这种Modbus调试工具对我而言也不在话下,比如上图你看到的Modbus调试助手就是我写的。古人云读万卷书不如行万里路,行万里路不如名师指路,所以入门最快的方法一定是找个前辈模仿他,年轻的时候一定要投资自己!买书、买课程学习都是你提升自己最快的方法,成为高手别无他法,努力学习+模仿高手,他日一定有所成就!一本书、一个课程几十块钱,但是在未来为你赚到的钱一定是这些成本的几十倍、几百倍、上千倍,甚至更多!如果你是一个普通人,没有强大的背景,一定要持续学习,持续学习是普通人逆袭唯一的方法!如果想精通Modbus编程,c#基础的语法知识必不可少,订阅我的专栏《C# Modbus通信从入门到精通》就送《C#本质论》、《C#图解教程》电子书。总之,只要跟我学了Modbus通信,一定能打变Modbus无敌手,如果我问你以下几个问题,你都能答上来,才算是一个高手,不然怎么轻松拿三十万+年薪,当然这些知识我都会在我的专栏《C# Modbus通信从入门到精通》中进行详细介绍。 问题1:Modbus总共有几种? 问题2:Modbus RTU是走串口还是网口? 问题3、Modbus RTU需要校验吗? 问题4、Modbus TCP需要校验吗? 问题5、Modbus支持哪些功能码?每一种功能码的具体含义是啥? 问题6、怎么解决ModbusRTU通信中多线程通信问题? 问题7、怎么解决ModbusTCP通信中掉线重连问题? 如果我问的上面几问题你不能全部掌握的话,我建议你还是来我的专栏《C# Modbus通信从入门到精通》系统学习一下吧! 本专栏将会详细对这三种协议如何在C#程序开发上的应用进行详细讲解,包含协议原理、报文格式、C#源码实现。

专栏刚推出就上了csdn热销榜,由此可见该专栏内容有多超值!
https://img-blog.csdnimg.cn/f8ce5d38e8bc4c30b9ae0b713ca271c5.png

文章来源: https://blog.csdn.net/qq_34059233/article/details/131755012
版权声明: 本文为博主原创文章,遵循CC 4.0 BY-SA 知识共享协议,转载请附上原文出处链接和本声明。


点击全文阅读


本文链接:http://zhangshiyu.com/post/113697.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1