• Not Answered

Block Loading

Hi,


How many action blocks can be used per module /controller and what's the  approximate load size of any action block  (with 100 ms as execution time )

Regards

 

Sumit 

3 Replies

  • Hi Sumit, I heard back from one of our DeltaV folks. Here was the feedback:

    “Action blocks” is equivalent to “function blocks” in terms of number allowed. You can find this in the System Capacities section of BOL.

    Re the second question, “load size” is relative.  The best thing to do is start by making one module whose size makes sense from an application perspective.  Then go into CSOnline and make sure the module EXEC_TIME value is less than 50 msec (the units are in microseconds).

  • Sumit,

    A DeltaV module has a limit of 250 Blocks, counting Function blocks in nested blocks (see BOL).

    An Action block should typically have a small expression, such as writing to a parameter, though it can have a very complex expression that is enabled or disabled by the IN_D parameter.  the expression is a structured text format and there is a size is limited (I think 10,000 bytes).So the CPU loading of this block is dependent on the complexity of the expression, which is defined by the type of commands and how many.

    DeltaV Systems come with a Load Estimation tool that provides estimeated CPU % loading for each block type.  However, an Action block's CPU load is dependent on the expression complexity.  It also depends on what type of Controller the module will be assigned to.  (The MX has a more powerfull CPU than the MDPlus).  You can find the estimator on the DeltaV DVD media and install on Windows PC.  (Does not have to be a DeltaV Node).

    If you can determine the CPU load of your module, you can enter that in the Load Estimator as a "Custom module" (Menu Options/Add New Module) and define the CPU value for the controller you tested it on.  Then, you can set a number for the 100 ms execution rate and see how much CPU is estimated to run them.  NOte that the estimator uses %CPU numbers, not EXEC_TIME.  It is a fairly simple calculation based on the CPU % value of the module for 1 second execution.  At 100 ms, the CPU % number is multiplied by 10 and then again by the number of modules.  make sure you select the same controller Type as the type you used to determine your module CPU % value.  

    Andre Dicaire

  • For a module, it depends on how much code you put in the ACT block and how that code is written.  IF statements put more of a load on the CPU than an assignment does for example.  The best thing to do is try the code you need.  For the controller, it will depend on what else the controller is doing.  A module running at 100 ms will be a high priority task.  If you keep adding only high priority modules, the controller will start to slip quickly but you will be wasting most of the CPU cycles reserved for Medium priority tasks and Low priority tasks.