python snap7 windows-找不到snap7库

2024-09-28 22:22:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用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 wrapper的步骤如下:

  1. 从sourceforge下载snap7并将snap7.dll和snap7.lib复制到windows 8的system32文件夹
  2. 使用pip Install python-snap7安装包装器

如何在windows上正确安装snap7?

[pip安装日志][1]


Tags: infrompyimportclientlibpackagesline
3条回答

试试这个: 在snap7文件夹中搜索snap7.dll和snap7.lib文件 将snap7.dll和snap7.lib复制到“C://PythonXX/site packages/snap7”目录中,然后再次运行代码。您可以在同一目录下的common.py文件中找到这一点。

使用snap7的最新设置如下所示:

  • 通过“pip install”在命令行中使用pip安装snap7 for python python-snap7“

  • sourceforge下载最新的snap7包

  • 将32位或64位版本复制到任何文件夹,例如项目文件夹

  • 在python程序中执行导入snap7
  • 在python程序中临时编辑环境变量

    #---Temporarily Change The Path Enviroment Variable For Snap7.dll---
    if not snapPath in os.environ["PATH"]:
        os.environ["PATH"] = os.environ["PATH"] + ";" + snapPath.replace("/","\\")
    

路径中允许有空格。这很好,但如果您创建安装程序,例如使用xfreeze。

经过一些尝试和错误的实验,以及snap7中涉及的一些开发人员的信息,我修复了这个问题。snap7.dll和.lib文件所在的文件夹必须存在于Windows的环境变量中。另外,如果从Python安装程序中选中了“add path”选项,则可以将文件复制到Python install目录。

详见图片:编辑环境变量

edit enviroment vars

为了给像我这样的新手提供一个良好的起点,这里有一个简单的snap7教程,从一个带有Python3的S7 1212C PLC读取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设备的子网掩码范围内。如果LAN设备的IP为10.112.115.1,子任务为255.255.255.0,则您的PLC的范围为10.112.115.2到10.112.115.255。超出此范围的每个可编程逻辑控制器IP都会给您一个“无法访问的对等”错误。

防火墙

确保防火墙允许PC和PLC之间的通信。

可编程逻辑控制器数据位置

如果您不喜欢STEP 7/TIA门户。查找“联机诊断”按钮并查看图片以查找数据的位置。

DB Number and Variable Offsets

可编程逻辑控制器配置

除了使用要读取的变量的可编程逻辑控制器程序外,可编程逻辑控制器不需要其他部件来与snap7通信。与snap7通信所需的服务由打开电源的固件启动。

相关问题 更多 >