Alias table size, Domain table size – Echelon ISI User Manual
Page 14

ISI Programmer’s Guide
12
When used in a self-installed network, an ISI device will typically only require
one address table entry for each group it can join. Since the ISI application has
complete control over the groups it might belong to (by means of the
IsiGetAssembly(), IsiGetNextAssembly(), and IsiCreateCsmo() overrides), the
maximum size address table can be determined by the application developer.
This is not the case in a managed network, where a 15-entry address table is
normally required for flexible use of a device.
Alias Table Size
When designing an application that is to be used in a managed network, a rule of
thumb is to declare a minimum number of alias table entries of at least
A
+
NVs
/
Z
, with
A
and
Z
being 3 or 5 and
NVs
equal to the number of NVs declared by the
application. You can declare a maximum of 62 aliases. This rule-of-thumb often
provides a good size estimate, although you may have a better understanding of
the expected alias table requirements based on analysis of typical use-cases and
expected connection scenarios for the device.
The IsiCompactManual and IsiCompactAuto libraries do not support aliases, and
therefore do not use the alias table at all. In these cases, declaring an alias table
following the above guidelines is recommended to allow for use of the device in a
managed network.
Other ISI libraries support aliases, and allocate alias table entries each time an
ISI connection is extended (using the IsiExtendEnrollment() function call). One
alias table entry is typically required for each network variable that is associated
with the assembly that is used with the IsiExtendEnrollment() function, unless
the assembly is not yet bound at that time. An API is provided to determine the
connection status of a given assembly (IsiIsConnected() function), and a function
is provided to determine the number of remaining, unused, alias table entries
(IsiGetFreeAliasCount()). The number of IsiExtendEnrollment() calls made for
the same assembly over time cannot be predetermined (unless the application
never calls this function, and never accepts automatic enrollment). For those
applications, the above rule-of-thumb is recommended for a reasonable minimum
alias table size.
Automatic enrollment always calls IsiExtendEnrollment(), unless the ISI library
does not support connection extensions. In this case, IsiCreateEnrollment() is
used instead.
Domain Table Size
The domain table holds two entries by default. This is the required minimum
size of the domain table for an ISI device. If you use the #num_domain_entries
compiler directive to construct an ISI application that implements just one
domain table entry, the device will not function correctly. The error log contained
in the device will report an invalid_domain (138) error, resulting from an attempt
to start the ISI engine with less than two domain table entries.