Skip to content

Built-in Devices: Demo, Local Tags and the Appliance ​

Last updated

Built-in devices don't talk to external equipment. They don't use the driver service and have no _STATUS/* tags.

Demo CNC Machine ​

A ready-made, realistic CNC machine for learning the product and building dashboards without hardware.

Add it: Devices → Add Demo Device (admin or editor). The button disappears once a demo device exists; only one is allowed (a second request fails with Demo device already exists). Don't use the wizard's Demo Simulator card — it fails.

It is created as Demo CNC Machine, machine name DEMO-001, type cnc, location Virtual, polling 1000 ms, with 15 tags already subscribed (history off). Data starts immediately, updating once a second, and restarts automatically when the server starts.

Tag pathDisplay nameTypeBehavior
Status/RunningRunningbooltrue while running
Status/ModeModestringAUTO while running; AUTO, MANUAL or MDI picked at random when it stops
Spindle/SpeedSpindle Speedfloatabout 7,775–8,225 rpm running (whole numbers), 0 stopped
Spindle/LoadSpindle Loadfloatabout 17.5–62.5 running, 0 stopped
Feed/RateFeed Ratefloatabout 240–460 running, 0 stopped
Axis/X/PositionX Positionfloatabout ±200, smooth motion
Axis/Y/PositionY Positionfloatabout ±160
Axis/Z/PositionZ Positionfloatabout −20 to −5
Program/NumberProgram Numberint1001, 2005, 3010, 4020 or 5015
Tool/NumberTool Numberint1–12, starts at 3
Parts/CountPart Countintstarts at 42 each time the server starts, +1 at each tool/program change
Coolant/ActiveCoolant Activebooltrue running, false stopped
Servo/X/LoadServo X Loadfloatabout 18.5–36.5 running, 0 stopped
Servo/Y/LoadServo Y Loadfloatabout 16.5–31.5 running, 0 stopped
Temperature/SpindleSpindle Tempfloatclimbs toward 55 while running, cools toward 22 when stopped

Every 45–90 seconds a running machine either stops (20% chance) or changes tool and program and adds a part; a stopped machine restarts at the next change. The device's run state (running/idle) follows Status/Running. There is no cycle-time tag and no alarm events; build alarms yourself, for example Temperature/Spindle > 50.

Browse Tags on the demo device lists exactly these 15 tags.

Controls: Disconnect or Stop halts the data and the pill shows Stopped, also after a server restart; Connect restarts it (see Device Detail). Writes aren't supported. Deleting the demo device brings Add Demo Device back.

Simulator ​

Configurable simulated machines with per-tag behaviors. See Simulator Devices.

Local Tags ​

Every appliance has one Local Tags device, created automatically when the server starts if it's missing. It holds software variables — operator entries, setpoints, counters kept by scripts — that behave like any other tag. It has no connection controls and isn't created through the wizard. Create and edit local tags on the Local Tags page; see Tags.

Scada Appliance ​

On Scada.Ink hardware, the Scada Appliance device exposes the board's own I/O. It is managed by the system: it isn't in the wizard, has no connection controls, and can't be deleted (The Scada Appliance device cannot be deleted).

Tag pathTypeAccessMeaning
IO/ADC1, IO/ADC2floatreadAnalog inputs 1 and 2 (volts)
IO/DIN1, IO/DIN2boolreadIsolated digital inputs
IO/DIN1Count, IO/DIN2Countintread/writeParts counted on that input, when its counter is on (see below). Write 0 to reset, any other number to preset
IO/DIN1LastPulseMs, IO/DIN2LastPulseMsintreadHow long the last part stayed present, in ms — counted or not. Use it to set Min. time present
IO/Relay1, IO/Relay2boolread/writeThe relay output; both tags drive the same relay coil
IO/UserButtonboolreadtrue while the user button is pressed
IO/Buzzerboolread/writetrue sounds the buzzer
Serial/RS232, Serial/RS485_1, Serial/RS485_2stringreadDevice paths of the serial ports (/dev/ttyAMA5, /dev/ttyAMA3, /dev/ttyAMA4) — use them as serial_port for Modbus RTU, scanners or scales

Writing the relay, the buzzer or a count needs Allow Tag Writes on the device. The ADC bus, address and reference voltage are set on the Appliance page. On non-appliance hardware the device runs in development mode: inputs read 0/false and writes are ignored.

Part counters ​

Polling reads an input only as often as the polling rate (100 ms at best), so it can miss a short part and can't tell a 50 ms glitch from a real one. A part counter counts from the input's hardware interrupts instead, timed to the millisecond. Turn one on under Part counters on the Appliance page, per input:

SettingMeaning
Count parts on DIN1 / DIN2Turns the counter on. Save to start it
A part is present when the input isOn if the sensor energizes the input when a part is there (IO/DIN1 reads true), Off if it de-energizes it (reads false)
Min. time present (ms)A part must stay present this long to count; shorter pulses are glitches and are ignored. The count goes up this long after the part arrives. 0 counts every pulse
Debounce (ms)A part arriving sooner than this after the last counted one is ignored — a part rocking under the sensor, or sensor chatter. Set it just below the shortest real gap between parts

A part already under the sensor when the counter starts isn't counted. The count is saved on the appliance every couple of seconds and on shutdown, so it survives a restart; after a power cut it can be up to two seconds' worth of parts short. A counter that is off reads its last count with bad quality.

Resetting the count. Write a number to IO/DIN1Count — 0 to reset, anything else to preset. The Reset button on the Appliance page does this, and so can:

  • Ladder — XIC ShiftReset → OSR → MOV Source 0 → IO/DIN1Count (Scada Appliance). Keep the OSR: a MOV writes on every scan its rung is true, so without it the count stays at 0 for as long as ShiftReset is on.
  • Scripts — tags.writeDevice('Scada Appliance', 'IO/DIN1Count', 0), e.g. in a Cron-triggered script at shift change.
  • Workflows — a Set Tag node on Scada Appliance › IO/DIN1Count with value 0.
  • Dashboards — a button that writes 0 to the tag.

Counters need the rpi-lgpio GPIO library, which the installer sets up. On an appliance that has the older RPi.GPIO library instead, the counter can't start: the Count tag stays bad and the drivers log says to re-run the installer.

See also ​

Scada.Ink Help Center