本测试在虚拟机中进行

1,工具:VS2019、S7-PLCSIM Advanced V3、博图V15

C#与西门子PLC通讯--仿真软件S7-PLCSIM Advanced V3.0的使用_虚拟机安装




 一台虚拟机中安装了VS2019和S7-PLCSIM Advanced V3,另一个虚拟机安装了博图V15.

2,配置

虚拟机配置:网络建议采用NAT模式,不容易造成IP冲突。

C#与西门子PLC通讯--仿真软件S7-PLCSIM Advanced V3.0的使用_C#连接PLC_02





博图设置

PLC型号为1515-2PN,两个以太网卡的地址分别为

192.168.0.210,C#通过此地址和PLCSIM通讯

192.168.91.210,博图通过此地址和PLCSIM通讯

如下图

C#与西门子PLC通讯--仿真软件S7-PLCSIM Advanced V3.0的使用_C#连接PLC_03




C#与西门子PLC通讯--仿真软件S7-PLCSIM Advanced V3.0的使用_c#_04




设置项目支持仿真,方法如下:

1,右键项目-属性

C#与西门子PLC通讯--仿真软件S7-PLCSIM Advanced V3.0的使用_S7-PLCSIM Advanced_05

2,块编译时支持仿真勾上。

C#与西门子PLC通讯--仿真软件S7-PLCSIM Advanced V3.0的使用_c#_06







 S7-PLCSIM配置

C#与西门子PLC通讯--仿真软件S7-PLCSIM Advanced V3.0的使用_c#_07



程序编写



 C#与西门子PLC通讯--仿真软件S7-PLCSIM Advanced V3.0的使用_c#_08




C#程序

using S7.Net;
using System;
namespace s71200
{
class Program
{
static void Main(string[] args)
{
//Console.WriteLine("Hello World!");
Plc plc = new Plc(CpuType.S71500,"192.168.0.210" + "",0,0);
//连接plc,可能会抛异常,用try-catch提示
try
{
//1,连接到PLC
plc.Open();
if (plc.IsConnected)
{
Console.WriteLine("PLC连接成功");
}
//从plc读取数据
bool b = Convert.ToBoolean(plc.Read("M0.0"));
Console.WriteLine("读取M0.0的值为{0}",b);
bool c = Convert.ToBoolean(plc.Read("M2.0"));
Console.WriteLine("读取M2.0的值为{0}",c);
//写数据到PLC
plc.WriteBit(DataType.Memory,0,0,0,true);
//重新读一下M0.0有无变化。
b= Convert.ToBoolean(plc.Read("M0.0"));
Console.WriteLine("读取M0.0的值为{0}",b);
c = Convert.ToBoolean(plc.Read("M2.0"));
Console.WriteLine("读取M2.0的值为{0}",c);
//关闭到plc的连接
plc.Close();
}
catch
{
Console.WriteLine("PLC连接失败,请检查连接参数");
}
}
}
}


这个程序执行时,会把M0.0置1上面的PLC起保停程序会导通,则M2.0会变成1,现在让程序跑一下

可以看到通讯正常,对PLC的读写是OK的。

C#与西门子PLC通讯--仿真软件S7-PLCSIM Advanced V3.0的使用_.net_09


C#与西门子PLC通讯--仿真软件S7-PLCSIM Advanced V3.0的使用_S7-PLCSIM Advanced_10



 总结,本文写的比较乱,如果有疑问的话,欢迎在指正,谢谢。



→不积跬步,无以至千里;不积小流,无以成江海。