Under review

Array issues / improvements

Rick 8 years ago in IQANdesign updated by Gustav Widén (System support) 7 months ago 4

Since there are no DM1/DM2 blocks to send out 1 or more faults yet, (hint!), I'm trying to implement it myself, using Array blocks. It works, BUT:

- No Array support on MC3 (for safety reasons? why?)

- No looping or "Add" functions to construct the list dynamically

- Arrays are Float by nature. This is inaccurate for 32 bit UINT DTC codes. Would be nice to have a integer (and if doing it anyway, a boolean) variant

- Ability to fill/insert/operate an Array from another block ("adding itself to the list")

Biggest problem is the MC3, where more than 50% of the CPU is currently spend on sending out DM1 & 2 messages. Which is obviously way overkill, but I don't see ways to do it more efficiently with the available tools.

Under review

Hi Rick,

Good list of array improvements. Most of these are planned, but not in the near future I'm afraid. I'm adding your request of having other array types (integer and boolean). I hope you can work around these limitations until we get them fixed.

Hello Ulrik,

Well, one great help would be having Arrays available in the MC3 as well, as I sort of managed to implement this on MC2 controllers with the help of Arrays.

I suppose they are disabled in order to keep the MC3 a Safety Controller. Then again I don't see why Arrays can't be used, assuming the programmer responsibility to check the read/write the index before doing anything, and the Array block itself doing a second check to avoid a read/write out-of-bounds (I believe it actually already does that).

It is due to the storage of array values, which has to be done using certain techniques to be compliant with IEC 61508 SIL2. Your input has been noted, I'll see if this can be implemented earlier.


Really wish I had some Boolean array functionality, arraysum, arraymask, arraymultiply, push, pull, ability to return the index value of values meeting criteria, etc.