信捷plc485通信上位机_基于Snap7实现与西门子PLC通信

a39221990979df19a81d8547c1ddc596.png

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

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

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

1、Snap7基础介绍

  • Snap7作为一个世界级的开源库,有自己的官网:
Snap7 Homepage​snap7.sourceforge.net
  • 大家如果需要Snap7的源码,可以去这里下载:
https://sourceforge.net/projects/snap7/files/1.4.2/snap7-full-1.4.2.7z/download​sourceforge.net
  • Snap7主要用于将PC站点与PLC网路完全连接到一起,所以它具有三个对象组件,分别是客户端、服务器和协作者,这三个对象可以同时应用,下面这幅图描述了这三个对象之间的联系:

4dcce96c3533984172bd1dc87e6cb806.png

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

2、Snap7源码分析

如果顺利的话,大家打开源码之后是可以运行的,找一个自己身边的西门子PLC进行通信功能测试,如果手头没有PLC,可以搭建一个西门子PLC仿真环境。

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

07db83358208d90adb684b674da23282.png
建立PLC连接

8e34bc992394697d52f22b729797736a.png
断开PLC连接

ced276c78228f7db7e90f1e4cbef5635.png
存储区读取

0ea180af016d8594acb363e01833905e.png
存储区写入

090aeb149ec69824632a08a121a5341f.png
读取多变量

c9f47c8607fae7e56729e2331ce0e435.png
写入多变量

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

bf7b68df7ff296793491825c4614cc31.png
建立及断开连接

f6774f8e1805e7d2436a59c69451ae7e.png
读取及写入多个字节

31e6fe34fdeafac9c82a71616b816bfd.png
读取及写入多个通信组

d7d7688f62329c4b20ed262779d63b38.png
读取及写入多个通信变量

140247d47efd72454243935818951168.png
读取及写入单个变量

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

3、通信测试

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

4e4d1add0a73927d3fc6446a1d5250ac.png
西门子仿真环境

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

9be92170c9f6bf40b252ddf27707ede1.png
S7-200 Smart PLC通信测试

657a2107cf73807eedb2047b0ef9734a.png
S7-1500 PLC通信测试
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值