C# 使用NModbus 多Slave站编程方法

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

    Modbus是开源的通讯协议,使用简单灵活,相关知识容易获取。实际应用中,常常有将各种RS232、RS485等设备联网,供远程服务器读取的需求,这是采用一台边缘的转换网关,连接多台设备,然后转换为Modbus是一个不错的方案。

    之前使用过一个NModbus的C#分支版本NModbus4,使用也比较简单,提供数据锁解决并发问题,提供Master连接数量、读取数据请求次数等监控功能。但NModbus4已经7年多没有更新,测试发现读取数据时,如果长度超出Modbus协议约束的长度,会导致异常造成服务退出,而且这个异常是应用层拦截和屏蔽不了。另外,NModbus4的多从站实现方法较为复杂,使用中就改用为NModbus开源库。

   多Slave站测试代码段如下:

using NModbus;
using System;
using System.Net.Sockets;
using System.Windows.Forms;
using System.Net;

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        private TcpListener modbusListener;
        IModbusSlave slave1;
        IModbusSlave slave2;

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //创建通讯绑定端口
            modbusListener = new TcpListener(IPAddress.Parse("0.0.0.0"), 502);
            modbusListener.Start();

            IModbusFactory factory = new ModbusFactory();

            IModbusSlaveNetwork modbusSlaveNetwork = factory.CreateSlaveNetwork(modbusListener);

            //创建两个Slave设备,Id分别为1和2
            slave1 = factory.CreateSlave(1);
            slave2 = factory.CreateSlave(2);

            modbusSlaveNetwork.AddSlave(slave1);
            modbusSlaveNetwork.AddSlave(slave2);

            //接受连接
            modbusSlaveNetwork.ListenAsync();

            timer1.Enabled = true;

        }
        //数据仿真
        ushort uValue = 0;
        private void timer1_Tick(object sender, EventArgs e)
        {
            ushort[] v = new ushort[2];
            v[0] = (ushort)(uValue++%10000);
            v[1] = (ushort)(uValue++ % 10000);
            slave1.DataStore.InputRegisters.WritePoints(0, v);
            
            v[0] = (ushort)(uValue++ % 10000+20000);
            v[1] = (ushort)(uValue++ % 10000 + 20000);
            slave2.DataStore.InputRegisters.WritePoints(0, v);
        }
    }
}

       NModbus库的读写方法是基于数组的,这样也变相解决int32,float等数据写入时并发读可以能导致的数据更新异常。 实际应用中,可以读完一个仪表的数据,然后分类(bool和其他,其他包括word、int、float等)写入,同类的一次更新完,使用也比较方便。 

用Modscan32测试,Device Id分别使用1和2,可以看到数据明显不同。

nmodbus,IoT,物联网,网络协议,c#

nmodbus,IoT,物联网,网络协议,c#

  需要注意的是,NModbus的地址是从0开始,而NModbus4的地址是从1开始。

相关连接:

GitHub - NModbus/NModbus

C#使用NModbus4读写Modbus数据文章来源地址https://www.toymoban.com/news/detail-646636.html

到了这里,关于C# 使用NModbus 多Slave站编程方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • OPC通信从入门到精通_2_OPC通信详解和C#客户端编程(OPC基础概念;OPC通信仿真(KepServer作为OPC服务器;使用Modbus Slave和另外软件仿真2个PLC设备);C#程序)

    OPC诞生缘由:OPC诞生之前,软件工程师是不了解硬件和协议的 OPC解决的是软件和硬件之间的问题,让软件工程师无需了解协议及底层硬件,例如串口协议等 OPC起到了桥梁的作用:软件工程师对接OPC,OPC对接硬件 OPC是一种通讯方式,落到实处就是一个软件,就需要开发相应的

    2024年02月05日
    浏览(69)
  • 【雕爷学编程】MicroPython动手做(31)——物联网之Easy IoT

    1、物联网的诞生 美国计算机巨头微软(Microsoft)创办人、世界首富比尔盖茨,在1995年出版的《未来之路》一书中,提及“物物互联”。1998年麻省理工学院提出,当时被称作EPC系统的物联网构想。2005年11月,国际电信联盟发布《ITU互联网报告2005:物联网》,正式提出物联网时代

    2024年02月14日
    浏览(45)
  • 【雕爷学编程】MicroPython动手做(31)——物联网之Easy IoT 2

    1、物联网的诞生 美国计算机巨头微软(Microsoft)创办人、世界首富比尔盖茨,在1995年出版的《未来之路》一书中,提及“物物互联”。1998年麻省理工学院提出,当时被称作EPC系统的物联网构想。2005年11月,国际电信联盟发布《ITU互联网报告2005:物联网》,正式提出物联网时代

    2024年02月14日
    浏览(41)
  • C# Modbus通信从入门到精通(11)——调试软件Modbus Slave和Modbus Poll的使用

    我们在开发Modbus程序的时候,会需要测试以下我们写的Modbus程序有没有问题,这时候就需要使用到Modbus Slave和Modbus Poll这两个软件,Modbus Slave是模拟Modbus从站,Modbus Poll是模拟Modbus从站主站的, 一般情况下我们开发的Modbus主站程序,当我们没有硬件作为从站的时候,我们可以

    2024年02月06日
    浏览(52)
  • c#编程基础学习之方法

    实例 在程序类内创建一个方法: 1、在C#中,命名方法时最好以 大写字母 开头,因为这样可以使代码更易于阅读; 2、定义方法名称后跟 括号() ; 3、定义一次代码,多次使用,用于执行某些操作时也称为 函数 ; 4、调用(执行)一个方法,写下 方法名 ,后跟 括号() 和

    2024年04月11日
    浏览(25)
  • 物联网(IoT)的北向和南向

    物联网(IoT)的北向和南向是指IoT系统中的数据流和通信方向,用于描述数据在系统中的传输和处理方向。以下是北向和南向在物联网中的含义: 北向通信(Northbound Communication): 北向通信是指数据从底层物联网设备(例如传感器、终端设备)向上层系统传输的通信方向。

    2024年02月03日
    浏览(35)
  • IOT(物联网)的七大通信协议

    在物联网协议中,我们一般分为两大类,一类是传输协议,一类是通信协议。传输协议一般负责子网内设备间的组网及通信;通信协议则主要是运行在传统互联网TCP/IP协议之上的设备通讯协议,负责设备通过互联网进行数据交换及通信。 上图为物联网联接的问题空间,其中物

    2024年02月07日
    浏览(46)
  • 什么是物联网?如何保护物联网iot安全性

    物联网iot:物联网(IoT)将生活中事物以网络进行连接,彼此交换信息。整个世界借由设备连接成一体。 对于消费者而言,这意味着您可以在大洋彼岸远程调节家中的恒温器。但是对企业而言,物联网不仅创造了连接客户和合作伙伴的新机会,还能有效收集、存储和分析海量

    2024年02月05日
    浏览(40)
  • 物联网(IoT)安全挑战与解决方案: 分析物联网设备面临的安全威胁,以及如何设计和管理安全的IoT生态系统

      随着科技的飞速发展,物联网(IoT)作为连接世界的桥梁,已经成为现代社会不可或缺的一部分。然而,随着IoT设备数量的不断增加,其安全问题也日益显著。本文将深入探讨IoT领域面临的安全挑战,以及我们如何通过创新的解决方案来构建一个安全可靠的IoT生态系统。

    2024年02月12日
    浏览(48)
  • 什么是物联网(IoT),解释物联网的架构和应用场景

    物联网(IoT,Internet of Things)是一种通过互联网进行连接和监控的网络,它将各种物理设备和系统集成在一起,使得数据可以远程传输和分析。物联网的应用场景非常广泛,它可以帮助人们更好地理解和管理周围的环境和事物。 物联网的架构通常由三个部分组成: 感知层:

    2024年02月07日
    浏览(40)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包