Skip to main content

Device Reference

Complete reference of all Brainboxes devices supported by the Brainboxes.IO library.

ED-Series (Ethernet Remote IO)

ED-series devices provide digital and/or analog IO lines accessible over Ethernet. All ED devices connect via TCPConnection and support both ASCII (port 9500) and Modbus TCP (port 502) protocols.

Digital IO Devices

ClassProductDigital InputsDigital OutputsDescription
ED588ED-588888 DI + 8 DO + Serial Gateway
ED516ED-51616016 Digital Inputs + Serial Gateway
ED527ED-52701616 Digital Outputs + Serial Gateway
ED538ED-53884 (relay)8 DI + 4 Relays + Serial Gateway
ED004ED-004444 DIO + RS-232
ED204ED-204444 DIO + RS-232
ED008ED-008888 Digital IO Ports
ED038ED-03833 (relay)3 Relays + 3 Digital Inputs

Analog IO Devices

ClassProductAnalog InputsAnalog OutputsSensor TypeDescription
ED549ED-54980Voltage/Current/Temp8 Analog Inputs + Serial Gateway
ED560ED-56004Voltage/Current4 Analog Outputs + Serial Gateway
ED582ED-58240RTD (PT100/PT1000)4 RTD Temperature Inputs + Serial Gateway
ED593ED-59380Thermocouple8 Thermocouple Inputs + Serial Gateway

Edge Controller

ClassProductDigital IOSerial PortsDescription
BB400BB-40081Industrial Raspberry Pi Edge Controller

The BB-400 has the same IO as the ED-008 but also runs Linux, allowing code to execute locally on the device.

Digital I/O vs Digital Inputs and Digital Outputs

Note ED-008, ED-004, ED-204 and BB-400 have Digital IO Lines. These lines can behave as either inputs or outputs depending on how they are wired (see manual). From a software perspective simply treat the device as having distinct input and distinct outputs and only read the data which is useful.

E.g. BB-400 has DIO 0 connected to an LED (output) and DIO 1 connected to a button (input)

// connect to BB-400
using (EDDevice ed = EDDevice.Create("192.168.0.100"))
{
// set DIO0, wired to LED, to ON
ed.Outputs[0].Value = 1;
// read DIO1, wired to button, input state
Console.WriteLine($"Button is: {ed.Inputs[1].Value == 1 ? 'on':'off'}");
}

ES-Series (Ethernet to Serial)

ES-series devices convert Ethernet TCP/IP connections to physical serial ports. Each port connects via its own TCP connection (ports 9001, 9002, etc.).

Light Industrial RS-232 Devices

ClassProductPortsDescription
ES246ES-24611-port RS-232
ES257ES-25722-port RS-232
ES357ES-3572Enhanced 1-port RS-232 + 1-port RS422/485
ES446ES-4461PoE 1-port RS-232
ES457ES-4572PoE 2-port RS-232
ES701ES-70144-port RS-232
ES279ES-27988-port RS-232

Light Industrial RS-422/485 Devices

ClassProductPortsDescription
ES313ES-31311-port RS-422/485
ES320ES-32022-port RS-422/485
ES413ES-4131PoE 1-port RS-422/485
ES420ES-4202PoE 2-port RS-422/485
ES346ES-34644-port RS-422/485
ES842ES-84288-port RS-422/485

Industrial RS-232/422/485 Devices

ClassProductPortsDescription
ES511ES-5111Industrial 1-port RS-232/422/485
ES522ES-5222Industrial 2-port RS-232/422/485
ES551ES-5511Industrial Isolated 1-port RS-422/485
ES571ES-5711Industrial 1-port RS-422/485 + Ethernet Switch

Common Patterns

The factory method auto-detects the device type by connecting and reading the device's XML configuration:

// ED-series: returns the correct subclass (ED588, ED516, etc.)
using (EDDevice ed = EDDevice.Create("192.168.0.100"))
{
Console.WriteLine($"Found: {ed.GetType().Name}");
Console.WriteLine($"Full Debug Description: {ed.Describe()}");
}

// ES-series: returns the correct subclass (ES246, ES257, etc.)
ESDevice es = ESDevice.Create("192.168.0.100");

Direct Construction

When you know the device type, construct it directly to avoid the auto-detection network call:

// ED-series with auto-created connection
// set port the port number of either the ascii protocol (default 9500) or Modbus protocol (default 502)
var connection = new TCPConnection("192.168.0.100", portNumber);
var ed = new ED588(connection);
ed.Connect();

// ES-series (constructor creates connections for all ports) each serial Port has its own TCP port number therefore not required in the constructor for the device
var es = new ES246("192.168.0.100");
es.Connect();

Modbus TCP

To use Modbus TCP instead of ASCII, set the device through the web UI to Modbus TCP mode and use the correct TCP port (default 502)

var connection = new TCPConnection("192.168.0.100", TCPConnection.DEFAULT_MODBUSTCP_PORT);
var ed = new ED588(connection, new ModbusTCPProtocol());
ed.Connect();

Default TCP Ports

PortPurpose
9500ASCII protocol (ED-series default)
502Modbus TCP protocol
9001ES-series serial port 1
9002ES-series serial port 2
9003+ES-series serial ports 3+
80Device web configuration page (used by factory methods)