首页 > 编程语言 >C# NModbus 4 demo

C# NModbus 4 demo

时间:2024-04-13 19:22:52浏览次数:25  
标签:NModbus C# demo ushort numberOfPoints master slaveAddress startAddress port

  1.添加 modbus 程序包

 

2. 创建 ModbusSerialMaster  实例对象 

private static ModbusSerialMaster CreateModbusRtu()
{
SerialPort port = new SerialPort();
port.PortName = "COM11";
port.BaudRate = 9600;
port.Parity = Parity.None;
port.DataBits = 8;
port.StopBits = StopBits.One;
port.Open();

//创建Modbus RTU 客户端实例
ModbusSerialMaster master = ModbusSerialMaster.CreateRtu(port);
return master;
}

3. 常用 8个功能码的使用

// 读输出线圈 功能码 0x01
byte slaveAddress = 1;//站点
ushort startAddress = 0;//起始地址
ushort numberOfPoints = 10;// 读多少个
bool[] bools = master.ReadCoils(slaveAddress, startAddress, numberOfPoints);

 

// 读输入线圈 功能码 0x02
byte slaveAddress = 1;//站点
ushort startAddress = 0;//起始地址
ushort numberOfPoints = 10;// 读多少个
bool[] bools = master.ReadInputs(slaveAddress, startAddress, numberOfPoints);

和 输出线圈一样 只不过  功能码换成了 02

 

 

读 输入/输出寄存器 功能码 0x04/0x03

ushort[] ushorts = master.ReadHoldingRegisters(slaveAddress, startAddress, numberOfPoints);

ushort[] ushorts = master.ReadInputRegisters(slaveAddress, startAddress, numberOfPoints);

 

 

 

 

 

 

 

 

写单个线圈

//写入单个线圈
byte slaveAddress = 1;//从站地址
ushort coilAddress = 0;//起始地址
bool value=true;//写 true=1 或 false=0
master.WriteSingleCoil(slaveAddress, coilAddress, value);

//写多个线圈 功能码 0x0F
byte slaveAddress = 1;//从站地址
ushort startAddress = 0;//起始地址
bool [] values = { true,false,true,false };//写 true=1 或 false=0
master.WriteMultipleCoils(slaveAddress, startAddress,values);

 

//写单个寄存器 功能码 0x06
byte slaveAddress = 1;//站点
ushort registerAddress = 0;//寄存器地址
ushort value = 1001;//要写入的数据
master.WriteSingleRegister(slaveAddress,registerAddress, value);

 

//写多个寄存器 功能码 0x10
byte slaveAddress = 1;//站点
ushort registerstartAddress = 0;//寄存器起始地址
ushort [] values = {1,2,3,4,5 };//要写入的数据
master.WriteMultipleRegisters(slaveAddress, registerstartAddress, values);

 

标签:NModbus,C#,demo,ushort,numberOfPoints,master,slaveAddress,startAddress,port
From: https://www.cnblogs.com/tomwulog/p/18133240

相关文章

  • Docker+Net8运行https
    环境:win11,docker4.28.0,Net8。使用windows版docker 跑老外的run-aspnetcore-microservices 这个分布式项目时,最开始直接运行会遇到这个问题。中间也试了几种方法,有ok也有不行的,有些较为麻烦。Net8开始Docker 端口 默认端口8080了下面是我的1生成pfx文件d......
  • Veriadic templates
    Veriadictemplates数量不定的模板参数声明方式:#pragmaonce#ifndef__VARIADICT__#define__VARIADICT__​/*为什么需要定义这个空函数,因为传参到最后传入最后一位参数时后面的一组参数已经没有了.就是0所以这个版本就是没有参数的.当最后一个变成0个的时候调用的是空方法*/......
  • C与C++在函数和数据的比较
    C与C++在函数和数据的比较CData(struct)数据是一个类型->根据数据的类型创建出真正的数据Function函数就是用来处理数据的缺陷:语言没提供关键字.所以数据是全局的->各个函数都可以处理数据C++Data将数据和处理这些数据的函数包裹在一起,其他函数看不到其他函数处理......
  • FastAPI-MySQL-Cookie代码实现
    连接数据库fromsqlalchemyimportcreate_enginefromsqlalchemy.ext.declarativeimportdeclarative_basefromsqlalchemy.ormimportsessionmakerfromurllib.parseimportquote_pluspassword='123456'encoded_password=quote_plus(password)SQLALCHEM......
  • 实验2 C语言分支与循环基础应用编程
    1.实验任务11#include<stdio.h>2#include<stdlib.h>3#include<time.h>4#defineN556intmain()7{8intnumber;9inti;10srand(time(0));//以当前系统时间作为随机种子11for(i=0;i<N;++i)12{number=rand()%......
  • AtCoder Beginner Contest 347
    A-Divisible#include<bits/stdc++.h>usingnamespacestd;usingi32=int32_t;usingi64=longlong;#defineinti64usingvi=vector<i64>;usingpii=pair<int,int>;usingpiii=tuple<int,int,int>;constintinf=1e......
  • SRPCore GenerateHLSL解析及其扩展
    序言在之前的项目开发HDRP的时候,就觉得绑定RT的管理就像一坨屎一样难受,改了管线RT的绑定顺序,原来的Shader输出又会有问题(主要是SV_Target顺序问题),没办法只能够在管线原来的绑定上面,重新写了一份文件,让Shader的共用Pass引用,这样就能规范不同Shaderpass的输出了。但是这只是解......
  • idea、pycharm、datagrip全家桶彻底卸载
    前序在win11环境,以idea2023.3.6版本为例教大家如何彻底卸载idea。一、保存配置信息(可跳过)在卸载重装idea时想保留自己的一些配置,例如颜色、字体大小等等,可以导出自己的配置信息。如果不想保存可跳过。1、导出配置File>ManageIDESettings>ExportSettings选好存......
  • UE UDebugDrawService 使用心得
    图片来源:(7)UnrealEngine5Tutorial-NPCAIPart3:MassAIAnimated-YouTube有这样一个Debug信息是非常酷也非常有用的东西绘制逻辑位于GameplayDebuggerCategory_Mass.cpp,代码非常的长,这里就不展示了源码流程如下图 前方施工中……......
  • CTFshow-Web入门模块-爆破
    CTFshow-Web入门模块-爆破by故人叹、web21考察点:burpsuite使用、自定义迭代器使用题目提供了字典,要求登录并提示了爆破,使用burpsuite抓包并操作:(1)用户名一般为admin,密码随意输,抓包并发送给爆破模块。可以看到Basic后有一段base64编码,解码得到用户名:密码的格式,证明我们之......