Device Communications Enabler Design

In CIMPLICITY software, a device communications enabler uses a specific protocol to communicate through a single port to one or more devices.

A port typically corresponds to a hardware interface such as a serial port or network adapter. Multiple copies of the same enabler may run concurrently to support several ports.

A port can connect to one or more devices. Usually these devices are addressed by CPU ID, network address, or both.

A device contains one or more domains which are addressed by domain index.

A domain is a contiguous region of homogeneous data elements that are selected by domain offset. Examples of domain elements are bits, bytes, and words. A domain that is bit-addressable is called a "bit domain" or a "digital domain".

A domain that is made up of multi-bit elements (such as bytes or words), is called an "analog domain" because its elements can hold analog values.

A point is an ID and other attributes associated with one or more contiguous elements in a domain.

Multiple points of the same or different type may be configured for the same address in a domain.

Point types need not match domain types. For example, analog values can be made up of multiple bits in a bit domain, and bits can be extracted from elements in analog domains.

Within the data buffers used by CIMPLICITY software, all data is handled in bytes.

  • Bit data is stored packed, 8 bits per byte with the most significant bit to the left.
  • Multi-byte data is stored little-endian (least significant bytes first). Floating point values are in 4-byte IEEE format, unless you set use_dp_flag in the SUPPORT structure to TOOLKIT_YES. In that case, floating point values are in 8-byte format.

Multiple points in the same domain may be grouped by the toolkit into a cache for more efficient polling. A cache is a range of memory in a domain that covers one or more points. All points in the cache have the same update criteria and scan rate multiplier. When a point I/O routine is called, the Point ID in the ADDR_DATA structure is for the "top" (or first) point in the cache.