python 通过 Snap7 与 PLC 实现数据通信
目录
- PLC配置
- IP地址设置
- 关闭PLC数据保护
- 开启访问权限
- 电脑配置
- 配置本机IP地址
- 安装python-snap7
- snap7.dll库移植
- PLC数据块区域定义
- PLC数据格式
- 程序注解
- 备注
PLC配置
此文章以西门子PLC S7-1200为例。
IP地址设置
关闭PLC数据保护
需要关闭数据块的优化访问选项。所有需要访问的数据块都得开启,否则程序会报错。
开启访问权限
需要开启访问所有权限,否则程序连接会报错。
电脑配置
配置本机IP地址
由于PLC的通讯地址是192.168.0.1,需要将本机的IP地址与PLC设置在同一网段,博主设置为192.168.0.123。
可以通过命令行窗口输入ping 192.168.0.1来确认是否寻找到PLC。
安装python-snap7
需要安装支持库snap7,在命令行窗口输入 pip install python-snap7。
snap7.dll库移植
如果只是安装python-snap7库还是无法正常运行,需要将dll文件放置到相应的目录下。步骤如下:
1.下载dll连接:snap7-SDK(这里的压缩包内有32位和64的dll,还有一个简单的demo程序)
2.如果使用的python是32位(64位)的编译环境就将压缩包内win32(win64)文件里面的snap7.dll文件拷贝至==C:\Windows\System32(C:\Windows\SysWOW64)==目录下。
3.利用网线将电脑与PLC连接,然后运行demo程序即可读取到PLC相应里相应数据。
PLC数据块区域定义
Value | Mean | |
---|---|---|
S7 Area PE | 0x81 | Process Inputs |
S7 Area PA | 0x82 | Process Outputs |
S7 Area MK | 0x83 | Merkers |
S7 Area DB | 0x84 | DB |
S7 Area CT | 0x1C | Counters |
S7 Area TM | 0x1D | Timers |
PLC数据格式
程序注解
def readDI(self):area = S7AreaPEdb = 0start = 0amount = 2ba = self.client.read_area(area, db, start, amount)d = ba[0]d <<= 8d |= ba[1]return d
def writeDQ(self, data):area = S7AreaPAdb = 0start = 0amount = 2ba = bytearray(amount)ba[1] = data & 0xffba[0] = data >> 8self.client.write_area(area, db, start, ba)
由于是以西门子PLC为演示,所以此处的数据读取到的是小端字节的格式(即按内存增大的方向存储,低位在前高位在后)。如果是三菱的PLC则是大端字节的格式。
备注
1.如果需要读取相应的PLC数据,需要与PLC开发者协商,让其提供所需数据所在的数据区域以及数据类型。
2.请确保安全下调试PLC,否则可能输入错误数据导致PLC所控制的系统崩溃或者出现严重事故。
3.西门子S200由于过时,存在V区,而当前接口没有V区地址,需要PLC开发者将相应V区数据挪移到M区即可。
python 通过 Snap7 与 PLC 实现数据通信相关推荐
- 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_利用Python构建电脑和PLC通信的方法
PLC(Programmable Logic Controller)即可编程逻辑控制器,可以理解为一个微型计算机,广泛应用于工业控制领域中,包括楼宇智控.精密机床.汽车电子等等. 随着物联网的兴起,越 ...
- 测试Snap7连接PLC
#!/bin/python #encoding=utf8 from tkinter import * import snap7 from functools import reduceclass Wi ...
- python和台达plc通讯_项目实战:Qt西门子PLC通讯调试和模拟工具(包含PLC上位机通讯,PLC服务器)...
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/110071837 各位读者,知识无穷而人力有穷 ...
- 在VS中配置snap7并用snap7与PLC通信
前言 之前实验室的小车使用OPC与上位机通信,但由于年代已久,师兄们写的代码已看不懂加上OPC配置比较麻烦,故现在现在采用snap7进行开发. snap7介绍 Snap7是一个基于以太网与西门子S7系 ...
- python和台达plc通讯_台达PLC通信协议ModbusASCII(DVP)
- 精品文档 - - 精品 - 台达 PLC 通信协议 ModbusASCII(DVP) 编撰:李浩特 日期: 2013/11/12 版本: Ver:3.2 例 1 :读 D0 (地址为 1000H ...
- python和台达plc通讯_台达PLC通信协议ModbusASCIIDVP
台达 PLC 通信协议 ModbusASCIIDVP 台达 PLC 通信协议 ModbusASCII(DVP) 编撰 : 李浩特 日期 :2013/11/12 版本 :Ver:3 . 2 例 1: 读 ...
- python通过opc读plc实例_OPC通讯实例(C#通过OPC连接PLC读写数据)
[实例简介]C#通过OPC连接PLC读写数据 [实例截图] [核心代码] using System; using System.Collections.Generic; using System.Co ...
- python和台达plc通讯_(完整)台达PLC通信协议ModbusASCII(DVP)
编撰:李浩特 日期: 2013/11/12 版本: Ver:3.2 1 台达 PLC 通信协议 ModbusASCII(DVP) 编撰:李浩特 日期: 2013/11/12 版本: Ver:3.2 例 ...
最新文章
- 如何网络监测其他计算机关闭445端口,关闭445端口的方法,教您电脑如何关闭445端口...
- hdu2068RPG的错排
- 公司虚拟化平台VMware vCenter Server无法连接故障排查解决
- 淘宝网商品库优化实践访谈
- textrank4zh是_GitHub - renxiaowei941015/TextRank4ZH: 从中文文本中自动提取关键词和摘要...
- html嵌入原始数据,如何用html和javascript显示原始图像数据?
- npm查找全局安装包命令
- ASP.NET中插入Flash
- 机器学习:贝叶斯网络
- doc 问卷调查模板表_问卷调查表.doc
- python-opencv最大内切圆查找
- 测试人员的工作及介绍
- 彼得林奇PEG价值选股策略(附源码入口)
- [蓝桥杯]打水问题、夺宝奇兵、调手表(c++详解)
- 台式计算机usb口不能用,电脑USB接口没反应如何解决教程
- Light Emitting Hindenburg(bitset运用)
- 织梦html的网站地图怎么制作,网站地图如何制作?网站地图的制作与提交方法...
- 基于FPGA的视频图像拼接融合(附源码)。
- Android webview Input type=file 文件上传 解决方法
- Python AST node转为string(source code)