Batch Recipe Array Parameters

I've been working on DeltaV for about 17 years now and I have a requirement that I would like to fulfill as elegantly as possible, so I'm looking for some clever ideas here.

I have a table of limits to evaluate that should be recipe formula based. 

Index Low High
1 1 2
2 3 4
3 5 6

The actual index upper bound should be reasonably extensible, maybe as many as 100.  When condition is index = n, evaluate measured value to be within Low and High.

You cannot make batch parameters an array, and I would like to avoid making each individual cell of the low and high column as a separate parameter.

I don't want this configuration stored in a module, as I mentioned this is really a formula based definition.

I could do some fancy string definition like 1,3,5 for the Low,  but the phase expression logic that will ultimately make use of this can't do any sort of string parsing that I know of to break this down into an array.

I could do some crazy binary stuff, but at the formula level, the configuration should be somewhat intuitive and not esoteric.

I appreciate any suggestions.

6 Replies

  • How often are you needing to evaluate the index? And from reading this, you are okay to evaluate index in phase logic?
  • One trick I've used in the past is to embed a composite inside the unit phase, a la a subroutine.

    Your lookup array lives inside the composite, and you can call the composite from the phase logic any time you need to evaluate.
  • I think you might want to use a soft phase and your comma delimited format suggestion to be able to parse that out into your needed format without having all of them be individual parameters (which if 'n' is 100, that would need 4 phases to get all that).
  • In reply to Ray Emerson:

    Agreed, Huge fan on composites. Without the total background of what you are trying to do, I would try something like this. Composite with Step a Pulse Action and then a While Loop in the Pulse Action. Then a Transition to loop back around if you want to recheck after a certain time.

  • For similar requirement, I have used below approach. I found deferring this huge data to formula as inappropriate.

    1. At recipe level, I just created string parameter 'FORMULA' and specified it value like 'Formula1', 'Formula2', etc. in respective formula.

    2. This parameter was downloaded to a data module.

    3. Data module was having multiple array parameters as shown below storing pre-configured values.

    4. As per Downloaded formula string, data from respective array is copied to another common array parameter as selected values.

    5. Graphical interface was provided to edit these value if required. (As we can edit formula values to customize).

    6. Once acknowledged, this data is read by phase logic and store in phase algorithm parameter.

  • In reply to Matt Stoner:

    Matt, I can't say I've ever used a soft phase before, and while intriguing, I may not be able to muster the resources to do this for the scope of the work I am doing. It does, however, give me an idea.
    The scenario I am using is for a sampling routine where the operator needs to push a button to advanced the phase to start the activity. Perhaps I can use that button push routine to take the recipe batch parameter CSV array of table values and pop them into a phase array variable for use in subsequent steps.
    Again, this only works because I have an existing graphical interface that I can leverage.
    In the absence of this, soft phase may be the next best thing.