Masters

Each master controls one network of one platform. For each platform, up to two masters can be defined, with each master controlling a different network.

Each master runs on an interrupt. Up to two interrupts may be defined, with each interrupt hosting one or more masters. Each interrupt runs on a separate thread.

In the default configuration of Module.ini, one interrupt is defined. This interrupt hosts up to two masters - up to one master of a non-simulator platform and up to one master of a simulator platform.

Keys for Multi-Master and Multi-Interrupt

Key Name

Supported Section Types

Description

How to Apply

Setting Range

Default Value

NumOfInterrupt

Global

Set the number of interrupts.

If there are multiple interrupts, the master processing for different communication cycles can be distributed among multiple threads and executed concurrently.

Restart WMX3 engine

1/2

1

NumOfMaster

Platform

Set the number of masters for this communication platform.

Restart WMX3 engine

1/2

1

NumOfInterrupt:

The number of interrupts.

When not specified, this parameter will default to 1 interrupt.

The maximum number of interrupts is 2.

Each master of a platform that is not disabled or suspended is assigned to interrupts in the order that they are defined in Module.ini with [Platform X].

If there is one interrupt, all masters are assigned to that one interrupt. In this configuration, up to one master of a non-simulator platform and up to one master of a simulator platform are typically assigned to the interrupt. It is also possible to assign multiple masters of non-simulator platforms and up to one master of a simulator platform to the one interrupt.

If there are two interrupts, the first master is assigned to the first interrupt, the second master is assigned to the second interrupt, the third master (if any) is assigned to the first interrupt, the fourth master (if any) is assigned to the second interrupt, and so on. In this configuration, the third and fourth masters are typically simulator platform masters.

Each platform may have up to two masters as specified by the NumOfMaster parameter.

Configurations with more than one interrupt are referred to as Multi-Cycle configurations.

NumOfMaster:

The number of masters for this platform.

When not specified, this parameter will default to 1 master for this platform.

The maximum number of masters for each platform is 2.

Each non-simulator master requires a separate NIC or interface card.

Configuration Examples ——————-— Replace “xxx” and “yyy” with the non-simulator platform(s) in use.

Example 1: Non-Simulator + Simulator

--------------------------------------------------\n
MessageLevel = 0\n
PrintLog = 0\n
\n
[Platform 0]\n
Location = .\\platform\\xxx\\\n
DllName = xxx.rtdll\n
disable = 0\n
\n
[Platform 1]\n
Location = .\\platform\\simu\\\n
DllName = SimuPlatform.rtdll\n
disable = 0\n
--------------------------------------------------\n

Example 2: Simulator Only

--------------------------------------------------\n
MessageLevel = 0\n
PrintLog = 0\n
\n
[Platform 0]\n
Location = .\\platform\\xxx\\\n
DllName = xxx.rtdll\n
disable = <B><span style="color:red">1</span></B>\n
\n
[Platform 1]\n
Location = .\\platform\\simu\\\n
DllName = SimuPlatform.rtdll\n
disable = 0\n
--------------------------------------------------\n

Example 3: Non-Simulator, Multi-Cycle

--------------------------------------------------\n
MessageLevel = 0\n
PrintLog = 0\n
<B><span style="color:red">NumOfInterrupt = 2</span></B>\n
\n
[Platform 0]\n
Location = .\\platform\\xxx\\\n
DllName = xxx.rtdll\n
<B><span style="color:red">NumOfMaster = 2</span></B>\n
disable = 0\n
\n
[Platform 1]\n
Location = .\\platform\\simu\\\n
DllName = SimuPlatform.rtdll\n
disable = <B><span style="color:red">1</span></B>\n
--------------------------------------------------\n

Example 4: Non-Simulator + Simulator, Multi-Cycle

--------------------------------------------------\n
MessageLevel = 0\n
PrintLog = 0\n
<B><span style="color:red">NumOfInterrupt = 2</span></B>\n
\n
[Platform 0]\n
Location = .\\platform\\xxx\\\n
DllName = xxx.rtdll\n
<B><span style="color:red">NumOfMaster = 2</span></B>\n
disable = 0\n
\n
[Platform 1]\n
Location = .\\platform\\simu\\\n
DllName = SimuPlatform.rtdll\n
<B><span style="color:red">NumOfMaster = 2</span></B>\n
disable = 0\n
--------------------------------------------------\n

Example 5: Non-Simulator + Non-Simulator, Multi-Cycle

--------------------------------------------------\n
MessageLevel = 0\n
PrintLog = 0\n
<B><span style="color:red">NumOfInterrupt = 2</span></B>\n
\n
[Platform 0]\n
Location = .\\platform\\xxx\\\n
DllName = xxx.rtdll\n
disable = 0\n
\n
<B><span style="color:red">
[Platform 1]\n
Location = .\\platform\\yyy\\\n
DllName = yyy.rtdll\n
disable = 0\n
</span></B>
\n
[Platform <B><span style="color:red">2</span></B>]\n
Location = .\\platform\\simu\\\n
DllName = SimuPlatform.rtdll\n
disable = <B><span style="color:red">1</span></B>\n
--------------------------------------------------\n

Example 6: Non-Simulator + Non-Simulator + Simulator, Multi-Cycle

--------------------------------------------------\n
MessageLevel = 0\n
PrintLog = 0\n
<B><span style="color:red">NumOfInterrupt = 2</span></B>\n
\n
[Platform 0]\n
Location = .\\platform\\xxx\\\n
DllName = xxx.rtdll\n
disable = 0\n
\n
<B><span style="color:red">
[Platform 1]\n
Location = .\\platform\\yyy\\\n
DllName = yyy.rtdll\n
disable = 0\n
</span></B>
\n
[Platform <B><span style="color:red">2</span></B>]\n
Location = .\\platform\\simu\\\n
DllName = SimuPlatform.rtdll\n
<B><span style="color:red">NumOfMaster = 2</span></B>\n
disable = 0\n
--------------------------------------------------\n

Example 7: Non-Simulator + Non-Simulator + Simulator (Single Interrupt)

--------------------------------------------------\n
MessageLevel = 0\n
PrintLog = 0\n
\n
[Platform 0]\n
Location = .\\platform\\xxx\\\n
DllName = xxx.rtdll\n
disable = 0\n
\n
<B><span style="color:red">
[Platform 1]\n
Location = .\\platform\\yyy\\\n
DllName = yyy.rtdll\n
disable = 0\n
</span></B>
\n
[Platform <B><span style="color:red">2</span></B>]\n
Location = .\\platform\\simu\\\n
DllName = SimuPlatform.rtdll\n
disable = 0\n
--------------------------------------------------\n

Network Card Settings for Multi-Cycle Configurations

For multi-cycle configurations, a separate NIC must be assigned to each master.

NICs can be configured using the WMX3 installer, the ConfigureNIC utility, or manually. See the WMX3 Setup Guide and the WMX3 Utility Help for more details.

When there are multiple masters running on the same platform, the RtxTcpIp.ini file (in the same folder as xxx_network.def) must be updated. This file can be updated using the WMX3 installer, the ConfigureNIC utility, or manually.

When updating the RtxTcpIp.ini file manually, the following parameters must be set:

[TCP/IP]
NumOfInterfaces=2

[rtnd0]
Driver=X
Location=X;X;X

[rtnd1]
Driver=X
Location=X;X;X

In the above configuration, X should be filled in with the appropriate values for each NIC. [rtnd0] corresponds to [Master 0] in xxx_network.def, and [rtnd1] corresponds to [Master 1].

When there are multiple masters running on different platforms, the RtxTcpIp.ini file must be updated for each platform that is used.

When updating the RtxTcpIp.ini file manually, the following parameters must be set:

First Platform:

[TCP/IP]
NumOfInterfaces=1

[rtnd0]
Driver=X
Location=X;X;X

Second Platform:

[TCP/IP]
NumOfInterfaces=1

[rtnd0]
Driver=X
Location=X;X;X

In the above configuration, X should be filled in with the appropriate values for each NIC.

Axes Controlled by Each Master

Axes are first assigned to the masters of the first interrupt, and then to the masters of the second interrupt. Within each interrupt, axes are assigned in the order that the masters are defined in Module.ini with [Platform X].

For non-simulator masters, axis indices are assigned to axes that are discovered in the network in the order of their connection.

For simulator masters, axis indices are assigned to all remaining axes that have not been assigned to a master yet. (If a non-simulator master follows a simulator master, the UserDef option is used to limit the axes that are assigned to the simulator master, as explained below. Otherwise, all remaining axes will be assigned to the simulator master and no axes will be assigned to the non-simulator master that follows it.)

For example, if the first interrupt has non-simulator master 1 and simulator master 1, and the second interrupt has non-simulator master 2 and simulator master 2, axes are assigned to masters in the following order: non-simulator master 1, simulator master 1, non-simulator master 2, simulator master 2.

To prevent axis indices from being assigned incorrectly when the axis configuration that is detected on the network differs from the anticipated axis configuration, use the UserDef option in the network define file.

For example, the axis configuration can be specified as follows.

-----------------xxx_network.def------------------\n
UserDef=1\n
\n
[Slave 0]\n
Axis = 0\n
\n
[Slave 1]\n
Axis = 1\n
--------------------------------------------------\n

For more information, see the discussion in this manual for the network define file for each platform.

The UserDef option in the network define file can also be used to restrict the axes that are assigned to simulator masters. For simulator masters, “[Axis X] Index = Y” is used instead of “[Slave X] Axis=Y”.

For example, the axis configuration can be specified as follows.

----------------simu_network.def------------------\n
UserDef=1\n
\n
[Axis 0]\n
Index = 0\n
\n
[Axis 1]\n
Index = 1\n
--------------------------------------------------\n

For more information, see the discussion in this manual for the network define file of the simulator platform.