CommandFusion Wiki

Documentation Resources

User Tools

Site Tools


Sidebar

hardware:cflink:input-output-io-module-cflink-protocol

Input/Output (IO) CFLink Protocol

The following documentation describes the CFLink protocol for controlling IO ports on any device with IO's.
This includes IO modules and standalone devices such as the CF Mini.

Common Definitions

Port Modes

Throughout this document, the configuration and status of each port <MODE> and it's associated <STATE> refers to the following possibilities:

  • <MODE> = Single uppercase char:
    • D = Dry contact input (Default mode), <STATE> = 0 for Open, 1 for Closed.
    • R = Resistance reading input, <STATE> = 000-100 (0 to 10,000 Ohms in 100 Ohm increments)
    • A = Analog Voltage reading input, <STATE> = 000-100 (00.0 to 10.0 Volts DC in 0.1 Volt increments)
    • V = Digital Voltage reading input, <STATE> = 0 for voltage below threshold, 1 for voltage equal to or above threshold
    • S = Video Sensing input, <STATE> = 0 for no video sensed, 1 for video sensed.
    • E = External relay control output, 0-24V DC (external power supply required), <STATE> = 0 for OFF, 1 for ON.
    • L = LED output (5V DC, 1mA), <STATE> = 0 for OFF, 1 for ON.

Queries

STA - Query Status

The STA (Status) query returns the status of all IO ports in a single module.

Data

// Modular devices
> [F2]<ID>[F3]QIOXSTA[F4]<MODULE>[F5][F5]
// Standalone devices
> [F2]<ID>[F3]QIOXSTA[F4][F5][F5]

  • <MODULE> = The module number to request the status of. 2 chars, uppercase 'M' followed by the module number.
    • eg. M1 = Module 1, M4 = Module 4.

Reply

// Modular devices
< [F2]<ID>[F3]RIOXSTA[F4]<MODULE>|<IODATA>[F5][F5]
// Standalone devices
< [F2]<ID>[F3]RIOXSTA[F4]<IODATA>[F5][F5]

  • <IODATA> = For each IO port in the module, the port status is returned in P##:<MODE>:<STATE> format.
    • <MODE> = Single uppercase char. Refer to Common Definitions - Port Modes for more information on the possible modes and states.

Example

// Query the state of IO ports in Module 2 of a modular device on CFLink ID [04]
> [F2][04][F3]QIOXSTA[F4]M2[F5][F5]
// Reply, Module has 8 IO ports
< [F2][04][F3]RIOXSTA[F4]M2|P01:D:0|P02:D:1|P03:R:010|P04:V:125|P05:E:0|P06:L:1|P07:D:0|P08:S:1[F5][F5]
// Port 1 = Dry contact, Off
// Port 2 = Dry contact, On
// Port 3 = Resistence, 1000 Ohm reading
// Port 4 = Voltage, 12.5V reading
// Port 5 = External relay control, Off
// Port 6 = LED ouput, On
// Port 7 = Dry contact, Off
// Port 8 = Video Sense, video signal present.

Error

  • 004 = Invalid Module Number

PRT - Query Port Settings

The PRT (Port) query returns the configuration for all IO ports in a single module.

Data

// Modular devices
> [F2]<ID>[F3]QIOXPRT[F4]<MODULE>[F5][F5]
// Standalone devices
> [F2]<ID>[F3]QIOXPRT[F4][F5][F5]

  • <MODULE> = The module number to request the port configuration of. 2 chars, uppercase 'M' followed by the module number.
    • eg. M1 = Module 1, M4 = Module 4.

Reply

// Modular devices
< [F2]<ID>[F3]RIOXPRT[F4]<MODULE>|<PORT_CONFIG>[F5][F5]
// Standalone devices
< [F2]<ID>[F3]RIOXPRT[F4]<PORT_CONFIG>[F5][F5]

  • <PORT_CONFIG> = For each IO port in the module, the port configuration is returned in P##:<MODE>:<MIN_CHANGE>:<POWER_ON_STATE> format.
    • <MODE> = Single uppercase char. Refer to Common Definitions - Port Modes for more information on the possible modes and states.
    • <MIN_CHANGE> = The minimum change the port must read before sending a notification message.
      • 0 means reporting on change is disabled, and on change reporting can be disabled on a module level as well.
      • 0 (zero) is always returned for ports in modes D, E and L.
    • <POWERONSTATE> = The state the port will be in when the unit is powered up.
      • 0 (zero) is always returned for ports in modes D, R and V.

Example

// Query the configuration of IO ports in Module 1 of a modular device on CFLink ID [04]
> [F2][04][F3]QIOXPRT[F4]M1[F5][F5]
// Reply, Module has 8 IO ports
< [F2][04][F3]RIOXPRT[F4]M1|P01:D:0:0|P02:D:0:0|P03:R:15:0|P04:V:12:0|P05:E:0:0|P06:L:0:1|P07:D:0:0|P08:D:0:0[F5][F5]
// Port 1 = Dry contact
// Port 2 = Dry contact
// Port 3 = Resistence, 1500 Ohm minimum change
// Port 4 = Voltage, 1.2 V minimum change
// Port 5 = External relay control, Power On State = Off
// Port 6 = LED ouput, Power On State = On
// Port 7 = Dry contact
// Port 8 = Dry contact

Error

  • 004 = Invalid Module Number

CFG - Query Configuration

The CFG (Configuration) query returns the configuration of a single IO module.

Data

// Modular devices
> [F2]<ID>[F3]QIOXCFG[F4]<MODULE>[F5][F5]
// Standalone devices
> [F2]<ID>[F3]QIOXCFG[F4][F5][F5]

  • <MODULE> = The module number to request the module configuration of. 2 chars, uppercase 'M' followed by the module number.
    • eg. M1 = Module 1, M4 = Module 4.

Reply

// Modular devices
< [F2]<ID>[F3]RIOXCFG[F4]<MODULE>:<ENABLED>:<REPORT_ON_CHANGE>:<REPORT_INTERVAL>[F5][F5]
// Standalone devices
< [F2]<ID>[F3]RIOXCFG[F4]<ENABLED>:<REPORT_ON_CHANGE>:<REPORT_INTERVAL>[F5][F5]

  • <ENABLED> = This reports if the module is enabled or disabled for input reading (and hence disable reporting notifications). Disabling a module is great for trouble shooting to silence the module on the CFLink bus without having to physically unplug it. Single digit, 0 = disabled, 1 = enabled.
  • <REPORTONCHANGE> = This reports if the module allows for any IO ports to force a status notification when its input value changes.
    • The minimum change setting for a port must be reached before any notification will be sent.
    • If this is disabled, all port minimum change settings will be ignored.
    • 0 = Disable report on change, 1 = Enable report on change.
  • <REPORT_INTERVAL> = The interval at which the module will report it's status. 5 digits, representing 0 - 9999.9 seconds (100ms increments).
    • 00000 = Module will not report on any interval (disabled).
    • 00001 = Module will report every 0000.1 seconds (100ms).
    • 00600 = Module will report every minute.
    • 36000 = Module will report every hour.
    • 99999 = Module will report every 9999.9 seconds (2h46m39s900ms or 9,999,900ms)
    • There is a great online calculator here for converting this value into h:m:s (simply enter ::9999.9 to see the max range for example)

Example

// Query the configuration of Module 1 of a modular device on CFLink ID [04]
> [F2][04][F3]QIOXCFG[F4]M1[F5][F5]
// Reply
< [F2][04][F3]RIOXCFG[F4]M1:1:1:36000[F5][F5]
// IO module is enabled, report on change is enabled, reports status every hour.

Error

  • 004 = Invalid Module Number

Configuration Messages

PRT - Configure Port Settings

The PRT (Port) command is used to configure the settings of all IO ports in one or more modules.
If some IO port configurations are to remain unchanged, simply omit them from the message.

Data

// Modular devices
> [F2]<ID>[F3]CIOXPRT[F4]<MODULE>|<PORT_CONFIG>[F5][F5]
// Standalone devices
> [F2]<ID>[F3]CIOXPRT[F4]<PORT_CONFIG>[F5][F5]

  • <PORT_CONFIG> = See the definition under the PRT Query for more details.

Reply

The changes take affect immediately. See the PRT Query Reply for more details.

Example

// Set IO ports for module 1 in a modular device on CFLink ID [05] as follows:
// Port 1 = Dry contact
// Port 2 = Dry contact
// Port 3 = Resistence, 1500 Ohm minimum change
// Port 4 = Voltage, 1.2 V minimum change
// Port 5 = External relay control, Power On State = Off
// Port 6 = LED ouput, Power On State = On
// Port 7 = Video Sense Input
// Port 8 = Dry contact
> [F2][05][F3]CIOXPRT[F4]M1|P01:D:0:0|P02:D:0:0|P03:R:15:0|P04:V:12:0|P05:E:0:0|P06:L:0:1|P07:S:0:0|P08:D:0:0[F5][F5]
// Reply
< [F2][05][F3]RIOXPRT[F4]M1|P01:D:0:0|P02:D:0:0|P03:R:15:0|P04:V:12:0|P05:E:0:0|P06:L:0:1|P07:D:0:0|P08:D:0:0[F5][F5]

Error

  • 003 = Invalid Port Number
  • 004 = Invalid Module Number
  • 425 = Invalid IO Port Mode
  • 426 = Invalid IO Port Minimum Change
  • 427 = Invalid IO Port Power On State

CFG - Configure Module

The CFG (Configure) command is used to configure the module settings.

Data

// Modular devices
> [F2]<ID>[F3]CIOXCFG[F4]<MODULE>:<ENABLED>:<REPORT_ON_CHANGE>:<REPORT_INTERVAL>[F5][F5]
// Standalone devices
> [F2]<ID>[F3]CIOXCFG[F4]<ENABLED>:<REPORT_ON_CHANGE>:<REPORT_INTERVAL>[F5][F5]

  • See the definition under the CFG Query for more details.

Reply

The changes take affect immediately. See the CFG Query Reply for more details.

Example

// Set module 1 in a modular device on CFLink ID [05] to be setup as follows:
// Data reading enabled, Report on change enabled, report on interval every minute.
> [F2][05][F3]CIOXCFG[F4]M1:1:1:00600[F5][F5]
// Reply
< [F2][05][F3]RIOXCFG[F4]M1:1:1:00600[F5][F5]

Error

  • 004 = Invalid Module Number
  • 429 = Invalid IO Reporting Interval

Transmission Messages

SET - Set IO States

The SET command is used to set the state (on or off) of one or more IO ports across one or more modules.
The port must be configured to any of the following modes for SET to work.

  • E = External relay control
  • L = LED output

If any other port mode is configured, the command will ignore that port.

Data

// Modular devices
> [F2]<ID>[F3]TIOXSET[F4]<MODULE>|<OUTPUTDATA>[F5][F5]
// Standalone devices
> [F2]<ID>[F3]TIOXSET[F4]<OUTPUTDATA>[F5][F5]

  • <MODULE> = The module number to change the state of. 2 chars, uppercase 'M' followed by the module number.
    • eg. M1 = Module 1, M4 = Module 4.
  • <OUTPUTDATA> = For each IO port in the module, the port status is written in P##:<STATE> format.
    • <STATE> = Single char:
      • 0 = Output off
      • 1 = Output on
      • T = Toggle Output

Reply

// Modular devices
< [F2]<ID>[F3]RIOXSTA[F4]<MODULE>|<IODATA>[F5][F5]
// Standalone devices
< [F2]<ID>[F3]RIOXSTA[F4]<IODATA>[F5][F5]

See the STA Query Reply for more details on the reply format.

Note that the reply data will contain relay data for every IO module in the modular base device.

Example

// Set ports 5 and 6 on in module 2.
// Modular base unit on CFLink ID [04].
> [F2][04][F3]TIOXSET[F4]M2|P05:1|P06:1[F5][F5]
// Reply
< [F2][04][F3]RIOXSTA[F4]M2|P01:D:0|P02:D:1|P03:R:010|P04:V:125|P05:E:1|P06:L:1|P07:D:0|P08:D:0[F5][F5]

Error

  • 003 = Invalid Port Number
  • 004 = Invalid Module Nsdumber
  • 428 = Invalid IO State

Notifications

STA - Status Notification

The STA (Status) notification returns the status of all IO ports in a single module.
The notification can be sent either on change or on interval, depending on how the IO Module is configured.

Data

// Modular devices
< [F2]<ID>[F3]RIOXSTA[F4]<MODULE>|<IODATA>[F5][F5]
// Standalone devices
< [F2]<ID>[F3]RIOXSTA[F4]<IODATA>[F5][F5]

  • <IODATA> = For each IO port in the module, the port status is returned in P##:<MODE>:<STATE> format.
  • <MODE> = Single uppercase char. Refer to Common Definitions - Port Modes for more information on the possible modes and states.

Example

// Notification from IO module with 8 IO ports, in a MOD4 on CFLink ID [04]
< [F2][04][F3]RIOXSTA[F4]M2|P01:D:0|P02:D:1|P03:R:010|P04:V:125|P05:E:0|P06:L:1|P07:D:0|P08:D:0[F5][F5]
// Port 1 = Dry contact, Off
// Port 2 = Dry contact, On
// Port 3 = Resistence, 1000 Ohm reading
// Port 4 = Voltage, 12.5V reading
// Port 5 = External relay control, Off
// Port 6 = LED ouput, On
// Port 7 = Dry contact, Off
// Port 8 = Dry contact, Off

CHA - Change Notification

The CHA (Change) notification returns the status of only a single port that has changed state, from a single module.
The notification is only sent when the status changes more than the 'minimum change' property, depending on how the IO Module is configured.

Data

// Modular devices
< [F2]<ID>[F3]RIOXCHA[F4]<MODULE>|<IODATA>[F5][F5]
// Standalone devices
< [F2]<ID>[F3]RIOXCHA[F4]<IODATA>[F5][F5]

  • <IODATA> = The port status is returned in P##:<MODE>:<STATE> format.
  • <MODE> = Single uppercase char. Refer to Common Definitions - Port Modes for more information on the possible modes and states.

Example

// Notification from IO module when a port changes state, in a MOD4 on CFLink ID [04]
< [F2][04][F3]RIOXCHA[F4]M2|P02:D:1[F5][F5]
// Module = 2
// Port 2 = Dry contact, On

hardware/cflink/input-output-io-module-cflink-protocol.txt · Last modified: 2013/03/26 05:34 by jarrod