Overview

The Fairino Cobot connector provides tag-based read and write access to a Fairino (FAIR-INNOVATION) FR-series collaborative robot. It exposes the robot's digital I/O (control box and tool) as pollable tags, whole-axis snapshots (joint position and joint torque) as JSON-valued tags, and program control (load/run/pause/resume/stop, program state) via connector methods.

Digital I/O reads never touch the network - the SDK keeps a locally-cached real-time state packet updated in the background once connected, and reads come from that cache. Digital output writes, joint position reads, and program-control calls are genuine round-trips to the controller.

The connector detects when the underlying connection is lost and reconnects automatically without blocking the read cycle - reconnection runs on its own dedicated background thread. Once a connection has been established at least once, the SDK's own internal auto-reconnect is relied on to restore the underlying socket; the connector's reconnect loop probes for that recovery rather than repeatedly tearing down and rebuilding the connection.

Parameters

Name Values Description
Type FAIRINOCOBOT The connector type identifier.
IP IP address or hostname The IP address or hostname of the robot controller.
Timeout milliseconds (integer) Bound used when waiting on connector operations. Defaults to 2000.
UpdateRate milliseconds (integer) How often the connector polls all subscribed tags. Defaults to 250.
ReconnectDelay milliseconds (integer) Delay between reconnect attempts while the controller is unreachable. Defaults to 5000.
IOBlockMode 0 (blocking) or 1 (non-blocking) Passed to GetDI/GetToolDI. Defaults to 1. Has little practical effect since these reads never touch the network, but kept configurable in case a future SDK version changes that.
DOSmooth byte (0-255) Passed to SetDO/SetToolDO - whether a digital output transitions immediately or ramps. Defaults to 0 (immediate).
DOBlock byte (0-255) Passed to SetDO/SetToolDO - whether the write blocks until confirmed. Defaults to 0 (blocking).

Supported Tag Types:

The connector maps onto the standard Industreweb tag types below. For Integer Tag, Decimal Tag, Time Span Tag, and Data Tag - where more than one Allen Bradley elementary type could apply - the specific AB type is selected using a DataType entry in the tag's Parameters. Bool Tag and String Tag don't need this, since each maps to exactly one AB type.

Tag Type Address Behaviour
Bool Tag DI:<0-15> Control box digital input. Read-only.
Bool Tag TDI:<0-1> Tool digital input. Read-only.
Bool Tag DO:<0-15> Control box digital output. Read/write.
Bool Tag TDO:<0-1> Tool digital output. Read/write.
Data Tag JOINTPOSITION (exact match, no id) All 6 axis positions (degrees) as a single JSON object keyed J1-J6, e.g. {"J1":12.3,...,"J6":-4.5}. Read-only. Costs a genuine round-trip to the controller on every poll.
Data Tag JOINTTORQUE (exact match, no id) All 6 axis torques as a single JSON object keyed J1-J6. Read-only. Read from the same locally-cached state as the digital I/O - no network round-trip.


Data Tag itself accepts objects, arrays, or XML and parses any of them to a suitable JSON value - the object shape above is used for readability, not because it's a hard requirement.

The DI/TDI/DO/TDO prefix-and-colon address format (rather than prefix immediately followed by the id) is deliberate: another connector in this codebase uses tag.Address.Contains(":") to decide whether a tag's address needs reading at all, and this keeps that convention consistent.

Connector Methods

Name Arguments Description
Mode MODE Sets the robot's operating mode.
ProgramLoad PATH Loads a program by path/name.
ProgramRun - Starts the loaded program.
ProgramPause - Pauses the running program.
ProgramResume - Resumes a paused program.
ProgramStop - Stops the running program.
GetProgramState - Returns the current program state (1 = stopped/no program, 2 = running, 3 = paused).
GetCurrentLine - Returns the current line number of the running program.
GetLoadedProgram - Returns the name of the currently loaded program.
GetActualTCPPose - Returns the current TCP pose as x,y,z,rx,ry,rz.
GetJointPosition - Returns all 6 axis positions as a JSON object keyed J1-J6 (same value a JOINTPOSITION Data Tag would hold).
GetJointTorque - Returns all 6 axis torques as a JSON object keyed J1-J6 (same value a JOINTTORQUE Data Tag would hold).
GetDI Address Reads a single control box digital input. Address is the bare id (0-15), no prefix or colon.
GetToolDI Address Reads a single tool digital input. Address is the bare id (0-1).
GetDO Address Reads a single control box digital output. Address is the bare id (0-15).
GetToolDO Address Reads a single tool digital output. Address is the bare id (0-1).

Addressing

The Address field of a tag depends on its type:

  • Digital I/O (Bool Tag): a two-or-three-letter prefix, a colon, then the channel id - DI:3 (control box input 3), TDI:1 (tool input 1), DO:12 (control box output 12), TDO:0 (tool output 0).
  • Axis snapshots (Data Tag): the literal keyword with no id - JOINTPOSITION or JOINTTORQUE.

The same digital I/O values and axis snapshots are also available on demand via Execute Commands (GetDI/GetToolDI/GetDO/GetToolDO/GetJointPosition/GetJointTorque) rather than through a polled tag, if a one-off read is preferred over continuous polling.