Построение и верификация ПЛК-программ
по LTL-спецификации
Кузьмин Е. В., Рябухин Д. А., Шипов А. А.
Ярославский государственный университет им. П.Г. Демидова
Ярославль, 2013
Кузьмин Е. В., Рябухин Д. А., Шипов А. А. Построение и верификация ПЛК-программ
Содержание доклада 2/15
Программируемый логический контроллер (ПЛК).
Особенности программ ПЛК.
Языки программирования ПЛК стандарта МЭК 61131-3.
Программа ПЛК как объект верификации.
Структура Крипке программ ПЛК
Подход к написанию ПЛК-программ
Схема трансляции
LTL-спецификации для переменных
Построение SMV-модели и программы на языке ST по
спецификации
Кузьмин Е. В., Рябухин Д. А., Шипов А. А. Построение и верификация ПЛК-программ
Программируемый логический контроллер (ПЛК) 3/15
Особенности ПЛК.
Входы: датчики, концевые выключатели, кнопки,
термометры . . . .
Выходы: электромаг. реле, приводы, световые
сигнализаторы . . . .
Рабочий цикл: считывание входов,
выполнение программы,
выставление выходов.
Применение: бытовые приборы — промышленное
производство.
Кузьмин Е. В., Рябухин Д. А., Шипов А. А. Построение и верификация ПЛК-программ
Программы ПЛК и особенности верификации 4/15
Два типа задач.
1 Аналоговые. Обеспечение устойчивости.
Программирование формул. Дедуктивный анализ.
2 Дискретные. Логическое управление. Конечное
пространство состояний. Метод проверки модели.
Отсутствие циклов (кроме рабочего).
Понимание широким кругом специалистов.
Высокая цена программной ошибки.
Языки программирования стандарта МЭК 61131-3.
Кузьмин Е. В., Рябухин Д. А., Шипов А. А. Построение и верификация ПЛК-программ
Языки МЭК 61131-3 5/15
Языки программирования ПЛК стандарта МЭК 61131-3:
IL (Instruction List) — список инструкций (Ассемблер);
FBD (Functional Block Diagram) — диаграммы
функциональных блоков;
ST (Structured Text) — структурированный текст;
SFC (Sequential Function Chart) — последовательные
функциональные схемы;
LD (Ladder Diagram) — язык релейно-контактных схем
Кузьмин Е. В., Рябухин Д. А., Шипов А. А. Построение и верификация ПЛК-программ
ПодходыкпостроениюиверификацииПЛК-программ 6/15
Цель работы: описание технологии программирования ПЛК
для задач логического управления.
Два подхода к анализу программ ПЛК:
Прямая трансляция с языков стандарта МЭК в
интерфейсные языки верификаторов (SMV, SPIN,
CPNTools...)
Программирование и верификация по спецификации.
Кузьмин Е. В., Рябухин Д. А., Шипов А. А. Построение и верификация ПЛК-программ
Модель программы ПЛК 7/15
Состояние модели: вектор значений входов + вектор
значений выходов и внутренних переменных.
Переходы по состояниям: один проход рабочего цикла.
Условия для программных переменных:
1. Не более одного изменения значения каждой
переменной за один проход рабочего цикла ПЛК
2. Значение переменной изменяется в одном месте
Кузьмин Е. В., Рябухин Д. А., Шипов А. А. Построение и верификация ПЛК-программ
Подход к написанию программ 8/15
Предлагаемая последовательность написания ПЛК-программ:
Создание спецификации при помощи логики LTL
Трансляция на язык SMV и верификация
Трансляция на язык ST
Кузьмин Е. В., Рябухин Д. А., Шипов А. А. Построение и верификация ПЛК-программ
Трансляция 9/15
LTL-спецификация:
G X( V >_V ⇒ OldValCond ∧ FiringCond ∧ V = NewValExpr)
G X( V <_V ⇒ OldValCond ∧ FiringCond ∧ V = NewValExpr )
ST-код:
IF OldValCond AND FiringCond THEN V := NewValExpr ;
ELSIF OldValCond AND FiringCond THEN V := NewValExpr ;
END_IF.
SMV-модель:
case{ next(OldValCond ) & next(FiringCond ) :
next(V ) := next(NewValExpr );
next(OldValCond ) & next(FiringCond ) :
next(V ) := next(NewValExpr );
default : next(V ) := V ; }.
Кузьмин Е. В., Рябухин Д. А., Шипов А. А. Построение и верификация ПЛК-программ
Трансляция 10/15
LTL-спецификация:
G X( ¬_V ∧ V ⇒ FiringCond )
G X( _V ∧ ¬V ⇒ FiringCond )
ST-код:
IF NOT _V AND FiringCond THEN V := 1 ;
ELSIF _V AND FiringCond THEN V := 0; END_IF.
SMV-модель:
case{ ∼V & next(FiringCond ) : next(V ) := 1;
V & next(FiringCond ) : next(V ) := 0;
default : next(V ) := V ; }.
Кузьмин Е. В., Рябухин Д. А., Шипов А. А. Построение и верификация ПЛК-программ
Трансляция 11/15
Особый случай спецификаций, при котором
FiringCond = FiringCond = 1, NewValExpr = NewValExpr ,
OldValCond = (_V < NewValExpr) и
OldValCond = (_V > NewValExpr):
LTL-спецификация:
G X( V = NewValExpr )
ST-код:
V := NewValExpr.
SMV-модель:
next(V ) := next(NewValExpr).
Кузьмин Е. В., Рябухин Д. А., Шипов А. А. Построение и верификация ПЛК-программ
Интерфейс задачи «Логическая игра 31» 12/15
Лампы
Кнопки
ПЛК ВыходыВходы
Кнопка 1
PB1
выбрана цифра 1
ход по цифре 1 Лампа 1
Out1
ход по цифре 2
1
1
2
Лампа 2
Out2
Кнопка 2
PB2
выбрана цифра 2
2
Кнопка 3
PB3
выбрана цифра 3
3
Кнопка 4
PB4
выбрана цифра 4
4
Кнопка 5
PB5
выбрана цифра 5
5
Кнопка 6
PB6
выбрана цифра 6
6
Старт
PBStart
начать игру заново
7
ход по цифре 3
3
Лампа 3
Out3
ход по цифре 4
4
Лампа 4
Out4
ход по цифре 5
5
Лампа 5
Out5
ход по цифре 6
6
Лампа 6
Out6
право хода у игрока
7
Ход
игрока
победил игрок
8
Игрок
ManWin
победил ПЛК
9
ПЛК
PLCWin
право хода у ПЛК
7
Ход ПЛК
Turn
Старт 1 2 3 4 5 6
40 0 44444
Ход
Последний ход:
Игрок ПЛК
Победа
Игрок ПЛК
Кузьмин Е. В., Рябухин Д. А., Шипов А. А. Построение и верификация ПЛК-программ
Примеры общепрограммных свойств 13/15
G(¬PLCWin ∨ ¬ManWin)
G(Mv1 + Mv2 + Mv3 + Mv4 + Mv5 + Mv6 ≤ 1)
G(F(Mv)) ⇒ G(F(PLCWin ∨ ManWin ∨ PBStart))
G(F(Mv)) ∧ G(¬PBStart ∧ X(PBStart) ⇒
(PLCWin ∨ ManWin)) ⇒
G(Mv3 ∧ Sum = 3 ⇒ ((¬ManWin ∧ ¬PLCWin) U PLCWin))
Кузьмин Е. В., Рябухин Д. А., Шипов А. А. Построение и верификация ПЛК-программ
Заключение 14/15
Апробация: 12 типичных задач логического управления
(для ПЛК с 30 входами и выходами в среднем).
Время верификации: несколько секунд на персональном
компьютере.
Ограничения на верификацию: SMV поддерживает до 59
бинарных переменных.
Типичные свойства: выполнение команд, соблюдение
технологического процесса, бесперебойная работа системы.
Дальнейшее развитие: разработка комплекса построения и
верификации ПЛК-программ.
Кузьмин Е. В., Рябухин Д. А., Шипов А. А. Построение и верификация ПЛК-программ
Благодарим за внимание!
Кузьмин Е. В., Рябухин Д. А., Шипов А. А. Построение и верификация ПЛК-программ

TMPA-2013: LTL Specification

  • 1.
    Построение и верификацияПЛК-программ по LTL-спецификации Кузьмин Е. В., Рябухин Д. А., Шипов А. А. Ярославский государственный университет им. П.Г. Демидова Ярославль, 2013 Кузьмин Е. В., Рябухин Д. А., Шипов А. А. Построение и верификация ПЛК-программ
  • 2.
    Содержание доклада 2/15 Программируемыйлогический контроллер (ПЛК). Особенности программ ПЛК. Языки программирования ПЛК стандарта МЭК 61131-3. Программа ПЛК как объект верификации. Структура Крипке программ ПЛК Подход к написанию ПЛК-программ Схема трансляции LTL-спецификации для переменных Построение SMV-модели и программы на языке ST по спецификации Кузьмин Е. В., Рябухин Д. А., Шипов А. А. Построение и верификация ПЛК-программ
  • 3.
    Программируемый логический контроллер(ПЛК) 3/15 Особенности ПЛК. Входы: датчики, концевые выключатели, кнопки, термометры . . . . Выходы: электромаг. реле, приводы, световые сигнализаторы . . . . Рабочий цикл: считывание входов, выполнение программы, выставление выходов. Применение: бытовые приборы — промышленное производство. Кузьмин Е. В., Рябухин Д. А., Шипов А. А. Построение и верификация ПЛК-программ
  • 4.
    Программы ПЛК иособенности верификации 4/15 Два типа задач. 1 Аналоговые. Обеспечение устойчивости. Программирование формул. Дедуктивный анализ. 2 Дискретные. Логическое управление. Конечное пространство состояний. Метод проверки модели. Отсутствие циклов (кроме рабочего). Понимание широким кругом специалистов. Высокая цена программной ошибки. Языки программирования стандарта МЭК 61131-3. Кузьмин Е. В., Рябухин Д. А., Шипов А. А. Построение и верификация ПЛК-программ
  • 5.
    Языки МЭК 61131-35/15 Языки программирования ПЛК стандарта МЭК 61131-3: IL (Instruction List) — список инструкций (Ассемблер); FBD (Functional Block Diagram) — диаграммы функциональных блоков; ST (Structured Text) — структурированный текст; SFC (Sequential Function Chart) — последовательные функциональные схемы; LD (Ladder Diagram) — язык релейно-контактных схем Кузьмин Е. В., Рябухин Д. А., Шипов А. А. Построение и верификация ПЛК-программ
  • 6.
    ПодходыкпостроениюиверификацииПЛК-программ 6/15 Цель работы:описание технологии программирования ПЛК для задач логического управления. Два подхода к анализу программ ПЛК: Прямая трансляция с языков стандарта МЭК в интерфейсные языки верификаторов (SMV, SPIN, CPNTools...) Программирование и верификация по спецификации. Кузьмин Е. В., Рябухин Д. А., Шипов А. А. Построение и верификация ПЛК-программ
  • 7.
    Модель программы ПЛК7/15 Состояние модели: вектор значений входов + вектор значений выходов и внутренних переменных. Переходы по состояниям: один проход рабочего цикла. Условия для программных переменных: 1. Не более одного изменения значения каждой переменной за один проход рабочего цикла ПЛК 2. Значение переменной изменяется в одном месте Кузьмин Е. В., Рябухин Д. А., Шипов А. А. Построение и верификация ПЛК-программ
  • 8.
    Подход к написаниюпрограмм 8/15 Предлагаемая последовательность написания ПЛК-программ: Создание спецификации при помощи логики LTL Трансляция на язык SMV и верификация Трансляция на язык ST Кузьмин Е. В., Рябухин Д. А., Шипов А. А. Построение и верификация ПЛК-программ
  • 9.
    Трансляция 9/15 LTL-спецификация: G X(V >_V ⇒ OldValCond ∧ FiringCond ∧ V = NewValExpr) G X( V <_V ⇒ OldValCond ∧ FiringCond ∧ V = NewValExpr ) ST-код: IF OldValCond AND FiringCond THEN V := NewValExpr ; ELSIF OldValCond AND FiringCond THEN V := NewValExpr ; END_IF. SMV-модель: case{ next(OldValCond ) & next(FiringCond ) : next(V ) := next(NewValExpr ); next(OldValCond ) & next(FiringCond ) : next(V ) := next(NewValExpr ); default : next(V ) := V ; }. Кузьмин Е. В., Рябухин Д. А., Шипов А. А. Построение и верификация ПЛК-программ
  • 10.
    Трансляция 10/15 LTL-спецификация: G X(¬_V ∧ V ⇒ FiringCond ) G X( _V ∧ ¬V ⇒ FiringCond ) ST-код: IF NOT _V AND FiringCond THEN V := 1 ; ELSIF _V AND FiringCond THEN V := 0; END_IF. SMV-модель: case{ ∼V & next(FiringCond ) : next(V ) := 1; V & next(FiringCond ) : next(V ) := 0; default : next(V ) := V ; }. Кузьмин Е. В., Рябухин Д. А., Шипов А. А. Построение и верификация ПЛК-программ
  • 11.
    Трансляция 11/15 Особый случайспецификаций, при котором FiringCond = FiringCond = 1, NewValExpr = NewValExpr , OldValCond = (_V < NewValExpr) и OldValCond = (_V > NewValExpr): LTL-спецификация: G X( V = NewValExpr ) ST-код: V := NewValExpr. SMV-модель: next(V ) := next(NewValExpr). Кузьмин Е. В., Рябухин Д. А., Шипов А. А. Построение и верификация ПЛК-программ
  • 12.
    Интерфейс задачи «Логическаяигра 31» 12/15 Лампы Кнопки ПЛК ВыходыВходы Кнопка 1 PB1 выбрана цифра 1 ход по цифре 1 Лампа 1 Out1 ход по цифре 2 1 1 2 Лампа 2 Out2 Кнопка 2 PB2 выбрана цифра 2 2 Кнопка 3 PB3 выбрана цифра 3 3 Кнопка 4 PB4 выбрана цифра 4 4 Кнопка 5 PB5 выбрана цифра 5 5 Кнопка 6 PB6 выбрана цифра 6 6 Старт PBStart начать игру заново 7 ход по цифре 3 3 Лампа 3 Out3 ход по цифре 4 4 Лампа 4 Out4 ход по цифре 5 5 Лампа 5 Out5 ход по цифре 6 6 Лампа 6 Out6 право хода у игрока 7 Ход игрока победил игрок 8 Игрок ManWin победил ПЛК 9 ПЛК PLCWin право хода у ПЛК 7 Ход ПЛК Turn Старт 1 2 3 4 5 6 40 0 44444 Ход Последний ход: Игрок ПЛК Победа Игрок ПЛК Кузьмин Е. В., Рябухин Д. А., Шипов А. А. Построение и верификация ПЛК-программ
  • 13.
    Примеры общепрограммных свойств13/15 G(¬PLCWin ∨ ¬ManWin) G(Mv1 + Mv2 + Mv3 + Mv4 + Mv5 + Mv6 ≤ 1) G(F(Mv)) ⇒ G(F(PLCWin ∨ ManWin ∨ PBStart)) G(F(Mv)) ∧ G(¬PBStart ∧ X(PBStart) ⇒ (PLCWin ∨ ManWin)) ⇒ G(Mv3 ∧ Sum = 3 ⇒ ((¬ManWin ∧ ¬PLCWin) U PLCWin)) Кузьмин Е. В., Рябухин Д. А., Шипов А. А. Построение и верификация ПЛК-программ
  • 14.
    Заключение 14/15 Апробация: 12типичных задач логического управления (для ПЛК с 30 входами и выходами в среднем). Время верификации: несколько секунд на персональном компьютере. Ограничения на верификацию: SMV поддерживает до 59 бинарных переменных. Типичные свойства: выполнение команд, соблюдение технологического процесса, бесперебойная работа системы. Дальнейшее развитие: разработка комплекса построения и верификации ПЛК-программ. Кузьмин Е. В., Рябухин Д. А., Шипов А. А. Построение и верификация ПЛК-программ
  • 15.
    Благодарим за внимание! КузьминЕ. В., Рябухин Д. А., Шипов А. А. Построение и верификация ПЛК-программ