C# Modbus 資料讀取 使用NModBus4庫

來源:互聯網
上載者:User

標籤:整型   holding   傳回值   dad   modbus   參數   gis   注意   val   

ModBus通訊協議

 

    

方法名

作用

所需參數

傳回值

對應功能碼

ReadCoils

讀取DO的狀態

從站地址(8位)

byte slaveAddress

起始地址(16位)

 

ushort startAddress

讀取數量(16位)

ushort numberOfPoints

bool[]

01

ReadInputs

讀取DI的狀態

從站地址(8位)

byte slaveAddress

起始地址(16位)

 

ushort startAddress

讀取數量(16位)

ushort numberOfPoints

bool[]

02

ReadHoldingRegisters

讀取AO的值

從站地址(8位)

byte slaveAddress

起始地址(16位) 

ushort startAddress

讀取數量(16位)

ushort numberOfPoints

ushort[]

03

ReadInputRegisters

讀取AI的值

從站地址(8 位)

byte slaveAddress

起始地址(16位)

 

ushort startAddress

讀取數量(16位)

ushort numberOfPoints

ushort[]

04

WriteSingleCoil

寫入值到DO

從站地址(8位)

byte slaveAddress

線圈地址(16位)

ushort coilAddress

寫入值(布爾型)

bool value

無傳回值

05

WriteSingleRegister

寫入值到AO

從站地址(8位)

byte slaveAddress

寄存器地址(16位)

ushort registerAddress

寫入值(16位)

ushort value

無傳回值

06

WriteMultipleCoils

寫多線圈寄存器

從站地址(8位)

byte slaveAddress

起始地址(16位)

ushort startAddress

寫入值(布爾型數組)

bool[] data

無傳回值

15

WriteMultipleRegisters

寫多個保持寄存器

從站地址(8位)

byte slaveAddress

 

起始地址(16位)

ushort startAddress,

寄存器值(16位整型數組)

ushort[] data

無傳回值

16

ReadWriteMultipleRegisters

讀寫多個保持寄存器

從站地址(8位)

byte slaveAddress

讀起始地址(16位)

ushort startReadAddress

 

讀取數量(16位)

ushort numberOfPointsToRead,

寫入起始地址(16位)

ushort startWriteAddress,

寫入值(16位整型數組)

ushort[] writeData

ushort[]

23

Modbus Slave

        這個是安裝包ModbusSlaveSetup64Bit     註冊碼:5455415451475662

        

 

        

 

 

modbus通訊協議NET庫

    這樣的開源庫很多,我這邊用的庫是github的開源實作類別庫:NModBus4,github地址:https://github.com/NModbus4/NModbus4

 

          我用Modbus Slave類比一個從機

            

           設定資料

            

 

           NModbus4的讀取從機程式碼範例

           

 1             IPAddress address = new IPAddress(new byte[] { 127, 0, 0, 1 }); 2             using (TcpClient client = new TcpClient(address.ToString(), 502)) 3             { 4                 client.SendTimeout = 1; 5                 //client.op 6                 ModbusIpMaster master = ModbusIpMaster.CreateIp(client); 7                 //master.op 8                 // read five input values 9                 ushort startAddress = 0;10                 ushort numInputs = 10;11                 bool[] inputs = master.ReadCoils(1, startAddress, numInputs);12 13                 for (int i = 0; i < numInputs; i++)14                 {15                     Console.WriteLine($"Input {(startAddress + i)}={(inputs[i] ? 1 : 0)}");16                 }17 18             }

   這邊值得注意的是主機Read的方法第一個參數是slaveId  如果不加就startAddress And numInputs   NModbus就會預設 slaveId是0  一直異常( d(╯﹏╰)b 痛苦經曆~~)

 

   

   以上資料是 剛才設定的DO 狀態

   在示範一個讀取AI的值

     

     

 

     代碼沒差多少就是方法ReadInputRegisters不一樣  . 以下是範例程式碼

 1 IPAddress address = new IPAddress(new byte[] { 127, 0, 0, 1 }); 2             using (TcpClient client = new TcpClient(address.ToString(), 502)) 3             { 4                 client.SendTimeout = 1; 5                 //client.op 6                 ModbusIpMaster master = ModbusIpMaster.CreateIp(client); 7                 //master.op 8                 // read five input values 9                 ushort startAddress = 0;10                 ushort numInputs = 10;11                 ushort[] inputs = master.ReadInputRegisters(2, startAddress, numInputs);12 13                 for (int i = 0; i < numInputs; i++)14                 {15                     Console.WriteLine($"Register {(startAddress + i)}={(inputs[i])}");16                 }17 18             }

 

 

 

 

C# Modbus 資料讀取 使用NModBus4庫

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.