前言:
在工业通信领域,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热销榜,由此可见该专栏内容有多超值!
一、《C# Modbus通信从入门到精通》专栏文章目录
点击下面的文章链接即可转到该文章:
1、C# Modbus通信从入门到精通(1)——虚拟串口调试工具的使用
2、C# Modbus通信从入门到精通(2)——Modbus RTU协议原理
3、C# Modbus通信从入门到精通(3)——Modbus RTU(0x01功能码)
4、C# Modbus通信从入门到精通(4)——Modbus RTU(0x02功能码)
5、C# Modbus通信从入门到精通(5)——Modbus RTU(0x03功能码)
6、C# Modbus通信从入门到精通(6)——Modbus RTU(0x04功能码)
7、C# Modbus通信从入门到精通(7)——Modbus RTU(0x05功能码)
8、C# Modbus通信从入门到精通(8)——Modbus RTU(0x06功能码)
9、C# Modbus通信从入门到精通(9)——Modbus RTU(0x0F功能码)
10、C# Modbus通信从入门到精通(10)——Modbus RTU(0x10功能码)
11、C# Modbus通信从入门到精通(11)——调试软件Modbus Slave和Modbus Poll的使用
12、C# Modbus通信从入门到精通(12)——Modbus ASCII协议原理
13、C# Modbus通信从入门到精通(13)——Modbus ASCII(0x01功能码)
14、C# Modbus通信从入门到精通(14)——Modbus ASCII(0x02功能码)
15、C# Modbus通信从入门到精通(15)——Modbus ASCII(0x03功能码)
16、C# Modbus通信从入门到精通(16)——Modbus ASCII(0x04功能码)
17、C# Modbus通信从入门到精通(17)——Modbus ASCII(0x05功能码)
18、C# Modbus通信从入门到精通(18)——Modbus ASCII(0x06功能码)
19、C# Modbus通信从入门到精通(19)——Modbus ASCII(0x0F功能码)
20、C# Modbus通信从入门到精通(20)——Modbus ASCII(0x10功能码)
21、C# Modbus通信从入门到精通(21)——Modbus TCP协议原理
22、C# Modbus通信从入门到精通(22)——Modbus TCP(0x01功能码)
23、C# Modbus通信从入门到精通(23)——Modbus TCP(0x02功能码)
24、C# Modbus通信从入门到精通(24)——Modbus TCP(0x03功能码)
25、C# Modbus通信从入门到精通(25)——Modbus TCP(0x04功能码)
26、C# Modbus通信从入门到精通(26)——Modbus TCP(0x05功能码)
27、C# Modbus通信从入门到精通(27)——Modbus TCP(0x06功能码)
28、C# Modbus通信从入门到精通(28)——Modbus TCP(0x0F功能码)
29、C# Modbus通信从入门到精通(29)——Modbus TCP(0x10功能码)
二、为何要学习本专栏?
我为何推荐学习《C# Modbus通信从入门到精通》专栏?有以下几点原因:
1)掌握Modbus协议是一个上位机软件工程师必备的技能,在招聘要求上都会要求掌握Modbus协议,做上位机软件开发不掌握Modbus协议很难拿到高薪!
2)本专栏非常系统的介绍了Modbus RTU、Modbus ASCII、Mobus TCP三种协议的原理与C#实现,你从市面上找不到同时介绍这三种协议的C#教程,绝大部分都是讲述原理的,如果有那也会是在一些培训班,培训班的价格你懂得。
3)本专栏提供了本人开发的Modbus调试助手的源码(支持Modbus RTU、Modbus ASCII、Mobus TCP三种协议),不仅方便您做Modbus项目时候的调试,而且也利于您掌握本人开发的Modbus通信类库如何使用。
4)本人开发的Modbus类库支持常用的读输入线圈、读输出线圈、读保持寄存器、读输入寄存器、写单个线圈、写多个线圈、写多个保持寄存器等多个功能码。
5)本人开发的Modbus类库支持多种数据类型的读写,支持int16有符号整数、uint16无符号整数、float小数。
6)本人开发的Modbus类库支持超时设置、读取次数设置、异常原因返回、掉线重连、可应用于多线程等功能
7)本人开发的Modbus类库稳定,已在多个项目中应用,避免新手走弯路
8)有人说市面上有一些第三方的库可以用,为啥还要学呢?作为一名高级工程师的经验就是掌握底层代码是你进阶高手的必经之路,出了问题你知道怎么排查,用别人写的有问题你也改不了,还有就是你去面试,人家问你懂Modbus通信吗,一个面试者说自己封装过Modbus协议,另一个面试者说我会用某个别人写的库,你作为面试官,你选择录取谁?
三、Modbus调试助手介绍
为了方便学员快速学习Modbus,我也开发了支持ModbusRTU、ModbusASCII、ModbusTCP这三种协议的Modbus主站调试工具,如下:
3.1 Modbus调试助手界面
3.1.1 协议选择界面
软件启动时弹出协议选择界面,根据选择的协议不同,主界面将会出现不同的界面
3.1.2 调试界面
3.1.2.1 ModbusRTU调试界面
3.1.2.2 ModbusASCII调试界面
3.1.2.3 ModbusTCP调试界面
3.2 Modbus调试助手支持的功能
该工具支持的功能码有:
0x01(读输出线圈)
0x02(读输入线圈)
0x03(读多个/单个保持寄存器)
0x04(读多个/单个输入寄存器)
0x05(写单个线圈)
0x06(写单个保持寄存器)
0x0F(写多个线圈)
0x10(写多个保持寄存器)
以上功能码是我们在开发中常用的功能码,当然Modbus也支持其他的功能码,如果学员在学习过程中发现需要支持更多的功能码,也可以向我提出,我也会完善它的功能。
3.3 Modbus调试助手部分源码展示
由于ModbusRTU、ModbusASCII、ModbusTCP报文的部分结构是类似的,所以我在设计时声明了一个抽象类Modbus类,然后在抽象类中定义好很多功能码操作的方法,然后针对ModbusRTU、ModbusASCII、ModbusTCP这三种协议去实现抽象类中定义好的方法即可。上图中ModbusRTU、ModbusASCII、ModbusTCP这三个类都实现了Modbus抽象类中定义的方法,Modbus抽象类部分代码如下:
四、ModbusRTU
ModbusRTU系列的文章目录如下(点击链接可转到文章):
1、C# Modbus通信从入门到精通(1)——虚拟串口调试工具的使用
2、C# Modbus通信从入门到精通(2)——Modbus RTU协议原理
3、C# Modbus通信从入门到精通(3)——Modbus RTU(0x01功能码)
4、C# Modbus通信从入门到精通(4)——Modbus RTU(0x02功能码)
5、C# Modbus通信从入门到精通(5)——Modbus RTU(0x03功能码)
6、C# Modbus通信从入门到精通(6)——Modbus RTU(0x04功能码)
7、C# Modbus通信从入门到精通(7)——Modbus RTU(0x05功能码)
8、C# Modbus通信从入门到精通(8)——Modbus RTU(0x06功能码)
9、C# Modbus通信从入门到精通(9)——Modbus RTU(0x0F功能码)
10、C# Modbus通信从入门到精通(10)——Modbus RTU(0x10功能码)
11、C# Modbus通信从入门到精通(11)——调试软件Modbus Slave和Modbus Poll的使用
五、ModbusASCII
ModbusASCII系列的文章目录如下(点击链接可转到文章):
12、C# Modbus通信从入门到精通(12)——Modbus ASCII协议原理
13、C# Modbus通信从入门到精通(13)——Modbus ASCII(0x01功能码)
14、C# Modbus通信从入门到精通(14)——Modbus ASCII(0x02功能码)
15、C# Modbus通信从入门到精通(15)——Modbus ASCII(0x03功能码)
16、C# Modbus通信从入门到精通(16)——Modbus ASCII(0x04功能码)
17、C# Modbus通信从入门到精通(17)——Modbus ASCII(0x05功能码)
18、C# Modbus通信从入门到精通(18)——Modbus ASCII(0x06功能码)
19、C# Modbus通信从入门到精通(19)——Modbus ASCII(0x0F功能码)
20、C# Modbus通信从入门到精通(20)——Modbus ASCII(0x10功能码)
六、ModbusTCP
ModbusTCP系列的文章目录如下(点击链接可转到文章):
21、C# Modbus通信从入门到精通(21)——Modbus TCP协议原理
22、C# Modbus通信从入门到精通(22)——Modbus TCP(0x01功能码)
23、C# Modbus通信从入门到精通(23)——Modbus TCP(0x02功能码)
24、C# Modbus通信从入门到精通(24)——Modbus TCP(0x03功能码)
25、C# Modbus通信从入门到精通(25)——Modbus TCP(0x04功能码)
26、C# Modbus通信从入门到精通(26)——Modbus TCP(0x05功能码)
27、C# Modbus通信从入门到精通(27)——Modbus TCP(0x06功能码)
28、C# Modbus通信从入门到精通(28)——Modbus TCP(0x0F功能码)
29、C# Modbus通信从入门到精通(29)——Modbus TCP(0x10功能码)