Python-snap7 与s7-1200的通讯(读取DB块)

1.先去掉DB211优化块访问的勾

 

2.打开PLC连接机制,勾上允许来自远程对象的PUT/GET通信访问。

3.DB211数据监视界面

 

4.Python代码(读取来自PLC的DB211数据块的数据)

import snap7
from snap7 import util
# import struct

# 创建通讯客户端实例
plc = snap7.client.Client()

# 连接至PLC
plc.connect('192.168.8.20', 0, 1)              #plcObj.connect('PLC的IP', 0, 机架号(0或1))

# 读取数据
data = plc.db_read(211, 0, 264)              #data = plc.db_read(读取的哪一个DB块, 读取的起始地址(偏移量),读取的结束地址(偏移量))

# 关闭连接
plc.disconnect()

# python解析
print("开始解析数据")
# 解析bool
bool1 = util.get_bool(data, 0, 0)       #bool1 = util.get_bool(data, 0, 0)--》第0个字节段的第1个位,就是偏移量为0.0的bool量的值
bool2 = util.get_bool(data, 0, 1)       #bool1 = util.get_bool(data, 0, 1)--》第0个字节段的第2个位,就是偏移量为0.1的bool量的值
bool3 = util.get_bool(data, 0, 2)
bool4 = util.get_bool(data, 0, 3)
bool5 = util.get_bool(data, 0, 4)
bool6 = util.get_bool(data, 0, 5)
bool7 = util.get_bool(data, 0, 6)
bool8 = util.get_bool(data, 0, 7)

# 解析int
Int1 = util.get_int(data, 2)            #Int1 = util.get_int(data, 2)--》读取到的数据包date,解析偏移量为2.0开始长度为一个整型的数据

# 解析real
Real1 = util.get_real(data, 4)           #Real1 = util.get_real(data, 4)--》读取到的数据包date,解析偏移量为4.0开始长度为一个real型的数据


# 解析string
string1 = util.get_string(data, 8)       #string1 = util.get_string(data, 8)--》读取到的数据包date,解析偏移量为8.0开始长度为一个string型的数据

#将解析的bool量编成字典
bool_group = {"bool1:": bool1,
              "bool2:": bool2,
              "bool3:": bool3,
              "bool4:": bool4,
              "bool5:": bool5,
              "bool6:": bool6,
              "bool7:": bool7,
              "bool8:": bool8
              }
# 打印输出字典
print(bool_group)
# 打印输出整型
print("int:", Int1)
# 打印输出real型
print("real:", Real1)
# 打印输出字符串
print("string:", string1)




5.运行结果

开始解析数据
{'bool1:': True, 'bool2:': True, 'bool3:': False, 'bool4:': True, 'bool5:': True, 'bool6:': False, 'bool7:': False, 'bool8:': False}
int: 520
real: 13.140000343322754
string: Hello, boss!

进程已结束,退出代码0

  • 7
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值