
西门子s7协议转换工具使用说明

开发初衷
为了方便未安装tia portal的用户可以通过Modbus poll监控plc数据块的数据;后面不断的迭代支持更多的协议,如IEC104、MQTT、Web api等协议。
源码仓库
介绍
使用snap7读取西门子PLC的DB块数据,目前已测试PLC有1200和1500系列和200smart系列。
本程序已在windows和linux平台测试通过;且在实际项目中稳定运行一年以上。
本程序开发使用snap7,paho-mqtt库,flask库,colorama库,python3.13版本,感谢他们!
功能
- 支持多个PLC(1200,1500)DB块的读写转发,通过modbusTCP、MQTT、web api和ice104协议进行通讯读写。
- 一次性把DB块的数据读回来再做数据解析,提高通讯时效性,减轻通讯负载。
最高偏移量-最小偏移量+最高偏移量数据类型字节长度=要读取的所有字节
一次性读取字节所需时长可以通过s7客户端读取获得,一般不会超过1秒,视网络情况而定。
根据最高通讯时长在config.ini设置snap7读取频率。默认1秒 - 支持开机自启动设置
- 支持mqtt上报模板修改(json格式上报)
更新记录
2024年3月24日更新
- 新增linux平台运行的snap7客户端源码
- Mqtt03.py更新,为paho-mqtt2.0版本的库做了适配,源码运行需要注意安装2.0版本的mqtt库
- 修复mqtt写操作,字节、整型负数时无法写入的问题
2024年5月9日更新
- 修复字节最高位布尔置1后,其他位无法置1的bug
2024年5月29日更新
- 支持文件传输和远程配置
- 自动识别系统,windows或linux,都运行同一个源码
2024年10月21日更新
- 优化开机自启动功能,去除延时启动参数
2025年01月08日更新
优化代码,将部分功能提取到独立的函数中,提高代码的可读性和可维护性
修复同一地址,多个数据类型时,读取长度异常的处理的bug
2025年04月21日更新
新增web api接口,iec104服务端。服务器参数可在config.ini配置。
iec104点位地址必须唯一,支持的数据类型有浮点,整型和布尔。读写为同一ioa地址
2025年04月28日更新
- 修复iec104点位无配置时,数据变化不自动上报及下发错误的bug
2025年05月28日更新
- 更新版本号为3.4.2,修复上报模板=@@@时,不上报数据的bug
2025年07月02日更新
- 更新版本号为3.5.0,弃用modbus-tk库,新增modbus tcp服务端程序,重写modbus交互方法
配置
config.ini内容
1 | #‘#’后为注释;当前配置文件编码为UTF-8编码 |
控制器参数配置说明
1 |
|
[]包含一个或多个plc配置,每个plc配置用()括起来,参数依次为:
- 控制器地址
- modbus ID(唯一)
- plc名称(唯一)
- 点位文件路径csv(相对和绝对路径均可)
- 机架号
- 槽号
安装教程
windwos平台
无需安装,双击exe文件即可运行。
linux平台
1 | pip3 install -r requirements.txt #Linux下运行安装依赖 |
使用说明
PLC设置
1. 硬件组态
- ①常规
- ②连接机制
- ③勾选允许来自远程对象的PUTIGET通信访问

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

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

modbus点位及读写操作


通过iec104通讯读写

通过web api通讯读写

通过mqtt通讯读写
同web api
源码运行
安装好依赖后,进入源码目录,运行如下命令:
1 | python3 Snap7Client3.5.0.py # linux下运行 |
- 标题: 西门子s7协议转换工具使用说明
- 作者: LinJiefeng
- 创建于 : 2025-07-18 17:00:51
- 更新于 : 2025-07-27 17:41:00
- 链接: https://blog.icsteam.cn/2025/07/18/201_snap7_readme/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论