27
Верификация Верификация управляющих программ в управляющих программ в системе системе автоматизации РТК автоматизации РТК IronHand IronHand Докладывает : Большаков О.С. Докладывает : Большаков О.С. Рыбинск, 2010 Рыбинск, 2010

Верификация управляющих программ в системе автоматизации РТК (Iron hand)

Embed Size (px)

DESCRIPTION

Программно-аппаратная система моделирования и управления технологическим оборудованием. Основные особенности: высокоуровневые параллельные языки описания технологических процессов, ориентированные на специалистов предметных областей. Возможность предварительной отладки управляющих программ на моделях технологического оборудования.

Citation preview

Page 1: Верификация управляющих программ в системе автоматизации РТК (Iron hand)

ВерификацияВерификацияуправляющих программ вуправляющих программ в системе системе

автоматизации РТК автоматизации РТК

IronHandIronHand

Докладывает : Большаков О.С.Докладывает : Большаков О.С.

Рыбинск, 2010Рыбинск, 2010

Page 2: Верификация управляющих программ в системе автоматизации РТК (Iron hand)

Программы тоже ошибаютсяПрограммы тоже ошибаются

Page 3: Верификация управляющих программ в системе автоматизации РТК (Iron hand)

Система Система IronHandIronHand

Page 4: Верификация управляющих программ в системе автоматизации РТК (Iron hand)

РТК ТАДиОМ

Page 5: Верификация управляющих программ в системе автоматизации РТК (Iron hand)

РТК ТАДиОМ

Page 6: Верификация управляющих программ в системе автоматизации РТК (Iron hand)

РТК ТАДиОМ

Page 7: Верификация управляющих программ в системе автоматизации РТК (Iron hand)

РТК ТАДиОМ

Page 8: Верификация управляющих программ в системе автоматизации РТК (Iron hand)

РТК ТАДиОМ

Page 9: Верификация управляющих программ в системе автоматизации РТК (Iron hand)

ВерификацияВерификация – – анализ корректности программных анализ корректности программных систем относительно спецификации, в систем относительно спецификации, в которой задаются исследуемые свойства.которой задаются исследуемые свойства.

Виды верификации:Виды верификации: тестированиетестирование метод доказательства теорем (theorem proving)метод доказательства теорем (theorem proving) метод проверки модели (метод проверки модели (MModel odel CChecking).hecking).

Page 10: Верификация управляющих программ в системе автоматизации РТК (Iron hand)

Model CheckingModel Checking (проверка модели)(проверка модели)

Общая схемаОбщая схема

Page 11: Верификация управляющих программ в системе автоматизации РТК (Iron hand)

NuSMV NuSMV (New Symbolic Model Verifier)(New Symbolic Model Verifier)

Open SourceOpen Source (GNU LGPL) (GNU LGPL) Написан на Написан на ANCI C, ANCI C, совместим с совместим с POSIX POSIX

((Portable Operating System Interface for Unix Portable Operating System Interface for Unix )) Продолжение закрытого верификатора Продолжение закрытого верификатора SMV SMV

(Carnegy Mellon University)(Carnegy Mellon University) Входной язык – текстовый язык Входной язык – текстовый язык SMVSMV Возможность задания модели в виде Возможность задания модели в виде

синхронныхсинхронных//асинхронных конечных асинхронных конечных автоматовавтоматов

Page 12: Верификация управляющих программ в системе автоматизации РТК (Iron hand)

Верификация Верификация Model checkingModel checking

Page 13: Верификация управляющих программ в системе автоматизации РТК (Iron hand)

ВерификацияВерификация c NuSMV c NuSMV

Page 14: Верификация управляющих программ в системе автоматизации РТК (Iron hand)

Пример модуля на Пример модуля на SMVSMV

MODULE mainMODULE mainVARVAR request : boolean;

state : {ready, busy};ASSIGN

init(state) := ready;next(state) := case

(state = ready) & (request = 1) : busy; 1 : {ready, busy}; esac;

FAIRNESS running

Page 15: Верификация управляющих программ в системе автоматизации РТК (Iron hand)

Задание асинхронного исполнения Задание асинхронного исполнения модулеймодулей

По умолчанию модули работают синхронноПо умолчанию модули работают синхронноmi: Module_i(input_var);mi: Module_i(input_var);

Асинхронный модуль – Асинхронный модуль – processprocessmi: mi: processprocess Module_i(input_var); Module_i(input_var);

Модуль асинхронен = может выполниться 0..∞Модуль асинхронен = может выполниться 0..∞ раз во раз во время время одногоодного исполнения другого модуля исполнения другого модуля

FAIRNESSFAIRNESS runningrunning

Количество возможных исполнений модуля: Количество возможных исполнений модуля: 0..0.. ∞ ∞ → 1.. → 1.. ∞ ∞

Page 16: Верификация управляющих программ в системе автоматизации РТК (Iron hand)

Темпоральные логикиТемпоральные логики

Темпоральная логика – модальная логика, позволяющая формализовать высказывания, зависящие от времени

LTL LTL (Linear Tree Logic)(Linear Tree Logic)

CTLCTL(Computation Tree Logic)(Computation Tree Logic)

Page 17: Верификация управляющих программ в системе автоматизации РТК (Iron hand)

Списки КомандСписки Команд

Фрагмент списков командФрагмент списков команд

Page 18: Верификация управляющих программ в системе автоматизации РТК (Iron hand)

Формат спецификацииФормат спецификации

1.1. ЕслиЕслиМП-11.ВерхняяРука.Выдвинута МП-11.ВерхняяРука.Выдвинута ИЛИИЛИМП-11.НижняяРука.Выдвинута МП-11.НижняяРука.Выдвинута ИИНе возникаетНе возникаетМП-11.Стол.ПоворотМП-11.Стол.Поворот

2.2. ЕслиЕсли МП-9С.Стол.Против_Часовой МП-9С.Стол.Против_Часовой ИИМП-9С.Стол.ОпущенМП-9С.Стол.ОпущенНе возникаетНе возникаетМП-9С.Рука.ВыдвинутаМП-9С.Рука.Выдвинута

Интуитивное задание проверяемого свойства:Интуитивное задание проверяемого свойства:

Page 19: Верификация управляющих программ в системе автоматизации РТК (Iron hand)

Декомпозиция УП на модулиДекомпозиция УП на модули

Page 20: Верификация управляющих программ в системе автоматизации РТК (Iron hand)

СхемаСхема кода на кода на SMVSMV

-- i--- i-ыйый модульмодульMODULE Modulei(tact_num)MODULE Modulei(tact_num)VAR st: 0..100;VAR st: 0..100;ASSIGNASSIGN

init(st) := 0;init(st) := 0;next(st) := casenext(st) := case

… ….. 1 : st;1 : st; esac;esac;

FAIRNESS runningFAIRNESS running

Page 21: Верификация управляющих программ в системе автоматизации РТК (Iron hand)

СхемаСхема кода на кода на SMVSMV---- Счетчик тактов Счетчик тактовMODULE MTactCounter(st0, st1, …, sti, stn)MODULE MTactCounter(st0, st1, …, sti, stn)VAR tact_num : 0..300; cycle_num : 0..300;VAR tact_num : 0..300; cycle_num : 0..300;ASSIGNASSIGN

init(tact_num) := 1;init(tact_num) := 1;next(tact_num) := casenext(tact_num) := case

tact_num = 1 & st1 = … & st2 = … & … & stn = … : 2;tact_num = 1 & st1 = … & st2 = … & … & stn = … : 2;tact_num = 2 & st1 = … & st2 = … & … & stn = … : 3;tact_num = 2 & st1 = … & st2 = … & … & stn = … : 3;tact_num = m : m+1;tact_num = m : m+1;1 : tact_num;1 : tact_num; esac;esac;

init(cycle_num) := 0;init(cycle_num) := 0;next(cycle_num) := casenext(cycle_num) := case

……esac;esac;

FAIRNESS runningFAIRNESS running

Page 22: Верификация управляющих программ в системе автоматизации РТК (Iron hand)

СхемаСхема кода на кода на SMVSMV

---- Главный модуль Главный модульMODULE mainMODULE mainVAR tactCounter : process MTactCounter(m0.st, m1.st, …mi.st, … mn.st);VAR tactCounter : process MTactCounter(m0.st, m1.st, …mi.st, … mn.st);

m0 : process Module0(tactCounter.tact_num);m0 : process Module0(tactCounter.tact_num); m1 : process Module1(tactCounter.tact_num);m1 : process Module1(tactCounter.tact_num); … … mi : process Modulei(tactCounter.tact_num);mi : process Modulei(tactCounter.tact_num); … … mn : process Modulen(tactCounter.tact_num);mn : process Modulen(tactCounter.tact_num);

FAIRNESS runningFAIRNESS running

Page 23: Верификация управляющих программ в системе автоматизации РТК (Iron hand)

Задание спецификацииЗадание спецификации

1.1. SPEC AG ! (m13.st >= 70 & m13.st <= 90 & m3.st = 0 & m1.st = 1)SPEC AG ! (m13.st >= 70 & m13.st <= 90 & m3.st = 0 & m1.st = 1)

2.2. SPEC AG ((m6.st = 0 & m10.st = 0 & m0.st = 0) -> AX !(m10.st = 1))SPEC AG ((m6.st = 0 & m10.st = 0 & m0.st = 0) -> AX !(m10.st = 1))

Пример задания Пример задания CTLCTL свойств: свойств:

Page 24: Верификация управляющих программ в системе автоматизации РТК (Iron hand)

Верификация Верификация в в IronHandIronHand

Page 25: Верификация управляющих программ в системе автоматизации РТК (Iron hand)

Верификатор в действииВерификатор в действии

Page 26: Верификация управляющих программ в системе автоматизации РТК (Iron hand)

РезультатыРезультаты

Для техпроцесса в 38 тактов:Для техпроцесса в 38 тактов: Количество ограничений для Количество ограничений для

стенда ТАДиОМ: стенда ТАДиОМ: 1414 Размер кода модели УП на Размер кода модели УП на SMV : SMV : 433433 строкистроки Количество циклов: 4Количество циклов: 4 Время верификации: Время верификации: ~~10 сек10 сек

Page 27: Верификация управляющих программ в системе автоматизации РТК (Iron hand)

Верификация – панацея?