Menu

Methods ModbusClient

ModbusClient(string ipAddress, int port)

Constructor - Executed when object is created
Parameter ipAddress: IP-Address of Modbus-TCP Server
Parameter port: Port of Modbus-TCP Server listening

ModbusClient(string serialPort)

Constructor - Executed when object is created - for serial line connection (RTU)
Parameter serialPort: Serial-Port Name e.G. "COM1"

ModbusClient()

Constructor - Executed when Object is created

void Connect()

Connects to the Modbus-TCP Server or Modbus-RTU Slave

void Connect(string ipAddress, int port)

Connects to the Modbus-TCP Server with a different IP-Address or Port as specified in constructor
Parameter ipAddress: IP-Address of Modbus-TCP Server
Parameter port: Port of Modbus-TCP Server listening

public bool[] ReadDiscreteInputs(int startingAddress, int quantity)

Read discrete Inputs from Server (Function Code 2) [Example ReadDiscreteInputs]

public bool[] ReadDiscreteInputs(int startingAddress, int quantity, string mqttBrokerAddress)

Read discrete Inputs from Server (Function Code 2) and Publish values to a Mqtt Broker. The values will be published to the topic easymodbusclient/discreteinputs/"zero based address". The root topic (default: easymodbusclient) can be changed using the Property string MqttRootTopic. The values will be pubished as a string.

public bool[] ReadCoils(int startingAddress, int quantity)

Read coils from Server (Function Code 1)

public bool[] ReadCoils(int startingAddress, int quantity, string mqttBrokerAddress)

Read coils from Server (Function Code 1) and Publish values to a Mqtt Broker. The values will be published to the topic easymodbusclient/coils/"zero based address". The root topic (default: easymodbusclient) can be changed using the Property string MqttRootTopic. The values will be pubished as a string.

public int[] ReadHoldingRegisters(int startingAddress, int quantity)

Read holding registers from Server (Function Code 3)

public int[] ReadHoldingRegisters(int startingAddress, int quantity, string mqttBrokerAddress)

Read Holding Registers from Server (Function Code 3) and Publish values to a Mqtt Broker. The values will be published to the topic easymodbusclient/holdingregisters/"zero based address". The root topic (default: easymodbusclient) can be changed using the Property string MqttRootTopic. The values will be pubished as a string.

public int[] ReadInputRegisters(int startingAddress, int quantity)

Read Input registers from Server (Function Code 4)

public int[] ReadInputRegisters(int startingAddress, int quantity, string mqttBrokerAddress)

Read Input Registers from Server (Function Code 4) and Publish values to a Mqtt Broker. The values will be published to the topic easymodbusclient/inputregisters/"zero based address". The root topic (default: easymodbusclient) can be changed using the Property string MqttRootTopic. The values will be pubished as a string.

void WriteSingleCoil(int startingAddress, bool value)

Write single Coil to Server (Function Code 5) [Example WriteSingleCoil]

void WriteSingleRegister(int startingAddress, int value)

Write single Register to Server (Function Code 6)

void WriteMultipleCoils(int startingAddress, bool[] values)

Write multiple coils to Server (Function Code 15)

void WriteMultipleRegisters(int startingAddress, int[] values)

Write multiple registers to server (Function Code 16)

int[] ReadWriteMultipleRegisters(int startingAddressRead, int quantityRead, int startingAddressWrite, int quantityWrite)

Reads and Writes Multiple Registers (Function Code 23)

void Disconnect()

close connection to Server

static float ConvertRegistersToFloat(int[] registers)

Converts two registers into float value - can be used to read float values from server
First sent Register must be the "Low Register" - Second "High Register"
Parameter int[] registers: Two Registers will be connected for the float value

Example to read float values from server:

EasyModbus.ModbusClient.ConvertRegistersToFloat(modbusClient.ReadHoldingRegisters(19,2));

static float ConvertRegistersToFloat(int[] registers, RegisterOrder registerOrder)

Converts two registers into float value - can be used to read float values from server
Parameter int[] registers: Two Registers will be connected for the float value
Parameter RegisterOrder registerOrder: The order of High Register and Low Register can determined

Example to read float values from server:

EasyModbus.ModbusClient.ConvertRegistersToFloat(modbusClient.ReadHoldingRegisters(19,2), RegisterOrder.LowHigh);

static Int32 ConvertRegistersToDouble(int[] registers)

Converts two registers into 32Bit value - can be used to read Dauble values from server
First sent Register must be the "Low Register" - Second "High Register"
Parameter int[] registers: Two Registers will be connected for the double value

Example to read double values from server:

EasyModbus.ModbusClient.ConvertRegistersToDouble(modbusClient.ReadHoldingRegisters(19,2));

static float ConvertRegistersToDouble(int[] registers, RegisterOrder registerOrder)

Converts two registers into 32Bit value - can be used to read double values from server
Parameter int[] registers: Two Registers will be connected for the double value
Parameter RegisterOrder registerOrder: The order of High Register and Low Register can determined

Example to read double values from server:

EasyModbus.ModbusClient.ConvertRegistersToDouble(modbusClient.ReadHoldingRegisters(19,2), RegisterOrder.LowHigh);

static int[] ConvertFloatToTwoRegisters(float floatValue)

Converts float value into two registers - can be used to write float values to server

Example to write float value into server:

modbusClient.WriteMultipleRegisters(24, EasyModbus.ModbusClient.ConvertFloatToTwoRegisters((float)1.22));

static int[] ConvertFloatToTwoRegisters(float floatValue, RegisterOrder registerOrder)

Converts float value into two registers - can be used to write float values to server
Parameter RegisterOrder registerOrder: The order of High Register and Low Register can determined

Example to write float value into server:

modbusClient.WriteMultipleRegisters(24, EasyModbus.ModbusClient.ConvertFloatToTwoRegisters((float)1.22), RegisterOrder.LowHigh);

static int[] ConvertDoubleToTwoRegisters(Int32 doubleValue)

Converts 32Bit value into two registers - can be used to write double values to server

Example to write double value into server:

modbusClient.WriteMultipleRegisters(24, EasyModbus.ModbusClient.ConvertDoubleToTwoRegisters((Int32)122546));

static int[] ConvertDoubleToTwoRegisters(Int32 doubleValue, RegisterOrder registerOrder)

Converts 32Bit value into two registers - can be used to write double values to server
Parameter RegisterOrder registerOrder: The order of High Register and Low Register can determined

Example to write double value into server:

modbusClient.WriteMultipleRegisters(24, EasyModbus.ModbusClient.ConvertDoubleToTwoRegisters((Int32)122546), RegisterOrder.LowHigh);

public static string ConvertRegistersToString(int[] registers, int offset, int stringLength)

Converts 16 – Bit Register values to String
registers – Register array received via Modbus
offset – First Register containing the String to convert
stringLength – number of characters in String (must be even)
returns: Converted String

public static int[] ConvertStringToRegisters(string stringToConvert)

Converts a String to 16 – Bit Registers
registers – Register array received via Modbus
returns: Converted String

static UInt16 calculateCRC(byte[] data, UInt16 numberOfBytes, int startByte)

Caclculates CRC-Checksum for Modbus-RTU. Only needed for internal use


Related

Wiki: Example ReadDiscreteInputs
Wiki: Example WriteSingleCoil
Wiki: Home

Discussion

  • Jim Fell

    Jim Fell - 2018-09-21

    Is there a function for sending custom Modbus messages?

     
  • ali

    ali - 2021-09-26

    ı need floating write register how am I can

     
    • ali

      ali - 2021-09-26

      ı
      static int[] ConvertFloatToTwoRegisters(float floatValue)

      Converts float value into two registers - can be used to write float values
      to server

      Example to write float value into server:

      modbusClient.WriteMultipleRegisters(24,
      EasyModbus.ModbusClient.ConvertFloatToTwoRegisters((float)1.22));

      ı use example but

      ı have error message

      modbuscliend does not definition for ConvertFloatToTwoRegisters

      Can You Help me

      ali alikalkan@users.sourceforge.net, 26 Eyl 2021 Paz, 12:26 tarihinde
      şunu yazdı:

      ı need floating write register how am I can

      Sent from sourceforge.net because you indicated interest in
      https://sourceforge.net/p/easymodbustcp/wiki/Methods%20ModbusClient/

      To unsubscribe from further messages, please visit
      https://sourceforge.net/auth/subscriptions/

       

Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.