我尝试使用它的python-snap7 0.4包装器安装snap7(从S7-1200中读取),但是我总是使用以下简单代码进行回溯。
from time import sleep
import snap7
from snap7.util import *
import struct
plc = snap7.client.Client()
追溯:
>>>
Traceback (most recent call last):
File "Y:\Lonnox\Projekte\Bibliothek\Python und SPS\S7-1200 Test.py", line 6, in <module>
plc = snap7.client.Client()
File "C:\Python34\lib\site-packages\snap7\client.py", line 30, in __init__
self.library = load_library()
File "C:\Python34\lib\site-packages\snap7\common.py", line 54, in load_library
return Snap7Library(lib_location).cdll
File "C:\Python34\lib\site-packages\snap7\common.py", line 46, in __init__
raise Snap7Exception(msg)
snap7.snap7exceptions.Snap7Exception: can't find snap7 library. If installed, try running ldconfig
我安装Snap7和Python包装程序的步骤是:
从sourceforge下载snap7,并将snap7.dll和snap7.lib复制到Windows 8的system32文件夹中
使用pip install python-snap7安装包装器
如何在Windows上正确安装snap7?
[pip安装日志] [1]
最佳答案
经过一些尝试和错误实验,并获得了有关snap7的一些开发人员信息,我解决了这个问题。 Windows 7的Enviroment变量中必须存在snap7.dll和.lib文件所在的文件夹。或者,如果您已从Python安装程序中选中“添加路径”选项,则可以将文件复制到Python安装目录。
参见图片了解详细信息:编辑环境变量
edit enviroment vars
为了给像我这样的新手提供一个良好的起点,这里提供了一个最小的snap7教程,该教程可以使用Python3从S7 1212C PLC读取数据库变量:
import snap7
from snap7.util import *
import struct
plc = snap7.client.Client()
plc.connect("10.112.115.10",0,1)
#---Read DB---
db = plc.db_read(1234,0,14)
real = struct.iter_unpack("!f",db[:12] )
print( "3 x Real Vars:", [f for f, in real] )
print( "3 x Bool Vars:", db[12]&1==1, db[12]&2==2, db[12]&4==4 )
plc.disconnect()
IP和子网掩码
PLC的IP必须在PC LAN设备的子网掩码范围内。如果LAN设备的IP为10.112.115.1,子掩码为255.255.255.0,则PLC的范围为10.112.115.2至10.112.115.255。超出此范围的每个PLC IP都会给您一个“无法访问的对等”错误。
防火墙功能
确保防火墙允许PC和PLC之间的通信。
PLC数据位置
如果您不熟悉STEP 7 / TIA Portal。查找“在线诊断”按钮,然后查看图片以查找数据的位置。
DB Number and Variable Offsets
PLC配置
除了使用要读取的变量的PLC程序外,PLC无需其他部件即可与snap7进行通信。与snap7通讯所需的服务由开机时的固件启动。