Python Snap7 Windows - не могу найти библиотеку Snap7
Я пытаюсь установить snap7 (для чтения из S7-1200) с его оболочкой python-snap7 0.4, но всегда получаю обратную трассировку со следующим простым кодом.
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:
- Загрузите snap7 из sourceforge и скопируйте snap7.dll и snap7.lib в папку system32 в Windows 8
- Установите обертку с помощью pip install python-snap7
Как правильно установить snap7 на windows?
[журнал установки pip][1]
3 ответа
После некоторых экспериментов с попытками и ошибками и с некоторыми сведениями о разработчиках Snap7 я решил проблему. Папка, в которой находятся файлы snap7.dll и.lib, должна присутствовать в переменных среды Windows. В качестве альтернативы вы можете скопировать файлы в установочный каталог Python, если вы установили опцию "добавить путь" в установщике Python.
См. Изображение для деталей: Редактировать Vars Enviroment
Чтобы дать хорошую отправную точку для всех, кто любит меня, вот минимальное руководство snap7 для чтения переменных БД из ПЛК S7 1212C с Python3:
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 и маска подсети
IP-адрес ПЛК должен находиться в диапазоне маски подсети ПК LAN Device. Если IP-адрес устройства локальной сети равен 10.112.115.1, а подмаска - 255.255.255.0, это дает вам диапазон от 10.112.115.2 до 10.112.115.255 для вашего ПЛК. Каждый IP ПЛК, выходящий за пределы этого диапазона, выдаст ошибку "Недостижимый узел".
Брандмауэр
Убедитесь, что ваш брандмауэр обеспечивает связь между вашим ПК и ПЛК.
Расположение данных ПЛК
Если вы не знакомы с STEP 7/ TIA Portal. Найдите кнопку "Онлайн-диагностика" и посмотрите фотографии, чтобы найти местоположение ваших данных.
Номер БД и смещения переменных
Конфигурация ПЛК
Помимо программы ПЛК, которая использует переменные, которые вы хотите прочитать, ПЛК не требует дополнительных частей для связи с snap7. Службы, необходимые для связи с snap7, запускаются микропрограммой при включении питания.
Копировать snap7.dll and snap7.lib
от "\snap7-full-1.2.1\release\Windows\Win64"
и вставьте их в"C:\snap7-full-1.2.1\release\Windows\Win64"
папка.
тогда "import snap7" работает. но на следующем шаге выдает ошибку. snap7.client.Client() -> AttributeError: модуль 'snap7' не имеет атрибута 'client'
Я использовал проект https://github.com/gijzelaerr/python-snap7. это работает.
Последняя настройка для использования snap7 выглядит для меня следующим образом:
установите snap7 для python с pip в командной строке с помощью "pip install python-snap7"
загрузите последний пакет snap7 с sourceforge
скопируйте 32- или 64-битную версию в любую папку, например папку вашего проекта
- сделать импорт snap7 в вашей программе на Python
временно отредактируйте переменные окружения в вашей программе на 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.
Попробуйте сделать следующее: найдите в папке snap7 файлы snap7.dll и snap7.lib. Скопируйте файлы snap7.dll и snap7.lib в каталог "C:/PythonXX/site-packages/snap7 " и снова запустите код. Вы можете выяснить это в файле common.py в том же каталоге.