书籍详情
Modbus软件开发实战指南(第2版)
作者:杨更更 著
出版社:清华大学出版社
出版时间:2021-11-01
ISBN:9787302588931
定价:¥78.00
购买这本书可以去
内容简介
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 PollSlave互联互通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
第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 PollSlave互联互通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
猜您喜欢