分享

基于C#平台通过S7.net实现与西门子S-1200PLC

 佚名2016 2021-07-07

需要提前准备的软件和文件:

1.Visual Studio 2019(自己到官网上下载安装)
2.S7.net.dll文件(需要的话链接我会放在文末)
3.西门子PLC软件TIA PORTAL V15.0或者V16(需要安装PLCSIM)
4.S7仿真软件:Nettoplcsim-S7o-v-1-2-4-0

这些必要的前提条件均满足了,我们再开始下面的步骤。
一、西门子PLC一侧:
首先,打开TIA博途软件,添加一个CPU:1215C DC/DC/DC,在程序块中添加2个DB块,一个用于接收数据,一个用于发送数据,如下图所示:
1
在这个2个DB中分别建立几个变量,如下图所示:
2
3
在属性中设置CPU的IP地址:192.168.0.1,子网掩码:255.255.255.0,如下图所示:
4
在“防护与安全”中,设置“允许来自远程对象的PUT/GET通信访问”,这一点非常重要!
5

二、VS2019一侧:
新建一个基于C#的winform,并添加引用S7.net.dll文件,如下图:
6
打开工具箱,在form1上添加所需的按钮、标签、定时器timer,以及输入输出用的文本框,如下图所示:
7
双击form1,进入程序代码编辑界面,首先要添加引用S7.net,如下图所示:
8
连接PLC的IP地址,这里为:127.0.0.1是因为我是在自己的电脑上通过nettoplcsim仿真的,所以输入的是本机环网的IP地址,后面的0和1,代表机架号和插槽号,如下图所示:
9
“连接PLC”按钮,按下后会触发打开PLC连接的事件,如下图:
10
“断开PLC连接”按钮,按下后会触发关闭PLC连接的事件,如下图:
11
“readDB”按钮,按下后会触发读取PLC的DB数据块的事件,并在textbox文本框中进行显示,如下图:
12
“writeDB”按钮,按下后会触发将textbox文本框中的内容写入PLC的DB数据块的事件,如下图:
13
定时器timer1的功能和“readDB”按钮的功能类似,可以周期性地触发读取DB内数据的事件,如下图:
14
在装载form1的时候,要启用timer1,并且设置timer1的周期间隔(此处为1000ms),如下图:
15
程序启动之后,form1会每隔1000ms触发一次读取DB的事件,可以看到C#读取的数据和S7-1200PLC的DB1中的数据是一致的,说明通信连接正常,且读写是正常的,如下图:
16
17
以上,仅为个人实验数据,程序上还有很多不规范的地方,大家感兴趣的话可以自己去尝试一下。。。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多