python通过S7协议读取西门子200smart数据

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

发现网上很多关于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方法中,一般建议使用长连接,速度更快,
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值