Download as pdf or txt
Download as pdf or txt
You are on page 1of 18

FactoryTalk View SE Runtime Editing Considerations

Details on runtime edits that can be performed with FactoryTalk View SE

This document provides best practice


recommendations on how to edit a
FactoryTalk View SE distributed system
during runtime.

Version 1.1
July 2012
FactoryTalk View SE Runtime Editing Considerations v1.1
July 2012 Page 2 of 18
Table of Contents

Introduction ............................................................................................................................. 4
Scope........................................................................................................................................ 4
Glossary of Terms................................................................................................................... 4
Architecture ............................................................................................................................. 5
Runtime Edit Classifications ................................................................................................. 6
Performing Runtime Edits in Non-Redundant Systems ..................................................... 6
Performing Runtime Edits in Redundant Systems ............................................................. 7
HMI Alarm Synchronization..........................................................................................................8
Replicating changes from the Primary to the Secondary HMI server ...........................................8
Advanced Editing Tips .................................................................................................................8
Editing Guidelines................................................................................................................... 9
Table 1: FactoryTalk View SE Runtime Edits (Immediate) ..................................................9
Table 2: FactoryTalk View SE Runtime Edits (Action Required) ........................................ 12
Table 3: FactoryTalk View SE Runtime Edits with Redundancy (Reboot Required) .......... 14
Table 4: FactoryTalk Alarms and Events Runtime Edits (Immediate) ................................ 15
Table 5: FactoryTalk Alarms and Events Runtime Edits (Action Required) ....................... 16
Table 6: FactoryTalk Alarms and Events Runtime Edits (Reboot Required) ...................... 17
Table 7: FactoryTalk Alarms and Events Runtime Edits (Adverse Effect) ......................... 17

FactoryTalk View SE Runtime Editing Considerations v1.1


July 2012 Page 3 of 18
Introduction
The purpose of this document is to identify the types of runtime editing that can be performed on a
FactoryTalk View Site Edition (SE) distributed application while still maintaining control of the
process. Certain runtime edits will be available immediately, while others may require some form of
re-initialization (e.g., from a SE Display client, graphic display or a server.)

Scope
This document covers runtime editing that can be made to a redundant or non-redundant
distributed FactoryTalk View SE application. These recommendations apply to FactoryTalk View
SE v6.10 (CPR9 SR4).

Glossary of Terms
By definition, all edits made to an HMI application are made “online” since FactoryTalk View
Studio must connect to an active HMI Server in order to make edits. The analogy is to a Logix
Online Edit
edit made in “program” mode where it is understood that plant operations will be suspended
until the Logix controller is returned to “Run” mode.

An edit made using a separate (offline) development system. The edited application is
validated, backed-up, and then restored to the production system during a down-turn or other
Offline Edit “safe” time. The analogy is a Logix edit made offline using RSLogix 5000, and then
downloaded to the controller where it is understood that plant operations will be suspended
during the download.

A Runtime Edit is an Online Edit made during “Runtime” (running production). The user needs
to consider the types of edits to be made, and whether stopping/restarting services, rebooting
Runtime Edit
computers, etc. is acceptable while maintaining safe operation. Runtime Edits are the primary
focus of this document.

As in the FactoryTalk View SE Display Client; The operator interface software component of
Client
FactoryTalk View Site Edition.

To restart an entire computer, not just a software component; to power it off, wait a little bit
Reboot
then press the power button again to turn it on again.

To stop a software program, such as the FactoryTalk View SE Display Client, from running on
Restart
a computer and then to start using it again.

Objects on a screen outlined with a rectangular box and no value displayed within. This
condition is used to signify that the referenced item (either HMI tag, direct reference data
Wireframe
element or expression) is no longer valid, and/or a loss of communication from the HMI Client
through the various software layers ultimately to the Controller data table. Additional
information can be found in the FactoryTalk Diagnostic log.
FactoryTalk View SE Runtime Editing Considerations v1.1
July 2012 Page 4 of 18
Architecture
The architecture referred to in this document is a standard, redundant FactoryTalk View SE
distributed system. The guidelines in this document also apply to a non-redundant system unless
otherwise specified.

Domain Controller:
Domain controller functionality
FactoryTalk Directory Server:
Directory Server functionality
Primary Server:
Primary HMI Server
Primary RSLinx Enterprise Data Server with FactoryTalk Alarms and Events
Primary Tag-based FactoryTalk Alarms and Events Server
Secondary Server:
Secondary HMI Server
Secondary RSLinx Enterprise Data Server with FactoryTalk Alarms and Events
Secondary Tag-based FactoryTalk Alarms and Events Server
FactoryTalk Client Computers:
FactoryTalk View SE Display Client
Engineering Workstation:
FactoryTalk View Studio
FactoryTalk View SE Display Client
FactoryTalk View SE Runtime Editing Considerations v1.1
July 2012 Page 5 of 18
Runtime Edit Classifications
The types of runtime edits that can be performed are divided into four (4) separate categories to
reflect additional operations that need to be completed before the edits become active.

Category 1 Edits – Immediate


The first category of runtime edits include operations where the runtime edit takes effect
immediately upon saving changes. In some cases, a client may be required to re-open a screen for
the changes to take effect.

Category 2 Edits – Action Required


The second category of runtime edits requires some form of post-edit action for the changes to
take effect. For example, changing an event file requires the EventOff followed by the EventOn
command for the changes to take effect. Other edits may require that the FactoryTalk View SE
client be restarted.

Category 3 Edits – Reboot Required


The third category of runtime edits include operations that require a server process restart or may
require a restart of a server computer.

Category 4 Edits – Adverse Effects


The fourth category of runtime edits may cause adverse effects immediately. For example, a
FactoryTalk View SE Display Client could become unresponsive or may stop displaying the correct
data. One or more of the FactoryTalk View processes may also fail or hang.

Performing Runtime Edits in Non-Redundant Systems


Step Description
1 Notify the appropriate plant personnel that changes are about to be made on the
production system. Depending upon the changes made, indicate that an organized
restart of each client and/or the entire system may be required.
2 As a precautionary measure, it may be useful to create a backup copy of the current
application, HMI project and Tag-based FactoryTalk Alarms and Events server, if
applicable, running on the primary server.
Use the FactoryTalk Administration Console to back up the deployed network
application.
The HMI Server Backup and Restore utility that is installed with FactoryTalk
View SE can be used to back up the HMI project.
The alarm data from a tag-based FactoryTalk Alarms and Events server can be
exported into XML or Microsoft Excel Speadsheet format as a backup.

FactoryTalk View SE Runtime Editing Considerations v1.1


July 2012 Page 6 of 18
Step Description
3 Open FactoryTalk View Studio and select the current running application. Perform any
runtime edits following the guidelines listed in the Tables below.

Performing Runtime Edits in Redundant Systems


This section only applies to systems configured for HMI server redundancy. In a redundant
system, the modifications to HMI application components need to be replicated to the secondary
HMI server for any changes to be completed. However, FactoryTalk tag-based Alarms and Events
Server and alarm modifications are automatically replicated to the Secondary server, which is also
updated with any Device-based FactoryTalk Alarms and Events Server (RSLinx Enterprise) and
shortcut changes.
There are two significant additional steps from the previous Performing Runtime Edits in Non-
Redundant Systems section which are indicated in bold type:
Step Description
1 Verify that you are connected to the Primary HMI/FactoryTalk tag-based Alarms
and Events/RSLinx Enterprise Server (in applications with multiple redundant
server pairs, you must verify each server pair individually).
2 Notify the appropriate plant personnel that changes are about to be made on the
production system. Depending upon the changes made, indicate that an organized
restart of each client and/or the entire system may be required.
3 As a precautionary measure, it may be useful to create a backup copy of the current
application, HMI project and Tag-based FactoryTalk Alarms and Events server, if
applicable, running on the primary server.
Use the FactoryTalk Administration Console to back up the deployed network
application.
The HMI Server Backup and Restore utility that is installed with FactoryTalk
View SE can be used to back up the HMI project.
The alarm data from a tag-based FactoryTalk Alarms and Events server can be
exported into XML or Microsoft Excel Speadsheet format as a backup.
4 Open FactoryTalk View Studio and select the current running application. Perform any
runtime edits following the guidelines listed in the Tables below.
5 If any runtime edits include HMI Server components (i.e. Graphic displays, Data
logs, Security, etc.), the changes must be replicated from the Primary to
Secondary HMI Server. See below for further instruction if needed.

FactoryTalk View SE Runtime Editing Considerations v1.1


July 2012 Page 7 of 18
HMI Alarm Synchronization
CAUTION: On a redundant system, if you make changes to HMI tag Alarm properties on the
primary server and then execute the AlarmAcceptEdits command as outlined in Table 2, the HMI
Alarm synchronization that normally exists between the primary and secondary servers will stop
because the alarming databases are no longer processing the same set of alarms.
To re-establish HMI Alarm synchronization, you must complete the editing process by replicating to
the secondary and allowing it to reboot. “Batching” your edits and making them all at once will
minimize subsequent reboots of the secondary HMI Server.

Replicating changes from the Primary to the Secondary HMI server


This section is only necessary for modifications made to components existing within the HMI
Server of a redundant system. It is not necessary for any FactoryTalk Alarms and Events or
RSLinx Enterprise changes.
Note: The primary HMI server must be the active server in order to make and then replicate
changes. A reboot of the Secondary HMI Server is automatically done in order to complete the
replication process. The replication will not go from the secondary to the primary.
1. In FactoryTalk View Studio, in the Explorer window, right-click the primary HMI server’s
icon, and then click Properties.
2. Click the Redundancy tab, and then click Replicate Primary to Secondary.
3. Follow the instructions on screen. After replication is complete, the secondary server is
restarted.
For more information see the Replicate changes to the secondary HMI server section of the
FactoryTalk View SE User Guide.

Advanced Editing Tips


In some cases, replicating the entire HMI server (and thereby causing a secondary server reboot)
is not required. The following types of changes can be restored on the Secondary server without
requiring a full replication:
Simple Display, Macro or Parameter file modifications that do not require new tag creation
can be copied to the Secondary server by performing a file copy operation.
Simple modifications to Data Log Models, Derived Tag Files, and Event Files that do not
require tag creation can be copied to the secondary server by performing a file copy
operation. You must issue the appropriate xxxOff then xxxOn command for the changes to
take effect.
o DatalogOff [Data Log Model Name] or DatalogOn [Data Log Model Name]
o EventOff [Event file Name] or EventOn [Event file Name]
o DerivedOff [Derived Tag Name] or DerivedOn [Derived Tag Name]
FactoryTalk View SE Runtime Editing Considerations v1.1
July 2012 Page 8 of 18
Editing Guidelines
The following tables outline the functional area to which the runtime edit will be made, what type of
task will be performed and any comments related to that task.
Tables 1 thru 2 covers FactoryTalk View SE Runtime Edits.
Table 3 covers FactoryTalk View SE Runtime Edits in a redundant system.
Tables 4 thru 7 cover FactoryTalk Alarms and Events Runtime Edits for either non-
redundant or redundant systems unless otherwise specified.
Table 1: FactoryTalk View SE Runtime Edits (Immediate)

Functional Area Task Comments


Create New file is available immediately after being saved.

Import New file is available immediately after being saved.

Modify Changes will take effect immediately after the VBA


(including VBA) edits, then the graphic file itself are saved. Clients
Graphic that have the display opened will not reflect the
updates until the display is re-opened or the client is
restarted.
Delete File is removed from project immediately. Clients that
have the display opened will continue to use it until
the display is closed or the client is restarted.
Create The file will be available immediately after it is saved.
Data Log Model Issue the DatalogOn command to start logging.
Create New file is available immediately after being saved.
Derived Tag File

Create New file is available immediately after being saved.


Event File

Create New file is available immediately after being saved.

Modify Modified file is available immediately after being


Macro File saved.
Delete Changes will take effect immediately. References to
this deleted macro file will result in logged errors.

FactoryTalk View SE Runtime Editing Considerations v1.1


July 2012 Page 9 of 18
Functional Area Task Comments
Create New file is available immediately after being saved.

Modify Changes will take effect immediately after being


saved. Clients that have a display opened using this
Parameter File parameter file will not reflect the updates until the
display is re-opened or the client is restarted.
Delete File is removed from project immediately. Clients that
have a display opened using this parameter file will
continue to use it until the display is re-opened or the
client is restarted.
Create New file is available immediately after being saved

Modify Changes will take effect immediately after being


saved. Clients that have the local message file in use
Local Message will continue to use it until the display is re-opened or
File the client is restarted.
Delete Changes will take effect immediately. Clients that
have a display with a Local Message object
referencing the deleted local message file will
continue to use it until the display is re-opened or the
client is restarted.
Create Tags will be available immediately to be used in any
other Create or Modify operation.

Modify Changes to all HMI tag properties will take effect


immediately. SE Display clients do not need to be
restarted.
HMI Tag Database
(non-alarmed, via
However, graphic displays may need to be re-opened
Tag Database
if graphic objects only access the HMI tag properties
Editor or Import
when the display is opened (i.e. Tag Label, Trend
and Export Utility)
objects or any object referencing the HMI Tag
Min/Max property in an animation definition). The
HMI Alarm Summary object will not reflect changes to
the Tag Description or Unit properties until the next
time the HMI Server restart or the AlarmAcceptEdits
command is ran.

FactoryTalk View SE Runtime Editing Considerations v1.1


July 2012 Page 10 of 18
Functional Area Task Comments
Create Changes will take effect immediately upon save.

Modify Changes will take effect immediately upon save. If


runtime security privileges have changed for the
FactoryTalk currently opened display, the logged in User will
Security continue to use the display under the privileges with
(A-P codes) which the display was opened.
Delete Changes will take effect immediately upon save. If
the user being deleted is still logged in, the client will
not automatically close, but the user will lose all
functionality. (screen navigation, tag writes, etc.)
Create Changes will take effect immediately after being
saved.
RSLinx Enterprise Delete Changes will take effect immediately after being
Device Shortcuts saved. Clients that have references to tags
associated with this Device Shortcut will continue to
use this reference until the tags are taken off scan.

FactoryTalk View SE Runtime Editing Considerations v1.1


July 2012 Page 11 of 18
Table 2: FactoryTalk View SE Runtime Edits (Action Required)

Functional Area Task Comments


HMI Tag Database Delete The tag cannot be in use in any of the FactoryTalk
(non-alarmed, via (via Editor only) View SE subsystems (alarming, data logging, events,
Tag Database etc.) if it is to be deleted. A successful deletion is in
Editor) effect immediately.
Create The AlarmAcceptEdits command must be issued
and after edits are completed. Running this command
Modify causes the alarm system to immediately incorporate
any edits since the last time the AlarmAcceptEdits
command was executed (or since the last time the
AlarmOn command was executed).

See Table 3 for redundant systems.

See Tables 4 thru 7 for FactoryTalk Alarms and


Alarmed HMI Tags Events.
(via HMI Tag Delete The tag cannot be in use in any of the FactoryTalk
Database Editor or (via Editor only) View SE subsystems (alarming, data logging, events,
Import and Export etc.) if it is to be deleted.
Utility)
Running the AlarmOn command after the tag deletion
causes the alarm system to immediately incorporate
any edits since the last time the AlarmAcceptEdits
command was executed or since the last time the
AlarmOn command was executed.

See Table 3 for redundant systems.

See Tables 4 thru 7 for FactoryTalk Alarms and


Events.

FactoryTalk View SE Runtime Editing Considerations v1.1


July 2012 Page 12 of 18
Functional Area Task Comments
Modify If the model is currently in use, the DataLogOff
<filename> command must be issued prior to making
changes. DataLogOn <filename> must then be
issued for changes to take effect.
Data Log Model
Delete If the model is currently in use, the DataLogOff
command must be issued prior to deletion, or
unexpected behavior (including continued growth of
data files) may result.
Modify If the Derived Tag File is currently in use, the
DerivedOff <filename> command must be issued
prior to making changes. DerivedOn <filename> must
Derived Tag File then be issued for changes to take effect.
Delete If the Derived Tag file is in use, it is strongly
recommended to issue the DerivedOff command
prior to deletion.
Modify If the Event File is currently in use, the EventOff
<filename> command must be issued prior to making
changes. EventOn <filename> must then be issued
Event File
for changes to take effect.
Delete If the Event file is in use, it is strongly recommended
to issue the EventOff command prior to deletion.
Create Requires client configuration to be modified to
include the new client key file, then restart of the
client for changes to take effect.
Modify Requires client configuration to include the modified
Client Key File client key file, then restart of the client for changes to
take effect.
Delete Requires client configuration to be modified to
remove the deleted client key file, then restart of the
client for changes to take effect.
RSLinx Enterprise Modify Client must be restarted after modifications are
Device Shortcuts complete.

FactoryTalk View SE Runtime Editing Considerations v1.1


July 2012 Page 13 of 18
Table 3: FactoryTalk View SE Runtime Edits with Redundancy (Reboot Required)
The primary HMI server must be the active server in order to make and then replicate any HMI
Application component changes. A reboot of the Secondary HMI Server is automatically done in
order to complete the replication process.
Functional Area Task Comments
All In a redundant system, the modifications to HMI
application components need to be replicated to the
secondary HMI server for any changes to be completed.
HMI Application
See the previous section titled “Performing Runtime Edits
Components
in Redundant Systems” for further details on the
(covered in Tables 1
replication process.
and 2)
Some edits can be replicated manually which do not
require a reboot of the Secondary HMI Server. See the
previous section titled “Advanced Editing Tips” for details.
Create The AlarmAcceptEdits command must be issued after the
alarmed HMI tag(s) have been created or alaming has
been added to existing HMI tags.

For a redundant system, a replicate from Primary to


Secondary must also be done to synchronize the
alarming databases and restart Alarm synchronization.
Modify The AlarmAcceptEdits command must be issued after
edits are completed.

For a redundant system, a replicate from Primary to


Alarmed HMI Tags
Secondary must also be done to synchronize the
(via HMI Tag
alarming databases and restart Alarm synchronization.
Database Editor or
Import and Export Delete The tag cannot be in use in any of the FactoryTalk View
Utility) (via Editor only) SE subsystems (alarming, data logging, events, etc.) if it
is to be deleted.

Running the AlarmOn command after the tag deletion


causes the alarm system to immediately incorporate any
edits since the last time the AlarmAcceptEdits command
was executed or since the last time the AlarmOn
command was executed.

For a redundant system, a replicate from Primary to


Secondary must also be done to synchronize the
alarming databases and restart Alarm synchronization.
FactoryTalk View SE Runtime Editing Considerations v1.1
July 2012 Page 14 of 18
Table 4: FactoryTalk Alarms and Events Runtime Edits (Immediate)

Functional Area Task Comments


Tag-based Create The creation of a Tag-based FactoryTalk Alarms and
FactoryTalk Events server addition will be recognized
Alarms and Events immediately.
Server
Create The creation of an RSLinx Enterprise Server with
FactoryTalk Alarms and Events enabled will be
recognized immediately.
Device-based
FactoryTalk NOTE: FactoryTalk Alarms and Events should be
Alarms and Events enabled during the creation of the RSLinx Enterprise
Server (RSLinx Server. Enabling or disabling FactoryTalk Alarms and
Enterprise) Events on an existing RSLinx Enterprise Server will
restart the RSLinx Enterprise Server.

See Table 6 for more information.


Create FactoryTalk Alarms and Events must first be enabled
within the RSLinx Enterprise Server properties in
order for the FactoryTalk Alarms and Events property
to be visible when creating a shortcut. Device-based
RSLinx Enterprise FactoryTalk Alarms and Events will be available
Device Shortcuts immediately after creating a device shortcut with the
with FactoryTalk FactoryTalk Alarms and Events property enabled.
Alarms and Events
In a redundant system, the shortcut communication
path must be defined on the Secondary RSLinx
Enterprise Server, but the FactoryTalk Alarms and
Events property is common for both.
Create, Modify Any additions, modifications or deletions made to any
Tag-based and Delete Tag-based FactoryTalk Alarms and Events items are
FactoryTalk seen immediately. Some state information may be
Alarms and Events cleared when the changes become active. In order to
items prevent this, edit alarms only when the FactoryTalk
(via Editor and Alarms and Events server is not in use.
Alarms Import
Export Wizard) In a redundant system, these changes are
synchronized automatically.

FactoryTalk View SE Runtime Editing Considerations v1.1


July 2012 Page 15 of 18
Functional Area Task Comments
Create, Modify Any additions, modifications or deletions made to a
Device-based and Delete device-based Alarms and Events instruction (ALMA or
FactoryTalk ALMD) are seen immediately. Some changes may
Alarms and Events require a change of state in the alarm but no action is
items required by the user.
Create, Modify Creation, modification or deletion of any FactoryTalk
and Delete Alarms and Events graphic object is accepted
FactoryTalk immediately upon saving the display that contains the
Alarms and Events object. SE Display clients will be required to reload
graphic objects the display containing the objects.

See Table 6 for redundant systems.


Create Creation of a Database Connection is available
immediately for selection within the RSLinx Enterprise
or Tag-based FactoryTalk Alarms and Events server
properties.
FactoryTalk Modify Modifications to the Database Connection properties
Alarms and Events are effective immediately. Any errors, as well as audit
History Database events describing the database definition change, will
be logged to the FactoryTalk Diagnostics system.
Enable/Disable Enabling or disabling the History feature on a Device-
based (RSLinx Enterprise) or Tag-based FactoryTalk
Alarms and Events Server is effective immediately.

Table 5: FactoryTalk Alarms and Events Runtime Edits (Action Required)

Functional Area Task Comments


Delete The database association must be removed from the
RSLinx Enterprise or FactoryTalk tag-based Alarms
FactoryTalk
and Events server properties before the Database
Alarms and
Connection can be deleted. Alarm servers will stop
Events History
logging alarm and event data and an appropriate
Database
message will be logged to the FactoryTalk
Diagnostics system.

FactoryTalk View SE Runtime Editing Considerations v1.1


July 2012 Page 16 of 18
Table 6: FactoryTalk Alarms and Events Runtime Edits (Reboot Required)

Functional Area Task Comments


Enable/Disable RSLinx Enterprise is automatically restarted after any
RSLinx Enterprise
changes are made to the RSLinx Enterprise Server
Server Property
property with respect to FactoryTalk Alarms and
for FactoryTalk
Events.
Alarms and
Events
Create, Modify In a redundant system, creation, modification or
And Delete deletion of any FactoryTalk Alarms and Events
graphic object is accepted immediately upon saving
the display that contains the object.

FactoryTalk In a redundant system, modifications to HMI


Alarms and application graphic objects need to be replicated to
Events graphic the secondary HMI server for any changes to be
objects completed. See the previous section titled
“Performing Runtime Edits in Redundant Systems”
for further details on the replication process..

SE Display clients will be required to reload the


display containing the objects.
Table 7: FactoryTalk Alarms and Events Runtime Edits (Adverse Effect)
It is recommended that any of the following edits be done when the system is not in production as it
is a major change in the behavior of the system and may cause adverse effects to the running
system.
Functional Area Task Comments
Modify Modifying or deleting a device-based FactoryTalk
and Alarms and Events server (RSLinx Enterprise) during
Delete runtime may cause adverse effects on the running
Device-based
system, not only for FactoryTalk Alarms and Events
FactoryTalk
but also for the data that the server is providing.
Alarms and
Events Server
RSLinx Enterprise must be restarted after any
(RSLinx
changes are made to its FactoryTalk Alarms and
Enterprise)
Events property. In a redundant system, both the
Primary and Secondary must restart RSLinx
Enterprise.
FactoryTalk View SE Runtime Editing Considerations v1.1
July 2012 Page 17 of 18
Functional Area Task Comments
Modify – Enabling or disabling FactoryTalk Alarms and Events
Enable/Disable within an RSLinx Enterprise shortcut during runtime
FactoryTalk Alarms may cause adverse effects.
and Events
RSLinx Enterprise must be restarted after any
changes are made to the FactoryTalk Alarms and
Events property within the RSLinx Enterprise
shortcut.
RSLinx Enterprise
Device Shortcuts In a redundant system, both the Primary and
with FactoryTalk Secondary must restart RSLinx Enterprise.
Alarms and Delete RSLinx Enterprise must be restarted after a deletion
Events of an RSLinx Enterprise Device Shortcuts with
FactoryTalk Alarms and Events enabled.

In a redundant system, both the Primary and


Secondary must restart RSLinx Enterprise.

NOTE: These deletions immediately interrupts data


provided via the deleted shortcut and may adversely
affect the running system.
Modify Modifying or deleting a Tag-based FactoryTalk
and Alarms and Events server during runtime may cause
Delete adverse effects on the running system.
Tag-based
FactoryTalk The Tag-based FactoryTalk Alarms and Events
Alarms and server computer requires a reboot after any
Events Server modification or deletion. If this is a redundant
system, both server computers will need to be
restarted.

FactoryTalk View SE Runtime Editing Considerations v1.1


July 2012 Page 18 of 18

You might also like