AI 摘要

在Snap7官方文档中,针对与西门子S7-1200的通信,需要在PLC侧(TIA Portal V16)完成组态后,设置连接机制和访问权限。在Ubuntu侧(Python 3.6),安装Python版的Snap7库后可以读写DB1。通过创建连接、读取数据块、写入数据块,并在出现错误时检查库安装配置或PLC地址,可以与西门子S7-1200建立S7通信。

Snap7官方文档(英文)

  • PLC侧(TIA Portal V16):
    • PLC组态完成后
    • 在PLC属性-常规-防护与安全-连接机制中勾选允许来自远程对象的PUT/GET通信访问
    • 在连接机制上方访问级别中选择完全访问权限
    • 新建DB块并在DB块的属性中取消勾选优化块的访问
  • Ubuntu侧(Python 3.6 ):
    • 安装Python版Snap7库:
    • pip install python-snap7

读写DB1: 

import snap7
client = snap7.client.Client()  #创建连接
client.connect('192.168.0.135', 0, 0)  #连接PLC(IP地址,Rack机架号 一般为0,Slot槽号 0或1都有可能)
db1 = client.db_read(1, 20, 1)  # 读取数据块db1,起始字节20,读取长度1个字节
print(db1)  # 打印得到的数据(Hex格式)
client.db_write(1, 0, b'\x11') # 写入数据块db1,起始字节,Hex格式数据
db1 = client.db_read(1, 20, 3)  # 读取数据块db1,起始字节20,读取长度
print(db1)  # 打印得到的数据(Hex格式)
client.disconnect()  #断开连接并销毁(这步一定要有)

若程序运行报错:can't find snap7 library 说明snap7的库安装配置不正确

若程序运行报错:TCP :Unreachable peer 说明配置正确但PLC地址错误(检查IP地址或改一下槽号)

参考:Python通过snap7库与西门子S7-1200建立S7通信