【精讲版】上位机C#/.NET与西门子PLC通讯


 

618来啦编程

亲们,腾讯课堂101机构打榜了,快来助力《新阁教育》,《免费赠送课程》!服务器

1.手机QQ(微信请也来一遍)扫下方二维码↓,找到《新阁教育微信

2.点击“支持”,记得得到免费课程,还有红包相送框架

3.助力成功后能够邀请亲朋好友,共同窗习。编程语言

 

感谢支持学习

 

据某份数据不彻底统计,目前中国市场十大国际PLC品牌以下(避免争议,排名不分前后):测试

西门子、施耐德、欧姆龙、三菱、罗克韦尔、松下、ABB、倍福、艾默生、GE优化

再盘点一下中国市场十大国内PLC品牌:人工智能

和利时、台达、汇川、信捷、永宏、丰炜、南大傲拓、厦门海为、黄石科威、上海正航spa

当代电气工程师之因此这么厉害(Ku Bi),一部分缘由大概就是PLC品牌太多了,终其一辈子,可能都学不完!

以上均为有感而发,不做为今天的主题,今天的主题主要是跟你们介绍一下,如何站在电气工程师的角度上,实现C#/.NET与西门子PLC之间的通讯。

 

N0.01  准备工做

若是想实现C#/.NET与西门子PLC之间的通讯,首先要对西门子PLC有必定的了解,西门子PLC目前市场上主要使用的PLC型号包括:S7-200、S7-200Smart、S7-300、S7-400、S7-1200、S7-1500,西门子PLC的主要存储区包括V区(在通讯协议里V区即DB1)、M区、I区、Q区、DB区,其余的C区和T区,因为用得比较少,并且能够经过程序中转,暂不涉及。

固然,若是咱们手头有PLC实际硬件,固然很是方便,能够直接测试,可是对于若是没有PLC的同窗来讲,咱们也给你们提早准备好了解决方案:戳↓

基于S7-PLCSIMAdvanced搭建S7通讯仿真环境    搭建好仿真环境后,只须要注意如下几个地方:     

  1、PLC配置中,必须勾选容许来自远程对象的PUT/GET通讯访问。

 

图表 1容许Put Get访问

    2、若是须要访问DB块,必须将DB块属性中的优化的块访问勾选去除。

图表 2 DB块去优化访问

3、若是是经过PLCSIM-Advanced搭建的仿真环境,必须将整个解决方案的属性中,保护栏里的块编译时支持仿真勾选上。

图表 3块编译支持仿真

       4、对于读取的地址,必定要是PLC中存在的地址:

    以M存储区为例,通常M区最大字节是8192个,若是你读取MD9000,必定是读不到的。

    以DB存储区为例,若是你还没有建立DB1,你读取DB1.DBD0,必定也是读不到的。

    以DB存储区为例,若是你DB1只有200个字节范围,你读取DB1.DBD200,也是读不到的。

    只要听从以上四个原则,西门子PLC通讯基本上就不存在硬件或者配置上的问题了。

 

N0.02  PLC基础通讯

本节中提到的基础通讯,主要是指针对PLC的地址进行单个或者多个连续的进行读取及写入,下面直接利用刚刚搭建好的仿真环境来作测试,固然,使用实际PLC也是彻底没问题的。前提先将博途中的DB1.DBD0、DB1.DBD四、DB1.DBD八、DB1.DBD12分别改为1.二、3.四、5.六、7.8,并将DB.DBS344开始的100个字节字符串改为“今晚有上位机免费公开课”,用于测试读取:

图表 4 DB1变量数值

图表 5 DB1字符串数据

第一步:单个变量的读取

经过C#调用通讯库xktComm.dll(Nuget搜索xktComm下载安装),实现对PLC单个变量的读取,结果以下图所示:

说明:西门子PLC通讯只须要IP地址和CPU类型便可,不须要端口号,由于S7协议的端口号是固定值102,之因此要选择CPU类型,是由于不一样型号的CPU,握手报文是不同的,对于西门子PLC的报文抓取及剖析,以前也写过一篇专门的文章进行了说明:戳↓

西门子S7通讯协议底层原理及抓包分析

图表 6 PLC单个读取

图表 7 PLC单个字符串读取

第二步:单个变量的写入

对于单个变量的写入,也很是方便,直接输入地址、类型及写入值便可,下面分别将这4个地址写入1.0、2.0、3.0、4.0,结果以下图所示:

 

图表 8 PLC单个写入

图表 9 PLC单个字符串写入

第三步:多个变量的读取

对于多个变量的读取,须要填写读取长度,下面经过将读取长度改为4,一次性将DB1.DB0-DB1.DBD12读取出来,结果以下图所示:

图表 10 PLC多个读取

第四步:多个变量的写入

对于多个变量的写入,则不须要填写读取长度,直接在写入数值中,用空格分隔,写入相应的数值,下面以将DB1.DBD0-DB1.DBD12改为1.二、3.四、5.六、7.8为例,将写入数值改为1.2  3.4  5.6  7.8,结果以下图所示:

图表 11 PLC多个写入

 

N0.03  PLC高级通讯

若是PLC基础通讯就能知足你们的项目需求的话,那么PLC高级通讯必定可让你们喜出望外。

PLC高级通讯主要应用场合是对于多个不连续的存储区或者多个不连续的变量进行一次性读取和写入,这一点,彷佛只有西门子S7协议支持,其余品牌PLC均不支持。第一步:多个不连续变量读取

在下图中,链接上PLC后,经过输入变量地址及变量类型,而后点击添加至读取区,会将想要读取的变量加载到右边的读取区中,读取区以JSON形式进行显示,右侧显示耗时时间,添加完成后,经过点击读取数据,会将想要读取的数据展现在日志框中,这些变量是能够不连续的变量。

下面以读取MD十、MD100、MD200、DB1.DBD0、DB1.DBD8为例,进行测试,测试结果以下图所示:

图表 12 PLC多变量同时读取

图表 13 PLC监控表

第二步:写入个不连续变量读取

在上一步读取的基础上,分别将MD十、MD100、MD200、DB1.DBD0、DB1.DBD8写入1.0、2.0、3.0、4.0、5.0,仍然采用一样的方式,填写变量地址、变量类型及写入值,点击添加至写入区,最后点击写入数据,判断是否能够将这些数据同时写入,测试结果以下图所示:

图表 14 PLC多变量同时写入

图表 15 PLC多变量写入结果对比

经过反馈结果及PLC数据对比,实测证实能够一次将多个变量同时写入PLC,而且经过判断耗时仅11ms,说明报文是一次性写入的。总而言之,PLC高级通讯的合理应用会大大提升上位机的通讯效率。

N0.04  总体总结

本文主要针对C#与西门子PLC通讯作了较为详细的描述,相信对于不少电气工程师,尤为是以西门子PLC为主的电气工程师来讲,会有很大帮助。近几年随着人工智能、物联网的流程,工控行业发生了很大的变化,每一位电气工程师都应该及时做出调整,至少学习一门高级编程语言,未雨绸缪,以更好的姿态来应对即将到来的智能制造2025。

 

 

 

 

今日直播课

课程内容:基于GDI+开发工业LED指示灯控件

课程时间:今天14:30

主讲人:付老师

长按扫码进入直播↓



● WinForm通用自动更新AutoUpdater项目实战

● 上位机开发之西门子PLC-S7通讯实践 

● 基于GDI+技术开发工业仪表盘控件

● 上位机C#经过OPCUA和西门子PLC通讯

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

● 基于C#实现本地数据上传至云服务器

● OPCUA+MQTT构建物联网通用框架

● 上位机开发之三菱Q系列PLC通讯实践

● 深度剖析西门子PLC的开放式TCP通讯

● 上位机开发之单片机通讯实践

相关文章
相关标签/搜索