目录
-
快速入门篇 - 5分钟搭建第一个连接
-
协议原理篇 - 深入理解S7通信协议
-
完整案例篇 - 可直接运行的上位机项目
-
进阶实战篇 - 批量读写、重连机制、并发管理
-
故障排查篇 - 常见问题与解决方案
-
快速参考手册
1. 快速入门篇
1.1 最佳选择:S7.Net Plus
使用NuGet包管理器安装:
Install-Package S7NetPlus
1.2 最小可用示例
using S7.Net;// 创建连接(S7-1200/1500通常使用机架0、槽号1)Plc plc = new Plc(CpuType.S71500, "192.168.1.10", 0, 1);try{plc.Open();if (plc.IsConnected){// 读取DB1.DBX0.0 (Bool)bool value = (bool)plc.Read("DB1.DBX0.0");// 写入DB1.DBW2 (Int)plc.Write("DB1.DBW2", (short)123);}}finally{plc.Close();}
1.3 PLC型号参数对照表
| PLC型号 |
CpuType枚举 |
机架号(Rack) |
槽号(Slot) |
|---|---|---|---|
| S7-200 SMART |
CpuType.S7200 |
0 |
1 |
| S7-300 |
CpuType.S7300 |
0 |
2 |
| S7-400 |
CpuType.S7400 |
0 |
3 |
| S7-1200 |
CpuType.S71200 |
0 |
1 |
| S7-1500 |
CpuType.S71500 |
0 |
1 |
1.4 地址格式速查
| 数据类型 |
地址格式 |
示例 |
说明 |
|---|---|---|---|
| 位(Bit) |
DB块.DBX字节.位 |
DB1.DBX0.0 |
DB块1,字节0,位0 |
| 字节(Byte) |
DB块.DBB字节 |
DB1.DBB0 |
DB块1,字节0 |
| 字(Word) |
DB块.DBW字节 |
DB1.DBW0 |
DB块1,字节0-1 |
| 双字(DWord) |
DB块.DBD字节 |
DB1.DBD0 |
DB块1,字节0-3 |
| 整数(Int) |
DB块.DBW字节 |
DB1.DBW2 |
16位有符号整数 |
| 实数(Real) |
DB块.DBD字节 |
DB1.DBD4 |
32位浮点数 |
2. 协议原理篇
2.1 S7协议栈架构
S7协议是一个多层协议栈,理解其结构有助于排查复杂问题:
| OSI层级 |
组件 |
作用 |
|---|---|---|
| 应用层(7) |
S7 Communication |
用户数据读写 |
| 表示层(6) |
COTP |
连接建立/维护 |
| 会话层(5) |
TPKT |
封装COTP |
| 传输层(4) |
TCP (端口102) |
可靠传输 |
2.2 连接建立五步握手
Step1: TCP三次握手客户端 ──SYN──> PLC客户端 <─SYN-ACK── PLCStep2: COTP连接请求客户端 ──COTP CR (带TSAP)──> PLC客户端 <─COTP CC── PLCStep3: S7通信建立客户端 ──S7 Setup──> PLC客户端 <─Setup Response── PLC
TSAP是关键参数:格式通常为03.02或03.01,对应机架号和槽号。
2.3 PDU Size与通信效率
| PLC型号 |
PDU Size |
单次最大数据负载 |
|---|---|---|
| S7-200 SMART |
240字节 |
~222字节 |
| S7-1200 |
240字节 |
~222字节 |
| S7-300 |
240字节 |
~222字节 |
| S7-400 |
480字节 |
~462字节 |
| S7-1500 |
960字节 |
~942字节 |
2.4 错误码速查表
| 错误码 |
含义 |
解决方法 |
|---|---|---|
| 0x00 |
成功 |
- |
| 0x01 |
硬件错误 |
检查PLC状态 |
| 0x03 |
对象不允许访问 |
检查PLC权限设置 |
| 0x05 |
地址无效 |
确认地址范围 |
| 0x06 |
数据类型不支持 |
检查变量类型 |
| 0x07 |
数据类型不一致 |
检查C#与PLC类型映射 |
| 0x0A |
对象不存在 |
确认DB块已下载 |
3. 完整案例篇
3.1 项目简介
PLC DataHub - 一个完整的Windows Forms上位机工具,支持连接PLC、读写各种数据类型(Bool/Int/String/WString)。
3.2 界面设计
┌─────────────────────────────────────────────────────┐│ [PLC连接] ││ IP地址: [192.168.1.10] [连接/断开] │├─────────────────────────────────────────────────────┤│ [数据监控] ││ ││ BOOL: [✓] 电机运行 ││ INT: [ 123 ] 转速设定值 ││ STRING: [Hello PLC] 设备名称 ││ WSTRING: [这是一段中文] 产品描述 │├─────────────────────────────────────────────────────┤</


1万+

被折叠的 条评论
为什么被折叠?



