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的。

 

 

 

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

 

更新:在同一台电脑测试配置如下

 

测试的时候一直连接不上,把另一个网卡禁用后才可以,只用这个虚拟的以太网卡。

 

posted @ 2022-01-04 16:30  Iamseeking  阅读(6485)  评论(0编辑  收藏  举报