本文章记录Python-snap7零基础的安装和测试过程。
1 部件和软件
硬件:
1)S7-1500 CUP 1511-1 PN(6ES7511-1AK02-0AB0)
2)SD存储卡 4M(6ES7 954-8LC03-0AA0)
3)220V AC 转 24V DC 电源适配器
4)网线
软件:
1)博途 V15.1
2)Python 3.7.4
平台:
win7 SP1 64位
技术参考
https://blog.csdn.net/weixin_40844416/article/details/80889165
https://blog.csdn.net/qq_34935373/article/details/97374783
https://sourceforge.net/p/snap7/discussion/general/thread/ef6aab94/?limit=25
https://github.com/gijzelaerr/python-snap7
https://pypi.org/project/python-snap7/
https://www.python.org/
Python3的安装
安装完成博途V15.1后,在https://www.python.org/下载Python3的安装程序。
注意尽量选择Windows x86-64 executable installer版。
安装过程中,需要勾选 Add python to PATH 添加路径。
安装pip
snap7 安装需要用pip,先用下面命令检查是否安装了pip。
pip --version
安装过程中pip没有装上,可以先安装PIP。可参考下面的连接安装。
https://jingyan.baidu.com/article/7c6fb428d84f9480642c90d1.html
安装Python-snap7
先下载snap7-full-1.4.2和Python-snap7
拷贝dll和lib
解压snap7-full-1.4.2,找到release\windows\win32下的的snap7.dll和snap7.lib,分别拷贝到Python的安装目录和系统windows下的SysWOW64下。
安装Python-snap7
win+R打开“运行”,输入cmd,确定后,进入DOS命令行终端,输入下面的命令:
pip install python-snap7
PLC连接和设置
接线
24V电源线正接CPU红色接头,负极接蓝色。
1500CPU显示屏设置
接通电源后,CPU开启,但是背景是黄色,表明设置有问题。
主要设置PI地址。
按照下面的步骤进行设置:
- 浏览到“设置”(Settings)。
- 选择“地址”(Addresses)。
- 选择接口“X1 (IE/PN)”。
- 选择菜单项“IP 地址”(IP Addresses)。
- 设置 IP 地址 192.168.000.001。
- 按下模块上的“右”箭头键。
- 设置子网掩码 255.255.255.000。
- 按下模块上的“下”箭头键选择菜单项“应用”(Apply),然后单击“确定”(OK) 确认设置。
新建项目
打开博途V15.1 软件,创建新项目
添加设备
在设备和网络中,添加设备。操作如下:
- 打开“设备与网络”Portal。
- 插入新设备。
- 输入CPU 名称,可以不输入。
- 双击创建 CPU。
- 选择CPU的订货号
- 设置IP和子掩码地址 (备注:曾测试过1214 CPU IP地址设置192.168.0.1,也能用snap7-python访问,虚拟机或连接交换机等可能会产生IP冲突,若出现b’ TCP:Unreachable peer,需要重新更改IP地址)
变量设置
设置IO变量。如下表。
设置
为了使snp7和s7 进行通信需要在软件中进行设置。
1)防护安全,必须选择“完全访问权限”;
2)连接机制,必须勾选允许来自远程对象的PUT/GET通信访问
3)若创建了DB块,需要对其属性进行设置,取消优化的块访问,勾选可以OPCUA访问DB
编译
按上面步骤进行设置后,必须重新进行编译。否则用snap7连接PLC可以成功,但是不能获取数据,报“snap7.snap7exceptions.Snap7Exception: b’CLI : function refused by CPU (Unknown error)’”。
下载
点击下载,装载后完成即可。
没有报错就行,CPU显示屏幕由黄色变为绿色,Run状态。
若将已经在不同版本型号PLC CPU写入程序的SD卡,回出现下载硬件配置报错。例如:先在1511 CPU中插入SD,编译完成后,再将这张SD卡插入1214 CPU中,就会出现“硬件配置——加载硬件配置失败,请检查目标硬件设备的诊断缓冲区”。1200PLC可以断电后拔除SD卡即可。若1500PLC需要将SD卡再window下删除“SIMATIC.S7S”目录下的数据。切记、切记、切记(重要事情说三遍🙂)不能在window下格式西门子的SD卡,不然卡就报废了。
测试连接
win+R打开“运行”,输入cmd,确定后,进入DOS命令行终端,输入下面的命令:
import snap7
plc=snap7.client.Client()
plc.connect('192.168.0.1',0,1)
data=plc.read_area(0x81,0,0,1)
print(data)
转PLC在线,将I0.0和Q0.0强制变为1.
再在终端输入下面命令
data=plc.read_area(0x81,0,0,1)
print(data)
data2=plc.read_area(0x82,0,0,1)
print(data2)
此外对I0.0进行写入操作
plc.write_area(0x81,0,0,b'\x00')
data=plc.read_area(0x81,0,0,1)
print(data)
这样就表明snap7和simatic s7通信程序成功。