【问题标题】:python snap7 windows - can't find snap7 librarypython snap7 windows - 找不到 snap7 库
【发布时间】:2015-11-13 16:21:07
【问题描述】:

我尝试使用它的 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]

【问题讨论】:

  • 能贴一下 snap7 的 pip 安装日志吗?
  • 你使用的是 64 位的 python 吗?
  • 我在帖子中添加了 pip 日志的图片。
  • 我在 64 位 Win 8.1 Pro 上使用 32 位 python。
  • 如果您有解决方案,您应该将其作为答案发布,而不是编辑您的问题,然后将该答案标记为“正确”。这样一来,将来遇到同样问题的其他人就更有可能使用它。

标签: python siemens s7-1200 snap7


【解决方案1】:

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

查看图片了解详情:编辑环境变量

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 Device 的子网掩码范围内。如果 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 通信所需的服务由固件上电启动。

【讨论】:

    【解决方案2】:

    复制 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: module 'snap7' has no attribute 'client'

    我使用了“https://github.com/gijzelaerr/python-snap7”项目。它正在工作。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        对我来说,使用 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("/","\\")
          

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

        【讨论】:

          猜你喜欢
          • 2021-07-21
          • 1970-01-01
          • 2022-10-05
          • 1970-01-01
          • 2022-11-17
          • 2016-02-28
          • 1970-01-01
          • 2017-07-27
          • 1970-01-01
          相关资源
          最近更新 更多