Professional Documents
Culture Documents
Version 8.0
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Device Interfaces - OPC and
Other Guide
•
•
•
•
Disclaimer of Liability
The information contained in this document (and other media provided
herewith) constitutes confidential information of Siemens AG and is
protected by copyright laws and international copyright treaties, as well
as other intellectual property laws and treaties. Such information is not to
be disclosed, used or copied by, or transferred to, any individual,
corporation, company or other entity, in any form, by any means or for
any purpose, without the express written permission of Siemens AG.
The information contained in this document and related media
constitutes documentation relating to a software product and is being
provided solely for use with such software product. The software product
was provided pursuant to a separate license or other agreement and
such information is subject to the restrictions and other terms and
conditions of such license or other agreement.
The information contained in this document and related media is subject
to change without notice and does not represent a commitment and does
not constitute any warranty on the part of Siemens AG. Except for
warranties, if any, set forth in the separate license or other agreement
relating to the applicable software product, Siemens AG makes no
warranty, express or implied, with respect to such information or such
software product.
Trademarks
Siemens AG and FactoryLink are trademarks or registered trademarks of
Siemens AG in the United States and/or other countries. All other brand
or product names are trademarks or registered trademarks of their
respective holders.
•
•
•
•
Device Interface Overview
FactoryLink provides a number of device drivers that allow you to communicate with remote
devices that monitor and control processes. These devices include Programmable Logic
Controllers (PLCs), Remote Terminal Units (RTUs), or custom devices. Virtually all
industries, from the production of goods at a factory to the movement of liquid or gas down a
pipeline, use these devices.
By sending messages between FactoryLink and these devices, you can automate tasks
associated with processes, such as when valves are opened/closed, when machines are turned
on/off, or when data like temperature or pressure is collected. Each device uses a specific
communication protocol.
S UPPORTED D RIVERS
FactoryLink supplies a set of protocol-specific drivers for communicating with these devices.
Each protocol driver translates messages sent from FactoryLink into a format understood by
the device and translates messages sent from the device to a format understood by
FactoryLink.
FactoryLink provides several technologies that work with these drivers. These technologies
aid in providing a consistent, easy-to-use interface into the FactoryLink Real-time Database.
These technologies include External Device Interface (EDI), Rapid Application Protocol
Driver (RAPD), OLE for Process Control (OPC), and others. The FactoryLink documentation
set is centered around these technologies, so you will find the documentation for your driver in
the manual with its associated driver technology.
Supports
Windows
Driver PLC Protocol Technology Requires Mailbox
OS
Redundancy
Siemens Sinec S5, S7 Ethernet RAPD 2000, XP, ISO TP2000 Yes
H1 2003 Protocol
Supports
Windows
Driver PLC Protocol Technology Requires Mailbox
OS
Redundancy
•
•
•
•
KTDTL and NetDTL
O VERVIEW
The FactoryLink Allen-Bradley RSLinx and INTERCHANGE tasks, KTDTL and NetDTL,
provide a device interface for programmable logic controller (PLC) and small logic controller
(SLC) communications with FactoryLink across one or more Allen-Bradley proprietary
networks.
Note: The KTDTL task and the Windows versions of the NetDTL task use
Allen-Bradley’s RSLinx communications software. Other operating system versions
of NetDTL use INTERCHANGE.
The KTDTL and NetDTL tasks can communicate with the following types of Allen-Bradley
devices: PLC-2, PLC-3, PLC-5, PLC-5/250 (Pyramid Integrator), PLC-5/xxE (NetDTL direct
Ethernet link only), and SLC-500 series 01, 02, 03, and 04 processors. (SLC-5/01, SLC-5/02,
and SLC-5/03 processors require an interface module. SLC-5/04 processors connect directly to
a Data Highway Plus).
Additionally, tasks can run concurrently with software other than FactoryLink that is also
using INTERCHANGE or RSLinx.
KTDTL – Data Highway Plus (DH+) communications can be established through an
Allen-Bradley KT, KTX, 1784-KT, 1784-KT2, or 1784-PCMK card port. The DH+ can link
with other networks, including another DH+, a Data Highway 485 (DH-485), or a Data
Highway (DH) via a compatible Allen-Bradley network interface module.
NetDTL – NetDTL communicates through an Ethernet card port using the TCP/IP network
protocol. Communications with Allen-Bradley devices occurs through either a PLC-5/250
with an Ethernet interface module providing a bridge to a DH+ network, or through a direct
Ethernet link to a device from the PLC-5/xxE family. Through the Pyramid Integrator, the
NetDTL task can communicate with stations on the local DH+ link as well as with stations on
other networks, including DH-485, DH, and DH+.
A Pyramid Integrator with an Ethernet interface module serving other devices can have
multiple clients (FactoryLink NetDTL tasks). In the same way, a FactoryLink NetDTL task
can connect to multiple servers. To prevent excessive network traffic, do not use more than
eight Pyramid Integrators as DH+ gateways in your application.
NetDTL NetDTL
Task Task
Allen-Bradley
RSLinx or
INTERCHANGE FactoryLink
Real-Time
Database
NetDTL
Task
NetDTL
Task
O FFLINK A DDRESSING
The KTDTL and NetDTL tasks can communicate with devices off the local network link
(offlink) across one, two, or several Allen-Bradley networks. Networks can be split for various
reasons, including physical media limitations and functional splits. For example, all the
devices for a particular conveyor might be connected to one network while the devices for
another conveyor are connected to a different network. Consult the appropriate Allen-Bradley
documentation to verify you are using the correct media for connecting with networks and
devices.
The diagrams illustrate offlink connections by comparing them to a physical highway system.
• The Data Highway Plus directly connected to the FactoryLink station or, for NetDTL, to the
Ethernet interface, is the main thoroughfare. Using an appropriate Allen-Bradley interface
module, you can “exit” to other networks, or “highways.”
• An offlink address node you specify in the configuration tables identifies the route from the
FactoryLink station to the offlink device. In the diagrams, this address is depicted as a road
sign alongside a highway giving directions to a destination.
• An interface module that links networks together (such as 1785-KA5 or 1785-KA) is shown
as an interchange on a highway between different types of roads.
• An interface module that links devices to a network (such as 1775-KA or 1785-KA3) is
shown as an exit to a highway’s access road.
D
at
a
H
ig
hw
To the right of the main Data Highway
ay Plus, a 1785-KA5 interface module
Pl PLC-2 connects to a DH-485, which connects
u s to another 1785-KA5 interface module
57 and a Data Highway Plus.
178
5-K
D
at
A3
178
a
H
D ig
5-K
at h 46
a w
H ay PLC 5/40
A5
ig Pl
hw us
ay
13
178
5-K
17 7 A
PLC-2 1- K
A2
178
22
SLC 5/02
5- K
11
A5
PLC-3 1 77
5- K 26
A SLC 5/03
To the left of the main Data D
at
M
H
n
hw
at
a Data Highway. ay
a
H
48
ig
48 5
hw
ay
Pl
PLC-2 178
5- K
us
A3
to
Fa
addresses. 42
PC
FactoryLink Station
D
at
a
H
ig To the right of the main Data Highway
hw
ay Plus, a 1785-KA5 interface module
Pl PLC-2
us connects to a DH-485, which connects
57 to another 1785-KA5 interface module
178
and a Data Highway Plus.
5-K
D
A
at 178
a
3
H
D ig
5-K
at hw 46
a ay PLC 5/40
H
A
ig Pl
5
h w u
ay s
Devices on each network are
indicated by “road signs” that
display the device node
13
1 78 addresses.
5- K
A
PLC-2 1 77
1- K 22
A2
178
SLC 5/02
5- K
11 26
A5
SLC 5/03
PLC-3 17 7
5-K D
A at
D a
To the left of the main Data at H
a ig
H h w
Highway Plus, a 1785-KA ig ay
hw
interface module connects to 48 ay 48
a Data Highway. 5
Pl
u s
PLC-2 17 8
5- K
A3
FactoryLink Station
KTDTL
Task
+
SLC 5/04
DH
PLC-2
us
yPl
PLC-5
wa
h
Hig
ta
Da
PLC-5/250
PLC-5 with
1785-KA5
1785-KA5 module in a
PLC-5 I/O rack provides the
link from DH+ to DH-485
SLC-5/03
85
y4
wa
SLC-5/02
gh
Hi
ta
Da
SLC-5/01
The following diagrams illustrate ways communications can occur between the FactoryLink
station and various types of Allen-Bradley devices through an Allen-Bradley card port.
KTDTL Communications Options
FactoryLink
Station
1784-KTX 1784-KT
Card Card
PLC 5
DH+
SLC 5/04
DH-485 1785-KA5
1747-AIC 1747-AIC
1747-C11
PLC-3
SLC 5/02
D
at
a
Hi SLC 5/03
SLC 5/04 gh
w
ay
Pl 1785-KA5
us
D
at
a
H
ig
hw
ay
48
5
Data Highway Plus Local Link
The Data Highway Plus links the PLCs
to the computer running the device
interface software through a KT card.
1785-KA3
KT Card
PLC-2 PLC-5/250
N ET DTL TOPOLOGY
The diagrams provide examples of possible topologies for a NetDTL task configuration.
The following diagram shows a basic physical link between the FactoryLink station and
devices on the Ethernet and DH+ networks communicating through a Pyramid Integrator with
an Ethernet interface module.
Typical Physical Link to Local Addresses
PLC-3 PLC-5/xxE
PLC-5/xxE
Ethernet Card
FactoryLink Station
The following diagram shows a typical physical link between the FactoryLink station and
devices at offlink addresses.
1775-KA
Data Highway 485 Offlink
The 1785-KA5 module serves as a bridge to let devices
1785-KA residing at offlink addresses communicate with the
computer running the device interface software.
D SLC 5/02
at
a
H
ig
hw
ay SLC 5/03
Pl
us 1785-KA5
D
at
a
H
ig
hw
ay
48
5
Ethernet Communications
The NetDTL task can
communicate directly to a device in
PLC-5/xxED the PLC-5/xxE family over TCP/IP.
at
a
Hi
gh
w
ay PI Et
Pl he
us rn
Data Highway Plus Ethernet Link et
The PLCs on the Data Highway Plus are
linked to the computer running the
device interface software through a
PLC-2/250 Pyramid Integrator with an
Ethernet interface module.
PLC-5 with
1785-KA5
1785-KA5 module in a
PLC-5 I/O rack provides the
SLC-5/03 link from DH+ to DH-485
5
48
SLC-5/02
ay
SLC-5/04
lu s
hw
yP
ig
H
wa
SLC-5/01
ta
gh
Da
Hi
ta
PLC-5/250
Da
Allen-Bradley
RSLinx or
INTERCHANGE FactoryLink
Real-Time
Database
PLC-5
NetDTL
Task
Communications through
an Ethernet card
PLC-5/250 with an
Ethernet interface
IP
P/
Task Name Type KTDTL or NetDTL to identify the task to the system
Description Type Allen-Bradley KTDTL or Allen-Bradley NetDTL to describe the
task.
Task Flags • Select Run at Startup to instruct the task to start automatically at
run time.
• Select Create Session Window to instruct the task to open a
status window at run time where system messages from the
KTDTL or NetDTL task and the RSLinx or INTERCHANGE
software will appear.
Start Order Enter 1 to ensure the task starts up appropriately at run time.
Executable File Type bin/ktdtl or bin/netdtl to specify the location of the executable
file.
Program Enter the program parameter for the specific override, followed by
Arguments the override value, using the list of IDs in “Program Arguments” on
page 102.
Because an application can be linked to multiple devices, define a unique communication path
to each device so the application can distinguish one device from another. This is done by
assigning specific numbers to represent physical aspects of your particular configuration. The
first number you assign, “logical port,” is common to all devices that will communicate with
the task and is typically defined only once per task, regardless of the number of cards to be
used.
KTDTL – For KTDTL, in addition to defining each logical port in the Logical Station table, you
must also edit specific system files to identify each port. If more than one card is being used,
instruct the task to differentiate between them by identifying the port numbers that represent
each card in the Logical Station table.
To identify a particular device communicating through the logical port, define a “logical
station” number for the device. The logical station number represents a combination of the
logical port and the physical address of the device. Assign each device a logical station
number. The diagram below provides examples of logical ports and logical stations.
NetDTL – the is an Ethernet card, and a link from Ethernet to DH+ is provided by an Ethernet
Interface module in a PLC-5/250 I/O rack.
KTDTL – the card is a KT card. A 1785-KA5 module in a PLC-5/250 I/O rack is located at
address #4. Two devices are located at address #10: one is a PLC-5/250 on a DH+ network and
the other is a SLC 5/03 on a DH-485 network. To enable the KTDTL or NetDTL task to
differentiate between the two devices that have an address of 10, give each device its own
logical station number. Consequently, when an application is being run and the task receives a
request to write a value to a register in a device at address #10, the logical station number
provides the unique communication path that tells the task to which address #10 the value
should be written.
Logical Port and Logical Station
1785-KA5 Module
FactoryLink Station
in a PLC-5
I/O Rack at
Address #4 DH-485
NetDTL—Ethernet interface
module in a PLC-5/250 I/O
rack provides the DH+ link DH+
SLC 5/03 at
Address #10
PLC-5/250 at
Address #10
Logical Station 1 consists of Logical Port 1
and a PLC-5/250 at DH+address #10.
Logical Station 2 consists of Logical Port 1
and a PLC-5 at DH+ address #4.
Accessing
Field Descriptions
Accessing
Device Interfaces > Allen-Bradley NetDTL > Logical Station Control > “logical port” > Ethernet
Address Information
Field Descriptions
This table is new to this version of the NetDTL driver. The previous version of the NetDTL
driver limited the maximum number of IP address usages to 40. The new format removes this
restriction from the FactoryLink side. The maximum number of IP address usages is bound by
whatever the RSLinx is capable of supporting. Refer to the RSLinx documentation for this
information. If you are upgrading a FactoryLink application that uses the old style NetDTL
configuration table layout, use the following procedure to run the new NetDTL:
1. Run FLSAVE to save an existing NetDTL application to a .mps file.
2. Install the new version of NetDTL driver.
3. Run FLREST to restore the .mps file to the application.
4. Run FLCM to modify the application with the proper data.
5. Run FLRUN to use the new NetDTL driver.
6. Click Save to validate the data.
Accessing
Device Interfaces > Allen-Bradley NetDTL > Logical Station Control > “logical port” > Ethernet
Address Information > “IP address” > Logical Station Information
Field Descriptions
KTDTL D RIVER
Station Control
Accessing
Field Descriptions
Station Information
Accessing
Device Interfaces > Allen-Bradley KTDTL > Logical Station Control > “logical port” > Logical
Station Information
KT Card 1
KT Card 4
FactoryLink Station
When all information on the Logical Station Control table is specified, the table resembles one
of the following sample tables.
KTDTL
In this example, Logical Port 0 is configured to communicate with a response timeout of 5.5
seconds. The KTDTL task will write communications error messages associated with this
logical port to a message tag, KT_MSG.
NetDTL
In this example, Logical Port 0 is configured to communicate with a response timeout of 5.5
seconds.
When all information on the Logical Station Information table is specified, the table resembles
the this sample table.
KTDTL
In this example, the tag KT_ERR is configured to hold port errors for logical station 0, which
communicates with a SLC 5/03 device at DH-485 address 3. The path from the FactoryLink
station to the SLC 5/03 device is as follows: The first KT card communications port is used.
The DH+ address of the bridge to the DH-485 network where the offlink station resides is 42,
and the destination link ID of the DH-485 network is 2.
NetDTL
In this example, the tag NDTL_ERR is configured to hold port errors for logical station 0,
which communicates with a SLC 5/03 device at DH-485 address A Pyramid Integrator at
192.1.1.21 (TCP/IP Address Pyramid El #1 in the Logical Station Control table) provides the
Ethernet link. The path from this Pyramid Integrator to the SLC 5/03 device is as follows:
Channel 2 of the Resource Manager module in this Pyramid Integrator is used. The DH+
address of the bridge to the DY-485 network where the offlink station resides is 42 and the
destination link ID of the DY-485 network is 2.
The following topology diagrams illustrate how to enter local network and offlink addresses in
the Logical Station Information table. For practical purposes, the initial entry in the A-B KT
Card ID (ASCII) field is 1KT:0 throughout the examples.
Unless otherwise indicated, all entries can be used for triggered and unsolicited operations.
FactoryLink Station
To communicate with Device A, To communicate with Device B,
you would make the following you would make the following
field entries: field entries:
A-B KT Card ID A-B KT Card ID
(ASCII) (ASCII)
1KT:0 1KT:0
Station Station
Address Link 1 Address
(Octal) (Octal)
Device A Device B
43 56
All of these entries can be used for triggered and unsolicited operations.
FactoryLink Station
To communicate with Device A, To communicate with Device B,
you would make the following you would make the following
field entries: field entries:
A-B KT Card ID A-B KT Card ID
(ASCII) (ASCII)
1KT:0 1KT:0
Station Station
Address Address
(Octal) Link 1 (Octal)
Device A Device B
43 56
1KT:0/B:42/KA 1KT:0/B:42/KA
(triggered only) (triggered only)
36 41
Unless otherwise indicated, all entries can be used for triggered and unsolicited operations.
For practical purposes, the initial entry in the PYRAMID CHANNEL ID (ASCII) field is 0RM:2
throughout the following examples.
42
To communicate with Device C, PLC To communicate with Device D,
you would make the following 5/250 you would make the following
field entries: field entries:
52
PYRAMID PYRAMID
CHANNEL ID CHANNEL ID
0RM:2/B:42/L:2 0RM:2/B:42/L:2
Station DH+ Station
PLC 34 26 PLC
Address Link 2 Address
(Octal) Device C Device D (Octal)
34 26
47
To communicate with Device E, PLC To communicate with Device F,
you would make the following 5/250 you would make the following
field entries: field entries:
25
PYRAMID PYRAMID
CHANNEL ID CHANNEL ID
0RM:2/B:42/L:3 0RM:2/B:42/L:3
Station DH+ Station
PLC 36 41 PLC
Address Link 3 Address
(Octal) Device E Device F (Octal)
36 41
All of these entries can be used for triggered and unsolicited operations.
0RM:2/B:42/KA 0RM:2/B:42/KA
(triggered only) (triggered only)
PLC 36 DH 41 PLC
Station Link 2 Station
Address Device C Device D Address
(Octal) (Octal)
36 41
Unless otherwise indicated, all entries can be used for triggered and unsolicited operations.
DH+ 010 DH+ 013 DH+ 023 DH+ 035 DH+ 045
Log. Sta. 0 Log. Sta. 1 KA5 Log. Sta. 2 Log. Sta. 3
PLC-5 PLC-3 DH-485 002 PLC-5/250 PLC-5
DH-485 Link 2
DH-485 003 DH-485 011 DH-485 012 DH-485 022 DH-485 031
Log. Sta. 4 Log. Sta. 5 KA5 Log. Sta. 6 Log. Sta. 7
SLC-5/03 SLC-5/03 DH+ 056 SLC-5/02 SLC-5/03
Data Highway + Link 3
FactoryLink
Station
1KT:0
DH+ 036
DH+ 010 DH+ 013 DH+ 023 DH+ 035 DH+ 045
Log. Sta. 0 Log. Sta. 1 KA Log. Sta. 2 Log. Sta. 3
PLC-5 PLC-3 PLC-5/250 PLC-5
Data Highway
DH 011 DH 013
Log. Sta. 4 Log. Sta. 5
PLC-3
NetDTL Configuration 1
FactoryLink
Station
Ethernet TCP/IP
DH+ 010 DH+ 013 DH+ 023 DH+ 035 DH+ 045
Log. Sta. 2 Log. Sta. 3 KA5 Log. Sta. 4 Log. Sta. 5
PLC-5 PLC-3 DH-485 002 PLC-5/250 PLC-5
DH-485 Link 2
DH-485 003 DH-485 011 DH-485 012 DH-485 022 DH-485 031
Log. Sta. 6 Log. Sta. 7 KA5 Log. Sta. 8 Log. Sta. 9
SLC-5/03 SLC-5/03 DH+ 056 SLC-5/02 SLC-5/03
Data Highway + Link 3
TCP/IP: abplc3
PLC 5/250
Log. Sta. 0
ORM:2
DH+ 015/016
DH+ 010 DH+ 013 DH+ 023 DH+ 035 DH+ 045
Log. Sta. 1 Log. Sta. 2 KA Log. Sta. 3 Log. Sta. 4
PLC-5 PLC-3 PLC-5/250 PLC-5
Data Highway
DH 011 DH 013
Log. Sta. 5 Log. Sta. 6
PLC-3 PLC-3
Triggered read operations occur based on either timed intervals or events. In both types of
operations, a change in value of a trigger tag prompts FactoryLink to read data in specific
locations in a device.
• Timed-Interval Reads – a read operation based on a timed interval instructs FactoryLink to
collect data at defined intervals, such as several times a minute or at a given time each day.
• Event-Driven Reads – a read operation based on an event instructs FactoryLink to collect
data only when a defined event occurs, such as when an operator selects a new graphic
window or when an alarm condition occurs.
Unsolicited – In an unsolicited read operation, FactoryLink does not initiate the reading of
data. Instead, it accepts certain types of data from specified locations in a device, then stores
the data in the real-time database. FactoryLink recognizes the device data because its starting
address and length match an identical address and expected data length configured in
FactoryLink.
Unsolicited Read Operation
When filling out a request for a read operation, you specify in which tags the data read from
the device during the operation will be stored. Among other things, you specify: the tag name
assigned to the FactoryLink database tag storing the data, the logical station from which the
data will be read, and the address containing the data to be read.
Triggered Read Request – In a triggered read request table, configure a tag in the
Read/Write Control table as a trigger to initiate a block read operation that causes FactoryLink
to read each device address specified in the Read/Write Information table whenever the value
of the trigger tag is forced to 1 (ON). FactoryLink stores the value read from each address in a
real-time database tag (digital, analog, long analog, float, or message).
How a Triggered Read Operation Works
FactoryLink Station
You can define two types of write operations: block and exception.
Block – In a block write operation, a change in value of a trigger tag prompts FactoryLink to
write one or more database tag values to specific device locations.
Exception – In an exception write operation, a change in the value of a tag prompts
FactoryLink to write that value to a specific device location. When a tag’s value changes, an
internal change-status indicator within the tag also changes. If a tag is configured for an
exception write and this indicator has been set since the last scan of the real-time database
(indicating the value of the tag has changed), FactoryLink writes this tag’s value to the device.
The difference in these two operations is the way in which each is triggered. Both operations
write data from FactoryLink to the device when a trigger is activated. For a block write, the
trigger is a tag defined specifically for prompting a write operation. For an exception write, the
trigger is the change in status of the tag to be written.
When filling out a request for a write operation, specify the following basic information: the
tag name assigned to the FactoryLink database tag containing the data to be written, the logical
station to which the data will be written, and the address to which the data will be written.
Block Write Request – In a block write request table, a digital tag you configure in the
Read/Write Control table as a trigger to initiate a block write operation causes the task to write
tag values specified in the Read/Write Information table to their associated device addresses
each time the value of the tag is forced to 1 (ON).
How a Block Write Operation Works
While not required, it is recommended you configure two simple tables to test the
communication path before you define the read and write operations the application needs.
Perform the following steps to ensure the device can properly communicate with FactoryLink:
Configure two tables: a triggered read table and an exception write table.
In the read table, define:
• A trigger tag you will manually force to 1 (ON), using the FactoryLink Real-Time Monitor,
RTMON.
• A tag to hold the value read from a known address in one of the devices in your
configuration. You will watch the activity of this tag in RTMON to verify it is being
updated.
Define a tag in the write table to hold a value that will be written to the same address
configured in the read table. Change this tag’s value in RTMON to prompt the processing of
this table.
Note: The next steps in the procedure involve the use of the FactoryLink Real-Time
Monitor. For detailed instructions on using RTMON, see the Utilities Guide.
Create a watch list in RTMON containing the tags defined in the two tables. Use the Watch
option on the RTMON Options menu to create a watch list.
Prompt the processing of the triggered read table by forcing a 1 to the read trigger using the
Tag Input option on the RTMON Options menu. You can watch the value of the trigger change
in the watch list.
When the triggered read table is processed, the tag defined to hold the value read (value1 in the
sample table) is updated with the current value of the specified register address.
Use RTMON to prompt FactoryLink to process the exception write table. Change the value of
the tag to be written (value2 in the sample table) using the same option you used to trigger the
read table, Tag Input. When you change the tag’s value in this way, the exception write table is
processed and the value is written to the specified register address.
Following are some guidelines and examples to help you determine which types of read and
write operations work best for specific situations and how to configure these operations to
optimize FactoryLink’s performance.
Triggered Read Operations
A triggered read operation is the best choice for reading data that changes frequently and at
regular intervals. Use the following types of triggered read operations under the described
circumstances.
Interval If an application does not require all data to be collected at the same time,
you can increase FactoryLink’s efficiency by configuring several read
tables, each reading at a different interval and only as often as necessary.
For example, configure a table with timed reads that occur every five
seconds for tags with values that change frequently, and every thirty
seconds for tags with values that change less frequently.
Event If events occur infrequently, you can reduce the number of requests sent
between FactoryLink and the device and increase overall efficiency by
configuring several read tables, each triggered by a different event. For
example, if a graphic screen contains a large number of variables useful
only on that screen (that is, they are not alarm points and are not being
trended), configure a separate read table containing only these variables.
FactoryLink will only read the tags on that screen when the operator
triggers this read table by selecting the graphic screen for viewing. Using
this technique can reduce traffic between FactoryLink and the device when
an application has a large number of graphic screens.
As another example of an event-driven read operation, configure
FactoryLink to trigger a particular read table only if an alarm condition
occurs. The tag that detects the alarm condition can trigger FactoryLink to
collect additional information from the device about the status of related
processes.
Unsolicited Read Operations
Use an unsolicited read operation if values to be read change infrequently and at unspecified
intervals. For example, you might design an application to notify FactoryLink whenever an
unexpected event occurs, such as an electrical unit power surge of a specified magnitude.
Consider the frequency in which unsolicited read operations are expected to execute.
Unsolicited reads occurring too frequently and at irregular intervals can cause excessive traffic
leading to a jam on the communication link and poor system performance.
Use the following types of write operations under the described circumstances.
Block If an application writes values of tags that change frequently to the device,
use a block write operation because FactoryLink sends the minimum
number of write commands necessary to write the specified data. A block
write is most efficient when your application writes a group of tags at one
time to the device (for example, when your application requires a new
recipe).
Exception If an application writes values of tags that change infrequently to the
device, or if the application only needs to change one value at a time (for
example, a new user-entered setpoint), use an exception write operation.
For each exception write, one packet of data per tag is sent to a device.
Consider the following triggering guidelines based on the read and write operation
recommendations described in “Choosing Operation Type” on page 53:
• Only Trigger When Data is Needed – how often you choose to trigger data to be read or
written can depend on several factors, including how often the data changes and whether the
changes occur regularly, the timing of the events in the application, and the types of read
and write operations the device supports.
• Only Trigger When on Specific Screens – trigger data needed more often at faster rates
while slowing down other requests.
• Daisy Chain Tables – link or daisy chain tables together in several loops by defining tags
in such a way that the completion of one operation triggers the beginning of another. See
“Cascaded” on page 81.
For detailed descriptions of specific techniques you can use to enhance the performance of
your application, see “Techniques for Improving Communication Performance” on page 80.
Consider the following recommendations when filling out a request for a read or write
operation. For additional recommendations pertaining to unsolicited read operations only, see
“Unsolicited Read Operation Concepts” on page 63.
• Logically Group Table Entries – FactoryLink creates messages to send to a device based
on entries in a read or write table. Table entries are grouped according to the following
criteria: logical station number, FactoryLink data type, Allen-Bradley data type, and
address. The messages FactoryLink creates are based on the results of the grouped table
entries; therefore, for maximum efficiency, you should attempt to group read and write table
entries the same way in which FactoryLink internally groups them.
Another benefit of organizing table entries as FactoryLink does is debugging your
application is easier. If an error occurs in table processing, you can readily identify the
source of the error.
If you define a write table as shown in the table above, however, each row will generate a
separate message and data will only be written to the four addresses specified. To send a
single message to write to addresses 32 through 41, you would need to define each address
Accessing
(KTDTL) Device Interfaces > Allen-Bradley KTDTL > Allen-Bradley KTDTL Read/Write Control
(NetDTL) Device Interfaces > Allen-Bradley NetDTL > Allen-Bradley NetDTL Read/Write Control
Accessing
(KTDTL) Device Interfaces > Allen-Bradley KTDTL > Allen-Bradley KTDTL Read/Write Control >
“your table name” > Allen-Bradley KTDTL Read/Write Information
(NetDTL) Device Interfaces > Allen-Bradley NetDTL > Allen-Bradley NetDTL Read/Write Control
> “your table name” > Allen-Bradley NetDTL Read/Write Information
Field Descriptions
Define information using the following field descriptions for each address to be read or to
which information is to be written. For a Read Table, add a table entry for each FactoryLink
tag in which data read from the device will be stored when the operation executes. For a Write
Table, add a table entry for each tag to be written when the operation executes.
NetDTL using INTERCHANGE – at startup, the Ethernet interface assigns itself an alternate
address on the Data Highway+ that is one value higher than the configured address for each
DH+ port on the Pyramid Integrator. (DH+ addresses are specified in octal format; that is, 108
is equal to 8.) The Pyramid Integrator uses this alternate address to process unsolicited data. To
distinguish data sent to a Pyramid Integrator Ethernet interface client from normal
PLC-to-PLC data sent to the PLC-5/250, the PLC writes unsolicited data to the alternate
address. For example, if the Resource Manager PLC-5/250 address is 10, for unsolicited data,
its alternate address is 11.
Pyramid Integrator as Data Concentrator
NetDTL using RSLinx – the alternate address applies to INTERCHANGE only. The RSLinx
Ethernet interface only accepts unsolicited data from devices connected directly to Ethernet.
To receive data from devices on DH+, DH, or DH 485, use the Pyramid Integrator as a data
concentrator; that is, send unsolicited messages to the Pyramid Integrator first as if it were
another PLC; then transmit the data from the Pyramid Integrator to the RSLinx Ethernet
interface.
A data packet is an unprotected write command for unsolicited reads. The KTDTL and
NetDTL tasks process data tags as packets of data rather than as individual addresses. Each
packet has a unique definition that includes the following information: path to the originating
station, command length (number of tags written), and the starting address (lowest address
defined for a particular logical station).
• NetDTL – for NetDTL, the path to the originating station includes the PI DH+ port and the
device's network address on that port, or the Ethernet address of a PLC 5/xxE device.
• KTDTL – for KTDTL, the path to the originating station includes the Allen-Bradley PC card
port and the device's network address.
The starting address of a data packet is flexible and can be assigned any value ranging from 0
to 7777 (octal). The address of the originating station and the command length, however, are
less flexible. They define similar packets of data from similar locations.
For unsolicited reads, it is only necessary to define the first and last addresses in a packet. You
can leave the middle addresses (everything other than the low and high addresses) undefined
or, most likely, assign them to single or multiple FactoryLink tags as described in the following
section.
Application Data Packets
When the KTDTL or NetDTL task maps unsolicited data to tags, it sorts the data into packets
based on the structure of PLC-2 write commands:
• For each defined Unsolicited Read table, the task sorts the entries in ascending order by
logical station and address. The lowest address for each logical station determines the
starting address of the packet.
• The task then determines the command length by first subtracting the starting address from
the highest referenced address, then by adding one. The highest referenced address is the
highest address plus the PLC-type length.
To Determine the PLC-Type Length – for the data types listed, add the specified value:
INT2 Add 0.
INT4, FLT Add 1.
STRUC, Add the length specifier (value of the Address field in the Unsolicited Read
ASC Information table) minus one.
Data Packet Processing
When the KTDTL or NetDTL task receives a data packet, it searches its list of defined packets
for definitions that match the originating station, starting address, and number of
Allen-Bradley tags of the received packet. When it finds matching definitions, the task reads
the received information and writes all of the data tags described in the definitions to the
real-time database according to the values of the data in the received packet. Any specific data
If one client (FactoryLink KTDTL or NetDTL task) requires multiple definitions of the same
data packet, the client itself handles the sorting of these packets using the criteria described in
“Data Packet Processing” on page 65. If multiple clients define identical data packets,
however, the server (Allen-Bradley INTERCHANGE or RSLinx) cannot differentiate between
these packets and it loses data; therefore, to avoid data loss, do not define identical data packets
from multiple clients of the same server.
If you need multiple definitions of the same data packet, define one packet in one table with
multiple tags per address. Alternatively, you could define two identical packets in two separate
Unsolicited Read Information tables.
Maximum Command Length of Data Packets
• KTDTL – for devices communicating through an Allen-Bradley card over a DH+, the
maximum command length for individual packets in unsolicited reads is 120 words (240
bytes).
• NetDTL – for devices communicating through a Pyramid Integrator with the Ethernet
Interface module over a DH+, the maximum command length for individual packets in
unsolicited reads is 120 words (240 bytes).
For SLC 5/03 and 5/04 processors, the maximum length is 41 tags (words).
If the range of addresses defined for a particular logical station exceeds this maximum
command length, send a second packet of addresses from the Allen-Bradley device for this
logical station. If FactoryLink tags are defined for appropriate (border) addresses, then these
packets will occupy contiguous space.
Number of Data Packets
For the most efficient performance of an unsolicited read operation, define only one packet per
logical station in a single configuration table. If you need to define more than one packet per
logical station, however, make the starting address number of each subsequent packet greater
than the highest address in the address range of the previous packet.
All Allen-Bradley PLCs support the PLC-2 write command; however, some PLCs limit the
address ranges and data types that can be specified. Consult the appropriate PLC programming
guide for these restrictions.
Since unsolicited messages must be PLC-2-type unprotected writes, the destination station
type in the PLC ladder logic MSG instruction must be PLC-2. For most PLCs, the ladder logic
MSG instruction does not allow the source address to be an F, H, L, file type if the destination
PLC is a PLC-2. The communication binary format for INT4, FLT, and others depends on the
actual PLC type.
In standard Allen-Bradley PLCs, certain Allen-Bradley PLC data types (FLT and INT4, to
name a few) cannot be sent in a PLC-2 unprotected write command. To instruct the PLC to
send such data types to FactoryLink:
Define the PLC type. For the task to convert the PLC type for the originating logical station in
the definition of the logical station number, specify the actual PLC type (PLC-3, PLC-5,
PLC-250) in the Station Type field of the Logical Station Information table for the logical
station referenced in the Unsolicited Read Information table. The PLC type you enter in the
Station Type field corresponds to the PLC binary format for the data you specify in the Data
Type field on the Unsolicited Read Information table.
Copy the data to a binary or integer file. Build the PLC-2 write data from the PLC, sending the
data in a binary or integer file by copying the long integer, floating-point, or other data to the
binary or integer file.
Trigger a MSG instruction to send the data to the appropriate address:
• KTDTL – the MSG instruction should send the data from the file to the DH+ or DH-485
address of the PC card port.
• NetDTL – for a PI connected to a DH+, the MSG instruction should send the data from the
file to the PI’s alternate address. For a device with a built-in Ethernet interface, the MSG
instruction should send the data from the file to the IP address labeled CLIENT for
INTERCHANGE. For RSLinx, use the TCP/IP dot notation address (nnn.nnn.nnn.nnn) of
the FactoryLink client.
SLC 5/03 and 5/04 MSG Instruction Considerations
The SLC 5/03 and 5/04 processors, using the MSG instruction, can read and write data to and
from data table memory. To send and receive data from a user-defined data table memory
location, you specify information associated with the data for the Target Node, Target Offset,
and Message Length MSG instruction functions.
Note the following considerations when configuring the MSG instruction:
• When using the MSG instruction to send data to the KTDTL task, the SLC 5/03 or 5/04
must use the 485CIF as the target device.
Accessing
(KTDTL) Device Interfaces > Allen-Bradley KTDTL > Allen-Bradley KTDTL Unsolicited Read
Control
(NetDTL) Device Interfaces > Allen-Bradley NetDTL > Allen-Bradley NetDTL Unsolicited Read
Control
Field Descriptions
Accessing
(KTDTL) Device Interfaces > Allen-Bradley KTDTL > Allen-Bradley KTDTL Unsolicited Read
Control > “your table name” > Allen-Bradley KTDTL Unsolicited Read Information
(NetDTL) Device Interfaces > Allen-Bradley NetDTL > Allen-Bradley NetDTL Unsolicited Read
Control > “your table name” > Allen-Bradley NetDTL Unsolicited Read Information
Field Descriptions
In the graphic below, the READ table is configured in the following way:
• When the value of KTDTL_READ_TRIGGER (Block Read Trigger) is 1, FactoryLink reads
the configured address and writes its value to the tag configured for this table (in the
Read/Write Information table). The block read priority, which is set automatically if you do
not enter a value, is set to the default of 1, the highest priority.
• When the value of KTDTL_READ_DISABLE (Block Read Disable) is 1, FactoryLink
disregards the trigger tag, KTDTL_READ_TRIGGER, and does not process the READ
table.
• Once the data is read and stored in the database tag defined (in the Read/Write Information
table) to receive it, FactoryLink forces a value of 1 to KTDTL_READ_STATE (Block Read
State) and to KTDTL_READ_COMPLETE (Block Read Complete). During the read
operation, KTDTL_READ_STATE is set to 0.
Read/Write Control Table for a Triggered Read
READ is
illustrated in
this example.
The following graphic illustrates how this triggered read operation works.
How Triggered Read Operation Works
When the value of
KTDTL_READ_TRIGGER is
1, FactoryLink processes the
table, READ.
In the next graphic, the UNSOL_READ table is configured to accept unsolicited data of the
type specified on the corresponding Read/Write Information table from the address specified
for this data type.
Unsolicited Read Control Table
UNSOL_READ is illustrated
in this example.
As shown in the next graphic, when FactoryLink receives a 16-bit, signed analog integer from
octal address 34 in the device configured as logical station 0, it reads the value then stores it in
an analog FactoryLink tag, ANA_15.
Unsolicited Read Information Table
The following graphic illustrates how this unsolicited read operation works.
How Unsolicited Read Operation Works
WRITE is
illustrated in
this example.
The graphic below illustrates how this block write operation works.
How Block Write Operation Works
In the following graphic, the EXCEPTION table is configured to read the tag configured for
this table (in the Read/Write Information table) and write its value to the configured address.
FactoryLink, however, will only perform this operation when the tag’s value changes. The
table is disabled when NDTL_EXCEPTION_DISABLE (Block Write Disable) is set to 1, and
re-enabled when NDTL_EXCEPTION_DISABLE is set to 0.
Read/Write Control Table for an Exception Write
EXCEPTION is
illustrated in
this example.
As shown in the next graphic, whenever the value of the digital tag P240000 changes,
FactoryLink processes the EXCEPTION table. This table writes the value of P240000 to bit 12
in file type B, file number 3, tag 1 in the device configured as logical station 0. If the table is
disabled then subsequently re-enabled and NDTL_EXCEPTION_TRIGGER (Block Write
Trigger) is set to 1, bit 12 is updated with the value of P240000 if the value has changed since
the table was disabled.
The next graphic illustrates how this exception write operation works.
How Exception Write Operation Works
Because this is an
exception write table,...
Specifying Priority
The Read/Write Control table contains two columns for specifying the priority of block reads
and block or exception writes: Block Read Priority and Block Write Priority. The priority of an
operation can range from 1 to 4. These values correspond to four first-in/first-out (FIFO)
priority queues which are set up in order of importance. Priority queue 1 has the highest
priority.
When the Block Read Trigger or Block Write Trigger tag for a table changes from 0 or is forced
to 1, or when a tag in an exception write table changes, that table or exception tag is placed into
one of the four queues for processing by the INTERCHANGE or RSLinx software. This queue
placement depends on the value specified in the Block Read Priority or Block Write Priority
column for the table.
Each queue can hold up to 256 pending tables. When a table is triggered and the priority queue
to which it has been assigned is not full, the table is placed in that queue. The Block Read State
or Block Write State tag for the table is reset to 1.
The queues are polled for tables (during each pass of the main loop of the KTDTL or NetDTL
task) according to the order of importance of the priority. The priority 1 queue is polled the
most frequently and the priority 4 queue is polled the least frequently. Every table is eventually
processed but the ones in the priority 4 queue can take more time to process.
After the INTERCHANGE or RSLinx software processes a pending table, the table is removed
from the queue. If the communication was successful, the tags defined in the processed table
are updated in the FactoryLink real-time database and the Block Read Complete or Block Write
Complete tag for the table is reset to 1.
Overtriggering
All tables are placed by default in the priority 1 queue, which is appropriate in most cases.
When an application contains a large number of tables, however, or when an exception write
table contains tag names for rapidly changing tags, an overtriggering situation can arise with
all tables going into the same queue. Overtriggering occurs when tables are being placed in a
priority queue faster than the INTERCHANGE or RSLinx software can pull the tables out and
process them.
When a queue is full, an additional request to place a table in it results in the generation of an
error message which is displayed on the Run-Time Manager screen: (KTDTL/NetDTL) in
Overtriggered State: Reduce Trigger Rate.
Since the maximum number of pending tables a queue can hold is 256, the maximum number
of total pending tables is 1024 (256 * 4 queues = 1024). If you accept the priority default of 1
for all tables, the total allowable number of pending I/O transactions is only 256. To more
evenly distribute tables across the four priority queues (thus reducing the priority 1 queue’s
burden of handling all the pending I/O requests), you could assign priority 1 or 2 to tables
containing more important data and priority 3 or 4 to tables containing less important data.
Using this logic, you would assign a high priority to an exception write table for an operation
that acknowledges a loud annoying alarm and a low priority to a block write table that
downloads a batch recipe once a day.
Efficient Triggering
This section discusses triggering techniques to consider for optimum performance of your
application.
Timed
The easiest and most basic way to trigger a block read or write operation is with a timed tag. To
define a timed trigger tag, enter a tag name for a Block Read Trigger or Block Write Trigger tag
in the Read/Write Control table that matches the tag name of an interval timer tag (defined in
the Interval Timer Information table). If you define this tag to change once per second, the
table is placed in its assigned queue once every second.
Using timed tags as triggers is acceptable in most cases. An overtriggering situation can occur,
however, if the trigger rate causes tables to be placed into a queue faster than the
INTERCHANGE or RSLinx software can process them.
A situation in which triggers overlap can occur as well. To illustrate, suppose a 5-second, a
15-second, and a 30-second timed tag are used to trigger various tables. Each table is placed in
its designated queue every 30 seconds when the various triggers line up. The use of prime
numbers quickly solves this problem, but a more effective method follows.
Note: The next two triggering methods, cascaded and self-triggered, can solve
potential overtriggering situations in many cases. These methods, however, might not
be appropriate for every read or write table you define. For instance, the timed method
works best for tables that do not need to be updated at the highest possible rate.
Cascaded
The cascading of tables is an alternative to using timed triggers. As mentioned previously, the
Block Read State or Block Write State tag is reset to 1 after a table is placed into a priority
queue. Similarly, the Block Read Complete or Block Write Complete tag is reset to 1 after the
INTERCHANGE or RSLinx software processes the table.
In the Read/Write Control table, if either the complete or state tag is defined as the trigger tag
for the table in the row below the current table, that table will not be triggered and placed into
a queue until the preceding table is either successfully placed in a queue or processed. If the
table defined in the final row of the Read/Write Control table contains a tag name for a
A table is placed in a queue only after the previous table has been placed or processed. If you
use the Block Read State or Block Write State tag to perform the cascade, the successful
processing of a table prior to the next table in the loop being triggered is not guaranteed; but
overtriggering is prevented. Regardless of communications, the loop will continue to process.
If a table is to be placed into a queue that has become full, the value of the state tag for that
table will not change. Consequently, the next table will not be triggered until room is available
in the queue for the current table.
If you use the Block Read Complete or Block Write Complete tag to perform the cascade, the
next table in the loop is placed into its queue after the previous table is successfully
communicated through the INTERCHANGE or RSLinx software. In this case, successful
processing of the transaction is guaranteed. (A timeout error occurring somewhere in the loop
will slow the performance of the cascade.)
A parallel between timed and cascaded triggering further illustrates this method’s
effectiveness. When the same timed trigger tag is used to trigger each of several tables defined
in the Read/Write Control table, the tables are processed sequentially (starting with the
beginning row of the table) on each occurrence of the trigger. Essentially, this scenario
represents a timer-initiated cascade. If each instance of the timed tag is replaced by a tag that,
when combined with other tags, creates the cascaded triggering effect, the fastest rate at which
the tables can be placed into queues is naturally set by the tables themselves.
For example, experimentation determines that when one 3.2-second timed digital tag is used as
the same trigger tag for a number of tables, the application can trigger the tables without the
overtrigger message appearing. (Tests performed with a 3.1-second tag resulted in the message
appearing and 3.2 was found to be the limit.) When the triggering method for these tables is
changed from timed to cascaded, the frequency at which the tables update themselves in the
loop is exactly 3.2 seconds.
Self-Triggered
NetDTL – for communications with PLC-5/xxE devices and PLC-5/250 devices with an
Ethernet interface module, the use of self-triggered tables can increase the throughput and
efficiency of read and write operations.
FactoryLink can process tables for read and write operations to Ethernet devices more quickly
than it can process tables going to devices not connected directly to Ethernet. (The Ethernet
connection and the I/O time for the NetDTL interface are faster.) If you use the cascaded
method for triggering tables going to devices that will process the tables at different speeds,
tables to the devices that process more quickly (Ethernet devices) will idle in the loop waiting
for the tables going to the other devices that occur earlier in the cascade to finish processing.
In a self-triggered table, instead of a state or complete tag serving as a trigger for the next table
in a cascaded loop, a state or complete tag serves as a Block Read Trigger or Block Write Trigger
tag for the table in which it is defined. In other words, one tag name is defined for both the
trigger tag and the complete or state tag in a single table:
Self-Triggered Read Table
When FactoryLink starts, the complete or state tag is automatically set to 1. If you have
defined this same tag as the trigger tag, the table is also placed in its priority queue at startup.
When the complete or state tag is set again as a result of the operation, the cycle starts over and
the table is placed in its priority queue again (because the complete or state tag is also the
trigger).
Overtriggering does not occur with a self-triggered table because a table destined for a device
is only placed into a queue or processed after the successful previous processing or queue
placement of the table.
Note: The continuation of a cascaded loop or self-triggered table will cease if the Block
Read Disable or Block Write Disable tag is set to 1. To restart after the disable tag is set
to 0 again, the Block Read Trigger or Block Write Trigger tag must be reset to 1.
PLC-2 Format
Use the following formats to specify addresses for PLC-2 devices, and for PLC-3, PLC-5, and
PLC-5/250 devices configured for PLC-2 compatibility.
Note: You must use this format for unsolicited read operations.
word
word/bit
word,length
where:
word (Required) Enter the address of the PLC tag in octal. Valid values are 0
through 7777 octal. The actual high address depends on the specific PLC
addressed.
Use the following formats to specify addresses for PLC-3, PLC-5, and PLC-5/250 devices.
The brackets enclose the parts of the format; do not enter these in your address specification.
Do not enter spaces between the parts of the format.
[module_id][filetype][filenumber][:;][tag][/bit][,length][.subtag]
module_id (Valid for PLC-5/250 devices) Define the module ID (pushwheel) number
that specifies the thumbwheel value on the processor module. (RM default
is 0.)
filetype (Required) Specify the PLC file type. For valid entries for a specific PLC
type, see the appropriate PLC file types and subtags table.
filenumber (Optional) Enter the file number. The default is 0 for all PLC types except
PLC-5, where a default file number exists for some file types.
:; (Required) Enter either a colon (:) or semicolon (;).
tag (Optional; assumed 0 if not entered) Enter the file tag number in octal for
input/output files and in decimal for all other PLC file types. Follow this
number with an appropriate separator and either the bit specifier, length in
file tags, or appropriate subtag.
/bit (Optional) Enter a front slash (/) then the bit specifier in octal for PLC-3 and
input/output files and in decimal for all other PLC types. If a back slash (\)
is erroneously entered, the default value will be used. The default is the
least significant bit, 0.
,length (Enter for message tags) Enter a comma (,) then specify the length, in file
tags, to be read or written. The default is 1.
.subtag (Optional) Enter a period (.) and then specify a subtag member of the
specified address file tag. For valid entries for a specific PLC type, see the
appropriate file types and subtags table.
File Types
Subtags
The following subtags are valid for the specified file types in PLC-3 address specifications:
File Type C
Subtag Description Data Type Writable
U Up enable DIG No
CD Down enable DIG No
DN Done DIG No
OV Overflow DIG No
UF Underflow DIG No
CTL Control word INT2 No
PRE Preset value INT2 Yes
ACC Accumulated value INT2 Yes
File Types
The following file types are valid for PLC-5 address specifications. Note that some file types
are valid only on new generation PLC-5 devices.
Subtags
The following subtags are valid for the specified file types in PLC-5 address specifications:
File Type BT
Subtag Description Data Type Writable
EN Enable DIG No
ST Start DIG No
DN Done DIG No
ER Error DIG No
CO Continue DIG No
EW Enable waiting DIG No
NR No response DIG No
TO Time out DIG No
RW Read/write DIG No
RLEN Requested word count INT2 Yes
DLEN Transmitted word count INT2 Yes
FILE File-type number INT2 Yes
ELEM Word number INT2 Yes
RGS Rack/group/set INT2 Yes
File Type C
Subtag Description Data Type Writable
CU Up enable DIG No
CD Down enable DIG No
DN Done DIG No
OV Overflow DIG No
UN Underflow DIG No
CTL Control word INT2 No
PRE Preset value INT2 Yes
ACC Accumulated value INT2 Yes
File Type PD
Subtag Description Data Type Writable
EN Enable DIG Yes
CT Cascaded type DIG No
CL Cascaded loop DIG No
PVT PV tracking DIG Yes
DO Derivative of DIG No
SWM Software A/M mode DIG Yes
CA Control action DIG No
MO Station A/M mode DIG Yes
PE PID equation type DIG No
INI PID initialized DIG No
SPOR SP out of range DIG No
OLL Output limit low DIG No
OLH Output limit high DIG No
EWD Error within deadband DIG No
DVNA Deviation high alarm DIG No
DVPA Deviation low alarm DIG No
File Type SC
Subtag Description Data Type Writable
SA Scan active DIG No
FS First scan DIG No
LS Last scan DIG No
OV Timer overflow DIG No
ER Step errored DIG No
DN Done DIG No
PRE Preset value INT2 Yes
TIM Active time INT2 Yes
File Type T
Subtag Description Data Type Writable
EN Enable DIG No
TT Timing DIG No
DN Done DIG No
CTL Control word INT2 No
PRE Preset value INT2 Yes
ACC Accumulated value NT2 Yes
File Type TD
Subtag Description Data Type Writable
HI High word INT2 Yes
LO Low word INT2 Yes
File Types
The following file types can be used for PLC-5/250 address specifications:
Valid File Types for PLC-5/250 Addresses
Allen-Bradley Tag Length
File Types Description Data Type in Words
O Outputs DIG/INT2 1
I Inputs DIG/INT2 1
L Long integer INT4 2
SD CVIM shared memory DIG/INT2 1
ST String ST 42
PD PID STRUCT 82
MSG Message control STRUCT 56
AS Adapter status DIG/INT2 2
IS Forced internal storage DIG/INT2 1
Subtags
The following subtags are valid for the specified file types in PLC-5/250 address
specifications:
File Type AS
Subtag Description Data Type Writable
OI Output inhibit DIG No
CF Fault DIG No
RC Retry count INT2 Yes
File Type C
Subtag Description Data Type Writable
CU Up enable DIG No
CD Down enable DIG No
DN Done DIG No
OV Overflow DIG No
UN Underflow DIG No
PRE Preset value INT2 Yes
ACC Accumulated value INT2 Yes
File Type PD
Subtag Description Data Type Writable
EN Enable DIG No
CT Cascaded type DIG No
CL Cascade loop DIG No
PVT PV tracking DIG No
DO Derivative of DIG No
SWM Software A/M mode DIG No
CA Control action DIG No
MO Mode DIG No
PE PID equation DIG No
INI PID initialized DIG No
SPOR SP out of range DIG No
OLL Output limit low DIG No
OLH Output limit high DIG No
EWD Error within deadband DIG No
DVNA Deviation high alarm DIG No
File Type R
Subtag Description Data Type Writable
EN Enable DIG No
WU Enable unloading DIG No
DN Done DIG No
EM Empty DIG No
ER Error DIG No
UL Unload DIG No
IN Inhibit comparisons DIG No
FD Found DIG No
LEN Length INT2 Yes
POS Position INT2 Yes
File Type T
Subtag Description Data Type Writable
EN Enable DIG No
TT Timing DIG No
DN Done DIG No
PRE Preset value INT4 Yes
ACC Accumulated value INT4 Yes
File Types
The following file types can be used for SLC 500 address specifications. Note that some file
types are only valid on later model SLC processors.
Valid File Types for SLC-500 Addresses
Tag
Allen-Bradley Default
File Type Description Length
Data Type File Number in Words
O Output DIG/INT2 0 1
I Input DIG/INT2 1 1
S Status DIG/INT2 2 1
B Bit (binary) DIG/INT2 3 1
T Timers STRUCT 4 3
C Counters STRUCT 5 3
R Control STRUCT 6 3
N Integer INT2 7 1
F Floating-point FLT 8 2
Subtags
The following subtags are valid for the specified file types in SLC-500 address specifications:
File Type C
Subtag Description Data Type Writable
CU Up enable DIG No
CD Down enable DIG No
DN Done DIG No
OV Overflow DIG No
UN Underflow DIG No
UA Update accumulated value DIG No
PRE Preset value INT2 Yes
ACC Accumulated value INT2 Yes
File Type R
Subtag Description Data Type Writable
EN Enable DIG No
EU Unload enable DIG No
DN Done DIG No
EM Stack empty DIG No
ER Error DIG No
UL Unload DIG No
IN Inhibit DIG No
FD Found DIG No
LEN Length INT2 Yes
POS Position INT2 Yes
File Type T
Subtag Description Data Type Writable
EN Enable DIG No
TT Timing DIG No
DN Done DIG No
PRE Preset value INT2 Yes
ACC Accumulated value INT2 Yes
Argument Description
-A<pathname> Specifies a new FactoryLink application directory. Enter the
ID followed by the full path name that identifies the location
of the new directory.
Example: -AC:\FLECS\FLAPP or -A/usr/users/flapp
-B<#> Specifies a value for the unsolicited message backlog queue
in the Allen-Bradley interface. Enter the ID followed by the
appropriate value. (# = 1 to 40, default = 5)
-C<#> Specifies the number of seconds the task waits before it
attempts to reconnect to a disconnected RSLinx or
INTERCHANGE software interface. Enter the ID followed
by the number of seconds. If you do not want the task to
attempt reconnection, enter 0. (# = 0 to 32767, default = 5)
-F<#> Specifies the number of times the task is to pass through its
major control loop before “sleeping”. Enter the ID followed
by the number of passes. Use this parameter in conjunction
with the sleep period parameter, S, to optimize the
performance of the task and to minimize its CPU use. (# = 0
to 32767, default = 10)
-L<pathname> Specifies a directory and path for an error log file. Enter the
ID followed by the full path name for the location of the file.
Example: -LC:\FLECS\ERRLOG or -L/usr/users/errlog.txt
-N<#> Specifies a maximum number of solicited requests that can be
pending at any given time within the RSLinx or
INTERCHANGE software library. Enter the ID followed by
the number of requests. (# = 1 to 39, default = 39)
-P<pathname> Specifies a new FactoryLink program directory to override
the default program directory. Enter the ID followed by the
full path name for the location of the new directory.
Example: -PC:\FLECS\FLINK or -P/usr/users/flink
-R<#> Specifies the number of seconds an error message displays on
the KTDTL or NetDTL task line on the Run-Time Manager
screen after the error is detected. Enter the ID followed by the
number of seconds. (# = 0 to 32767, default = 10)
-S<#> Specifies the number of milliseconds the task will “sleep”
after completing the specified number of control loop passes
(-F parameter). Enter the ID followed by the number of
milliseconds. To specify no sleep period after the passes,
enter 0. (# = 0 to 32767, default = 0)
Argument Description
-U<#> Specifies the number of unsolicited messages the task can
process before releasing the CPU for other operations. Enter
the ID followed by the number of messages. When the task
processes the specified number of unsolicited messages, or
when no unsolicited messages are pending, the task continues
with solicited operations. (# = 1 to 32767. default = 1)
-Z Clears the change status indicators in the FactoryLink tags
written to the FactoryLink database for the KTDTL or
NetDTL task. Enter the ID only.
Status Messages
Status messages for the KTDTL and NetDTL tasks can be generated and displayed by
FactoryLink at task startup and at shutdown. The following status messages appear in the order
they are listed every time the task is started or shutdown by the Run-Time Manager. These
messages do not require any action; they display for information only.
Error Messages
Error messages for the KTDTL and NetDTL tasks can be generated and displayed by
FactoryLink at task startup, during communications attempts, and at shutdown. These
messages require corrective steps to be taken; the action required is described following the
description of the cause of each message.
•
•
•
•
Enhanced Communication
Interface (ECI/OPC)
O VERVIEW
ECI is a universal Converter (also-called Decoder or I/O Translator) for true bidirectional
input/output data (I/O), such as scaled values, commands, and setpoints, which may be
controlled in real time by both an external device and FactoryLink. Several functions are
implemented, which can be combined for best performance of communication:
• Action=Reaction – principle by means of bidirectional communication. The user interface
is represented by a single Object I/O Tag for each function to be performed. Object I/O data
can be entered and displayed from the very same tag, thereby providing instantaneous
indication onscreen while data is automatically conducted to and from the PLC in the
background.
• Decoder/Encoder –function for common data formats including Bits, Nibbles, and Bytes
from/to Long/Short Integers and Arrays, as well as the conversion of Strings, BCD, HEX,
and Float values. Inputs are decoded and displayed at the Object I/O, while Object I/Os are
encoded to PLC compatible outputs. It also converts user specified Timestamps or provides
Trigger Outputs by value comparison, as well as event-driven Copy for timestamping or
Enumerated text display, Link Supervision (Watchdog), and so forth.
• OPC Items/ItemArrays – can be extracted including Timestamps (milliseconds), as well as
OPC native and vendor-specific Quality Status, Limits, and Access Rights. Quality bits can
be merged to ECI I/O Status to indicate data quality, including “in transition” by a single
tag.
• Scale/Normalize – is performed for read and write, including range supervision and
deadbanding. Object I/Os are displayed according to the formula y = a x + b. This allows for
bidirectional communication of normalized values in a PLC, which appear in engineering
units in FactoryLink.
• Statistical Data – calculation as timestamped Dip/Peak detection (minimum/maximum),
Filter (low pass) with adjustable attenuation, Totalizer/Counter (sum of samples), Squared
Sum (sum of samples squared), Average (arithmetical mean) and Sigma (standard
deviation).
• Indirect Addressing – is supported to send multiplexed data from/to a PLC. A decoder
routine is required in the PLC to store data at the appropriate location. This is a powerful
method to transmit hundreds of commands and setpoints, etc., without loading
communication.
• Versatile Interface – supporting EDI Drivers by Alternate Tags as well as RAPD Drivers
and OPC Servers using the Intertask Mail eXchange IMX protocol for data transmission
through mailboxes. Mailbox information may be conducted through FactoryLink-LAN or
VRN, which can be used to set up a Redundant System. And, because of its Alternate Tag
External Device Interface EDI Driver Tables Intertask Mail eXchange IMX / RADP and OPC Driver Tables
B ASIC C ONCEPTS
An ECI Communication Object is defined as a set of Object I/O Tags having individual or
common inputs and/or outputs (Alternate Tags, Datasets or OPC Groups of Items). It is
specified by a single ECI Information table, which is identified by a line entry in the ECI
Control table.
An ECI Composite Object is defined by two or more Object I/O Tags using the same specific
Read/Input (Alternate Read Tag, Tag Address or OPC Item) by a coherent block of line entries
in the ECI Information table. In this case, a particular Object I/O may directly influence
adjacent Object I/Os, similar to a PLC where a changed Bit influences its residing Byte or
Word, etc. This ECI internal I/O processing is done only from lower towards higher ranking
data within Composite Objects, that is, a Bit is inserted in its corresponding Nibble, Byte,
Short, etc., or a Byte is inserted in its corresponding Short and Long integer, etc. but the
opposite is not true. Note that scattered Read/Inputs or Write/Outputs are considered to be
separate objects.
An ECI Object I/O Tag represents a Bit, a Nibble, a Byte or a number of Bytes corresponding
to a data memory in the external device or any tag of the FactoryLink database. Object I/O data
(input/output) is transmitted bidirectionally from any type of Read and/or to any type of Write
tags. Thus, ECI provides an Interface, which suits any type of communication. The system
may be compared to a Dual Ported RAM (Random Access Memory) as it mirrors process I/O
data, which can be changed in real-time by both external device and FactoryLink.
Object I/O data is extracted, converted and scaled from Read/Input data according to the
functions specified in the ECI Information table. If Object I/O data is changed, for example,
due to an operator command, Write/Output data is created according to the inverted functions
identified.
Object I/O data can thus be entered in and displayed from the very same tag, providing
instantaneous indication on screen, called Action=Reaction, while data is conducted through
the Read and Write channels in the background. As changed I/O data is displayed on screen,
updating is delayed to allow for a feedback from an external device before the Object I/O is
newly updated.
Because of its versatile device interface, ECI can also be applied as a standalone converter, or
Read/Write information can be sent through networks as FactoryLink LAN or VRN for
redundancy.
Read Only
ECI Object Information
RdElem(1) | I/O_Tag(1) | Changed data
RdElem(2) | I/O_Tag(2) |
RdElem(3) | I/O_Tag(3) |
received at
RdElem(x) | I/O_Tag(X) | Read Cycle
External Device
Read Only data is specified by simply addressing a Read Tag (Tag, Address or OPC Item) in
the ECI Information table.
A Read Tag is a portion – normally a dataword or register - read from the external device or, it
may be a database tag if data is read from an EDI driver.
Data from the external device is read in packages (Datasets or Blocks) at an adjustable Read
Cycle (event or change driven and/or continuous or unsolicited).
Write Only
ECI Object Information
| I/O_Tag(1) | WrElem(1) Changed data
| I/O_Tag(2) | WrElem(2)
| I/O_Tag(3) | WrElem(3)
transmitted at
| I/O_Tag(X) | WrElem(x) Write Interval
External Device
Write Only data is specified by simply addressing a Write Tag (Tag, Address or OPC Item) in
the ECI Information table.
A Write Tag is a portion – normally a dataword or register – written to the external device or, it
may be a database tag if data is written to an EDI driver.
Data changed at the ECI is sent in packages (Datasets or Blocks) or individually at an
adjustable Write Interval (event or trigger driven).
Note that “Write” refers to data written to the external device or sent by ECI, respectively.
Read Write
ECI Object Information
RdElem(1) | I/O_Tag(1) | WrElem(1) Changed data
RdElem(2) | I/O_Tag(2) | WrElem(2) corrected after
RdElem(3) | I/O_Tag(3) | WrElem(3) Update Delay
RdElem(x) | I/O_Tag(X) | WrElem(x)
External Device
Read/Write data is specified by simply addressing both a Read and a Write Tag (Tag, Address
or OPC Item) in the ECI Information table.
Data changed at either side is transmitted accordingly while updating at the ECI side is delayed
by an adjustable Update Delay to allow for a feedback from an external device before the
Object I/O is newly updated (data consistency).
Note: For ECI Startup Procedures and Data Initialization, see the “General Rules” on
page 126.
Visualizing a Pump
A motor command sent through the Write channel
may be interlocked by hardware and software
before it is returned as a contactor feedback signal
through the corresponding Read channel.
However, the I/O Tag in the ECI Information table
may be identical for both command and feedback.
Consider an I/O Tag, which is used for animation
of a pump using the values:
0 = OFF1 = RUNNING
2 = STOPPING3 = STARTING
To start the pump, you would set the I/O Tag’s
value to 3 to indicate STARTING by sending the
value as a command to the external device, for
example a PLC. If the feedback signal from the
PLC now indicates a starting pump by a value of 3
in the Update Delay time, the animation remains
on STARTING and you have achieved
Action=Reaction – virtually in real-time.
Regardless of other delays, the feedback signal
may only indicate RUNNING after a while. To
stop the pump, enter value 2 to indicate
STOPPING. In turn, the feedback will indicate a
value of 2 for STOPPING and, after a while, return
to zero to indicate OFF.
All this is done with a single I/O Tag at ECI while
control of the pump is possible at either side – ECI
or PLC.
Visualizing a Setpoint
A setpoint value may be transmitted to and from
the very same address in the external device, for
example a PLC emulating a Dual Ported RAM
through individual Read and Write channels. In
this case, it is obvious, that the ECI's I/O Tag is
linked with Read and Write tags, which both
represent the very same Setpoint address in the
PLC.
On the other hand, it is not obvious that the
setpoint may be changed at any time on either side,
ECI or PLC – the last action accepted at the PLC
will win. If a changed value is not accepted by the
PLC, the setpoint returns to the actual feedback
value after the Update Delay. Thus, the system
automatically takes care of data consistency. And,
because of the Write Interval, data transmission
may at any time run at moderate speed still
providing fast Action=Reaction – virtually in
real-time – for the operator. This unburdens
communication even if the setpoint is changed
frequently, for example, due to keyboard auto
repeating.
All this is included for each single I/O tag with
ECI.
In the example above, the EDI driver reads Word 73 and puts the information to Analog Tag
AnaX. Then, ECI examines Bit 12 to be displayed by I/O Tag MotorXY_ST.
On the other hand, whenever MotorXY_ST is changed by a task other than ECI, the
information is put to Digital Tag DigY to be written by the EDI driver to Bit 0 of Word 109 in
the PLC. In this case, the EDI driver requires bit access for single commands, unless Encoded
Write or Function Merge is applied.
There are no restrictions with regard to the source and/or target of Alternate Read/Write data.
For example, the output information could be sent through LAN to another FactoryLink station
or, it can be written back to its source (Bit 12 of Word 73) to emulate a Dual Ported RAM for
the particular Object I/O. Note that the Elem Addr columns are used to access Datasets of
RAPD Drivers or to address Encoded Write data.
Note: If you want to apply Encoded Write with an EDI driver, specify an Encoded
Array with a Write Interval in the ECI Control table and send the array as a standard
block information to the PLC using the ECI Write IdxTag as the EDI Block Write
Trigger.
Rapid Application Protocol Drivers RAPD use the IMX Intertask Mail eXchange protocol
for the transmission of Datasets through Mailboxes. ECI supports Block Read, Block Write,
Exception and Encoded Write procedures for the IMX interface as for EDI drivers described
above.
• A Mailbox (Mbx) is always owned by the receiving task. Thus, the owner of the Read
Mailbox (also-called Decoder or I/O Translator Mailbox) is ECI while the owner of the
Write Mailbox (also-called Protocol Driver Mailbox) is the RAPD Driver. Mailbox Tags are
referenced in either task together with individual Dataset identifiers called Index (Idx).
• A Dataset (Ds) represents a number of data Tags forming a coherent block of data with
contiguous addresses in the external device. It is specified in the RAPD Driver Dataset
Definition table and identified by a unique Tag (Dataset IdxTag) or a Constant (Ds Idx).
Read and Write Datasets may or may not be identical for a particular ECI Object. Datasets
are standardized, independently of the external device and may be transmitted in portions or
entirely. All Tags within a particular Dataset have the same size.
• A Tag (Elem) of a Dataset is defined as one discrete bit or a 1, 2 or 4 byte binary value
having a dedicated tag address in the external device, such as an Allen-Bradley or
Telemecanique WORD, a Modicon COIL or REGISTER, or a Siemens FLAG or BYTE.
Thus, an ECI Object I/O always represents a Sub-Tag (example: a bit) a tag (example: a
byte) or a number of Tags (example: a float) of a Dataset in the external device.
The sample ECI Information table below shows the same setup as described for the EDI driver
above.
For example, the RAPD Driver reads for example all Words 71..74 (Tags) and sends them as a
Read Dataset to ECI, which then examines Bit 12 of Word 73 to be displayed by I/O Tag
MotorXY_ST.
On the other hand, whenever MotorXY_ST is changed by a task other than ECI, the
information is sent to a Write Dataset for the RAPD Driver to be written to Bit 0 of Word 109
in the PLC. In this case, the RAPD Driver requires bit access for single commands, unless
Encoded Write or Function Merge is applied.
PLC source and target data Tags always belong to a particular Dataset assigned to the RAPD
Driver. If you wish to emulate a Dual Ported RAM for a particular Object I/O, then both Read
and Write Dataset must cover the same Tag in the PLC. Note that Alternate Read/Write Tags
may additionally be used in any ECI Information table.
For example, the ODX driver reads for example all Motor items (Tags) and sends them as a
Read OPC Group to ECI, which then examines Bit 12 of MotorXY.Status to be displayed by
I/O Tag MotorXY_ST. (This could represent Bit 12 of Word 73 in a PLC as in the examples
above.)
On the other hand, whenever MotorXY_ST is changed by a task other than ECI, the
information is sent to a Write OPC Group to be written to MotorXY.Cmd in the OPC Server.
(This could represent Bit 0 of Word 109 in a PLC as in the examples above.)
There are basically no restrictions with regard to the source and target of transmitted data
unless you desire to write a sub-tag within an OPC Item. In this case (for example to write a bit
within the OPC Item), you must assemble the data before transmission using Function Merge.
On the other hand, the ECI/OPC also supports attribute access, such as Quality, Timestamp,
etc. using appropriate OPC-specific Rd/Wr Codes.
Note: When replacing a RAPD by an OPC Server, the ECI tables can be kept as shown
for RAPD.
TagArray Concept
For TagArrays, you must consider the High/Low value order of Tags if data is assembled with
more than one Tag. Note that “High” indicates that the high value is located at the lower Tag
address (MOTOROLA Format) and “Low” indicates that the low value is located at the lower
address (INTEL Format) (see “Intel <=> Motorola Format and Composite Object” on page
150). For example, the High/Low value order must be considered if a 32-Bit Float (CDE=F0)
or LongAnalog (CDE=L0) is created or extracted from two 16-Bit Analog Tags. Or if, for
example, the most significant Byte (CDE=B3) is extracted from a LongAnalog Tag and so
forth.
Multiple Read/Write Tags are assigned to a single I/O Tag whenever data conversion
requires more than one Read/Write Tag to suit the size specified by the Conversion Code CDE.
In this case, ECI automatically examines and/or writes to multiple Read/Write Tags:
Caution: TagArrays are automatically assumed for single I/O Tags. This may cause
unpredictable reactions if a TagArray is not properly assigned in advance
by the user. For example, a TagArray of 19 Digital Tags would be
expected if Bit number 18 (CDE=18) is extracted from a Digital
Read/Input, while only a single Tag would be examined if a 32-Bit
LongAnalog Tag is assigned to the same Read/Input.
Multiple Read/Write Tags may be assigned to an I/O TagArray to transmit a pattern of
Bits, Bytes or Words by a single line entry. In this case, pattern extraction/insertion is specified
by the ARYnnn:x:y:z statement in the Function column of the ECI Information table.
Array Function: nnn=Number of I/O Tags, x=Read Elem increm, y=I/Os per Read Elem,
z=Write Elem increm.
For OPC specific tables, ReadElem[a] and WriteElem[A] must be of type OPC Item Array in
the OPC Server.
If the Wr Mode corresponds to the data format in the external device, the array header for
Format and ElemSize may be ignored. A Segment Address may be specified by Function
SegmAddr=0..65500 at the top of the table. In this case, the second array tag displays the
Segment Address while the Access flag indicates “direct”. Normally, it displays the Number of
Tags in the Datablock, and the Access flag indicates “indirect.” For more information, see
Write EncArray / MailboxTag column and “Tag/Item Addressing and Conversion Code” on
page 146.
Depending on the PLC data types available or the total number of data to be processed, it may
be useful to apply either one or both methods. For example Bits, Nibbles and Bytes may be
transferred by Encoded Write while all other values are transmitted by Exception Write.
Regardless which applied method is used, the Object I/O interface always remains the same.
Note: This method is applicable only for Tags addressed by the Write Elem Addr
column.
Read Model “A” allows access to any Read Model “I” allows access to any
Dataset Address by an external device or These Dataset Index by an external device or PLC.
PLC. In this case, specify prefix “A” in the methods are In this case, specify prefix “I” in the Read
Read Mode column of the ECI Control applicable Mode column of the ECI Control table as
table. The Tag Start Address must appear as only for well as an index number Ds Idx to identify
a long integer in the first four bytes of the Tags the desired Dataset(s). The Ds Idx number
data block transmitted. In the example addressed must be transmitted as a long integer in the
shown below, a single DataSetX with Tag by Read first four bytes of the data block. In the
Addresses 150..970 is assigned to multiple Elem Addr example shown below, three Datasets with
ECI Objects A..C. Read data may be column. Index 751..753 are assigned to
transmitted on change and with block sizes corresponding ECI Objects. Read data may
as desired by the external device. be transmitted on change as desired by the
external device.
General Rules
• Startup Procedure – ECI initially clears all Read Mailboxes while the corresponding
Object I/Os are updated after receiving a Dataset or after the Update Delay if an I/O has
been changed. This should be considered for synchronizing unsolicited read information.
You can prevent reading uncertain (not updated) mailbox data at initialization by Program
Argument –InitUncertain. In this case, all I/O Status Tags will display a value ≥ 64
(Uncertain flag). All Object I/Os will only be updated after receiving a first valid Dataset.
This may be used to prevent overwriting of persistent bidirectional Object I/O data at
initialization.
On the other hand, ECI normally prevents sending Write/Output information at initialization
and thus inadvertently transmitting data to an external device. This is achieved by clearing
all I/O change flags at startup unless Program Argument –InitWrite is set to send persistent
information to an external device. Caution: In this case, any changed or forced written I/O
data may be written at startup or restart of ECI.
• Read/Inputs are specified either by an Alternate Read Tag, a Read Tag Address or an OPC
Item name while a possible Tag has priority. To prevent hunting (that is, a race-around
condition), Read/Input data is never directly conducted to a Write/Output. For Write-only
communication, a Read/Input may be omitted. At startup, Read Mailboxes are emptied
(cleared). This should be considered when reading unsolicited data. An init-flag can be set
when the first valid Dataset has been read (see Init Function).
• Write/Outputs are specified by an Alternate Write Tag, Write Tag Address or OPC Item
name. To prevent hunting, Read/Input data is never directly conducted to a Write/Output.
For Read-only communication, a Write/Output may be omitted. At startup, no Write/Output
is written (I/O change flags are cleared) unless enabled by Program Argument –InitWrite.
Object I/Os must always be specified and not be linked to its own created Write/Output.
Object I/Os are only updated if the corresponding Read/Input has changed or if Function
IOUpd or IOUpdAll is applied. At startup, the behavior may be specified by Program
Argument –InitUncertain. The valid range of the FactoryLink Tag Type must be considered
for conversion: when for example extracting an Unsigned Long value (Rd CDE=UL0), it
should be assigned to a Float since a LongAna cannot take its possible maximum of
4.29*109. Characters in Object I/O Messages must be 1..255 ASCII equivalent. Extracted
message text (Rd CDE=MSG) is truncated at the location of the first character found 0
ASCII equivalent.
• Object I/Os or Alternate Read/Write Tags may be connected to other ECI Tags to provide
an encoder function. The following connections are allowed:
Alternate Read Tag own created Object Use Merge Function if a Write/Output is
I/O. required.
Alternate Read Tag other Object I/O. Use Link Function were Object I/O is
created.
Alternate Read Tag Alternate Write Tag. No restrictions.
• Multiple Object I/Os may be decoded of a particular Read/Input. Object I/O data
assembling, merging, statistics, etc. must form a coherent block of line entries identified as a
Composite Object using the same Read/Input. If a Read/Input is decoded at scattered
locations, the entries are considered independent and may not provide the desired results.
• TagArrays are automatically assumed. Caution – this especially applies for Alternate
Read/Write Tags and may cause unpredictable reactions if a TagArray is not properly
assigned (see TagArray Concept). Analog Arrays containing a Long Integer or Float must
be pairs of consecutive 16-bit binary values. For TagArrays, the High/Low value order must
be considered. However, an Object I/O TagArray is only assumed when specifying an
ARYnnn:x:y:z Function.
• Multiple Functions may be applied with certain restrictions only. While some
combinations, such as scaling and deadbanding, make sense, others, such as statistics and
data merging, are useless. Because of the variety of possible combinations, it is
recommended that you test the desired combination prior to implementation.
Object Table A user-specified name of up to 15 characters for the ECI Information table
Name must be defined. All other entries in this line are optional or have default
settings. Note that table names may be referenced by ECI-based RAPD
Drivers. For a redundant setup using VRN, use DsIdx numbers for Dataset
identification, then duplicate the line, rename the Read/Write Mailboxes
and add an asterisk to the table name, for example, *TAB1 to create a
dummy entry referenced by the RAPD Driver (see “Dataset Exchange in
Redundant System with VRN” on page 171).
Read Mailbox Tag Required to transmit Datasets from RAPD, ODX or a network to ECI. For
non-OPC specific tables, you must also assign a Read Dataset IdxTag or
Index. The Read Mailbox (also-called I/O Translator or Decoder Mailbox)
is owned by ECI and may be used several times within this column.
Valid Entry: tag name
Valid Data Type: mailbox (normally one only for each RAPD driver)
Write Encoded An Encoded Array may be assigned to transmit Encoded Write data to an
Array or Mailbox EDI driver. A Write Mailbox (also-called Protocol Driver Mailbox) must be
Tag assigned to transmit any type of output data (Exception, Encoded, Block or
Dataset Write) to RAPD, ODX or a network. Valid entries are:
Valid Entry: tag name
Valid Data Type: analog or mailbox (normally one only for each RAPD
driver)
A Write Mailbox is owned by the receiving task as RAPD, ODX or
network. It may be entered as often as required in this column. For
non-OPC specific tables, you must assign a Write Dataset IdxTag or Index.
However, an Encoded Array must be unique for each ECI Information table
and it can only be used for encoded outputs of type E, EB or EN entered in
the Write at Change column.
For any case, Encoded output data must be decoded in the target system.
Encoded Write is controlled by a command buffer if a Write Interval is
assigned. An output is immediately set on the first Object I/O change and
subsequently updated by the interval if further I/Os are being changed.
However, the Write Dataset IdxTag will be triggered only if an Encoded
Array is assigned. Thus, the trigger can be used to send the Encoded Array
to a PLC using an ordinary EDI Block Write table.
Read/Input Object I/O Write/Output Optional Data Scaling and Deadbanding Quality Info
An ECI Information table may be used for Read-only, Write-only and/or Bidirectional
communication by simply filling in the desired fields. The following functions are included:
• Extraction from Bit, Nibble, Byte, Short, Long, Float, BCD, HEX, Message, and Array
values
Boolean, Bits: BOOL LSB Least Significant Bit, default, 0..31 (binary decimal) reflects Bit Weight
20..231,
Object I/O Tag Represents a bidirectional single Tag interface, which can be used for both
input and/or output from/to the external device or Alternate Read/Write
Tags.
Valid Entry: tag name
Valid Data Type: digital, analog, longana, float, message
The valid range of the FactoryLink tag type should be considered for
conversions. For example, when extracting an Unsigned Long (Rd
CDE=UL0), it should be assigned to a Float since a LongAnalog cannot
take 4.29*109. Characters in Object I/O Messages must be 1 – 255 ASCII
equivalent. Extracted input text (Rd CDE=MSG) will be truncated at the
location of the first character found 0 ASCII equivalent.
Read/Input data is normally converted and transmitted to the corresponding
Object I/O. If Object I/O data is changed by a task other than ECI,
Write/output data is created according to the inverted function identified.
Simultaneously, updating from the Read/Input is delayed by the Update
Delay. This allows for refreshing the Read/Input before the Object I/O is
newly updated. For data initialization, see General Rules and Program
Argument -InitUncertain.
An Object I/O must always be specified while it must not be linked to its
own created Write/Output. However, it may be linked to its own Alternate
Read Tag. In this case, a possible Write/Output is only processed if the
Merge Function is applied (see General Rules). Object I/Os may be
assigned as arrays by using the ARYnnn:x:y:z Function (see TagArray
Concept).
Write Code > Wr Contains a code defining how data will be converted and encoded for the
CDE Write/Output (see “Tag/Item Addressing and Conversion Code” on page
146). Data for Block/Dataset commands is assembled or inserted
accordingly. Valid entries are:
Any code listed for Rd CDE above, a minus sign “-” sets the Wr CDE
equal Rd CDE (default)
A Write/Output is written on a change of the Object I/O. See also Basic
Functions, TagArray Concept.
• Copy > Copy Alternate Read Tag to Write Tag if the Object I/O is changed or forced
written. For example, this may be used to create a timestamp for a changed value (see
“Statistical Functions XR, XP, XF, XT, XA, XS” on page 177).
Note: Although Copy and Enum (below) are similar, they are only valid for (Alternate)
Read/Write Tags.
• EnumX;Y > Enumerated Output taken from Read TagArray Index X..Y if the Object
I/O is changed or forced written to integer x..y where x=0..255 lowest and y=1..255 highest
ArrayIndex. For example, this may be used to select a text as “Open”, “Close”, “In
Transit,” and so on, corresponding to a value of 0, 1, 2, and so on. Make sure the array
dimension is properly assigned (see also TagArray Concept). For bidirectional Enum values,
create a Composite Object and use Function Link for ArrayIndex:
Read Tag, Addr Rd Object Wr Write Tag, Addr R/W Range Sample description:
or OPC Item CDE I/O Tag CDE or OPC Item Function
EnumArray[0] EnumArrayIdx EnumOutput Enum0;4 Enum Output Principle
EnumArray[1] assumed
EnumArray[2] hidden
EnumArray[3] tags
EnumArray[4]
`EnumItem N0 EnumValue N0 `EnumItem OPC Bidirectional Enum
`EnumItem N0 EnumArrayIdx - Link Composite Object to Link
EnumText[0] MSG EnumArrayIdx MSG EnumTextOut LN9 Enum0;7 EnumArrayIdx=EnumValue
• TRxxx=vvv > Trigger Write/Output to Value vvv if the Object I/O is changed or forced to
xxx, where xxx, vvv = integer (see “Write/Output Triggering by Function TRxxx=vvv” on
page 174). This is used to trigger individual commands of value vvv depending on particular
I/O values, for example, if a Toggle turns to zero (TR0=vvv) or an Analog value is set 5
(TR5=vvv). If =vvv is not specified, the Write/Output is forced to “1” or ON (Trigger). If no
value xxx is specified, the output is released on any changed or forced Object I/O.
• DBxx.xx > Deadband for Object I/O, xx.xx denotes the absolute Deadband value (integer
or float). The Object I/O is updated only if a possible new I/O value rises or falls by ½ *
xx.xx. This Function is only valid for non-Message Object I/Os and is not valid for
Statistical Data Calculation.
• LNnnn ECaaa > Length of Message String and Ending fill Character, nnn = 1..1024 in
Bytes and aaa = 0..225 ASCII equivalent for ending char (option, default=0), valid for
Rd/Wr codes MSG, MSG1/2 and MSR. Size Read/Input and/or Write/Output array length
accordingly. For MSG and MSR, the extracted text must be ASCII 1..255 else, it will be
truncated at the first character found ASCII 0 (NULL terminated string).
• HEXn > HexaDec Value displayed in Object I/O Message Tag of “n” characters. A
non-specified “n” will be set to 4 or 8 depending on Code CDE.
Alive=xx > Heartbeat signal allowing for a regular supervision of this table or of this connect
every xx seconds. In case of a disruption, an "Transmission ERROR" alarm is indicated by an
I/O Status Tag's value of ≥ 256. The Alive heartbeat interval is a third of time xx adjusted. A
value of 0..255, indicated by the Object I/O Tag, is transmitted periodically through the Read
and Write Tags. That is, the corresponding tags in the external device (PLC) must be reserved
for this function.
The following Functions may be applied to calculate statistical values (see “Statistical
Functions XR, XP, XF, XT, XA, XS” on page 177). Note that statistical input values are taken
either from the Alternate Read Tag, OPC Item or from the Elem Addr (Read Dataset).
However, outputs to a Write Dataset or OPC Item are ignored:
• XR > Reset Statistics by a tag of Type Digital or Analog entered in the Object I/O column.
If the Reset input is forced ON, all outputs subsequently listed for all Codes XD, XP, XF,
XT, XA and XS of this table are reset. Dip, Peak, Filter and Average outputs are thereby set
to the current sample value while Total, Squared Sum, Standard Deviation and Number of
Samples are set to zero.
Note: A Reset Tag is valid downwards in the table unless a new Tag is specified by
Code XR. Individual resets may be performed if specifying a Reset line with Code XR
prior each calculation or, by forcing the appropriate Enable, Interval or Sample Tag to
zero.
• XD, XDA or XP, XPA > Dip or Peak Value Indicator represented by an Analog, LongAna
or Float Tag entered in the Alternate Write Tag column. If an Enable Tag (Digital or Analog)
is assigned to the Object I/O column, the detector is only active as long as its value is ON. A
Dip or Peak value may be reset to the current sample value if a preceding Reset Tag is
forced ON or if the Enable Tag is forced OFF. Functions XDA and XPA provide an automatic
reset at startup of ECI.
• XFxxx, XFAxxx > Low Pass Filter output represented by an Analog, LongAna or Float
Tag entered in the Alternate Write Tag column. A new output value will be calculated each
time the associated Interval Trigger (Digital or Analog) entered in the Object I/O column is
forced ON. xxx represents the attenuation value of 1..255. The Filter output may be reset to
the current sample value if a preceding Reset Tag is forced ON or if the Interval Trigger is
forced OFF. Function XFAxxx provides an automatic reset at startup of ECI.
• XT > Totalizer or Counter represented by an Analog, LongAna or Float Tag entered in the
Alternate Write Tag column. A new output value will be calculated each time the associated
Sample Trigger (Digital or Analog) entered in the Object I/O column is forced ON. The
Total output may be reset to zero if a preceding Reset Tag is forced ON or if either the
Sample Trigger or the associated sample counter nSamples are forced OFF.
• XA > Average Calculation represented by an Analog, LongAna or Float Tag entered in the
Alternate Write Tag column. It may only be entered in conjunction with a Totalizer right
after Function XT. A new output value will be calculated together with the number of
samples for the associated Tag of Type LongAna or Float to the Object I/O column each
time the Sample Trigger for the Totalizer is forced ON. The Average output may be reset to
the current sample value and the sample counter is set to zero if a preceding Reset Tag is
forced ON or if the associated Sample Trigger is forced OFF.
• XS > Standard Deviation represented by an Analog, LongAna or Float Tag entered in the
Alternate Write Tag column. It may only be entered in conjunction with a Totalizer and its
associated Average calculation right after Functions XT and XA. A new output value will be
calculated together with the sum of sample squared values for the associated Tag of Type
Float entered in the Object I/O column each time the Sample Trigger for the Totalizer is
forced ON. The Sigma output together with its sum of sample squared value is reset to zero
if a preceding Reset Tag is forced ON or if the associated Sample Trigger is forced OFF.
Note: The Average calculation XA requires a preceding Total calculation XT. The
Standard Deviation XS requires both a preceding Average calculation XA and Total
calculation XT.
Also note that ECI 7.00 and older versions only support Alternate Read Tags (or Read
CDE=S0 for Datasets) for Statistical Functions, this legacy method can be reinstated
by Program Argument -TagOnlyStatistics.
These columns are used to specify the lower and/or upper scale for a particular Object I/O if a
R/W Range is specified. For OPC-specific tables. you can enter a value or a tag name in the
same column. Valid entries are:
Any value for the Scale Min/Max column (default = none)
or a
TagName for Tag of Type Analog, LongAna, Float for the Min/MaxTag
column (default = none)
No entry defines the ScaleMin value=0 and the ScaleMax value=100, if a R/W Range is
specified this is used for a scale of 0..100%. ECI can compute Object I/Os with or without
min/max limitation. This is specified globally, by Program Argument –LimitType=A for
infinite scale (default) or –LimitType=B for scale with min/max boundaries (see graph). And, it
may be specified individually by entering suffix “A” or “B” in the desired R/W Range in the
corresponding column.
This column specifies a Status Indication Tag, which provides the information below. Valid
entries are:
TagName for Tag of Type Digital, Analog, LongAna or Float (default =
none). Tag values are:
0 or OFF All OFF I/O Value Status Normal/Ok (independent on Read/Write interface)
4 2=ON I/O Value < ScaleMin = Out of Range (independent on Read/Write interface)
32 5=ON I/O Value > ScaleMax = Out of Range (independent on Read/Write interface)
128 7=ON I/O Value Bad, OPC Quality Status = 0..15 (OPC)
256 8=ON Read/Input or Transmission ERROR (IMX based drivers or Alive function)
The I/O Status Tag may be applied in the graphics to inform the operator of a command
transmission, which is still transient, and, it may be used to indicate an Out-of-Range Status.
Transmission Errors are only indicated for IMX based drivers supporting this feature. The
OPC Quality information (shaded) is only available in OPC-specific tables when entering the
Qual Function but not in conjunction with an ARYnnn:x:y:z Function on the same line. The
Uncertain flag (value ≥ 64) can also be enabled at startup when applying Program Argument –
InitUncertain. In this case, the I/O Status Tag will display “uncertain” until the Object I/O is
updated by the first valid Dataset.
The table below shows all Codes CDE that can be applied for conversion of Read/Write data
types entered to the corresponding column in the ECI/OPC Information table. For ECI, data
from/to the external device is represented in binary, that is you can access any bit or byte as
desired appropriate Code CDE. The Hex Code is transmitted by Encoded Array offset [3], it
has been designed to make decoding easy as discussed in the next section.
BOOL LSB = Boolean/Least Significant Bit 100 Any code identified by Function ARYnnn:x:y:z C00
(default) where
0..31 = Bit (decimal, 0=least significant) 1xx nnn = Nbr of I/O Tags, x=Read Elem increm,
0X..1FX = Bit (hexadecimal, 0X=least) 1xx y=I/Os per Read Elem, z=Write Elem increm
1D..32D = Bit (decimal, 1D=least) 1xx MSG = String l MESSAGE Length + End fill Char C80
0R..15R = Bit (reversed addr in Word, 15R=least) 10x MSG1 = ditto with actual lenght in 1st byte C81
16M..1M = Bit (Modicon decimal, 16M=least) 10x MSG2 = ditto max len (nnn-2) in 1st, act len in 2nd C82
byte
N4 (.QL) ..N7 = Nibble in upper value (Bit 16..31) 31x Length + Ending fill Character are identified
I1 B0, B1 = Signed Char/Byte –128..127 40x nnn = 1..1024 and aaa = 0..255 ASCII equivalent.
B2, B3 = Signed Byte in upper value (Bit 16..31) 41x Input text for codes MSG and MSR is truncated
UI1 UB0 (.QA), UB1 (.QX) = Unsign. Char/Byte 50x at 1st char found 0 ASCII (NULL terminated
0..255 strings)
I2 S0 = Int2/Short –32768..32767=±215 l 600 TIM0 (.TIM) = SecTime [s] of UTC LNGANA D00
ANALOG
S1 = Signed Short in upper value (Bit 16..31) 610 TIM1..3 = SecTime [s] of user specified bytes D0x
UI2 US0 = Unsigned Int2/Short 0..65535=0..216-1 700 TIMF = SecTime [s] of UTCFloat D0F
US1 (.AX) = Unsigned Short in upper value 710 TIX0 (.TIX) = 0..999 [ms] of UTC LNGANA, ANA D10
BCD3 = Signed BCD ±999 (MSB=sign) 680 TIH0 (.TIH) = hh:mm:ss.xxx [ms] of UTC MSG, D20
LNn
UBC3 = Unsigned BCD 0..999 (3-digit) 780 TIH1..3 = hh:mm:ss.xxx [ms] of user specified D2x
bytes
UBC4 = Unsigned BCD 0..9’999 (4-digit) 7C0 TIHF = hh:mm:ss.xxx [ms] of UTCFloat D2F
Long Integer or DoubleWord (32-Bit) TID0 (.TID) = Y-M-D hh:mm:ss.xxx of UTC MSG, D30
LNn
I4 L0 = Signed Int4/Long ±2.1*109=±231 l 800 TID1..3 = Y-M-D hh:mm:ss.xxx of user specified D3x
LONGANA bytes
L0R = Reversed Signed Long (byte swapped) 840 TIDF = Y-M-D hh:mm:ss.xxx of UTCFloat D3F
UI4 UL0 = Unsigned Int4/Long 900 UTC0 (.UTC) = UTC native (binary dump) FLT D40
0..4.3*109=0..232-1
UL0R = Reversed Unsigned Long (byte swapped) 940 UTF0 (.UTF) = UTC native to UTCFloat FLT D4F
Binary Coded Decimal (32-Bit) UTCF = UTCFloat to UTC native (binary dump) D50
FLT
Bit shift xx=00..1Fhex in Tag to be accessed. For I/O Translator compatible codes, see “Sample
Application Translation IOX –>ECI” on page 168
Legend: Alternate codes, l FactoryLink equivalent type, (..) OPC Attribute code, Boundary OPC specific tables = Intel 4-Byte
The Hex Code transmitted by Encoded Array offset [3] has been designed to make decoding
easy. The first hex number indicates the type and size of data 1=Bit, 3=Nibble, 4/5=Byte,
6/7=Short, 8/9=Long to be decoded, whereas odd=unsigned and even=signed values. The last
two numbers indicate the position by bit shift 00..1Fhex in the Tag to be accessed, for example,
107 identifies a Bit shifted by 07hex bits in the Tag or, 418 identifies a signed Byte shifted by
18hex bits in the Tag, and so on.
Weight Decimal Decimal HexaDec Octal Reversed Modicon (4-Bit) (8-Bit) (16-Bit) (32-Bit)
0
2 ..2 3 00..03 1D..4D 0X..3X 0C..3C 15R..12R 16M..13M N0/300 B0/400
UB0/500 S0/600
US0/700
L0/800
UL0/900
Because data is converted to the format of the external device (Intel or Motorola) by the Write
Mode, only the address from offset [2], the size and position from offset [3], as well as the
value from offset [4...] is required for decoding. That is, the data type, sign, format or tag size
can be neglected unless message strings of variable length will be decoded.
B0 S0 L0 0 0 0 low 0 8 24 hig
1 N0 1 N0 1 N0 1 N0 9 N2 25 N6
2 2 2 2 10 26
3 3 B0 3 B0 3 11 B1 27 B3
4 4 4 4 12 28
5 N1 5 N1 5 N1 5 N1 13 N3 29 N7
6 6 6 6 14 30
7 7 7 S0 7 15 31 S1
B1 0 8 8 0 0 16
1 N0 9 N2 9 N2 1 N0 1 N0 17 N4
2 10 10 2 2 18
3 11 B1 11 B1 3 3 B0 19 B2
4 12 12 4 4 20
5 N1 13 N3 13 N3 5 N1 5 N1 21 N5
6 14 14 6 6 22
7 15 15 7 7 23
B2 S1 0 0 16 hig 0 8 8 low
1 N0 1 N0 17 N4 1 N0 9 N2 9 N2
2 2 18 2 10 10
3 3 B0 19 B2 3 11 B1 11 B1
4 4 20 4 12 12
5 N1 5 N1 21 N5 5 N1 13 N3 13 N3
6 6 22 6 14 14
7 7 23 S1 7 15 15 S0
B3 0 8 24 0 0 0
1 N0 9 N2 25 N6 1 N0 1 N0 1 N0
2 10 26 2 2 2
3 11 B1 27 B3 3 3 B0 3 B0
4 12 28 4 4 4
5 N1 13 N3 29 N7 5 N1 5 N1 5 N1
6 14 30 6 6 6
7 15 31 7 7 7
B4 S2 L1
If needed, use .UTF or UTFO to convert UTC to Float; use TIMF, TIXF, TIHF, TIDF, and
UTCF to extract information from UTCFloat.
ECI Object Information table for above sample SIMATIC-S7 PLCClock/Calendar, starting
at byte address 70:
Note: Use Program Argument -DATE=... to modify the ISO 8601 standard output format
YYYY-MM-DD; for example: -DATE=MM/DD/YY
Examples using both Dataset Trigger and Object I/O Change for write control:
ECI Information Table using the Read Tag or OPC Item for a regular Read-Only test. The
value of tag AliveSignal must change at least every 10 seconds, else a "Transmission ERROR"
is indicated by a value of ≥ 256 in I/O Status Watch_ReadOnly:
ECI Information Table using a Dataset Tag of a RAPD driver for a regular Read/Write
supervision. The value of Object I/O HeardBeat_ReadWrite is automatically changed at a
third of the time specified by Alive=30. That is, the value will be written periodically to Tag 67
in the external device (PLC). If the value is not sent back within 30 seconds, then a
"Transmission ERROR" is indicated by a value of ≥ 256 in I/O Status Watch_ReadWrite:
Note: You can apply the corresponding configurations for any EDI, RAPD or OPC
Data eXchange driver. Function Alive=xx may be controlled/suspended by Functions
RdDisabl, WrDisabl, and Mux=xx.
The following are sample Allen-Bradley RSLinx Driver tables showing the entries for object
STAT1_OBJ24 to read Integer N47:100 for 100 words and write Integer N47:200 for 30
words:
The following are sample Modbus Ethernet Driver tables showing object MODI_OBJ4 to
read and/or write from/to HighRegister 1000 for a length of 20 words:
For Bit, Nibble and Byte access use Function Merge or Encoded Write. Using Exception Write
to insert Bits to a Register may cause to first read the Register before writing (including the
Bit). If Bit addresses are swapped, you may apply the WrCDE for reversed Bits. Data may be
read by triggering the Read Dataset IdxTag. This can be done automatically by setting a Read
Interv Ch/Cont (interval after change and/or continuous). For bidirectional communication, set
the Read Update Delay.
Note: For a redundant setup, rename the Mailboxes in the driver tables using VRN,
for example, EciRmbx+EciWmbx DrvRmbx+DrvWmbx and follow the instructions
in “Dataset Exchange in Redundant System with VRN” on page 171.
The following are sample Saia S-BUS Driver tables showing object STAT1_OBJ5 to
Read/Write Registers as from address 2140 for 61 registers with Read Priority 3:
Note that the Saia S-BUS Driver is supplied with the SAIA PCD Communication Library,
which handles both the S-BUS and/or the P800 Protocol.
For Bit, Nibble and Byte access use Function Merge or Encoded Write. Using Exception Write
to insert Bits to a Register may cause to first read the Register before writing (including the
Bit). If Bit addresses are swapped, you may apply the WrCDE for reversed Bits. Data may be
read by triggering the Read Dataset IdxTag. This can be done automatically by setting a Read
Interv Ch/Cont (interval after change and/or continuous). For bidirectional communication, set
the Read Update Delay.
Note: For a redundant setup, follow the instructions in “Dataset Exchange in
Redundant System with VRN” on page 171 using VRN.
The following are sample Sinec-H1 Driver tables showing object SIM1_OBJ24 to read
DataBlock 27 as from word 50 for 86 words and write DataBlock 31 as from word 255 for 6
words:
For Bit, Nibble and Byte access use Function Merge or Encoded Write. Using Exception Write
to insert Bits to a Word may cause to first read the Word before writing (including the Bit). If
Bit addresses are swapped, you may apply the WrCDE for reversed Bits. Data may be read by
triggering the Read Dataset IdxTag. This can be done automatically by setting a Read Interv
The following are sample S7D Siemens SIMATIC S7-Protocol Driver tables showing object
SIM1_OBJ24 to Read DataBlock 47 Word 200 for 100 words and Write DataBlock 47 Word
400 for 30 words:
Note that the S7D Driver requires the Siemens SOFTNET-S7 Library for Industrial Ethernet
and/or MPI/PROFIBUS and possible PC boards as supplied by Siemens. A standard 3COM
Ethernet Board may be used if applying Industrial Ethernet with TCP/IP. Bits can directly be
accessed for areas DB##,B#, DI##,B#, MB# and OB# within a byte boundary as shown above.
For Bit, Nibble and Byte access you may use Function Merge or Encoded Write. Data may be
read by specifying a Continuous Trigger Tag or by triggering the Read Dataset IdxTag. This
can be done automatically by setting a Read Interv Ch/Cont (interval after change and/or
continuous). For bidirectional communication, set the Read Update Delay.
Note: For a redundant setup, follow the instructions in “Dataset Exchange in
Redundant System with VRN” on page 171, using VRN.
In this case, OPC Items are specified in ODX and referenced in ECI by simply entering a PLC
address to the Elem Addr columns as for any RAPD Driver. The only rule is that OPC Items
forming a Dataset must have identical names, which include the Tag address at a particular
location within the name.
The idea is to specify intelligible item names that correspond with the origin PLC addresses,
for example D4_x120, D4_x121, D4_x122 and so on. That is, the item names are defined by
expression D4_x{##} where {##} is the Tag address and D4_x is any text. Note that you must
adjust the ECI Rd and Wr Mode to correspond with the addressing of the external device. If the
OPC Server supports block data exchange by array items then no naming convention is
required and you may simply enter an array item name as for example D4.
Note: This method keeps PLC addressing transparent throughout communication and,
with ECI virtually no configuration changes are required when replacing an existing
RAPD Driver.
Note that ODX requires an OPC Server on the local PC to run COM or an ordinary 3COM
Ethernet Board to run DCOM with any remote OPC Server.
For Bit, Nibble and Byte access, use Function Merge or Encoded Write. Data may be read by
triggering the Read Dataset IdxTag or unsolicited if setting the Read Prio OnChange. The read
interval is automatically taken from the Read Interv Ch/Cont (interval after change and/or
continuous). For bidirectional communication, set the Read Update Delay.
Note: For a redundant setup, follow the instructions in “Dataset Exchange in
Redundant System with VRN” on page 171 using VRN.
In this case, OPC Items are specified in ECI while Datasets are automatically created. This
method accepts any OPC Item naming and additionally supports the following standard OPC
Attributes:
Rd CDE Conversion Codes for Standard OPC Attributes (for detailed info see Read Code CDE)
.UTC Timestamp Native, Universal Time Coordinated, FileTime format not for display unconverted to Double
FactoryLink SecTime [s] as from 1980-01-01 and/or Milliseconds [ms] decoded to LongAna or Analog for
.TIM/.TIX [ms]
HourTime “hh:mm:ss.xxx” or DateTime ISO 8601 “YYYY-MM-DD hh:mm:ss.xxx” [ms] decoded to
.TIH/.TID Message
.QA/.QX Quality Native (QQ=Quality, SSSS=Status, LL=Limit Flags) 0..255 and Quality Vendor Specific 0..255
.QS/.QL Quality Status 0..15=Bad, 16..31=Uncertain, 48..63=Ok and Quality Limit 0=Ok, 1=Low, 2=High,
3=Constant
.AR/.AX Access Rights Native 0=None, 1=Read, 2=Write, 3=Rd/Wr and Access Rights Vendor Specific 0..65535
For Bit, Nibble and Byte access, use Function Merge or Encoded Write. Data may be read by
triggering the Read Dataset IdxTag or unsolicited if setting the Read Prio OnChange. The read
interval is automatically taken from the Read Interv Ch/Cont (interval after change and/or
continuous). For bidirectional communication, set the Read Update Delay.
Note: For a redundant setup, follow the instructions in “Dataset Exchange in
Redundant System with VRN” on page 171 using VRN.
For Bit, Nibble and Byte access, use Function Merge or Encoded Write. Using Exception
Write to insert Bits to a Word may cause to first read the Word before writing (including the
Bit). If Bit addresses are swapped, you may apply the WrCDE for reversed Bits. Data may be
read by triggering the Read Dataset IdxTag. This can be done automatically by setting a Read
Interv Ch/Cont (interval after change and/or continuous). For bidirectional communication, set
the Read Update Delay.
<Bit> 0 0/LSB 0C/LSB 0X/LSB n/a n/a Hints and Tips for Translation from IOX to ECI
<Bit> 1 1 1C 1X 1D/LSB 1M ♦ IOX Max MSG column information is not
<Bit> 2 2 2C 2X 2D 2M
required.
<Bit> 3 3 3C 3X 3D 3M
Use ECI Write Interval to prevent queue over-
<Bit> 4 4 4C 4X 4D 4M
flow.
<Bit> 5 5 5C 5X 5D 5M
<Bit> 6 6 6C 6X 6D 6M ♦ IOX enCoded Write is not supported by all driv-
<Bit> 7 7 7C 7X 7D 7M ers.
<Bit> 8 8 10C 8X 8D 8M Use ECI eXception Write and Merge Function
<Bit> 9 9 11C 9X 9D 9M to form Write tags or use ECI Encoded Write.
<Bit> 10 10 12C AX 10D 10M Note that using the driver to insert Bits to a Word
<Bit> 11 11 13C BX 11D 11M may cause the driver to first read the Word
<Bit> 12 12 14C CX 12D 12M before writing (including the Bit). If Bit addresses
<Bit> 13 13 15C DX 13D 13M are swapped, you may apply the ECI WrCDE for
<Bit> 14 14 16C EX 14D 14M reversed Bits.
<Bit> 15 15 17C FX 15D 15M ♦ IOX relative addressing (IOX Abs=N) depends
<Bit> 16 16 20C 10X 16D 16M/LSB on the driver and is supported by other means in
<Bit> 17 17 21C 11X 17D | ECI.
<Bit> 18 18 22C 12X 18D | Use absolute - or ECI indirect addressing.
<Bit> 19 19 23C 13X 19D |
<Bit> 20 20 24C 14X 20D | ♦ IOX Status is supported by other means in ECI.
<Bit> 21 21 25C 15X 21D | Use ECI Functions as desired.
<Bit> 22 22 26C 16X 22D | ♦ Use bidirectional communication and substitute
<Bit> 23 23 27C 17X 23D n/a the Timer by ECI Read Interv Ch/Cont for
<Bit> 24 24 30C 18X 24D | fast/slow transmission (automatic polling or
<Bit> 25 25 31C 19X 25D | cyclic read).
<Bit> 26 26 32C 1AX 26D |
<Bit> 27 27 33C 1BX 27D |
♦ Adjust the ECI Wr Mode to suit the external sys-
<Bit> 28 28 34C 1CX 28D | tems data tag size (Boundary)
<Bit> 29 29 35C 1DX 29D | ♦ note that ECI Read/Write Dataset IdxTags can
<Bit> 30 30 36C 1EX 30D | substitute the IOX Read and Write Triggers, in
<Bit> 31 31 37C 1FX 31D this case, use independent tags for read and
<Bit> 32 n/a n/a n/a 32D write
♦ standardize as much as possible ‡ use OPC
Servers with ODX for external bus systems like
CAN, LON, BacNet, Fieldbus, Interbus, Modbus,
Profibus.
Note that ECI supports many additional functions
including the setup for a
redundant system.
Legend: * Codes also available in ECI; (..) requires special conversion; ** denotes
FactoryLink equivalent type.
S7D ECI Object Reference Table for Communication Object *SIM1_OBJ44, which is
transmitted in a redundant system to the Local and/or Partner station through VRN:
If you do not want to control the driver by the VRN Tandem Status, replace above
TASKSTART_S[x] tag by a unique tag. In any case, VRN must be run for data exchange
between ECI and driver while the mailboxes of ECI (EciRmbx/EciWmbx) and driver
(DrvRmbx/DrvWmbx) must be different.
Although no Write/Output has been specified, Bit_0..Bit_7 are automatically watched for
changes to update the Byte_of_Bits. If a Bit will not be inserted in Byte_of_Bits, apply the Link
Function to specify that particular Bit to be Read Only. If you want to send merged data to a
Write/Output, then apply the Merge Function as described below.
In the following example, data of a Merged_Byte is sent through a RAPD Driver to PLC Addr
155 and fed back from there as the Composite Object’s input. In this case, the Merge Function
must be applied to transmit data to the appropriate Write/Output. Note that without the Merge
Function, a Write/Output would only be released if the Object I/O of the particular line has
been changed by a task other than ECI.
1 Scaled_IO is extracted from Tag 157 and has an external range of 400..2000 (indicating
4..20mA). The scaled I/O range is not shown. The Link Function keeps the change status for
Read Only values to be used on the next line: ChangTrig is forced ON whenever Scaled_IO
changes.
2 Toggle is extracted from the OnOff feedback and causes, if changed by a task other than ECI,
the triggers Commd_Off or Commd_On for pulse control according to the Toggle’s state. The
commands are conducted to an external device of which OnOff state is fed back. Note that the
circuit may still be considered a Dual Ported RAM, although the read and write addresses are
different.
3 Similar to 2, a selector switch may be configured with a single Analog I/O Tag Select-SW to
provide multiple triggers Commd_Off/1/3/10/30/100 while the State of the selector switch is
fed back to indicate the true state of the plant. Important –set the Wr CDE for a bit, else a
TagArray of 16 Tags corresponding to Rd CDE=S0 would be written.
4 Similar to 3, Select-SW is extracted from Tag 28 and HighByte B1 of Tag 59 is set to binary
values 1,2,4,8,16 or 32 depending on written I/O values Off=0,1,3,10,30 or 100. The circuit
may be used to enumerate particular values, and it can still be considered a Dual Ported RAM
using a single I/O Tag while the Read and Write data is completely different from non-linear
data.
Sample entry to read 128 scaled HiBytes B1 and write to 128 LoBytes B0 of Tags #100..227
Sample entry to read 64 even Tags HiByte B1 and write to 64 odd Tags Short Integer S0
Sample entry to read 64 Low Nibbles N0 and if value changes to 15, trigger Bit 00 of every
Second Tag
Note that scaling is allowed and valid for appropriate outputs. Read/Input information may be
taken from the Alternate Read Tag column or from a Mailbox Dataset by entering the Tag
Address. The Object I/O Tags are used to control or store statistical information. All statistical
results are displayed in the Alternate Write Tag column. Outputs to an Encoded Array or
Mailbox are not valid. Dip and Peak Timestamp Messages are shown for information only
(Copy is not a statistical Function). For conversion of older applications see Program
Argument -TagOnlyStatistics.
S UMMARY
For the sample ECI/OPC Control table above, data is read at a cycle of 0.7 sec whenever an I/O
has been changed while the appropriate I/O is only updated after 3 seconds if a possible
TERMS
Communication Objects are defined as a set of input and/or output data (Alternate Tags or
RAPD Datasets) and are identified by a single line entry in the ECI Control table and its ECI
Information table.
Composite Objects are defined by two or more Object I/O Tags using the same specific
Read/Input (Read Tag, Tag Address or OPC Item) by a coherent block of line entries. In this
case, a particular Object I/O may directly influence adjacent Object I/Os, similar to a PLC
where a changed Bit influences its residing Byte or Word, that is, a Bit is inserted in its
corresponding Nibble, Byte, Short and so forth.
Object I/O Tags represent a Bit, a Nibble, a Byte or a number of Bytes as a bidirectional
interface for data transmitted from/to the external device. Read Cycle Update Delay and
Write Interval are transmission control parameters to specify performance and system load.
See also Tag Array Concept.
Read or Input data is transmitted from an external device through an (Alternate) Read Tag
for EDI, a Read Dataset for RAPD or an OPC Item for ODX. See also Indirect Addressing
with Unsolicited Read.
Write or Output data is transmitted to an external device through an (Alternate) Write Tag
or an Encoded Array for EDI, a Write Dataset for RAPD or an OPC Item for ODX. See also
Read and Write Procedures and Exception Encoded Write.
Datasets or OPC Groups represent logically organized data. For ECI, a Dataset simply is a
number of Tags forming a coherent block (binary dump) of data with contiguous addresses in
the external device. All access to OPC Items is by an OPC Group, which holds attributes for
read/write intervals, on change/polled or block/exception transmission, etc. Read and Write
groups may or may not be identical for a particular ECI Object. They are basically independent
on the external device even if reflected there.
Tags or OPC Items represent a Boolean/Flag, Integer/Word, Real/Float or Message/String,
etc. For OPC, associated with each item is a Value, Quality and Timestamp. Note that OPC
items are not the data source – they are just connections to them. They should be thought of as
symbolic addresses to the data. For ECI, a tag essentially is defined as a 1, 2, or 4-byte binary
value, which can be decoded as desired. All Tags in a particular Dataset have the same size
called Boundary of 1, 2, or 4 bytes.
EDI Drivers use single Tags or Arrays for ordinary Read/Write Tables. Tags are referenced
in Alternate Read and Write columns in the ECI Information table. ECI supports Block Read
(Interval Timer not required), Block Write (ECI provides a trigger whenever Object I/O data
has been changed for a particular table), Exception Write and Encoded Write (ECI supports
triggering).
RAPD Drivers use the IMX Intertask Mail eXchange protocol for the transmission of
Datasets through Mailboxes. ECI supports Block Read, Block Write, Exception and
Encoded Write procedures for the IMX interface as for EDI drivers described above. A
Mailbox is always owned by the receiving task. Thus, the owner of the Read Mailbox (also
P ROGRAM A RGUMENTS
The arguments shown below may be directly entered in the Program Arguments column of the
System Configuration table. You may also reference a file to enter the parameters there. In this
case, the filename must be specified without a dash in the Program Arguments column. You
can apply environment variables using brackets {...} and pathnames as required, for example,
{flapp}\ECI_para.run. Note that a leading entry in the Program Arguments column will
overwrite a possible duplicate entry in the file.
Argument Description
-DRMbx=<#> Log read debug messages.
-DWMbx=<#> Log write debug messages.
-DQMbx=<#> Log query debug messages.
-DERMbx=<#> Log read Error messages. (#=1 to 3, default = 3, most
sensitive)
-LimitType=<A or B> Compute all I/O values without upper/lower limits, X = A
(default) or, limit all I/O values by ScaleMin/Max
boundary, X = B.
-InitUncertain Set the I/O Status Uncertain-Flag (value = 64) and hold the
Object I/Os until they are updated by the first valid Dataset
at initialization. (default=Object I/Os are set zero if
changed and no Dataset is received after the Update Delay.)
-InitWrite Write all Outputs if Object I/O Tag was changed at
initialization. (default=changes cleared without writing)
-DefaultMsgLength=<#> If ECI is the first task that writes to a message tag without a
configured length, it sets the max length to # char. (default
= 80)
-SleepTime=<#> Adjust process speed/CPU load by suspending program
(sleeping) every # scan. (default=100 in ms)
-Throttle=<#> Throttle non critical job processing by multiple # rates of
SleepTime (default=none):
-MaxJobs=<#> Max Number of jobs (1 to nnnn) done at a time at main
data processing (default=all). Note that this may cause a
message output in the FactoryLink system window “ECI
Info: MaxJobs=xxx reached“.
# –LimitType=B
#
# Set the I/O Status Uncertain-Flag (value ≥ 64) and hold the Object I/Os until they are updated by
# the first valid Dataset at initialization (default=Object I/Os are set zero if changed and no Dataset
# is received after the Update Delay):
# –InitUncertain
#
# Write all Outputs if Object I/O Tag was changed at initialization (default=changes cleared without
# writing):
# –InitWrite
#
# If ECI is the first task that writes to a message tag without a configured length, it sets the max
length to 80 char (default):
# –DefaultMsgLength=80
#
# ECI 7.00 and older versions only support Alternate Read Tags (or Read CDE=S0 for Datasets)
# for Statistical Functions. This legacy method can be reinstated by:
# –TagOnlyStatistics
#
# You can set the IMX protocol flags -WrMode=x;y and -WrType=z, required for certain RAPD
# drivers, where:
# x=1 reverse Bit direction, x=2 lowest ElemAddr=1, x=4 lowest BitAddr=1, or sum e.g. 5=1+4,
# y=1..9 IMX version and z=1 More flag, z=2 Host direction flag, z=4 Reserved or sum, for example:
# 3=1+2 (see also R/W
# Function). The default settings are:
# –WrMode=0;1
# –WrType=0
#
# Arguments for Tuning and Performance
# Caution! These arguments – if wrongly adjusted - may cause unpredictable results.
#
# Adjust process speed/CPU load by suspending program (sleeping) every scan
# (default=100 [ms]):
# –SleepTime=300
#
# Throttle non-critical job processing by multiple rates of SleepTime (default=none):
# –Throttle=2
#
# Max Number of jobs (1..nnnn) done simultaneously at main data processing (default=all). Note
# that this may cause a message output in the FactoryLink system window “ECI Info:
# MaxJobs=xxx reached“:
# –MaxJobs=500
l These messages depend on the Warning Level #=1..3 (3=default) set by Program Argument –
WRMbx=# for the Read Mailbox to suppress frequently appearing warnings. The higher the message
number, the more information is displayed (see Program Arguments for debugging and tuning). For some
RAPD Drivers, it may be recommended to set –WRMbx=2 after commissioning.
In the table below, text displayed before the messages above indicates the table name and line
number of the erroneous data entry.
•
•
•
•
FLGEM
O VERVIEW
This chapter contains information needed to set up and configure bidirectional
communications between the FactoryLink real-time database and one or more SEMI Host
Communication Standard (SECS) Protocol devices. FLGEM supports the SECS-I and SECS-II
serial RS-232 protocol as well as the HSMS TCP/IP protocol.
Accessing
Device Interfaces > FLGEM Port & Variable Definition > FLGEM Port Definition
Field Descriptions
Accessing
Device Interfaces > FLGEM Port & Variable Definition > FLGEM Port Definition > “logical port” >
FLGEM Device Definition
Field Descriptions
Accessing
Device Interfaces > FLGEM Port & Variable Definition > FLGEM Variable Definitions
Field Descriptions
NULL SINT2 L S4
LIST SINT4 B F8
BNARY FLOT8 BN F4
BOOLN FLOT4 A (default) U8
ASCII UINT8 J U1
JIS8 UINT1 S8 U2
SINT8 UINT2 S1 U4
SINT1 UINT4 S2
Accessing
Device Interfaces > FLGEM Port & Variable Definition > FLGEM Variable Definitions > “variable
ID” > FLGEM Limits Monitoring
Field Descriptions
Accessing
Device Interfaces > FLGEM Port & Variable Definition > FLGEM Equipment Control/Status
Field Descriptions
Accessing
Device Interfaces > FLGEM Port & Variable Definition > FLGEM Collection Events
Field Descriptions
OFF >__TGL
ON >=
TGL >=_TGL
= <
=__TGL >__TGL
<> <=
<>_TGL <=_TGL
>
Accessing
Device Interfaces > FLGEM Port & Variable Definition > FLGEM Collection Events > “event ID” >
FLGEM Collection Event Reports
Field Descriptions
Accessing
Device Interfaces > FLGEM Port & Variable Definition > FLGEM Alarms
Field Descriptions
Accessing
Device Interfaces > FLGEM Report Definition > FLGEM Event Reports
Field Descriptions
Accessing
Device Interfaces > FLGEM Report Definition > FLGEM Event Reports > “report ID” > FLGEM
Report Detail
Field Descriptions
Accessing
Device Interfaces > FLGEM Report Definition > FLGEM Trace Reports
Field Descriptions
Accessing
Device Interfaces > FLGEM Report Definition > FLGEM Trace Reports > “trace ID” > FLGEM Trace
Detail
Field Descriptions
Accessing
Device Interfaces > FLGEM Report Definition > FLGEM Remote Commands
Field Descriptions
Accessing
Device Interfaces > FLGEM Report Definitions > FLGEM Remote Commands > “remote
command” > FLGEM Remote Command Detail
Field Descriptions
Accessing
Device Interfaces > FLGEM Report Definition > FLGEM Message Detail
Field Descriptions
Accessing
Device Interfaces > FLGEM Report Definition > FLGEM Message Detail > “terminal ID” > FLGEM
Message Detail
Field Descriptions
Accessing
Device Interfaces > FLGEM Custom Message Definition > SECS-II Message Definition Control
Field Descriptions
Accessing
Device Interfaces > FLGEM Custom Message Definition > SECS-II Message Definition Control >
“table ID’ > SECS-II Message Definition Information
Field Descriptions
Accessing
Device Interfaces > FLGEM Custom Message Definition > SECS-II Read/Write Control
Field Descriptions
Send Stream Tag that defines the stream number of the message to be tag name analog
Number sent
Send Tag that defines the function number of the message to be tag name analog
Function sent
Number
Send Tag that defines the message ID of the message to be sent tag name analog
Message ID
Send Trigger Tag whose value, when forced to 1, initiates a send of the tag name digital
message defined by the stream, function, and message ID
tags
Send Disable Tag whose value, when 1, disables a triggered send of the tag name digital
device(s) message specified in this table
Send State Tag whose value is 0 when a triggered send of the tags tag name digital
specified in this table is in progress and 1 when the table
is inactive
Send Status Tag to which the status for the last send operation for this tag name analog
table is written
Receive Tag to which the stream number of the last message tag name analog
Stream received is written
Number
Receive Tag to which the function number of the last message tag name analog
Function received is written
Number
Receive Tag to which the message ID number of the last message tag name analog
Message ID received is written
Accessing
Device Interfaces > FLGEM Process Programs & Data Sets > FLGEM Process Programs
Field Descriptions
Accessing
Device Interfaces > FLGEM Process Programs & Data Sets > FLGEM Data Sets
Field Descriptions
TECHNICAL N OTES
INT8
For UINT8 and SINT8 the data can be stored into 2 longana or 4 analog tags by specifying a
tag array and a count in the 'Constant' column.
Parsing
If the Parse field of a READ Message Definition Line is YES, the incoming message will be
parsed. The parsing term for each tag is entered in the Parse field.
The following example illustrates Parse position terms for a sample message (similar to
S6,F3):
Message Structure Parse Position String
L,3 1
UINT4 1.1:
UINT4 1.2:
L,1 1.3
L,2 1.3.1
UINT4 1.3.1.1:
L,7 1.3.1.2
ASCII,40 1.3.1.2.1:10,20 Start with character 10, store 20
ASCII,40 1.3.1.2.2:,40 Store first 40 characters
ASCII,40 1.3.1.2.3:10 Start at character 10, store rest of string
ASCII,40 1.3.1.2.4: Store whole string
UINT4 1.3.1.2.5:
UINT4 1.3.1.2.6:
UINT4 1.3.1.2.7:
The term after the ':' in the form 'X,Y' is used for strings to determine the start position (X) and
the number of bytes (Y) to be stored. If 'X' is omitted (:,Y) the start position is 0. If 'Y' is
omitted (:X,) the string starting at X to the end of the end of the string is stored. If neither X nor
Y is specified, the whole string is stored. In the case of UINT8 and SINT8 the 'X' value is used
to store into 2 longana or 4 analog tag array.
Repeat Blocks - A list block can be repeated if an entry is made in the 'Constant' field for a
'LIST' entry.
For example:
LIST 3 2
tag1 UINT4
tag2 UINT2
tag3 UINT2
For example:
LIST 1 2
LIST 3
tag1 UINT4
tag2 UINT2
tag3 UINT2
The message structures are expanded at start up to reduce the processing at run time. If logging
(command line 'd' or 'D') is enabled, the message structures will be stored in the file
'sdrv_log.dat’.
Conditionals
Item types are CONI2, CONU2, CONI4, CONU4 and CONAS for SINT2, UINT2, SINT4,
UINT4 and ASCII data types respectively. Entries in the 'Constant' field will be used to match
the incoming data. These item types can be used in normal or parsed READ messages. The
conditional fields may or may not have tags associated with them. If there are any conditionals
in a message definition, the message will first be processed to see if the data received in the
conditional fields matches the 'Constant' data for the conditional field before any data is stored
into tags. For 'CONAS' fields, the ':X,Y' parsing conditions apply to the conditional matching,
but if the conditions are met, and a tag is specified for the field, the whole string will be stored.
If the ‘Constant’ data does not match the data received, none of the message data will be
stored.
FNAME, FN_XX and FSIZE require a message tag containing a file name. FSIZE will send a
SINT4 with the file size.
FNAME will require a message tag containing the file name for READ functions. To WRITE
files, use the following item types: FN_B(BYTE), FN_A(ASCII), FN_I1(SINT1),
FN_U1(UINT1), FN_I2(SINT2), FN_U2(UINT2), FN_I4(SINT4), FN_U4(UINT4),
FN_I8(SINT8) and FN_U8(UINT8). Each of those items requires a message tag containing the
file name of the file to be sent. The particular item type used determines the data type used to
send the file. On a READ the data type is determined from the message.
Multiple Items
A data item consisting of multiple items, can be handled by using a tag array and specifying
the size of the array in 'Number'. The default value will be 1 for non-ASCII item types if no
entry is made in ‘Number’. For ASCII item types the following applies:
WRITE
Number left blank: Data Item byte count will be equal to string length.
String Length >= Number: Data Item byte count will be equal to Number.
String Length < Number: Data Item will be Null filled to Number.
READ
Number left blank: Complete receive string will be stored.
String Length <= Number: Complete receive string will be stored.
String Length > Number: Only Number bytes will be stored.
Miscellaneous
On READ, the 'Item Type' is ignored. The data is processed according to the 'mesg.next' type.
Installation
Windows 2000/XP/2003
1 Install the GWA SDR driver.
P ROGRAM A RGUMENTS
Arguments Descriptions
-b<#> or /b<#> The number of buffers allocated by the SDR daemon. Each buffer
represents 256 byes. (# = 10 to 4000, default is 200)
-c or /c Clean start - causes all non volatile storage to be deleted and
reinitialized
-l or /l Writes debug output to FLGEM.LOG
-g or /g Overrides the GWAGEMDIR enviroment variable
-s or /s Overrides the GWASDRDIR enviroment variable
-v<#> or /v<#> Sets the level of debug output. (# = 1 to 3)
Start-Up Errors
Message Cause
Protection Bit Failure (FLGEM) The system does not have the proper protection bit set.
NO_SDR_DEFINE The SDR directory is not defined as an environment variable
(GWASDRDIR) program argument (/s).
NO_GEM_DEFINE The GEM directory has not been defined as an environment
variable (GWAGEMDIR) or program argument (/g).
GCDC_Bad_Status The GCD Compiler returned an error code. See FLGEM window
or Shared Run Manager window for details.
GCDC_Bad_File_Status The FLGMCONF.GCP was not created by the GCD Compiler.
See FLGEM window or Shared Run Manager window for details.
sdr_start - SSS, NNN The SDR driver returned an error code. SSS is the error code
message, NNN is the error code. See the GWA SDR manual for
details.
sdr_configure - SSS, NNN The CFGSDR task returned an error code. SSS is the error code
message, NNN is the error code. See the GWA SDR manual for
details.
gwgem_start - SSS, NNN The GWGEM task returned an error code. SSS is the error code
message, NNN is the error code. See the GWA GWGEM manual
for details.
CREATE_THREAD FLGEM could not create the intertask communications thread.
EXT_SHARED_MEM FLGEM could not find the shared for the intertask
communications with the FLGMEXT task.
MSG_SHARED_MEM FLGEM could not find the shared for the intertask
communications with the FLGMMSG task.
bad_open_FLGEM_PORT_CT FLGEM could not find the FLGMPORT.CT file
bad_open_path_FLGMCONF.CFG FLGEM could not find the path defined by GWASDRDIR or the
/s program argument.
Message Cause
FLGEM_insufficient_memory The system does not have enough memory to run FLGEM.
FLGEM_no_eval_value A Collection Event has no Monitor Value or Tag entered.
FLGEM_bad_control_var A Control Variable in the FLGEM Equipment Constant/Control
Table does not have a Control Trigger. See FLGEM window or
Shared Run Manager window for more details.
FLGEM_invalid_limits See FLGEM window or Shared Run Manager window for more
details.
FLGEM_dup_port NN Port NN was defined in the FLGEM Port Definition table more
than once.
FLGEM_dup_deviceID_port NN Port NN has duplicate devices defined.
FLGEM_dup_device More than one device was defined as ‘GWGEM’ in the FLGEM
Device Definition table.
Invalid_Parse_String See Technical Notes for proper use of Parse Strings.
bad_open_FLGEM_REPORT_CT FLGEM could not find the FLGMRPRT.CT file.
FLGEM_traces_bad_time The Trace Sample time must be of the following format:
HHMMSS.
bad_open_FLGEM_PROCESS_CT FLGEM could not find the FLGMPROC.CT file.
too_many_PROC_DS_records There should be only one Process Program row and only one Data
Set row entered.
bad_open_path_FLGMCONF.GCD FLGEM could not find the path defined by GWAGEMDIR or the
/g program argument.
CreateFileMapping() failed, error code = These messages appear in Windows message boxes from either
NN FLGMEXT or FLGMMSG. The source of the message appears in
MapViewOfFile() failed, error code = NN the title bar of the message box.
Mapping already exists...not created. NN is a Windows system error code. Any of these messages
indicate that the corresponding task did not start.
EXT_NO_TASK_ID FLGMEXT task tried to register with FactoryLink but failed.
MSG_NO_TASK_ID FLGMMSG task tried to register with FactoryLink but failed.
bad_open_FLGEM_EXT_PORT_CT FLGMEXT task could not find the FLGMPORT.CT file.
FLGEM_MSG_insufficient_memory The system does not have enough memory.
Message Cause
msg_def_table_not_found - NN Table NN was triggered by the SECS-II Read/Write Control Table
but there is no table NN defined in the SECS-II Message
Definition Control table.
stream_function_not_found - ss:ff:mm Message SssFffMmm was triggered by the SECS-II Read/Write
Control Table but the message is not defined in the SECS-II
Message Definition Information table.
no_resp_defined - ss,ff Primary message SssFff-1 was received and the response message
SssFff is not defined in the SECS-II Message Definition
Information table.
•
•
•
•
MECOM
O VERVIEW
The Mitsubishi PLC Driver, MECOM, is a software package that runs under FactoryLink
Software System. The PLC Driver does the task of reading data from Mitsubishi MELSEC
PLC systems into the FactoryLink Real-time database and writing data from the database to
the PLC.
The PLCs supported by MECOM are the A-series, QnA-series, and the FX-series. Both Serial
and Ethernet communication can be used. TCP/IP or UDP/IP can transfer the Ethernet
protocols. The following connections can be used:
MECOM also has support for MAC/MTA terminal multidrop net usage when using Serial
communication. It is possible to communicate through a MAC/MTA/E-series terminal in
transparent mode.
For the A- and QnA-series, MECOM supports the usage of [Q]C24 multidrop net when using
Serial communication. Further, MELSEC NET is supported for the A- and QnA-series when
using either Serial or Ethernet communication.
MECOM also has support for modem usage. Remote stations can be called from the
FactoryLink station and then data may be transferred. MECOM also supports external remote
stations calling up the FactoryLink station and then lets MECOM be master.
Hardware
The following tools are needed to install, configure and run the Mitsubishi PLC driver
communicating with the PLC(s).
• See the FactoryLink manual for hardware and software requirements.
• At least one free serial communications port if used.
• Ethernet network adapter for Ethernet communication if used.
• 1 Mbyte free fixed disk space.
• Modem, and cable to modem if used.
• [Q]C24 computer link module and cable to this module if used.
• [Q]E71 Ethernet interface module, cables and terminators if used.
• Signal converter if direct CPU communication is used.
• Other special cables if communication is done through a MAC/MTA/E-series terminal in
transparent mode. For more information, see page 285.
Software
If Ethernet communication is used, in PLC there must be program to initialize and maintain the
[Q]E71 module.
Windows 2000 has a built-in TCP/IP communication. By default this communication is
disabled. To activate the TCP/IP communication, open the Control Panel and then select
Network.
Installation
To install the MECOM driver, do as follows:
1. Make sure FactoryLink already is installed.
2. Go to [install directory]\Program Files\Siemens\FactoryLink\mecom.
3. Double-click setup.exe and follow the on-screen instructions.
4. If Ethernet is to be used, click Yes to the “AJ71[Q]E71 access” question.
It is also possible to start a DOS session and type “setup” from the directory where MECOM is
located.
3. Some of the fields are special for the MECOM driver. Change the values of the fields
according to table below and use the row that matches the used communication port.
If several MECOM tasks are to be used, repeat this procedure until all tasks are configured.
Upgrading
If you are upgrading the MECOM driver do as follows:
1. Make a multiplatform backup copy of your FactoryLink application.
2. Install MECOM according to installation instructions (See “Installation” on page 254..)
3. Restore your FactoryLink application.
Mitsubishi Definition
For each setup, you define a name that is used in the Mitsubishi Write and Read Header tables:
• Task Name
• Remote Name
• PLC Name
Using names for these parameters has a great advantage. If a parameter will be changed, this
has to be done one time only. For instance, if the phone number for a remote station is changed,
the number has to be changed only in the Remote Station Definition table. All tables using this
remote station will immediately use the new number.
Note: A special case is if the communication port is changed. In that case the task
name and executable file must be changed as well in the System Configuration table
in Shared domain.
Mitsubishi Read
Information about what data to read from PLCs, and when to do it.
Mitsubishi Write
Accessing
Field Descriptions
Accessing
Field Descriptions
Accessing
Field Descriptions
Accessing
Field Descriptions
Read Table
This table defines what data to be read at a certain time.
Accessing
Device Interfaces > Mitsubishi Read > Read Header > “table name” > Read Table
Field Descriptions
Accessing
Field Descriptions
Write Table
This table defines what data to be written at a certain time.
Accessing
Device Interfaces > Mitsubishi Write > Write Header > “table name” > Write Table
Field Descriptions
In the Communication Task Definition table the Task Name must be defined. The default
communication port COM1 will be used and communication parameters will be 9600, O, 8, 1.
If FX-PLC is used, the communication parameters must be changed to 9600, E, 7, 1.
For communication to an AJ71C24 computer link module, use the default setting for switches
(See “C24-Protocol” on page 285.) Further, set the STATION NO-rotary-switches to 0 and the
MODE-rotary-switch to position 1 on the AJ71C24. It is assumed there is only one PLC.
If A-CPU communication is wanted no changes has to be done.
Task Data
Task Name Baud Rate Parity Stop Bits
Number Bits
PCPORT 1 9600 ODD 8 1
Trigger Remote
Table Name Trigger Type Task Name PLC Name
Tag Name
RTABLE sec1 CHANGE PCPORT TESTPLC
Datavalue D25
It is assumed that datavalue is an analog tag. When MECOM is running the tag datavalue will
be updated one time per second with the value from D25 in the PLC.
F UNCTION D ESCRIPTION
Startup
At the start of the FactoryLink application, data for MECOM is validated.
First, there are tests made to verify that all used Task Names, Remote Names and PLC Names
are defined in the appropriate tables. Then all PLCs specified in the Read Header tables and
Write Header tables will be accessed to test that data is correct for the used PLC. To be able to
validate tables with Remote Name defined these remote stations are called.
If an error is detected, MECOM terminates after the data validation phase. The first error found
will be shown in the FactoryLink system picture. All errors are printed on screen and they
might be seen in the FLControlPanel, if the parameter Flags is “FSR” for MECOM in the
System Configuration table.
During this phase the “read at startup” function also is performed. When a table has been read
the completion status tag is set to -1 and the completion trigger is activated. By using this
information the operator knows if the information in the tags are valid.
If modem is used the start-up procedure may take a long time. Therefore there is a Ready tag
available, which will be activated when the start-up procedure is completed.
During start-up phase and normal operation there is information available in the Operation
Message tag telling what MECOM is currently doing. For each remote stations there is
available a modem status tag telling the actual status for the connection to the remote station.
Stand-alone Validation
It is possible to run MECOM without any FactoryLink application active to validate data for
the driver. This might be useful if it takes a long time to start the FactoryLink application.
Before the validation can be done the CT-files must be updated from where data is read by
MECOM.
First execute:
ctgen
To tell MECOM it is running stand-alone, add the program argument “-V”. It is also possible
to log the printed information into a log file using the program argument “-Lfilename”. E.g.
validating the information for COM2, showing warning messages (”-W”), tracing PLC
accesses (“-T8”), and logging data to C:\FLAPPS\LOG\MECOM2.LOG do as follows.
mecom2 -v -w –t8 -lc:\flapps\log\mecom2.log
If another application directory other than %FLAPP% is used, add the program argument
“-adrive: \directory”. Note, in this case, CTGEN must also be used with this program
argument.
Transfer of Data
General
Data is read or written for a table when its trigger tag is activated according to the trigger type.
When the operation is completed the completion status tag is set and completion trigger tag is
activated.
For write tags the flag write if changed can be set. This means that the tag will be separately
written immediately if tag is changed without the table being triggered. If there is no trigger tag
defined for a write table, all tags in that table will get the write if changed option set.
If the operation fails, several actions may take place. First the error message is written in the
run manager picture and in the window for MECOM, if used with FSR-flags. Then, if it is a
new error status (not the same error status as last time), the error message tag is initialized and
the error trigger tag is activated. The Task Name is available first in the error message. Finally,
if a log file is used, a row is printed in the log file. To the information in the log file a time
stamp and information about what remote station and PLC causing the error will be added.
When an error is detected, it appears in the run manager picture. If the error disappears, the
status changes to “running” but the error message remains in the picture for another 30 seconds
and then it is cleared. If the error does not occur again due to the table not being triggered, the
error status remains for 30 seconds and thereafter the error is ignored. Then the status changes
to “running” and, as described earlier, the error message will remain in the picture for another
30 seconds.
Tag Arrays
Tag arrays are supported by MECOM. The number of tags to read or write is defined in the
field Number of tags. However make sure that FactoryLink limits for the different kinds of tag
arrays are not exceeded.
When multidimensional tag arrays are used, MECOM starts with the specified tag, then
continues until Number of tags are read/written. The rightmost index is the least significant
index. If an array like DataValues[10][10] (array dimension 10,10) is to be read from registers
D0 through D99, use the following table values:
This means:
Message Tags
Message tags are tags containing text. Each character requires one byte, and equals a half
16-bit register in the PLC. The tags can also have a variable text length. The MECOM driver
represents the first character in the first register’s least significant half. The second character in
the most significant half. The third in least significant half of the second register, and so on.
The number of registers that MECOM accesses is defined in the read/write table(s). The value
in the column Message length defines the number of registers (not the number of characters).
The text length can then be up to twice that amount. If a message written to the PLC is shorter
than this, all the remaining register halves will be set to zero. On the other hand, when a
message is read from the PLC, the first register-half equalling zero will mark the end of the
message. The remaining halves will be ignored (not stored in the tag). If a message length is
equal to the defined length (or longer), the read/write operation will stop at the defined length.
No “zero-termination” will be needed. Make sure the tag itself is long enough to hold the
value.
Assuming the following definitions in the read/write table:
Tag Name I/O ... Message Length ...
MyText D0 ... 3 ...
This will allow the tag MyText to exchange up to six characters (three registers) with the PLC,
starting with register D0. If MyText contains the text “abcde”, the following will be written to
the PLC:
Register Characters Values(hex) Stored Value
D0 ”a”and ”b” 61 and 62 6261(hex) = 25185(dec)
If register D0 through D2 contains 6261, 6463 and 6500, the following will be read from the
PLC:
Register Read Value (hex) Values (hex) Characters
D0 6261 61 and 62 ”a”and ”b”
D1 6463 63 and 64 ”c”and ”d”
D2 6500 00 and 65 zero (=end) and an ignored ”e”
The tag MyText would contain the text “abcd” after the read operation.
Indirect Addressing
Another feature is indirect addressing. An index tag can be defined for each tag in the read
tables and write tables. If used, the value of that tag is added to the original address for the
device specified in the I/O field. E.g., if the parameter I/O is “M123” in a read table and an
index tag is specified for the device. If the index tag has the value 419 when the table is
triggered, M542 will be read.
Further, the usage of Gain and Offset is supported by entering real values, like 1.25 or 2.5E-3
(=2.5*10-3) in the appropriate fields. When reading data the value from the PLC is multiplied
with Gain and Offset is added. When data is written to the PLC, first Offset is subtracted from
the value from the Real Time Database and the remaining value is divided by Gain. In this
manner, the same value can be used for Gain and Offset in both read and write tables.
Tags may be both read from a PLC and written to the very same PLC and PLC I/O. This is
typically used for PID-loop set values where the value may be changed from another operator
than the FactoryLink operator. This will normally create timing problems.
MECOM handles this problem. If the change flag is set for such a tag (=FactoryLink operator
has changed value) the writing of the value from the PLC to the real time database will be
suppressed. In the next moment the new value in the real time database will be written to the
PLC due to the “write if changed” flag.
To avoid that new values, read from the PLC, will be written back to the PLC automatically,
the change flag is cleared for those tags after their values are stored in the real time database.
Registers are normally read and written in PLC with the default device size, independent of the
type of the FactoryLink tag being connected to the I/O. The device size depends on the
I/O-type and in some cases also of the address being used. For X, Y, M etc. the device size is 1
bit. For D, W etc. 16 bits. E.g. the C (current value) C200 - C255 of the FX-series have a
device size of 32 bits.
It is not permitted to use any data type conversion for the following items:
• PLC Timers
• PLC Counters
• FactoryLink MESSAGE tags
Otherwise it is permitted to mix any PLC device type with any FactoryLink tag type. PLC data
type conversion is used when data is not stored as normal for the PLC device. If PLC data type
conversion is requested the following options are available.
• Two 16-bit registers are used as one DOUBLE 32-bit integer register. The corresponding
FactoryLink tag type is LONGANA.
• Two 16-bit registers are used as one 32 bit precision FLOAT register (according to
IEEE-standard). The corresponding FactoryLink tag type is also FLOAT.
• One 16-bit register is used as an UNSIGNED register. Thus the values are interpreted to be
in the range 0 - 65535.
• One 16-bit register is used as a BCD register. The values are stored hexadecimal and
interpreted to be decimal. The permitted range is 0 to 9999.
Reading or writing data in PLC using the following combinations of data type conversion and
tag-types will cause a warning message, "Data may be lost in conversion", at the start of
MECOM, if program argument “-W” is used:
• Reading data from 16-bit register to DIGITAL-tag.
• Reading data from DOUBLE-register to ANALOG-tag.
• Reading data from DOUBLE-register to DIGITAL-tag.
• Reading data from FLOAT-register to LONGANA-tag.
• Reading data from FLOAT-register to DIGITAL-tag.
• Reading data from FLOAT-register to ANALOG-tag.
• Reading data from UNSIGNED-register to DIGITAL tag.
• Reading data from BCD-register to DIGITAL tag.
• Writing data from ANALOG-tag to 1-bit devices.
• Writing data from LONGANA-tag to 16-bit register.
• Writing data from LONGANA-tag to 1-bit devices.
• Writing data from FLOAT-tag to DOUBLE-register.
• Writing data from FLOAT-tag to 16-bit register.
• Writing data from FLOAT-tag to 1-bit devices.
• Writing data from FLOAT-tag to UNSIGNED register.
• Writing data from LONGANA to UNSIGNED register.
• Writing data from FLOAT-tag to BCD register.
• Writing data from LONGANA to BCD register.
This feature allows a configuration where several PLCs may use same table. The value of the
message tag configured in the field PLC Name by tag, available in the Read Header table and
the Write Header table, determines which PLC to use.
When the MECOM driver starts there must be a value in this message tag. It is highly
recommended to use a specific default value for that tag.
However, if the tag is empty at start-up, a default value from the configuration will be used, a
value from the field PLC Name. If several tables use the message tag, there is no protection
against configuring different values in the fields PLC Name. The MECOM driver may select
Trigger Limitations
A task in the FactoryLink environment can only receive one change signal for a tag each time
it is changed. This means that it is impossible for the same MECOM task to:
• Use the same trigger tag for different tables when at least one of the trigger types are
CHANGED, RISE or FALL.
• Use a tag with condition “write if changed” in a table combined with the tag as trigger tag
for any kind of table, or the tag as data in another write table.
• Use a tag both read and written to the same PLC and the same register as trigger tag for any
kind of table.
If this functionality is required, use several MECOM tasks (may not always be possible).
Table Limitations
There are some table limitations to consider, especially when converting a large application
from another communications driver.
• A read / write table can’t contain more than 1000 lines.
• Use tag arrays, or more tables, to avoid this limit.
• One MECOM task can’t have more than 500 read or write headers (tables).
• Use tag arrays, PLC Name by Tag, Wild card tables, or more MECOM tasks, if possible, to
avoid this limit.
• Never assume that tags are read / written in any specific order within any table. The order of
processing may change from time to time, depending on the optimization procedures.
• For synchronization purposes, use the completion trigger to determine that all data is
transferred.
Modem Usage
that is used for a remote station since it performs badly when more than one remote station is
used.
The modem remains open until one of the following occurs:
• Hangup delay time-out expires.
• Hangup trigger tag is activated.
• Remote station disconnects.
• A read or write table for another remote station is triggered.
When using modems, it is very important to define the completion status tags and completion
trigger tags. If they are not defined, it is impossible for a user to find out what has really
happened.
To simplify the usage of modem there is a Disable table tag available for each read and write
table. Thus the table can be triggered frequently by a trigger activated by the timer module and
some simple FactoryLink Math&Logic program may select some remote station by enabling
its tables.
If the modem connection is lost, and it is an outgoing call, the modem connection will be
reestablished if the table is triggered.
When modem is used, there may be read tables and write tables without any Remote Name
defined. When these tables are triggered they uses the current modem connection. While these
tables can be activated for any remote station they are called “wildcard” tables. Each time a
wildcard table is used, it is validated against the current PLC. Therefore, a wildcard table may
be used for both FX-CPU and A-CPU communication. Note that only PLC devices that are
common for both PLC types may be used in this case. A wildcard table may only be used after
the modem connection is established.
Modem Status
for modem communication it is possible to define analog tags to get the communication status.
The following status information is available.
0 – OFFLINE
1 – DIALING
2 – ONLINE
3 – HANGING UP
4 – NO CARRIER
5 – LOST CARRIER
For each remote station, it is possible to define a Modem status tag. This tag shows the current
status for the connection to the remote station. Normally this tag is OFFLINE. When a table for
this remote station is triggered the number will be dialled and the status of the tag will be
DIALING. When the modem at the remote station answers, the status of tag is changed to
ONLINE.
If the connection is to be terminated from the FactoryLink side, the status of the tag will be
HANGING UP. When completed, the status of the tag returns to OFFLINE.
If the connection is terminated from the remote side, the status of the tag will be NO
CARRIER. Then the local modem will be hung up and when completed, the status of the tag
will be LOST CARRIER.
If the status of the tag is LOST CARRIER and the Hangup trigger tag is activated, the status
changes to OFFLINE.
Incoming Calls
This function is enabled only if the External callup status tag is defined in the Communication
Task Definition table. The external stations using this feature does not necessarily have to be
defined as remote stations.
If several remote stations are using this feature, they must be accessible in the very same way.
Thus, it must be possible to use the same PLC Name defined in the PLC Definition table.
To be able to access a station calling up there must be at least one read table or write table that
is a wild-card table. It is not automatically known what is calling, there is just a connection. If
any table with a remote station defined is triggered the current connection will be disconnected
and the new number will be dialed.
When calling up FactoryLink, the external stations must be passive. MECOM sets the value
for External callup status tag to ONLINE and the FactoryLink application has to decide what
to do from now on. For example, the tag can be defined as a FactoryLink Math&Logic-trigger
and if the value is ONLINE, a wild-card read table can be triggered for reading information
from the calling station. Another alternative is that a wild card write table is triggered, and
some information is downloaded to the calling station. However, it is recommended that in
some way identification is made of what remote station calling before any data is transferred.
The identification can be done by keeping an identity value in a PLC register that is used by all
PLCs in all remote stations using the external call-up feature.
If the communication port is free, MECOM gets access to the communication port. If the port
is occupied by another program using MELCOM32.DLL, MECOM also gets access to the port
but only if the communication parameters (baud rate, parity, data bits and stop bits) are the
very same.
Before using a modem, the same conditions are necessary from serial communication without
a modem. Several cases may occur when modem is used. Below is a description of what
happens in different cases
1. Modem is free (on hook)
The new number is dialled and communication will be established with PLC.
2. Modem is busy (off hook)
2.1 Modem is used by MECOM
The modem is hung up. Then the new number is dialled and communication with PLC will
be established.
The completion status tag will be set with an error code and the completion trigger tag
will be activated.
Ethernet Communication
If the network adapter is free MECOM gets access to the Ethernet communication. If the
network adapter is occupied by another program using MELCOM32.DLL, MECOM also gets
access to the Ethernet communication.
Trace
It is possible to get trace information from the MECOM driver. The information shown during
normal operation is about triggered tables, called remote stations etc. The information is shown
if the Trace Level tag in the Communication Task Definition table is defined or the driver is
started with the program argument -Tn where n is the requested trace level. The information is
shown in the task window when the Flags “FSR” are set in the System Configuration table.
The following values may be used:
0 – No Trace
1 – Information about what read tables being triggered.
2 – Information about what write tables being triggered.
4 – Information about what PLCs being accessed.
8 – Information about modem connects and disconnects.
16 – Show communication statistics about time, messages, and
transferred bytes. Must be combined with trace level 1 and/or 2.
32767 – All
If more than one trace option is requested at a time, use the sum of the codes for the requested
options.
Messages
All messages created by MECOM may be translated to any language. However the error
messages from MELCOM32.DLL cannot be translated. The translatable messages are
available in MECOM.TXT in the subdirectory MSG. The keywords on the left side of each
row must not be changed. If there are any formatting characters, such as “%s”, in the text, they
must remain unchanged after translation. During operation a string or a value replaces these
formatting characters.
Argument Description
-Adrive: \directory Set application directory. Use only when driver is run
stand-alone
-C[S] How the driver cycles time when anything is triggered. The
value is shown in the system picture when there is no error and
is updated every 5 seconds. If S is specified, communication
statistics also display.
-I Ignore Unreachable PLCs. At startup, MECOM normally
validates all configured PLCs. If a PLC cannot be reached, it is
considered a severe error and the task terminates. This option
makes it possible to continue processing all other PLCs.
MECOM retries to validate the “unreachable PLCs” each time
a related table is triggered, which gives considerable impact on
performance, depending on the configuration, when using
Ethernet TCP/IP ([Q]E71) protocols.
-Lfilename Log errors, warnings, and trace messages to specified file.
During normal operation the file is closed between every write
operation, which makes it possible to view the file while
FactoryLink is running.
-M Skip match test
-R Skip remote validation. This feature can be used when several
Remote Stations (via telephone modems) are configured. In
very large systems with hundreds of remote stations, the
remote validation can take hours to perform. This feature
minimizes the startup time when starting the FactoryLink
application. By using this feature, the application and the
remote stations are not validated at startup, so failing
configuration / communication is not automatically found.
-Tn Set trace level n. Show information during normal operation
about triggered tables, called remote stations.
-V Validate only. Used when driver is run stand-alone.
-W Show warning messages during validation. Error messages
automatically display. This feature can be of help, when
tracking down “strange” behaviors due to configuration
mistakes. Preferably combined with -L and -T, or when stand
alone validating with -V.
-? Displays a brief summary of command line options. No
communication or validation is performed at all. This option is
only useful when MECOM is started as a stand-alone program
(in a DOS/Command window)
C OMMUNICATION G UIDE
C24-Protocol
The switches on the different C24 computer link modules must match the settings of
communication parameters in the Communication Task Definition table. The default setting of
MECOM is 9600,O,8,1, however we strongly suggest that you use 19200,N,8,1 (or higher, if
possible) for speed reasons.
The STATION NO-rotary-switches should be set to the actual station number, if there is a
multidrop configuration. Use 0 if there is only one PLC.
The MODE rotary-switch should be set to position 1 if there is only one PLC. If multidrop is
used, the mode-switch should be set to A on the station the computer is connected to and to 5
on all other stations.
For multidrop configuration, refer to the Computer-Link Module User’s Manual.
Below are examples for some configurations. Please make sure the same settings are used in
the Communication Task Definition table, which is accessed by selecting Mitsubishi
Definition in the Configuration Explorer. Common for the settings are: RS232 port, Sum
Check ON, Mode setting switch set for Format 1 protocol, and finally Write during RUN ON.
AJ71 C24-S8
9600,N,8,1: Switch 12, 13, 15, 21, and 22 ON, remaining OFF.
19200,N,8,1: Switch 12, 14, 15, 21, and 22 ON, remaining OFF.
If a multidrop configuration is used, the switches 23 and 24 should also be set to ON for the
“end” stations, see page 4-8 in the AJ71 C24-S8 manual.
9600,N,8,1: Switch 12, 13, 15, 21, 22, and 23 ON, remaining OFF.
19200,N,8,1: Switch 12, 14, 15, 21, 22, and 23 ON, remaining OFF.
Note: The cable described in the AJ71C24 Users Manual will not work!
C24 PC C24-R2 PC
25 Pins 9 Pins 9 Pins 9 Pins
2 2 3 3
3 3 2 2
7 5 5 7
4 7 7 4
5 8 8 5
6 1 1 6
8 4 4 8
20 6 6 20
CPU-Protocol
Use the serial converter SC05N from Beijer Electronics when communication is done directly
between the host computer and the CPU. When CPU-protocol is used the communication port
settings must be:
The default setting is the same as for the A-CPU protocol. If the setting is different, please
enter the same changes in the Communication Task Definition table, which is accessed by
selecting Mitsubishi Definition in the Configuration Explorer.
If the communication is done through a MAC/MTA/E-terminal in transparent mode, use the
MAC-CAB from Beijer Electronics between the terminal and the CPU. In this case, the
communication parameters may be any values supported by both MECOM and the
MAC/MTA/E-terminal.
Modem Settings
Minimum required settings for the modem parameters at the host side:
• Ignore DTR signal (AT&D0).
• AutoAnswer must be enabled if call-up from external remote station is used (ATS0=1).
• Flow control must be disabled (AT &K0 for Powerbit and AT &H0 for US Robotics).
• CD must follow hook state (AT&C1).
• English Result codes must be used (ATV1).
• Modem timeout for connect must be at about 45 seconds. (The modem timeout must be
shorter than the timeout for MECOM.) (ATS7=45)
Minimum required settings for the modem parameters at the PLC side:
• Ignore DTR signal (AT&D0).
• Command echo off (ATE0).
• Flow control must be disabled (AT &K0 for Powerbit and AT &H0 for US Robotics).
• Modem reply off (ATQ1).
• Number of signals before answer must be at least 1 (ATS0=1).
To increase flexibility on the host side try to isolate line speed (telephone side) from
DTE-speed (PLC side) in the modem at the remote station. This means that it is not needed to
use the same communication parameters (speed etc.) at the host side as at the remote side.
Beijer Electronics offers three terminals that support data logging and modem communication.
They are called MAC 10 CM, MAC 50 CM and CM10. The MAC CM terminals have the
same operator functionality as MAC/MTA/E-terminals. The CM10 is a device without any
operator functionality.
When using a MAC CM terminal the parameter Optimize should be set to “MESS” and the
parameter Timeout, quick should be set to 2000 in the PLC Definition table. The modem must
be initialized to use English result codes and after the modem has sent “CONNECT” at
connect it must be silent.
The cable between the host computer and the local modem should be a straight cable with all
signals connected. Below, there are descriptions of how to configure cables for different
purposes.
AJ71 C24
2 2 3 2
3 3 2 3
7 7 5 7
4 4 7 4
5 5 8 5
6 6 6 6
8 20 1 20
20 4
A-CPU
MAC/RS232 Modem
9 Pins Female 25 Pins Male
2 2
3 3
5 7
4
5
6
20
For FX PLC, use the SC05N signal converter from Beijer Electronics. The cable between
modem and SC05N should be as follows:
Modem SC05N
25 Pins Male 9 Pins Male
2 2
3 3
5 7
7 5
4 8
Ethernet Communication
The switches on the E71 modules should be set as follows. This means Binary
communication (preferred), and Write during run allowed.
The MODE rotary-switches should be set to 0 (OnLine) and the Ethernet/Cheapernet switch (if
any) should be set according to actual cabling.
AJ71E71 (-S3), AJ71QE71, and A1SJ71QE71-B2
Mode 0 (Online)
Switch 7 ON, remaining OFF.
A1 SJ71 E71 (-S3)
Mode 0 (Online)
Switch 3 ON, remaining OFF.
In the PLC there must be PLC-program for initializing and maintaining the AJ71[Q]E71.
Example program / function block for initializing and maintaining the AJ71[Q]E71 can be
downloaded from www.beijer.se.
TROUBLESHOOTING
PLC Errors
Speed
Stability
The software is as resistant as the TCP/IP socket implementation permits against cable
disconnections, and PLC stops/resets.
However, if cables are disconnected at a certain moment (very rare indeed) the TCP/IP
communication can not be re-established through the [Q]E71. When this happens the [Q]E71
must be re initialized by the PLC program. This is not needed for UDP.
When TCP/IP is used, a solution is to use a “heart beat” signal. This is a tag that is set by the
FactoryLink Interval timer module at a rate of your choice and is written to the PLC on the
condition “Write if changed” to a device in the PLC. This device can be used in the PLC
program for resetting at timer and itself when set. If the timer is activated (e.g. after 30 sec.) the
communication connection is lost and the [Q]E71 must be re initialized by the PLC program.
Again, this is not needed when using UDP.
Timeouts
MECOM will automatically try to re-establish the connection to the PLC if a TCP/IP
connection is lost. However, if reestablishment is not possible (e.g. cable is disconnected),
MECOM may be stopped for at about 30 - 40 seconds in a TCP/IP socket interface until a
message about failure returns. When UDP is used, it is only the (normal) user defined
time-outs delaying the driver cycle. So, to minimize the impacts from unreachable PLC
systems, use UDP.
Design Recommendations
In systems with many PLCs, it may sometimes be necessary to disconnect a PLC. This can
decrease performance severely, especially in large systems where TCP/IP are used. In fact, the
MECOM driver will normally not start, if a PLC is “unreachable”. Use these techniques to
make the system handle these cases:
• Use the -I switch (as Program Argument), to let MECOM ignore unreachable PLCs at
start-up. The driver will then try to establish a connection each time a related table is
triggered.
• Avoid having tables triggered more often than necessary. (Sometimes the data from a certain
table isn’t needed at all.)
• Consider using more MECOM tasks. If one task tries to access an unreachable PLC, via
TCP/IP, it will be locked in a 30-40 seconds time-out (compare to UDP below). Other tasks
will continue to run during this period. Consider switching over from TCP to UDP.
• When using UDP/IP, the timeouts can be set at a reasonable low limit, so the impact on
other (reachable) PLC’s throughput is not too big.
• Create a function in the FactoryLink application, where authorized operators can disable
those tables that reads or writes data to or from each PLC. Use the “Disable” feature in the
Read / Write Header. The tags used for disabling the tables should preferably be used also to
make the operators aware, when trying to access the PLC’s data, that it is disabled. Also, the
tags should be configured for persistence, so the system will remember the state of each
disable tag if FactoryLink is restarted.
Files
The following list identifies the installed directories and files. Files marked with (-) are only
used by this product and may safely be deleted without side effects for any other product. Files
marked with (?) may be used by other products from Beijer Electronics, but may safely be
deleted without side effects for products from other vendors.
%FLINK%\AC
• MECOMDEF.AC
• MECOMRD.AC
• MECOMRD.ACR
• MECOMRD.H
• MECOMWR.AC
• MECOMWR.ACR
• MECOMWR.H
%FLINK%\BIN
• MECOM32.DLL
• MECOM*.EXE
%FLINK%\CTGEN
• MECOM.RTM
• MEPLC.CTG
• MEPORT.CTG
• MEREMOTE.CTG
• MECOMRD.CTG
• MECOMWR.CTG
%FLINK%\HELP\EN (Language-specific)
• MERDWR.HLP
• MESERDEF.HLP
• MEREAD.AHS
• MEWRITE.AHS
%FLINK%\KEY\EN (Language-specific)
• ME_BAUD.KEY
• ME_BITS.KEY
• ME_MNET.KEY
• ME_OPT.KEY
• ME_PARI.KEY
• ME_PORT.KEY
• ME_PROT.KEY
• ME_STOP.KEY
• ME_SUBP.KEY
• ME_TRIG.KEY
• ME_TYPE.KEY
• ME_WCHG.KEY
%FLINK%\MSG\EN (Language-specific)
• MECOM.TXT
• MEDXLT.TXT
• MERXLT.TXT
• MEWXLT.TXT
(Language-specific) means that these files may be copied to other language-specific
directories, to support usage with other languages than English. For example, the KEY files
may be copied to %FLINK%\KEY\DE, and the HLP & AHS files copied to
%FLINK%\HELP\DE, and the TXT files to %FLINK%\MSG\DE to support the German
language.
The following files reside in the Windows System directory:
C:\WINNT\SYSTEM32 (NT4)
? BEGEN32.DLL Beijer Electronics General Library
? MELCOM32.DLL Communication library for MELSEC PLC
? MSOCK32.DLL TCP/IP interface for MELCOM32.
Registry Modifications
If the string value named "Task Group Device Interfaces" was found for the key
"HKEY_LOCAL_MACHINE\ SOFTWARE\Siemens\FactoryLink\ Configuration
Explorer\Menus\Node Classes\NC_TASKGROUP" during installation, the substring
",mecomdef,mecomrd,mecomwr" was added to the end of its contents.
This substring can be removed with REGEDIT.
•
•
•
•
OPC Client
O VERVIEW
OLE for Process Control (OPC) is a standard method of interfacing between computer
applications and process control devices. Using standard interfaces established by the OPC
Foundation, vendors of process control hardware and software can use a single method of
communication. With the OPC components installed, FactoryLink can function as an OPC
server or an OPC client.
The OPC Server task enables a FactoryLink application to provide data to other OPC client
applications. The OPC Server task is designed to perform in both a local and network
environment. For information about the OPC Server task, see the External Connectivity Guide.
The OPC Client task enables a FactoryLink application to obtain data from other OPC servers
like a PLC. During configuration, you designate which registered OPC servers to attach to and
then link FactoryLink tags with groups of specific data items within the server.
Upon application startup, the OPC Client task attempts to connect to the appropriate OPC
servers. The task typically starts any OPC servers that are not already active. Once the servers
are running, the task subscribes to each group defined in the configuration tables. The task then
receives OPC items (data) from the servers and writes the data to the appropriate tags.
Tag Groups
Under OPC conventions, data is organized into groups. In FactoryLink, these groups are
defined using either the OPC Browser in the OPC Explorer or using the OPC configuration
tables in Configuration Explorer. You can organize your tag groups in any way.
To achieve the best performance, use these guidelines when creating tag groups:
Group According • It is more efficient to group together tags that have approximately
to Update Rates equal update rates.
• Having tags with update rates of 1 second grouped with tags
requiring only a 3 minute update is not efficient.
Use Fewer • The nature of OPC makes it faster to transmit a large group of data
Groups items rather than many small groups. To take advantage of this
efficiency, try to minimize the number of groups you create.
• Groups should be well defined. Avoid duplicate tag definitions and
duplicate OPC items. This will enable you to reduce the number of
groups defined and the number of update events that occur.
Performance
The OPC server sends group data whenever an item in the group changes, but never any faster
than the defined update rate. For that reason, performance is faster locally than it is over the
network.
OPC E XPLORER
The OPC Explorer provides a user-friendly way to configure the OPC Client task. It allows
you to view OPC items defined in servers and map those items to FactoryLink tags. Typically,
OPC servers allow clients to browse their items. If supported, the OPC Explorer will enable
you to navigate through the servers items and select those you want to bring in to your
FactoryLink application. Once you have selected an item to map, OPC Explorer will allow you
to create a tag to hold the value of that item.
Under OPC conventions, tags are organized in groups. OPC Explorer allows you to define
these groups (each of which must be unique). For example, if you need a group of tags to hold
temperature values, you can use OPC Explorer to create a group named TEMP. Then you can
define the tags that make up this group. Finally, you would use the OPC Explorer to map the
appropriate OPC items to the tags. If the server supports browsing, you can use drag and drop
in the OPC Explorer. If the server does not support browsing, you must manually enter the
OPC item names.
In the context of the OPC Explorer, all tags must be contained within a Tag Group. Once the
group is connected, server items can be attached or changed through the Tag Properties dialog
box. For information about using the OPC Explorer, see the OPC Explorer Help.
You can start the OPC Explorer from Configuration Explorer or from a command line.
• From Configuration Explorer:
In your server application, open Device Interfaces > OPC Explorer.
• From a command line:
opcexplorer \a [drivename]: {flapp}
where:
{flapp} is the path to your FactoryLink application directory.
Accessing
Device Interfaces > FactoryLink OPC Client > OPC Server Definition
Field Descriptions
Accessing
Device Interfaces > FactoryLink OPC Client > OPC Server Definition > “OPC Server name” > Tag
Definition
Field Descriptions
Quality words are received from the OPC Server and represent the quality state for a item’s
data value. When the OPC Server updates an item registered by the OPC Client, it passes the
client a value, timestamp, and quality flag for that item. The lower 8 bits of the quality word
are defined by the OPC Foundation standard. The upper 8 bits are reserved for vendor use.
Because the FactoryLink OPC Server cannot run without being connected to the real-time
database, the quality value returned is always 0x00C0 or GOOD. The Standard Quality Codes
are defined in the OPC Foundation Specification.
The value of an OPC item is contained within a Microsoft data construct known as a variant.
The variant can contain a value of a variety of data types. Furthermore, the variant can contain
an array of values of these data types.
The OPC specification explicitly supports variants and arrays of the following data types:
Boolean (VT_BOOL), unsigned character (VT_U1), signed short (VT_I2), signed long
(VT_I4), float (VT_R4), double (VT_R8).
When an OPC item’s value is an array, the array is held by another Microsoft data construct
known as a SAFEARRAY. The SAFEARRAY has the following properties:
• 65535 maximum dimensions (x[0][0] is an array of 2 dimensions)
• Indices per dimension can range from -2147483647 to 2147483647. As such, the maximum
number of tags per dimension is 4294967295.
• The lower bound is unique per each dimension. For example, one dimension might have
lower bound of 0, while another dimension might have a lower bound of -1.
Given the above properties, array-typed OPC item values are potentially very large and could
be quite uniquely organized.
A tag is a single value of type Digital (Boolean), Analog (signed short), Longana (signed
long), or Message (string). (The Mailbox type tag is not applicable to the OPC Client task.) A
tag array is a collection of one of the supported tag types. The properties of a tag array are:
• 5 maximum dimensions. The dimension string must be less than or equal to 16 characters in
length ([0][0] has a length of 6 characters).
• Indices per dimension can range from 0 to 65534, but the total count of tags across all
dimensions cannot exceed 65534 tags.
• The lower bound of a dimension is always 0.
It is simple to map items where a tag array definition is equivalent to the array-typed OPC item
value contents. As seen in the figures below, each value of the array is mapped to a tag with
matching indices.
Figure 6-1 Single Dimensional Array Mapping
Tag Array OPC
A[0] — A[4] Item A
[0] [0]
[1] [1]
[2] [2]
[3] [3]
[4] [4]
[0][0] [0][0]
[0][1] [0][1]
[1][0] [1][0]
[1][1] [1][1]
[2][0] [2][0]
[2][1] [2][1]
For the above cases, the mapping is intuitive. For best results, users should always configure
their FactoryLink application such that the tag definition matches the organization of the
associated array-typed OPC item.
Some cases where the array-typed OPC item’s value will not be written to a tag array are as
follows:
• Different number of dimensions.
• Different length of one or more dimensions.
• Non-zero dimension lower bound for any of the dimensions.
If any of these parameters differ between the received array-typed OPC item’s value and the
FactoryLink tag array definition, the value is not written to the real-time database and an error
is sent to the status tag and the log file (if enabled).
Tag arrays are always written to an array-typed OPC item as an array organized according to
its tag definition. The OPC server determines how to manage mismatched array writes to its
array tags. Nevertheless, write errors to OPC items, for this array case or any other, will
continue to be recorded in the status tag/log files.
2. Read one or more individual tags as a single the array of values to send on to the OPC
Server’s OPC item.
This treatment of the tag array as an atomic set of values significantly affects how the OPC
Client operates, especially when write on exceptions functionality is enabled.
The NATIVE OPC Type must be used when addressing a VT_ARRAY type. (Selecting a
individual data type such as digital or analog will cause the add item to fail.)
Given the configuration shown in Figure 6-3, the following run-time behavior occurs:
Row Analysis
1 Given singular tag lana_tag1 and singular OPC item i4_item1, single values are
transferred across the association.
2 Given singular tag lana_tag2 and array-typed OPC item i4_array_item1, single
values are likely a configuration error. The OPC client will be unable to write the
OPC item’s array of values to a single tag. It is undefined as to how the OPC
server would react to receiving a single value written to its array-typed OPC item.
3 Given array-member tag lana_tag2 and singular OPC item i4_item2, single values
(at the explicitly configured tag array index, in this case "[0]"), are transferred
across the association.
4 Given array-member tag lana_tag2 and array-typed OPC item i4_arra_item2, an
array of values is transferred across the association. The particular tag indices
referenced do not matter for this case, as the entire array will be mapped.
P ROGRAM A RGUMENTS
Argument Description
-d Prints debug information of all levels in Shared domain
-l<#> Logs a specific level of debug information to the
OPC_Client log file (# = 1 to 9)
-x<#> Logs a specific level of debug information to the log
file (# = 1 to 9)
TROUBLESHOOTING
Configuration Issues
Errors associated with the OPC Client task are often caused by problems with the OPC server
configuration. In general, ensure that the OPC server you are attempting to attach to is
operating properly.
Error Messages
•
•
•
•
OPC Data eXchange (ODX)
O VERVIEW
The OPC Data eXchange (ODX) driver supports communication between the FactoryLink
database and one or multiple OPC Servers. The idea is to mirror PLC data by intelligible OPC
items reflecting, for example, the PLC address in its names in order to be decoded and
conditioned, for any RAPD driver. There are hundreds of OPC Servers available for any PLC
make or bus system as CAN, LON, BacNet, Fieldbus, Interbus, Modbus, Profibus and so forth.
And, together with VRN you can set up a Redundant System. Data is conducted to and from
Enhanced Communication Interface (ECI) by using the Intertask Mail eXchange (IMX)
interface.
Ø OPC Server(s)
External Device(s), PLC(s)
COM/DCOM Network
Accessing
Device Interfaces > ODX OPC Data eXchange > ODX OPC Server Connection
Field Descriptions
Type of configuration:
1) Emulation of RAPD
and EDI Drivers: use
ECI Decimal Converter
2) OPC Specific
Configuration: use
ECI/OPC Item Converter
OPC-Specific Configuration
OPC Items are specified in ECI/OPC-specific tables, while datasets are automatically created.
This method accepts any OPC item naming and supports these standard OPC attributes. For
detailed information, refere to your ECI guide.
Accessing
Device Interfaces > ODX OPC Data eXchange > ODX OPC Server Connection > “table name” >
ODX ECI Object Reference
Field Descriptions
Examples:
[PLC] – specifies items [PLC]Item1...[PLC]ItemX.
This syntax is useful because you do not need to enter full
names.
PLCName+Area+WordAddr+Length.
Allen-Bradley typical item name = [PLCName]N15:3,L2
Siemens S7 typical item name =
S7:[ConnName|VFDName|AccessPoint]DB15,B3,2
First Elem (Required when emulating RAPD or EDI drivers by a
Addr ##:i standard ECI Object table) Specifies the first tag address
of the dataset for this ECI Object.
You must set the Tag Size (Boundary) in the Rd/Wr Mode
column of the ECI Control table to H1, L1, H2, L2, H4,
or L4.
ArrayElem or (For emulating RAPD or EDI drivers only) Number of 1 to 65500
{Items} tag arrays of a single item or array item, or the number of
items if multiple items shall represent a dataset or part of
it.
ECI Read Interval ECI Read Trigger or ODX Control Tag Used ODX Auto Refresh at
Change/Continuous Function RDTRIGG as Refresh Trigger Startup or Link Enable
Fast/Slow Update Rates Auto Fast Update Yes, if forced to when Yes
for OPC Servers selection at fast polling using Function Mux=
ECI Read Interval ECI Read Trigger or ODX Control Tag Used ODX Auto Refresh at
Change/Continuous Function RDTRIGG as Refresh Trigger Startup or Link Enable
Automatic Fast/Slow Standard Poll Trigger No No
Polling Interval
Normally, polled or refresh data is read from an (external) device unless Function RdCache is
applied. For either case, data is transmitted asynchronously at the rate(s) entered to the ECI
Read Interv Ch/Cont column, or when triggering the ECI Read Dataset IdxTag or any other tag
if ECI Function RDTRIGG is applied.
ECI allows data to be updated slowly in order to unburden communication. At an Object I/O
change it may be updated more quickly for fast reaction. Therefore, ECI accepts two intervals
separated by a slash, for example, 0.7/12 [s] for FastUpdate=Read Interval after Change and
SlowUpdate=Read Interval Continuous. The FastUpdate rate 0.7 [s] is activated whenever an
Object I/O has been changed. It shall be adjusted to approximately the time required to send
data to the external device. The SlowUpdate rate 12 [s] is used for continuous updating.
Note: A Read Interval Continuous must be entered to ECI (SlowUpdate rate) for the
read OnChange method, or it can be used to replace the continuous Polling by the
Interval Timer task.
ODX ECI Object Reference Table for Communication Object *TAB1 that is transmitted in a
redundant system to the local and/or partner station through VRN:
This setup is applied for any ECI-based RAPD driver. For ECI/OPC specific tables simply
omit the Rd/Wr Ds Idx. However, ensure that the ECI/OPC Control tables are the same on
either system.
If you do not want to control the ODX driver by the VRN Tandem Status, replace above
TASKSTART_S[x] tag by a unique tag. In any case, VRN must run for data exchange between
ECI and ODX while the mailboxes of ECI (EciRmbx/EciWmbx) and ODX
(OdxRmbx/OdxWmbx) must be different.
Performance Considerations
Note that ODX supports OPC ItemArrays representing, for example, a complete PLC
DataBlock by a single item that provides best transmission performance at very little
configuration.
The Read OnChange method may be described as unsolicited read of changed items (events) at
a specified rate (interval), initiated by subscription to the server. Therefore, if you wish to
measure performance, you must set the ECI Read Interval as short as possible and constantly
change the OPC items to be read. Note that an OPC Server might take an undesirable high load
when setting the ECI read interval to zero.
However, ODX allows for polling that may be compared to triggered block read. This method
is generally less productive. It uses the ECI’s read dataset IdxTag as a trigger that may be
forced constantly ON and set the Read Prio = Poll1 in order to read data as fast as possible.
The above conditions should be considered when testing the performance by the number of
telegrams and bytes transmitted using statistics read as shown for the Sample Configuration
above. Note that the number of bytes indicated represents data values only and does not
include the timestamp/quality that is 10 bytes per item. It shows data transmitted by (D)COM
without any overhead nor any data sent through IMX.
Troubleshooting
The idea of employing OPC Server(s) is not only for standardization, but also to keep PLC
communication within the domain of the PLC driver experts. Often, the add-on board and the
OPC Server, including the device driver and configuration tool, are supplied by the same
manufacturer, which should minimize possible bottlenecks. However, the OPC interface is
standardized, and the IMX interface to FactoryLink is well tested and runs in many
applications. A great deal of set-up communication is therefore related to the OPC Server
instructions by the supplier, which, if strictly followed, will provide a successful installation. If
the OPC Server, the underlying network, and the PLCs are properly installed and set up, ODX
should work without a problem. Check the following items before calling for support on ODX:
Data translation methods: Emulation of RAPD and EDI drivers and OPC-Specific
Configuration.
P ROGRAM A RGUMENTS
The parameters below can be entered directly with a leading dash in the Program Arguments
column of the System Configuration table. Argument names are not case sensitive. You may
reference a file in order to enter the desired parameters there. In this case the file name must be
specified without a dash in the Program Arguments column. Use brackets {...} for environment
variables and/or pathnames as required, for example, {flapp}\ODX_para.run.
Argument Description
-VMode=<#> Verbose Mode level (0 to 1023) for debugging and logging
information to file {FLAPP}\SHARED\LOG\ODX.LOG for the
main task and to an individual file
{FLAPP}\SHARED\LOG\ODX?_[NodeName]ServerName.LO
G for each connect (thread).
The wildcard ?=1..x in the file name identifies the line number in
the ODX Server Connection table. The level is identified as the
sum of binary values, each enabling a log action to display.
0 = No logging (default)
1 = ODX Server state changes
2 = ODX Status messages
4 = OPC Connection, Group and Item handling errors
8 = Configuration Table Read information (ODX.LOG only)
16 = Database Change_Read information
32 = Memory management information
64 = All internal Function calls
128 = Read Mailbox information ODX_ECI (–DRMbx in ECI)
256 = Write Mailbox information ECI_ODX (–DWMbx in ECI)
512 = Additional OPC Connection debugging
1023 = Enables all actions. Note: Entering this value may overfill
the hard disk.
-Alive=<#> Alive check timeout in seconds to supervise connections
(watchdog) if no data is transmitted. (default = 10)
-SimReq=<#> Maximum number # of simultaneous (asynchronous) read
requests processed per connect. (default = 5)
-Mux=<#> Multiplexer: the number specifies the value to which a possible
Link Control Tag must be set to enable the link. (default = 0)
A non-matching value stops transmissions while the link
remains active (standby).
A sample file is on the installation media and may look like the following:
Error Bit Server Connect Status Nibble N1 ODX Connect Status Nibble N0
Bit8 (256) Bit7 (128) Bit6 (64) Bit5 (32) Bit4 (16) Bit3 (8) Bit2 (4) Bit1 (2) Bit0 (1)
Error Status Ana
Tag Val Connect Dis- Server Server Server Connect Connect Connect Connect
Error Connect Status 4 Status 2 Status 1 Disabled Running Starting Active
Inactive 0 0 0 0 0 0 0 0 0 0
Active/Starting 3 0 0 0 0 0 0 0 1 1
Active/Running 21 0 0 0 0 1 0 1 0 1
Active/Test 85 0 0 1 0 1 0 1 0 1
Active/Disabled 25 0 0 0 0 1 1 0 0 1
/Run
Active/Disabled 89 0 0 1 0 1 1 0 0 1
/Test
Link Terminated 128 0 1 0 0 0 0 0 0 0
Error/Enabled 256 1 0 0 0 0 0 0 0 0
/Lost
Error/Enabled 288 1 0 0 1 0 0 0 0 0
/Failed
Error/Ena 304 1 0 0 1 1 0 0 0 0
/NoConfig
Error/Ena 320 1 0 1 0 0 0 0 0 0
/Suspended
Error/Disabled/ 264 1 0 0 0 0 1 0 0 0
Lost
Error/Disabled/ 296 1 0 0 1 0 1 0 0 0
Failed
Error/Dis/ 312 1 0 0 1 1 1 0 0 0
NoConfig
Error/Dis/ 328 1 0 1 0 0 1 0 0 0
Suspended
Connect Active/Starting 3 0 0 0 1 1
Connect Active/Running 5 0 0 1 0 1
Connect Error/Disabled 8 1 1 0 0 0
ConnectActive/Disabled 9 0 1 0 0 1
(Hot-Standby)
Server RunningOPC_SERVER_RUNNING 1 0 0 0 0 1
Server FailedOPC_SERVER_FAILED 2 1 0 0 1 0
Server NoConfigOPC_SERVER_NOCONFIG 3 1 0 0 1 1
Server 4 1 0 1 0 0
SuspendedOPC_SERVER_SUSPENDED
Server TestOPC_SERVER_TEST 5 0 0 1 0 1
Label in ODX.TXT 6xx/7xx Transmission Errors reported to ECI Task Message Tag (info)
(hhh)
E_XMIT_RD_0258 600 No Read Response, Timeout OPC Group/Item configuration errors or general
communication errors as for example link not
E_XMIT_RD_0259 601 Invalid Read Dataset/Group
completely established
E_XMIT_RD_025A 602 Empty Read Dataset/Group
E_XMIT_RD_025B 603 No Read Connection
E_XMIT_WR_02C6 710 Writing Item "%s" OPC data type may not be supported by ODX
E_XMIT_WR_02C7 711 Writing ItemArray "%s" System errors, please notify error to Siemens
E_XMIT_WR_02C8 712 Writing Dataset/Group
E_XMIT_WR_02C9 713 Writing ItemArray Offset>0 "%s" OPC cannot write to specific Array Tag
E_XMIT_WR_02CA 714 Writing Unknown Item ECI Tag Address may be out of range
E_XMIT_WR_02D0 720 Write AcknErr 0x%08.8lX, Errors transmitted with acknowledge, for code.
Dataset/Group See OPC interface specification OPCError.h
E_XMIT_WR_02D1 721 Write AcknErr 0x%08.8lX, Item "%s"
If you receive the following error message when running ODX_INIT, you need to break the
dataset referenced in the error into two or more tables. The ODX/ECI OPC Reference table is
limited to 64K maximum data size:
FATAL: Dataset “OPC_TABLE1” size of 900200 bytes exceeds maximum (65535) ODX_INIT: 1
ERRORS
•
•
•
•
SECS/HSMS (SDRV)
Communications
O VERVIEW
This chapter contains information needed to set up and configure bidirectional
communications between the FactoryLink real-time database and one or more SECS (SEMI
Equipment Communication Standard) Protocol devices. SECS Communications support the
SECS-I and SECS-II serial RS-232 protocol as well as the HSMS TCP/IP protocol. This SECS
driver makes use of a low level library from GW Associates, specialists in SECS
communications.
Note: This presentation assumes you are knowledgeable of the SECS protocol as
defined in the SEMI Specification, the SECS equipment the driver communicates with,
and FactoryLink configuration.
Installation
Set the environment variable GWASDRDIR equal to:
<FLINK>/bin/sdr-140 for serial communications
<FLINK>/bin/sdr-170 for HSMS communications
For Windows, also include this in your path.
Accessing
Device Interfaces > SECS/HSMS Communications > SECS Logical Device Control
Field Descriptions
Accessing
Device Interfaces > SECS/HSMS Communications > SECS Logical Device Control > “logical port”
> SECS Logical Device Information
Field Descriptions
Accessing
Field Descriptions
Accessing
Device Interfaces > SECS/HSMS Communications > SECS-II Message Definition Control
Field Descriptions
• When reading a file, specify FNAME as the ITEM TYPE for the body of the file. In the
TAG field on this line, put a message tag that contains the path and filename where you
want the file to be stored.
• When writing a file, specify FN_xx as the ITEM TYPE for the body of the file, where xx
refers to the type of data the file is made up of. For example, for an ASCII file, specify
the ITEM TYPE as FN_A, or a binary file stored as 4 byte unsigned integers would be
specified as FN_U4. A complete list of supported file types is listed later in this section.
In the TAG field on this line, put a message tag that contains the path and filename where
the file is stored. In the case where it is necessary to send the size of a file (S7F1, for
example), specify the ITEM TYPE as FSIZE. In the tag field on this line, put a message
tag that contains the path and filename where the file is stored and the driver will
determine the size of the file.
• Secondary messages: When the driver receives a primary message, it will automatically
attempt to send the corresponding reply, or secondary message, if it is configured in the
message table. For example, if an S1F1 is received, the driver automatically sends the S1F2
reply, assuming it is correctly configured in the message table. This is true for all primary
messages received. An error message will be return if the corresponding secondary message
does not exist in the table.
• Parsing: In some cases, the driver will receive a message, and the application will require
only a few pieces of data from it. In this case, it is possible to specify exactly which data
tags, or even parts of a specific data tag, are to be stored by specifying exactly where in the
message the data is. A special syntax is used to specify where in the structure each piece of
data is. If parsing is used on any one tag on the message, it must be used on all tags in that
message.
• The syntax specifies the item in the list to store. In the case of a nested list, a period ‘.’ is
used to separate the two digits. Typically, there will be several of these strung together.
For example: 1.3.1.2.4 would specify the 4th item in a multiply nested list. The first item
is a list header (1), the third item in that list is another list header (1.3), the first item in
that list is yet another list header (1.3.1), the second item in that list is another list header
(1.3.1.2), and the driver is to retrieve the fourth item in that list (1.3.1.2.4). This example,
if used on the S6F11 message listed below, would return a value of 246.
• Also, if the desired field is an ASCII string, it is possible to only retrieve part or all of the
string by adding a ‘:X,Y’ to the end of the parse string. In this syntax, X refers to the
starting position and Y refers to the number of bytes to be stored. For example:
1.3.1.2.3:6,5 on the S6F11 below would return “speed”. If the X is omitted, then the
starting position is 0 (1.3.1.2.3:,4 on the message below would return “High”). If the Y is
omitted, then the remainder of the string starting at X will be stored (1.3.1.2.3:11, on the
example message below would return “SECS”). If neither are specified, the entire tag
will be stored (1.3.1.2.3: would return “High speed SECS”).
S6F11
<L [ 3] 1
<U2 0> <U2 0> 1.1:
<U2 1> /* CEID * / 1.2:
<L 1.3
<L [ 2] 1.3.1
<U2 1> /* RPTID * / 1.3.1.1:
<L 1.3.1.2
<I2 135> /* Data * / 1.3.1.2.1:
<U1 357> /* Data * / 1.3.1.2.2:
<A “High speed SECS”> 1.3.1.2.3:
<U4 246> /* Data * / 1.3.1.2.4:
<U4 468> /* Data * / 1.3.1.2.5:
<U4 802> /* Data * / 1.3.1.2.6:
>
>
< L [ 2] 1.3.2
<U2 2> /* RPTID * / 1.3.2.1:
<L 1.3.2.2
<I2 -7> /* Data * / 1.3.2.2.1:
<U1 4> /* Data * / 1.3.2.2.2:
<U4 321> /* Data * / 1.3.2.2.3:
<U4 123> /* Data * / 1.3.2.2.4:
<U4 99> /* Data * / 1.3.2.2.5:
<U4 100> /* Data * / 1.3.2.2.6:
>
be sent. For each stored tag in the repeated structure, use a tag array to store the data in
the RTDB. The maximum number allowed is required to keep from overrunning the
array bounds on the tags used to store the data, so be sure that the number is less than or
equal to the size of the array.
• Complex, nested repeat blocks can also be used. Several examples are provided at the end
of this section.
• Inquire/Grant: For large, out-going messages using the inquire/grant message scheme (for
example, S7F1, S7F2, S7F3 sequence), it is possible to configure the SECS driver such that
triggering the inquire (S7F1) followed by receipt of the grant message (S7F2 with grant
code = 0) automatically sends the primary message (S7F3).
• Specify INQGN in the Read/Write field for the inquire message and indicate the main
messages primary function number in the INQGN/CONxx or Repeat Data field. The
main message is sent automatically on successful grant without processing necessary at
the application level. If the grant code > 0, the main message will not be sent.
Accessing
Device Interfaces > SECS/HSMS Communications > SECS-II Message Definition Control > “table
ID” > SECS-II Message Definition Information
Field Descriptions
E XAMPLES
1. Simple messages: The following are two common and simple message transactions. After
each message is the corresponding SECS-II Message Definition Information Table entries.
In both cases, the tables are filled out from a HOST-configuration point of view.
Host Initiated S1F13 (Establish Communications Request):
S1F13 W
< L> .
Equipment Response S1F14:
S1F14
<L [ 2]
<B 0>
<L
<A 'ABC123'>
<A '020100'> >
>
>
2. Complex and Parsed Messages: The following example illustrates a common message
that uses the parsing functionality. The first configuration shows the entire message entered
into the configuration table, this illustrate a more complex message configuration. In the
second configuration, the same message is being read, but this time, only the necessary tags
are configured in the table, and the parsing string specifies the exact location on the tag.
• In this configuration, if the incoming S6F11 is from CEID 1, the data will be collected in
the first structure. If the incoming S6F11 is from CEID 2, the data will be collected in the
second structure. For any other incoming S6F11, only the CEID will be collected, as
shown in the third S6F11 configured in the table. Note that for all these cases, only one
S6F12 response is required.
S2F33 W
<L [2]
<U2 1234> /* DATAID */
<L
>
>
Equipment Response S2F34:
S2F34
<B [1] 00> /* DRACK */
<L
<L [2]
<U2 1> /* RPTID */
<L
<U2 12> /* VID */
<U2 13> /* VID */
>
>
>
Equipment Response S2F34:
S2F34
<B [1] 00> /* DRACK */
• Note that for each primary S2F33 configured using differing message ID’s, a
corresponding secondary message is configured with the same message ID. This must be
true, even though the secondary message is the same in this case.
Only looking at the fields involved in the repeat block, it is easier to illustrate how the syntax
would be expanded. The following example
INQGN, CONXX, or
Tag Name Item Name Item Length Repeat Data
List 1 10
EqPPID[0] UINT4
INQGN, CONXX, or
Tag Name Item Name Item Length Repeat Data
List 1 10
EqPPID[0] UINT4
EqPPID[1] UINT4
EqPPID[2] UINT4
EqPPID[3] UINT4
EqPPID[4] UINT4
EqPPID[5] UINT4
EqPPID[6] UINT4
EqPPID[6] UINT4
EqPPID[7] UINT4
EqPPID[8] UINT4
EqPPID[9] UINT4
• Note that the data is stored in an array, with the index into the array being incremented by
the driver. MAKE SURE THE ARRAY IS LARGE ENOUGH TO HANDLE THE
REPEAT BLOCK.
Only looking at the fields involved in the repeat block for the read of the secondary message, it
is easier to illustrate how the syntax would be expanded. The following example
INQGN, CONXX, or
Tag Name Item Type Item Length Repeat Data
LIST 1 5
LIST 3
EqSVID[0] UINT2
EqSVName[0] ASCII
EqSVUnits[0] ASCII
There will occasions where a nested repeat block will be necessary. In the next example, the
reply message contains a variable list of process programs. One tag in that list is another
variable list containing all the material ID’s to be processed using that process program. Note
how the repeat blocks are nested in the configuration table, but be sure to read the warning
note below the table!
Host Initiated S7F9 (Process Program/Material Matrix Request):
S7F9 W
Equipment Response S7F10
S7F10
<L
<L [2]
<A “Program1”> /* PPID */
<L
<A “LOT00001”> /* MID */
<A “LOT00002”> /* MID */
<A “LOT00003”> /* MID */
>
>
<L [2]
<A “Program2”> /* PPID */
<L
<A “LOT00099”> /* MID */
>
>
<L [2]
<A “Program3”> /* PPID */
<L
<A “LOT00601”> /* MID */
<A “LOT00602”> /* MID */
>
>
>
• WARNING! The above example illustrates how a nested repeat block can be entered into
the driver, but also illustrates a common mistake that can be made when using nested
repeat blocks in this driver! By looking at the expansion for this configuration, note that the
first index in the EqMID array IS NOT INCREMENTED! The driver has no way of
knowing when to increment the first index, so it keeps incrementing the second index.
Only looking at the fields involved in the repeat block for the read of the secondary message, it
is easier to illustrate how the syntax would be expanded. The following example
INQGN, CONXX, or
Tag Name Item Type Item Length Repeat Data
LIST 1 4
LIST 2
EqPPID[0] ASCII 0
LIST 1 5
EqMID[0][0] ASCII 0
INQGN, CONXX, or
Tag Name Item Type Item Length Repeat Data
LIST 3
LIST 2
EqPPID[0] ASCII 0
LIST 5
EqMID[0][0] ASCII 0
EqMID[0][1] ASCII 0
EqMID[0][2] ASCII 0
EqMID[0][3] ASCII 0
EqMID[0][4] ASCII 0
LIST 2
EqPPID[1] ASCII 0
LIST 5
EqMID[0][5] ASCII 0
EqMID[0][6] ASCII 0
EqMID[0][7] ASCII 0
EqMID[0][8] ASCII 0
EqMID[0][9] ASCII 0
LIST 2
EqPPID[2] ASCII 0
LIST 5
EqMID[0][10] ASCII 0
EqMID[0][11] ASCII 0
EqMID[0][12] ASCII 0
EqMID[0][13] ASCII 0
EqMID[0][14] ASCII 0
LIST 2
EqPPID[3] ASCII 0
LIST 5
EqMID[0][15] ASCII 0
EqMID[0][16] ASCII 0
EqMID[0][17] ASCII 0
EqMID[0][18] ASCII 0
EqMID[0][19] ASCII 0
P ROGRAM A RGUMENTS
Argument Description
-B<#> The number of buffers allocated by the SDR daemon. Each buffer
represents 256 bytes.
The # is the number (maximum of 4000) of low-level buffers
allocated by the SDR daemon. If missing or less than 10, 200 buffers
are allocated.
-D SDR Library API calls displayed on the screen. SDR Library API
calls are written to FLAPP/sdrv-log.dat (default).
-D:F<#> The # indicates the file where the SDR Library API calls are written.
-L Additional data for repeat blocks and parsing is displayed on the
screen or written to the file specified by D:F.
TECHNICAL N OTES
Application Specific
Commands
Command Trigger and Command Value are analog tags. The Command Trigger defines the
Command Type and the Command Value contains an optional argument for the Command. At
present, the only Command Trigger value defined is 1, which sets the On Line/Off Line status.
The desired affect is stored in Command Value: 1 for On Line and 0 for Off Line. Additional
features may be added in the future.
In some situations, a piece of SECS equipment may send bursts of messages to FactoryLink.
To ensure individual processing of each message (avoiding database tag information from
being overwritten before processed), a message overrun feature is available. For messages
where this may be a problem, enter YES in the Auto Read Disable field of the SECS II
Message Definition Information table and specify a control tag in the appropriate Read Disable
Field of the SECS Read/Write Control table. When a message is read in with this feature
enabled, the FactoryLink database tags are updated and any further message processing by the
driver on that logical device halts until the Read Disable Control tag is set back to 0. When the
driver is in a halt mode, the SECS interface is still operational, buffering up any messages sent
to FactoryLink.
E RROR M ESSAGES
Startup Messages
Message Cause
sdrv_insufficient_memory System has insufficient memory to create run time tables.
sdrv_port_enable XX - YY XX is the Device ID and YY is the error code.
sdrv_device_enable XX- YY XX is the Device ID and YY is the error code.
bad_open_sdrv_CTs Invalid or missing configuration tables.
bad_open_path_SDRCONF1.CFG Default path or path specified is invalid.
wrong_sdrv_task Use sdrv_eth.exe for HSMS and sdrv_232.exe for SECS.
sdrv_dup_port XX Duplicate definition for port number XX.
sdrv_dup_deviceID_port XX A duplicate device ID was entered for port XX.
sdrv_dup_device XX Duplicate definition for logical device XX.
msg_def_table_not_found - XX The specified entry in the Message Definition Control table was
not found in the Message Definition Information table.
Invalid_Parse_String See Technical Notes for Parse string formats.
sdrv_start_invalid error code - 17 Previous sdrshmid file exists (delete and restart).
sdrv_configure GWAS directory has to be included in the path.
Run-Time Messages
Message Cause
stream_function_not_found - XX S:F:M A message was triggered that is not defined in the Message
Definition Information table.
XX - device ID, S - stream, F - function, M - message ID.
no_resp_defined - XX S:F:M A received message had a conditional that was not met.
XX - device ID, S - stream, F - function, M - message ID.
stream_function_not_found - response A message was received that required a response but the response
- S:F:M message is not defined in the Information table.
S - stream, F - function, M - message ID
fname_not_valid Message tag contained a zero length string or the file open failed.
•
•
•
•
Unity Pro Browser
The Unity Pro Browser is a configuration tool that gives the user an easy way of configuring
FactoryLink tags based on the Schneider Electric Unity Pro variables. This is done by directly
connecting to a Unity Pro project or by importing a Data Exchange export file.
The Unity Pro Browser has filters to help you manage the variables. You can view any of the
following filters or a combination of them:
• Variables added since the last synchronization with Unity Pro
• Variables with definitions in FactoryLink that were modified in Unity Pro since the last
synchronization
• Variables deleted since the last synchronization
• All variables configured in FactoryLink
• Variables previously marked as not needed by FactoryLink
O PERATING P RINCIPLES
A developer uses Unity Pro to develop the PLC application and uses the Unity Pro Browser to
configure the SCADA-related operations. The following illustration shows the two methods
you can use to create FactoryLink tags from Unity Pro. In one method, you can connect to a
Unity Pro project (.STU file) to add variables and to create FactoryLink tags. In another
method, you can import the variables from a data exchange file (.XSY file). In this case, you
cannot add new variables or modify the Unity Pro project.
(static)
Importing
Variables
.XSY
.XSY
ODX Client
OFS
Configuration
Tool
OFS Server
L INKING TO U NITY P RO
There are two ways to configure FactoryLink tags based on the Unity Pro variables. You can
either add Unity Pro variables into a FactoryLink application from an STU project or import
them from an XSY file.
1 In your server application in Configuration Explorer, open Device Interfaces > Unity Pro
Browser.
2 Click the appropriate icon either to add a Unity Pro project from an STU file or to import a
project from an XSY file.
3 In the Project Properties dialog box, set the information used to connect to Unity Pro and load
the project.
When the project is loaded, the Unity Pro variables appear in the tree.
Filters FactoryLink tag configuration
Opens
STU file
Imports
XSY file
Unity Pro
project
Unity Pro
variables
For detailed information about configuring tags, adding variables, and understanding the user
interface, see the Help in the Unity Pro Browser.
P ROGRAM A RGUMENTS
The Unity Pro Browser can run from a command line. The FLINK and FLAPP environment
variables must be set or the values must be specified in the command.
upbrowser [args]
Argument Description
/A{FLAPP} Identifies the drive and directory for the application
/P{FLINK} Identifies the FactoryLink software directory