Ploxc

Modbux

Server Configuration

Setting up a server

Choose a port: The first server automatically gets port 502 (the Modbus standard). Additional servers get the next available port number. You can manually change the port if needed.

Give it a name: Give your server a descriptive name, especially when running multiple servers at the same time.

Select a Unit ID: Each Unit ID (0-247) behaves as an independent virtual device with its own registers. Select the Unit ID you want to configure from the dropdown.

Want multiple servers? Click + to add a new server (maximum 10). Switch between servers via the selector buttons at the top.

Adding registers

Expand the appropriate panel (Coils, Discrete Inputs, Input Registers or Holding Registers) and click Add Register.

For Input Registers and Holding Registers you configure:

  • Address (0-65535): must not overlap with existing registers
  • Data type: choose from int16, uint16 (1 register), int32, uint32, float (2 registers), int64, uint64, double (4 registers)
  • Value: a fixed value, or a value generator for dynamic data
  • Endianness (32/64-bit only): Big Endian (default) or Little Endian
  • Comment: optional description

Multi-register types automatically reserve consecutive addresses. A float at address 100 occupies addresses 100 and 101.

Coils and Discrete Inputs are added in groups:

  • Set the start address and the count
  • Each bit gets a consecutive address
  • Click directly on a bit value to toggle it (for coils)

The difference: with numeric registers you add them one by one with a specific data type. With booleans you add a range of addresses at once.

Edit via the pencil icon on the row. Delete via the trash icon, or use Clear All to remove all registers in a panel.

Value generators

Static values are handy, but for realistic testing you want data that changes. That's what value generators are for.

When adding a register, choose Generator as the value type and configure:

  • Min Value: the lower bound
  • Max Value: the upper bound
  • Interval: how often the value changes (1-3600 seconds)

Concrete example: you want to verify that your client's polling is working correctly.

Create an Input Register (float) with min=20, max=80 and interval=5. Every 5 seconds the value jumps to a random value between 20 and 80. Connect your client, enable polling, and you'll immediately see the values changing, confirming your polling setup works.

Generators only work with numeric registers, not booleans. The values are immediately visible to all connected clients.

Saving and loading configurations

If you have a complex server setup, you don't want to rebuild it every time.

  • Save: click Save. Everything is stored as JSON: server name, port, all Unit IDs with their registers, data types, values, generators, comments and endianness
  • Load: click Open and select a previously saved JSON file. This completely replaces the current configuration.