Professional Documents
Culture Documents
Scroll Assembly
Programming Standard
Specification
Emerson
March 2018
Scroll Assembly Programming Standard Specification
Document Summary
Revision History:
Revision: 7.04
Version 7.0
Page 2 of 141
Scroll Assembly Programming Standard Specification
Quality Assurance:
Approval Summary:
Version 7.0
Page 3 of 141
Scroll Assembly Programming Standard Specification
Version 7.0
Page 4 of 141
Scroll Assembly Programming Standard Specification
Table of Contents
2.8. Constants................................................................................................................................................ 34
2.8.1. Machine Address Constants ...................................................................................................... 34
2.8.2. Step Constants........................................................................................................................... 35
2.8.3. Machine Tooling Constants ...................................................................................................... 35
2.8.4. Common Constants ................................................................................................................... 37
2.8.5. Motion Status Constants ........................................................................................................... 37
Version 7.0
Page 5 of 141
Scroll Assembly Programming Standard Specification
Version 7.0
Page 6 of 141
Scroll Assembly Programming Standard Specification
4. OPERATOR INTERFACE......................................................................................... 97
4.1. Hardware ............................................................................................................................................... 97
Version 7.0
Page 7 of 141
Scroll Assembly Programming Standard Specification
Version 7.0
Page 8 of 141
Scroll Assembly Programming Standard Specification
1.1. Introduction
The goal of this document is to define the process and specifications to which machine control systems will be
designed and commissioned within Emerson.
In developing this document, primary consideration was given to achieving a control systems specification
that provides a balance between the following concepts:
• Accurate implementation and efficient development by plant engineers, OEM’s (Original Equipment
Manufacturers,) and third-party developers.
This specification attempts to achieve this by providing guidelines defining how control systems will be designed,
developed, and commissioned.
This scope of this specification shall include all control systems provided by any developer of any automated
machine (or station), process, or other Level 1 or 2 control system. The general intent of this document is to
assure that all supplied control systems are capable of being efficiently operated and maintained. Likewise, it is
intended to provide the developer a set of guidelines and tools that is sufficient in defining expectations, but
does not impose unnecessary restriction.
This document does not attempt to provide details concerning the design and operation of any machine or
equipment. Rather the intent is to provide a guideline of how the control for such equipment is to be
implemented. Further, this document does not relieve the developer from any responsibility to provide a
functioning system. If the developer finds a conflict in this document that will adversely affect the operation of
their equipment, then it is the responsibility of the developer to notify the Emerson project controls engineer of
the conflict.
Version 7.0
Page 9 of 141
Scroll Assembly Programming Standard Specification
In a typical scenario, a part arrives at a specific machine and is scanned by bar-code scanners attached to either
the station or the Configuration controller. The controller prepares a message for this specific machine including
status of the part to be processed, required tooling, and configuration parameters for the operation to be
performed.
These parameters will arrive at the station PLC via a PLC message and are mapped into a standard data
structure using User Defined Types (UDTs.) The developer will call a subroutine to request this data from the
UDT. The subroutine will automatically map all configuration data into a group of Compressor tags to be utilized
in the PLC program. Upon completion of the test, the station PLC will map results data by calling an Update
subroutine that will pack and send a PLC message back to the Configuration controller. These System
subroutines will minimize the developer’s effort required to interface with the Configuration controller.
Version 7.0
Page 10 of 141
Scroll Assembly Programming Standard Specification
Version 7.0
Page 11 of 141
Scroll Assembly Programming Standard Specification
All control systems provided shall utilize either Allen-Bradley ControlLogix or CompactLogix process
controllers. Most machines should use CompactLogix, since this processor is much more cost-effective
in small applications. Acceptable processors are listed in the most recent “Scroll Assembly Industrial
Equipment Standards” document referenced in the equipment RFQ.
All communication must be performed via Ethernet or DeviceNet networks. Ethernet should always be used as
the plant network interface. DeviceNet communications are acceptable for DeviceNet enabled instruments that
do not have an Ethernet option.
Ethernet IP addresses, subnet masks, and gateway addresses will be supplied by Emerson. DeviceNet
networks should avoid using address 63 for any device.
ControlNet, DH485, and other communication networks should be avoided unless otherwise approved on an
exception basis.
The Standard Station Template consists of two types of routines: System routines, and Non-System routines.
The System routines are to be used “as-is”, that is, no modifications to the logic (other than station-specific tag
names, and/or message communication path configurations) are allowed without prior written approval from
Emerson, Inc. The Non-System routines are provided to the developer as a framework for development of
machine specific operations. These routines provide the structures that are to be used to develop I/O handling,
machine alarms, HMI interfacing, sequential machine control, machine tooling, auto and manual operations. As
with the System routines, any deviations from the standard practices shown in the Standard Station Template
or described in this document must have written approval from Emerson, Inc.
The template does not provide all coding elements necessary to implement a control station. It is designed and
provided as a starting point for development, and in no way, comprises an all-inclusive set of controller code.
Version 7.0
Page 12 of 141
Scroll Assembly Programming Standard Specification
A standard control file organization will be implemented in each control program. This standard encompasses
elements such as routine and tag naming conventions, commenting, standard User Defined Types (UDT’s) and
strings, and general program and logic flow. These elements are discussed in detail below.
HMI_Main
HMI_ HMI related message triggers and logic.
HMI_Homing
IO_MappingInputs
I/O Handling routines. Mapping of logical tags to
IO_ IO_MappingOutputs
I/O card images. Analog value scaling.
IO_ScalingInput
Sequence_Main
Sequence_ Sequential operations and control.
Sequence_Homing
An effort should be made to utilize the prefixes listed above. However, if a prefix is required that is not
available; the developer can add additional prefixes with approval. All routines should be named utilized
some prefixing.
If multiple developers within one company are writing applications, the same routine naming convention
should be applied across all applications submitted by that company.
Using the above prefixes, standard routines have been created and supplied in the standard program
template for use in creating new programs. Descriptions of these files can be found in Appendix B –
Standard Routines. Please use these standard Routines.
An effort should be made to create tags using tag names that are as descriptive and non-ambiguous as
possible. At the same time, redundant, non-essential text within the tag names should be avoided. Tag
Version 7.0
Page 13 of 141
Scroll Assembly Programming Standard Specification
names utilizing all capital letters should be avoided (capitals are reserved for constants, See section 2.8
Constants). Abbreviations should be avoided whenever possible.
Other than these general rules, the developer is free to choose tag names that make the most sense within
the scope of code development and machine operation. These guidelines are aimed at allowing the
developer flexibility in choosing tag names that are convenient, yet maintainable.
All tags should be created as Controller Scope Tags rather than Program Scope Tags. Additionally, auto-
generated Function Block tags are by default Program Scope, and should be left as such; however, the
programmer is free to rename the tags to more descriptive tag names. Written permission must be
obtained to deviate from this requirement.
To aid in tag organization, IO tags should be named utilizing a descriptive prefix followed by an underscore.
Using these prefixes keeps like tags grouped together within the Tag Editor in RSLogix 5000. The following
general prefixes should be utilized.
If multiple developers within one company are writing applications, the same tag naming convention should
be applied across all applications submitted by that company.
Please see Section Error! Reference source not found. Error! Reference source not found. for further de
tails on tag naming with reference to Configuration Control that need to be followed.
The Configuration Control Master uses a tag prefix to dynamically build the messages that are sent to
each client station. The tag prefix is defined in the Configuration Control Client web interface to. The PLC
template is programmed with the tag prefix set to “StationName”.
When starting with the Station Template it is important to replace the existing generic “StationName”
prefixes with the station name that will be used for the station being programmed. This should be done
with a search and replace from the Tag Browser. This will update ALL of the tags throughout the
program with the corrected station name without needing to search through the program and replace them
one at a time. The length of the station name chosen should be eleven (11) characters or less. Below is
a list of tag names with their associated UDTs and description.
Version 7.0
Page 14 of 141
Scroll Assembly Programming Standard Specification
Logic and tag commenting are critically important, as they can greatly affect the efficiency with which the
code can be maintained on a long-term basis. An effort should be made to supply clear, succinct
Version 7.0
Page 15 of 141
Scroll Assembly Programming Standard Specification
descriptions of each group of logic. These logic comments should provide any information required for
one to fully evaluate the associated code.
Tag descriptions should not contain redundant information. Since tag names are to be chosen with
descriptive names, some tags will not require descriptions. For example, a tag named SeqMain.Run does
not need a tag description of “Sequence Main Run.”
Many of the provided UDT’s will be commented at design. Thus, many tags will automatically contain
comments. Conversely, as the use of UDT’s provides generic structures, many of the tag names are of a
generic nature and will rely on comments to associate logical meaning to the tags.
Some tags that are used for local operations within a routine do not need descriptions. For example, there
is no value in commenting a One-Shot variable for an ONS instruction that is used only in one rung.
Some of the UDT’s are not utilized directly by creating a tag with that UDT’s basetype. Rather, in some
cases one UDT is inherited into another. Though slightly more complex, this approach of nesting multiple
UDT’s into a single UDT provides a compact and efficient means of implementing complex functionality
with a single tag. Note that all UDT’s are always named using the prefix ‘udt_.’ This provides a convenient
logical grouping when browsing tag base types from the tag editor.
Many of the UDT’s provided in the standard development template are utilized in messaging data between
the station PLC and Configuration Control Master PLC. As such, these standard UDT’s should NOT be
modified without written permission from Emerson. In cases where the developer needs to modify one of
the standard UDT’s, the modified UDT should be renamed with a suffix representing the station. For
example, if the Airboard PLC requires a change to the UDT udt_MachineSequence, the modified version
should be renamed udt_MachineSequence_AirBoard.
The standard for communications between processors relies on CIP messages over Ethernet/IP. The CIP
messages write directly to tags created using the standard UDT’s. To successfully execute these CIP
messages, the UDT’s utilized must be defined exactly the same in all of the processors involved. Modifying
one of these UDT’s in the station PLC will absolutely cause the MSG to fail. As such, when modifications
of these MSG Dependent UDT’s is required, it must be coordinated and redefined in the Configuration
Control Master. These changes should not be made without the coordination and express written
permission of Emerson.
The use of structured UDT based objects can greatly reduce the time required to develop and maintain
PLC code. This practice insures commonality of tag and file structure amongst different machines coded
by different developers. As such, an object-oriented scheme will be utilized to implement all major PLC
functions.
The set of UDT’s provided in the Standard Development Template have been designed to provide, as
much as possible, the majority the tags required to implement machine control and Configuration Control
integration. These UDTs feature general utility tags such as One-shot bits and Timers, PanelView tags
for interface control, tags for Mode and Status, as well as many implementation specific tags such as Alarm
acknowledgement bits, and current sequence step tags.
Version 7.0
Page 16 of 141
Scroll Assembly Programming Standard Specification
The UDT’s provided that are most often used to implement machine logic are as follows (See Error! R
eference source not found. and Error! Reference source not found. for a detailed listing of UDT’s):
udt_Machine
A tag with the name Machine of the type udt_Machine is created to provide tags for indicating and
managing the control of the mode of the machine. This tag and code to control the modes of the machine
are already created in the Standard Station Template and is only included here for reference. The tags
created with udt_Machine that are to be used to indicate the modes of the machine are:
udt_Output
Machine output control is implemented using tags of the data type udt_Output. For every output a new
tag of the type udt_Output will need to be created (Follow naming guidelines in section 2.3.2 Tag Namin).
ALWAYS use this UDT for creating and naming outputs. The tags created when using udt_Output are:
See section 2.5.3 Digital Output Qualifiers for an example using this udt.
Version 7.0
Page 17 of 141
Scroll Assembly Programming Standard Specification
udt_MachineAlarms Alarming is implemented using a single tag, MachineAlarms, based on the type
udt_MachineAlarm. This tag is already created in the Standard Station Template and is only included here
for reference. Tags created in the udt_MachineAlarm type provide the necessary alarm components:
Alarms are categorized as being either a step timeout alarm, or a general machine alarm (see section 2.6
Alarm Handling for details on alarms).
udt_PushButton
Version 7.0
Page 18 of 141
Scroll Assembly Programming Standard Specification
An HMI button that is not connected to an output or a machine mode should be created using a tag
based on the type udt_PushButton. Tags created with the udt_PushButton type create the following
tags to be used in the program:
udt_Step
Each time a step is created in the program sequences (see section 2.10 Sequential Logic) a tag of the
type udt_Step should be used. Using this UDT will create the following tags to be used in the creation of
the sequence:
udt_MachineSequence
Each time a new sequence is needed in the program (SeqMain and SeqPreStop are already included in
the Standard Station Template and do not need to be created) a tag should be created of the type
udt_MachineSequence. This will provide all of the tags necessary to implement a sequence as described
in section 2.10 Sequential Logic.
The IO_MappingInput routine provides a centralized location for the mapping of the physical digital inputs
to user discrete input tags for use in the machine control logic. The user input tags are defined as type
AOI_DEBOUNCEDINPUT. The input mapping is accomplished by using the Add-On Instruction,
AOI_DEBOUNCEDINPUT. This instruction provides for both a de-bounce on (On Time Delay) and de-
bounce off (Off Time Delay) time. Simply changing the counts in the AOI instruction will accomplish this.
.InUnDbncd Used for cases where de-bouncing of the input is NOT required
.InDbncd Used for cases where de-bouncing of the input is required
.OnTimeDelay Time in milliseconds after input is on that .InDbncd is set
.OffTimeDelay Time in milliseconds after input is off that .InUnDbncd is reset
The .InUnDbncd and .InDbncd tags should always be used in the program. Use of the raw input tag is
NOT acceptable. Each unused or spare input is to be mapped to a No Operation (NOP) instruction. The
program developer is responsible for setting these to acceptable values to balance the safety, stability,
and cycle time of the machine. The counts are in milliseconds. Each input should be assigned to an
individual rung for readability. Debouce times are set to 0 when the AOI is inserted. The developer is
responsible for adjusting these to provide a safe machine with the best possible cycle time. Pallet present
Version 7.0
Page 19 of 141
Scroll Assembly Programming Standard Specification
and other like debounce requirements should be done here and not in the sequence of the machine. The
rungs should be separated using a NOP comment rung detailing the addressing and part number
information for the Input card being used.
Version 7.0
Page 20 of 141
Scroll Assembly Programming Standard Specification
The IO_MappingOutput routine provides a centralized location for the mapping of the user discrete output
tags used in the machine logic to the physical digital outputs. The user output tags are defined as type
udt_Output. The output mapping is accomplished by mapping the .Output element of a user output tag to
its corresponding physical digital output. Simple interlocking of double solenoid valves MUST be located
in this routine. NO other interlocking is acceptable in this file. An Always False (AFI) instruction is mapped
to each unused or spare output. Below is an example of the IO_MappingOutput routine:
The IO_OutputQualifiers routine provides a centralized location for the machine output definitions. The
results of the machine logic are qualified prior energizing a given output in this routine. This routine defines
the motion position, interlocking logic, and the automatic and manual behavior of a given output. Typically,
the automatic behavior will be the result of a sequence output request. In the Sequence_Main routine, the
step output branch will set a bit of the .Req DINT of the user defined output tag of type udt_Output (See
Section 2.10.2.2 Sequence Steps). The value of the .Req is compared to 0. If any bits of the word are set
the value will not be 0. If the value is not equal to 0 and the interlocks are satisfied the .Output field of that
tag is energized. The .Output bit is then mapped to the machines physical outputs in the
IO_MappingOutput routine (See 2.5.2 Digital Outputs).
There are three rungs associated with each output in the IO_OutputQualifiers routine: one to define the
motion position, one to define the safety conditions required to initiate and maintain an output, and one to
energize the output.
The rung that defines the motion position has a branch for each of the possible states of the motion being
controlled. (This is then used to drive the text in the multistate indicator under the push button on the HMI
see 4.6 Typical Button Object). For a motion with only one active position (Extended, Retracted, Raised,
Lowered, etc…) there should be two branches: one for the NOT of the active position (Not Extended, Not
Version 7.0
Page 21 of 141
Scroll Assembly Programming Standard Specification
Lowered, etc…) and one for the active position. For motions with more than one active position (Lift Raised
63Frame and Lift Raised 53 Frame) the number of branches should be equal to the number of active
positions plus one (for the NOT state). Each of these positions should be defined with logic so that only
one branch can be true at a time. Below is an example of a rung defining the state of a motion with two
active positions:
The first branch should contain the logic for setting the .SafeToInitiate bit. This logic pertains to defining
the safe conditions or interlocks for initiating the output in Auto or Manual, and is intended to allow the
operator to safely operate the machine and to prevent machine damage. These conditions shall only
consider if the motion is safe to initiate and should not be dependent on if the motion should occur next in
the operation of the machine. This branch should not take into account the sequence of the machine.
The second branch of the rung is used to energize the .SafeToMaintain bit. This bit is used to inhibit the
output once it has already been sealed in if it is no longer safe to maintain.
The third branch of the rung relates to the logic to energize the .pvAvail bit. This bit is used to enable
PanelView command control in Manual mode and is typically qualified by being in Manual mode, having
both .SafeToInitiate and .SafeToMaintain conditions satisfied, and NOT being in an active position of the
Version 7.0
Page 22 of 141
Scroll Assembly Programming Standard Specification
motion (see section 4.6 Typical Button Object). Below is an example of a rung defining the safe
conditions for an output:
The output rung, as a minimum, contains the Auto and Manual conditions for a given output, with optional
conditions for Homing operations and Seal-In logic, if required. Below, the output rung is shown broken
down into its core components:
Auto Condition Branch – In the sequences outputs are requested by turning on a bit of the .Req
DINT. Each sequence step that requires the output to turn on will use a different bit. If one or more
steps are requesting the output to be on the DINT will have a non-zero value. A NEQ to a zero is used
in the auto condition branch to drive the output when it is safe to initiate and safe to maintain. After
the initial setup no further modifications are needed to this rung to turn on the output from a new step.
Manual Condition Sub-Branch – Manual requests to energize the output from the PanelView are
located here. This is only active when the machine is in manual mode. When using the .pvPB from
the HMI the .pvAvail should always be used as a software interlock to make sure that the motion will
not occur if it is not safe to initiate.
Homing Sub-Branch (Optional) – A NEQ is used here as is used in the auto branch to check for any
.HomeReq bits being set to request an output from the homing routine. This is only active when the
machine is in manual mode.
Seal-In Branch (Optional) – Seal-In logic is located here if the output is to remain energized through
multiple steps or if the output will remain energized after a PanelView request in manual mode. The
Seal-In branch will always be broken by a request from the opposing output. Notice that the seal is
only active in Auto mode unless the motion is in the active position. This is to break a seal in if auto
mode is lost during a motion. It also permits a seal in to remain active if a motion is in the active
Version 7.0
Page 23 of 141
Scroll Assembly Programming Standard Specification
position when auto mode is lost or an E-Stop is pressed. If the machine drifts out of the active position
during an E-Stop the seal in is also broken so the machine will not jump when power is restored.
Seal-In Branch:
Optional branch used if output is to
remain energized through multiple
steps, or through a manual
command.
Figure 7 - Illustration of Branches in Output Rung
Version 7.0
Page 24 of 141
Scroll Assembly Programming Standard Specification
Analog Inputs and Outputs are scaled and mapped using the Add On Instructions, AOI_AI_SCALE and
AOI_AO_SCALE, respectively. Physical Analog IO points should be mapped to these instructions and
placed in the IO_MappingInput and IO_MappingOutput routines. As with other I/O logic in these routines,
the analog cards should be separated using a NOP comment rung detailing the addressing and part number
information for the card. These instructions provide the following tags:
The RawMax, RawMin, EngineeringMax, EngineeringMin, Gain, and Offset tags can be written to using
MOV instructions so that mastering/calibration can be programmed to be done automatically with known
hardware. Function Block programming should NOT be used to scale Analog Inputs and Outputs.
Version 7.0
Page 25 of 141
Scroll Assembly Programming Standard Specification
Alarms 0 - 59 Are Reserved For the Main Sequence Step Timeout Faults
Alarms 60 - 119 Are Reserved For the Second Sequence (Pre-stop) Step Timeout Faults
Alarms 120 - 179 Are Reserved For the Third Sequence Step Timeout Faults
Alarms 180 - 239 Are Reserved For the Fourth Sequence Step Timeout Faults
Alarms 240 - 299 Are Reserved For the Fifth Sequence Step Timeout Faults
Alarms 300 - 349 Are Reserved For I/O Disagreement Faults
Alarms 350 - 399 Are Reserved For Station Faults
Alarms 400 - 499 Are Reserved For Motion Faults
Alarms 500 - 559 Are Reserved For Home Sequence Step Timeout Faults
Alarms 560 - 567 Are Reserved For WIP and Schedule Data Alarms
Alarms 568 - 599 Are Reserved For Emerson Use Only
Step Faults are handled using AOI_STEP. (See 2.6.1 Step Timeout Alarms)
Other Alarms are implemented by using the Add On Instruction (AOI_FAULT). The AOI_FAULT is imbedded in
the udt_FAULT user defined type. For each alarm a tag of the type udt_FAULT should be created. The
AOI_FAULT has the following requirements:
FaultTrigger Number corresponding to the Fault Trigger in the alarm array that will be used
by this fault
Description Description of the Fault that will be displayed on the HMI when the Fault occurs
MachineAlarms Machine Alarms tag that the instruction will trigger faults of
FaultTime Step Fault preset value in milliseconds
The conditions to trigger the fault should be added to the rung preceding the AOI_FAULT instruction. When
those conditions are true the fault will begin to time. After the time has elapsed the fault becomes active. When
the fault is active the .FaultActive bit of the AOI and theTrigger bit of the corresponding MachineAlarms array
position will turn on. (The trigger bits of the alarms are already preconfigured in the HMI and will not need to be
connected by the programmer for a standard machine.) The fault will remain active until a command is received
from the PanelView (“MachineAlarms.pvClear”) to clear the alarm. If the conditions for the fault are still true it
will remain active even if a reset is received.
All fault AOIs should have the description “Description” updated to correctly describe the fault being created.
Version 7.0
Page 26 of 141
Scroll Assembly Programming Standard Specification
The .Description tag of each udt_Fault should be set to the description that should be displayed on the
HMI when the fault is active. The description array elements are to be used as follows:
Descriptions are limited to 39 characters so that they fit correctly on the HMI.
The type of the alarm does not need to be included in the description as it is already preconfigured in the HMI.
See below for the types of alarms and examples of descriptions:
Version 7.0
Page 27 of 141
Scroll Assembly Programming Standard Specification
Step Timeout Alarms are implemented by using the Add-On Instruction (AOI_Step). The AOI_Step is
imbedded in the udt_Step user defined type. When using the udt_Step to create a step, the AOI_Step for
that step is automatically created in the data table.
AOI_STEP Set to the AOI_STEP tag created when creating a new tag using
udt_STEP. It should include the .AOI extension of the tag.
The Timeout Timer is initiated when the machine first enters the given step in the sequence. If the machine
stays in that step of the sequence for longer than is provided for by the FaultTimeOut, the machine will
fault. The fault will remain until a command is received from the PanelView (“MachineAlarms.pvClear”) to
clear the alarm.
All machine sequence steps need to have an associated step timeout alarm. It is CRITICAL that
AOI_STEP instructions be placed in the correct order as required by the sequence as these instructions
will also automatically set the value of the step constant used in the sequence file. In order for this feature
to work correctly It is necessary to place a MOVE instruction in the rung of the first step of each sequence
to set the .StepAssignment for that sequence to -1. This is only required in the first step (step 0).
Any steps that should not have an associated step fault should still be included in the logic but be disabled
(necessary when a step is operator dependent) by adding logic to the second branch of the rung to set the
.AOI.DisableFault bit. (For a step that will always have its fault disabled all logic can be removed.) Toggling
the MachineAlarms.DisableStepAlarm tag disables all step faults to allow for debug of the machine.
See Figure 10 - Sample Sequence Step Timeout Alarm for an example of a Step Time Out.
Version 7.0
Page 28 of 141
Scroll Assembly Programming Standard Specification
The Description of the Step (“c_STEP_NAME”) in the tag database should also be entered so that the
instructions are commented correctly in the ladder logic (See Figure 11 – Comment AOI_Step in
Tag Database). Do not comment the .Description[2] or .AOI of the array tag individually as these will
be automatically filled in when the description for the base array tag is entered.
The .Description tag of each step should be set to the description that should be displayed on the HMI
when the sequence is in that step. This will allow the correct step description to be displayed on the HMI.
The description array elements are to be used as follows:
See Figure 12 – Add Description to udt_Step. Descriptions are limited to 39 characters so that
they fit correctly on the HMI.
Version 7.0
Page 29 of 141
Scroll Assembly Programming Standard Specification
I/O Faults are faults that occur when machine sensors report an invalid condition. In the example shown
below, if the DI_PalletLiftLowered.InDbncd is active and one of the lift raised inputs,
DI_PalletLiftForShell53Raised.InDbncd or DI_PalletLIftForShell63Raised.InDbncd, is also on then the
alarm will be active. Any Input that has a logical opposite that should never be on at the same time should
have an I/O Fault associated with it.
Machine Motion Faults are faults that occur when the machine fails to complete a motion in a specified
time period. In the example shown below, the Lift Raise output, DO_LiftRaise.Output, is energized and if
neither raised inputs, DI_PalletLiftForShell53Raised.InDbncd or DI_PalletLIftForShell63Raised.InDbncd is
made within 10 seconds, a motion fault will occur. Machine Motion faults should typically only be active in
Auto mode or when homing. All machine motions that have feedback on its positions should have an
associated machine motion fault. Be sure to set the Fault Time preset lower than any step fault that may
be requesting the motion to occur. It is important that motion faults turn on quicker than the associated
step fault for debug purposes.
Version 7.0
Page 30 of 141
Scroll Assembly Programming Standard Specification
Station Faults are faults that occur from a single input that monitors an operational condition of the
machine. Some examples of this would be E-Stop inputs, High and Low pressure monitoring, control
power, etc... In the example shown below, when the guard door is opened, input
DI_GuardDoor1Open.InDbncd is active, a station fault will occur.
Alarms are triggered in the PanelView Plus using the tag MachineAlarms.Alarm[x].Trigger, where x is equal
to the alarm number. The trigger tag is sealed within the logic of AOI_STEP and AOI_ALARM when the
conditions for the alarm are met for the given time. This seal can only be broken by pressing the Alarm
Clear push button on the PanelView (MachineAlarms.pvClear). The tag, MachineAlarms.ActiveAlarm, is
used as an index pointer that holds the integer value relating to the last active alarm found in the file. For
instance, if MachineAlarms.Alarm[12].Trigger is set, then MachineAlarms.ActiveAlarm will be set to 12 by
moving a 12. A value of 12 will be retained until the cleared or replaced by a larger numbered alarm.
AOI_STEP and AOI_ALARM handle updating the MachineAlarms.ActiveAlarm for an active fault. The
figure below shows the implementation of the logic for clearing the MachineAlarms.ActiveAlarm tag. This
can be found at the end of the Faults_Main file. No changes should be necessary by the programmer for
this logic.
Notifications are implemented using an AOI (AOI_NOTIFICATION) which is imbedded in the UDT
udt_Notification. When creating a Notification create a new tag with the type udt_Notification and the AOI will
be automatically created.
Notification status is stored in the structure under the MachineNotifications tag of the type
udt_MachineNotifications. This already exists in the template and does not need to be created by the program
developer. This structure is designed to accommodate up to 31 Notifications (1-32 Notification 0 cannot be
used).
Conditions for determining when a notification should be active are placed to the left of the notification AOI.
When true the notification will trigger after the NotificationTime_PRE time has expired.
The Notification AOI was written to be configurable and allow the program developer to select how it will function
based on the needs of the process. Configuration of the AOI is done by changing input parameters. The two
base types of configurations for the notifications are Require Acknowledge and Automatically Clearing.
While the silence timer is timing the notification is disabled even if the conditions are still true for the
notification.
The Notification AOI is set up so that only the active Notification (MachineNotifications.ActiveNotification)
will be cleared when the Acknowledge PB is pressed. Only one Notification is cleared each time the
Acknowledge PB is pressed.
Automatically Clearing Notifications are cleared when the trigger for the notification is lost. Automatically
clearing the Notification causes the Silence timer to become enabled.
While the silence timer is timing the notification is disabled even if the conditions become true again for
the Notification.
Version 7.0
Page 32 of 141
Scroll Assembly Programming Standard Specification
The program developer is responsible for entering the descriptions for each notification. The descriptions
for the notifications are located in the Notification UDT. The .Description[0] and [1] should be entered in
order for the correct Notification Message to appear on the HMI.
Figure 18 – AOI_NOTIFICATION
Notification Parameters:
NotificationTime_PRE - Preset time for notification to trigger after the Notification conditions are true.
SilenceTime_PRE - Preset time that the notification will be silenced after the notification is acknowledged
or automatically cleared. During this time even if the conditions are true the notification will not be active.
Version 7.0
Page 33 of 141
Scroll Assembly Programming Standard Specification
AutoClear (BOOL 0 or 1) - If the conditions for the notification are not true the notification will automatically
clear itself and the pop up display will clear from the HMI. “Require Acknowledge” cannot be set if “Auto
Clear” is set. It is up to the program developer if the “AcknowledgeEnabled” option is selected. If it is not
then the only way to clear the notification will be for the conditions to clear.
Require Acknowledge (BOOL 0 or 1) - The Notification will remain triggered even if the notification
conditions are not true. Will require the operator to press the acknowledge button. After pressing the
acknowledge button the notification is silenced even if the notification conditions are still true. “AutoClear”
cannot be enabled when “RequireAcknowledge” is. “AcknowledgeEnabled” must be set when
“RequireAcknowledge” is set.
2.8. Constants
Any number or string that is being compared to or used, that does not change, should be assigned to a tag.
That tag should then be used throughout the program as a constant. Constants are used to make the program
more readable and easier to understand.
The Config_Constants routine provides a centralized location for the definition machine specific constants for
the program developer to use (user defined constants). Any constants that are used by the machine logic are
to be added here as individual tags, with the tags used in the machine logic in place of literal values. Along
with the machine constants, this routine contains the definitions for the machine address constants, machine
tooling constants, and any PanelView Plus pushbutton indicator constants.
All user defined contestants should start with a lower case “c_”. The rest of the constant should be in all
capital letters.
c_CONSTANT_NAME
Version 7.0
Page 34 of 141
Scroll Assembly Programming Standard Specification
The step constant is an .AOI.Stp INT of a user-created tag of the type udt_Step. All udt_Step tags
should be prefaced by “c_STEP”, denoting that it is a constant and a step. Like other constants, all
letters beyond the initial “c_” should be capitalized.
c_STEP_LIFTPALLETOFFCONVEYOR
If the step is not in the main sequence, the sequence name should be included in the constant as well.
c_STEP_PRESTOP_WAIT_PALLET_IN_POSITION
The constant values of the .AOI.Stp fields of each udt_Step tag are assigned automatically in the
AOI_FAULT logic.
The machine tooling constants are defined as individual tags, typically of the type DINT. There are three
types of tooling constants, tooling required, tooling correct, and tooling in error. The tooling required
defines the required tooling for a model that is processed at the station and follows the naming
convention of having a prefix of ‘c_TOOLREQ_’ followed by a description of the model, e.g.
c_TOOLREQ_FRAME53, which indicates the tooling required for a size 53 frame compressor. The
tooling correct constant is used to indicate that the correct tooling is in place for the model that is
processed at the station and follows the naming convention of having a prefix of ‘c_TOOLCORR_’
followed by a description of the model, e.g. c_TOOLCORR_FRAME53, which indicates the tooling is
correct for a size 53 frame compressor. The tooling in error constant is used to indicate the tooling is not
correct for the current model that is being processed and follows the naming convention of having a
prefix of ‘c_TOOLERR_’ follows by a description of the model, e.g. c_TOOLERR_FRAME53, which
indicates the tooling is not correct for a size 53 frame compressor. Below are shown examples of tooling
constants assignments.
Version 7.0
Page 35 of 141
Scroll Assembly Programming Standard Specification
Version 7.0
Page 36 of 141
Scroll Assembly Programming Standard Specification
A set of constants have been created and predefined for use in indicating common statuses. The
constants include machine position, compressor status, and Configuration Control constants. They are
defined in the routine System_Assign_CommonConstants. The system tag ‘c’ of type
udt_CommonConstants has been created to store the values for the constants. These values are not to
be modified by the developer without the written permission of ECT. A full list of the common constants
can be found in Error! Reference source not found. (udt_CommonConstants). Below is an example of t
he logic.
Motion status constants are used to drive the indicators on the PanelView pushbuttons (See section
2.5.3 Digital Output Qualifiers). Most motion status constants have been predefined with the common
constants. These constants should be used whenever possible. In cases where a common constant
has not been defined for the motion status needed a user defined constant should be created and
Version 7.0
Page 37 of 141
Scroll Assembly Programming Standard Specification
assigned a value in the Config_Constants program file. Examples of user defined motion status
constants can be found below.
The Control_XXXXX_Scanner routine contains the logic associated with the triggering of the bar code scanner
when a part is detected at the station pre-stop. There are currently 2 versions of scanner logic. One is
“Control_Banner_Scanner” and is used if the Scanner type is a Banner Barcode Reader. The other scanner
routine is Control_Cognex_Scanner” and is used for Cognex bar code readers. Simply delete the routine that
you are not using. The Scanner logic will trigger the scanner regardless which routine you use. Set one of the
“StationName_TriggeBarCodeReader.Req(X)” Bits where X is an unused bit in the “.Req” word. The routine
will trigger the scanner, verify the data is valid, and move the data into the respective “.Model & .Serial”
locations in the station compressor UDT. There should be no reason to modify any of the logic in this routine.
The remaining logic is to be used “as-is”.
Version 7.0
Page 38 of 141
Scroll Assembly Programming Standard Specification
The scanner trigger logic handles the triggering of the bar code scanner. When a pallet with a part is
detected at the station and the station is in auto or bypass mode and the sequence is in cycle, the
StationName_ScannerData.Trigger flag is set. This flag will initiate a scan. If the data is not received or
is not correct the logic will retrigger a Rescan. The system will rescan “X” number of times where X is
determined by the value in “StationName_BarCodeReader.ReadFailCount_Counter.Pre”. If there is still
no valid data after “X” number of scans the Routine will generate a station fault. The fault will not trigger
until the main station stop is empty to insure it does not interrupt a part in process.
Care should be taken not to apply sequential logic to simple, non-sequential operations. Permission must be
received in writing from Emerson in order to not use sequential logic.
Sequential logic will be implemented using the data type udt_MachineSequence, and a formal ladder
structure.
The Sequence UDT, udt_MachineSequence, is designed to provide the vast majority of variables and tags
required to implement the sequence ladder logic.
A sequence tag of type udt_MachineSequence and a corresponding routine should be created for each
sequential operation. The decision of how many sequences to use in a program should be based on
dependence. If two operations always occur in the same order (a pallet is lifted then the compressor is
transferred), there should only be one sequence. However, if two operations will happen at the same time
they should be separated into two separate sequences (Loading a Bearing at the same time a compressor
is lifted and fixture for pressing). Normally there should always be a main sequence. The main sequence
file should be named Sequence_Main.
Version 7.0
Page 39 of 141
Scroll Assembly Programming Standard Specification
A formal ladder structure is to be utilized when implementing sequential control. The Standard
Development Template will provide much of this structure for the main sequence, requiring the developer
only to fill in certain rungs. The general structure includes a header section featuring general internal
control functions for the sequence itself, followed by groups of steps.
The “Sequence Control Header” refers to the group of rungs at the beginning of the Sequence_Main
routine (as well as any secondary sequences) that control the operation and advancement of the
sequence. The Sequence Control Header contains several components necessary to the function of
the remaining Sequence_Main logic. With the exception of machine specific start conditions and
inputs, the logic contained in the Sequence Control Header should be used “as-is” with no
modifications to the logic without written approval from Emerson, Inc.
Sequence In Cycle
The first rung of the Sequence Control Header, typically Rung 1 in Sequence_Main, defines the
.InCycle bit. The .InCycle bit serves as a qualifier necessary to nearly every rung in Seq_Main. The
sequence is considered “in cycle” in the following conditions; The sequence is in automatic and
started (SeqMain.Start = 1), The sequence is in automatic and in single step mode
(SeqMain.SingleStep = 1), or The machine is in bypass mode (Machine.Bypass = 1). Below shows
the typical conditions for the .InCycle in most machines.
The second rung of the Sequence Control Header, typically Rung 2, is the “Sequence Advance
Control” which involves setting the .Advanced bit. This bit serves as an indicator that the currently
Version 7.0
Page 40 of 141
Scroll Assembly Programming Standard Specification
active step needs to change, and it is permitted to continue to the next or Jump to another step of
the sequence. Example logic for setting the .Advance bit is shown below:
The .ActiveStep tag is a SINT that is equal to the step number that the sequence is currently in.
The .AdvanceStep is an INT that is normally equal to the .ActiveStep, however, when a step is
complete it is incremented to the value of the next step. This indicates that the sequence can
advance to the next step.
The .JumpStep is an INT that is normally equal to the .ActiveStep, however, when the conditions are
correct for the sequence to jump to a different step (forward or backward) its value is changed to the
value of the step that is to be jumped to.
The .SingleStep branch is used when the sequence is placed into single step mode, requiring that
the “Step Advance” push button be pressed on the HMI in order to allow the sequence step to change
(advance or jump). In some cases something in the sequence occurs that requires the bypass of
the “Step Advance” push button because the conditions to advance the step would clear themselves
if the button is not pressed at the correct time. An example of this is pallet motion on the conveyor
(the pallet could move off of a prox that is needed to complete a step before the button is pressed).
In this case EQU instructions should be used to bypass the “Step Advance” push button.
Step Incrementing
The third rung of the Sequence Control Header, typically Rung 3, is called the “Step Incrementing”
rung. It is used to handle the changing of the Active Step pointer to the next or jumped to step. If
the .Advance bit is set, then either the .AdvanceStep or the .JumpStep are different then the
.ActiveStep. The one that is different is copied to the .ActiveStep in order to continue the sequence
from that step. If they are both different the logic will use the .JumpStep value. Along with updating
the .ActiveStep the .JumpStep or the .AdvanceStep are also updated. These three pointers should
Version 7.0
Page 41 of 141
Scroll Assembly Programming Standard Specification
always be at the same value unless a change in step is needed. Example code for this action is
shown below.
The top branch is used to allow a programmer to manually change the value .ActiveStep and have
the program follow correctly. This case should only occur when someone is forcing the number to
change for debug purposes.
Sequence Reset
The next rung involved in the Sequence Control Header, typically Rung 4, is the “Sequence Reset”
rung. This handles resetting the .ActiveStep step pointer back to zero when the sequence is
complete. It also resets the .ActiveStep when the machine is in auto but not in cycle and is Ok to
stop, the machine is in manual and home, or it is the first scan of the program. This ensures that the
machine never loses track of its place in the sequence, and enables a new cycle to start once the
previous cycle has completed or has been terminated for any reason. Along with clearing the
Version 7.0
Page 42 of 141
Scroll Assembly Programming Standard Specification
.ActiveStep the .AdvanceStep and .JumpStep are also cleared. Example code for this action is
provided below.
The next rung of the Sequence Control Header, typically Rung 5, is the “Sequence Start Conditions”
rung. This handles the general sequence start requirements. As can be seen in the example code
provided below, for each machine there could be a set of conditions that need to be met in order for
the machine sequence to execute. Typically, the machine will remain in the Not Ready step of the
sequence until these conditions are met. The program developer should fill in these conditions based
on the requirements of the machine. These are NOT the requirements for the equipment to go into
cycle but are requirements for the sequence to continue past step 0. In the example below the Pre-
Stop Sequence is help at step zero if a machine stop has been requested.
Each step shall follow the same general organizational structure. Where it is feasible, steps shall
be accomplished in a single rung.
Version 7.0
Page 43 of 141
Scroll Assembly Programming Standard Specification
Step Conditioning
Each rung of logic relating to a given step in a sequence should be qualified by two conditions,
the first of which being that the machine is in cycle. The second qualifying condition is an EQU
instruction comparing the Active Step to the step constant. The only step that is active is the
step that has a step constant equal to the SeqMain.ActiveStep. These are the only instructions
normally permitted on the left side of a step rung. All other instructions are included in branches
on the right side of the rung.
Output Branch
If outputs are required in a step they should be located in the top branch on the right side of the
rung. Outputs are enabled in a step by inserting an OTE coil of the output request bit. Two
Request DINTs are included in the tag created when naming an output using the output UDT
(udt_Output), one for use in machine sequences (.Req) and one for use in the Home sequence
(.HomeReq). Each step where the output is to be turned on should have a different bit of the
request word selected so that there is only one OTE instruction for each bit of the DINT.
However, it is not always necessary to include a Request Bit for each step an output should be
on. This only needs to be done if the seal in branch in the Output_Qualifiers routine is not used,
or the output is not yet in its fully active position (moving beyond the step before the motion is
complete) for the given output (see section 2.5.3 Digital Output Qualifiers).
Version 7.0
Page 44 of 141
Scroll Assembly Programming Standard Specification
In some cases, steps contain logic additional to outputs and step completion conditions. For
instance, some steps require moving to a non-consecutive step if certain conditions exist. In
such a case, and where feasible, another branch should be added to the right side of the step
rung. This branch will always be located above the Step Transition branch and normally below
any output branches (if they exist).
In order to jump to a different step the step constant of the step being jumped to should be
moved into the .JumpStep tag. In the example shown below, if an empty pallet is detected, the
Version 7.0
Page 45 of 141
Scroll Assembly Programming Standard Specification
If outputs or Jumps do not exist for that step, a NOP instruction shall be placed on a branch
above the step transition branch in order to maintain the step rung’s overall structure.
The bottom branch on the right of the step rung should always contain the step transition
(complete) requirements. Step transition causes the Active Step pointer to increment to the
next step. Step transition is accomplished by adding 1 to the .ActiveStep and placing it in the
.AdvanceStep tag. Each step in a sequence will use and ADD instruction with identical
parameters.
Version 7.0
Page 46 of 141
Scroll Assembly Programming Standard Specification
Secondary sequences should be linked to other sequences based on the Active Step of the sequence
being linked to, therefore, no calls from any sequence to another are needed. The program developer may
use EQU, LEQ, GEQ, LES, GRT, and LIM instructions to accomplish the comparison. In the example
provided below, the Pre-Stop sequence waits before releasing a pallet into the station until the main
sequence Active Step is equal to a step that indicates it is ready to receive a pallet.
As mentioned above, the developer is required obtain written approval to utilize non-sequential logic for any
operation. Indeed, some simple operations of a non-sequential nature are more easily managed with state
based ladder logic. Such control would be coded within a routine using the “Control_” prefix. If the non-sequential
Version 7.0
Page 47 of 141
Scroll Assembly Programming Standard Specification
logic does not warrant a file of its own the logic can be placed in Control_Async. Please use a comment rung
to separate rungs of non-sequential code based of function.
The program developer is also responsible to replace the qualifiers for the “StationName_Ok_to_Run” tag.
This tag is normally left with just the “MachineAlarms.FaultsPending” qualifier shown below; however, there
may be times that the programmer needs to add more conditions.
Version 7.0
Page 48 of 141
Scroll Assembly Programming Standard Specification
The production line is composed of individual assembly stations. Each station is responsible for a portion of the
assembly process, either by the addition of parts to the assembly, performing an operation on the assembly, or
performing quality tests on the assembly.
Each station receives data in the form of a WIP / Model Reply message from the Configuration Control Master.
The WIP / Model Reply message contains operational parameters and tooling configuration data from the Model
Specifications table and the current compressor assembly’s status from the WIP table. If the station is configured
as a Live Load station (Station that displays component part information), the station will also receive schedule
and parts information from the schedule table in the form of a Schedule Reply message.
A typical station consists of a Pre-Stop and a Station-Stop. These are powered conveyor stops which temporarily
prevent a compressor assembly from moving forward so that some action may be taken. In the case of a Pre-
Stop, the compressor assembly is stopped so that the assembly’s tracking label may be scanned. At the Station-
Stop, the actual processing of the assembly occurs.
In the normal sequence of events, the assembly is scanned by the fixed head scanner located at the Pre-Stop.
Data is sent from Configuration Control to a data storage location for the Pre-Stop.
As the compressor is released from the Pre-Stop into the station the Pre-Stop data is copied into a second data
storage location for the compressor being processed in the station called Compressor.
Once the assembly is processed at the station, the station sends the results to the Configuration Control Master
in the form of a WIP Update message. The Configuration Control Master uses this data to update the assembly’s
status in the WIP table. This typically occurs just before the assembly is released from the station stop.
The following is a general sequence of data handling with the Configuration Control Interface in a standard
station.
Version 7.0
Page 49 of 141
Scroll Assembly Programming Standard Specification
• StationName_SerialModel.Request.TrackingLabel.Serial
• StationName_SerialModel.Request.TrackingLabel.Model
• StationName_SerialModel.TrackingLabel.Serial
• StationName_SerialModel.TrackingLabel.Model
• StationName_WIPData.FHReply.Compressor.TrackingLabel.Serial
• StationName_WIPData.FHReply.Compressor.TrackingLabel.Model
• StationName_WIPData.FHReply.Compressor.Schedule
• StationName_WIPData.FHReply.Compressor.ScheduleItem
• StationName_WIPData.FHReply.Compressor.StationResults.OverallStatus
• StationName_WIPData.FHReply.Compressor.StationResults.StationEnabled
• StationName_WIPData.FHReply.Compressor.StationResults.ResultCode[0-63]
• StationName_WIPData.FHReply.Compressor.Parameter_DINT[0-9]
• StationName_WIPData.FHReply.Compressor.Parameter_REAL[0-9]
• The received WIP message is then copied into StationName_WIPData.PSData tag structure.
• This happens when the station PLC code in System_Receive_WIP detects that this is a new
message.
• The WIP data waits here for the program sequence to check for it.
• The code to accomplish this is already provided in the station template and is only included here
for reference.
• This data is cleared when the station is in manual and there is no part present in the station. Part
presence in the station is determined by the StationName_WIPData.PalletInStation tag found in
the Control_Async routine.
• The following are the tags where the data is copied to while waiting on the sequence:
• StationName_WIPData.PSData.Compressor.TrackingLabel.Serial
Version 7.0
Page 50 of 141
Scroll Assembly Programming Standard Specification
• StationName_WIPData.PSData.Compressor.TrackingLabel.Model
• StationName_WIPData.PSData.Compressor.Schedule
• StationName_WIPData.PSData.Compressor.ScheduleItem
• StationName_WIPData.PSData.Compressor.StationResults.OverallStatus
• StationName_WIPData.PSData.Compressor.StationResults.StationEnabled
• StationName_WIPData.PSData.Compressor.StationResults.ResultCode[0-63]
• StationName_WIPData.PSData.Compressor.Parameter_DINT[0-9]
• StationName_WIPData.PSData.Compressor.Parameter_REAL[0-9]
• StationName_ScheduleData.FHReply.Schedule.Model
• StationName_ScheduleData.FHReply.Schedule.Schedule
• StationName_ScheduleData.FHReply.Schedule.GroupIndex
•
• StationName_ScheduleData.FHReply.Schedule.Quantity
• StationName_ScheduleData.FHReply.Schedule.LongModel
• StationName_ScheduleData.FHReply.Schedule.CustomerAlpha
• StationName_ScheduleData.FHReply.Schedule.CustomerOrder
• StationName_ScheduleData.FHReply.Schedule.PartsCount
• StationName_ScheduleData.FHReply.Schedule.PartsList[0-9]
• StationName_ScheduleData.PSData.Schedule.Model
• StationName_ScheduleData.PSData.Schedule.Schedule
• StationName_ScheduleData.PSData.Schedule.GroupIndex
• StationName_ScheduleData.PSData.Schedule.Quantity
• StationName_ScheduleData.PSData.Schedule.LongModel
• StationName_ScheduleData.PSData.Schedule.CustomerAlpha
• StationName_ScheduleData.PSData.Schedule.CustomerOrder
• StationName_ScheduleData.PSData.Schedule.PartsCount
• StationName_ScheduleData.PSData.Schedule.PartsList[0-9]
Version 7.0
Page 51 of 141
Scroll Assembly Programming Standard Specification
• StationName_Schedule.Schedule.Model
• StationName_Schedule.Schedule.Schedule
• StationName_Schedule.Schedule.GroupIndex
• StationName_Schedule.Schedule.Quantity
• StationName_Schedule.Schedule.LongModel
• StationName_Schedule.Schedule.CustomerAlpha
• StationName_Schedule.Schedule.CustomerOrder
• StationName_Schedule.Schedule.PartsCount
• StationName_Schedule.Schedule.PartsList[0-9]
• While the compressor is at the Pre-Stop checks are performed based on the WIP data received
from the Configuration Control Master. The results of these checks are stored in the PS Pass Fail
Code.
• StationName_WIPData.PSDataResultsPassFailCode
• If the compressor passes all of the checks the PS Pass Fail Code is left at a Not Processed status
(0). If any of the checks fail then it is set to a Bypass (3) so that when the compressor is released
into the station for processing it is “remembered” that this compressor should be bypassed.
• Before the pallet is released from the Pre-Stop the data is copied from the Pre-Stop tag structure
to the Compressor tag Structure (Data for the Compressor in the station).
• The program sequence sets StationName_WIPData.PSDataXferReq. This is done in the Copy
Data to Compressor step in the Sequence_PreStop routine.
• Data is copied from StationName_WIPData.PSData.Compressor to StationName_Compressor
and StationName_WIPData.DataAvailable is set.
• The code to accomplish this is already provided in the station template and is only included here
for reference.
• The following data locations are where the data is copied to in the sequence and should be used
when referencing the compressor in the program.
• StationName_Compressor.TrackingLabel.Serial
• StationName_Compressor.TrackingLabel.Model
• StationName_Compressor.Schedule
• StationName_Compressor.ScheduleItem
• StationName_Compressor.StationResults.OverallStatus
• StationName_Compressor.StationResults.StationEnabled
• StationName_Compressor.StationResults.ResultCode[0-63]
• StationName_Compressor.Parameter_DINT[0-9]
• StationName_Compressor.Parameter_REAL[0-9]
Version 7.0
Page 52 of 141
Scroll Assembly Programming Standard Specification
• StationName_CompressorResults.TrackingLabel.Serial
• StationName_CompressorResults.TrackingLabel.Model
• StationName_CompressorResults.PassFailCode
• StationName_CompressorResults.StationMode
• StationName_CompressorResults.CycleValues[0-9]
• After the compressor has been released into the station the Compressor Results Pass/Fail code
(StationName_CompressorResults.PassFailCode) is used to determine if it should be processed
or not based on the value from the checks performed at the Pre-Stop. If it is determined that it
should not be processed (Determine Cycle Machine Step) then it is released as a bypass
compressor.
• If the compressor is to be processed the Compressor Results Pass/Fail Code is used to monitor
(“remember”) the status of the pallet or the compressor during the cycle. It should be set by the
program developer when the status of the compressor is known.
• After a compressor has been “Processed” (Changed in any way or measured) the Compressor
Results Pass/Fail Code should be set to c.PROCESSED (6). This is used as a flag to “remember”
that this compressor has been processed so that it will not be processed a second time in the
event of cycle stoppage.
• If the compressor rejects or fails the process the Compressor Results Pass/Fail Code should
immediately be set to c.FAIL (2). It is the program developer’s responsibility to set these. It
should be done within the sequence steps and not in a different program file.
• At the end of the Main Sequence the Disposition step will change a compressor that has been
processed to c.PASS (1).
Version 7.0
Page 53 of 141
Scroll Assembly Programming Standard Specification
• StationName_WIPData.Update.CompressorResults.TrackingLabel.Serial
• StationName_WIPData.Update.CompressorResults.TrackingLabel.Model
• StationName_WIPData.Update.CompressorResults.PassFailCode
• StationName_WIPData.Update.CompressorResults.StationMode
• StationName_WIPData.Update.CompressorResults.CycleValues[0-9]
• After the WIP data has been updated StationName_WIPData.MsgCompleted is set. This is done
in the System_Update_WIP routine. This bit indicates to the main sequence that the Log Data
step is complete. The code to accomplish this is already provided in the station template and is
only included here for reference.
• After the WIP update is sent the StationName_CompressorResults tag structure is cleared and is
not available to be used in the program.
Version 7.0
Page 54 of 141
Serial
Model
Request
2.12.2
Scroll Assembly Programming Standard Specification
WI WIP
P Upda
Schedule te
Reply Re
ply 2.12.
2.12.4
Serial Model Request FH Reply Schedule FH Reply WIP Update
StationName_SerialModel.Request StationName_ScheduleData.FHReply.Schedule StationName_WIPData.FHReply.Compressor StationName_WIPData.Update.CompressorResults
• .TrackingLabel.Serial • .Model • .TrackingLabel.Serial • .TrackingLabel.Serial
• .TrackingLabel.Model • .Schedule • .TrackingLabel.Model • .TrackingLabel.Model
• .Quantity • .Schedule • .PassFailCode
• .LongModel • .StationResults.OverallStatus • .CycleValues[0-9]
2.1 • .CustomerAlpha • .StationResults.ResultCode[0-63]
2.2 • .CustomerOrder • .Parameter_DINT[0-9]
• .PartsCount • .Parameter_REAL[0-9]
• .PartsList[0-9]
2.1
2.1
2.3
2.4
Compressor
Serial Model PS Schedule PS Data StationName_Compressor
StationName_SerialModel.Request StationName_ScheduleData.PSData.Schedule StationName_WIPData.PSData.Compressor • .TrackingLabel.Serial
• .TrackingLabel.Serial • .Model • .TrackingLabel.Serial • .TrackingLabel.Model
• .TrackingLabel.Model • .Schedule • .TrackingLabel.Model 2.12.7 • .Schedule
• .Quantity • .Schedule • .StationResults.OverallStatus
• .LongModel • .StationResults.OverallStatus • .StationResults.ResultCode[0-63]
2.1 • .CustomerAlpha • .StationResults.ResultCode[0-63] • .Parameter_DINT[0-9]
2.1 • .CustomerOrder • .Parameter_DINT[0-9] • .Parameter_REAL[0-9]
• .PartsCount • .Parameter_REAL[0-9]
• .PartsList[0-9]
Compressor Results
PS Pass/Fail 2.12.8 StationName_CompressorResults.
StationName_WIPData.PSDataResultsPassFailCode • .TrackingLabel.Serial
• .TrackingLabel.Model 2.12.11
• .PassFailCode
Barcode Reader • .CycleValues[0-9]
Schedule
StationName_Schedule.Schedule
• .Model Messages to and from Configuration Control
2.12.5 • .Schedule
• .Quantity
• .LongModel
• .CustomerAlpha
• .CustomerOrder Internal Station PLC Data Moves
• .PartsCount
• .PartsList[0-9]
Version 7.0
Page 56 of 141
Scroll Assembly Programming Standard Specification
The configuration control interface template includes several UDTs used to implement a specific
functionality. There are base UDTs (UDTs used to create other UDTs) and composite UDTs (UDTs that
contain base UDTs). Also used in the creation of the UDTs are User Defined Strings. The user define
strings are denoted in all capital letters. The developer should not modify these standard UDTs. A
description of each UDT is given below:
Scroll Assembly Programming Standard Specification
udt_MES Composite
Data structure for handling station and build over
udt_ModifyStationUpdate Composite
configuration data
udt_OEE Base
Version 7.0
Page 58 of 141
Scroll Assembly Programming Standard Specification
Version 7.0
Page 59 of 141
Scroll Assembly Programming Standard Specification
A set of standard program routines have been developed for the implementation of the Station
Configuration Control Interface. These routines are designed to be added to the station program with no
modification to the logic contained in each routine. Below is a list of the routines and their description.
Version 7.0
Page 60 of 141
Scroll Assembly Programming Standard Specification
2.15.1. System_Recieve_WIP
The System_Receive_WIP routine is responsible for processing WIP Model Reply messages that
are received from the Configuration Control Master. These messages are sent automatically when
an assembly has been scanned at the Pre-Stop (Fixed Head Scanner). When a new WIP Model
Reply message is received from the fixed head scanner, the data is moved to the pre-stop data
area in the station. The data will remain in the pre-stop data area until the assembly is moved into
the station processing area. When a new WIP Model Reply message is received from the hand
scanner, the data is moved directly into the station processing area.
2.15.2. System_Receive_Schedule
2.15.3. System_Recieve_OperatorExt
2.15.4. System_Recieve_PassThru
The System_Receive_PassThru routine is responsible for processing Pass Thru Reply messages
that are received from the Configuration Control Master. These messages are sent as a response
to the hand scanner processing a bar code that is not of the serial or model type. When a new
Pass Thru Reply message is received, it is moved immediately to the pass thru data area.
Version 7.0
Page 61 of 141
Scroll Assembly Programming Standard Specification
2.15.5. System_Receive_StationConfig
2.15.6. System_Verify_Tooling
The System_Verify_Tooling routine is responsible for the station’s parameter and tooling mapping,
tooling verification, and tooling verification override functions. When compressor data is received
at the station, the enumerated parameters are mapped for use in the verification process. When
the actual tooling matches the requested tooling, the tooling confirmed flag is set. This indicates
that the proper tooling is in place for the current model. The tooling verification can be overridden
by an operator if they have the proper security.
2.15.7. System_Verify_Parts
The System_Verify_Parts routine is responsible for the parts verification at the station. When a
new schedule arrives at the station, the operator will use the hand scanner to verify that they have
the correct parts at the station for processing. Once the parts have been verified, the parts
confirmed flag is set. This indicates that the parts have been verified. The parts verification can be
overridden by an operator if they have the proper security.
2.15.8. System_Request_Schedule
2.15.9. System_Request_Security
2.15.10. System_Update_WIPExt
The System_Update_WIPExt routine is responsible for sending the status of the assembly that was
processed at the station to the Configuration Control Master. This event occurs typically when the
Version 7.0
Page 62 of 141
Scroll Assembly Programming Standard Specification
assembly is released from the station. The Configuration Control Master will use this data to
update the assembly’s WIP record in its local WIP table.
2.15.11. System_Production_Data
The System_Production_Data routine is responsible for the collection of the performance statistics
of the machine. The machine data is collected for the current machine cycle and hourly.
2.15.12. System_Update_Generic
The System_Update_Generic routine is responsible for the collection of user-defined general data
from the station. Data that is collected using the generic data collection message is sent to the
server for storage.
Version 7.0
Page 63 of 141
Scroll Assembly Programming Standard Specification
The “Not Ready Step” checks for the Start Conditions of the sequence (.StartCondOK) to be ok
before advancing onto the next step. Each sequence shall have a “Not Ready Step” as the first
step in the sequence (step 0).
This is the sequence READY or idle step. The machine is waiting for a pallet to arrive at the Pre-
Stop in order to advance to the next step. If start conditions are lost, the sequence will jump back
to step 0.
Version 7.0
Page 64 of 141
Scroll Assembly Programming Standard Specification
After a pallet has arrived at the Pre-Stop this step checks for the presence of a shell on the pallet.
If there is a shell the sequence will advance to the next step. If there is not a shell the Pre Stop
Pass/Fail code (.PSDataResultsPassFailCode) is set to EMPTYPALLET (5) and the sequence
jumps to the “Check Ready for Pallet” Step to wait on the Main Sequence.
To scan the compressor Tracking Label the Trigger Barcode Reader request bit is enabled
(StationName_TriggeBarCodeReader.Req.0). This bit is used in another program file supplied by
Emerson in order to trigger the bar code reader to be used on the machine (a different file will be
used depending on the brand of reader used). That file will turn on the Barcode Read bit
(StationName_ScannerData.BarcodeRead) when the label has been read and the Tracking label
information has been stored in StationName_SerialModel.TrackingLabel.Serial.LEN and
StationName_SerialModel.TrackingLabel.Model.LEN. This allows the sequence to advance to the
next step. If Configuration Control is not available during debug on the seller’s floor the bit
Use_WIP_Override_Data can be toggled which will bypass this step. However, it is still the seller’s
responsibility to get the Barcode reader to scan correctly into the PLC.
Version 7.0
Page 65 of 141
Scroll Assembly Programming Standard Specification
The data read from the Tracking Label is sent to Configuration Control in this step. This is
accomplished by turning on StationName_SerialModel.Req. A system file will take the data stored
in StationName_SerialModel.TrackingLabel.Serial.LEN and
StationName_SerialModel.TrackingLabel.Model.LEN and send it to Configuration Control. If
Configuration Control is not available during debug on the seller’s floor the bit
Use_WIP_Override_Data can be toggled which will bypass this step.
After the Tracking Label data has been sent to Configuration Control this step waits for the WIP
reply from Configuration Control. The WIP reply contains all of the Compressor data necessary to
determine if the Compressor should be run or not. In order to check for the presence of the WIP
reply the tag “StationName_WIPData.PSDataCheckReq” is turned on. While this tag is on if there
is new data that is received a system file will turn on the “StationName_WIPData.PSDataAvailable”
tag to indicate that new WIP data is available for processing. The new data will be placed in the
“StationName_WIPData.PSData.Compressor” tag. When the
“StationName_WIPData.PSDataAvailable” tag turns on the sequence will advance to the next step.
If Configuration Control is not available during debug on the seller’s floor the bit
Use_WIP_Override_Data can be toggled which will bypass this step. Data to mimic the data that
comes from Configuration Control can be placed in the “StationName_WIPOverride.Data” tag.
This data can then be used as if it came from Configuration Control.
Version 7.0
Page 66 of 141
Scroll Assembly Programming Standard Specification
After the WIP data has been received the Schedule of the Compressor at the Pre-Stop is
compared to the Schedule of the Machine. If they are equal the sequence is permitted to advance.
If they are not equal then the Pre-Stop sequence waits until the Main Sequence is at a step where
the parts used in the station have been installed in the compressor before advancing to the next
step. This is done to keep the Parts information downloaded for the compressor at the Pre-Stop
from replacing the parts that were used for the Compressor that may be in the station. The Main
Sequence step at which it is ok to move to the next step can be changed based on the equipment.
Version 7.0
Page 67 of 141
Scroll Assembly Programming Standard Specification
If the schedule of the Compressor at the Pre-Stop matches the schedule of the Machine then the
sequence will advance to the next step. If not match then turning on the
“StationName_WIPData.PSScheduleCheckReq” tag will cause the schedule for the compressor at
the Pre-Stop to become the schedule of the machine. After this occurs then the schedules should
match and the sequence will advance.
Version 7.0
Page 68 of 141
Scroll Assembly Programming Standard Specification
The mode of the machine is checked to see if it is in bypass. If it is in Bypass Mode then the Pre-
Stop Pass/Fail code is set to Bypass (3) and the sequence jumps to the “Check Ready for Pallet”
Step to wait on the Main Sequence.
The compressor’s Buildover Overall (Is the Overall Pass/Fail code of this compressor ok?) must be
verified. If the test fails the BuildOverResult_Overall is returned with a
c.BUILDOVER_RESULT_BYPASS (3). (This check is done in the System_Evaluate_BuildOver
routine and does not need any modifications.) If the test fails the PassFailCode is set to c.BYPASS
(3) so that the compressor can be passed through the station without cycling. The program
“jumps” to the Lower Pre Stop Step to release the pallet into the station without performing any
more Buildover, Tooling, or Parts checks. The code to accomplish this is already provided in the
station template and is only included here for reference. See the example below.
Version 7.0
Page 69 of 141
Scroll Assembly Programming Standard Specification
The compressor’s Buildover Required Stations (Have the stations prior to this station that are
required passed?) must be verified. If the test fails the
BuildOver.BuildOverResult_PreviousReqdStnResults is returned with a
c.BUILDOVER_RESULT_BYPASS (3). (This check is done in the System_Evaluate_BuildOver
routine and does not need any modifications.) If the test fails the PassFailCode is set to c.BYPASS
(3) so that the compressor can be passed through the station without cycling. The program
“jumps” to the Lower Pre Stop Step to release the pallet into the station without performing any
more Buildover, Tooling, or Parts checks. The code to accomplish this is already provided in the
station template and is only included here for reference. See the example below.
Version 7.0
Page 70 of 141
Scroll Assembly Programming Standard Specification
The compressor’s Buildover This Station (Has this station previously ran this compressor?) must
be verified. The evaluation returns a code equal to the compressor’s previous status at this
machine. (This check is done in the System_Evaluate_BuildOver routine and does not need any
modifications.) If the compressor previously passed this station the PassFailCode is set to
c.PASSED_PREVIOUSLY (11) so that the compressor can be passed through the station. If the
compressor previously failed or bypassed this station the PassFailCode is set to c.BYPASS (3) so
that the compressor can be passed through the station without cycling. The program “jumps” to the
Lower Pre Stop Step to release the pallet into the station without performing the Tooling, or Parts
checks. The code to accomplish this is already provided in the station template and is only
included here for reference. See the example below.
If the parts for the compressor at the Pre-Stop have not been verified it is necessary to change the
HMI display to the Parts verification display for the operator. If the parts have been verified then
the sequence jumps to the Check Tools step and bypasses the Display Changes steps. If the
Parts have not been verified the sequence advances to the next step.
Version 7.0
Page 71 of 141
Scroll Assembly Programming Standard Specification
If it has been determined that the parts need to be verified the display is changed to the Parts
Verification HMI display. The current display is “remembered” by moving the value of the current
display into the “StationName_HMI.Return_Display_Number” tag. The constant for the Parts
verification display is then moved into the “StationName_HMI.Remote_Display_Number” to force
the display to change. After it is seen that the current display is the display that is being forced, the
sequence is advanced and the remote display number is set to 0 in order to give the operator back
control of the HMI.
Version 7.0
Page 72 of 141
Scroll Assembly Programming Standard Specification
This step waits on the parts to be verified before advancing to the next step.
After the parts have been verified the HMI display is forced back to the display it was on previously
by moving the “remembered” display number into the Remote Display Number. After the current
display is equal to the “remembered” display, the sequence is advanced and the remote display
number is set to 0 in order to give the operator back control of the HMI.
Version 7.0
Page 73 of 141
Scroll Assembly Programming Standard Specification
If the operator is not currently logged into the machine or the operator that is logged in does not
have rights to operate the equipment, it is necessary to change the HMI display to the Operator
Details display. If the logged in operator has the correct rights to operator the equipment the
sequence jumps to the “c_STEP_PRESTOP_CHECK_READY_FOR_PALLET.AOI.Stp” step and
bypasses the Display Changes steps. If the operator is not logged in, the sequence advances to
the next step.
Version 7.0
Page 74 of 141
Scroll Assembly Programming Standard Specification
If it has been determined that the operator needs to log in the display is changed to the Operator
Details HMI display. The current display is “remembered” by moving the value of the current
display into the “StationName_HMI.Return_Display_Number” tag. The constant for the Operator
Details display is then moved into the “StationName_HMI.Remote_Display_Number” to force the
display to change. After it is seen that the current display is the same as the display that is being
forced, the sequence is advanced and the remote display number is set to 0 in order to give the
operator back control of the HMI.
This step waits until the operator login is completed before advancing to the next step.
Version 7.0
Page 75 of 141
Scroll Assembly Programming Standard Specification
This step waits until the OMS has been verified by the operator.
If the operator that has logged into the machine does not have sufficient rights to operate the
equipment then a mentor will need to log in with them. This step waits until the mentor is logged in
if one is needed.
Version 7.0
Page 76 of 141
Scroll Assembly Programming Standard Specification
After the operator and mentor have logged in the HMI display is forced back to the display it was on
previously by moving the “remembered” display number into the Remote Display Number. After
the current display is equal to the “remembered” display, the sequence is advanced and the remote
display number is set to 0 in order to give the operator back control of the HMI.
In this step the Pre-Stop sequence is waiting on the Main sequence to be ready to receive a pallet.
It is ready to receive a pallet when the Main Sequence is waiting on a pallet or when the Main
Sequence is releasing a pallet. If at any time the operator presses the “Cycle Stop” push button on
the HMI (Machine.Stop becomes active) the sequence will jump back to the Not Ready Step. This
keeps the pallet at the Pre-Stop from releasing into the station when the Main Sequence releases
the pallet in the station.
Version 7.0
Page 77 of 141
Scroll Assembly Programming Standard Specification
After confirming that the Main Sequence is ready to receive a pallet and before releasing the Pre-
Stop pallet the WIP data that was received from Configuration Control for the Pallet at the pre-Stop
must be transferred to the Station Stop (Compressor) for processing. The data transfer is handled
in a System file and is initiated by turning on the “StationName_WIPData.PSDataXferReq” tag.
When the data has been transferred the “StationName_WIPData.SSDataAvailable” tag is set and
the sequence is allowed to advance to the next step.
Lower Pre-Stop
After the data has been transferred the Pre-Stop is lowered by setting the request bit for the Pre-
Stop. The stop is kept lowered until the pallet reaches the pallet entering prox signifying that it is
ok to raise the stop under the pallet.
After releasing the pallet from the Pre-Stop the sequence will wait until the pallet has come off of
the pallet entering prox switch. This signifies that the pallet is completely off of the Pre-Stop.
Version 7.0
Page 78 of 141
Scroll Assembly Programming Standard Specification
After the pallet has cleared the Pre-Stop the sequence waits for the pallet to be in station before
moving on. This prevents “Looping” of the Pre-Stop sequence as the main sequence will still be
waiting on a pallet. The pallet is in position when the Main Sequence moves beyond the Wait for
Pallet step. This has been accomplished here by using a LIM instruction.
The “Not Ready Step” checks for the Start Conditions of the sequence (.StartCondOK) to be ok
before advancing onto the next step. Each sequence shall have a “Not Ready Step” as the first
step in the sequence (step 0).
Version 7.0
Page 79 of 141
Scroll Assembly Programming Standard Specification
Under normal conditions there should never be a part in the station in this step. This step handles
the event in which the sequence is started with a part already in the station. If no part is detected
in the station, the sequence moves to the next step, otherwise, the part is checked to see if it was
in-process or processed when the sequence was interrupted. The results are evaluated and
sequence will jump to the Determine Machine Cycle step if there is a compressor present with
Data. If the compressor at the station stop has a Processed Code (6) then this code assumes
there was an unknown issue with the previous cycle and sets the compressor status to a Fail (2)
before jumping.
Version 7.0
Page 80 of 141
Scroll Assembly Programming Standard Specification
If there was a pallet in the station when the sequence was started and it passed the previous step
(has a serial number with no Pass/Fail code) then this step checks to see if the machine was
placed into Bypass Mode. If it is in Bypass Mode then the Pass/Fail code is set to Bypass (3) and
the sequence jumps to the Determine Cycle Machine step.
If there was a pallet in the station when the sequence was started, it had a serial number, did not
have a Pass/Fail code, and the machine is not in Bypass Mode this step reconfirms the parts were
correct for the Compressor In the station when it was in the Pre-Stop.
Version 7.0
Page 81 of 141
Scroll Assembly Programming Standard Specification
If there was a pallet in the station when the sequence was started, it had a serial number, did not
have a Pass/Fail code, Parts were correct, and the machine is not in Bypass Mode this step
reconfirms the tooling is correct for the Compressor In the station. The
“StationName_Tooling.SS_CheckReq” tag is turned on in order to use the logic in
“Config_Verify_Tooling” to verify the tooling using the Compressor WIP data for the compressor in
the station that was sent by Configuration Control. If the tooling is confirmed the sequence
advances to the next step.
Pallet Detection
This step waits on a pallet to arrive in the station. De-bounce should be handled in the
AOI_DEBOUNCEDINPUT in the IO_MappingInput routine. After the pallet is present the sequence
advances to the next step.
Version 7.0
Page 82 of 141
Scroll Assembly Programming Standard Specification
After the compressor is detected in the station its PassFailCode is cheked to determine if it should
be cycled. If this compressor has previously passed (PassFailCode = c.PASSED_PREVIOUSLY),
Failed (PassFailCode = c.Fail), Should be bypassed (PassFailCode = c.BYPASS), or is an empty
pallet (PassFailCode = c.EMPTYPALLET) then the “Machine.pvResumeAvail” tag is set (in
HMI_Main). After the operator presses the Resume button on the HMI (Machine.pvResume) the
sequence jumps to the wait for downstream clear step to release the pallet without processing. If
the operation should automatically release compressors through the station that should not be
processed without the interaction of the operator, the “Machine.pvResume” XIC can be removed
from the rung.
If the compressor was passed previously the PassFailCode is set to a c.PASS in order to not
change the overall status of the compressor in Configuration Control.
If there is a serial number without a Pass/Fail code the sequence advances to the next step and
the compressor is processed. All steps relating to the operation of the machine should be placed
below this one.
Version 7.0
Page 83 of 141
Scroll Assembly Programming Standard Specification
Determine Retry
This is not a required step, however, if an operation needs to have the ability to retry or rerun all or
part of the sequence, use the provided code. If the status of the compressor is a Fail (2) then a
counter will increment counting the number of retries. As long as the counter is not done the
Reprocess push button on the HMI will be available to press. If the operator presses the
Reprocess push button then the sequence will jump back to whatever step the sequence needs to
in order to correctly reprocess the compressor. It is the programmer’s responsibility to update this
move instruction with the correct step constant. The compressor’s Pass/Fail code and disposition
are also reset. In order for the sequence to resume the compressor needs to be correctly
processed (not a Fail), the retry counter is done so no more retries are possible, or the operator
chooses to press the resume button on the HMI allowing the rejected compressor to be released.
This rung can be modified based on operation requirements if needed with Emerson approval.
Part Disposition
If by the end of the sequence the PassFailCode is still set to a c.PROCESSED (6) then it is set to a
C.PASS in the Disposition step of the sequence footer. If it is not set to a Processed it will default
to a Fail. It is the program developer’s responsibility to make sure that the PassFailCode is set
correctly by this step in the sequence. This data tag is used when the WIP update is written to the
Configuration Control Master to indicate the compressor status at the end of the cycle (See Error! R
eference source not found. Error! Reference source not found.)
Version 7.0
Page 84 of 141
Scroll Assembly Programming Standard Specification
The Wait For Downstream Clear step checks the conditions downstream of the station to ensure
that it is safe to release the part from the station. The logic for the Wait for Downstream Clear step
is shown below.
Version 7.0
Page 85 of 141
Scroll Assembly Programming Standard Specification
Release Pallet
The Release Pallet step controls the releasing of the pallet from the station. The station stop is
lowered until the pallet exiting station stop input is made. Dry cycle branch can be removed after
qualification if needed.
Version 7.0
Page 86 of 141
Scroll Assembly Programming Standard Specification
After the pallet is released the Exiting Station Stop prox switch is monitored for an off condition.
This confirms that the pallet that was being released is completely out of the station and if the
Pallet In Position prox is still made it is a new pallet and not the one just released.
Final Step
This is the normal Final Step that is required for each sequence, however, unlike in other
sequences it also turns on “StationName_CurrentCycle.RecordCycleDataReq” in order to
log station statistical data in a System file.
Version 7.0
Page 87 of 141
Scroll Assembly Programming Standard Specification
The First two rungs copy the downloaded WIP parameters into StationName_Tooling.Required_DINT[0-9] and
StationName_Tooling.Required_REAL[0-9]. These Tooling Required Data locations should be used throughout
the remainder of the tooling verification code.
If verifying for the compressor at the Pre-Stop the “StationName_Tooling.PS_CheckReq” is turned on from the
Pre-Stop Sequence and the WIP data for the Pre-Stop Compressor is copied.
If verifying for the compressor in the station the “StationName_Tooling.SS_CheckReq” is turned on from the
Main Sequence and the WIP data for the Compressor in the station copied.
Version 7.0
Page 88 of 141
Scroll Assembly Programming Standard Specification
Verification Logic
Each tooling type should have its own tooling verification rung. To verify that the correct tool is in the machine
the corresponding StationName_Tooling.Verified[x] bit should be set, where x is replaced with the Tooling
Verified array index number. Normally it makes the code simpler if the same index that was used for the tooling
parameter is used for the tooling verified array index. This is not always possible as some tooling requires more
than one parameter to verify it. Notice that in the example below StationName_Tooling.Required[0] sets the
StationName_Tooling.Verified[0] bit (both use index 0). The Tooling required parameter is compared with the
constant that indicates what tool is being requested by the tooling parameter (see section 2.8.2 Step Constants
The step constant is an .AOI.Stp INT of a user-created tag of the type udt_Step. All udt_Step tags should be
prefaced by “c_STEP”, denoting that it is a constant and a step. Like other constants, all letters beyond the initial
“c_” should be capitalized.
c_STEP_LIFTPALLETOFFCONVEYOR
If the step is not in the main sequence, the sequence name should be included in the constant as well.
c_STEP_PRESTOP_WAIT_PALLET_IN_POSITION
The constant values of the .AOI.Stp fields of each udt_Step tag are assigned automatically in the
AOI_FAULT logic.
Machine Tooling Constants). This comparison is then qualified by feedback from the machine indicating
what tool is actually installed. Each tool for this tool type should have its own branch. Each tool type should
have its own rung.
To drive the tooling HMI display (see section 4.4.9 Tooling Verification Display)
StationName_Tooling.Actual_DINT[x] must be changed to reflect the tool that is actually installed in the machine
and if it is the correct tool. Feedback is used from the machine to indicate what tool is actually in the machine,
and then based on a comparison to what the tooling parameters are indicating should be the correct tool, a
constant is moved into StationName_Tooling.Actual_DINT[x] to drive the HMI multistate indicators. Each tool
for a tooling type should have 2 branches. One indicating that it is the tool installed and it is the correct tool and
one indicating that it is the tool installed and it is NOT the correct tool. Each tool type should have its own rung.
Version 7.0
Page 89 of 141
Scroll Assembly Programming Standard Specification
All of the tooling verified bits are summed together to get the overall Tooling Confirmed status of the machine
that is used in the machine sequence to make sure that the tooling is correct before continuing. Depending on
what sequence is requesting the tooling verification, the confirmed constant is moved into the correct tag. See
the example below. The descriptions for the verified bits should be changed from the generic descriptions in the
Station Template to reflect what tool is being verified.
Version 7.0
Page 90 of 141
Scroll Assembly Programming Standard Specification
In some cases, it is necessary for the equipment to have the tooling manually selected when verifying motions
or running the machine in Manual mode. For this logic should be added at the end of the Config_Verify_Tooling
in order to allow for this selection. Logic should be patterned after the logic used for IO_OutputQualifiers. When
manually selecting a tool the corresponding constants should be moved into the Tooling Required tag and
Compressor WIP parameters. This data will be overwritten by Configuration Control the next time a Compressor
barcode is read.
Latch instructions should NOT be used, and replaced with branched seal-in logic. For example, the
following logic should not be used:
Latch instructions should never be used to trigger any output. Latch instructions can only be used with
written permission of Emerson.
Version 7.0
Page 91 of 141
Scroll Assembly Programming Standard Specification
Code jumps using the JMP instruction should not be used, as this practice often yields code that is
problematic to troubleshoot. The desired function of not evaluating sections of code should be
accomplished using Status bits and XIC instructions at the start of each rung. Likewise, MCR instructions
should also be avoided.
Version 7.0
Page 92 of 141
Scroll Assembly Programming Standard Specification
3. Robot Interface/Programming
Robots will be set up in PLC Ethernet I/O tree using Fanuc AOP 1.33. Fanuc AOP 1.33 is available upon
request. Robot IP address will be designated by Emerson Controls Engineer. AOI_Robot will be utilized for
mapping of all communications of robot IO/UOP.
Dual Check Safety (DCS) zones will be utilized for all robots to prevent damage to the robots or any other
object that may be in the robots range of motion. DCS zones are to be inspected by Emerson Engineering
before robot start up to ensure all safety areas are thoroughly considered.
The PLC program is responsible for control of all robot movement. The best analogy for
robot control is to use the PLC for the traffic cop instructing the robot what action needs to
be completed within the cell. Each robot in a cell (if there are more than one) will contain
their own individual Control_Robot routine and Robot_Sequence. The PLC programming
will be gone into detail in the section. A detailed breakdown of each routine follows.
3.3.1. Control_Robot
The Control_Robot routine is used for all non-sequenced control of the robot. The top 5 rungs of this
routine are dedicated to enabling the robot to either run in a manual mode or an auto mode. In
manual mode the robot is controlled by the operator push buttons. In Auto mode the robot motion is
dictated by the robot sequence. The 4 rungs below show the manual and auto mode logic.
Version 7.0
Page 93 of 141
Scroll Assembly Programming Standard Specification
Rung 5-107 contain the individual configuration of the robot AOI and all subsequent mapping. Rung
5 contains the Robot AOI. These rungs were designed with the intend of minimal programming
needs upon setup. One of the items that will need to be configured is the SafetyGatesOK bit, as well
as the ALLEStops bit. There are both bits controlled in the safety portion of the PLC, what these bits
are used for should be self-explanatory, but we will go into further detail. One should be tied to the
conditions of the Safety gates and the other should be tied to the E-stops inside the safety routines.
The creation and proper configuration of these two bits will enable the proper function of the robot
UOPs.
Version 7.0
Page 94 of 141
Scroll Assembly Programming Standard Specification
In rung 14, the command to run PNS_0001 is utilized. This rung makes it possible to run the robot in
both manual and auto mode. The Robot.PNS_0001 command handles strobing the PNS_0001
command into the robot.
Rungs 16 thru 55 map any DI in the robot to an output in the PLC. For example, if you wanted to
indicate to the robot that the pallet lift was raised for a 53 Frame, it would look like the rung below.
The robot would then be able to look at digital input 1 to see the status of the lift. Rungs 56-60 are
responsible for feeding integers into the robot via group inputs. Group input 1 is reserved for the
robot_command. Rungs 62 thru 100 are utilized for feeding the robot outputs into the PLC into our
AOI_Debouncedinput command. The group outputs are mapped to robot integers in rungs 103-107.
The commands following that are used to build the robot motion commands, built in the same fashion
as the PLC outputs. There are three rungs to set up a robot motion command. The first rung is used
to set the HMI indicators. The second rung is used to set the safetoinitiate, safetomaintain, and
pvAvail bits. If there are conditions which we do not ever want to have in place before commanding
robot motion, than that should be set up in the safetoinitiate rung. This keeps from duplicating logic
in the manual step and decision step in the robot sequence. The third rung in a robot motion
command is the rung responsible for entering the config constant motion integer into the
robot_command location. See example below.
Version 7.0
Page 95 of 141
Scroll Assembly Programming Standard Specification
Following the rungs containing the robot motion commands, there are some data handling functions.
In the event that the robot gripper is picking a part and transferring data, this can be used to handle
this functionality. Similar logic is used in several Emerson programs.
There is area in the robot control for the any robot outputs that are actuated from the PLC such as
grippers. The final rungs are dealing with the pause functions for the robot motion commands.
These rungs are built for each robot motion that has a position that would need to be retaught during
normal operations, such as pick or place positions.
Version 7.0
Page 96 of 141
Scroll Assembly Programming Standard Specification
3.3.2. Sequence_Robot
The sequence for the robot is intended to allow the PLC to control the robot motion. There, robot
sequence is designed such that there are two ways for the robot to begin motion, the manual step is
designed to be used if an operator or technician has decided to manually manipulate the robot motion
command. The manual step will allow the robot sequence to run without using the decision logic.
This is why it is important that the safe to initiate bit is set up properly to not allow an operator to
place a part when a part is already present.
The decision step is used to direct robot motion while in the auto mode. The decision step should
entail the traffic cop portion of the programming helping to move the robot motions in the most
efficient way possible. The reasoning for placing this programming in the PLC instead of the Robot
is it becomes easier to manipulate in the event the plant wishes to change the priority of robot
motions.
The sequence steps controlling the robot motion are primarily consisting of 3 steps, one initiating the
robot motion via an output request, one actuating any robot EOAT motion, ie closing or opening
grippers, and finally waiting for the robot motion to be completed and jumping to the final step of the
sequence.
4. Operator Interface
4.1. Hardware
All control systems provided will utilize Allen-Bradley PanelView Plus operator interface. The operator interfaces
will feature touch panels, and Ethernet communications. Acceptable models are listed in the Scroll Assembly
Industrial Equipment Standards.
Please see the RFQ for the equipment to determine what firmware revision should be used for developing all
HMI applications.
This standard includes which displays are to be included, the general layout of these displays, display navigation,
manual interaction with a sequence, manual control of machine equipment, access to maintenance and
configuration parameters, and alarm and fault handling.
Version 7.0
Page 97 of 141
Scroll Assembly Programming Standard Specification
As with the PLC code, a Standard Development Template is provided for implementing a standard operator
interface. The template includes common design elements such as headers, buttons, labels, fonts, colors, etc.
Additionally, the template provides a series of standard displays, of which some pre-configured functionality will
be provided.
Also included will be a repository of common used display elements such as manual control buttons and standard
machine graphics. By utilizing this standard layout and pre-configured display elements, the developer insures
a final interface that conforms to the standard look and feel desired.
4.4. Displays
A set of standard displays will be available at each PanelView. The displays are provided in the Standard
Development Template. The developer will add elements specific to the machine being manufactured. Many
displays will require little to no modifications by the developer, such as the Live Load and Production Data
displays. At times, one display will not be sufficient to hold all the elements required. In such cases multiple
displays of the same type should be added and labeled accordingly: “Manual Control 1” and “Manual Control 2”,
or “Manual Control Press” and “Manual Control Conveyor” for example.
[ALARM]
[NOTIFICATION]
Version 7.0
Page 98 of 141
Scroll Assembly Programming Standard Specification
018 - Operator Disposition Allows user to select reject reason when rejecting
18
Reject Selection Pop Up a compressor.
Version 7.0
Page 99 of 141
Scroll Assembly Programming Standard Specification
50 – 59 (Manual
050 - Manual Control Manual control of the machine equipment
Control Displays)
60 – 69 (Manual Servo
060 - Manual Servo Control Manual control of Servos on the equipment
Control Displays)
Numbers have been included as a prefix to the Display name. This is to force organization to the
Display navigation in Factory Talk Studio. The numbers assigned are also to be used as the
Display Number in the Display settings of each Display. This allows for easier organization when
using Display forcing from the PLC.
Version 7.0
Page 100 of 141
Scroll Assembly Programming Standard Specification
Please follow the Numbering found in the standard Display Table when creating new displays not
in the Template. The added zeros in the display name are to allow more than one station to be
included in the same HMI and force those displays to be together. The second station would have
display numbers of 100 – 199. The Third station would have display numbers from 200 – 299,
etc…
Version 7.0
Page 101 of 141
Scroll Assembly Programming Standard Specification
The figure below show the application Explorer listing of Displays included in the Station Template panelview
application.
Version 7.0
Page 102 of 141
Scroll Assembly Programming Standard Specification
The figure below shows the Main display which illustrates many of the common elements that will appear
on most standard template panelview displays. These elements are enumerated for a detailed
description below.
(1) Header
The Header displays the station name and indicates active alarms with a
background that will change to a red color and active Notifications by changing
to yellow. If the machine is being built for a non-English speaking plant, the
Header will also allow the operator to select the language. The header is
implemented as a global object.
The application programmer will change the text for the header from “Station
Name” to the actual name of the machine. This text element is located on the
Main display. The Header background elements are implemented as a Global
Object because, as a group, they appear on multiple displays. The application
programmer does not need to change the global object because the tag
referenced is a standard that is specified in the PLC template.
Version 7.0
Page 103 of 141
Scroll Assembly Programming Standard Specification
The application programmer will not need to make any changes to the Page
Change Bar in the template (unless a multi station machine is being
programmed, discuss this with an Emerson engineer if necessary). If the
application programmer provides other navigation options in a machine
panelview application, these options should retain the look of the elements
found in the Page Change Bar.
(3) Footer
The Footer provides two elements that display the state of the machine. The
left-hand element is named “Machine Status” and displays Mode and other
status information about the machine. The right-hand element is named
“Sequence Status” and displays the current main sequence step number and a
description of that step.
The application programmer does not need to make any changes to the
“Machine Status” element. It references a standard template tag and the
meanings of the values are standardized.
The application programmer will not normally need to modify the “Sequence
Status” element. The “Sequence Status” element is primarily a string display
element and a numeric display element that are connected to standard tags in
the PLC. The only time this will need to be modified is if the application
developer is not using the standard tag name for the main sequence. The
footer is implemented as a global object.
The application programmer does not need to make changes to the Part
Schedule Bar if the machine is a Live-Load station. If the machine will not be
a Live-Load station, then the Schedule and Long Model elements should be
hidden in the Part Schedule Bar by changing the properties. The serial and
model elements should remain because these elements are common to all
stations, both Live-Load and non-Live-Load.
The application programmer does not need to make changes to the Operator
Bar. The Operator Bar is implemented as a global object.
Version 7.0
Page 104 of 141
Scroll Assembly Programming Standard Specification
The application programmer only needs to change the text in the Header bar for the Main display as
described previously. No other changes are required.
Version 7.0
Page 105 of 141
Scroll Assembly Programming Standard Specification
Version 7.0
Page 106 of 141
Scroll Assembly Programming Standard Specification
Version 7.0
Page 107 of 141
Scroll Assembly Programming Standard Specification
The application programmer will have to add a Manual Control Pushbutton for each motion of the
machine that the operator can control. For opposing motions (such as Up and Down) a set of two
pushbuttons is required.
The standard pushbutton element consists of two panelview objects: a Momentary Pushbutton object
stacked on top of a Multistate indicator object. This approach is taken to allow the color coding and state
display of the output controlled by the pushbutton. The pushbutton will indicate both the current state of
the output plus whether the button is available to the operator or if it is locked-out due to the machine not
being in manual mode or some other coded interlock. The standard pushbutton element color scheme
also indicates if the motion is the normal (home) state or not for the machine.
The application programmer must be careful to satisfy the color and caption conventions for the standard
pushbutton element (See section 4.6 Typical Button Object).
Version 7.0
Page 108 of 141
Scroll Assembly Programming Standard Specification
Version 7.0
Page 109 of 141
Scroll Assembly Programming Standard Specification
The I/O Navigation Display provides Navigation buttons to individual I/O displays for each input and
output module in the system. The application programmer will have to add one Goto Display object for
each input and output module in the machine and link it to a detailed I/O display for that module.
Version 7.0
Page 110 of 141
Scroll Assembly Programming Standard Specification
The I/O display names each I/O point on a given I/O module and shows its current state. It also
describes the location of the module and lists some addressing information for it. The display will be
used by maintenance personnel when troubleshooting the machine.
The application programmer must provide a separate display for each I/O module used by the machine.
The programmer will update the text at the top of the display to indicate the modules position in the rack,
its type and addressing in the PLC. The programmer then must address each state indicator to its
corresponding address for the input or output and provide a text description for the I/O point.
Analog I/O cards should include information as to the current count value and scaled value.
Version 7.0
Page 111 of 141
Scroll Assembly Programming Standard Specification
Version 7.0
Page 112 of 141
Scroll Assembly Programming Standard Specification
Version 7.0
Page 113 of 141
Scroll Assembly Programming Standard Specification
The Operation Display provides Navigation buttons to the Standard Setup and Reporting displays. The
application programmer does not need to make any changes to this display.
Version 7.0
Page 114 of 141
Scroll Assembly Programming Standard Specification
The Tooling Verification Display provides indicators for the operator to show the Required Tooling per
the Configuration Control system and the actual Installed Tooling as determined by the machine I/O.
Color coding on the displays indicates whether the Installed Tooling matches the Required Tooling.
There is also and indictor that will tell if the Tooling Check is being overridden.
The application programmer will provide a Required Tooling Indicator and an Installed Tooling indicator
for each tool that is to be verified for the machine. The naming convention for the tags to drive the
indicators follows a simple array index pattern (see section 2.18 Tooling Verification). The application
programmer must get the descriptions for each of the possible tooling states from the machine
programmer. The color convention should also be followed. A Red background indicates what tool is
installed but indicates it is a miss-match with what is required. A Green background indicates what tool
is installed and that it is a match with what is required. Each separate tool type should have its own
indicator. Each tool type can have many pieces of tooling indicated by the different text.
Version 7.0
Page 115 of 141
Scroll Assembly Programming Standard Specification
The Current Schedule display displays details and parts for the Live-Load schedule of the compressor in
the station (or last compressor to be processed through the station). The Live Load display also allows
the operator to browse upcoming or past schedules. The Live Load display is only used for machines
that are designated as Live-Load stations.
The application programmer does not need to make any changes to this display. The display utilizes
standardized tags and programming in the PLC. Some of the objects in the display connect to standard
tags in the Configuration Control Master.
The program developer should replace all the station tag pointers to the correct station as specified by
Emerson. This can be done with a search and replace with every item on the display selected.
Version 7.0
Page 116 of 141
Scroll Assembly Programming Standard Specification
The Schedule Details Pop-up is a companion to the Current Schedule display. This pop-up shows parts
list details for browsed schedules.
The application programmer does not need to make any changes to this display.
Version 7.0
Page 117 of 141
Scroll Assembly Programming Standard Specification
The application programmer only needs to replace the connection tag prefixes. The display utilizes
standardized tags and programming in the PLC.
Version 7.0
Page 118 of 141
Scroll Assembly Programming Standard Specification
The Verification Override Display guides the operator through the process of overriding either Parts
Verification requirements or Tooling Verification requirements for a station. This display also displays the
amount of time or number of cycles remaining before the override expires. This display will also allow
the operator to clear an override at any time.
The application programmer does not need to make any changes to this display if the machine is both a
Live-Load station and has verified tools. If the machine is not a Live-Load station the programmer
deletes all elements in the Parts Override frame. If the machine does not have verified tools (very rare)
the programmer deletes all the elements in the Tool Override frame.
Version 7.0
Page 119 of 141
Scroll Assembly Programming Standard Specification
The Operator Disposition Display allows the operator to manually set the disposition of a compressor to
Pass or Fail and to navigate to the display when the operator can override the reject reason. This
display also displays Overall Status of the compressor, this station’s results, and reject reason to the
operator. The Components on this display are implemented using global objects so that they can be
used on other displays.
Version 7.0
Page 120 of 141
Scroll Assembly Programming Standard Specification
When pressing fail a new display is popped up allowing the operator to select the reason the compressor
is being Rejected. The operator has the option of canceling the rejection of the compressor or scrolling
up/down to select the reason for the reject. After selecting the reason for the reject the Accept button is
pressed. The application programmer only needs to modify the reject reason list if one is supplied by
Emerson. Some machine will not require a list of reasons other than manual reject. The code for these
reasons should also be included in the list box. If desired the selection box can be replaced with push
buttons to select the reasons for a Reject. These can be tied to Bit Pack data types in Configuration
Control.
Version 7.0
Page 121 of 141
Scroll Assembly Programming Standard Specification
The Production Data Display displays standardized production metrics for a station. The application
programmer does not need to make changes to this display as it is a standardized display.
Version 7.0
Page 122 of 141
Scroll Assembly Programming Standard Specification
The Production Data Display displays standardized production metrics for a station. The application
programmer does not need to make changes to this display as it is a standardized display.
Version 7.0
Page 123 of 141
Scroll Assembly Programming Standard Specification
The Alarms Display displays standardized alarm information for a station. This display allows the
operator to acknowledge machine faults. Finally, this display also provides access to the operator to exit
the panelview application. The application programmer does not need to make changes to this display as
it is a standardized display. This is the only display that does NOT use the global object for the
navigation bar.
Version 7.0
Page 124 of 141
Scroll Assembly Programming Standard Specification
The Exit Confirmation Pop-Up provides a mechanism to the operator to exit the panelview application.
The application programmer does not need to make any changes to this display.
Figure 110 - Object Explorer below shows an example Object Explorer display. Note that the groups can be
expanded or collapsed. Table 7 – Object Suffix Naming Convention lists commonly used suffixes and their
meaning.
Version 7.0
Page 125 of 141
Scroll Assembly Programming Standard Specification
_GROUP Group
_TEXT Text
_POLY Polygon
Version 7.0
Page 126 of 141
Scroll Assembly Programming Standard Specification
The Property Panel provides access to a panelview objects settings. It is especially useful for changing
an elements name or caption.
This section explains the Typical Button Object. The Typical Button really consists of a Momentary
Pushbutton stacked on top of a Multistate Indicator. The Momentary Pushbutton and Multistate Indicator
are designed to be the same size and look very similar with some subtle differences. This stacked
arrangement was chosen to allow the operator to be able to know the status of an output with the
multistate indicator while the push button is not visible (when control of the motion is not available for
operator control).
The visibility of the Momentary Pushbutton is controlled by the .pvAvail tag of a standard output. The
Momentary Pushbutton is only visible if it is available for operator control. An output may not be
available for control if the machine is not in Manual mode or if some programmed interlock for the output
is active (see section 2.5.3 Digital Output Qualifiers).
Version 7.0
Page 127 of 141
Scroll Assembly Programming Standard Specification
The Multistate Indicator that is below the Momentary Pushbutton is always visible. Both the Multistate
Indicator and the Momentary Pushbutton show an output’s state with their color. The Momentary
Pushbutton and Multistate indicator follow a specific color and caption scheme which must be followed.
This scheme is described below.
Dark Blue = The motion can be performed by pushing the PB (Not in the active position). The
caption will be in the verb form – object (i.e. Lower Station Stop or Extend Arm)
indicating what will happen if the output is to be energized.
Light Blue = The motion is in this position which is not the home position of the motion (In the
‘Extended’ position). The caption for the button once it reached the active position will
be in the form object –verb (past tense) (i.e. Station Stop Lowered or Arm Extended)
indicating the position of the motion.
Green = The motion is in the home position of the motion. The caption for the button once it
reached the active home position will be in the form object –verb (past tense) (i.e.
Station Stop Raised or Arm Retracted) indicating the position of the motion.
Pink = Error State or the motion. The caption should match the de-energized output condition.
The Typical Multistate Indicator follows a similar color and caption scheme as the Momentary
Pushbutton with one exception. The exception is that the border color is gray with the motion is not in
the active position instead of dark blue. This will provide a “Grayed Out” look that indicates to the
operator that the button cannot be pressed. This “Grayed Out Button” will only be visible when the push
button above the Multistate Indicator is not visible (not available). The visibility of the Momentary
Pushbutton is controlled by the .pvAvail tag of a standard output (see section 2.5.3 Digital Output
Qualifiers).
Version 7.0
Page 128 of 141
Scroll Assembly Programming Standard Specification
Grey = Will provide the ‘Grayed Out’ look of the push button when the motion is not in the active
position of the motion but the push button above it is not visible because it is not safe to
move. The caption will be in the form verb – object (i.e. Lower Station Stop or Extend
Arm) indicating what will happen if the output is to be energized.
Light Blue = The motion is in this position which is not the home position of the motion (In the
‘Extended’ position). The caption for the button once it reached the active position will
be in the form object –verb (past tense) (i.e. Station Stop Lowered or Arm Extended)
indicating the position of the motion.
Green = The motion is in this position which is the home position of the motion. The caption for
the button once it reached the active home position will be in the form object –verb (past
tense) (i.e. Station Stop Raised or Arm Retracted) indicating the position of the motion.
Pink = Error State or the motion. The caption should match the de-energized output condition.
Please use the color settings below in Figure 115 through Figure 120 for the objects in the typical
button.
Version 7.0
Page 129 of 141
Scroll Assembly Programming Standard Specification
Version 7.0
Page 130 of 141
Scroll Assembly Programming Standard Specification
Buttons can be copied from the buttons provided in the template; however, these will then need to be
renamed to follow the example in Figure 121. Please keep button objects grouped together as shown.
Version 7.0
Page 131 of 141
Scroll Assembly Programming Standard Specification
The state of the button’s text is controlled by the .pvIndicator tag for the button in the PLC See section
2.5.3 Digital Output Qualifiers).
4.7. Tags
The use of HMI tag definitions within the PanelView application should be avoided. All tags should be
referenced directly from the PLC using an RS-Linx Enterprise configured topic.
Consider the following example. A voltage sensor, LineVoltage, has a mapped tag, AI_LineVoltage.Eng,
within a PLC. A topic, [PLC], is configured in RS-Linx Enterprise pointing to the machine PLC. (It is
preferred to name the topic using the generic name ‘PLC’ as this allows copying and pasting elements
between applications without the need to modify object tag connections.) A numeric indicator is added to
a PanelView display. In the Connection tab of the Properties panel for this indicator, the tag address
referencing the PLC tag can be entered directly into the Value property. In this case, the address would
be: {[PLC] AI_LineVoltage.Eng}
This practice avoids having to define tags within the HMI tag editor, and simplifies maintenance
troubleshooting.
Version 7.0
Page 132 of 141
Scroll Assembly Programming Standard Specification
4.8. Alarms
Setting up alarms for the template panelview application involves two steps: Verifying or creating the Alarm
trigger and then providing a descriptive Message for the alarm. Alarm triggers 0 – 599 for the standardized
Machine.Alarms tag have been pre-built and entered into the Triggers tab of the Alarms setup dialog box.
They can be viewed from the Triggers tab of the Alarm setup dialog as shown below. The alarm descriptions
are delivered to the HMI via PLC tags. When setting up the HMI alarms you will need only to update each of
the sequence descriptions and sequence .ActiveStep tags. This can be done by copying the column into
Excel and changing them with formulas. All alarms will be named in the PLC.
Version 7.0
Page 133 of 141
Scroll Assembly Programming Standard Specification
The Message for a corresponding alarm is configured in Messages tab of the Alarm Setup dialog as shown in
the figure below.
Version 7.0
Page 134 of 141
Scroll Assembly Programming Standard Specification
There are multiple parameter files included with the standard template panelview application.
o BrowseSchedule Files
▪ Configuration Control Station Number (Provided by Emerson)
o MessageDiagnostics Files
▪ StationName needs to be replaced with the Station tag prefix used in the PLC.
o Model ParameterPopUp Files
▪ StationName needs to be replaced with the Station tag prefix used in the PLC.
The application developer must set the communication path for the Device Shortcut named “PLC”. Shortcut
“PLC” will be directed to the machine plc and this is source for the majority of the displays in the panelview
application. There is a second Device Shortcut in the standard template application named “ConfigCtl”. This
shortcut is for the Configuration Control plc. The application programmer will likely not have the information to
set this path prior to commissioning.
Note that there are two sets of shortcuts that are configured for a panelview plus application. These are
named Design (Local) and Runtime (Target). Design refers to the path used when communicating to the plc
from the development PC or laptop. Runtime refers to the path to the plc that will be used by the actual
Version 7.0
Page 135 of 141
Scroll Assembly Programming Standard Specification
Panelview Plus terminal. Often these paths are the same and button is provided by the dialog to copy the
Design shortcut paths to the Runtime shortcuts.
When the panelview application has been completed, its strings should be exported using the String Export
wizard. The file generated will then be submitted to Emerson for translation. When exporting strings, be sure
to select “Export … to an Excel spreadsheet” and “Optimize duplicate strings” as shown below.
Version 7.0
Page 136 of 141
Scroll Assembly Programming Standard Specification
Version 7.0
Page 137 of 141
Scroll Assembly Programming Standard Specification
Version 7.0
Page 138 of 141
Scroll Assembly Programming Standard Specification
Version 7.0
Page 139 of 141
Scroll Assembly Programming Standard Specification
Version 7.0
Page 140 of 141
Scroll Assembly Programming Standard Specification
Version 7.0
Page 141 of 141