java开发plc上位机软件开发_上位机开发之西门子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环境,具体可以参考文章:戳↓

无论使用何种方式,以下两个地方需要进行配置一下:

PLC配置一:需要将PLC的允许来自远程对象的PUT/GET通信访问勾选。

PLC配置二:对于DB块的访问,需要取消勾选优化访问。

2. 通信平台测试

(1)完成以上配置后,就可以通过自己开发的喜科堂通信测试平台软件进行测试,导航栏中选择西门子PLC,然后输入正确的IP地址,在CPU类型中选择自己的CPU类型:

c4166e6ff39f6fadbb59a27a7b4d01cd.png

图表 1新阁通信测试平台

(1)输入完成之后,点击建立连接,建立连接之后,日志栏会有连接成功提示。

(2)在读写测试中,输入相应的变量地址及变量类型,即可实现相关变量的通信读写及测试。

dcd07bb0e0eb894f89a908a489a5449c.png

图表 2新阁通信测试平台测试

3. 项目级别应用

通信测试平台仅仅只是用于测试通信是否正常,实现正常的单变量数据读取和写入。但是如果是项目级别开发,还需要有一套更完善的通信架构,这里我采用的是自主开发的上位机通信配置一体化软件(简称CMS配置软件)。

(1)通过PLC设备右击选择西门子PLC,在打开的窗体中设置好相关参数:

设备名称:根据实际情况填写(无特殊字符即可)

设备备注:根据实际情况填写(无特殊字符即可)

IP地址:根据实际PLC的IP地址填写

机架号、插槽号:根据实际PLC的情况填写

PLC类型:根据实际PLC的情况填写

连接超时:PLC连接时的超时时间,默认是2000ms

容错次数:判断连接故障的容错次数,默认为1,即表示某次读取出错,即判断连接故障,根据实际情况可以适当放大

重连周期:通信过程中,出现断线时,重连的周期,默认是5000ms

b009a19545671a80bc19a94d29de76da.png

图表 3创建PLC

(2)在PLC设备下,右击添加通信组,根据需要填写相应的存储区及起始地址及长度:

e77d1a9f40d0800005b9600b505066ff.png

图表 4添加通信组

(3)通信组下面,根据实际情况配置相应的变量,输入开始地址及变量类型即可,变量地址会自动变换,这里可以输入比例系数及偏移量,用于做线性变换使用:

054008ff7f04207d5a05f441169a24cc.png

图表 5添加变量

(4)对于变量配置,左下角会有一个报警归档配置,主要用于配置该变量的报警类型、归档方式及设定限制:

ed1cf4f3515e921348650344db457d0a.png

图表 6报警归档配置

(5)完成上述配置后,可以点击保存配置,再点击启动运行,即可实现实时通信:

15228f394832afe8fb057b23c4646969.png

图表 7实时通信

(6)同时可以通过另存为,存储为一个配置文件的形式,再基于配置dll,可以通过快速方式实现配置解析及通信数据解析,这样整个项目的通信框架即可搭建完成。

4. 整体总结

本文主要针对西门子PLC的通信配置、通信配置及项目应用做了较为详细的描述,希望可以给一些想要去开发西门子PLC项目的同学一些帮助。这样的一套思路同样适用于其他品牌的PLC,我们旨在节约大家开发项目中在通信方面的时间,而将更多的精力投放在项目工艺开发中。

写在后面:

很多小伙伴想要CMSPro软件来进行学习,因此综合考虑,现提供CMSPro软件试用版供大家学习使用,试用版功能方面可能会存在部分删减,但是可以满足大部分小伙伴的学习需求,目前仅针对本公众号粉丝,具体获取方式,通过关注本公众号:dotNet工控上位机,发送关键词:CMSPro试用,即可获取。同时我们的通信库xktComm.dll也提供试用版,大家可以通过nuget搜索xktComm,安装使用,最后祝大家工作生活愉快。

更多精彩内容:

(点击即可阅读)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/335527.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

boss直聘账号异常登不上_【苹果IOS游戏账号分享】据说是最欢乐的2D冒险游戏?Q萌有趣,好不好玩你说了算——惊奇剑士...

惊奇剑士游戏下载点击下方卡片下载游戏!不会使用请点击《操作指南》↓↓↓↓本游戏是由1群的资源库:“hentai是绅士不是变态” 赞助我们购买的,感谢大家的鼎力支持,二哈替大家感谢下hentai是绅士不是变态。可甜可盐的小哥哥之前还…

jquery 延迟加载代码_延迟加载是一种代码气味

jquery 延迟加载代码您见过那些具有许多属性的巨大物体吗? 这些域对象由于不希望从数据库检索太多信息而在其中使用延迟加载? 我敢打赌你有这种令人怀疑的快乐。 今天,我想与您分享我对它们的印象- 使用延迟加载应被视为一种代码味道&#x…

inotify-java下载_inotify-java-2.1.jar

【实例简介】inotify能够对文件系统进行监控,书上举的例子都是c使用inotify的例子,难道没有Java版吗,肯定有,只不过要自己编译,在网上找到别人的博客有,但是人家不愿意分享,我就只能自己编译了&…

SQL语句执行顺序

文章目录SQL 简介SQL 语句的执行顺序重点SQL 简介 SQL 是 Structured Query Language 的缩写,称为结构化查询语言,SQL 是一种操作关系型数据库的规则,SQL 语句以分号结尾,不区分大小写,建议关键词使用大写。 SQL 语句…

getexternalfilesdir 相册_音乐相册(电子相册制作)V5.2 安卓最新版

音乐相册(电子相册制作)是一个功能强大的电子相册创建工具。最新版本的音乐专辑应用程序可以帮助用户快速创建精美的多媒体专辑视频,并匹配优美的音乐伴奏,使照片更精彩。音乐专辑应用程序支持几乎所有流行的图片格式,并支持导入和导出&#…

jdk 9和jdk8_JDK 9是某些功能的终结

jdk 9和jdk8几天前宣布JDK 9是Feature Complete! 进行切割的许多“功能”是附加功能,但有些是移除功能。 这篇文章介绍了一些从OpenJDK和/或Oracle JDK with Java 9中删除的项目。 JEP 220 (“模块化运行时图像”)的一部分是删除…

二级java题型及分值_2016年全国计算机二级java语言程序设计考试大纲

2016年全国计算机二级java语言程序设计考试大纲2016年3月计算机考试即将在3月26日-29日进行,为了帮助大家顺利通过2016年计算机二级考试,下面百分网小编为大家带来2016年全国计算机二级java语言程序设计考试大纲,供大家参考学习,预…

linux系统下安装jdk教程

一、首先下载linux版本jdk jdk官网:http://www.oracle.com/technetwork/java/javase/downloads/index.html 根据自己的需求,下载不同版本的jdk 2.将下载好的jdk压缩包,通过ftp上传到linux系统的当前用户下,我当前登录的用户为r…

mqtt java_MQTT和Java入门

mqtt javaMQTT(MQ遥测传输)是一种轻量级的发布/订阅消息传递协议。 MQTT在物联网应用程序中得到了广泛使用,因为它被设计为在占用空间小的系统上运行在远程位置。 MQTT 3.1是OASIS标准,您可以在http://mqtt.org/上找到所有信息。…

iphone11什么时候上市_hd3手表高仿哪里买 什么时候上市?

hd3手表高仿哪里买 什么时候上市? 导读:hd3手表高仿哪里买zf的万国7日链高仿表怎么样?款式设计非常出色,很多手表的款式,依靠着该性价比的迅速提升来做出的有效转化,年轻人对于复刻表的选择,能拥有的这些细…

arcgis工具python源码_面向Arcgis的python脚本编程_数据

【实例简介】《面向ArcGIS的Python脚本编程》是一本指导ArcGIS for Desktop专业用户进行Python开发的指南。该书将教会您如何通过编写Python代码处理空间数据并在ArcGIS中自动化实现地理处理任务【实例截图】【核心代码】面向arcgis的python脚本编程数据└── 面向arcgis的pyt…

Windows 命令终端(CMD)程序员常用的命令

文章目录certutilcddirmd/mkdirrddelreplacechdir/cdattribhelptypemorefindstrrename/renset环境变量扩展echonetstattskilltasklisttaskkillnettreecopystartpauseprintverwinversysteminfowmiclogofftracertroute printtelnetftppingipconfigshutdown远程关机formatchkdskti…

驱动级的自动按键_空调遥控器特殊按键使用方法及注意事项

在上门维修过程中,用户常常由于遥控器使用不当,或者幵启了特定按键引起空调器的假性故障,这时需要进行电话解答或上门讲解,现对空调遥控器的特殊功能按键作简单介绍。示例遥控器型号为格力YAD0F,与KFR-23GW/ ( 23570 ) Aa-3挂式空…

净资产滚动率_净资产的结构

净资产滚动率Netty的包装结构很棒。 每个程序员都应该研究它。 每个系统都应该模仿它; 每个项目经理都应将其打印出来,拍在墙上,然后对开发人员说:“那样。” Netty是一个“ ...异步事件驱动的网络应用程序框架,用于…

freebsd nginx php mysql_FreeBSD 安装配置Nginx+PHP+APC+MySQL

在 FreeBSD 下安装软件的传统方法是用 ports 源码安装,不过使用 ports 源码编译安装太耗时(尤其是各种库依赖多、大的时候),个人还是喜欢 pkg 这种软件包管理工具直接安装编译好的二进制软件包,不用自己编译,省时省力。FreeBSD 也…

python入门之类的基础语法-关于一些Python的一些基础语法训练

1:已知a和b元素 a "pyer" b "apple" 用字典和format方法实现:效果:my name is pyer, i love apple. 1、format的方法 c "mysql name is {0},i love {1}".format("pyer","apple") 用字典…

jdk 9和jdk8_JDK 9已完成功能!

jdk 9和jdk8今天的Mark Reinhold消息JDK 9已完成功能完善-现在该降级了 , 它宣布JDK 9的“总体功能集已冻结”。 OracleJava平台小组的首席架构师Reinhold补充说:“极不可能将任何进一步的JEP定向到该发行版。” 与该消息类似的文本也出现在JDK 9页面上 …

Java从键盘输入若干数_用java编程序:从键盘输入若干个整数,输出这些数中大于其平均值的数。...

展开全部引用1楼 christal yhy的答案,考虑到浮点数的存在,特在此基础上优化一下,代码如下:public static void main(String[] args) {Scanner scan new Scanner(System.in);System.out.println("请输入62616964757a686964616fe59b9ee7ad9431333262373933要输入的个数:&qu…

java多线程编程_阿里P8熬到秃头肝出来的:Java多线程+并发编程核心笔记

自学Java的时候,多线程和并发这一块可以说是最难掌握的部分了,很多小伙伴表示需要一些易于学习和上手的资料。所以今天这本「Java并发学习手册.pdf」就是一份集中学习多线程和并发的手册,PDF版,由RedSpider社区的五位大神撰写&…

内外网逻辑隔离物理隔离_隔离域逻辑

内外网逻辑隔离物理隔离在一个设计模式课程中,我对建模域逻辑进行了有趣的讨论。 具体来说,它是关于隔离域逻辑的 。 一个应用程序通常分为三个部分: 演示(例如桌面GUI,浏览器,Web服务) 域逻辑…