通过Snap7与 LOGO!8PLC通信

article/2025/7/16 19:30:31

前言

因一项目需要web控制LOGO! PLC,利用西门子自带的免费LOGO!8.2 Web Editor工具可以很完美的做web页面开发。可以参考视频教程。此外西门子还提供数据导出到excel工具——LOGO8.2 Access Tool。

上面两款工具虽然使用起来非常便捷,但还是想结合Snap7、树莓派、Python做一个简单的动态web页面。

由于LOGO!PLC通讯方式与1200 1500PLC完全不同,有很多坑。

PLC 控制逻辑为:
M1=0时,泵Q1启动;而M1=1时,泵Q1关闭。
M2=0时,阀门Q2打开;M2=1时,手阀门Q2关闭。
当NI1=1时,阀门Q3打开,NI1=0时,阀门Q3关闭。
注意:数字量输入LOGO不可以远程更改;NI表示网络输入。

本文仅仅是个人经验总结,并一步步详细记录snap7获取和写入数据的步骤。snap7获取数据后的web页面可以用python flask或php等实现,就不再介绍。

硬件

Logo! PLC: 西门子6ED1052-1MD08-0BAD(8.FS4 固件版本号1.82.01 )

软件

西门子LOGO! 编程软件:LOGO!8.2 Soft Comfort
Python: 3.7.4
Snap7:1.42
python-snap7:0.10

主要参考

1)http://www.ad.siemens.com.cn/club/bbs/post_one_floor.aspx?b_id=28&a_id=1481079
2)https://cache.industry.siemens.com/dl/files/852/109768852/att_990439/v1/Help_zh-CHS.pdf?download=true
3)http://www.ad.siemens.com.cn/productportal/prods/logo/8_communication/Erthenet/S7/logo_1200_S7_logo_client/logo_1200_S7_logo_client.html
4)http://snap7.sourceforge.net/logo.html

PLC编程

新建网路项目

1) 在logo! Soft Comfot中选择工具-》设置,将编辑器变为成LAD和语言可以改为中文状态
在这里插入图片描述
2) 新建项目,需要选择网路项目(NWP)
3)添加新设备,注意IP地址和网关

在这里插入图片描述

编程

在电路图编辑器中编程(这与1200,200 PLC非常不同,刚开始接触比较难懂)
在这里插入图片描述
其中网路输入NI1为V0.0.
在这里插入图片描述

本地连接

1)Logo设置IP地址为192.168.0.3
2)设置本地连接网路属性
在这里插入图片描述

下载

1)点击工具栏上的下载按钮
2)选择连接方式
3)测试是否可以连接通过
4)刷获取连接信息
5)确定

在这里插入图片描述

监控调试

1)下载完成程序后,泵Q1和阀门Q2自动开启(可以听到继电器吸合声音)
2)点击电路图编辑器中的在线测试图标在这里插入图片描述
在这里插入图片描述
可以发现M1和M2为灰色,Q1和Q2为黄色亮灯状态,Q3为灰色。表明程序运行正常
3)点击指示灯右侧最后一个图标(数据表)
在这里插入图片描述
4)编辑数据监控表
如下图填写数据表
在这里插入图片描述
从上图中可以看出QB0的实际二进制值为0000 0011,即泵Q1和阀门Q2都是开启状态,而QB1和QB2均为00000000,QB3输入不了,这是我们需要特别注意——LOGOPLC数据存取方式。

4)修改M1值使得泵Q1关闭
MB0赋予新值为1
结果如下:
在这里插入图片描述
5)M2强制赋值为1
在M1为1基础上强制M2为1,因为M1实际存储在M0.0(M0字节中的0号位),而M2存储在M0.1(M0字节中的1号位),所以对应的M0二进制位0000 0011,即数值为3.
在这里插入图片描述
5)修改网络输入值NI1
直接在V0.0赋予新值为1即可。
在这里插入图片描述

LOGO!VM映射

LOGO! VM数据存储方式比较奇特。
其数据类型有:
I数字量输入;AI模拟量输入;Q数字量输出;M:M标志位;V变量位存储器;VW变量字存储器;AQ模拟量输出;AM模拟量M标志位。
利用S7通信时需要用到VM映射,详细介绍见LOGO!Soft Comfort在线帮助手册。

VM地址和数据类型

在这里插入图片描述

I/O 与 LOGO! 0BA8 VM对应关系

在这里插入图片描述

LOGO! 与 S7通过 VM 地址分享数据

在这里插入图片描述
LOGO! 主机模块也可通过 VM 地址(991 至 1002)与 SIEMENS SIMATIC S7/Modbus
兼容设备及 HMI 设备共享时间和日期信息。
在这里插入图片描述在这里插入图片描述

监控测试VM区

1)对泵Q1启动M1标志位和阀门Q2启动标志位M2的VM修改,根据VM和I/O对应表,M起始位置为1104,故只需在“数据表中”输入VB1104,选择二进制数据类型,此时数值为2#0000 0011

在这里插入图片描述
将其赋予新值为0(M1、M2均为0)或1(M1为1,M2为0)或2(M1为0,M2为1)
① VB1104为0时
在这里插入图片描述
②VB1104为1时
在这里插入图片描述
③VB1104为2时
在这里插入图片描述

2)NI1网络输入值得修改
NI网络输入块类型对应的VM地址1246-1261。

NI1强制为0,具体如下图。
在这里插入图片描述
注意:这里VB1246为红色表明这个地址没有激活或者赋值,而我们在网路输入设置时试将NT1保持到V0.0中,所以用VB0。

Snap7读写数据

S7连接设置

S7连接设置折腾了很久,具体参考以下链接或文本:
1)softComfort 说明书2.8。5.37
2)http://snap7.sourceforge.net/logo.html
3)http://www.ad.siemens.com.cn/club/bbs/post_one_floor.aspx?b_id=28&a_id=1481079
4)http://www.ad.siemens.com.cn/productportal/prods/logo/8_communication/Erthenet/S7/logo_1200_S7_logo_client/logo_1200_S7_logo_client.html
才略知一二。
1)在网路视图中的logoPLC上点击右键
2)选择添加客户端连接中的S7连接
在这里插入图片描述
3)在服务器端填写IP地址和TSAP值
其中若编程电脑作为服务器,IP地址为本机的(例如192.168.0.10);TSAP:03.00(TSAP是通信连接地址)。
在这里插入图片描述
4)填写传输数据
备注说明:Snap7读取时可以不用写传输数据表。下面操作均没有填写此表。

5)重新下载程序

Snap7连接PLC

在这里插入图片描述
这与Snap7官方输入方式不同,而且按照官方输入不能成功,非常感谢cen827在西门子论坛提供的解决方法。

读取PLC值

Snap7 读取PLC各块值编号如下:
在这里插入图片描述

1)读取Q1,Q2,Q3值
①QB区读取
在这里插入图片描述
②DB区读取
在这里插入图片描述
对比实际值,完全一致(二进制11就是十进制3)。
在这里插入图片描述
2)读取M位
将阀门Q2标志位M2赋予新值为1,即MB0=2#0000 0010
在这里插入图片描述
获取值如下图:
在这里插入图片描述

写入PLC值

注意:
①LOGO!PLC中数字量输入DI是不能被写入,
②当外部强制赋值时,可能不会改变是因为程序原因,即修改后,程序在下一个周期马上复位到原来值,不是没有修改成功。

1)将M2赋值为0,M0赋值为1,即MB0值由2#0000 0010变为为2#00001
初始值:
在这里插入图片描述
写入
在这里插入图片描述
结果
在这里插入图片描述

2)通过VM数据块写入

将阀门Q3网络输入NI1赋值为1
未赋值前状态图:
在这里插入图片描述
写入
在这里插入图片描述
运行结果
在这里插入图片描述

总结

Snap7连接LOGO! PLC主要步骤:
1)设置S7连接IP地址和通信连接地址TSAP
2)参数VM,Q,M变量变量范围,尤其是VM地址范围
3)读取最小的都是一个字节不是一个位,读取和赋值时都需要进行相应的处理


http://chatgpt.dhexx.cn/article/EAvkJH7P.shtml

相关文章

python使用Snap7读写西门子S7系列PLC

python使用Snap7读写西门子S7系列PLC 1.简介 Snap7 Snap7是一个基于s7通信协议的开源软件包,作者是Davide Nardella,该软件包封装了S7通信的底层协议,可使用普通电脑通过编程与西门子S7系列PLC进行通信 Snap7三大对象组件:客户…

jetson nano上编译与使用西门子PLC通讯库snap7

文章目录 一.西门子snap7介绍二.西门子S7通讯介绍三.jetson nano编译snap7库四.Qt Cmake导入snap7库五.snap7主要函数说明1.与PLC建立连接2.读写PA区变量3.读写MK区变量 六.通讯程序示例 一.西门子snap7介绍 官网:https://snap7.sourceforge.net/ Snap7 是一个基于…

Python-snap7 安装和测试

本文章记录Python-snap7零基础的安装和测试过程。 1 部件和软件 硬件: 1)S7-1500 CUP 1511-1 PN(6ES7511-1AK02-0AB0) 2)SD存储卡 4M(6ES7 954-8LC03-0AA0) 3)220V AC 转 24V DC 电…

SNAP7 C++ 通讯

静态调用的dll的一个实例 2017年11月17日 09:49:18 净无邪 阅读数:334 版权声明:本文为博主原创文章,欢迎各位朋友转载。转载时,保留链接地址! https://blog.csdn.net/naibozhuan3744/article/details/78557761 本实…

Qt5调用Snap7

Snap7是一个与西门子PLC通信的开源库, 在网上下载了一个例子, 研究了一天终于通信成功了, 在此记录一下 项目文件 win32:LIBS C:\Qt\Qt5.7.0\Tools\mingw530_32\i686-w64-mingw32\lib\libws2_32.a win32:LIBS C:\Qt\Qt5.7.0\Tools\mingw530_32\i686-w64-mingw32\lib\libwin…

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_ar…

python-snap7的安装记录

python-snap7的安装记录-windows(仅供个人备忘) 首先 pip install python-snap7其次安装包再然后是环境变量最后是测试 网上其他人的资料尝试上去总感觉不靠谱,很多内容不是一篇网上的文章就能解决(不是这里不对就是那里看不懂&am…

snap7

The Snap7 theatre (剧场、讲堂) The purpose of Snap7 is to fully integrate your PC station into a PLC network, without anybody sees the difference. To allow this, the Snap7 theater must be the same as the Siemens and contain the same actors. Snap7 library…

Python基于Snap7与PLC建立连接并读写数据

最近偶尔在网上看到可以用Python通过snap7与PLC建立连接并读写数据,好多小伙伴没有现成的PLC,这里介绍一个电脑模拟PLC与python通讯。效果与实际情况一样的。这里是以SIEMENS的PLC为例,通过Pycharm与TIA V17建立连接,对其DB块、M区、Q区、I区…

snap7通过NetToPLCsim工具接入模拟西门子PLC S7-1200步骤简介

概述 本文主要是设备通过S7协议接入西门子PLC S7-XXXX系列的开发使用文档,主要包括西门子PLC组态工具博途V15,PLC模拟工具S7-PLCSIM,IP地址映射工具NetToPLCsim等使用使用说明,S7协议的编译及使用说明等; 1 开发工具之间的关系 仿…

基于Snap7实现与西门子PLC通信

​如果你对西门子PLC通信或者上位机开发稍微有一点研究的话,应该对Snap7有所耳闻。 Snap7是一个基于以太网与西门子S7系列PLC通信的开源库,在世界领域应用很广。但也许是因为资料比较少,而且很多都是纯英文,在国内反而没有大规模…

c++ snap7通信vs环境配置与编程入门

前言:作者基本为电脑桌面软件开发小白,搜索网上的教程中踩了不少坑,在此整理分享最基础的vs环境下c开发snap7应用环境搭建,完成第一条snap7与PLC成功通信。 准备工作 Visual Studio 2013 及以后版本(以下简称vs&…

Python使用python-snap7实现西门子PLC通讯

Python简介 Python是开源的高级编程语言之一,广泛应用于人工智能、数据分析、爬虫等领域。由于它拥有大量的开源库和标准库,以及简单且贴近自然语言的语法,所以即便是从未接触过编程的人,也能快速上手。2021年10月,Py…

手把手教你强化学习 (三)马尔可夫决策过程与贝尔曼方程

马尔可夫决策过程 (Markov Decision Process,MDP)是序贯决策(sequential decision)的数学模型,一般用于具备马尔可夫性的环境中。最早的研究可以追溯到最优控制 (optimal control)问题上,1957年,美国学者Richard Bellman通过离散随…

数学建模,8月学习感想

数学建模概览 Matlab入门常用的操作指令数据类型 建模流程分析问题建立模型&求解模型数据建模技术优化技术连续模型求解评价模型求解机理建模方法 撰写论文前情提示正文部分配套说明排版工具 写在最后 长文预警!!! Matlab入门 Matlab可谓…

「从零入门数据分析」01_ 数据分析概述

作者 | gongyouliu 编辑 | auroral-L 本篇文章共8628字,预计阅读时间35分钟。 大家好,我是强哥。一个热爱暴走、读书、写作的人! 本章目录 一、数据分析的发展简史 二、数据分析的应用场景 三、常用的数据分析工具与技术 四、数据分析的思维…

数学建模心得分享(校赛)——2021.6.7

一、个人感受 总结为:找队友->讲方法->找知识->善讨论->勤实践 基础能力(个人见解): 第一次比赛完,还有这刚刚实习完的余温,工作中的思维的惯性还时刻在影响着我,身边的人几乎都为了自己的生活而奋斗。有幸…

matlab在管理学中的应用简述【一】

1、问题研究与描述 1.1 问题与模型 (1)问题 问题与人们的日常生活和工作有着密切的联系,人们每天都要面对各种各样的问题需要处理和解决。 如:资源配置问题,救灾抢险问题,时间安排问题,生产组…

大数据和人工智能属于什么专业 - 学大数据和人工智能出来做什么

人工智能专业主要从事什么工作? 1、算法工程师。进行人工智能相关前沿算法的研究,包括机器学习、知识应用、智能决策等技术的应用。以机器学习的过程为例,涉及到数据收集、数据整理、算法设计、算法训练、算法验证、算法应用等步骤&#xff0…

方差分析 anova一般指方差分析

方差分析(Analysis of Variance,简称ANOVA),又称“ 变异数分析”或“F检验”,是R.A.Fisher发明的,用于两个及两个以上 样本均数差别的 显著性检验。 由于各种因素的影响,研究所得的数据呈现波动状。造成波动的原因可分成两类,一是不可控的随机因素,另一是研究中施加的对…