上位机开发之西门子PLC-S7通信实践
写在前面:
就目前而言,在中国的工控市场上,西门子仍然占了很大的份额,因此对于上位机开发而言,经常会存在需要与西门子PLC进行通信的情况。然后对于西门子PLC来说,通信方式有很多,下面简单列举一下:
(1) S7通信:PLC作为服务器,上位机作为客户端
(2) 开放式TCP通信:PLC作为服务器,上位机作为客户端
(3) 开放式TCP通信:PLC作为客户端,上位机作为服务器
(4) ModbusTCP通信:PLC作为服务器,上位机作为客户端
(5) ModbusTCP通信:PLC作为客户端,上位机作为服务器
(6) ModbusRTU通信:PLC作为主站,上位机作为从站
(7) ModbusRTU通信:PLC作为从站,上位机作为主站
(8) Simatic Net OPCDA通信
(9) Simatic Net OPCUA通信
(10) KepServer OPCDA通信
(11) KepServer OPCUA通信
由于篇幅有限,这次仅以西门子S7通信为例,说明下如何基于S7通信协议实现与西门子PLC之间的通信。
1. PLC软件安装及配置
目前西门子PLC主要使用的软件包括STEP7-MicroWIN SMART、SIMATIC STEP7以及TIA Portal。TIA Portal已经完全兼容STEP 7,因此以后应该是STEP 7-MicroWIN SMART作为小型PLC的编程软件,TIA作为中大型PLC的编程软件,这里主要以博途为例进行说明:
如果大家需要软件的,可以关注左上方公众号,或者搜索微信公众号:dotNet工控上位机,关注后发送关键词:200SMART编程软件即可获取STEP 7-MicroWIN SMART V2.5软件,发送关键词:博图V15即可获取TIA V15.1编程软件。
软件安装完成后,PLC的配置也很简单,如果大家手头没有实际的PLC,也可以通过仿真的方式搭建PLC环境,具体可以参考文章:戳↓
基于S7-PLCSIM Advanced搭建S7通信仿真环境
无论使用何种方式,以下两个地方需要进行配置一下:
PLC配置一:需要将PLC的允许来自远程对象的PUT/GET通信访问勾选。
PLC配置二:对于DB块的访问,需要取消勾选优化访问。
2. 通信平台测试
(1)完成以上配置后,就可以通过自己开发的喜科堂通信测试平台软件进行测试,导航栏中选择西门子PLC,然后输入正确的IP地址,在CPU类型中选择自己的CPU类型:
图表 1新阁通信测试平台
(1)输入完成之后,点击建立连接,建立连接之后,日志栏会有连接成功提示。
(2)在读写测试中,输入相应的变量地址及变量类型,即可实现相关变量的通信读写及测试。
图表 2新阁通信测试平台测试
3. 项目级别应用
通信测试平台仅仅只是用于测试通信是否正常,实现正常的单变量数据读取和写入。但是如果是项目级别开发,还需要有一套更完善的通信架构,这里我采用的是自主开发的上位机通信配置一体化软件(简称CMS配置软件)。
(1)通过PLC设备右击选择西门子PLC,在打开的窗体中设置好相关参数:
设备名称:根据实际情况填写(无特殊字符即可)
设备备注:根据实际情况填写(无特殊字符即可)
IP地址:根据实际PLC的IP地址填写
机架号、插槽号:根据实际PLC的情况填写
PLC类型:根据实际PLC的情况填写
连接超时:PLC连接时的超时时间,默认是2000ms
容错次数:判断连接故障的容错次数,默认为1,即表示某次读取出错,即判断连接故障,根据实际情况可以适当放大
重连周期:通信过程中,出现断线时,重连的周期,默认是5000ms
图表 3创建PLC
(2)在PLC设备下,右击添加通信组,根据需要填写相应的存储区及起始地址及长度:
图表 4添加通信组
(3)通信组下面,根据实际情况配置相应的变量,输入开始地址及变量类型即可,变量地址会自动变换,这里可以输入比例系数及偏移量,用于做线性变换使用:
图表 5添加变量
(4)对于变量配置,左下角会有一个报警归档配置,主要用于配置该变量的报警类型、归档方式及设定限制:
图表 6报警归档配置
(5)完成上述配置后,可以点击保存配置,再点击启动运行,即可实现实时通信:
图表 7实时通信
(6)同时可以通过另存为,存储为一个配置文件的形式,再基于配置dll,可以通过快速方式实现配置解析及通信数据解析,这样整个项目的通信框架即可搭建完成。
4. 整体总结
本文主要针对西门子PLC的通信配置、通信配置及项目应用做了较为详细的描述,希望可以给一些想要去开发西门子PLC项目的同学一些帮助。这样的一套思路同样适用于其他品牌的PLC,我们旨在节约大家开发项目中在通信方面的时间,而将更多的精力投放在项目工艺开发中。
写在后面:
很多小伙伴想要CMSPro软件来进行学习,因此综合考虑,现提供CMSPro软件试用版供大家学习使用,试用版功能方面可能会存在部分删减,但是可以满足大部分小伙伴的学习需求,目前仅针对本公众号粉丝,具体获取方式,通过关注本公众号:dotNet工控上位机,发送关键词:CMSPro试用,即可获取。同时我们的通信库xktComm.dll也提供试用版,大家可以通过nuget搜索xktComm,安装使用,最后祝大家工作生活愉快。
更多精彩内容:
(点击即可阅读)
上位机开发之西门子PLC-S7通信实践的更多相关文章
- 上位机开发之三菱FX3U以太网通信实践
上次跟大家介绍了一下上位机与三菱Q系列PLC通信的案例,大家可以通过点击这篇文章:上位机开发之三菱Q系列PLC通信实践(←戳这里) 今天以三菱FX3U PLC为例,跟大家介绍一下,如何实现上位机与其之 ...
- 上位机开发之三菱Q系列PLC通信实践
经常关注我们公众号或者公开课的学员(如果还没有关注的话,左上角点击一波关注)应该知道,我们会经常使用西门子PLC,其实对于其他品牌的PLC,我们都会讲到,包括三菱.欧姆龙.基恩士.松下及国产台达.信捷 ...
- 【专题教程第8期】基于emWin模拟器的USB BULK上位机开发,仅需C即可,简单易实现
说明:1.如果你会emWin话的,就可以轻松制作上位机.做些通信和控制类上位机,比使用C#之类的方便程度一点不差,而且你仅会C语言就可以.2.并且成功将emWin人性化,可以做些Windows系统上的 ...
- Winform 快速开发框架,上位机开发,工控机程序开发,CS程序开发
1.当客户让你做个CS程序时,当你手上一穷二白,所有都要重复造轮,你是不是很烦. 2.但如果有一个通用的,快速开发框架,就可以把你从这些基础的工作解救出来,你专注做业务就好了. 3.本人其中一个项目的 ...
- USBCAN的使用和上位机开发(MFC)
USBCAN使用手册 参见:https://blog.51cto.com/12572800/2062839 1. USB CAN软件安装与硬件接线 USB CAN是常用的CAN测试工具.它的软件资料存 ...
- C#上位机开发(二)—— Hello,World
上一篇大致了解了一下单片机实际项目开发中上位机开发部分的内容以及VS下载与安装,按照编程惯例,接下来就是“Hello,World!” 1.新建C#项目工程 首先选择新建Windows窗体应用(.NET ...
- 医疗器械c#上位机开发指引教程
此教程面向的读者:对医疗器械上位机编程有兴趣,或者急需了解医疗器械(尿常规.血液分析.生化.心电.B超等医疗下位仪器)的编程流程.编程细节的程序员. 1.得到仪器协议 当我们需要与医疗器械等下位机数据 ...
- 周立功USBCAN-II 上位机开发(MFC)
使用的USB转CAN的设备是周立功的USBCAN-II,在购买的时候,会有上位机二次开发的库文件.例程和API文档等材料,可以参考. 1.库函数的调用 首先,把库函数文件都放在工作目录下.库函数文件总 ...
- C#上位机开发(一)—— 了解上位机
在单片机项目开发中,上位机也是一个很重要的部分,主要用于数据显示(波形.温度等).用户控制(LED,继电器等),下位机(单片机)与 上位机之间要进行数据通信的两种方式都是基于串口的: USB转串口 — ...
随机推荐
- vue中mixins的使用方法和注意点(详)
mixins基础概况 vue中的解释是这样的,如果觉得语言枯燥的可以自行跳过嘿~ 混入 (mixins): 是一种分发 Vue 组件中可复用功能的非常灵活的方式.混入对象可以包含任意组件选项.当组件使 ...
- PHP+Apache+MySQL+phpMyAdmin安装和配置
下载网址: PHP:http://windows.php.net/download 版本: php-5.6.31-Win32-VC11-x64.zip Apache:https://www.a ...
- xtrabackup手册笔记
http://www.cnblogs.com/Amaranthus/archive/2014/08/19/3922570.html#_Toc396231219
- JS 如何获取自定义属性
<script>var testEle = document.getElementById("test"); testEle.setAttribute("de ...
- Hyperledger Fabric——balance transfer(六)查询
balance transfer 提供了很多查询接口,包括链码查询,根据区块号查询区块数据,根据交易ID查询交易信息,查询链上的区块数,查询已安装或已实例化的链码,查询通道. 源码解析 1.调用链码查 ...
- SPOJ-PGCD Primes in GCD Table
题目链接:https://vjudge.net/problem/SPOJ-PGCD 题目大意: 给定 \(N\) 和 \(M\),求满足 \((1 \le x \le N), (1 \le y \le ...
- vscode格式化Vue出现的问题:单引号变双引号 格式化去掉分号
学习vue框架时,发现在使用vscode格式化vue代码时,出现单引号变成了双引号问题(导致和EsLint要求不一致),从而导致报错!!!!好坑啊!!! 解决方法如下 在文件根目录下创建 .prett ...
- iOS开发MD5、SHA1
MD5: + (NSString *)md5:(NSString *)input { const char *cStr = [input UTF8String]; unsigned char dige ...
- SSI PAYLOAD
<pre><!--#exec cmd="ls" --></pre><pre><!--#echo var="DATE_ ...
- 50个SQL语句(MySQL版) 问题一
--------------------------表结构-------------------------- student(StuId,StuName,StuAge,StuSex) 学生表 tea ...