OK, so you may notice I dropped the word "Cone" (as in Cone Crusher) in the title, and I am going to apply the method to a Jaw Crusher.
We are going to apply a modification to the METSIM power estimation method, and overwrite the value of KW with our revised value so we can us it in our operating cost analysis.
So we want: Revised_KW = (F x KW ) + NoLoadPower
And we will implement this in the CtB for the crusher unit op.
So using FLS[OP;] where OP is the unit operation number we can look for the vector of Parameter Codes, see what the index of KW is (lets say "i"), and then see that the current value for KW is the i'th item in the Parameter Values vector. The Parameters Codes was the 7th item in FLS[OP;] (you can prove that by trying FLS[OP; n], trying values n = 1, 2, 3 etc. till you start to see how it works.
And the Parameter Values are in 8th item of FLS, and the KW value is the 6th item in the Parameter Values.
So we could use 6 "extract" 8 "extract" FLS[OP; ] to get the current value of KW - but should we do that? No, because there is already a METSIM value function for getting the value for a model parameter, and it is "Parameter_Code" VFLS uOP and we should use that.
So the expression 'KW' VFLS u2 will return the current value of the KW for any unit operation that is the first unit operation of the first section (the SEC being the first unit op, and hence u1).
But we are going to use our function from "within" the crusher unit operation, and so, at the time our function is executed METSIM will have set the Model Variable (current unit operation number) to 2 (or whatever the unit operation number is after you rearrange the flowsheet) and so we can use the generic expression 'KW' VFLS OP But remember to change OP for u2 if you are testing this from the APL keyboard (in which case the value of OP has not been set by the commencement of calculations of the unit op).
But we don't have a value function (or F function) for writing a parameter value back - and I think you will understand that this is like a cheat code in a game that is there but not officially supported (incorrect use would just create no end of requests for help), and so we will use the unauthorised expression:
6 "Extract" 8 "Extract" FLS[OP; ]
We will name our function AndPwr (for Andersen, or "And No Load Power").
It will need to get the KW value and then apply two parameters, the multiplier factor for the Theoretical Power "F", and the No Load Power "NL"
So the function will be of the form
KW "gets" KW AndPwr (F NL)
where "gets" is the left arrow, Alt + [
So the expression in CtA with be:
( 6 "extract" 8 "extract" FLS[OP; ] ) "gets" ('KW' VFLS OP) AndPwr ( 1.0 80 )
But we have to define the User Function AndPwr
R "gets" KW AndPwr Par ;F;NL
© Estimates power using a method similar to Andersen
© Requires a two element vector with parameters
© Par is the Power Correction factor
© Par is the No Load Correction factor
© Returns the revised value of KW
© Example "100 AndPwr (1.4 80)"
F "gets" Par
NL "gets" Par
R "gets" ( KW × F ) + NL
And that's it.