Переход на главную страницу сайта “Термист” Термист
Термомеханическое упрочнение арматурного проката
технология, средства, разработка
Главная О сайте Стандарты Технология Устройства
Лаборатория Библиотека Глоссарий Желтые страницы Обратная связь

Главная >> Лаборатория >> Использование контрольных карт Шухарта

Особые точки карт Шухарта

Автоматизация вычислений
(с использованием MatLab)

И.А.Гунькин

Описание методики см. Особые точки карт Шухарта. Восемь тестов для анализа контрольных карт Шухарта или "Выход процесса из-под контроля".

 

function Test_Shewhart(M, V_Lin)
% Тестирование контрольной карты Шухарта

UCL=V_Lin(1);
UCL_2_3=V_Lin(2);
UCL_1_3=V_Lin(3);
CL=V_Lin(4);
LCL_1_3=V_Lin(5);
LCL_2_3=V_Lin(6);
LCL=V_Lin(7);

N=length(M(1,:));

% Тест одной точки. Точка выходит за контрольные пределы
for i=1:N
    if Test_01(M(2,i), LCL, UCL)
        plot(M(1,i), M(2,i), 'or', 'LineWidth', 5)
    end
end

% Тест "3". Две из трех последовательных точек находятся с одной стороны
%           от центральной линии в зоне A или дальше
if N >= 3
    for i=1:(N-2)
        M_t1=M(:,i:(i+2));
        [Flag, V_Out]=Test_03(M_t1(2,:), LCL_2_3, UCL_2_3);
        if Flag
            M_t1=M_t1(:, V_Out==1);
            plot(M_t1(1,:), M_t1(2,:), 'or', 'LineWidth', 5)
        end
    end
end     

% Тест "5". Четыре из пяти последовательных точек находятся с одной
%           стороны от центральной линии в зоне B или дальше
if N >= 5
    for i=1:(N-4)
        M_t1=M(:,i:(i+4));
        [Flag, V_Out]=Test_05(M_t1(2,:), LCL_1_3, UCL_1_3);
        if Flag
            M_t1=M_t1(:, V_Out==1);
            plot(M_t1(1,:), M_t1(2,:), 'or', 'LineWidth', 5)
        end
    end
end

% Тест "6". Шесть последовательных точек расположены по возрастанию
%           или по убыванию
if N >= 6
    for i=1:(N-5)
        M_t1=M(:,i:(i+5));
        if Test_06(M_t1(2,:))
            plot(M_t1(1,:), M_t1(2,:), 'or', 'LineWidth', 5)
        end
    end
end

% Тест "8". Восемь последовательных точек находятся вне зоны C
%           с обеих сторон от центральной линии
if N >= 8
    for i=1:(N-7)
        M_t1=M(:,i:(i+7));
        if Test_08(M_t1(2,:), LCL_1_3, UCL_1_3)
            plot(M_t1(1,:), M_t1(2,:), 'or', 'LineWidth', 5)
        end
    end
end

% Тест "9". Девять последовательных точек находятся с одной стороны
%           от центральной линии
if N >= 9
    for i=1:(N-8)
        M_t1=M(:,i:(i+8));
        if Test_09(M_t1(2,:), CL)
            plot(M_t1(1,:), M_t1(2,:), 'or', 'LineWidth', 5)
        end
    end
end

% Тест "14". Есть 14 последовательных точек, чередующихся вверх-вниз
if N >= 14
    for i=1:(N-13)
        M_t1=M(:,i:(i+13));
        if Test_14(M_t1(2,:))
            plot(M_t1(1,:), M_t1(2,:), 'or', 'LineWidth', 5)
        end
    end
end

% Тест "15". Есть 15 последовательных точек в зоне C (по обе стороны
%            от центральной линии)
if N >= 15
    for i=1:(N-14)
        M_t1=M(:,i:(i+14));
        if Test_15(M_t1(2,:), LCL_1_3, UCL_1_3)
            plot(M_t1(1,:), M_t1(2,:), 'or', 'LineWidth', 5)
        end
    end
end
Тест для анализа контрольных карт Шухарта. Точка выходит за контрольные пределы. Тест одной точки: Точка выходит за контрольные пределы
function Flag=Test_01(x, LCL, UCL)
% Проверка последовательности при анализе контрольных карт Шухарта
% Тест одной точки: Точка выходит за контрольные пределы
% Входные данные:
% x - анализируемое значение (скаляр)
% LCL и UCL - соответственно нижняя и верхняя контрольные границы (скалярные величины)
% Выходное значение:
% Flag = 1 если условие выполняется, и Flag = 0 если не выполняется

% Проверка входных значений
if ~all(size(x)==[1 1]) | ~all(size(LCL)==[1 1]) | ~all(size(UCL)==[1 1])
    error('Ошибка в Test_01. x, LCL, UCL должны быть скалярными.')
end

if x < LCL | x > UCL
    Flag=1;
else
    Flag=0;
end

 

Тест для анализа контрольных карт Шухарта. Две из трех последовательных точек находятся с одной стороны от центральной линии в зоне A или дальше. Тест “3”: Две из трех последовательных точек находятся с одной стороны от центральной линии в зоне A или дальше
function [Flag, V_Out]=Test_03(V, LCL_2_3, UCL_2_3)
% Проверка последовательности при анализе контрольных карт Шухарта
% Тест “3”: Две из трех последовательных точек находятся с одной стороны
% от центральной линии в зоне A или дальше
% Входные данные:
% V - исходный вектор из 3 значений
% LCL_2_3 - нижняя граница нижней зоны B (скаляр)
% UCL_2_3 - верхняя граница верхней зоны B (скаляр)
% Выходные значения:
% Flag = 1 если условие выполняется, и Flag = 0 если не выполняется
% V_Out - вектор с порядковыми номерами точек не прошедших тестирование

% Проверка входных значений
if length(V)~=3
    error('Ошибка в Test_03. В векторе V должно быть 3 значения')
end
if ~all(size(LCL_2_3)==[1 1]) | ~all(size(UCL_2_3)==[1 1])
    error('Ошибка в Test_03. LCL_2_3 и UCL_2_3 должны быть скалярными.')
end

if sum(V <= LCL_2_3) >= 2
    Flag=1;
    V_Out=(V <= LCL_2_3);
elseif sum(V >= UCL_2_3) >= 2
    Flag=1;
    V_Out=(V >= UCL_2_3);
else
    Flag=0;
    V_Out=NaN;
end

 

Тест для анализа контрольных карт Шухарта. Четыре из пяти последовательных точек находятся с одной стороны от центральной линии в зоне B или дальше. Тест “5”: Четыре из пяти последовательных точек находятся с одной стороны от центральной линии в зоне B или дальше
function [Flag, V_Out]=Test_05(V, LCL_1_3, UCL_1_3)
% Проверка последовательности при анализе контрольных карт Шухарта
% Тест “5”: Четыре из пяти последовательных точек находятся с одной стороны
% от центральной линии в зоне B или дальше
% Входные данные:
% V - исходный вектор из 5 значений
% LCL_1_3 - нижняя граница зоны C (скаляр)
% UCL_1_3 - верхняя граница зоны C (скаляр)
% Выходные значения:
% Flag = 1 если условие выполняется, и Flag = 0 если не выполняется
% V_Out - вектор с порядковыми номерами точек не прошедших тестирование

% Проверка входных значений
if length(V)~=5
    error('Ошибка в Test_05. В векторе V должно быть 5 значений')
end
if ~all(size(LCL_1_3)==[1 1]) | ~all(size(UCL_1_3)==[1 1])
    error('Ошибка в Test_05. LCL_1_3 и UCL_1_3 должны быть скалярными.')
end

if sum(V <= LCL_1_3) >= 4
    Flag=1;
    V_Out=(V <= LCL_1_3);
elseif sum(V >= UCL_1_3) >= 4
    Flag=1;
    V_Out=(V >= UCL_1_3);
else
    Flag=0;
    V_Out=NaN;
end

 

Тест для анализа контрольных карт Шухарта. Шесть последовательных точек расположены по возрастанию или по убыванию. Тест “6”: Шесть последовательных точек расположены по возрастанию или по убыванию
function Flag=Test_06(V)
% Проверка последовательности при анализе контрольных карт Шухарта
% Тест “6”: Шесть последовательных точек расположены по возрастанию или по убыванию
% Входные данные:
% V - исходный вектор из 6 значений
% Выходное значение:
% Flag = 1 если условие выполняется, и Flag = 0 если не выполняется

% Проверка входных значений
if length(V)~=6
    error('Ошибка в Test_06. Должно быть 6 значений')
end

V1=diff(V);
Flag = all(V1>=0) | all(V1<=0);

 

Тест для анализа контрольных карт Шухарта. Восемь последовательных точек находятся вне зоны C с обеих сторон от центральной линии. Тест “8”: Восемь последовательных точек находятся вне зоны C с обеих сторон от центральной линии
function Flag=Test_08(V, LCL_1_3, UCL_1_3)
% Проверка последовательности при анализе контрольных карт Шухарта
% Тест “8”: Восемь последовательных точек находятся вне зоны C
% с обеих сторон от центральной линии
% Входные данные:
% V - исходный вектор из 8 значений
% LCL_1_3 - нижняя граница зоны C (скаляр)
% UCL_1_3 - верхняя граница зоны C (скаляр)
% Выходное значение:
% Flag = 1 если условие выполняется, и Flag = 0 если не выполняется

% Проверка входных значений
if length(V)~=8
    error('Ошибка в Test_08. В векторе V должно быть 8 значений')
end
if ~all(size(LCL_1_3)==[1 1]) | ~all(size(UCL_1_3)==[1 1])
    error('Ошибка в Test_08. LCL_1_3 и UCL_1_3 должны быть скалярными.')
end

Flag = all((V <= LCL_1_3) + (V >= UCL_1_3));

 

Тест для анализа контрольных карт Шухарта. Девять последовательных точек находятся с одной стороны от центральной линии. Тест “9”: Девять последовательных точек находятся с одной стороны от центральной линии
function Flag=Test_09(V, CL)
% Проверка последовательности при анализе контрольных карт Шухарта
% Тест “9”: Девять последовательных точек находятся с одной стороны от центральной линии
% Входные данные:
% V - исходный вектор из 9 значений
% CL - значение для центральной линии (скаляр)
% Выходное значение:
% Flag = 1 если условие выполняется, и Flag = 0 если не выполняется

% Проверка входных значений
if length(V)~=9
    error('Ошибка в Test_09. Должно быть 9 значений')
end
if ~all(size(CL) == [1 1])
    error('Ошибка в Test_09. CL должно быть скаляром')
end

Flag = all(V >= CL) | all(V <= CL);

 

Тест для анализа контрольных карт Шухарта. Есть 14 последовательных точек, чередующихся вверх-вниз. Тест “14”: Есть 14 последовательных точек, чередующихся вверх-вниз
function Flag=Test_14(V)
% Проверка последовательности при анализе контрольных карт Шухарта
% Тест “14”: Есть 14 последовательных точек, чередующихся вверх-вниз
% Входные данные:
% V - исходный вектор из 14 значений
% Выходное значение:
% Flag = 1 если условие выполняется, и Flag = 0 если не выполняется

% Проверка входных значений
if length(V)~=14
    error('Ошибка в Test_14. Должно быть 14 значений')
end

V1=diff(V);
V2=V1([1 3 5 7 9 11 13]);
V3=V1([2 4 6 8 10 12]);

Flag = (all(V2 >= 0) & all(V3 <= 0)) | (all(V2 <= 0) & all(V3 >= 0));

 

Тест для анализа контрольных карт Шухарта. Есть 15 последовательных точек в зоне C (по обе стороны от центральной линии). Тест “15”: Есть 15 последовательных точек в зоне C (по обе стороны от центральной линии)
function Flag=Test_15(V, LCL_1_3, UCL_1_3)
% Проверка последовательности при анализе контрольных карт Шухарта
% Тест “15”: Есть 15 последовательных точек в зоне C
% (по обе стороны от центральной линии)
% Входные данные:
% V - исходный вектор из 15 значений
% LCL_1_3 - нижняя граница зоны C (скаляр)
% UCL_1_3 - верхняя граница зоны C (скаляр)
% Выходное значение:
% Flag = 1 если условие выполняется, и Flag = 0 если не выполняется

% Проверка входных значений
if length(V)~=15
    error('Ошибка в Test_15. В векторе V должно быть 15 значений')
end
if ~all(size(LCL_1_3)==[1 1]) | ~all(size(UCL_1_3)==[1 1])
    error('Ошибка в Test_15. LCL_1_3 и UCL_1_3 должны быть скалярными.')
end

Flag = all((V >= LCL_1_3) & (V <= UCL_1_3));

 



Материал подготовлен на основании ДСТУ ISO 8258-2001 Статистический контроль. Контрольные карты Шухарта.

Смотри также

Использование контрольных карт Шухарта
Пример построения x-R карты Шухарта

К началу страницы


Web-сайт “Термист” (termist.com)
Термомеханическое упрочнение арматурного проката

Отсутствие ссылки на использованный материал является нарушением заповеди "Не укради"

Редактор сайта: Гунькин И.А. (termist.com@gmail.com)