Array issues / improvements
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.
Customer support service by UserEcho
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.
any update on added array functionality? Would like to be able to create arrays of dynamic sizes and shift them as required. Current application is basic but, adjustable moving average filter. Longer time span and less frequent sampling than what the native moving average filter can do.