猜你喜欢
Modbus软件开发实战指南

Modbus软件开发实战指南

书籍作者:杨更更 ISBN:9787302464754
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:8951
创建日期:2021-02-14 发布日期:2021-02-14
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

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

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

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

作者简介
杨更更,2003年毕业于清华大学,先后加入中国航天科工集团公司、日本横河电机株式会社等多家大型企业工作。曾作为主要研发人员,参与过多个大型项目的开发,了解并精通各现场总线通信协议,所开发的多个软硬件设备,正在世界各地稳定地运行。作为一个纯粹的技术开发者,闲暇时爱读书,所猎甚广,每有所得便欣欣然也。
前言
前言  如果时间能够倒退回到五六年之前,也许人生将会是另外一番际遇。  当时的我初次接触到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#)开发Modbus应用程序;   如果你想从事物联网或Modbus测试开发;   如果你英语不好;   如果你想节省搜索的时间;   如果你想提高工作效率。  那么这本书简直就是为你量身订做的。  尽管本人已尽力确保本书的准确性和完整性,但因知识和能力有限,书中难免存在纰漏之处,届时恳请各位读者不吝批评指正,争取将来进一步完善本书,以此来回报大家对本书的支持和厚爱。  致谢  在本书的写作和出版过程中,得到了很多人的热情帮助和支持,在此一并致谢!  首先要感谢创造和发明Modbus通信协议的那些人,正是因为他们创造性的工作才有了如此简洁、优雅并应用广泛的通信协议供大家使用。可以毫不夸张地说,Modbus协议的出现推动了人类工业自动化生产的进步。  其次要感谢清华大学的杨开明教授、北京交通大学的杨莉副教授,在本书的写作和出版过程中各位老师都给出了详细的意见和建议。  最后,感谢家人的支持和所有阅读了本书的读者。如果能够给各位读者带来哪怕一点收获或体会,那将是对我极大的鼓舞。谢谢!  杨更更〖1〗
目录
第1章初识Modbus1
1.1背景2
1.2模型4
1.3协议版本4
1.4通信设备6
1.5事务处理6
1.6专业术语9

第2章Modbus开发环境11
2.1虚拟串口软件12
2.1.1什么是虚拟串口软件12
2.1.2使用方法13
2.2Modbus Poll的使用16
2.2.1简介16
2.2.2功能17
2.2.3使用方法18
2.3Modbus Slave的使用21
2.3.1简介21
2.3.2功能22
2.3.3使用方法232.4Modbus PollSlave互联互通24
2.5Visual Studio 2015的安装28

第3章Modbus协议的相关知识31
3.1协议概要32
3.2Modbus寄存器34
3.2.1寄存器种类说明34
3.2.2寄存器地址分配35
3.3Modbus串行消息帧格式35
3.3.1ASCII消息帧格式36
3.3.2RTU消息帧格式36
3.3.3地址域38
3.3.4功能码域39
3.3.5数据域39
3.4Modbus差错校验39
3.4.1LRC校验40
3.4.2CRC校验42
3.5字节序和大小端49
3.5.1来历49
3.5.2为什么会有大小端50
3.5.3什么是“大端”和“小端”51
3.6Modbus TCP消息帧格式53
3.6.1协议描述53
3.6.2查询与响应报文例56

第4章Modbus功能码详解59
4.1功能码概要60
4.201(0x01)读取线圈/离散量输出状态61
4.2.1功能说明61
4.2.2查询报文61
4.2.3响应报文62
4.2.4借助工具软件观察和理解63
4.302(0x02)读取离散量输入值72
4.3.1功能说明72
4.3.2查询报文72
4.3.3响应报文73
4.403(0x03)读取保持寄存器值74
4.4.1功能说明74
4.4.2查询报文74
4.4.3响应报文75
4.504(0x04)读取输入寄存器值76
4.5.1功能说明76
4.5.2查询报文76
4.5.3响应报文77
4.605(0x05)写单个线圈或单个离散输出78
4.6.1功能说明78
4.6.2查询报文79
4.6.3响应报文79
4.706(0x06)写单个保持寄存器80
4.7.1功能说明80
4.7.2查询报文80
4.7.3响应报文81
4.808(0x08)诊断功能82
4.8.1功能说明82
4.8.2查询报文82
4.8.3响应报文83
4.8.4诊断子功能码84
4.911(0x0B)获取通信事件计数器87
4.9.1功能说明87
4.9.2查询报文87
4.9.3响应报文88
4.1012(0x0C)获取通信事件记录89
4.10.1功能说明89
4.10.2查询报文89
4.10.3响应报文90
4.1115(0x0F)写多个线圈91
4.11.1功能说明91
4.11.2查询报文91
4.11.3响应报文92
4.1216(0x10)写多个保持寄存器93
4.12.1功能说明93
4.12.2查询报文93
4.12.3响应报文95
4.1317(0x11)报告从站ID(仅用于串行链路)96
4.13.1功能说明96
4.13.2查询报文96
4.13.3响应报文97
4.14Modbus异常响应97

第5章libmodbus开发库101
5.1功能概要102
5.2源码获取与编译102
5.3与应用程序的关系109

第6章libmodbus源码解析111
6.1类型与结构定义112
6.1.1精细类型定义112
6.1.2常量定义114
6.1.3核心结构体定义之一115
6.1.4核心结构体定义之二120
6.2常用接口函数122
6.2.1各类辅助接口函数122
6.2.2各类Modbus功能接口函数126
6.2.3数据处理的相关函数或宏定义131
6.3RTU/TCP关联接口函数132
6.3.1RTU模式关联函数133
6.3.2TCP模式关联函数135
6.4部分内部函数详解135
6.4.1函数read_io_status()135
6.4.2函数read_registers()141
6.4.3函数write_single()144
6.4.4函数modbus_mapping_new_start_
address()147
6.5开发应用程序基本流程151

第7章完整RTU模式开发范例153
7.1开发RTU Master端154
7.1.1新建工程154
7.1.2添加开发库155
7.1.3添加应用源代码158
7.1.4代码调试166
7.2开发RTU Slave端169
7.2.1新建工程并添加开发库169
7.2.2添加应用源代码169

第8章完整TCP模式开发范例173
8.1开发TCP Client端174
8.1.1新建工程174
8.1.2添加开发库176
8.1.3添加应用源代码177
8.1.4代码调试186
8.2开发TCP Server端189
8.2.1新建工程并添加开发库189
8.2.2添加应用源代码189

第9章Visual Basic中使用libmodbus193
9.1函数调用约定与修饰名194
9.1.1函数调用约定194
9.1.2函数修饰名196
9.1.3调用约定的使用198
9.2模块定义文件198
9.3对libmodbus开发库的改造200
9.3.1添加__stdcall调用符200
9.3.2添加DEF模块定义文件201
9.4开发Visual Basic程序204
9.4.1创建新项目204
9.4.2添加函数描述文件205
9.4.3调用libmodbus库函数213

第10章Visual C#中使用libmodbus217
10.1开发Visual C#程序218
10.1.1创建新项目218
10.1.2添加函数描述文件219
10.1.3调用libmodbus库函数226
10.2基于C#的NModbus类库230
10.2.1什么是NModbus类库230
10.2.2NModbus类库用法232

第11章打造自己的Modbus调试工具237
11.1开发自己的Modbus Poll238
11.1.1软件需求分析238
11.1.2命令行解析功能240
11.1.3创建应用程序并调试246
11.2开发自己的Modbus Slave270
11.2.1软件需求分析270
11.2.2创建应用程序并调试272

参考文献284
标签
MODBUS,开发,监控,编程,计算机网络
产品特色