Quinn-Curtis Forums
Quinn-Curtis Forums
Home | Profile | Register | Active Topics | Members | Search | FAQ
Username:
Password:
Save Password
Forgot your Password?

 All Forums
 Tools for Microsoft .Net & .Net Compact Framework
 SPC Control Chart Tools for .Net
 Invalid Alarm
 New Topic  Reply to Topic
 Printer Friendly
Author Previous Topic Topic Next Topic  

blazermaniac

USA
27 Posts

Posted - 17 Apr 2017 :  17:52:51  Show Profile  Reply with Quote
Hi,

I found that in the case when one point alarms and the next points samples value is equal to the control limit, it also alarms. In SimpleLimitTest when the alarmState is true and the limittype is SPC_GREATERTHAN_LIMIT, shouldn't it do a

if (value <= (limitvalue - hysteresisValue))

vs

if (value < (limitvalue - hysteresisValue))

And for limittype of SPC_LOWERTHAN_LIMIT do a

if (value >= (limitvalue + hysteresisValue))

vs

if (value > (limitvalue + hysteresisValue))

quinncurtis

1558 Posts

Posted - 19 Apr 2017 :  11:49:10  Show Profile  Reply with Quote
Whether or not a value exactly at +-3 sigma should be in alarm is a matter of personal preference (i.e. the > or >= test). Mathematically it is immaterial. The odds of a process being out of control at exactly 3 sigma are the same as (3 sigma + 10e-100). So you should take it seriously.

That being said, the software includes a flag (ComparisonOperator) that can be set on a per control limit basis which will force the comparison test to be either > or >= for the +sigmas and < and <= for the -sigmas. The default value is true, set to false to force a > evaluation for + sigmas, and a < evaluation for - sigmas.

this.PrimaryChart.GetControlLimitData(SPCChartObjects.SPC_UPPER_CONTROL_LIMIT).ControlLimitRecord.ComparisonOperator = false;

Go to Top of Page

blazermaniac

USA
27 Posts

Posted - 22 Jun 2018 :  13:52:15  Show Profile  Reply with Quote
We are already setting the ComparisonOperator to false. But as you can see from the code snippet that I provided, that flag is not considered when the hysteresisValue is being used. Should that flag be used then? Should the alarmState be true in this scenario?
Go to Top of Page

quinncurtis

1558 Posts

Posted - 22 Jun 2018 :  17:48:41  Show Profile  Reply with Quote
5 or 6 months ago we changed the software to make the comparison in the hysteresis test use the same comparison operator as the simple limit test. So if you haven't downloaded the current version of the software you should. It now looks like:

public bool SimpleLimitTest(double value, double limitvalue, int limittype)
        {
            bool result = false;
            if (!ChartSupport.BGoodValue(value)) return result;
            switch (limittype)
            {
                case SPC_LOWERTHAN_LIMIT:
                    if (!alarmState)
                    {
                        if (comparisonOperator && (value <= limitvalue))
                            result = true;
                        else if (!comparisonOperator && (value < limitvalue))
                            result = true;
                        else
                            result = false;
                    }
                    else
                    {
                        if (!comparisonOperator && (value >= (limitvalue + hysteresisValue)))
                            result = false;
                        else
                          if (comparisonOperator && (value > (limitvalue + hysteresisValue)))
                            result = false;
                        else
                            result = true;
                    }
                    break;
                case SPC_GREATERTHAN_LIMIT:
                    if (!alarmState)
                    {
                        if (comparisonOperator && (value >= limitvalue))
                            result = true;
                        else if (!comparisonOperator && (value > limitvalue))
                            result = true;
                        else
                            result = false;
                    }
                    else
                    {
                        if (!comparisonOperator && (value <= (limitvalue - hysteresisValue)))
                            result = false;
                        else
                        if (comparisonOperator && (value < (limitvalue - hysteresisValue)))
                            result = false;
                        else
                            result = true;
                    }
                    break;
            }

            return result;
        }
Go to Top of Page
  Previous Topic Topic Next Topic  
 New Topic  Reply to Topic
 Printer Friendly
Jump To:
Quinn-Curtis Forums © 2000-2018 Quinn-Curtis, Inc. Go To Top Of Page
Powered By: Snitz Forums 2000 Version 3.4.07