CHANNELS (BOZZA) ------------------------------------------------------------------------------ [JSup] I/O system is organizes in channels that group [tag I/O hooks] and defines the way they are read/written. Every channel is bound to a [driver] and to a driver specific a device. Some features: * Channels can perform timed or triggered read or event unsolicited read (according to the protocol/driver capabilities). * Channel read can be [requested by a window]. * Writes can be triggered and/or done on tag change. Channels are comparable with FactoryLink I/O tables. The [Channel list] can be accessed with the menu Tools / Edit channels (or Ctrl+H keys). 1. Channel configuration * The [I/O driver] that the channel has to use for its communication, it cannot be changed once the channel is created. * Name: an [unique name] that will identify the channel. * Drive dependent info: a button that open a driver specific dialog that provide configuration about the device and driver specific configuration of the channel. * Item prefix: a fixed text that will be prepended to every item of the channel [I/O hooks], this can be useful for some drivers ([SNMP] or [MQTT]) to not to have to include a fixed prefix to every [I/O hook]. * Channel active condition: can be a constant or calculated expression that enable / disable the channel at all if, for example, a channel have to be active only on a certain JSup server or if you want to disable a channel at all but you don't want to delete it. * Block read: a block read requesta all [I/O hooks] value (except for write only [I/O hooks]) from the remote device, when the Block read trigger [expression] changes to a non false (or 0) value. The Block read trigger is normally a single [tag] forced to true (or 1) to perform the read. The End read tag, if specified, is a [tag] that will be forced to true if all the [I/O hooks] have been read successfully, or forced to false if the block read is not successful (even if [I/O hooks] are partially read: some read and some not). This tag will receive also the status of a Continuous read completion. * Continuous read: a timed basis read that can be enabled with a constant or variable expression (Read enable condition) and repeated at a given millisecond rate (Update time: constant or an [expression]). Some [driver] enable the possibility to read only active items, the [I/O hooks] of listened tags (the ones those are displayed in active [window]). Active [windows] can specify the read of one (or more) channels and the requested rate: the shorted rate will be used. * Block write: all the [I/O hooks] of the channel (except the read only ones) can be written at once when the Block write trigger [expression] (normally a single boolean tag) changes to a true (or non zero) value. The End write tag, if specified, will be forced to true if all the [I/O hook] values have been written successfully, or to a false value in case of some write failure. * Write on change can be enabled to perform single write for every [I/O hook] whose tag change value (or whose value is forced). The Write on change disable can be configured with an [expression] (normally a single [tag]) that when non false disable the write on tag changes. This can be useful if a massive tag change is expected and you what to write all tag at once with a Block write. * Poor quality to tag filter: is the time after a bad [I/O hook] value read after which the tag will be set in a poor [quality] status. * Alarm only: a flag for [Unity] import feature only. * Auto I/O hook JavaCode fun.: see [JavaCode function provided IOHooks].