找回密码
 立即注册

QQ登录

只需一步,快速开始

工控课堂 首页 工控文库 PLC学习 查看内容

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

2022-2-20 14:55| 发布者: 198366809| 查看: 1340| 评论: 22|原作者: 198366809

摘要: 来源:dotNet工控上位机(头条)如果你对西门子PLC通信或者上位机开发稍微有一点研究的话,应该对Snap7有所耳闻。Snap7是一个基于以太网与西门子S7系列PLC通信的开源库,在世界领域应用很广。但也许是因为资料比较少 ...
来源:dotNet工控上位机(头条)
如果你对西门子PLC通信或者上位机开发稍微有一点研究的话,应该对Snap7有所耳闻。

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

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

1.Snap7基础介绍
(1)Snap7作为一个世界级的开源库,有自己的官网:
http://snap7.sourceforge.net/
(2)大家如果需要Snap7的源码,可以去这里下载:https://sourceforge.net/projects ... l-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通信测试


4482b0ce7ada483da128c3f6d4b22795.jpg
关注公众号,加入500人微信群,下载100G免费资料!
发表评论

最新评论

引用 @Xizi_BCjesikh 2025-11-12 15:55
理性围观,感觉大家说得都有道理
引用 顾鑫 2025-11-12 16:17
楼主辛苦啦,期待下一篇分享
引用 东达 2025-11-12 16:37
楼主太会说了,字字句句都在理
引用 ertye 2025-11-12 16:43
已转发给朋友,一起感受这份快乐~
引用 春风拂面7708 2025-11-12 16:47
赞同 + 10086,完全说出了我的想法!
引用 xiaohu 2025-11-12 16:59
楼主太会说了,字字句句都在理~
引用 sxyxcsp 2025-11-12 17:02
水个经验,支持楼主,加油呀
引用 13053355515 2025-11-12 17:03
来凑个热闹,为楼主增加点人气!
引用 001 2025-11-12 17:06
哈哈哈哈笑不活,楼主这脑洞绝了!
引用 zhulong 2025-11-12 17:07
来凑个热闹,增加点人气~
引用 gxl142536 2025-11-12 17:07
不请自来,就想夸一句:太顶了!
引用 奔跑的迷鹿 2025-11-12 17:08
同款经历!简直是世另我
引用 刘强 2025-11-12 17:08
蹲一波同款,有没有姐妹 / 兄弟推荐?
引用 279190175 2025-11-12 17:09
浅蹲一个后续,楼主更新踢我一下
引用 天佑 2025-11-12 17:10
楼主辛苦啦,期待下一篇分享!
引用 nnnyyybbb 2025-11-12 17:40
赞同 + 10086,没毛病,完全没毛病
引用 gjd151@163.com 2025-11-12 18:45
这波分析到位,逻辑满分!
引用 hhhxxx 2025-11-12 21:12
求个链接 / 教程,楼主好人一生平安~
引用 一帆风顺 2025-11-12 22:48
路过打卡,为优质内容疯狂打 call

查看全部评论(22)

热门文章
关闭

站长推荐上一条 /1 下一条

QQ|手机版|免责声明|本站介绍|工控课堂 ( 沪ICP备20008691号-1 )

GMT+8, 2025-12-23 04:29 , Processed in 0.101845 second(s), 30 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

返回顶部