抖音粉丝群1
『7x24小时有问必答』

推荐使用  python-snap7  库,它对 Siemens S7 系列 PLC 的 I/Q 区和 DB 块读写支持较完善。下面给两个最常用的示例:读写 I/Q 区  和  读写 DB 块
1,安装        
pip install python-snap7
2,连接 PLC
import snap7

# 创建客户端
plc = snap7.client.Client()

# 连接到 PLC (IP, rack, slot)
plc.connect("192.168.0.1", 0, 1)

print("PLC Connected:", plc.get_connected())
3,读写 I/Q 区 (输入/输出映像区)
I 区 = 输入 (Inputs),Q 区 = 输出 (Outputs)。
from snap7.util import get_bool, set_bool

# 读取 Q 区 (输出区),比如 Q0.0
data = plc.read_area(snap7.types.Areas.PA, 0, 0, 1)   # PA=Process Outputs
q0_0 = get_bool(data, 0, 0)   # byte=0, bit=0
print("Q0.0 =", q0_0)

# 写 Q0.0 = True
set_bool(data, 0, 0, True)
plc.write_area(snap7.types.Areas.PA, 0, 0, data)
4,读写 DB 块
假设 DB1 中有一个  INT  在偏移 0。
from snap7.util import get_int, set_int

# 读取 DB1 偏移 0 的 INT
data = plc.read_area(snap7.types.Areas.DB, 1, 0, 2)   # DB1, 偏移0, 长度2字节
value = get_int(data, 0)
print("DB1.DBB0 (INT) =", value)

# 写入新值 1234
set_int(data, 0, 1234)
plc.write_area(snap7.types.Areas.DB, 1, 0, data)

5,说明
Areas.PE  → 输入区 (I)
Areas.PA  → 输出区 (Q)
Areas.DB  → 数据块 (DB)
偏移量和数据类型要与 PLC 程序定义一致,否则会读写错误。
python-s7comm  库更偏底层,协议解析功能强,但实际工程中  snap7 更稳定

如果这篇文章对你有帮助,记得点个赞/收藏,方便以后查找。
也欢迎在评论区分享你的经验或看法,让更多人受益。
觉得有价值的话,转发给朋友,一起学习成长。祝周末愉快!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

关于我们·投诉举报· 用户帮助· 联系我们 · 本站服务 · 版权声明· 隐私政策 · 投搞指南

法律保护:PLC技术网,plcjs.com,plcjs.net等字样
Copyright 2010-2030. All rights reserved. 


微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码