书籍详情
《Modbus软件开发实战指南》[28M]百度网盘|亲测有效|pdf下载
  • Modbus软件开发实战指南

  • 出版社:清华大学出版社
  • 出版时间:2021-11
  • 热度:4413
  • 上架时间:2024-06-30 09:08:33
  • 价格:0.0
书籍下载
书籍预览
免责声明

本站支持尊重有效期内的版权/著作权,所有的资源均来自于互联网网友分享或网盘资源,一旦发现资源涉及侵权,将立即删除。希望所有用户一同监督并反馈问题,如有侵权请联系站长或发送邮件到ebook666@outlook.com,本站将立马改正

内容介绍

产品特色

内容简介

Modbus是工业自动化领域广泛使用的通信协议之一,随着电子、计算机和通信技术的不断发展,特别是物联网以及“互联网+”等概念的兴起,Modbus通信技术也从串行总线发展到了Modbus TCP,方兴未艾。为了让广大在校学生、工业控制和自动化工程师及技术人员了解Modbus协议的内涵,掌握Modbus通信技术的软件开发方法,作者从初学者的角度,由浅入深,循循善诱,以文字和图片相结合的方式撰写了本书。

  本书共13章,首先介绍Modbus协议,特别是功能码消息帧的定义,然后从软件开发的角度详细介绍辅助调试工具、软件开发环境的构筑,重点介绍和解析libmodbus开发库的源代码,以及libmodbus在不同语言环境下的开发技巧。阅读本书可快速入门并精通Modbus软件开发技术。作为软件技术开发指南类书籍,本书不仅仅局限于Modbus通信协议,对其他通信协议的软件开发也有很高的参考价值。

  本书可作为各大高校、工程设计院、系统集成商和工厂企业的Modbus通信协议开发人员学习软件设计和开发的入门指导书籍,也可作为工业自动化及物联网开发领域工程技术人员的参考书籍,还可供广大自动化与通信专业的教师、学生及物联网开发爱好者阅读。


作者简介

2003年毕业于清华大学;

先后入中国航天科工集团公司、日本横河电机株式会社等500强企业工作;一直从事软件技术研发工作,了解并精通各现场总线通信协议。


目录

目录



第1章初识Modbus1

1.1背景2

1.2模型3

1.3协议版本4

1.4通信设备5

1.5事务处理6

1.6专业术语7


第2章Modbus开发环境9

2.1虚拟串口软件10

2.1.1什么是虚拟串口软件10

2.1.2使用方法10

2.2Modbus Poll的使用14

2.2.1简介14

2.2.2功能14

2.2.3使用方法15

2.3Modbus Slave的使用18

2.3.1简介18

2.3.2功能18

2.3.3使用方法19

2.4Modbus PollSlave互联互通20

2.5Visual Studio 2015的安装24


第3章Modbus协议的相关知识27

3.1协议概要28

3.2Modbus寄存器29

3.2.1寄存器种类说明29

3.2.2寄存器地址分配30

3.3Modbus串行消息帧格式31

3.3.1ASCII消息帧格式31

3.3.2RTU消息帧格式31

3.3.3地址域33

3.3.4功能码域33

3.3.5数据域34

3.4Modbus差错校验34

3.4.1LRC校验34

3.4.2CRC校验35

3.5字节序和大小端42

3.5.1来历42

3.5.2为什么会有大小端43

3.5.3什么是“大端”和“小端”43

3.6Modbus TCP消息帧格式45

3.6.1协议描述45

3.6.2查询与响应报文示例48


第4章Modbus功能码详解49

4.1功能码概要50

4.201(0x01)读取线圈/离散量输出状态51

4.2.1功能说明51

4.2.2查询报文51

4.2.3响应报文52

4.2.4借助工具软件观察和理解53

4.302(0x02)读取离散量输入值59

4.3.1功能说明59

4.3.2查询报文60

4.3.3响应报文60

4.403(0x03)读取保持寄存器值61

4.4.1功能说明61

4.4.2查询报文61

4.4.3响应报文62

4.504(0x04)读取输入寄存器值63

4.5.1功能说明63

4.5.2查询报文63

4.5.3响应报文64

4.605(0x05)写单个线圈或单个离散输出65

4.6.1功能说明65

4.6.2查询报文65

4.6.3响应报文66

4.706(0x06)写单个保持寄存器67

4.7.1功能说明67

4.7.2查询报文67

4.7.3响应报文68

4.808(0x08)诊断功能68

4.8.1功能说明68

4.8.2查询报文68

4.8.3响应报文69

4.8.4诊断子功能码70

4.911(0x0B)获取通信事件计数器73

4.9.1功能说明73

4.9.2查询报文73

4.9.3响应报文74

4.1012(0x0C)获取通信事件记录74

4.10.1功能说明74

4.10.2查询报文75

4.10.3响应报文75

4.1115(0x0F)写多个线圈76

4.11.1功能说明76

4.11.2查询报文76

4.11.3响应报文77

4.1216(0x10)写多个保持寄存器78

4.12.1功能说明78

4.12.2查询报文78

4.12.3响应报文79

4.1317(0x11)报告从站ID(仅用于串行链路)80

4.13.1功能说明80

4.13.2查询报文81

4.13.3响应报文81

4.14Modbus异常响应82


第5章libmodbus开发库85

5.1功能概要86

5.2源码获取与编译86

5.3与应用程序的关系92


第6章libmodbus源代码解析93

6.1类型与结构定义94

6.1.1精细类型定义94

6.1.2常量定义96

6.1.3核心结构体定义之一97

6.1.4核心结构体定义之二101

6.2常用接口函数102

6.2.1各类辅助接口函数102

6.2.2各类Modbus功能接口函数106

6.2.3数据处理的相关函数或宏定义110

6.3RTU/TCP关联接口函数111

6.3.1RTU模式关联函数111

6.3.2TCP模式关联函数112

6.4部分内部函数详解113

6.4.1函数read_io_status()113

6.4.2函数read_registers()118

6.4.3函数write_single()121

6.4.4函数modbus_mapping_new_start_address()123

6.5开发应用程序基本流程126


第7章完整RTU模式开发范例129

7.1开发RTU Master端130

7.1.1新建工程130

7.1.2添加开发库132

7.1.3添加应用源代码133

7.1.4代码调试141

7.2开发RTU Slave端143

7.2.1新建工程并添加开发库143

7.2.2添加应用源代码143


第8章完整TCP模式开发范例147

8.1开发TCP Client端148

8.1.1新建工程148

8.1.2添加开发库148

8.1.3添加应用源代码150

8.1.4代码调试159

8.2开发TCP Server端160

8.2.1新建工程并添加开发库160

8.2.2添加应用源代码161


第9章Visual Basic中使用libmodbus165

9.1函数调用约定与修饰名166

9.1.1函数调用约定166

9.1.2函数修饰名167

9.1.3调用约定的使用169

9.2模块定义文件170

9.3对libmodbus开发库的改造171

9.3.1添加__stdcall调用符171

9.3.2添加DEF模块定义文件172

9.4开发Visual Basic程序175

9.4.1创建新项目175

9.4.2添加函数描述文件177

9.4.3调用libmodbus库函数182


第10章Visual C#中使用libmodbus187

10.1开发Visual C#程序188

10.1.1创建新项目188

10.1.2添加函数描述文件190

10.1.3调用libmodbus库函数195

10.2基于C#的NModbus类库199

10.2.1什么是NModbus类库199

10.2.2NModbus类库用法200


第11章打造自己的Modbus调试工具205

11.1开发自己的Modbus Poll206

11.1.1软件需求分析206

11.1.2命令行解析功能207

11.1.3创建应用程序并调试212

11.2开发自己的Modbus Slave234

11.2.1软件需求分析234

11.2.2创建应用程序并调试236


第12章Java语言开发Modbus应用程序247

12.1开发环境的构建248

12.1.1安装Java开发环境248

12.1.2Java图形化开发工具252

12.2开发Modbus RTU程序254

12.2.1准备工作254

12.2.2代码编写和调试260

12.3开发Modbus TCP程序271


第13章Go语言开发Modbus应用程序281

13.1开发环境的构建282

13.1.1安装Go语言开发环境282

13.1.2Go语言图形化开发工具285

13.2开发Modbus应用程序293

13.2.1准备工作293

13.2.2代码编写和调试293


参考文献298


前言/序言

第2版

前言如果时间能够回到几年之前,也许人生将会是另外一番际遇吧。

  当时的我初次接触Modbus通信协议,并且需要基于Modbus完成一个质量高度稳定的工业控制程序,怎么办呢?一开始,面对浩如烟海的资料和设计要求确实一筹莫展。不过现在想想,如果那时遇到了像这样的一本书,我一定会毫不犹豫地买下来。听到这样的话,你心里一定在想:嘿,王婆卖瓜,自卖自夸。好吧,我承认有一些自夸了,人嘛,都是有那么一点点虚荣心的。

  但是,我可以保证,当你认真阅读过此书之后,一定会有不一样的收获。

  其实,从初次接触Modbus通信协议起,我就下定决心写一本适合Modbus初学者的入门书籍,使得大家能够快速上手,避免重走不必要的弯路。可是真正写起来才发现,这不是一时半刻就能够完成的工作。一方面是我只能在工作之余的闲暇时间写作;另一方面是软件开发技术上牵扯的方方面面太多,如何有条理地组织各种材料也是一个大难题。就这样,写写停停,甚至写作提纲也是几易其稿。好在没有什么压力,在坚持之下最后竟然“凑成”了这本看似不错的Modbus开发入门资料。在提供给周围的一些人阅读后,大家都觉得不错并且值得出版,这也给了我信心。

  正所谓“闻道有先后,术业有专攻”。我曾经咨询过很多资深的开发人员,他们平日里大多会研究和学习各种新奇的开发技术,不会有太多的时间总结和归纳。据我所知,目前市场上关于Modbus开发的书籍并不太多,以至于至今还没有一本专门介绍Modbus软件开发的书。机缘巧合,我做了第一个“吃螃蟹”的人。我希望能够通过这本书把我所学习和掌握的一些Modbus软件开发工具和技能介绍给大家,让大家体会到软件开发的乐趣,减轻Modbus开发入门时的迷茫和无助。如果能够实现这个目的,善莫大焉。不仅如此,这本书不仅仅局限于Modbus本身,书中提到的开发技巧和经验对其他开发工作也有借鉴意义。

  本书大体可划分为三篇: 理论篇、实践篇和提高篇,篇章结构如下所示。理论篇主要介绍Modbus协议本身,便于初学者体会Modbus协议的精髓所在,打好基础。实践篇通过对libmodbus开发库源码的分析以及各种范例程序的演示,助力读者快速入门和上手,掌握各种模式下的开发方法和技巧。提高篇则进一步带领读者开发自己的Modbus调试工具。按照各章节的内容,读者可以循序渐进地阅读本书,逐步完成从入门到精通的过程。  作为软件开发者,很多人都没有付费购买书籍的习惯。我觉得吧,该付费的时候就别省,也许通过阅读就可以系统地提升自己,让你在同事中脱颖而出,少量投资换来的是成千上百倍的回报。

  很多人又会说,不用买你的书,我也可以自己通过Google或百度解决问题啊。是的,的确没错,现在互联网这么发达,没有解决不了的问题,但是这要花费你大量的时间和精力,与其这样,还不如快速学习更多的东西,做些更有意义的事情。在互联网时代,最重要的是懂得如何站在别人的肩膀上。

本书定位

  本书是循序渐进地学习Modbus软件开发的书籍,需要你有针对性地阅读。当然,当你遇到问题或者想了解某个知识点时,你可以直接定位到相关章节查看内容。

  本书以通俗易懂的语言和图片描述Modbus软件的开发技巧,基本上每个操作都会有图片或者实际程序代码演示,便于读者自学。

  本书以解决Modbus软件开发中的问题为目的,围绕这一点着重讲述如何快速入门并精通Modbus软件开发技术。对于Modbus开发来说,必要的硬件不可缺少,但是为了能迅速入门,减少硬件依赖,本书尽可能使用各种软件工具模拟硬件环境,阅读本书时有一台计算机足矣,这也是本书的一大特色。

目标读者

 如果你初学Modbus通信协议;

 如果你想用C/C++语言开发Modbus通信库;

 如果你想用其他语言(如Visual Basic、Visual C#、Java、Go)开发Modbus应用程序;

 如果你想从事物联网或Modbus测试开发;

 如果你英语不好;

 如果你想节省搜索的时间;

 如果你想提高工作效率。

那么这本书简直就是为你量身定做的。

  尽管本人已尽力确保本书的准确性和完整性,但因知识和能力有限,书中难免存在疏漏之处,恳请各位读者不吝批评指正,争取将来进一步完善本书,以此回报大家对本书的支持和厚爱。

致谢

  在本书的写作和出版过程中,得到了很多人的热情帮助和支持,在此一并致谢!

  首先要感谢创造和发明Modbus通信协议的那些人,正是因为他们创造性的工作才有了如此简洁、优雅并广泛应用的通信协议供大家使用。可以毫不夸张地说,Modbus协议的出现推动了人类工业自动化生产的进步。

  其次要感谢清华大学的杨开明教授、北京交通大学的杨莉副教授,在本书的写作和出版过程中,各位老师都给出了详细的意见和建议。

  最后,感谢家人的支持和所有阅读本书的读者。如果能够给各位读者带来哪怕一点收获或体会,那将是对我极大的鼓舞,谢谢!


杨更更2021年8月