我尝试用python-快照70.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包装器的步骤如下:
如何在windows上正确安装snap7?
pip安装日志
发布于 2015-11-20 13:31:48
经过一些尝试和错误实验,以及一些涉及开发人员的snap7信息,我修复了这个问题。快照7.dll和.lib文件所在的文件夹必须存在于Windows的环境变量中。如果您从Python安装程序中选中了"add path“选项,则可以将这些文件复制到Python。
详细信息请参见图片:编辑环境变量
编辑环境vars
为了给像我这样的新手提供一个很好的起点,这里有一个最小的snap7教程,可以从S7 1212CPLC和Python3中读取DB的变量:
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设备的IP为10.112.115.1,子掩码为255.255.255.0,则为您的PLC提供10.112.115.2至10.112.115.255的范围。超出此范围的每个PLC IP都会给您“无法到达的对等程序”错误。
防火墙
确保您的防火墙允许您的PC与PLC之间的通信。
PLC数据定位
如果您不熟悉步骤7/ TIA门户。查找“在线诊断”按钮,并查看图片,以找到您的数据的位置。
DB数和变量偏移量
PLC组态
除了使用您想要读取的变量的PLC程序之外,该PLC不需要额外的部分来与snap7通信。与snap7通信所需的服务是由打开电源的固件启动的。
发布于 2020-07-13 06:37:46
将 snap7.dll and snap7.lib 从 "\snap7-full-1.2.1\release\Windows\Win64"和粘贴到"C:\snap7-full-1.2.1\release\Windows\Win64"文件夹中。
那么“导入snap7”就起作用了。但它会给下一步带来错误。snap7.client.Client() -> AttributeError:模块'snap7‘没有属性'client’
我使用了"https://github.com/gijzelaerr/python-snap7“项目。起作用了。
发布于 2016-07-07 17:15:55
尝试如下:搜索snap7文件夹中的快照7.dll和快照7.lib文件,将管理7.dll和快照7.lib复制到“C:/PythonXX//快照7”目录中,然后再次运行代码。您可以在同一个目录下的common.py文件中计算出这一点。
https://stackoverflow.com/questions/33697263
复制相似问题