本書著重講述如何快速入門並精通Modbus軟體開發技術,適用於初學Modbus通信協定的讀者。如果你想用C/C++語言開發Modbus通信庫,如果你想用其它語言(如Visual Basic、Visual C#)開發Modbus應用程式,如果你想從事物聯網或Modbus測試開發,本書乾貨滿滿,值得一讀。
目錄
第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.2ModbusPoll的使用16
2.2.1簡介16
2.2.2功能17
2.2.3使用方法18
2.3ModbusSlave的使用21
2.3.1簡介21
2.3.2功能22
2.3.3使用方法232.4ModbusPollSlave互聯互通24
2.5VisualStudio2015的安裝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.6ModbusTCP訊息幀格式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開發RTUMaster端154
7.1.1新建工程154
7.1.2添加開發庫155
7.1.3添加套用原始碼158
7.1.4代碼調試166
7.2開發RTUSlave端169
7.2.1新建工程並添加開發庫169
7.2.2添加套用原始碼169
第8章完整TCP模式開發範例173
8.1開發TCPClient端174
8.1.1新建工程174
8.1.2添加開發庫176
8.1.3添加套用原始碼177
8.1.4代碼調試186
8.2開發TCPServer端189
8.2.1新建工程並添加開發庫189
8.2.2添加套用原始碼189
第9章VisualBasic中使用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開發VisualBasic程式204
9.4.1創建新項目204
9.4.2添加函式描述檔案205
9.4.3調用libmodbus庫函式213
第10章VisualC#中使用libmodbus217
10.1開發VisualC#程式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開發自己的ModbusPoll238
11.1.1軟體需求分析238
11.1.2命令行解析功能240
11.1.3創建應用程式並調試246
11.2開發自己的ModbusSlave270
11.2.1軟體需求分析270
11.2.2創建應用程式並調試272
參考文獻284