Skip to content

Setup Instructions

tomookay edited this page Dec 18, 2023 · 9 revisions

Instructions for building a machine using the framework

Preamble

For a given process, it should be split into stations and then groups of motions. For an indexing rotary machine with distinct stations, e.g. Camco https://www.destaco.com/rotary-positioning/mechanical-indexers/mechanical-rotary-indexers-rd.html each position would have its own station from 1-6

Template Setup

  • Read FC_Setup.TcPOU and alter the TRUE/FALSE as as required

General Instructions

  1. Decide on how many stations exist (1 to 6) a. write station names e.g. "Load" "Robot" "Test" "Press" "Camera", etc and enter them into "StationNames" text list

image

b. enable logic for each stations (WIP) 2. a. For each station, and for each MotionRow, enter the inputs and outputs required, and/or enter complex logic for an external device, e.g. servo drive, camera, etc

image

The IO is pre-mapped for a basic cylinder and only requires mapping to the I/o module

image image

b. Enter the interlocks and prompt, if required

c. Enter the text for the MotionRows in the MotionRowText TextList

image

The texts are split for 20 rows per motion line starting from 10000

  • 10000 for station 1
  • 20000 for station 2
  • 30000 for station 3
  • 40000 for station 4
  • 50000 for station 5
  • 60000 for station 6

If it not known where the text exists for a given row, the project and be run on the XAE and the displayed number checked in the MotionRowText listing

  1. a. Enter the alarm text for each Motion called in the station(s)

image

image

Each Alarm group for a MotionRow is grouped into slots of 10. 5 are reserved for the motion block and the remaining 5 are free to use

  1. Enter logic for power on, enable contactors, etc in the Mc (machine) section also referred to as station 0

  2. Commissioning motion

At this point, it should be possible to actuate each motion in turn, depending if the above steps were skipped or not, therefor it is possible to check the process and message of each motionrow in isolation of other motions (functions of groups) on the machine in question

  1. Automatic cycle logic

It is possible to get to this point in the machine's build/commissioning project without requiring any automatic sequencing logic, thus time can be saved and the process confirmed before time is committed to writing automatic logic. In the past, some people have attached SFC logic to call each step, but this is not required

To connect MotionRows together in automatic mode. Connect the .qAdvanced or .qReturned to the input of the next motion block, as required in the sequence

image

This has the effect of automaticly linking the functions, for example; "The Gantry has loaded the machine AND in auto cycling mode, Clamp the part"

The automatic function will only occur when the station is in "AutoCycling" mode. If the station is continued by an operator in manual mode, the above logic will **continue ** from the correct programmed state, and so, no SFC is needed

Further Information

Services

For power services, e.g. pneumatic, hydraulic, electrical enabling should be entered into the base station (Mc_xxxxxx) as the services could be common for the global machine

Electrical Power pou

Pneumatic Power pou

Hydraulic Power pou

Stations and Motions

For each station, the group of motions should be split up into each motion row, for each device, e.g. cylinder

Each station contains up to 99 rows grouped up in screens of 6 rows

Below is a screen shot of what is possible in the framework. Displayed is Station 1, Row 1,2,3,4,5,6.

The button numbers on the left hand side are not the row number, but rather the order of button presses to achieve a cycle. Ideally, the motions should count down on the left hand side, and up on the right hand side. This is to allow a finger to press on the first button and the operators hand to press every button without releasing his grip.

image

Each row corresponds to a FC call that is pre programmed, there is no need to alter the base logic to get each row to appear

image

Each row call is as a prg

The HMI row is called from the FB_HMI_Control

image

for the input limit switches for a basic, conventional cylinder the switches are fed into the template on the below rungs

image

The coil for the cylinder, for a double action cylinder are written on the below rungs

image

The declarations for each motion in a basic format are pre-programmed for each row 1-99

image

these can be mapped into the desired input / output module, eg. the EL1018 and EL2008 modules.

Fault Messages

Each station has 1000 messages of each type of Alarm, Warning and Prompt.

Each motion block is pre-programmed with the correct offset for each motion v.s. position in the row of 1000

image

For Station 1, Row 1, this uses alarm messages 0-4 and prompt messages 0-1

image

For Station 1, Row 2, this uses alarm messages 10-14 and prompt messages 10-11, and so on the defined offset of 10

Using this mask, each alarm message text can be entered freely into the base messages, which are all defined.

image

Each message exists for every row, so it is possible to not enter any message text and see the default message texts on the message view

image

Station 1, Row 1 and Row 2 will appear in the above messages and can be edited freely.

Advice on Fault Messages

Many machines exist with fault messages that could be described as "beyond unacceptable". From the Venture 'Problem Light' to equality lazy and unimaginative fault messages as follows....

Don't Do This

  • Fault
  • Cylinder Fault
  • Clamp Fault
  • Clamps

A fault message must convey the following;

  1. ${\color{red}What\space is\space at\space fault}$
  2. ${\color{yellow}What\space the\space reference\space in\space the\space supplied\space schematics}$
  3. ${\color{orange}What\space the\space fault\space is\space}$

Therefore a worthwhile message would contain the following

${\color{red}Clamp\space Cylinder\space A1}$ ${\color{orange}Failed\space To\space Advance}$ ${\color{yellow}Check\space EFA++Drill=Clamp-KA1, QA1}$

It should not be a priority for a programmer to drive for endless hours and perhaps halfway across the planet to point out to the customer on his site; "what we really meant was" and should be considered a personal failure for a programmer

Motion Interlocks

Each motion row's interlocks can be entered in the below rungs for advance and return. The interlocks will drive the indicator on the motion row and inhibit the motion if the button is pressed. The interlocks are generally for any motion in any state that would cause machine damage if it were to be pressed.

image

Motion Prompt

Each motion row's prompt, which could be the same as the interlock, but in practice is more subtle. The prompt is 'what is the next stage of the process' which is not the same as the allowed motion conditions to not cause machine / part damage

image

Motion Feedback

If a motion has a complex feedback, e.g. position feedback, force feedback, text feedback ,etc then this can be fed into the block to display on the motion row. use the xxx_to_string function in the motion row prg to enter this text

image

Manual Motion Order

Each motion is designed to occur in a set order. The order integer below is used to convey to the operator what order to press the buttons

image