发现网上很多关于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() #销毁客户端对象


from HslCommunication import SiemensS7Net
from HslCommunication import SiemensPLCS
#bool read write test
def printReadResult(result):
if result.IsSuccess:
print(result.Connect)
else:
print('failed'+result.Message)
def printWriteReslut(result):
if result.IsSuccess:
print('sucess')
else:
print('failed' + result.Message)
if __name__ == '__main__':
siemens = SiemensS7Net(SiemensPLCS.S200Smart,'192.168.12.10')
# '''连接服务器,也可放在窗口的Load方法中,一般建议使用长连接,速度更快,

文章讲述了如何使用Python的Snap7库和HslCommunication库通过S7协议成功连接并控制Siemens200SMARTPLC,包括连接设置、数据读写和错误处理的示例。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



