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.
Throughout this document, the configuration and status of each port <MODE> and it's associated <STATE> refers to the following possibilities:
D
= D
ry contact input (Default mode), <STATE> = 0
for Open, 1 for Closed.R
= R
esistance reading input, <STATE> = 000
-100
(0 to 10,000 Ohms in 100 Ohm increments)A
= A
nalog Voltage reading input, <STATE> = 000
-100
(00.0 to 10.0 Volts DC in 0.1 Volt increments)V
= Digital V
oltage reading input, <STATE> = 0
for voltage below threshold, 1
for voltage equal to or above thresholdS
= Video S
ensing input, <STATE> = 0
for no video sensed, 1
for video sensed.E
= E
xternal relay control output, 0-24V DC (external power supply required), <STATE> = 0
for OFF, 1
for ON.L
= L
ED output (5V DC, 1mA), <STATE> = 0
for OFF, 1
for ON.
The STA
(Status) query returns the status of all IO ports in a single module.
// Modular devices > [F2]<ID>[F3]QIOXSTA[F4]<MODULE>[F5][F5] // Standalone devices > [F2]<ID>[F3]QIOXSTA[F4][F5][F5]
M1
= Module 1, M4
= Module 4.
// Modular devices < [F2]<ID>[F3]RIOXSTA[F4]<MODULE>|<IODATA>[F5][F5] // Standalone devices < [F2]<ID>[F3]RIOXSTA[F4]<IODATA>[F5][F5]
P##:<MODE>:<STATE>
format.
// 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.
The PRT
(Port) query returns the configuration for all IO ports in a single module.
// Modular devices > [F2]<ID>[F3]QIOXPRT[F4]<MODULE>[F5][F5] // Standalone devices > [F2]<ID>[F3]QIOXPRT[F4][F5][F5]
M1
= Module 1, M4
= Module 4.
// Modular devices < [F2]<ID>[F3]RIOXPRT[F4]<MODULE>|<PORT_CONFIG>[F5][F5] // Standalone devices < [F2]<ID>[F3]RIOXPRT[F4]<PORT_CONFIG>[F5][F5]
P##:<MODE>:<MIN_CHANGE>:<POWER_ON_STATE>
format.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.0
(zero) is always returned for ports in modes D, R and V.
// 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
The CFG
(Configuration) query returns the configuration of a single IO module.
// Modular devices > [F2]<ID>[F3]QIOXCFG[F4]<MODULE>[F5][F5] // Standalone devices > [F2]<ID>[F3]QIOXCFG[F4][F5][F5]
M1
= Module 1, M4
= Module 4.
// 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]
0
= disabled, 1
= enabled.0
= Disable report on change, 1
= Enable report on change.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)
// 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.
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.
// Modular devices > [F2]<ID>[F3]CIOXPRT[F4]<MODULE>|<PORT_CONFIG>[F5][F5] // Standalone devices > [F2]<ID>[F3]CIOXPRT[F4]<PORT_CONFIG>[F5][F5]
PRT
Query for more details.
The changes take affect immediately. See the PRT
Query Reply for more details.
// 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]
The CFG
(Configure) command is used to configure the module settings.
// 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]
CFG
Query for more details.
The changes take affect immediately. See the CFG
Query Reply for more details.
// 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]
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 controlL
= LED outputIf any other port mode is configured, the command will ignore that port.
// Modular devices > [F2]<ID>[F3]TIOXSET[F4]<MODULE>|<OUTPUTDATA>[F5][F5] // Standalone devices > [F2]<ID>[F3]TIOXSET[F4]<OUTPUTDATA>[F5][F5]
M1
= Module 1, M4
= Module 4.P##:<STATE>
format.0
= Output off1
= Output onT
= Toggle Output
// 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.
// 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]
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.
// Modular devices < [F2]<ID>[F3]RIOXSTA[F4]<MODULE>|<IODATA>[F5][F5] // Standalone devices < [F2]<ID>[F3]RIOXSTA[F4]<IODATA>[F5][F5]
P##:<MODE>:<STATE>
format.
// 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
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.
// Modular devices < [F2]<ID>[F3]RIOXCHA[F4]<MODULE>|<IODATA>[F5][F5] // Standalone devices < [F2]<ID>[F3]RIOXCHA[F4]<IODATA>[F5][F5]
P##:<MODE>:<STATE>
format.
// 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