用C#做MODBUSRTU/TCP信息采集 点击:3976 | 回复:18



著名人物康康

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 6回
  • 年度积分:18
  • 历史总积分:270
  • 注册:2019年6月19日
发表于:2020-04-24 17:24:55
楼主

之前一直想用C#写一个MODBUS通信的案例,本来想用SerialPort直接写的,然后发现可以用 nModbus类库,可以直接引用来开发做Modbus接口,非常方便,不说了,上图上代码 

ps:nmodbus的中文说明书需要可以下载。

  1. 安装部署nModbus类库

    image.pngimage.png

2.winform设计

image.pngimage.png

3.为了测试我没有写成开放性的,也只是调用了timer做一个小的数据监控,

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO.Ports;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Modbus.Device;


namespace modbus
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            timer1.Enabled = false;
        }
        //实例化一个串口
        public SerialPort serialPort1 = new SerialPort("COM3");
        IModbusSerialMaster master;
        byte slaveID = 1;
            ushort startAddress = 0;
            ushort numOfPoints = 10;

        private void Form1_Load(object sender, EventArgs e)
        {
           

        }

        private void OpenBtn_Click(object sender, EventArgs e)
        {
            if (serialPort1.IsOpen == true)
            {
                OpenBtn.Text = "打开串口";
                serialPort1.Close();
                timer1.Enabled = false;
              }

            else {
                timer1.Enabled = true;
                OpenBtn.Text = "关闭串口";
                serialPort1.Open();
               
                //myThread.Start();
            }
            serialPort1.BaudRate = 9600;//配置
            serialPort1.DataBits = 8;//数据位
            serialPort1.Parity = Parity.None;//校验位
            serialPort1.StopBits = StopBits.One;//停止位
            //创建 Rtu 传输模式、通过串口 port 通信的主站
            master = ModbusSerialMaster.CreateRtu(serialPort1);
            master.Transport.ReadTimeout = 1000;//读取串口数据超时为 1000ms master.Transport.WriteTimeout = 1000;//写入串口数据超时
            master.Transport.Retries = 3;//重试次数
        }
       

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            serialPort1.Close();
            timer1.Enabled = false;
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            bool[] all = master.ReadCoils(slaveID, startAddress, numOfPoints);
            textBox1.Text = all[0].ToString();
            if (all[0] == true)
            {
                button1.BackColor = Color.Red;
            }
            else { button1.BackColor = Color.Green; }

        }

    }
}


正在下载,请等待……
下载附件需3积分!



楼主最近还看过



wangoo1

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 558回
  • 年度积分:0
  • 历史总积分:49
  • 注册:2009年2月25日
发表于:2021-01-21 20:49:22
1楼

收藏保存,留着备用,谢谢分享

小逸爸爸

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 479回
  • 年度积分:0
  • 历史总积分:276
  • 注册:2016年1月27日
发表于:2021-02-17 10:58:38
2楼

谢谢你的分享

WaitingAlone

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 289回
  • 年度积分:0
  • 历史总积分:257
  • 注册:2018年5月04日
发表于:2021-02-18 17:04:56
3楼

谢谢

function888

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 732回
  • 年度积分:0
  • 历史总积分:102
  • 注册:2007年12月01日
发表于:2021-03-06 17:33:04
4楼

下载学习,谢谢分享

hhylvwqp1

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 170回
  • 年度积分:0
  • 历史总积分:92
  • 注册:2017年2月27日
发表于:2021-04-20 08:52:56
5楼

感谢楼主无私分享

function888

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 732回
  • 年度积分:0
  • 历史总积分:102
  • 注册:2007年12月01日
发表于:2021-05-30 10:52:29
6楼

不错不错,谢谢分享

zhaofengyx

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 11回
  • 年度积分:0
  • 历史总积分:56
  • 注册:2021年9月02日
发表于:2021-09-02 22:06:44
7楼

收藏保存,谢谢分享

helven90

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 64回
  • 年度积分:12
  • 历史总积分:315
  • 注册:2014年6月27日
发表于:2021-09-28 20:06:43
8楼

不错不错,谢谢分享

Lonely_99

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 2508回
  • 年度积分:0
  • 历史总积分:115
  • 注册:2014年10月29日
发表于:2021-09-29 13:44:59
9楼

谢谢分享

jiaoguanhui

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 629回
  • 年度积分:0
  • 历史总积分:62
  • 注册:2017年3月25日
发表于:2021-12-27 19:10:08
10楼

感謝樓主的分享

落尘丶

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 128回
  • 年度积分:22
  • 历史总积分:236
  • 注册:2020年9月01日
发表于:2022-02-18 14:20:11
11楼

收藏保存,留着备用,谢谢分享

gezhuag

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 6回
  • 年度积分:0
  • 历史总积分:237
  • 注册:2010年5月09日
发表于:2022-04-02 09:41:38
12楼

感谢分享,马上借鉴一下,

独孤小白

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 49回
  • 年度积分:0
  • 历史总积分:234
  • 注册:2016年9月10日
发表于:2022-07-22 14:20:23
13楼

正是所需要的 感谢楼主分享

我有一个傻丫头

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 285回
  • 年度积分:13
  • 历史总积分:209
  • 注册:2016年12月26日
发表于:2022-09-29 10:09:53
14楼

感谢楼主分享,非常优秀的感觉

落尘丶

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 128回
  • 年度积分:22
  • 历史总积分:236
  • 注册:2020年9月01日
发表于:2023-02-14 15:36:46
15楼

感谢分享,学习,学习。

rock1234

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 74回
  • 年度积分:0
  • 历史总积分:103
  • 注册:2008年3月28日
发表于:2023-11-28 19:36:40
16楼

是PDF手册

ace2008888

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 0回
  • 年度积分:0
  • 历史总积分:60
  • 注册:2017年3月22日
发表于:2023-11-28 20:28:12
17楼

这里有完整源代码 tlincat.com/xz/20.html 请下载。

zjw7616

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 19回
  • 年度积分:0
  • 历史总积分:51
  • 注册:2004年1月04日
发表于:2024-01-09 14:03:04
18楼

感谢楼主分享



热门招聘
相关主题

官方公众号

智造工程师