ModelingEvolution.WeldingMachine.FairinoDo.Plugin 1.0.1

ModelingEvolution.WeldingMachine.FairinoDo.Plugin

A RocketWelder device plugin for a welding machine whose only control input is a start contact. Closing the contact strikes the arc; opening it stops. The contact is closed by a relay wired to one of the Fairino controller's sixteen control-box digital outputs.

There is no fieldbus, no protocol, and no second connection: the plugin rides the live fairino.Robot the host's Fairino robot device already owns and writes one bit on it.

Minimum host

rocket-welder2 running RocketWelder.SDK 2.18.0 or later.

2.18.0 is the release that publishes IDeviceResolver (the seam that hands a plugin a live device instance rather than a config snapshot) and IStoppableRobot (the robot's own stop channel, which this plugin uses for the emergency path below). On an older host the install fails loudly — PluginLoader.IsRideUpSupported rejects it — rather than loading a plugin that cannot resolve anything.

Install

Plugin mutation endpoints are loopback-only; run this on the device:

curl -sS -X POST http://127.0.0.1:5000/api/plugins/install \
     -H 'Content-Type: application/json' \
     -d '{"PackageId":"ModelingEvolution.WeldingMachine.FairinoDo.Plugin","Version":"1.0.0"}'

Then restart the app — an installed plugin is inert until the host restarts.

The host must have a package source that carries this package. It is published to the internal feed only (never to nuget.org), so RocketWelder:Plugins:Sources must include it:

"RocketWelder": {
  "Plugins": {
    "Sources": [ { "Name": "modelingevolution", "Url": "https://nuget.modelingevolution.com/v3/index.json" } ]
  }
}

With no source configured the host makes no network call at all and reports a configuration error.

Configure

Add the device from the standard Add-device wizard — "Custom welding machine (Fairino DO)". It asks for two things and no address:

Property Required Notes
Digital output (DO 0–15) yes The control-box output wired to the relay. No default: the operator reads it off the cabinet, and a wrong relay is a wrong arc. Tool-flange and auxiliary outputs are not addressable.
Fairino robot only when more than one is configured The robot name as shown on /devices, or a full device id. Leave blank when there is exactly one Fairino robot.

A rename breaks a name binding. That is not silent: the device shows Error with a message naming the property and the offending value.

What it does, and what it cannot do

ArcOn() writes SetDO(index, 1, 0, 1) and returns only once the controller has acknowledged. ArcOff() writes 0, never throws, retries once, and returns within 2 s whatever the controller does — it is called from finally blocks and from the operator STOP, so it must not hang teardown.

The output is driven low on four occasions: the first attach after the device is created (a restart mid-weld must not leave a relay closed), on ArcOff, on Dispose, and on every re-attach. The arc is never restored automatically after a reconnect.

There is no read-back. The vendor's RPC surface declares SetDO and no GetDO, so every state this device reports is commanded, never measured — ArcStableSignal says the write was acknowledged, not that an arc exists. Current, voltage, wire-feed and target-current signals are published permanently empty (HasValue == false) rather than as a fabricated zero. Mode, job number, gas and wire inch have nothing behind them; a mode or job write is accepted, latched so the program's own read-back stays consistent, and logged once per distinct value.

Emergency path

If the controller's XML-RPC service is lost while the output is latched high — the robot reports Disconnected, or a write returns a communication error — the plugin:

  1. commands STOP on the bound robot through its own stop channel, which for Fairino is the :8080 mailbox, a channel independent of XML-RPC :20003;
  2. relies on SetOutputResetCtlBoxDO(1), written on every attach, which makes the controller drop its own control-box outputs on that stop — so the relay opens with no XML-RPC call at all;
  3. clears its signals, logs one Critical entry, and lets the running program abort through the host's safety path. The arc is not restored when the controller returns.

A robot that does not implement IStoppableRobot fails the attach with a message saying so, rather than latching an output it could not guarantee to release.

Not this plugin's job

No welding parameters. No feedback from the machine — no arc-detect input, no fault input. No tool-flange or auxiliary outputs. No robots other than Fairino. No manual output toggle in the UI: a hand-operated arc-on from a status panel is not a feature.

Localisation

English and Polish. The detail view follows a runtime language switch; the device-type name in the Add-device picker and the two schema labels are resolved once at boot, so they follow the OS locale and change only on restart — a host limitation, not a plugin one.

No packages depend on ModelingEvolution.WeldingMachine.FairinoDo.Plugin.

Version Downloads Last updated
1.0.1 7 09/07/2026
1.0.0 4 09/07/2026