Showing posts with label Integrity Plus. Show all posts
Showing posts with label Integrity Plus. Show all posts

Friday, August 5, 2016

DBDOC: Reads the Manual and Checks Your Specs.

DBDOC is unique in giving you significant help in finding integrity issues in your system. Every INFI 90 system in the world would benefit from improving operational safety and reliability. Our Error Browser and Error Marker development was designed to make it possible to manage errors and improve the integrity of your systems.

Here you see our much loved copy of the function code manual, dog-eared and duct-taped. You've probably read it too, but possibly not as intensely as we have.

Based on studying the documentation and the experiences of our clients, we added new tests for function block specifications that violate the documentation in ways that seem significant. Read on to see what we found.

We reviewed test data for 229 systems around the world, and found 1160 new errors of note in 77 systems involving 33 function codes - 15 errors per system. Of course, this means that 68% of the systems had none of the specification errors we looked for. It also means that over 1/3 of the systems had these new errors Composer did not find, but that DBDOC will.

I expect this will be the most boring blog I ever write. Holy Understatements, Batman!

Here are example of errors found in various specification values for various function codes from real systems. Some could bite!  All are now reported by DBDOC in the Error Browser.

FC35 - 45 instances in 21 systems
  • Module 5,65,02 Block 133 FC35 S2 value 005 is out of the valid range [000,102]
FC36 - 15 instances in 4 systems
  • Module 5,26,05 Block 6441 FC36 S9 value 9 is out of the valid range [0,8]
  • Module 7,101,06 Block 5800 FC36 S10 value -1 is out of the valid range [0,1]
FC45 - 22 instances in 6 systems
  • Module 2,48,02 Block 854 FC45 S2 value 20 is out of the valid range [0,2]
FC50 - 1 instance in 1 system
  • Module 3,01,04 Block 4082 FC50 S1 value -1 is out of the valid range [0,1]
FC69 - 9 instances in 4 systems
  • Module 32,04,05 Block 3285 FC69 S2 value 5 is out of the valid range [0,2]
FC80 - 61 instances in 26 systems
  • Module 2,78,02 Block 2151 FC80 S6 value 39 is out of the valid range [1-3 or 5-8]
  • Module 2,15,05 Block 2039 FC80 S17 value 246 is out of the valid range [0,7]
  • Module 1,11,02 Block 2494 FC80 S23 value 5 is out of the valid range [0,4]
FC82 - 4 instances in 3 systems
  • Module 3,02,20 Block 1992 FC82 S5 value 30 is out of the valid range [0,2]
  • Module 2,12,06 Block 15 FC82 S15 value 179 is out of the valid range [0,1]
FC83 - 501 instances in 4 systems
  • Module 11,30,15 Block 463 FC83 S1 value 65 is out of the valid range [0,63]
FC84 - 5 instances in 4 systems
  • Module 2,20,02 Block 6641 FC84 S2 value 10 is out of the valid range [0,1]
  • Module 2,20,02 Block 6641 FC84 S2 value 10 is out of the valid range [0,1]
FC86 - 1 instance in 1 system
  • Module 2,104,10 Block 1882 FC86 S6 value 013 is out of the valid range [000,101]
FC95 - 36 instances in 5 systems
  • Module 1,62,03 Block 979 FC95 S7 value 2 is out of the valid range [0,1]
  • Module 1,53,02 Block 9062 FC95 S12 value 7 is out of the valid range [0,1]
FC110, FC111, FC112 - 24 instances in 10 systems
  • Module 5,12,04 Block 4015 FC110 S1 value 20 is out of the valid range [0,3]
  • Module 5,23,02 Block 56 FC111 S1 value 10 is out of the valid range [0,3]
  • Module 7,09,03 Block 4140 FC112 S1 value 10 is out of the valid range [0,3]
FC123 - 12 instances in 1 system
  • Module 4,07,06 Block 3793 FC123 S7 value 22 is out of the valid range [0,11]
  • Module 4,07,06 Block 3793 FC123 S8 value 22 is out of the valid range [0,11]
FC124 - 6 instances in 2 systems
  • Module 5,33,03 Block 3194 FC124 S11 value 120 is out of the valid range [00,22]
  • Module 5,33,03 Block 3194 FC124 S13 value 60 is out of the valid range [00,22]
FC126 - 3 instances in 1 system
  • Module 1,14,11 Block 8501 FC126 S2 value 115 is out of the valid range [0,2]
FC129 - 92 instances in 33 systems
  • Module 1,15,02 Block 3405 FC129 S7 value 003 is out of the valid range [000,111]
  • Module 1,15,06 Block 3133 FC129 S8 value 1000 is out of the valid range [000,111]
  • Module 1,20,05 Block 7810 FC129 S9 value 002 is out of the valid range [000,111]
  • Module 1,23,03 Block 3995 FC129 S10 value 1000 is out of the valid range [000,111]
  • Module 5,15,04 Block 2559 FC129 S11 value 20002 is out of the valid range [0000,2222]
  • Module 1,44,04 Block 2509 FC129 S13 value 0003 is out of the valid range [0000,2222]
  • Module 1,24,03 Block 1808 FC129 S14 value 222 is out of the valid range [000,142]
  • Module 1,04,03 Block 3993 FC129 S15 value 23 is out of the valid range [0,1]
  • Module 3,54,04 Block 7764 FC129 S19 value 5 is out of the valid range [Any or All of 0,1,2,3]
FC132 - 64 instances in 14 systems
  • Module 1,01,15 Block 1346 FC132 S3 value 2 is out of the valid range [0,1]
  • Module 1,60,02 Block 448 FC132 S3 value 4 is out of the valid range [0,1]
  • Module 11,26,04 Block 1106 FC132 S3 value 7 is out of the valid range [0,1]
  • Module 34,46,03 Block 8150 FC132 S10 value 78 is out of the valid range [0,5]
  • Module 1,03,04 Block 1211 FC132 S13 value 50 is out of the valid range [0,5]
  • Module 2,01,02 Block 244 FC132 S16 value 150 is out of the valid range [0,5]
FC136 - 28 instances in 3 systems
  • Module 1,07,03 Block 1258 FC136 S16 value 3.0 is out of the valid range [0.0, 1.0, 2.0]
FC140 - 34 instances in 4 systems
  • Module 10,02,07 Block 1076 FC140 S4 value 8078 is out of the valid range [00,11]
  • Module 7,103,02 Block 3250 FC140 S5 value 212 is out of the valid range [0,63]
FC143 - 1 instance in 1 system
  • Module 1,20,09 Block 8872 FC143 S1 value 3 is out of the valid range [0,2]
FC149 - 60 instances in 10 systems
  • Module 5,41,02 Block 232 FC149 S3 value 8 is out of the valid range [0,1]
  • Module 11,01,04 Block 161 FC149 S11 value 5 is out of the valid range [0,2]
  • Module 11,01,04 Block 161 FC149 S12 value 5 is out of the valid range [0,2]
  • Module 11,01,04 Block 161 FC149 S13 value 5 is out of the valid range [0,2]
  • Module 11,01,04 Block 161 FC149 S14 value 5 is out of the valid range [0,2]
  • Module 11,01,04 Block 161 FC149 S15 value 5 is out of the valid range [0,2]
  • Module 11,01,04 Block 161 FC149 S16 value 5 is out of the valid range [0,2]
  • Module 11,01,04 Block 161 FC149 S17 value 5 is out of the valid range [0,2]
FC151 - 6 instances in 3 systems
  • Module 1,65,05 Block 4531 FC151 S6 value 4532.0 is out of the valid range [0.0,127.0]
  • Module 2,30,03 Block 7180 FC151 S7 value 3 is out of the valid range [0,1]
FC156 - 5 instances in 4 systems
Module 1,18,03 Block 6438 FC156 S19 value 32 is out of the valid range [0,1]
  • Module 3,03,02 Block 7284 FC156 S20 value 40 is out of the valid range [0,1]
  • FC166 - 8 instances in 3 systems
Module 4,05,07 Block 3697 FC166 S2 value 120 is out of the valid range [0,2]
  • Module 3,01,04 Block 3807 FC166 S8 value 32767 is out of the valid range [0,1]
  • FC182 - 19 instances in 1 system
  • Module 1,07,14 Block 56 FC182 S1 value 000 is out of the valid range [001-009, 020-124, 040-041, 064]
FC190 - 6 instances in 3 systems
  • Module 2,32,07 Block 2280 FC190 S2 value 7200 is out of the valid range [1,6553]
FC216 - 61 instances in 10 systems
  • Module 1,09,07 Block 8172 FC216 S3 value 19 is out of the valid range [1,16]
  • Module 20,38,07 Block 650 FC216 S4 value 051 is out of the valid range [000-109, 010-113, 020-125, 040-144, 060-161, 099-199]
  • Module 1,03,04 Block 1428 FC216 S5 value 2 is out of the valid range [0,1]
  • Module 6,60,08 Block 162 FC216 S11 value 0 is out of the valid range [16,24]
FC222 - 1 instance in 1 system
  • Module 1,09,02 Block 1023 FC222 S2 value 1022 is out of the valid range [0000-1209, 0010-1115, 0210-1214, 0300-1302, 0400-1400, 0500-1500, 0900-1900]
FC224 - 18 instances in 4 systems
  • Module 1,09,02 Block 1048 FC224 S2 value 1047 is out of the valid range [0,2]
  • Module 1,09,02 Block 1048 FC224 S3 value 1046 is out of the valid range [0,255]
FC226 - 8 instances in 2 systems
  • Module 20,10,31 Block 8358 FC226 S3 value 10 is out of the valid range [0,4]
FC247 - 4 instances in 2 systems
  • Module 1,13,04 Block 953 FC247 S5 value 5 is out of the valid range [1-4 or 6-8]
Holy Complications, Batman! A number of expressions in http://holysmokesbatman.com/directory apply. DBDOC helps improve your system's integrity.


Friday, February 5, 2016

System Integrity — DBDOC Detects Bad TSTALM Blocks

DBDOC is unique in giving you significant help in finding integrity issues in your system. Every INFI 90 system in the world will benefit from improving safety, reliability and operation with DBDOC's Integrity Plus approach. Our Error Browser and Error Marker development was designed to make it possible to manage errors and improve the integrity of your systems.
 
In August 2014, we showed examples of detectable TSTALM errors from one system, but we continue to find this error being made. We have been reporting it for a decade, since 2006. DBDOC is the only valid way to identify this problem.
 
We report Function Code 69 TSTALM blocks that test the same block and mode. This usually happens when a TSTALM block is copied without S1 the specification that tells what block is being tested being made to match the new block numbers. Any of these TSTALM problems could have an adverse affect on a plant.
 
I did a review of test data for 228 systems around the world:
  • 22 had no TSTALM blocks - basically small systems averaging 1219 sheets each.
  • 206 systems had 3 or more - average size was 4022 sheets.
  • 90 had from one to 111 multiple TSTALM messages - average 8.2 errors.

The three systems with the largest number of messages looked like this:
  • 111 errors - 114 actions missed, 114 actions falsely triggered
  • 100 errors - 10 actions missed, 10 actions falsely triggered, 96 duplications
  • 84 errors - 84 actions missed, 84 actions falsely triggered
 
Holy Crossfire, Batman! This is from http://holysmokesbatman.com/directory.
 
The problem is that good logic gets cloned to do the same job again and again. The block numbers get changed and the changes compile cleanly. However, S1 must be changed when the logic is cloned in the same module, because the cloned value of S1 is guaranteed to be the only block in the module that is wrong. The failure to do this is not caught by Composer or WinCAD compilers, so the error does not get corrected.
 
Let's start with an example. Here is our message, as shown in Error Browser, with the good stuff circled in green:
 
 
 
Block 2614 is clearly expected to be asserted when block 2609 is put into Auto mode.
 
DBDOC shows you the block index for block 2609, which you see here with the green highlight for the intended and correct logic.
 
 
 
  
What do you make of the purple, red and blue highlighted references? Click on each of them to go to the TSTALM block that is strangely testing block 2609.
 
 
 
 
 
S1 of block 2115 (purple) obviously should be 2111, not 2609.
S1 of block 2365 (red) obviously should be 2361, not 2609.
S1 of block 2490 (blue) obviously should be 2486, not 2609.
 
Count the errors:
  • Blocks 2116, 2366 and 2491 will be asserted when MSDVDR block 2609 goes into automatic mode - three errors.
  • Blocks 2116, 2366 and 2491 will NOT be asserted when MSDVDR blocks 2111, 2361 and 2480 respectively go into automatic mode - three more errors
 
Six errors for the price of one! Good value from DBDOC, eh?
 
Composer should be made to set the value of S1 to -1 when a TSTALM FC 69 block is placed on a page. The illegal value should force the user to enter one that would work.
 
Note also that the warning triangles (Error Markers) are in front of you when you get to the dysfunctional logic, so you can see right away that there is possibly a problem. The two messages they show are:
 
Tested block on different page (which should be a clue), and
TSTALM block tests subsequent block, which means they are out of natural sequence.
 
I have found as many as seven such duplications (that is, 14 errors) that came from the cloning of a single set of functioning blocks. Clearly, this error can be made and missed. DBDOC can find it for you.
 
When you review these using DBDOC Error Browser, you simply hide any that are of no consequence. You flag ones like this that affect the process. When they are fixed, they will disappear from the diagnostics. If you create such an error, it will show up as a new error, highlighted in yellow.
 
DBDOC helps improve your system integrity.

Friday, June 26, 2015

Serious Function Code Generator Errors Your INFI 90 Tools Won't Warn You About (And How to Protect Your System)

DBDOC Integrity Plus system is unique in giving you significant help in finding integrity issues.  Every INFI 90 system in the world will benefit from improving safety, reliability and operation. Even a tiny glitch like an incorrectly parameterized function generator could have an adverse affect.
DBDOC reports F(x) Blocks that have non-ascending X coordinates. If successive X coordinates are in descending order, the block does not do what you think. This applies to all controller versions so far as we know, so tell us if some firmware or modern module solves the problem, of course.
My check of test data showed 132 of 136 sites had this issue. This is 97% of a range of systems from small to huge around the world. DBDOC is the only tool that will identify this problem
Here is the message, as shown in Error Browser:
This is what it looks like on the CLD.
The X coordinates are, in order, 100.0, 20.0, 0.0, -4192.0, -4192.0, -4192.0. The calculation goes (likely), like this:
  • If input is less than S2, which is 100.0, output is S3, which is 5.0.
  • Done!
Perhaps, it goes like this by trying to establish a line segment that works first:
  • Start with S2. Read S4. S4 is less than S2, so throw S2 away
  • Start with S4. Read S6. S6 is less than S4, so throw S4 away
  • Start with S6. Read S8. S8 is less than S6, so throw S6 away
  • Start with S8. Read S10. S10 is less than S8, so throw S8 away
  • Start with S10. Read S12. S12 is less than S10, so throw S10 away
  • Start with S12. Output is S13 which is 0.0.
  • Done!
What it does not do is turn the numbers around, at least not in firmware we know about.
 
Actually, we have had both the results above reported to us. Here is my speculation about the calculation:
  • If input is less than S2, which is 100.0, output is S3, which is 5.0. This gives the first result of 5.0 for the output.
  • If input is greater than S2, then it is greater than S4, S6, S8, S10 and S12, so make the output S13 or 0.0.
  • If the input drops below S2, perhaps the output stays at 0.0.
What we really need is some experimentation to tell that reports not only the specifications but also the module type and firmware revision.
 
Some examples from actual systems:
 
X coordinates out of order for F(x) Module 1,04,04 Block 1680
 
  ( S2, S3) 650.0 1.171
  ( S4, S5) 600.0 1.156
  ( S6, S7) 550.0 1.147
  ( S8, S9) 500.0 1.131
  (S10,S11) 450.0 1.124
  (S12,S13) 400.0 1.108
 
Output is either 1.171 or 1.108. Neither is correct over the working input range.
 
X coordinates out of order for F(x) Module 40,31,04 Block 9860
 
  ( S2, S3) 41.0 5.0
  ( S4, S5) 35.0 0.0
  ( S6, S7) 35.0 0.0
  ( S8, S9) 35.0 0.0
  (S10,S11) 35.0 0.0
  (S12,S13) 35.0 0.0
 
Output is 5.0 or 0.0, but is never what is intended.
Reviewing these errors with the Error Browser:
 
When you review these using DBDOC Error Browser, you can simply hide the ones that are of no consequence. You star ones like this that affect the process. When they are fixed, they will disappear from the diagnostics. If such an error is created in the configuration, it will show up as a new error, highlighted in yellow.
 
DBDOC helps make your system do what you want. This is Integrity Plus and you will be happy you have it!