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

article/2025/7/17 1:38:25

​如果你对西门子PLC通信或者上位机开发稍微有一点研究的话,应该对Snap7有所耳闻。

Snap7是一个基于以太网与西门子S7系列PLC通信的开源库,在世界领域应用很广。但也许是因为资料比较少,而且很多都是纯英文,在国内反而没有大规模的应用。

作为一个技术开发人员,所有未知领域的事物都是值得探索的。于是花了一些时间,对Snap7做了一些研究,借此机会,给大家做一些分享,希望可以给对工作或学习中有这块需要的人,提供一些借鉴。

1. Snap7基础介绍

(1)Snap7作为一个世界级的开源库,有自己的官网:

http://snap7.sourceforge.net/

(2)大家如果需要Snap7的源码,可以去这里下载:https://sourceforge.net/projects/snap7/files/1.4.2/snap7-full-1.4.2.7z/download

(3)大家如果源码下载太慢或者下载不了,可以关注本公众号,发送关键词:Snap7源码

(4)Snap7主要用于将PC站点与PLC网路完全连接到一起,所以它具有三个对象组件,分别是客户端、服务器和协作者,这三个对象可以同时应用,下面这幅图描述了这三个对象之间的联系:

                                                                                     图表 1 Snap7整体框架

对于一般开发人员来说,Server和Partner模式是用不到的,我们主要用的是Client模式,即PLC作为Server,上位机PC作为Client。

1. Snap7源码分析

如果顺利的话,大家打开源码之后是可以运行的,找一个自己身边的西门子PLC进行通信功能测试,如果手头没有PLC,可以关注本公众号的一篇文章《手把手教你搭建西门子PLC仿真环境》。

如果大家看到源码,可以发现提供的snap7.net其实是对snap7.dll的二次封装,snap7.dll是一个C/C++写的类库,我们可以找到一些我们需要的方法。

                                                                                 图表 2建立PLC连接

 

                                                                                图表 3断开PLC连接

                                                                                图表 4存储区读取

                                                                                  图表 5存储区写入

                                                                                    图表 6读取多变量

                                                                                  图表 7写入多变量

但是这个snap7.net类封装的风格有些老外的风格,会导致我们使用起来很麻烦,于是我便对这个snap7.net做了进一步的封装:

                                                                                  图表 8建立及断开连接

                                                                              图表 9读取及写入多个字节

                                                                             图表 10读取及写入多个通信组

                                                                        图表 11读取及写入多个通信变量

                                                                             图表 12读取及写入单个变量

通过这些封装,会将snap7.net里晦涩难懂的方法变成我们自己熟悉的方式,这样,我们自己做开发的时候,会更加方便和高效,这里值得注意的是西门子S7协议通信会有PDU及通信组数量的限制,一般来说PDU限制是220个字节,通信组数量限制是20个,也就意味着一次性只能读取220个字节,并且最多只能同时读取20个通信组。

3. 通信测试

通信库编写完成之后,通过TIA V15 + PLCSIM + NETTOPLCISM搭建了一个S7-1500PLC的仿真环境,用于通信测试。

                                                                              图表 13西门子仿真环境

基于封装的通信库开发了一个简单的测试平台,分别于S7-200 Smart PLC及S7-1500进行了通信测试,测试结果如下:

                                                                         图表 14 S7-200 Smart PLC通信测试

                                                                        图表 15 S7-1500 PLC通信测试

                                                                                                抖音号↓

 


http://chatgpt.dhexx.cn/article/5wkeUmET.shtml

相关文章

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发明的,用于两个及两个以上 样本均数差别的 显著性检验。 由于各种因素的影响,研究所得的数据呈现波动状。造成波动的原因可分成两类,一是不可控的随机因素,另一是研究中施加的对…

继续无题

企业分为:决策层、管理层、执行层。 所以企业也会有:决策软件、管理软件、执行软件。 (1) 啥叫分析?分析就是根据现状,思考原因,这就是典型的归因:从现在往过去捋,这就叫…

数学建模经验分享及比赛时间汇总

一、浅谈数学建模1.1 什么是数学建模 先来看看官方的解释:数学建模是运用数学的语言和方法,通过抽象,简化建立能近似刻画“解决”实际问题的一种强有力的数学手段。数学建模就是用数学语言描述实际现象的过程。这里的实际现象既包涵具体的自然…

数模论文写作入门——正文篇

提示:数模论文写作入门还有“首页篇”和“排版篇”,可查看专栏补充。 目录 前言 一、问题重述 1、改词降重 水论文方法 2、 查阅相关背景资料 引用高大上 二、问题分析 三、模型假设 1.题目中明确给出假设条件 2.排除生活中小概率时间&#xff08…

SPSS统计分析过程包括描述性统计、均值比较、一般线性模型、相关分析、回归分析、对数线性模型、聚类分析、数据简化、生存分析、时间序列分析、多重响应等几大类...

https://www.zhihu.com/topic/19582125/top-answershttps://wenku.baidu.com/search?wordspss&ieutf-8&lm0&od0 SPSS 18.0由17个功能模组组成: Base System 基础程式 Advanced Models 高等统计模组(GEE/GLM/存活分析) Regression Models 进阶回归模组 …

数学建模论文写作

声明:本文为本人在b站学习清风数学建模的学习笔记 数学建模清风——论文写作方法教程(国赛和美赛) 文章目录 论文写作方法国赛摘要摘要的开头段摘要的中间段摘要的结尾段摘要中常见的废话完整摘要参考关键词 (正文部分&#xff09…

机器学习中的 Shapley 值怎么理解?

导语:在集体合作中,如何公平分配奖励? 图片来源:https://unsplash.com/photos/TL5Vy1IM-uA 我第一次听说 Shapley 值是在学习模型可解释性的时候。我知道了 SHAP,它是一个框架,可以更好地理解为什么机器学…

做数据分析如何从囚徒困境到合作的进化

小飞象交流会 即使拿到一手烂牌,也要打出一串王炸。这是场无限游戏,努力成为牌桌上最后一名玩家。 内部交流│7期 做数据分析如何 从囚徒困境到合作的进化 data analysis ●●●● 分享人:周海鹏 ‍ ‍‍ 在推进业务线各种项目的过程中&#…

博弈论学习(二)——完全信息静态博弈

这一篇主要介绍非合作博弈中,完全信息静态博弈的相关知识。 切记非合作博弈的条件:参与人具有足够智力且极端个人主义,即以自己的效用作为唯一的衡量标准。 要理解完全信息静态博弈,首先要了解以下2个概念: 完全信息…

Nabla算子

Nabla算子的定义: 梯度: 散度: 旋度:

Marr-Hildreth边缘检测器

用于边缘检测的算子应该有两个显著的特点: 1.它应该能够计算图中每一个点处的一阶导数或者二阶导数的数字近似的微分算子。 2.它能够被“调整”以便在任何期望的尺寸上其作用。因此,大的算子也可以用于检测模糊边缘,小的算子可以用来检测锐度…

5-3-BP神经网络

文章目录 引入名词BP神经网络NaN独热码Nabla算子 1神经网络1.1 神经元模型1.2 神经元激活函数1.2.1 为什么要使用激活函数?1.2.2为什么激活函数需要非线性函数?1.2.3常用的激活函数sigmoid 激活函数tanh激活函数Relu激活函数 1.3 神经网络结构 2.损失函数…