发现网上很多关于python通过s7协议控制200smart的代码都失败,我猜应该是版本的问题。自己捣鼓了半天,终于测试成功
from snap7 import util,client
my_plc = client.Client() #建立一个客户端对象
my_plc.set_connection_type(3) #如果是200smart,必须有此段代码。1200,1500可以不写。
my_plc.connect("192.168.11.9",0,1) #连接plc,参数分别为ip ,卡号,槽号。200smart为0和1
state=my_plc.get_connected() #用来判读是否连接成功 返回值为true 和false
# print(state)
#注意,这里的参数有坑,最新的sanp7协议是这样写,后面1代表V区,0代表起始地址,10代表字节数量
#注意,这里0对应VB0,1对应vb1以此类推。
data=my_plc.read_area(client.Areas.DB,1,0,10)
my_data = util.get_byte(data,5)
m=util.get_word(data,0) #相当于vw0
m2=util.get_word(data,2) #相当于vw2
m3=util.get_word(data,4) #相当于vw4
m4=util.get_word(data,6) #相当于vw6
print(m)
print(m2)
print(m3)
print(m4)
my_plc.disconnect() #断开连接
my_plc.destroy() #销毁客户端对象
未完,待续。。。。。。