本书系统地讲解了C#上位机与下位机之间进行通信的相关知识,以各种实用案例为载体,注重实际应用,对初学者学习C#上位机软件开发具有一定的帮助和指导作用。 本书分为四部分:第一部分对工业控制系统架构和常用数据类型转换进行说明;第二部分介绍了串口通信和以太网通信基础;第三部分主要针对Modbus RTU和Modbu TCP通信协议进行了详细说明;第四部分主要阐述了自定义控件的开发以及C#如何联合WinCC和运动控制卡。 本书适合需要系统学习C#上位机开发的电气工程师或自动化工程师,以及一些IT程序员转型OT参考,也可以作为高等院校智能制造、电气工程和自动化类专业的师生参考。
付加劲一直从事自动化领域相关技术工作,从PLC编程到上位机及DCS组态,再到C#、LabVIEW软件开发,从2017年开始从事在线教育工作,开发了大量的上位机项目,编写了数本自研教材,对上位机数据采集及应用非常熟悉,同时对运动控制、机器视觉、WEB物联网,也有着较深的理解。
目 录
第1章 工业控制系统 1
1.1 工业控制系统架构 1
1.2 下位机发展应用 2
1.2.1 PLC 2
1.2.2 单片机 4
1.2.3 运动控制器 5
1.3 上位机发展应用 7
1.3.1 人机界面 7
1.3.2 组态软件 8
1.3.3 高级语言开发 8
1.4 上位机与下位机通信 9
1.4.1 串口通信 9
1.4.2 以太网通信 12
第2章 上位机开发数据类型转换 17
2.1 基础数据类型说明 17
2.1.1 常用数据类型 17
2.1.2 大小端字节顺序 18
2.1.3 为什么会存在大小端 19
2.2 字节集合类ByteArray封装及应用 20
2.2.1 字节集合类ByteArray 21
2.2.2 ByteArray实际应用 23
2.3 数据类型转换类 23
2.3.1 ByteArray转换类ByteArrayLib 23
2.3.2 byte转换类ByteLib 29
2.3.3 bit转换类BitLib 29
2.3.4 short转换类ShortLib 32
2.3.5 int转换类IntLib 33
2.3.6 long转换类LongLib 34
2.3.7 string转换类StringLib 35
2.4 操作结果类OperateResult 36
2.4.1 OperateResult的设计过程 37
2.4.2 OperateResult的使用说明 39
第3章 串口通信与通信应用 41
3.1 SerialPort串口对象 41
3.1.1 SerialPort构造方法 41
3.1.2 SerialPort常用属性 42
3.1.3 SerialPort常用方法 43
3.1.4 SerialPort常用事件 44
3.2 扫码枪串口通信案例 44
3.2.1 项目创建及界面设计 45
3.2.2 项目架构设计 46
3.2.3 串口参数配置 46
3.2.4 串口通信封装实现 52
3.2.5 串口扫码功能应用 54
3.3 欧姆龙PLC串口通信实战 57
3.3.1 搭建仿真欧姆龙PLC环境 58
3.3.2 Hostlink协议C-Mode通信应用 67
3.3.3 Hostlink协议Fins通信应用 77
第4章 以太网通信与通信应用 82
4.1 TCP/IP基础 82
4.1.1 TCP三次握手 83
4.1.2 TCP四次挥手 84
4.1.3 Socket编程基础 86
4.2 TCP服务器及客户端程序编写 89
4.2.1 服务器程序编写 89
4.2.2 TCP客户端程序编写 92
4.2.3 服务器与客户端通信测试 94
4.3 西门子PLC以太网通信案例 96
4.3.1 西门子PLC仿真环境 97
4.3.2 PLC程序编写 101
4.3.3 上位机通用读取 106
4.3.4 上位机通用写入 114
4.4 西门子S7通信应用 118
4.4.1 PLC通信配置 118
4.4.2 S7.NET通信库封装 120
4.4.3 PLC通信通用读取思路 124
4.4.4 PLC通信解决方案 127
第5章 Modbus通信协议说明 128
5.1 Modbus基础知识说明 128
5.1.1 Modbus存储区 128
5.1.2 Modbus地址模型 129
5.1.3 Modbus功能码 130
5.1.4 Modbus仿真软件 132
5.2 Modbus RTU/ASCII通信协议 138
5.2.1 读取输出线圈 139
5.2.2 读取输入线圈 140
5.2.3 读取保持型寄存器 141
5.2.4 读取输入寄存器 142
5.2.5 预置单线圈 143
5.2.6 预置单寄存器 143
5.2.7 预置多线圈 144
5.2.8 预置多寄存器 144
5.3 Modbus TCP/UDP通信协议分析 145
5.3.1 Modbus TCP/UDP协议分析 145
5.3.2 读取输出线圈 147
5.3.3 读取输入线圈 148
5.3.4 读取保持型寄存器 148
5.3.5 读取输入寄存器 149
5.3.6 预置单线圈 150
5.3.7 预置单寄存器 151
5.3.8 预置多线圈 151
5.3.9 预置多寄存器 152
第6章 Modbus RTU串口通信应用 154
6.1 NModbus4通信库使用说明 154
6.1.1 NModbus4通信库安装说明 154
6.1.2 Modbus RTU通信库封装应用 155
6.2 西门子200Smart实现Modbus RTU通信 161
6.2.1 PLC程序编写 161
6.2.2 Modbus RTU通信测试 165
6.2.3 上位机通信程序 165
6.3 Modbus RTU一主多从实现温湿度采集 168
6.3.1 温湿度变送器地址说明 169
6.3.2 温湿度变送器模块通信测试 169
6.3.3 上位机实现多温湿度采集 170
第7章 Modbus TCP以太网通信应用 175
7.1 西门子S7-1500 PLC实现Modbus TCP通信 175
7.1.1 PLC程序编写 175
7.1.2 Modbus TCP通信库封装 178
7.1.3 上位机通信应用 179
7.2 三菱FX5U PLC之Modbus TCP通信 182
7.2.1 PLC配置说明 182
7.2.2 Modbus地址分析及测试 185
7.2.3 上位机通信应用 186
第8章 自定义控件封装及应用 190
8.1 自定义控件分类 190
8.1.1 扩展控件 190
8.1.2 组合控件 193
8.1.3 绘制控件 194
8.2 HeadPanel控件 198
8.2.1 HeadPanel控件分析 198
8.2.2 HeadPanel控件开发 199
8.3 TextShow控件 205
8.3.1 TextShow控件分析 205
8.3.2 TextShow控件开发 206
8.4 Led控件 209
8.4.1 Led控件分析 209
8.4.2 Led控件开发 209
第9章 C#联合WinCC组态软件应用 215
9.1 WinCC使用.NET控件 215
9.1.1 WinCC如何添加.NET控件 215
9.1.2 WinCC与西门子PLC通信 217
9.2 C#实现读写WinCC变量 221
9.2.1 C#读取WinCC变量 221
9.2.2 C#写入WinCC变量 222
9.3 C#实现访问WinCC控件 224
9.3.1 C#读取WinCC控件 224
9.3.2 C#写入WinCC控件 226
第10章 C#上位机联合运动控制卡 228
10.1 运动控制卡基础知识 228
10.1.1 运动控制卡与PLC的区别 228
10.1.2 运动控制卡的种类与选型 230
10.1.3 运动控制与机器人的区别 231
10.2 脉冲型运动控制卡使用说明 231
10.2.1 ECI1408产品说明及接线使用 232
10.2.2 运动控制函数库二次封装 236
10.2.3 多轴运动控制应用案例 246
10.3 总线型运动控制卡EtherCAT通信 251
10.3.1 ECI2828运动控制卡使用说明 251
10.3.2 ECI2828运动控制卡脉冲控制 252
10.3.3 ECI2828运动控制卡EtherCAT控制 255
10.4 运动控制卡Modbus TCP通信 259
10.4.1 运动控制卡Modbus协议说明 259
10.4.2 运动控制卡Modbus通信应用 260