Python使用snap7库进行采集S7协议通信

S7协议介绍

Snap7是一个用于处理S7以太网协议,与西门子S7系列PLC通讯的开源通讯组件。支持与S7-200、S7-200 Smart、S7-300、S7-400、S7-1200以及S7-1500的以太网通信。

环境准备

1. 安装开源库python-snap;

pip install python-snap7

2. Python版本python3.6;

代码实现

1. snap7库简单介绍

snap7库主要通过read_area和write_area两个函数实现对PLC数据的读写;
snap7中有专门的方法读取数据。

读取M位存储区数据:

读取存储区数据的编号:
areas = ADict({'PE': 0x81,'PA': 0x82,'MK': 0x83,'DB': 0x84,'CT': 0x1C,'TM': 0x1D,
})
读数据;
read_area(area,dbnumber,start,size)
area:area参数用于区分I、Q、M、DB存储区:
dnumber:0
start:起始地址
size:读取长度

在snap7中加入PLC使用的是PE那就在代码中使用的是‘0x81’的编码

例:read_area(0x84, 100, 0, 0)

通过S7采集的数据返回的数据是 byteorder类型,所以如果需要变成自己能用的数据还需要转下格式。

2. 完整的代码

import snap7
from snap7.util import *  # 对位操作的函数要导入该库
import time
import jsonclient = snap7.client.Client()
# IP地址,机架,槽位
client.connect('10.0.11.241', 0, 1)
# 测试是否通讯成功
if client.get_connected():print('连接成功')
else:print('连接失败')def cj_s7():while True:cj0 = client.read_area(0x84, 100, 0, 2)cj1 = client.read_area(0x84, 100, 1, 2)cj_time = time.time()log_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())print("数据解析结果点位1:"+cj0)print("数据解析结果点位2:"+cj1)time.sleep(1)#等待一秒,一秒一个的获取数据#有必要的情况下可以创建个多线程
def xc():# 创建线程thread_hi = cj_s7()# 启动线程thread_hi.start()print('Main thread has ended!')if __name__ == '__main__':xc()

总结

s7协议我也是刚开始接触,所以很多地方也有需要完善学习的地方,希望有个老师能来指导指导下。
谢谢,可以留下或私聊下联系方式:

工业采集S7协议 python通过S7协议通信相关推荐

  1. 工业采集网关实现PLC数据采集

    工业采集网关也叫工业物联网网关,主要负责对工业数据进行采集,将前端传感器的协议进行统一的转换,使之能够进行传输的一款物联网设备,在物联网行业上应用十分的广泛.提供有RS485.RS232接口,供各类采 ...

  2. 史上最全网络通讯(IIOT、工业控制、5G、区块链)协议全景图

    ​ 写在前面 大家好,我是小智,智能制造之家号主~ 工业物联网浪潮的到来,IT.OT与CT技术之间联系越来越紧密,我们在完成各种ERP.PLM.MES/MOM.SCADA.DCS以及工业自动化项目的时 ...

  3. 用html通过python调用mysql_HTTP协议与使用Python获取数据并写入MySQL

    一.Http协议 二.Https协议 三.使用Python获取数据 (1)urlib (2)GET请求 (3)POST请求 四.爬取豆瓣电影实战 1.思路 (1)在浏览器中输入https://movi ...

  4. Python中的端口协议之基于UDP协议的通信传输

    阅读目录 UDP协议: 1.python中基于udp协议的客户端与服务端通信简单过程实现 2.udp协议的一些特点(与tcp协议的比较) 3.利用socketserver模块实现udp传输协议的并发通 ...

  5. 通过python基于netconf协议获取网络中网元的配置数据,助力企业网络控制自动化轻松实现!

    摘要:在当今信息化时代,大多数企业都需要网络支撑企业的ICT运行,提升企业运行效率,针对企业网络中的网元设备(包括交换机,路由器,防火墙等),很多企业希望根据自身的业务特点定制网络管理,比如可以实现网 ...

  6. 从入门到入土:基于Python采用TCP协议实现通信功能的程序

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  7. python 下载文件-Python实现HTTP协议下的文件下载方法总结

    本文介绍了几种常用的python下载文件的方法,具体使用到了htttplib2,urllib等包,希望对大家有帮忙. 1.简单文件下载 使用htttplib2,具体代码如下: h = httplib2 ...

  8. python应用系列教程——python使用smtp协议发送邮件:html文本邮件、图片邮件、文件附件邮件

    全栈工程师开发手册 (作者:栾鹏) python教程全解 python使用smtp协议发送电子邮件.包含发送html文本邮件.包含图片附件的邮件,包含其他文件附件的邮件.可设置邮件的收发人,主题,内容 ...

  9. Python通过MQTT协议上传物联网数据给ThingsBoard

    第一步: 用租户账号登录,配置ThingsBoard 设备,使用MQTT协议 第二步: 参考这篇文章,使用MQTT客户端 发消息给ThingsBoard 主要是一个username的参数 第三步: 使 ...

最新文章

  1. leetcode669. 修剪二叉搜索树
  2. C#/.Net操作MongoDBHelper类
  3. 漫画丨那些年,我们一起被毁过的“三观”…
  4. android item 点击 获取position,Android ListView 子控件onClick正确获取position的方法
  5. 业务线开发流程图(四)
  6. java图书管理系统个人总结_总结:JAVA小项目——图书管理系统
  7. python音频转文字腾讯_Python生成腾讯云实时音视频的UserSig签名
  8. 林彪-怎样当好一名师长
  9. Spark写入Hudi报分区列乱码问题java.net.URISyntaxException: Illegal character in path at index 46:
  10. 74HC595原理图”中“ RCLK SRCLK SRCLR”是什么意思
  11. indesign怎么查找拼音_Indesign中怎么给汉字加拼音
  12. 千锋python培训机构可靠吗
  13. 51nod 1428 贪心
  14. 秦羽接引的鸿蒙第四人,星辰变:秦羽用过的法宝一件比一件厉害,最后一件直接逆天改命!...
  15. bzoj 4318 osu 【三次方问题】【dp】
  16. 二十岁决定男人的一生
  17. SpringBoot(45) 实现快递物流查询(阿里云)
  18. HEVC解码器HM源码阅读(一)介绍
  19. netcat工具安装
  20. 深入理解搜索引擎-搜索召回

热门文章

  1. Windows显示进程路径
  2. 基于AD的数字钟的设计和multisim仿真
  3. 排序算法 | 快速排序算法原理及实现和优化(一)
  4. 国密算法sm3java软实现_国密算法实现
  5. Web前端——HTML基础
  6. python语言的第三方库_常用的Python第三方库
  7. 分布式医疗云平台(项目功能简介截图)【系统管理(科室管理、用户管理、角色管理、菜单管理 、字典管理、通知公告管理 、检查费用设置、挂号费用设置 )】】(四)-全面详解(学习总结---从入门到深化)
  8. 社区智慧路灯:基于社区智慧灯杆的老旧小区改造(智慧社区)项目系统解决方案分析
  9. 逍遥花主、神蚕九变、玉蚌仙珠三部武侠小说
  10. 白蛋白纳米粒是一种较好的药物载体|白蛋白普萘洛尔人血清白蛋白HSA纳米粒|的帕西瑞肽牛血清白蛋白BSA纳米粒