- 双击运行
S7DebugTool.exe - 程序主界面将显示,包含三个主要区域:
- 连接配置区:顶部区域,用于设置PLC连接参数
- 操作区:中间标签页区域,包含三个功能标签
- 日志区:底部区域,显示通信日志
-
输入连接参数:
- IP地址:输入PLC的IP地址(例如:192.168.0.1)
- 机架号:
- S7-300/400:通常为 0
- S7-1200/1500:通常为 0
- 插槽号:
- S7-300/400:通常为 2
- S7-1200/1500:通常为 1
-
建立连接:
- 点击"连接"按钮
- 观察右侧连接状态,显示"已连接"表示成功
- 日志窗口将显示详细的连接过程
- 切换到"数据类型读写"标签页
- 选择内存区域为"数据块(DB)"
- 输入DB块号(例如:1)
- 输入起始地址(例如:0)
- 选择数据类型(例如:Int)
- 点击"读取"按钮
- 结果将显示在读取结果框中
这是用于读写特定数据类型的主要界面。
参数设置:
-
内存区域:选择要读取的内存区域
- 数据块(DB):需要输入DB块号
- 输入(I):输入映像区
- 输出(Q):输出映像区
- 标志位(M):内部标志区
-
数据类型:选择要读取的数据类型
- Bool:布尔值(需要设置位地址)
- Byte:单字节
- Word:2字节无符号整数
- DWord:4字节无符号整数
- Int:2字节有符号整数
- DInt:4字节有符号整数
- Real:4字节浮点数
- LReal:8字节双精度浮点数
- String:字符串
- DateTime:日期时间
-
起始地址:数据的起始字节地址
-
位地址:仅在读取Bool类型时使用(0-7)
显示格式:
- 十六进制:以16进制格式显示
- 十进制:以10进制格式显示
- ASCII:以ASCII字符显示
数据输入格式说明:
| 数据类型 | 输入格式示例 | 说明 |
|---|---|---|
| Bool | true/false 或 1/0 | 布尔值 |
| Byte | 01 02 03 或 1,2,3 | 字节数组 |
| Word | 65535 | 0-65535范围 |
| DWord | 4294967295 | 0-4294967295范围 |
| Int | -32768 | -32768到32767 |
| DInt | -2147483648 | 32位有符号整数 |
| Real | 3.14159 | 单精度浮点数 |
| LReal | 3.141592653589793 | 双精度浮点数 |
| String | Hello World | 文本字符串 |
| DateTime | 2024-01-15 10:30:00 | 日期时间格式 |
用于批量读写原始字节数据,适合调试和数据分析。
特点:
- 支持读取大量连续字节数据
- 自动处理PDU大小限制,分块读取
- 支持地址显示,方便定位数据
使用步骤:
- 选择内存区域
- 设置起始地址
- 输入读取长度(字节数)
- 选择显示格式
- 勾选"显示地址"可查看每行数据的地址
- 点击"批量读取"
显示格式说明:
-
十六进制格式:
000000: 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 000016: 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 -
十进制格式:
000000: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 000016: 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 -
ASCII格式:
000000: Hello World..... 000032: Test Data.......
支持的输入格式:
-
十六进制格式(空格分隔):
01 02 03 04 05 06 07 08 -
十六进制格式(连续):
0102030405060708 -
十进制格式(逗号分隔):
1,2,3,4,5,6,7,8 -
混合格式:
0x01 0x02 0x03 0x04
用于配置和执行多个读写任务。
功能特点:
- 创建任务队列
- 批量执行多个操作
- 查看每个任务的执行结果
- 支持任务的启用/禁用
任务配置参数:
- 启用:是否执行该任务
- 操作:读取或写入
- 区域:DB/I/Q/M
- DB号:数据块编号
- 地址:起始地址
- 长度:数据长度
- 数据:写入操作的数据
场景:读取DB1.DBW10处的整数值
- 内存区域:数据块(DB)
- DB块号:1
- 起始地址:10
- 数据类型:Int
- 点击"读取"
场景:向DB2.DBD20写入浮点数3.14
- 内存区域:数据块(DB)
- DB块号:2
- 起始地址:20
- 数据类型:Real
- 写入值:3.14
- 点击"写入"
场景:读取M10.3的位状态
- 内存区域:标志位(M)
- 起始地址:10
- 位地址:3
- 数据类型:Bool
- 点击"读取"
场景:向DB3.DBB50写入字符串
- 内存区域:数据块(DB)
- DB块号:3
- 起始地址:50
- 数据类型:String
- 写入值:Hello PLC
- 点击"写入"
场景:读取DB100从地址0开始的1000个字节
- 切换到"批量字节读写"标签页
- 设置参数:
- 内存区域:数据块(DB)
- DB块号:100
- 起始地址:0
- 长度:1000
- 选择显示格式:十六进制
- 勾选"显示地址"
- 点击"批量读取"
注意:程序会自动处理PDU限制,将1000字节分成多次读取
场景:向M区地址100写入一组测试数据
- 设置参数:
- 内存区域:标志位(M)
- 起始地址:100
- 输入数据:
FF 00 FF 00 AA BB CC DD - 点击"批量写入"
- 观察状态提示确认写入成功
场景:定期读取多个数据点
- 切换到"批量任务"标签页
- 点击"添加任务"创建新任务
- 配置每个任务:
- 任务1:读取 DB1.DBW0,长度2
- 任务2:读取 DB1.DBD10,长度4
- 任务3:读取 DB2.DBW0,长度2
- 点击"执行所有"
- 查看结果列的返回数据
程序会自动协商PDU大小,并在读写大量数据时自动分块:
- 默认PDU:240字节
- 自动分块:当请求数据超过PDU限制时
- 透明处理:用户无需关心分块细节
S7协议使用大端字节序,程序自动处理转换:
- 读取时:自动从大端转换为小端
- 写入时:自动从小端转换为大端
- 支持所有数值类型的正确转换
日志特点:
- 实时显示所有通信过程
- 包含详细的协议分析
- 支持自动滚动
- 可清空日志
日志信息包括:
- 连接过程
- 发送的数据包
- 接收的响应
- 错误信息
- 操作结果
程序提供详细的错误信息帮助诊断问题:
- 连接错误:网络、IP、端口问题
- 读写错误:地址、权限、数据块问题
- 协议错误:PDU、返回码问题
检查步骤:
- 确认PLC IP地址正确
- 使用ping命令测试网络连通性
- 检查机架号和插槽号设置
- 确认PLC允许外部访问(检查防护等级)
- 检查防火墙是否阻止端口102
可能原因:
- 数据块不存在或未初始化
- 地址超出有效范围
- 没有读取权限
- 数据类型选择错误
解决方法:
- 确认PLC处于RUN模式
- 检查写保护设置
- 验证数据格式正确
- 确认地址范围有效
程序会自动处理,直接输入需要的长度即可。程序会:
- 自动检测PDU大小
- 将请求分成多个小块
- 合并返回结果
- 在日志中显示分块过程
- 字节地址:定位到具体的字节
- 位地址:定位到字节内的具体位(0-7)
- 例如:M10.3 表示M区第10字节的第3位
S7字符串格式:
- 第1字节:最大长度
- 第2字节:实际长度
- 后续字节:字符数据
- 读取时需要包含头部2字节
S7 DATE_AND_TIME格式:
- 8字节BCD编码
- 包含年月日时分秒毫秒
- 程序自动转换为标准格式显示
目前可以:
- 从结果框复制数据
- 使用日志功能记录操作
- 批量任务结果可以选择复制
支持所有使用S7协议的西门子PLC:
- S7-300系列
- S7-400系列
- S7-1200系列
- S7-1500系列
输入区(I)通常是只读的,由物理输入决定。但在某些情况下(如仿真模式),可能允许写入。
- 测试环境优先:先在测试环境验证操作
- 备份数据:操作前备份重要数据
- 权限控制:设置合适的PLC访问权限
- 监控操作:使用日志功能记录所有操作
- 谨慎写入:写入操作可能影响设备运行
如遇到问题,请:
- 查看日志获取详细错误信息
- 参考故障排除章节
- 提交Issue到项目仓库
- 提供详细的错误描述和日志
S7 Debug Tool v1.0
专业的西门子PLC调试工具