硬件构成
PLC为西门子1211DCDCDC
电脑上位机用PYTHON编写
二者通讯用网线,通讯协议用S7
PLC上的设置
以太网地址要在网一个网段内,即192.168.XX.YY,
此处电脑和PLC的XX需要相同,以保证是在同一网段,其取值范围是0-255,
但是YY需要不同,且与局域网内的所有设备均不重复。
要勾选 " 允许来自远程对象的PUT/GET通信访问 ", 否则会无法通讯。
PLC上的数据
PLC上的数据是2个uint,在DB1,地址偏移分别是0和2
需要注意的是DB块要关闭优化的块访问,否则是没有偏移地址的
PLC中的数据内容如下:
在监控表中将数据设置如下
41和42就是AB
63和64就是cd
Python编程
需要先安装snap7库
pip3 install python-snap7
完整代码如下
import snap7
import time
plc1 = snap7.client.Client()
plc1.connect('192.168.60.43', 0, 1)
print(f"connect: {plc1.get_connected()}")
for x in range(0, 10):
data = plc1.read_area(snap7.type.Areas.DB, 1, 0, 4)
print(data)
time.sleep(0.5)
plc1.disconnect()
代码说明:
plc1.connect('192.168.60.43', 0, 1)
192.168.60.43是PLC的IP地址,0和1是默认连接参数,用默认的就行
data = plc1.read_area(snap7.types.Areas.DB, 1, 0, 4) # 读取数据
将读取的数据存放到data,
括号内的参数:
snap7.types.Areas.DB 表示读取的是DB块
1 PLC中待访问的DB块的编号
0 数据的起始偏移地址,也就是图2中的偏移量
4 数据的长度,4字节
运行结果
连接状态:True
数据 ABcd 正常读出