C#使用S7netPlus与PLC通讯(超简单)

这篇具有很好参考价值的文章主要介绍了C#使用S7netPlus与PLC通讯(超简单)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

s7netplus,后端,轮子,c#,开发语言,PLC

刚接到手一个项目,是开发一款程序,要和PLC有数据交互,如上图,设备发生故障后,PLC会发电报,我们收到电报后把故障显示出来,同时点击解除故障,也会给PLC发送相对应的电报。查了蛮多资料但是感觉还是无从下手(资料是挺多的,但是感觉太繁琐了,有很多地方都没有必要,比如模拟PLC环境,一连下四五个软件,我感觉没有必要。),最后问了一下我之前公司的好哥们,正好他就是做上位机的,所以跟着学会了怎么连接PLC,怎样读写数据。我这里暂时也没有PLC,所以我使用的也是仿真模拟软件:HslCommunication
s7netplus,后端,轮子,c#,开发语言,PLC
安装包下载:

链接:https://pan.baidu.com/s/1dE3KAFUQgXJ2wRB7oWJewA 
提取码:acpk

1.引入S7netPlus包

s7netplus,后端,轮子,c#,开发语言,PLC

2.连接

           //PLC类型 IP地址 机架号 槽号
           //这里我们使用的是仿真软件,所以默认是的IP地址是本机地址
           Plc plc = new Plc(CpuType.S7300, "127.0.0.1", 0, 0);
            try
            {
                plc.Open();
                if (plc.IsConnected == false)
                {
                    textBox1.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ")+"PLC连接失败!";
                }
                else
                {
                    textBox1.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ")+"PLC连接成功!";
                }
            }
            catch (Exception ex)
            {
                textBox1.Text = ex.Message;
            }

效果图如下:
s7netplus,后端,轮子,c#,开发语言,PLC
s7netplus,后端,轮子,c#,开发语言,PLC
这样就连接上了,真实情况下的PLC也可以连接上。

3.读取数据

我这里写的比较多,是因为我专门写了个Demo来测试连接、读写的。

///代码中用到三种数据获取方式: DBX、DBW、DBD,深入理解的可以查一下网上资料
            ///简单理解就是 DBX读取位,比如bool类型;DBW读取字;DBD读取数值
            ///注释中是对应的 TIA Portal 数据块类型
            var db1Bool1 = (bool)plc.Read("DB1.DBX0.0");
            Console.WriteLine("DB1.DBX0.0: " + db1Bool1);

            bool db1Bool2 = (bool)plc.Read("DB1.DBX0.1");
            Console.WriteLine("DB1.DBX0.1: " + db1Bool2);

            // Int
            int intVariable = (ushort)plc.Read("DB1.DBW2.0");
            Console.WriteLine("DB1.DBW2.0: " + intVariable);
            // Real
            var realVariabl = ((uint)plc.Read("DB1.DBD4.0")).ConvertToFloat();
            Console.WriteLine("DB1.DBD4.0: " + realVariabl);
            // DInt
            var dIntVariable = (uint)plc.Read("DB1.DBD8.0");
            Console.WriteLine("DB1.DBD8.0: " + dIntVariable);
            // DWord
            var dWordVariable = (uint)plc.Read("DB1.DBD12.0");
            Console.WriteLine("DB1.DBD12.0: " + dWordVariable);
            // Word
            var wordVariable = (ushort)plc.Read("DB1.DBW16.0");
            Console.WriteLine("DB1.DBW16.0: " + wordVariable);

拿DB1.DBD12.0来举例:

var dWordVariable = (uint)plc.Read("DB1.DBD12.0");
textBox1.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ")+"DB1.DBD12.0读取值为:"+dWordVariable ;

s7netplus,后端,轮子,c#,开发语言,PLC
我们可以看到在软件里面这个程序块的值是123456,那么我们接下来用程序试一下。
s7netplus,后端,轮子,c#,开发语言,PLC
很完美,读取到了这个模块里的值。

4.写入数据

 plc.Write("DB1.DBD12.0", 123457);

一行写入,简单到爆炸,那么我们验证下效果。
s7netplus,后端,轮子,c#,开发语言,PLC
写入成功!是不是超级简单。文章来源地址https://www.toymoban.com/news/detail-556790.html

到了这里,关于C#使用S7netPlus与PLC通讯(超简单)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 两个西门子S7-1200PLC之间的TCP以太网通讯

    两个西门子S7-1200PLC之间的TCP以太网通讯 西门子S7_1200两个CPU之间的以太网通讯程序,一个做主站一个做从站,可实现两个CPU之间的数据发送和读取,外加两个西门子KTP1200 12寸的触摸屏, 两个西门子S7-1200 PLC之间的TCP以太网通讯 随着工业自动化的发展,越来越多的设备之间需

    2024年02月02日
    浏览(47)
  • 【西门子PLC S7-200smart与汇川变频器通过通讯控制】

    一,变频器通讯设置部分 先查看汇川变频器的使用说明书,将FD组“通讯参数设置”设置好对应波特率,数据格式,本机地址,通讯协议 FD-00 波特率设置   0:300bps 1:600bps 2:1200bps 3:2400bpd 4:4800bps 5:9600bps9:115200bps FD-01 数据格式    1:偶校验  2:奇校验  3:无校验 FD-02 本机地

    2024年02月04日
    浏览(77)
  • 西门子PLC S7-200SMART Modbus TCP通讯的步骤和要点

    Modbus TCP是一个非常传统,应用广泛的通讯协议,很多智能设备都支持该协议。西门子S7-200SMART及1200、1500系列都免费支持(300和400还是要高昂收费),并且做成了标准库,使用起来非常方便,下面简单介绍一下客户端的配置步骤,服务器的配置更加简单,可以自行摸索: 1、引

    2023年04月09日
    浏览(48)
  • C# 读取西门子S7系列PLC教程及源码

    若要创建驱动程序的实例,需要使用此构造函数: CPU:这指定您要连接到的  CPU 。支持的 CPU 包括: ip :指定 CPU 或外部以太网卡的 IP 地址 机架:它包含PLC的 机架 ,您可以在Step7的硬件配置中找到 插槽 :这是CPU的插槽,您可以在Step7的硬件配置中找到 例: 此代码为 IP 地

    2024年02月08日
    浏览(52)
  • 西门子PLC S7-1200程序实例,西门子1200与安川机器人TCP IP通讯

    西门子PLC S7-1200程序实例,博图版本V15 1,西门子1200与安川机器人TCP IP通讯,包含机器人GSD文件; 2,西门子1200控制6轴伺服电机,四台台脉冲控制台达B2伺服,两台PN通讯控制西门子V90伺服电机; 3,两台西门子1200开放式通讯交互数据联动; 4,与4台位移传感器modbus485轮询读取

    2024年04月10日
    浏览(54)
  • C#通过S7.NET库与西门子PLC数据交互

    拉了换一个简单的界面 我新建了一个DB数据块【DB1】,右键【DB1】,点击【属性】项,【优化的块访问】默认是勾选,要想显示数据块中地址偏移量,需要把【优化的块访问】勾选取消 1、右键项目名,选择图中【管理NuGet程序包】 2、在搜索框输入【S7netplus】,我安装的是第

    2024年02月12日
    浏览(44)
  • C#上位机与三菱PLC的通信07--使用第3方通讯库读写数据

    mcprotocol 是一个基于 Node.js 的三菱 PLC MC 协议通信库,具有以下特点: 支持多种三菱 PLC MC 协议的设备,如 FX3U、Q03UDECPU、QJ71E71 等。 支持多种功能码和数据类型,如读取线圈(M)、读取寄存器(D)、写入寄存器(D)、读取扩展寄存器(D*)、读取位寄存器(X/Y)、读取字寄

    2024年02月19日
    浏览(84)
  • 西门子PLC S7-1200程序实例 西门子1200与安川机器人TCP/IP通讯,包含机器人GSD文件

    西门子PLC S7-1200程序实例,博图版本V15,仅供电气编程者学习借鉴, 1,西门子1200与安川机器人TCP/IP通讯,包含机器人GSD文件; 2,西门子1200控制6轴伺服电机,四台台脉冲控制台达B2伺服,两台PN通讯控制西门子V90伺服电机; 3,两台西门子1200开放式通讯交互数据联动; 4,与

    2024年02月11日
    浏览(58)
  • C#与松下PLC串口通讯发送,接收数据

    记录与学习 第一次跟PLC打交道,C#与松下plc交互读写功能,很多东西都是自己在网上找的,整理了下做个记录  引入“Panasonic.dll”文件 下载地址 百度盘百度网盘 请输入提取码  提取码:8vnm  public Panasonic.PLC Sp_PLC;   Sp_PLC.WCS(\\\"R\\\", \\\"1\\\", true);//提示PLC软件初始化完成,可以正常工

    2023年04月12日
    浏览(54)
  • 编写C#程序实现和西门子1500PLC进行Modbus Tcp通讯仿真

    前言 本文章的主题是介绍Modbus Tcp通讯仿真,其中C#编写的程序充当客户端(Client),西门子1500PLC充当的服务器端(Server),有关Modbus Tcp协议的具体内容在此也不再赘述,大家可以自行阅读官方文档。 注:在实现其基本功能的条件下,本文的代码编写以及软件配置均简化。

    2024年02月11日
    浏览(68)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包