python snap7 plc_Python-Snap7获取西门子PLC 300数值
说明
在一次数采项目中,对现场PLC300进行取数。本人小白,在网上搜罗了大量信息,终于找到解决方法。
准备事项
1. 操作系统
2.Python环境(本次使用Python3.6.6)
3.Snap7
connect
connect('192.168.0.1', rack=0,slot=1)
三个参数分别为:IP 地址,机架,插槽
read_area及write_area
函数
read_area(self,area,dbnumber,start,size)#读取数值
write_area(self,area,dbnumber,start,data) #写入数值(未测试)
参数area:
两个函数的核心都是对area进行读写操作,area用于区分I、Q、M、DB区域(西门子PLC中存储区有I、Q、M、DB、V区等等,本人为小白,此处不做具体了解),针对各个分区都有指定的值。具体如下:
'PE': 0x81, #input 输入区
'PA': 0x82, #output 输出区
'MK': 0x83, #bit memory 中间存储区(M区)
'DB': 0x84, #DB区
'CT': 0x1C, #counters
'TM': 0x1D, #Timers
参数dbnumber:
dbnumber只有在对DB块使用时才有用,默认设置为0。
备注:
此次项目以取DB区域数值为主,未做其它区域测试,在PLC中,有很多的DB块,每个块中,分别存储不同的信息,个人理解此处更类似于电脑中的硬盘分区,每个DB块是一个分区,PLC将指定的数值存储在指定硬盘分区中。
参数start:
例如取DB7.10地址上的值
start起始地址为10,即PLC中的偏移地址。
参数size:
size是选择读取的数据类型占用地址位的尺寸,即占几个地址,如下:
示例
获取DB7.46的REAL值:
import snap7
from snap7.util import *
from snap7.snap7types import *
PLC_obj=snap7.client.Client()
PLC_obj.connect('192.168.0.1',rack=0,slot=2)
Real_Value=PLC_obj.read_area(0x84,7,46,4)
get_real(Real_Value,0)
断开连接:
PLC_obj.disconnect()
备注
在获取S7WLByte数值时,需要使用get_int来获取数值,但是在获取数值时,会提示以下错误:
>>> Real_Value=PLC_obj.read_area(0x84,7,0,1)
>>> get_int(Real_Value,0)
Traceback (most recent call last):
File "", line 1, in
File "/usr/local/software/Python3.6.6/lib/python3.6/site-packages/snap7/util.py", line 149, in get_int
data[1] = data[1] & 0xff
IndexError: bytearray index out of range
解决方法:
提高get_area的尺寸长度,但是获取到的数值和实际数值不符,需要在获取到的数值的基础上除以256,才是实际的数值。
>>> Real_Value=PLC_obj.read_area(0x84,7,0,25)
>>> get_int(Real_Value,0)
3859
参考资料
二〇二〇年四月十四日 10:27:09
python snap7 plc_Python-Snap7获取西门子PLC 300数值相关推荐
- .net通过S7.net读写西门子PLC中,字符串,bool,整数,小数及byte型
注:.net中通过TCP/IP方式通过S7.net.dll动态库,连接到西门子PLC,西门子程序中许勾选优化块,程序读取需要 db块号+偏移量 一.使用VS项目,在项目中添加S7.net动态库 代码中 ...
- python连接plc_Python与PLC踩坑实录:成功解决西门子 PLC S7-200_SMART与PC连接时不能同时用Python的snap7包和step7软件同时连接...
解决西门子 PLC S7-200_SMART与PC连接时不能同时用Python的snap7包和step7软件同时连接 问题描述 在与西门子 PLC(型号S7-200_SMART)进行Python编程操 ...
- 如何使用 Python 构建 西门子PLC Snap7通信
如何使用 Python 构建西门子 PLC Snap7通信 PLC(Programmable Logic Controller)即可编程逻辑控制器,可以理解为一个微型计算机,广泛应用于工业控制领域中, ...
- jetson nano上编译与使用西门子PLC通讯库snap7
文章目录 一.西门子snap7介绍 二.西门子S7通讯介绍 三.jetson nano编译snap7库 四.Qt Cmake导入snap7库 五.snap7主要函数说明 1.与PLC建立连接 2.读写 ...
- 信捷plc485通信上位机_基于Snap7实现与西门子PLC通信
如果你对西门子PLC通信或者上位机开发稍微有一点研究的话,应该对Snap7有所耳闻. Snap7是一个基于以太网与西门子S7系列PLC通信的开源库,在世界领域应用很广.但也许是因为资料比较少,而且很多 ...
- C# Snap7 实现对西门子PLC的读写(本篇主要对系统诊断缓存区(SSL或SZL)内容进行读取)
Snap 7 使用C# 实现对西门子PLC的读写 摘要: 本篇主要针对PLC的错误日志进行操作,此目的是方便在没有电气工程师在现场的情况下 快速定位错误位置,帮助节约ShoutDown 时间 提升企业 ...
- snap7通过NetToPLCsim工具接入模拟西门子PLC S7-1200步骤简介
概述 本文主要是设备通过S7协议接入西门子PLC S7-XXXX系列的开发使用文档,主要包括西门子PLC组态工具博途V15,PLC模拟工具S7-PLCSIM,IP地址映射工具NetToPLCsim等使 ...
- python与西门子PLC通讯
python与西门子PLC通讯 安装Python-snap7 win+R打开"运行",输入cmd,确定后,进入DOS命令行终端,输入下面的命令: pip install pytho ...
- 用python编写西门子plc程序_snap7读写西门子plc1200步骤(python)
本文是利用snap7进行对plc1200进行读写,所用语言是python3,windows7下,plc具体型号为S7-1212DC/DC/DC 1.snap7安装 win+R打开运行串口,输入cmd, ...
- plc编程和python的联系_通过Python与西门子PLC通信
供大家想要与西门子PLC通信的朋友使用 1.该程序是通过python snap7连接西门子1200.1500系列PLC并按照I.Q.M区采集打印信息: 2.用户打开应用程序之前,要将目录下的snap7 ...
最新文章
- javascript中console的用法
- oracle经常使用函数(1)
- 大数据之父_大新闻!Python 之父重新出山,加入微软开发部
- python代码画图案-python如何绘制iPhone手机图案?(代码示例)
- 手机用appnium,web自动化用eclips+webdriver2
- 四节传送带plc梯形图_自动控制系统的大脑--PLC
- 枚举(enum)类型
- sweetalert插件的使用
- PHP 修改配置文件后重启命名
- mysql未监控在3306_监控MySQL或Web服务是否正常
- 通过cmd修改注册表并设置cmd窗口的大小
- SVM支持向量和逻辑回归的decision_function用法详解
- redhat 5安装mysql_如何在redhat linux advancex 上安装mysql5
- 【第一期】电商分布式前沿springboot接口服务之配置-Array-专题视频课程
- 【网络基础】以太网电缆:UTP和STP,直连线和交叉线,网线类别
- pdf转换html表格没了,PDF转HTML后,表格排版全乱了是怎么回事?
- 计算机台式硬件排名,台式机主板什么牌子好?台式电脑主板品牌排行榜前十名(2)...
- Round 1—数据结构基本概念
- 传统企业怎么通过抖音引流到微信
- WPS关闭不了后台一直运行的解决办法(wpscloudsvr.exe)
热门文章
- 为什么使用一个变频器控制多个电机?
- linux 开机logo制作工具,linux开机logo制作
- wps office有计算机应用吗,wps office
- python下载快手视频教程_[小玩意] 用Python写了个下载快手视频的小脚本
- [学习]啦啦外卖定位修复,商家经纬度保存修复
- 计算机打字速录,速录员打字口诀有哪些
- Tensorrt-caffee模型tensorrt部署教程
- CSDN博客新手引导手册
- python全套视频迅雷下载_[全套视频] 老王Python基础,进阶,项目篇(无KEY完整版) 视频教程 15G...
- PDFcrack暴力破解pdf密码