欢迎光临散文网 会员登陆 & 注册

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

2020-06-20 15:38 作者:新阁教育  | 我要投稿

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

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

01、Snap7基础介绍

  • Snap7作为一个世界级的开源库,有自己的官网:http://snap7.sourceforge.net/

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

  • 大家如果源码下载太慢或者下载不了,可以关注公众号:dotNet工控上位机,发送关键词:Snap7源码

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

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

02、Snap7源码分析

打开下载的源码项目,直接编译成功之后是可以直接运行的,找一个自己身边的西门子PLC进行通信功能测试,如果手头没有PLC,可以通过下面这篇文章来搭建一个西门子PLC的仿真环境:戳↓

基于S7-PLCSIM Advanced搭建S7通信仿真环境

大家看到源码之后,可以发现提供的snap7.net其实是对snap7.dll的二次封装,snap7.dll是一个C/C++写的类库,我们凭借经验和嗅觉可以找到一些核心的方法。

(1)与PLC建立连接

(2)与PLC断开连接

(3)读取存储区

(4)写入存储区

(5)读取多变量

(6)写入多变量

个人感觉,这个snap7.net的封装较为简单,而且颇有老外的风格,不太适用于国人使用,因此大家可以直接做一层封装,下面是我对这个snap7.net做的一些的封装(由于篇幅有限,仅列举部分):

(7)PLC连接与断开连接

(8)批量读取字节

(9)批量写入字节

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

03、通信测试

通信库编写完成之后,通过TIA V15 + PLCSIM + NETTOPLCISM搭建了一个S7-1500PLC的仿真环境,用于通信测试(大家可以采用TIA V15 + PLCSIM Advaced的方式,会更加方便)。

(1)西门子仿真环境

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

(2)S7-200 Smart PLC通信测试

(3)S7-1500PLC通信测试




Modbus在TCPIP网络上的应用¥298

这个课程怎么样?




必须学习!



01课程学习方法及上位机总体说明

02Modbus协议介绍及仿真软件使用

03Modbus协议——读取输入输出线圈

04Modbus协议——读取保持输入寄存器

05Modbus协议——预置单线圈单寄存器

06Modbus协议——预置多线圈多寄存器

07项目开发——项目框架搭建及连接功能.

08项目开发——优化界面设计及写入日志

09通信库开发——读取输出线圈

10通信库开发——编写读取输入线圈

11项目开发——输入输出线圈的读取测试

12通信库开发——编写读取输入保持寄存器

13项目开发——各种数据类型的读取

14通信库开发——编写强制单线圈

15通信库开发——编写强制多线圈

16项目开发——线圈写入测试

17通信库开发——预置单寄存器

18通信库开发——预置多寄存器

19项目开发——各种数据类型的写入

扫码二维码

进入课程学习

¥298





基于Snap7实现与西门子PLC通信的评论 (共 条)

分享到微博请遵守国家法律