Conveyor Belt.
Moves tokens or quantities from a container (or integrator) at An to a container (or integrator) at Bn.
It only picks up or dumps to/from Containers (C-type) or Integrators (I-type).
Other block types are ignored without complaint, but nothing happens.
The rule for picking up is defined by 'aa' and the rule for dropping contents off is defined by 'bb'.
At time intervals defined by the time between segments, attempts are made to pick up (Take) as specified by "aa". If the requirement is not satisfied then the segment rolls on empty.
With the same timing, any contents in the last segment are dropped, regardless of the space available in the receiving container. Thus, receiving containers could be loaded above their nominal maximum contents.
Take Rules
Any positive 'aa' value will have to be available in the container An for a pick-up to be made
and that specified quantity will be taken from the container. It does not have to be an integer amount.
For example, it can take a specific amount out of a heap of material being accumulated in an integrator.
Any negative "aa" values will tell the Block to check that there is something available and then take as much as it can up to the amount specified by the absolute value of aa.
Put Rules
Any positive "bb" value will cause that quantity to be put into the container Bn (if connected), provided there is something on the last segment of the belt BUT regardless of the current contents of the receiving container. For example, an amount, e.g.50kg, taken from a store to represent a sack full of material can appear delivered as a unit (one sack) amount.
Any negative "bb" value will cause the contents of the last segment of the conveyor belt to be put in the corresponding recipient container (if connected) up to the amount represented by the absolute value of "bb" BUT regardless of the current contents of the receiving container. Thus, making 'bb' the same as 'aa', will result in a delivery, eventually, into Block-Bn of whatever was taken from Block-An.
Regardless of what is put into the recipient block the last segment is emptied as the delivery takes place.
If during a run, the 'aa' value is made zero, either manually or using an access block (Type: @, code 11)
then the belt will not pick up, but will continue to run so it can be emptied.
Segments and Timing
The belt has multiple segments (the number is defined by Dn), but beware of changing that when running.
It moves along at intervals (per segment) defined by the value from Pn-block + pp.
As with other blocks the use of a negative number makes the timing random, so in effect the belt exhibits a jerky behaviour.
This version can NOT be blocked by full receiver (at Bn) so it dumps anyway even if this overfills container Bn.
(later versions may have exit blocking if there is a need).
In this respect it is not like the A-type block, which can be inhibited from putting tokens out by there being limited space in the receiving block.
On RESET, the contents are cleared out.
The sum of the absolute values of the contents in each segment is placed in cc.
This is used to decide if the belt is busy.
It is also available, using an access block (Type @, with code 13), for use outside the block,
for example to tally forthcoming deliveries or decide if the belt is overloaded.
B: Belt Conveyor Code
Procedure ActivateB(ii:integer); //BELT picks up and later delivers from A to B
//An: source, Bn: destination, P+pp: SegTime, Dn: #segs, Vn: releaseTime
//aa pickrule: <0: up to limit=-aa, >0 needs exactly that (as for A block)
//this version NOT blockable on output. It always dumps, even to locked off C or I.
//state is really only to flag if it's occupied or not.
var InitialState, Last, Ibelt : integer;
AvailA, DropB :real;
begin with B[ii] do begin
if OnOff<=0 then begin Vn:=Vn+Delt; EXIT end; //switched off, let anything inside wait
if Time+TinyDelt>=Vn then begin //ready to DUMP, MOVE and PICK
Vn:= NextEventTime(B[Pn].Vn + pp); //set time for next segment move.
InitialState:=state; //note this in case a new display is needed
Last:=High(Store); // find end of conveyor belt
// Pick (and dump) rules for A,B depend on aa. aa neg = up to -aa, aa Pos defines exact amount.
//DUMP depending on drop rule, bb. BUT No check on access is made except by Put().
if (Bn>0) and (Store[Last]>0) then begin
DropB:= bb; if bb<0 then DropB:=min(Store[Last],-bb);
Put(Bn,DropB); Store[Last]:=0; // dump as specified to Block[Bn]
end;
//MOVE ALONG
for Ibelt:=Last downto 2 do Store[Ibelt]:=Store[Ibelt-1];
Store[1]:=0; //leave a vacant space at entry
//PICK-UP belt will carry whatever was Picked.
if An>0 then begin //to pick up from block An according to pick rule defined by aa.
AvailA:=isAvail(An,aa);
Take(An,AvailA); Store[1]:=AvailA;
end{if An>0};
cc:=AbsSumStore(ii);
if cc>TinyNumber then State:=2 else State:=1; //this code copied into BlockDatForm
if ((InitialState<>State) AND Animation ) then DisplayB(ii);
end {iftimely};
end{with B ii};
end{proc};
|
MJMcCann-Consulting
Help Index:
Index/Search
Background
Simulation Concepts
Continuous Systems
Discrete Systems
McSimAPN Structure
McSimAPN Operation
Using McSimAPN
Start McSimAPN
Save Model,data
Create Blocks
Run-Hold-Reset
Link Excel+VBA
PetriNet Block Types
A activity/action
B belt conveyor
C container/constant
D diverter(random)
Analogue Block Types
E exponents
F flux/flow
G function Generator
H hysteresis
I integrator
J inductor
K logic element
L logarithms
M memory
N note/label
O oscilloscope/graph
p not assigned
Q quantizer/rounding
R relay on/off
S sin/asin/atan
T timer/clock
U user link Excel
V visual voltmeter
W sWitch selector/MUX
X multiply
y not assigned
Z random (fuZZ)
& signed summation
% division/difference
@ access/move values
|
Invitation. McCann can help if you have a
design or operational problem that needs some technical support that is outside your
team's experience, some quantitative assessment of what is really the cause of the
difficulties, some design alternatives or just a fresh look by an intelligent
interrogator.
If you have a problem with the behaviour of a market sector, plant, process or item of
equipment and would like to get a quantitative handle on it to improve yield or optimise
performance, then contact us. We are always ready to give a little time
to discuss a new puzzle, in confidence,
of course. We'll only worry about fees
when we have some defined work. We can be flexible
about how we work with you. Top
|
MJMcCann-Consulting,
POB 902,
Chadds Ford PA
19317 USA.
T: 1 302 654-2953
F: 1 302 429 9458
E: mjmccann@iee.org
|