ShowFlow Logo
Home
News
Download
Support
Training
Consulting
Contact
Frequently Asked Questions

Q. I have a model which is assembling different products on a machine using the receive from feature of the stage parameters. I want to add the attributes of the various products and put the sum on the produced product. I have set attribute operation ( Model|Element Parameters|More) to sum, but it does not seem to work.
A. Attribute operation applies only to batches, not assembly operations. To achieve your aim, you will need to use triggers. It is worth noting the the entry trigger on the assembly element is always activated by the product being sent, but is only activated by the product(s) being received if the separate box in the element parameters More dialog is checked. As we usually not want to keep assembled products separate, we have to use an exit trigger on the 'received from' element. For example
Machine 6 is sent to from buffer 5 and receives from buffer 4

Trigger on exit from 4 var[4]:=att1[C]
Trigger on exit from 5 att1[C]:=att1[C]+var[4]
A common error with assembly is to configure the receive from element to send to the assembly element. This creates a circular reference error, and the receive from element should be set to send to 0.

Q. I have a model with a large number of paths in it. I want to add additional paths but when I do this, ShowFlow crashes.
A. You have almost certainly exceeded the maximum number of nodes allowed. This is 127. A node is a connecting point of paths, or an end of a path. Thus a single path has two nodes, two paths connected in series have three nodes, four paths in series have five nodes, but four paths connected in a square have only four nodes.

Q. Can I put comments into a function?
A. Yes, and it is essential to do this if your functions are at all complex. Start the line with #>, and it will be treated as a comment.

Q. Can I structure TLI statements across several lines to make them more readable?
A. Not so far, but if you are using the function editor, it is usually possible to write a series of individual TLI statements as an alternative to a long nested if..then..else statement. For example, the following TLI statement (which would be on a single line)

if elqueue[3]=0 then elqueue[E]-storagecap[E] else(if storagecap[E]-elqueue[E]<12 then 100-(storagecap[E]-elqueue[E]) else (if product[E,1]=product[3,1] then 1 else 0))

Can be put into a function like this:

function if_then=p3
    p2:=0
    if elqueue[3]=0 then begin p2:=1; p3:=elqueue[E]-storagecap[E] end
    if p2=0 then (if storagecap[E]-elqueue[E]<12 then begin p2:=1; p3:=100-(storagecap[E]-elqueue[E]) end)
    if p2=0 then (if product[E,1]=product[3,1] then p3:=1 else p3:=0)

You may not feel that this makes things a lot clearer, so perhaps we should be asking the developers to allow structured TLI in a future release!

Q. Is the cycle time on a machine factored by the incoming batch quantity?
A. No. The cycle time is for the incoming batch as a whole. If you want to adjust the cycle time for different batch quantities, you can use a trigger on entry and the curcycle and curbatch functions. For example:

curcyle[E]:=curbatch[E]*6.50

In passing, the element capacity needs to be large enough to accommodate the largest incoming batch quantity, but not the outgoing batch quantity. For example, if you have an unpacking operation where a single incoming product is unpacked to ten products, the capacity of the unpacking element should be 1. Of course the capacity of the element you are sending the batch to should be at least 10.

Q. Can I incline conveyors?
A. Yes. The z size of a conveyor represents the difference in height between the start of the conveyor and its end, in centimetres. It can be set using the sizzelem function, or from Model|Element Parameters|Layout in the menu system. In fact, by setting the x size of a conveyor to zero, and the z size to non zero, you can create a lift.

Q. I cannot get the "time as text" feature in Settings|Time Representation to work.
A. This is a bug. It worked fine in Taylor II, and we did not think we had made any changes to affect this feature, but apparently, we must have done. This has been fixed in ShowFlow 2 - upgrades available!

Q. How can I read and write to Excel?
A. Unfortunately, the help file section describing the functions used to do this was omitted from the original ShowFlow version 1 package. We have emailed it to anyone who has asked about it, and a revised help file is available on the web site. There are four functions that are used to do this, and the following example demonstrates the basic approach.

function excel_link
    ddesetsheet[1]
    #> this associates the following ddelink sheet to a list of sheets
    #> only used if you are using several worksheets in a workbook
    ddelink['connect,excel_e,Data']
    #> this links a worksheet called 'Data' to ShowFlow
    ddesetsheet[2]
    ddelink['connect,excel_e,Results']

function excel_read
    ddesetsheet[1]
    #> we want to read from the Data worksheet
    #X[1..100]
    matrix[X,1]:=ddereadcell[X+2,1]
    #> read rows 3 to 102 from Data column A
    #> into rows 1 to 100, column 1 of the matrix table

 function excel_write
    ddesetsheet[2]
    #> we want to write to the Results worksheet
    #X[1..100]
    ddewritecell[X+2,2,matrix[X,4]]
    #> write rows 1 to 100, column 4 of matrix
    #> into rows 3 to 102, column B of Results spreadsheet

Note that ShowFlow can only refer to columns in an Excel worksheet with numbers, 1=A, 2=B etc. If you use a repeating user event to execute a function to write to Excel while the model is running, you can set up dynamically updating graphs in Excel. Nice!

Q. Often when I edit a conveyor, (by moving or repositioning with the mouse) the speed of the conveyor goes haywire. I notice the "capacity" does not update and I thought this was the reason the speed was being overridden, but when I edit this it does not correct. The only way to fix it is to delete the conveyor and draw a new one, but then the sequential numbering is destroyed. What am I doing wrong?
A. The length of a conveyor is set when you first create it in the layout editor. (i.e. When you release the mouse button). If you subsequently change the length, the "length" parameter is not changed. ShowFlow does not associate the logical length of the conveyor (or path) with its scale length (except on first creation), so when you change the scale length the visualisation appears to change the speed. An example should make this clearer. Suppose you create a conveyor 10m long. At the default speed of 1 m/s it will take a product 10 seconds to pass along the conveyor. If you then change the scale length to 20m, ShowFlow will still move a product from start to end in 10 seconds, so visually it looks as though the speed has been doubled.

The solution is to edit the length parameter, found in Model|Elements|Element Parameters|Various to reflect the new scale length of the conveyor.

The capacity of a conveyor defaults to its initial length in metres. Subsequent editing also does not change this, so if the capacity is wrong, you need to change this explicitly too. Note that the actual capacity of the conveyor may be less than the nominal if the product size is greater than 1 metre, or if product spacing is greater than zero. The corollary of this is that if you have products smaller than 1 metre, you will need to alter the default capacity of the conveyor to ensure that for example a 10m conveyor has capacity for 20 products of size 0.5m.

In passing, the capacity of buffers defaults to the product of initial length and initial height. This is why a buffer produced just by clicking (as opposed to click and drag) is 10 as the icon is 5m by 2m. Further on using the layout editor, the shape of element produced by a single click (rather than click and drag) is either a default size (see below) or the same size as the most recently previously created element of the same type. Default sizes (width x depth x height) are:

Machine5x2x1
Transporter1x1x1
Buffer5x2x1
Aid5x2x1
Conveyor10x0x0 but visualisation is 10x1x1
Path10x0x0 but visualisation is 10x1x0 unless single track
Warehouse10x1x5
Reservoir5x2x1
In/Out5x2x1

Q. Is there any way I can duplicate an element without having to create it again and edit all its parameters?
A. There are two possibilities here. One is to use the "clusters" features in ShowFlow. This allows you to create sub-models that can be imported into a main model. The main drawback of using clusters is that the format of select statements used to direct flow from one cluster to a different one becomes more complex. For example, to send from the main model to stage 1 of several clusters requires a statement like "select 1 from 1:s1,2:s1,3:s1" and so on.

An alternative approach, which we use a lot ourselves, is to create the required number of elements of a particular type initially, then define all the parameters for the first one. Leave the Element screen and right click on that element. This brings up a dialog that includes "Copy". If you select this, you get a choice of copying all parameters or selected ones. Then move to the next element and right click. Now select "Paste". All the selected parameters will be copied to that element. If you have created your elements sequentially, "Paste Range" will allow you to copy the parameters to all the other elements in one go.

One final point here, and that is the use of "E". Suppose we have a series of 10 buffers, numbered 2 to 11, each sending to a single machine in a set numbered 12 to 21. Buffer 2 would send to 12, buffer 3 to 13 and so on. However, if instead you send buffer 2 to E+10 (select 1 from E+10), ShowFlow will substitute the element number during execution. This allows us to copy the element parameters without further editing. You will find that experience will lead you to creating your elements in a sequence that lets you take full advantage of these short cuts.

Q. I have a CAD drawing that I would like to use as a background for my model. How can I do this?
A. There are two ways to do this. The first is to export your drawing from your CAD package as a bitmap (use a .bmp suffix). Put the saved file into the same folder as your model. If you do this, edit the drawing first to remove any background hashing or shading as this will not look good in the bitmap, and try to edit out lines that are very close together - these will look very messy if you zoom the model. Go to View|Background and in the Drawing type box, select Bitmap, then click on the box to the right of the file name dialog and select your bitmap. You will have to experiment with the scale and X and Y positions.

The second way produces a much nicer result, and that is to create an HPGL plotter file. If you are using an early version of Windows you may find that setting your CAD package to use a HP7470 plotter and printing to a file will produce a usable file. Rename the file with a .plt suffix and put it in the model directory. Follow the steps above, selecting HPGL as the drawing type. You will almost certainly need to set the scale to 1000+. If you are using a later version of Windows, there is bad news. Support for pen plotters has been pretty well abandoned, and even if you find a driver, it may well not produce a usable result. However, the better news is that we have found a suitable driver, but it is quite expensive, over $250. If you want to know more, contact us. If your needs are only occasional, we offer an alternative where you can email us your .dwg file and we will send you back a model shell with a suitably scaled .plt file. We charge ZAR 350.- for this service.

The advantage of using a plotter file is that the drawing is vector based, so it scales perfectly, and it is fairly easy to match the ShowFlow scale with the drawing scale. That way when you build the model against the background drawing, any elements where size is a factor (conveyors, paths) will be correctly dimensioned automatically. When you have built the model, go to View|Animation|Elements and uncheck Outlines. When you run the model, the products will appear to move through the CAD drawing. Magic!

Valid HTML   Terms of Use   Statement of Privacy   Contact Webmaster