我!!终于!!成功了!!!本踩坑大王终于跳出来了!!!!先放个图纪念一下
下面详细记录一下如何用C#上位机与西门子S7-1200在PLCSIM中进行仿真连接。过程不难,但是我踩了很多坑。
以下是我整个开发的环境和配置
- 安装一个以太网环回配适器 (这个要视情况安装,由于我的电脑是连接无线网,没有可用的以太网,我之前的网络配置是下图被框上的那部分,在未安装虚拟网卡的时候一直都连接不上。安装之后得以解决~)
-
- 教程:Windows10系统添加虚拟网卡(Microsoft Loopback Adapter)的方法_windows虚拟网卡_一个懒鬼的博客-CSDN博客
- Visual Studio 2019:编写C#界面
- 本项目中需要配置S7.net, 教程是这个博客的前半部分↓
- 西门子PLC与C#程序的S7.net通信_qq_20792765的博客-CSDN博客
- TIA Portal V16:编写梯形图等配置,这个不多说
- S7-PLCSIMV16:仿真PLC
- NetToPLCSIM-S7:用于作为PLCSIM与C#之间的媒介,二者无法直接联通
下载&使用教程:西门子——好用的通讯仿真通讯工具NetToPLCsim_西门子仿真端口_我叫DP的博客-CSDN博客
如果始终无法联通,可能是以下问题
1.没有安装虚拟网卡,那就按照上面的教程装一个
2.没有将虚拟网卡的地址配置到与PLCSIM同频段
下面按照上位机开发的思路和顺序,做一个教程
1.查看PLC的地址,并将自己的网口地址与之匹配
PLC的地址在这里:
配置我们的网口地址:
打开网络和共享中心---更改配适器选项---右键以太网2---属性
2.编写一个C#界面
我只做一个简单的连接操作,所以整个界面非常简单
它的功能就是我点击一下【连接】按钮,如果连接成功将在下面显示一行【PLC成功连接】,如果不成功将显示【PLC未成功连接】。点击【断开连接】,可以实现连接断开
完整代码段:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using S7.Net;namespace YaJiYunDong
{public partial class Form1 : Form{public Form1(){InitializeComponent();}Plc myplc = new Plc(CpuType.S71200, "192.168.1.20", 0, 1);private void button1_Click(object sender, EventArgs e){myplc.Open();if (myplc.IsConnected){label1.Text = "PLC已连接";}else{label1.Text = "PLC连接未成功";}}private void Btn_disconnect_Click(object sender, EventArgs e){myplc.Close();label1.Text = "PLC连接已断开";}}
}
其中比较核心的代码是这些:
第二部那个橘黄色的框框一定要注意!我在这卡了好久,因为每次配置的都是PLCSIM的地址,总是连接失败
3.配置PLC端
在组态好的PLC设备属性中,找到“防护与安全”–>“连接机制”中,勾选“允许来自远程对象的PUT/GET通信访问”;
配置好后,编译---启动仿真,让 PLCSIM 保持在RUN的状态!
4.NetToPLCSIM连接
这里选择刚才配置的环回配适器地址
这里选择PLCSIM 的地址
因为我这个是S7-1200,所以slot改成1,然后OK
到这里就成功连接上了~
另外需要注意的是,如果搜索不到PLCSIM的IP地址,重新仿真一下就可以了
也可能在打开NetToPLCSim的时候,会弹出“Port 102 is in use!”的警告,如果遇到这个情况,点击是,之后在将PLCSIM关掉重新启动一下就可以了
总之,这里遇到问题就把PLC重新仿真一下试试
5.上位机连接
在此之前要确保仿真PLC在RUN的位置
运行我们的上位机程序,在界面中点击【连接】,显示PLC已连接,则说明成功~
这个小例子比较简单,在这个基础上后续再进行优化~
以下问题在上述规范操作中都可以得到解决:
1. 由于连接方在一段时间后没有正确答复
2.界面提示 “连接未成功”
------------------最后希望大家都能ping通!----------------