BDD. The Outer Limits. Iosif Itkin at Youcon (in Russian)
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-3 5/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
бинарных переменных.
Типичные свойства: выполнение команд, соблюдение
технологического процесса, бесперебойная работа системы.
Дальнейшее развитие: разработка комплекса построения и
верификации ПЛК-программ.
Кузьмин Е. В., Рябухин Д. А., Шипов А. А. Построение и верификация ПЛК-программ