Modbus Master Examples

In both of these examples, the IPEndPoint object ep for the MODBUS slave is set to IP address 192.168.0.150. A Modbus object, mb is created that refers to that endpoint. The mb object is used for communicating with the slave.

This first example shows a procedure that reads from a MODBUS slave.

Public Sub Modbus_Read_Example
Dim ep As New IPEndPoint("192.168.0.150")
Dim mb As New Modbus(ep)
Dim ii As Integer
Dim bool() As Boolean
Dim input() As Integer

mb.ReadCoils(1, 16, bool)
For ii = 1 To 16
Console.Write("Coil " & CStr(ii) & ": ")
Console.Writeline(bool(ii-1))
Next ii

mb.ReadDiscreteInputs(1, 16, bool)
For ii = 1 To 16
Console.Write("Input " & CStr(ii) & ": ")
Console.Writeline(bool(ii-1))
Next ii

mb.ReadHoldingRegisters(1, 2, input)
For ii = 1 To 2
Console.Write("HReg " & CStr(ii) & ": ")
Console.Writeline(Hex(input(ii-1)))
Next ii

mb.ReadInputRegisters(1, 2, input)
For ii = 1 To 2
Console.Write("IReg " & CStr(ii) & ": ")
Console.Writeline(Hex(input(ii-1)))
Next ii

mb.Close()

End Sub

The next example shows a procedure that writes to a MODBUS slave.

Public Sub Modbus_Write_Example
Dim ep As New IPEndPoint("192.168.0.150")
Dim mb As New Modbus(ep)
Dim ii As Integer
Dim output() As Integer
Dim bool() As Boolean

For ii = 1 To 16
mb.WriteSingleCoil(ii, ii And 1)
Next ii

mb.WriteSingleRegister(1, 600)

ReDim bool(15)
For ii = 0 To 15
bool(ii) = ii And 2
Next ii
mb.WriteMultipleCoils(1, bool)

ReDim output(15)
For ii = 0 To 15
output(ii) = ii*ii
Next ii

mb.WriteMultipleRegisters(1, output)

End Sub