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

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

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块,一个用于接收数据,一个用于发送数据,如下图所示:

在这个2个DB中分别建立几个变量,如下图所示:

在属性中设置CPU的IP地址:192.168.0.1,子网掩码:255.255.255.0,如下图所示:

在“防护与安全”中,设置“允许来自远程对象的PUT/GET通信访问”,这一点非常重要!

二、VS2019一侧:
新建一个基于C#的winform,并添加引用S7.net.dll文件,如下图:

打开工具箱,在form1上添加所需的按钮、标签、定时器timer,以及输入输出用的文本框,如下图所示:

双击form1,进入程序代码编辑界面,首先要添加引用S7.net,如下图所示:

连接PLC的IP地址,这里为:127.0.0.1是因为我是在自己的电脑上通过nettoplcsim仿真的,所以输入的是本机环网的IP地址,后面的0和1,代表机架号和插槽号,如下图所示:

“连接PLC”按钮,按下后会触发打开PLC连接的事件,如下图:

“断开PLC连接”按钮,按下后会触发关闭PLC连接的事件,如下图:

“readDB”按钮,按下后会触发读取PLC的DB数据块的事件,并在textbox文本框中进行显示,如下图:

“writeDB”按钮,按下后会触发将textbox文本框中的内容写入PLC的DB数据块的事件,如下图:

定时器timer1的功能和“readDB”按钮的功能类似,可以周期性地触发读取DB内数据的事件,如下图:

在装载form1的时候,要启用timer1,并且设置timer1的周期间隔(此处为1000ms),如下图:

程序启动之后,form1会每隔1000ms触发一次读取DB的事件,可以看到C#读取的数据和S7-1200PLC的DB1中的数据是一致的,说明通信连接正常,且读写是正常的,如下图:

以上,仅为个人实验数据,程序上还有很多不规范的地方,大家感兴趣的话可以自己去尝试一下。。。

(0)

相关推荐