33 8. Модель с диаграммой Stateflow Подготовка к работе По указанной литературе изучить: − основы системы Stateflow, − с...
129 downloads
374 Views
906KB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
33 8. Модель с диаграммой Stateflow Подготовка к работе По указанной литературе изучить: − основы системы Stateflow, − связь Stateflow с Simulink. Контрольные вопросы 1. Назначение пакета Stateflow. 2. Доступ к средствам Stateflow. 3. Подключение блока Chart к Simulink-модели. 4. Что такое SF-диаграмма. 5. Объекты SF-диаграмм: состояния, переходы, признаки альтернативы, события, процедуры, данные. 6. Работа с редактором SF-диаграмм. 7. Описание объектов Stateflow 8. Подготовка модели Simulink с заготовкой Chart. 9. Создание переходов между состояниями. 10. Запуск и отладка SF-диаграмм. 11. Работа с отладчиком SF-диаграмм. 12. Оформление SF-диаграмм. Задание к работе Моделирование управляемого переключателя. В модели периодический сигнал передается от источника к осциллоскопу через управляемый переключатель, который включается на четные периоды сигнала. Управление переключателем осуществляется от SF-диаграммы, которая может находиться в двух состояниях: On (включено) и Off (выключено). Пример выполнения Структурная схема Simulink-модели показана на Рис. 8.1. В модели периодический синусоидальный сигнал от источника Sine Wave передается к осциллоскопу Scope через управляемый переключатель Switch, который управляется сигналом Vkluch передает сигнал с верхнего входа. Переключатель замкнут, когда сигнал Vkluch больше порогового значения 0.5. Это будет только на четных периодах сигнала Sine Wave. Сигнал Vkluch формируется в блоке SF-диаграммы с именем On_off, которая может находиться в двух состояниях: On (включено) и Off (выключено). SF-диаграмма имеет вход переключения, соединяемый с генератором Sine Wave. Переключение SF-диаграммы из одного состояния в другое происходит при выполнении события Rising (достижение 0 при уменьшении) в сигнале на входе. Для визуализации в модели использован 3-лучевой осциллоскоп, который позволяет в одинаковом масштабе увидеть: сигнал Sine Wave до переключателя, управляющий сигнал Vkluch, сигнал после переключателя.
Рис. 8.1. Модель управляемого переключателя
34
Рис. 8.2. Структура SF-диаграммы 1. 2. 3. 4. 5. 6.
Структура SF-диаграммы показана на Рис. 8.2. Порядок ее заполнения: Двойным щелчком по карте заготовки в Simulink-модели вызвать редактор SF-диаграмм. Используя верхнюю кнопку в левой панели инструментов разместить блоки состояний, которым назначить имена On и Off. Используя третью кнопку в этой панели, создать переходы между состояниями, которым дать имя Switch. После прямого слеша добавить имя события Vkluch, переключаемого при переходе. С помощью команды Tools=>Explore вызвать окно SF-обозревателя, показанное на Рис. 8.3. В нем в левой панели представлена иерархия SF-диаграммы. В ней нужно выделить объект On-off. С помощью команды Add=>Event (добавить событие) внести в правую панель 2 события. Каждому событию соответствует строка с полями Name (имя), Scope (область действия), Trigger (условия переключения). По умолчанию вводится событие c Name=event и Scope=local (локальное). Каждое событие надо конкретизировать, задав имя, область действия (Input from Simulink – ввод из Simulink, Output to Simulink – вывод в Simulink) и условия переключения (Rising – пересечение 0 при нарастании, Falling – пересечение 0 при уменьшении, Either – пересечение 0, Function Call – вызов функции). Значения Scope и Trigger выбераются из выпадающих списков. Наши события: Name=Switch, Scope= Input from Simulink, Trigger=Rising. Name=Vkluch, Scope= Output to Simulink, Trigge=Either.
Рис. 8.3. Окно SF-обозревателя до ввода событий Окно SF-обозревателя после ввода событий имеет вид Рис. 8.4.
Рис. 8.4. Окно SF-обозревателя после ввода событий
35 7.
Теперь сохраним Simulink-модель с именем St_flow1. Для наблюдения за работой SF-диаграммы в процессе моделирования используем отладчик SF-диаграмм в пошаговом режиме. Для визуализации данных разместим на экране одновременно окна редактора SF-диаграммы, отладчика SFдиаграммы и осциллоскопа. Отладчик вызывается командой Tools=>Debag в редакторе SF-диаграмм. Возникает окно, показанное на Рис. 8.5. После установок опций можно кнопкой Start начать моделирование. После этого в окне отладчика (см. Рис. 8.6) кнопка Start меняется на Continue (продолжить).
Рис. 8.5. Отладчик SF-диаграмм при запуске
Рис. 8.6. Отладчик SF-диаграмм при моделировании
36 Далее парами показываются окна редактора SF-диаграммы и осциллоскопа. При старте (см. Рис. 8.7) для SF-диаграммы устанавливается свойство Off, в окне редактора оно выделяется цветом, временных диаграмм нет, так как переключатель Switch выключен.
Рис. 8.7. Старт моделирования Второй этап моделирования отображен на Рис. 8.8. Сигнал от Sin Wave есть, но он не передается через переключатель Switch, так как он выключен.
Рис. 8.8. Второй этап моделирования
37 Третий этап моделирования отображен на Рис. 8.9. SF-диаграмма находится в состоянии On (оно выделено цветом), сигнал Vkluch для управления переключателем сформирован, переключатель Switch включен, сигнал Sin Wave передается на второй вход осциллоскопа.
Рис. 8.9. Третий этап моделирования Далее процессы переключения циклически повторяются. На Рис. 8.10 показаны финальные временные диаграммы. Видно, что переключение состояний в SF-диаграмме происходит в начале каждого периода сигнала. В итоге через переключатель пропускаются только четные периоды сигнала.
Рис. 8.10. Конец моделирования
38 9. Моделирование системы охраны дома Модель системы охраны дома, представленная на Рис. 9.1 включает: 1. Security system – система охраны. 2. Блоки задания режимов контроля (для каждого режима задание константы 1 означает, что режим включен): Door mode – режим контроля двери, Window mode – режим контроля окна, Motion detector mode – режим обнаружения движения. 3. Сенсоры состояния объектов (по их показаниям при включенном режиме контроля объекта система охраны формирует сигналы тревоги): Door sensor – датчик открытой двери, Window sensor – датчик открытого окна, Motion detector sensor – датчик движения, 4. Включатель системы Alarm enable. Когда значение этого параметра 1, система охраны активизируется. 5. Фиксаторы состояния, которые отрабатывают выходные сигналы системы охраны: Sound – подать звуковой сигнал тревоги. Call_police - вызвать полицию. 6. Средства сигнализации: звуковой сигнализатор (дает сигнал предупреждения – Warning), средства вызова полиции (дает сигнал тревоги – Alarm), визуальный сигнализатор (дает интегрированный сигнал – Warning+ Alarm).
Рис. 9.1. Моделирование системы охраны дома На Рис. 9.2 показана структура stateflow диаграммы Security System. Она содержит 6 вложенных диаграмм:
Door – дверь, Win – окно, Motion – движение, Alarm – тревога, 3 диаграммы с поясняющим текстом.
39
Рис. 9.2. Система безопасности Диаграммы Door, Win, Motion имеют сходную структуру, включают по два состояния: Active – активность. В это состояние вход осуществляется по умолчанию (состояние помечено стрелкой ввода). В этом состоянии отслеживается датчика объекта контроля (двери, окна, движения). Переход в состояние Disable по значению 0 параметра режима контроля D_mode (или W_mode, M_mode). Disable – выключено. Переход в состояние Active по значению 1 параметра режима контроля D_mode (или W_mode, M_mode). Состояние Active диаграммы Motion включает два вложенных состояния: Idle – ожидание. В это состояние вход осуществляется по умолчанию (состояние помечено стрелкой ввода). Debouncing – противодрожание. В это состояние вход осуществляется при обнаружении сигнала от детектора движения. Здесь проверяется, не вызван ли сигнал движения дрожанием датчика. Если этого нет, то сигнал датчика движения рассматривается, как тревожный. Диаграмма Alarm включает два состояния: On – включено. В это состояние вход осуществляется по умолчанию (состояние помечено стрелкой ввода). Переход в состояние Off по значению 0 параметра Alarm_active. Off – выключено. Переход в состояние Active по значению 1 параметра Alarm_active. Состояние On диаграммы Alarm включает два вложенных состояния: Idle – ожидание. В это состояние вход осуществляется по умолчанию (состояние помечено стрелкой ввода). В этом состоянии обрабатываются сигналы тревоги в системе.
40 Pending – задержка. В это состояние вход осуществляется при обнаружении сигналов тревоги, в нем формируются сигналы управления индикаторами. Выходные сигналы системы через определенные интервалы времени фиксируются в запоминающих устройствах, которые управляют средствами индикации. Структура блоков фиксации показана на Рис. 9.3.
Рис. 9.3. Фиксатор Индикация о тревожных событиях осуществляется тремя устройствами. На Рис. 9.4 и Рис. 9.5, соответственно, показаны кадры окна моделирования в случае сигнала от датчика двери при выключенном и включенном контроле. В первом случае система только предупреждает о событии, а во втором интерпретирует этот сигнал, как тревогу. На Рис. 9.6 показаны временные диаграммы объединенного сигнала тревоги.
Рис. 9.4. Окно модели при выключенном контроле
41
Рис. 9.5. Окно модели при включенном контроле
Рис. 9.6. Временные диаграммы объединенного сигнала тревоги
42 10. Моделирование кипятильника с двухпозиционным термоконтроллером Создаем программу моделирования работы кипятильника, который содержит двухпозиционный термоконтроллер, управляемый нагреватель и два световых индикатора: мигающий красный (red) – нагреватель выключен, зеленый (Green) – нагреватель включен. Контроллер периодически сравнивает фактическую температуру кипятильника (temp) c заданной температурой (reference). Если она не достигнута, то на определенное время управляющим сигналом boiler нагреватель кипятильника включается. Состояние устройства индицируется двумя цветными светоиндикаторами. Диаграмма моделирования кипятильника в среде Simulink показана на Рис. 10.1. В ее состав входят: Bang-Bang Controller - диаграмма stateflow, которая имитирует работу контроллера, управляющего кипятильником, temperature set point – блок задания температуры нагрева, Boiler Plant Model – имитатор кипятильника, timer – таймер, задающий события, заставляющие контроллер срабатывать. трехлучевой осциллоскоп для визуализации временных диаграмм.
Рис. 10.1. Модель Simulink работы кипятильника Блок Bang-Bang Controller - диаграмма stateflow имитирует работу кипятильника. Структура диаграммы stateflow блока Bang-Bang Controller показана на Рис. 10.2. Диаграмма содержит 4 вложенные stateflow диаграммы: Heater – управление кипятильником. function turn_boiler(mode) – функция переключить кипятильник в задаваемый режим, ее диаграмма показана на Рис. 10.3. Функция при mode=ON делает цвет индикатора color=GREEN (ему соответствует 2) и color=RED (ему соответствует 1) в противном случае. Затем она присваивает LED=color. function flash_LED() – функция управления включением цветных индикаторов. При LED=OFF (ему соответствует 0) возвращает значение LED=color (цвет включаемого индикатора) и LED=OFF в противном случае. Ее диаграмма показана на Рис. 10.4. function b=cold() - функция проверки нагрева, возвращает логическое значение b=True, если заданная температура не достигнута.
43
Рис. 10.2. Блок Bang-Bang Controller Диаграмма Heater включает два состояния: Off – выключен. В это состояние (оно помечено стрелкой ввода) модель входит по умолчанию и выполняет функцию turn_boiler(OFF). Затем каждые 5 секунд в этом состоянии выполняется функция flash_LED(). По истечении 40 секунд при условии истинности функции cold() происходит переход в состояние On. On – включен. В этом состоянии включается нагреватель. Возврат в состояние Off может происходить двумя путями: через 20 секунд происходит или раньше, если заданная температура достигнута.
Рис. 10.3. Диаграмма функции turn_boiler(mode)
Рис. 10.4. Диаграмма функции flash_LED() Блок Boiler Plant Model имитирует работу нагревателя кипятильника. Структура этого блока показана на Рис. 10.5
44
Рис. 10.5. Блок Boiler Plant Model Временные диаграммы моделирования показаны на Рис. 10.6. Верхний график отображает сигнал LED, принимающий значения 0 (оба индикатора выключены), 1 (включен зеленый индикатор) и 2(включен красный индикатор). Средний график отображает сигнал boiler, принимающий значения 0 (нагреватель выключен), 1 (нагреватель включен. На нижнем графике показано изменение во времени температуры кипятильника.
Рис. 10.6. Временные диаграммы моделирования
45 11. Моделирование движения автомобиля Создаем программу моделирования движения автомобиля с ручной коробкой передач на 4 скорости движения вперед. Диаграмма моделирования в среде Simulink показана на Рис. 11.1. Она включает: vehicle - автомобиль, throttle schedule - график скоростей движения, brake schedule - график торможений. Автомобиль содержит: engine - двигатель, transmission - коробку передач, engine RPM - тахометр, vehicle speed - спидометр, shift_logic – диаграмму stateflow (реакция на действия водителя), threshold calculation – расчет пороговых значений скорости, при достижении которых нужно переключать скоростной режим коробки передач.
Рис. 11.1. Модель Simulink движения автомобиля График скоростей движения задается блоком throttle schedule, окно параметров которого показано на Рис. 11.2. В поле Data приведен массив данных [0 60; 15 40;30 100;50 0;100 0]. Это пары чисел, первое - время, второе – желаемая скорость. На интервале времени между моментами смены скорости значения вычисляются метом линейной интерполяции. График торможений задается блоком brake schedule, окно параметров которого показано на Рис. 11.3. В поле Data приведен массив данных [0 0; 10 0; 20 0;40 0], когда торможений нет. Это пары чисел, первое - время, второе – желаемое торможение. На интервале времени между моментами смены скорости значения вычисляются метом линейной интерполяции.
46
Рис. 11.2. Окно параметров блока throttle schedule - график скоростей движения
Рис. 11.3. Окно параметров блока brake schedule - график торможений Блок shift_logic - диаграмма stateflow имитирует реакцию на действия водителя автомобиля. Водитель должен по графику скоростей движения (из throttle schedule) и реальной скорости движения автомобиля vehicle speed переключать скоростной режим gear для коробки передач, повышая его, если скорость движения выше максимального порога, и понижая его, если скорость движения ниже минимального порога. Входные параметры этого блока: throttle – желаемая скорость, speed – существующая скорость,
47 up_th – команда повысить скорость, down_th – команда понизить скорость. Выходные параметры этого блока: gear – выбранный режим скорости, CALC_TH – команда вычислить пороги. Структура диаграммы stateflow блока shift_logic показана на Рис. 11.4. Диаграмма содержит две вложенных диаграммы с номерами 1 и 2 (обработка диаграмм при моделировании осуществляется по нарастающим номерам): gear_state - диаграмма состояний скоростного режима, selection_state – диаграмма состояний выбранного скоростного режима. Первая диаграмма gear_state включает 4 состояния: first - первая скорость (процедура входа в него gear = 1), second – вторая скорость (процедура входа в него gear = 2), third – третья скорость (процедура входа в него gear =3), fourth – четвертая скорость (процедура входа в него gear = 4). Между состояниями переходы происходят под действием событий UP или DOWN, которые генерируются во второй диаграмме. По умолчанию стартовым является состояние, помеченное стрелкой ввода (состояние first). Вторая диаграмма selection_state отрабатывается во время CALC_TH и включает 3 состояния: steady_state – существующее состояние. Ему соответствуют данные текущего состояния диаграммы gear_state. downshifting – сдвиг вниз. Ему управление передается от steady_state, если скорость меньше нижнего порога. В этом состоянии осуществляется проверка нижнего порога, обновленного блоком threshold calculation. Возврат в состояние steady_state осуществляется двумя путями: без генерации события, если скорость стала выше нижнего порога, и с формированием события gear_state.DOWN, если скорость осталась меньше нижнего порога (во втором случае процедура сдвига вниз будет повторена). upshifting – сдвиг вверх. Ему управление передается от steady_state, если скорость выше верхнего порога. В этом состоянии осуществляется проверка верхнего порога, обновленного блоком threshold calculation. Возврат в состояние steady_state осуществляется двумя путями: без генерации события, если скорость стала меньше верхнего порога, и с формированием события gear_state.UP, если скорость осталась больше верхнего порога (во втором случае процедура сдвига вниз будет повторена).
Рис. 11.4. Структура блока shift_logic
48 Переключение скоростного режима gear в блоке shift_logic осуществляется по результату сравнения скорости speed с порогами скоростей: верхним up_th (когда скорость слишком велика) или нижним down_th (когда скорость слишком мала). Пороги скоростей вырабатываются блоком threshold calculation, внутренняя структура которого показана на Рис. 11.5. В нем по команде run() по адресам, определяемым значениями gear и throttle, из интерполяционных таблиц извлекаются значения верхнего (таблица interp_up) и нижнего (таблица interp_down) порогов скоростей.
Рис. 11.5. Структура блока threshold calculation Блок Engine имитирует работу двигателя автомобиля. Его структура показана на Рис. 11.6 . Работа двигателя управляется желаемой скоростью throttle и сигналом Ti, отображающим инерционную энергию трансмиссии.
Рис. 11.6. Структура блока Engine – двигатель. Engine RPM – датчик числа оборотов двигателя. Блок Transmission имитирует систему передачи вращающего момента от двигателя на колеса автомобиля. Структура блока Transmission показана на Рис. 11.7.
49
Рис. 11.7. Структура блока Transmission Блок Vehicle – маскированный автомобиль. Маска в виде эскиза автомобиля скрывает его структуру. Нужно в локальном меню блока выбрать команду Load under mask и увидеть структуру блока, показанную на Рис. 11.8. В этом блоке выходные параметры рассчитываются по данным о торможениях и техническим параметрам автомобиля: final drive ratio – коэффициент передачи трансмиссии, drag friction at wheels - коэффициент сцепления колес с дорогой, aerodynamics drag - аэродинамический коэффициент, wheel radius - радиус колеса vehicle inertia – инерционность автомобиля
Рис. 11.8. Структура маскированного блока Vehicle – автомобиль. Для контроля в имитационной модели предусмотрены два измерительных прибора: однолучевой осциллоскоп Engine RPM, имитирующий тахометр автомобиля (отображает зависимость от времени числа оборотов двигателя), двухлучевой осциллоскоп, отображающий зависимости от времени желаемой (фиолетовый цвет) и фактической скорости (желтый цвет) движения автомобиля.
50 На Рис. 11.9 и Рис. 11.10, соответственно, приведены временные диаграммы для моделирования движения без торможений и с торможениями. При наличии торможений массив данных о торможениях имеет вид [0 0;10 800; 20 0; 40 600]. Видно, что для достижения желаемого скоростного режима надо иногда тормозить.
Рис. 11.9. Временные диаграммы при моделировании без торможений
Рис. 11.10. Временные диаграммы при моделировании с торможениями