Upload
alexander-petrov
View
316
Download
5
Embed Size (px)
DESCRIPTION
Программно-аппаратная система моделирования и управления технологическим оборудованием. Основные особенности: высокоуровневые параллельные языки описания технологических процессов, ориентированные на специалистов предметных областей. Возможность предварительной отладки управляющих программ на моделях технологического оборудования.
Citation preview
ВерификацияВерификацияуправляющих программ вуправляющих программ в системе системе
автоматизации РТК автоматизации РТК
IronHandIronHand
Докладывает : Большаков О.С.Докладывает : Большаков О.С.
Рыбинск, 2010Рыбинск, 2010
Программы тоже ошибаютсяПрограммы тоже ошибаются
Система Система IronHandIronHand
РТК ТАДиОМ
РТК ТАДиОМ
РТК ТАДиОМ
РТК ТАДиОМ
РТК ТАДиОМ
ВерификацияВерификация – – анализ корректности программных анализ корректности программных систем относительно спецификации, в систем относительно спецификации, в которой задаются исследуемые свойства.которой задаются исследуемые свойства.
Виды верификации:Виды верификации: тестированиетестирование метод доказательства теорем (theorem proving)метод доказательства теорем (theorem proving) метод проверки модели (метод проверки модели (MModel odel CChecking).hecking).
Model CheckingModel Checking (проверка модели)(проверка модели)
Общая схемаОбщая схема
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 Возможность задания модели в виде Возможность задания модели в виде
синхронныхсинхронных//асинхронных конечных асинхронных конечных автоматовавтоматов
Верификация Верификация Model checkingModel checking
ВерификацияВерификация c NuSMV c NuSMV
Пример модуля на Пример модуля на 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
Задание асинхронного исполнения Задание асинхронного исполнения модулеймодулей
По умолчанию модули работают синхронноПо умолчанию модули работают синхронно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.. ∞ ∞
Темпоральные логикиТемпоральные логики
Темпоральная логика – модальная логика, позволяющая формализовать высказывания, зависящие от времени
LTL LTL (Linear Tree Logic)(Linear Tree Logic)
CTLCTL(Computation Tree Logic)(Computation Tree Logic)
Списки КомандСписки Команд
Фрагмент списков командФрагмент списков команд
Формат спецификацииФормат спецификации
1.1. ЕслиЕслиМП-11.ВерхняяРука.Выдвинута МП-11.ВерхняяРука.Выдвинута ИЛИИЛИМП-11.НижняяРука.Выдвинута МП-11.НижняяРука.Выдвинута ИИНе возникаетНе возникаетМП-11.Стол.ПоворотМП-11.Стол.Поворот
2.2. ЕслиЕсли МП-9С.Стол.Против_Часовой МП-9С.Стол.Против_Часовой ИИМП-9С.Стол.ОпущенМП-9С.Стол.ОпущенНе возникаетНе возникаетМП-9С.Рука.ВыдвинутаМП-9С.Рука.Выдвинута
Интуитивное задание проверяемого свойства:Интуитивное задание проверяемого свойства:
Декомпозиция УП на модулиДекомпозиция УП на модули
СхемаСхема кода на кода на 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
СхемаСхема кода на кода на 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
СхемаСхема кода на кода на 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
Задание спецификацииЗадание спецификации
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 свойств: свойств:
Верификация Верификация в в IronHandIronHand
Верификатор в действииВерификатор в действии
РезультатыРезультаты
Для техпроцесса в 38 тактов:Для техпроцесса в 38 тактов: Количество ограничений для Количество ограничений для
стенда ТАДиОМ: стенда ТАДиОМ: 1414 Размер кода модели УП на Размер кода модели УП на SMV : SMV : 433433 строкистроки Количество циклов: 4Количество циклов: 4 Время верификации: Время верификации: ~~10 сек10 сек
Верификация – панацея?