如果你对西门子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网路完全连接到一起,所以它具有三个对象组件,分别是客户端、服务器和协作者,这三个对象可以同时应用,下面这幅图描述了这三个对象之间的联系:

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

2、Snap7源码分析

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

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

建立PLC连接
断开PLC连接
存储区读取
存储区写入
读取多变量
写入多变量

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

建立及断开连接
读取及写入多个字节
读取及写入多个通信组
读取及写入多个通信变量
读取及写入单个变量

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

3、通信测试

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

西门子仿真环境

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

S7-200 Smart PLC通信测试
S7-1500 PLC通信测试

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

  1. 信捷plc485通信上位机_三菱FX3U编程口通信上位机QT实现

    三菱FX3U编程口通信上位机软件 上位机开发流程: 一 查找类似工具 找到 三菱FX串口实验(FX Serial) 这款工具 这款工具挺好用的,能够验证大多数的功能,而且能够看到发送和接收的报文,是一 ...

  2. 信捷plc485通信上位机_上位机开发之三菱FX3U以太网通信实践

    上次跟大家介绍了一下上位机与三菱Q系列PLC通信的案例,大家可以通过点击这篇文章: dotNet工控上位机:上位机开发之三菱Q系列PLC通信实战​zhuanlan.zhihu.com 今天以三菱FX3 ...

  3. 信捷plc485通信上位机_【新阁教育】穷学上位机系列——搭建STEP7仿真环境

    经常有学员问我,学习上位机要不要买PLC硬件? 我一般的回答是:富则自行购买,穷则搭建仿真. PLC硬件,对于学习上位机来说,是锦上添花的事,经济条件允许,有则更好,条件不允许,新阁教育告诉您也可以通 ...

  4. 单片机float数发给上位机_上位机倒计时器

    1. 设置窗口 在VS2019新建一个Windows窗体应用(.NET Framework)项目,新建之后出现一个可视化页面(From1.cs[设计])设置窗口. 在左侧的工具箱里面拉拽控件到操作面板 ...

  5. 西门子PLC通信全解析

    前言 最近西门子PLC价格大幅上调,在工控界引起了不小的风波,不仅涨价,甚至还缺货,导致很多人不得不更改方案.听说最近已经完成了芯片替换,希望不久能够恢复供货,并把价格回调. 通过这件事,从侧面可以看 ...

  6. C#上位机 西门子PLC通信 S7NET协议

    C#上位机 西门子PLC通信 S7NET协议 1,西门子PLC网口通信,可通信S7-200smart,S7-1200,S7-1500. 2,例子简单易懂,自己写的程序,可提供部分 3,现场实测有效. ...

  7. 信捷8轴焊锡机程序,采用显控触摸屏加XD5-60T10 每个轴的电子齿轮比单独设置,转盘式

    信捷8轴焊锡机程序,采用显控触摸屏加XD5-60T10 每个轴的电子齿轮比单独设置,转盘式 机械手下料加料架,放料位置可以堆叠,放满一堆自动移动料架,直到整框装满. 程序带详细注释 原创程序 采用C语 ...

  8. 用Java做s71200的上位机_上位机通过西门子S7-1200PLC与OPC UA通讯

    上位机通过OPC UA server与S71200 PLC通讯的配置步骤. 此次主要将的是关于西门子S7-1200系列PLC与上位机通过哪些特定的条件,来实现通讯的配置分享,着重讲解这一要点,接收以下 ...

  9. plc编程和python的联系_通过Python与西门子PLC通信

    供大家想要与西门子PLC通信的朋友使用 1.该程序是通过python snap7连接西门子1200.1500系列PLC并按照I.Q.M区采集打印信息: 2.用户打开应用程序之前,要将目录下的snap7 ...

最新文章

  1. R语言neuralnet包构建神经网络模型:基于乳腺癌数据集
  2. locate,find
  3. 第一章 : javaScript框架分类及主要功能
  4. 在.net core3.0中使用SignalR实现实时通信
  5. RabbitMQ学习之集群镜像模式配置
  6. Linux内核 eBPF基础:kprobe原理源码分析:基本介绍与使用示例
  7. IDEA常用设置及推荐插件
  8. java 生成csr_Java以编程方式生成CSR
  9. flex中设置字体样式
  10. Spark的Shuffle过程介绍
  11. latex longtable caption长度提前换行解决方案
  12. 彻底了解HTTP模块
  13. 8大成功的网络营销案例 互联网营销案例分析
  14. java 游戏背景mp3音乐_java飞机大战(带背景音乐) 游戏原码下载
  15. 可疑的 Box 操作
  16. 小程序_图片剪切功能(支持多图片上传)
  17. aspose.words复制插入同一word文档中的某个页面
  18. 霹雳灯双灯c语言程序,单片机霹雳游侠灯源程序
  19. 工作十年,我是如何达到年薪40W以上
  20. html range关联文本框,HTML Input Range type用法及代码示例

热门文章

  1. 经历就是财富——总结我的26岁
  2. Adaboost算法原理以及matlab代码实现(超详细)
  3. 离散正(余)弦信号的时域与FFT变换后所得频域之间的关系(幅值和相角)
  4. php zval_copy_static_var(),深入理解 PHP7 中全新的 zval 容器和引用计数机制
  5. 【Python】find()函数居然还能指定搜索的起点和终点?
  6. 【Python】for 循环次数
  7. 科大星云诗社动态20210818
  8. python变量类型声明_python中可以声明变量类型吗
  9. 一次二次开发中的经验与教训(二)
  10. Windows 外壳扩展编程入门实例