Nmodbus/modbus上位机(C#)

#实习不久上手一个基于modbus通讯协议的上位机软件

  期间网上查了大量的相关知识,感觉动起手来还是有点困难,无意boss的一句话让我改变了方向。我去接触了modbus类库无意中发现了开源的nmodbus类库,在网上查到了相关的使用手册——nmodbus API 使用手册。
  这下简直是轻松了好多,直接引用进来,然后调用相关功能即可。
  关于nmodbus包的下载,其实vs很强大。

以用vs2013为例;
   
  1.在项目工程里面--管理NuGet程序包--搜索你需要的包(nmodbus4)--安装即可。
  2.然后只需要引用using modbus.device;具体会根据你的需求添加你需要的命名空间就ok。
  3.根据你的需求去实现功能就可以了。

#有了nmodbus以后 你直接可以读取寄存器里面的数据,完全不需要crc校验去验证数据的准确性。

定义初始化如下:
    
     public SerialPort serialPort1 = new SerialPort("COM1");//声明串口
     public IModbusSerialMaster master= ModbusSerialMaster.CreateRtu(serialPort1);//连接方式是如RTU
     //串口的初始化如下
     serialPort1.BaudRate = 115200;
     serialPort1.DataBits = 8;
     serialPort1.Parity = Parity.None;
     serialPort1.StopBits = StopBits.One;
     serialPort1.Open();
基本功能如下;
     读取数据函数:
             byte slaveId = 1;
             ushort startAddress = 0;
             ushort numRegisters = 10;             
             ushort[] registers = master.ReadHoldingRegisters(slaveId, startAddress, numRegisters);
             //读取寄存器数据到register数组中
             //需要处理数据的话 后面可能就需要数据的转化
     写数据函数:
             byte slaveID = 1;
             ushort registerAddress = 0;
             ushort value = 100;//你要写的值
             master.WriteSingleRegister(slaveID, registerAddress, value);
      
#后面涉及到数据的连续读取,建议使用定时响应事件,最好每次读完寄存器数据后执行清零操作。

            定时事件函数:
                              System.Timers.Timer t = new System.Timers.Timer(1000);//定时1000毫秒
                               t.Elapsed += new System.Timers.ElapsedEventHandler(serialPort1_DataReceived);绑定事件
                               t.AutoReset = true;//执行一次false
                               t.Enabled = true;


###大四实习生,希望能帮到和我一样刚开始无从下手的你###

相关推荐
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页