C#与西门子PLC通讯--仿真软件S7-PLCSIM Advanced V3.0的使用
本测试在虚拟机中进行
1,工具:VS2019、S7-PLCSIM Advanced V3、博图V15
一台虚拟机中安装了VS2019和S7-PLCSIM Advanced V3,另一个虚拟机安装了博图V15.
2,配置
虚拟机配置:网络建议采用NAT模式,不容易造成IP冲突。
博图设置
PLC型号为1515-2PN,两个以太网卡的地址分别为
192.168.0.210,C#通过此地址和PLCSIM通讯
192.168.91.210,博图通过此地址和PLCSIM通讯
如下图
设置项目支持仿真,方法如下:
1,右键项目-属性
2,块编译时支持仿真勾上。
S7-PLCSIM配置
程序编写
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的。
总结,本文写的比较乱,如果有疑问的话,欢迎在指正,谢谢。
更新:在同一台电脑测试配置如下
测试的时候一直连接不上,把另一个网卡禁用后才可以,只用这个虚拟的以太网卡。
→不积跬步,无以至千里;不积小流,无以成江海。