
西门子s7协议转换工具使用说明
开发初衷
为了方便未安装tia portal的用户可以通过Modbus poll监控plc数据块的数据;后面不断的迭代支持更多的协议,如IEC104、MQTT、Web api等协议。
快速开始
部署python环境
- 下载python环境
- 安装
- 检查环境是否成功部署
1
2
3python --version
# 显示版本号则成功部署
# 输出Python 版本号
安装依赖
下载并运行s7仿真项目
- 下载服务端源码
📩点击下载python-s7 - 解压到任意目录,并打开scr
- 安装依赖
1
pip install python-snap7
- 在scr文件夹下代开终端,并输入以下代码,回车运行
1
python ServerApp.py
- 默认IP为127.0.0.1,点击Start运行
下载并运行协议转换工具
- 下载
📩点击下载协议转换工具程序 - 🏃运行
双击snap7client3.5.16.exe(windwos)

源码仓库
gitee仓库传送门,最新版3.5.16(2026-09-04)
介绍
使用snap7读取西门子PLC的DB块、M区数据,目前已测试PLC有1200、1500系列、200smart系列和S7400。
本程序已在windows和linux平台测试通过;且在实际项目中稳定运行一年以上。
本程序开发使用snap7,paho-mqtt库,flask库,colorama库,rich库,python3.13版本,感谢他们!
功能
- 支持多个PLC(1200,1500)DB块的读写转发,通过modbusTCP、MQTT、web api和ice104协议进行通讯读写。
- 一次性把DB块的数据读回来再做数据解析,提高通讯时效性,减轻通讯负载。
最高偏移量-最小偏移量+最高偏移量数据类型字节长度=要读取的所有字节
一次性读取字节所需时长可以通过s7客户端读取获得,一般不会超过1秒,视网络情况而定。
根据最高通讯时长在config.ini设置snap7读取频率。默认1秒 - 支持开机自启动设置
- 支持mqtt上报模板修改(json格式上报)
- 使用Sqlite数据库进行数据归档
- 支持使用浏览器查看数据库数据并生成图表且可以导出数据
更新记录
2026年03月21日更新
- 更新版本号为3.5.5,转换协议下发写plc数据,支持超时时重发,限定重发次数,更新snap7库,新增linux二进制文件
2026年07月10日更新
- 更新版本号为3.5.6
- 使用豆包AI轻量重构;
- 修复iec104协议写有符号数据显示问题;
- 修复mqtt和webapi下发不存在的标签或plc名时无限循环的问题
2026年07月16日更新
- 新增点位入库配置及采集,使用Sqlite数据库,数据按月归档;
- 修复PLC断开时,不同协议下发导致程序一致报错的bug,优化写逻辑
2026年07月25日更新
- 优化modbus写逻辑
2026年07月28日更新
- 新增sqlite数据库查询,导出功能;
- 修复远程重启,一致累加设备实例的bug;
- 优化打印区域
2026年07月30日更新
- 修复图表小数点显示问题
- 修复超80字段后字段筛选数据显示异常的bug
- 优化modbus和iec104写逻辑
2026年07月30日更新
- 新增自动检测前端静态资源,缺失自动下载
2026年09月04日更新
- v3.5.16 使用copium进行性能优化,减少cpu开销和内存占用;mqqt断开连接记录;端口检查放到public_lib
‘’’
配置
config.ini内容
1 | #‘#’后为注释;当前配置文件编码为UTF-8编码 |
控制器参数配置说明
1 |
|
[]包含一个或多个plc配置,每个plc配置用()括起来,参数依次为:
- 控制器地址
- modbus ID(唯一)
- plc名称(唯一)
- 点位文件路径csv(相对和绝对路径均可)
- 机架号
- 槽号
安装教程
使用数据查询服务,在联网状态下会自动下载静态文件,下载完成后才启动服务。
windwos平台
无需安装,双击exe文件即可运行。
linux平台
无需安装,直接运行二进制文件即可运行。
使用说明
PLC设置
1. 硬件组态
- ①常规
- ②连接机制
- ③勾选允许来自远程对象的PUTIGET通信访问

2. 数据块设置
- ①不勾选优化的块访问

必须设置
- 允许来自远程对象的PUTIGET通信访问
- 优化的块访问
运行程序
- 配置config.ini文件
- 配置ztest.csv文件(按照这个文件里的字段,进行配置,文件名可以修改,后缀必须csv,并在config.ini的控制器参数配置中填写路径)
- 双击Snap7Client3.5.*.exe文件运行程序
程序会自动生成snap7和TMP文件夹,modbus点位表在snap7文件夹中

modbus点位及读写操作


通过iec104通讯读写

通过web api通讯读写

通过mqtt通讯读写
同web api
日志缓存限制为10行

数据查询服务

源码运行
源码运行安装安装依赖
1
2pip3 install -r requirements.txt #Linux下运行安装依赖
pip install -r requirements.txt #windows下运行安装依赖安装好依赖后,进入源码目录,运行如下命令:
1
2python3 Snap7Client3.5.*.py # linux下运行
python Snap7Client3.5.*.py # windwos下运行
远传功能
计划
后续会开发客户端程序
通过mqtt进行远程传输和操作
参数设置
1
2
3
4
5
6
7#------远程操作------
远程密码 = you_password
#------远程操作------
#是否使用MQTT上报数据
MQTT使能 = 1
# 主题
订阅主题 = /sys/mqttx_388cab12/pub/feedback指令操作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21# 指令@密码
# 获取文件路径
get@123
# 移动要更新的文件
move@123
# 清空缓存文件
clean@123
# 重启程序
restart@123
# 上传文件
{"upload_file":[1,11,17,19,21]}
# 删除文件
{"del_file":[0,1,2,3,4,5]}
# 下载文件
{"download_file":1}
- 标题: 西门子s7协议转换工具使用说明
- 作者: LinJiefeng
- 创建于 : 2025-07-18 17:00:51
- 更新于 : 2026-09-05 15:19:21
- 链接: https://blog.icsteam.cn/2025/07/18/201_snap7_readme/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论