The Module ID has two functions:
It logically connects the Setup block and its I/O blocks
It also informs the auto-search feature of the PCI Slot parameter. If only
one I/O module of this family is installed, the Module ID must be set to
1. To see how each I/O module maps to a
Module ID, use this Speedgoat API:
speedgoat.getIoInterfaces("TargetName", "mySpeedgoat")
This Setup block belongs to two families of I/O modules that use the same hardware
for multiple protocols. Across both families, the Module ID must be unique.
IO64X/IO75X (single-node modules): IO641,
IO642, IO643, IO644, IO750, IO751, IO752, IO753, IO754, IO755, IO756,
IO758
IO64X-32/IO75X-32 (multi-node modules):
IO642-32, IO752-32, IO754-32, IO756-32
If the PCI Slot parameter is set to -1
(auto-search), the Module ID must be in the range 1:n, where 'n' cannot be larger
than the number of modules of this type installed in the target machine. Not all
installed I/O modules need to be used.
To use this Setup block with a multi-node I/O module (IO75X-32 family), the Module
ID must be defined as a two-element vector. The second vector element is the
sub-module ID. It describes the specific node (1:32) within the I/O module. The 32
nodes are internally connected to form two linear networks (daisy-chain), where the
first and the last node of both chains are externally accessible. If one node is not
configured (has no Setup block), the chain terminates at this point. The sub-module
IDs must therefore start at node 1, 16, 17 or 32 and not have any gaps.
![[Note]](images/note.png) | Note |
|---|
When using I/O modules of both families simultaneously (single-node and
multi-node I/O modules), always use explicit addressing in the PCI Slot parameter. Ignore the Module IDs returned by
the getIoInterfaces function and instead assign unique Module IDs accross all
modules used. |
This parameter impacts the Record Read and Write blocks. Reading and
writing records of external PROFINET devices is referred to as "acyclic
communication".
If cleared (default), acyclic messages are processed in real-time
according to the Sample time entered in
the Send and Receive blocks. In this mode, cyclic and acyclic messaging
share the same real-time thread. To prevent runtime violations (e.g.,
CPU overloads), Record blocks are processed sequentially; therefore,
only one Record can be read/written per real-time step. The more Record
blocks in the model, the longer it takes to send all record requests and
receive the corresponding record responses.
For example, with a sample time of 10 ms in the Send, Receive, and
Record blocks, it will take 30 ms for three Record Read blocks to output
new data (i.e., Record block 1: 10 ms, Record block 2: 10 ms, Record
block 3: 10 ms), assuming all remote devices respond within 10
ms.
If selected, acyclic data throughput can be increased. Both the cyclic
and acyclic messaging are moved to a free-running background thread with
lower priority. Record read/write requests are sent out as fast as
possible, depending on the source connected to the Enable input port and
the sample time of the Record block.
With a sample time of 10 ms in the Send, Receive, and Record blocks,
the three Record blocks will output new data right in the next 10 ms
step, assuming the remote devices respond within 10/3 ms.
Note: due to the fact that the cyclic data exchange is also handled in
that background thread, the additional data buffering required for
consistency may introduce latencies in cyclic signal paths.
![[Caution]](images/caution.png) | Caution |
|---|
In IRT mode, you must not select this checkbox or use Record
blocks at all! |