Signal Builder
Блок Signal Builder не рекомендуется. Используйте блок Signal Editor вместо этого.
Блок Signal Builder позволяет вам создавать взаимозаменяемые группы кусочных линейных источников сигнала и использовать их в модели. Можно быстро переключить группы сигнала в и из модели, чтобы упростить тестирование. В окне Signal Builder создайте сигналы и задайте выход waveforms.To, открывают окно, дважды кликают блок. Смотрите Группы Сигнала.
Примечание
Используйте signalbuilder функция, чтобы создать и получить доступ к блокам Signal Builder программно.
Порты
Вывод
Signal 1 — Первый выходной сигнал
скаляр | вектор | матрица
Первый выходной сигнал группы сигнала, в настоящее время видимой в окне Signal Builder.
Типы данных: double | bus
Signal n N выходной сигнал th
скаляр | вектор | матрица
n выходной сигнал th группы сигнала, в настоящее время видимой в окне Signal Builder. n соответствует индексу сигнала.
Типы данных: double | bus
Характеристики блока
Типы данных
Прямое сквозное соединение
Многомерные сигналы
Сигналы переменного размера
Обнаружение пересечения нулем
Расширенные возможности
Генерация кода C/C++
Генерация кода C и C++ с помощью Simulink® Coder™.
Не рекомендуемый для производственного кода.
Смотрите также
Темы
- Группы сигнала
- Загрузите данные со взаимозаменяемыми сценариями
- Основы сигнала
Представлено до R2006a
Документация Simulink
- Примеры
- Блоки и другая ссылка
- Информация о релизах
- PDF-документация
Поддержка
- MATLAB Answers
- Помощь в установке
- Отчеты об ошибках
- Требования к продукту
- Загрузка программного обеспечения
© 1994-2021 The MathWorks, Inc.
- Условия использования
- Патенты
- Торговые марки
- Список благодарностей
Для просмотра документации необходимо авторизоваться на сайте
Войти
Памятка переводчика
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста — например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.
Документация
Используйте Редактор Сигнала, чтобы создать и отредактировать входные сигналы, которые можно организовать для нескольких симуляций. Можно затем сохранить данные сигнала в MAT-файл для симуляции или сопоставлять с портами корневого уровня. По умолчанию Редактор Сигнала создает данные сигнала в timeseries формат. Можно получить доступ к Редактору Сигнала следующими способами:
- signalEditor функция — Редактор Сигнала начинает с командной строки.
- От Корневого Картопостроителя Inport — Чтобы создать MAT-файл для ваших новых данных сигнала, выберите Signals>New MAT-File. Чтобы соединиться в существующем файле данных сигнала из существующего сценария и отредактировать сигналы в том файле, используйте Signals>Edit MAT-File.
- От блока Signal Editor
Редактор сигнала работает только с MAT-файлами.
Можно управлять сигналами этими способами:
- Создайте и отредактируйте несколько сигналов в нескольких наборах данных. По умолчанию Редактор Сигнала создает timeseries данные о формате.
- Используйте обозначения сигнала, чтобы создать более сложные сигналы с помощью MATLAB ® выражения. Можно использовать диалоговое окно Author and Insert или вручную ввести простые выражения MATLAB в табличную область.
- Используйте существующие сценарии, чтобы получить существующие наборы данных, для которых можно отредактировать и создать сигналы.
- Создайте и отредактируйте многомерные сигналы.
- Отредактируйте сигналы, импортированные как указанные пользовательские типы файлов. Для получения дополнительной информации смотрите Импорт Пользовательский Тип файла.
При редактировании данных сигнала:
- Используйте табличное редактирование или MATLAB, чтобы изменить данные сигнала.
- Используйте мышь или мультисенсорное редактирование, чтобы графически изменить данные сигнала.
- Измените свойства сигнала, такие как имя, интерполяция и модульные свойства.
- Перетащите мышью сигналы изменить иерархии сигнала для шин и наборов данных.
- Используйте обозначения сигнала и переменные, чтобы заменить данные сигнала.
В качестве альтернативы можно импортировать данные из внешних источников и отредактировать их в Редакторе Сигнала. Для получения дополнительной информации смотрите Ссылку в Данных сигнала Средой Simulink Design Verifier и блоком Signal Builder.
Чтобы графически создать и отредактировать данные сигнала, смотрите, Создают Данные сигнала От руки Используя Мышь или Мультисенсорные Жесты.
Различия между корневым редактором сигнала картопостроителя Inport и другими редакторами сигнала
Обычно пользовательский интерфейс Редактора Сигнала является тем же самым независимо от того, как вы получаете доступ к нему. Вот различия в Корневом Редакторе Сигнала Картопостроителя Inport:
- Раздел файла Save and Sync и команды SAVE сохраняют и синхронизируются с Корневым Картопостроителем Inport.
- Раздел Insert команда Scenario всегда имеет опцию, Scenario from Model.
Если вы начинаете функцию с имени модели, signalEditor функционируйте пользовательский интерфейс Редактора Сигнала показывает вариант Scenario from Model в разделе Insert.
Информационная поддержка редактирования таблицы
Пользовательский интерфейс Редактора Сигнала поддерживает все типы данных сигнала что Simulink ® поддержки и которые доступны для редактирования.
Мышь, клавиатура и ярлыки с сенсорным экраном

Щелкнуть

Щелкнуть
Панорамирование и повышение
Кликните и чертите

Кликните , затем кликните и выберите точку или область
Чтобы выбрать все области, дважды кликнуть
Панорамирование и повышение
Выбрать все области, двойное касание

Перетащить
Коснитесь и переместитесь

Щелкнуть
Щелкнуть
Ctrl +mouse панорамирование
Shift +mouse панорамирование
Действия изменения масштаба:
Увеличьте масштаб вдоль T и осей Y.
Увеличьте масштаб вдоль оси времени. После выбора значка, на графике, перетаскивают мышь, чтобы выбрать область, чтобы увеличиться.
Увеличьте масштаб вдоль оси значения данных. После выбора значка, на графике, перетаскивают мышь, чтобы выбрать область, чтобы увеличиться.
Масштабируйте только в x при увеличивании масштаб xy.
Масштабируйте только в y при увеличивании масштаб xy.
Уменьшите масштаб из графика.
Соответствуйте графику к графику. После выбора значка кликните по графику, чтобы увеличить график заполнить график.
Панорамируйте график, вниз, оставленный, или право. Выберите значок. На графике удержите левую кнопку мыши и переместите мышь в область графика, который вы хотите просмотреть.
Поменяйте имена сигнала и порядки иерархии
В разделе Scenarios and Signals можно поменять имена сигнала и порядок иерархии, создать копии сигналов и удалить сигналы. Simulink игнорирует начальные и конечные пробелы на имена сигнала.
- Чтобы изменить название сигнала, дважды кликните имя и измените его.


Панель обновляется со столбцами Interpolation и Unit.

- В столбце Unit введите соответствующее модульное выражение. Для предложенного списка модульных выражений смотрите позволенные модули.
- В столбце Interpolation, из выпадающего списка, выбирают linear или zero order hold .
Примечание Интерполяция влияет только на графический вывод сигналов в пользовательском интерфейсе Редактора Сигнала.


Создайте сигналы с теми же свойствами
![]()
Чтобы создать сигналы того же предварительно определенного типа, используйте кнопку Duplicate в разделе Adjust. Чтобы изменить предопределенный тип сигнала, кликните по значку Defaults . Диалоговое окно Default Properties for Insertion отображается.

- Тип данных Из выпадающего списка выберите тип данных сигнала. Перечисление Когда вы выбираете Enum тип данных, этот параметр отображения. Введите имя класса своего перечисления. Если вы задаете класс перечисления, который содержит то же целочисленное значение многократно, например:
classdef(Enumeration) hEnumColors_duplicateValues < Simulink.IntEnumType enumeration Red(118) Yellow(-14) Blue(90) Green(87) White(-14) Black(198) Brown(90) Pink(118) Purple(90) end methods (Static = true) function retVal = getDefaultValue() retVal = hEnumColors_duplicateValues.Blue; end end end
Добавьте и отредактируйте многомерные сигналы
Чтобы добавить многомерные сигналы, используйте любую из этих опций:
- Измените свойство Dimensions в диалоговом окне Default Properties for Insertion, и затем используйте Insert>Blank Signal, чтобы вставить новый пустой сигнал. Для многомерного пустого сигнала введите размерность, больше, чем 1.
- Введите многомерные данные сигнала в диалоговое окно Author и Insert параметр Data, такие как [(1:10)' (1:10)'] .

Когда вы кликаете по флажку Plot/Edit для сигнала, табличная область отображает сигнал со столбцами для каждой размерности. Можно отредактировать данные индивидуально в табличной области или нажать кнопку замены , чтобы заменить сигнал на выражение MATLAB. Используйте диалоговое окно Author и Replace Signal Data, как будто вы вставляете новое выражение с диалоговым окном Author и Insert. Для получения дополнительной информации смотрите, Создают Сигналы с Выражениями MATLAB и Переменными.
Совет
Когда заменяющий сигнал, размерность сигнала и сложность нового сигнала должны совпасть с заменяемым сигналом.
Например, чтобы создать данные сигнала с двумя столбцами и время от 1 до 10:
- В Редакторе Сигнала выберите Signal>Author Signal.
- Введите данные сигнала с двумя столбцами и время от 1 до 10:


Совет Если данные не строят как ожидалось, используйте кнопку Fit to window в разделе Zoom & Pan. Для многомерных сигналов также убедитесь, что у вас есть правильный график, выбранный для данных о столбце, которые вы редактируете.

Работа с данными в сигналах
Этот пример описывает, как добавить и удалить данные к сигналам в соединенном сценарии. Чтобы создать модель и данные, чтобы работать с, смотрите, Добавляют Сигналы к Сценариям.
- В Редакторе Сигнала, в разделе Scenarios and Signals, кликают по флажку графика для ts сигнала .

![]()
- Кликните по добавить значку строки и добавьте некоторые сигналы. Чтобы добавить строку сигнала между другими сигналами, кликните по сигналу прежде и кликните по добавить значку строки.
- Когда сделано, нажмите Apply. Нажатие на Apply обновляет график.

и используйте диалоговое окно Author и Replace Signal Data, чтобы задать новые данные.Чертите пандус Используя привязку к сетке для точности
Этот пример описывает, как создать сигнал пандуса путем выбора некоторых точек в холсте.
- Во вкладке Signal Editor выберите Signal>Draw Signal.
- Чтобы выстроить в линию значения данных сигнала вдоль горизонтальных и вертикальных линий, выберите Snap X to Grid и Snap Y to Grid. Переместите и масштабируйте также привязку чести к параметрам сетки.
- В холсте добавьте три точки:
- Две горизонтали точек друг другу
- Один набор точки направо под углом к другим сигналам

.
.
Сохраните и отправьте изменения в корневом инструменте картопостроителя Inport
Когда вы закончите добавление и изменение сигналов и сценариев, используйте кнопку Save and Sync, чтобы сохранить изменения в MAT-файле. Редактор Сигнала также отправляет данные в Корневой Инструмент Картопостроителя Inport:
- Если инструменту Root Inport Mapper загрузили сценарий, обновления инструмента Root Inport Mapper с новыми данными.
- Если инструменту Root Inport Mapper сопоставили сценарии, и ваши изменения влияют на отображение, инструмент Root Inport Mapper не сопоставляет сценарий.
Смотрите также
Похожие темы
- Создайте данные сигнала от руки Используя мышь или мультисенсорные жесты
- Корень карты данные сигнала Inport
- Просмотрите и смотрите данные сигнала
- Импортируйте данные сигнала для корневого отображения Inport
- Экспортирование данных группы сигнала
- Сопоставьте данные сигнала, чтобы базироваться Input port
- Корневой Inport отображение сценариев
- Создайте данные сигнала для корневого отображения Inport
- Создайте пользовательский тип файла для импорта, чтобы сигнализировать о редакторе
How to add more data points in Signal Builder?
Hello, I want to create a signal in Simulink manually. I came across the Signal Builder block but I cannot figure out how to add more data points so that I can drag the points to create a signal of different amplitudes. There is not much information about this block in Help nor the manual. Could anybody please show me how to do that? Thanks
0 Comments
Answers (6)
Chinmay Sharma on 20 Jun 2017
Direct link to this answer
Cancel Copy to Clipboard
Direct link to this answer
Cancel Copy to Clipboard
While hovering over the curve, use shift+click to add a data point.
2 Comments
Pedro Martinez on 1 Nov 2019
Direct link to this comment
Cancel Copy to Clipboard
Direct link to this comment
Cancel Copy to Clipboard
Thanks. How did you know?
I wish that information was at least shown on the help.
Ideally, there should be the options of "Add point" and "Delete Point" in the right-click pop-up menu.
Clyde Webster on 17 Sep 2020
Direct link to this comment
Cancel Copy to Clipboard
Direct link to this comment
Cancel Copy to Clipboard
I second this, this is exceptionally unintuitive.
Ali Alemi on 9 Apr 2021
Direct link to this answer
Cancel Copy to Clipboard
Direct link to this answer
Cancel Copy to Clipboard
Hold shift key. Then left-click on the signal where you want to add a point.
0 Comments
ES on 12 May 2017
Direct link to this answer
Cancel Copy to Clipboard
Direct link to this answer
Cancel Copy to Clipboard
You can define the signal in excel and import it into signal builder (using File->import from file). This is by far the easiest way.
3 Comments
b b on 12 May 2017
Direct link to this comment
Cancel Copy to Clipboard
Direct link to this comment
Cancel Copy to Clipboard
Edited: b b on 12 May 2017
Thanks. I saw this feature but I don't know how to do it. For example, I want 0 in the first 10 msec. Then, an amplitude of 6 at the 10-15 th msec followed by 0 at 15-17msec. Next, -3 during 17-20ms. 0 for the rest until the 50ms. Something like that. Any example? How do we specify the time unit in EXCEL so that the time series data get imported to Simulink correctly?
Использование S-function Builder в Matlab/Simulink Текст научной статьи по специальности «Компьютерные и информационные науки»
Моделирование в MATLAB/SIMULINK / модуль S-FUNCTION BUILDER / его настройка и программирование на языке C/C++. / MATLAB/SIMULINK / the module S-FUNCTION BUILDER / its adjustment and programming in language C/C++.
Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — В. Г. Михайлов
Проведен анализ используемых методов задания внешнего возмущения в MATLAB/SIMULINK с помощью генератора белого шума и последующей фильтрации и задания по точкам в MS.Excel (1000 значений). Установлено, что они не обеспечивают решения задач, требующих больших объемов данных и необходимого быстродействия и не могут применятся для более сложных задач (моделирования движения и нагруженности автомобиля, задания траекторий полета, проходческого оборудования и других). Существующие подходы и приемы могут использоваться только для решения несложных задач. Отмечено, что большинство исследователей не используют модуль S-FUNCTION BUILDER из-за непонимания его настройки и владения языком C/C++. Выявлены проблемы с компиляцией программ в модуле S-FUNCTION BUILDER . Предлагаемые на форумах решения их устранения не удобны на практике. Предложено решение этой проблемы через установку системной переменной Windows. Предложен подход и прием задания внешнего возмущения с помощью модуля S-FUNCTION BUILDER , позволяющий решить эти проблемы. Подробно рассмотрены настройка и использование модуля S-FUNCTION BUILDER для формирования внешнего возмущения для этих задач, Предложена программа реализации задания внешнего возмущения на языке C/C++, приведен исходный текст программы. Показана блок-схема использования модуля S-FUNCTION для решения совместного моделирования движения и нагруженности автомобиля. Рассмотрены области применения предложенной программы и подхода для исследований мехатронных систем. Предложенный подход и прием задания внешнего возмущения с помощью модуля S-FUNCTION BUILDER позволяет решать сложные задачи и перейти к более сложному имитационному моделированию с участием человека.
i Надоели баннеры? Вы всегда можете отключить рекламу.
Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — В. Г. Михайлов
Анализ методов получения продольных профилей дорог
Применение микропроцессорных систем в автомобилестроении
Моделирование динамики движения мобильного робота
Комплекс моделирования движений подвижных объектов на базе воздухоплавательных и подводных аппаратов
Нечеткое управление солнечной батареей
i Не можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.
USE S-FUNCTION BUILDER IN MATLAB/SIMULINK
The analysis of used methods of the task of external indignation in MATLAB/SIMULINK by means of the generator of white noise and the subsequent filtration and the task on points in MS.Excel (1000 values) is carried out. It is established that they do not provide the decision of the problems demanding great volumes of the data and necessary speed and cannot will be applied to more challenges (modelling of movement and loading the vehicle, the task of trajectories of flight, проходческого the equipment and others). Existing approaches and receptions can be used only for the decision of simple problems. It is noticed that the majority of researchers do not use the module S-FUNCTION BUILDER because of misunderstanding of its adjustment and mastery of a language C/C ++. Problems with compilation of programs in the module S-FUNCTION BUILDER ARE REVEALED. Decisions of their elimination offered at forums are not convenient in practice. The decision of this problem through installation of system variable Windows is offered. The approach and reception of the task of external indignation by means of the module S-FUNCTION BUILDER IS OFFERED, allowing to solve these problems. Adjustment and module use S-FUNCTION BUILDER for formation of external indignation for these problems are in detail considered, The program of realisation of the task of external indignation in language C/C ++ is offered, the initial text of the program is resulted. The block diagramme of use of the module S-FUNCTION for the decision of joint modelling of movement and нагруженности the car is shown. Scopes of the offered program and the approach for probes мехатронных systems are considered. The offered approach and reception of the task of external indignation by means of the module S-FUNCTION BUILDER allows to solve challenges and to pass to more difficult imitating modelling with participation of the person.
Текст научной работы на тему «Использование S-function Builder в Matlab/Simulink»
ИСПОЛЬЗОВАНИЕ S-FUNCTION BUILDER В MATLAB/SIMULINK
Проведен анализ используемых методов задания внешнего возмущения в MATLAB/SIMULINK с помощью генератора белого шума и последующей фильтрации и задания по точкам в MS.Excel (1000 значений). Установлено, что они не обеспечивают решения задач, требующих больших объемов данных и необходимого быстродействия и не могут применятся для более сложных задач (моделирования движения и нагруженности автомобиля, задания траекторий полета, проходческого оборудования и других). Существующие подходы и приемы могут использоваться только для решения несложных задач. Отмечено, что большинство исследователей не используют модуль S-FUNCTION BUILDER из-за непонимания его настройки и владения языком C/C++. Выявлены проблемы с компиляцией программ в модуле S-FUNCTION BUILDER. Предлагаемые на форумах решения их устранения не удобны на практике. Предложено решение этой проблемы через установку системной переменной Windows.
Предложен подход и прием задания внешнего возмущения с помощью модуля S-FUNCTION BUILDER, позволяющий решить эти проблемы.
Подробно рассмотрены настройка и использование модуля S-FUNCTION BUILDER для формирования внешнего возмущения для этих задач,
Предложена программа реализации задания внешнего возмущения на языке C/C++, приведен исходный текст программы.
Показана блок-схема использования модуля S-FUNCTION для решения совместного моделирования движения и нагруженности автомобиля.
Рассмотрены области применения предложенной программы и подхода для исследований мехатронных систем.
Предложенный подход и прием задания внешнего возмущения с помощью модуля S-FUNCTION BUILDER позволяет решать сложные задачи и перейти к более сложному имитационному моделированию с участием человека.
Ключевые слова: Моделирование в MATLAB/SIMULINK, модуль S-FUNCTION BUILDER, его настройка и программирование на языке C/C++.
Сейчас при разработке и доводке многих конструкций (транспортного средства (ТС), самолета, машины, станка) все чаще прибегают к методам виртуального моделирования. Использование этих методов оправдано, когда обеспечивается хорошая точность расчетов, зависящая от корректности модели и задания внешнего возмущения. Особенно это важно для отладки систем управления различными объектами и решения задач имитационного моделирования, которые должны выполнятся в реальном масштабе времени и для этого должны задаваться внешние возмущения, например макро и микропрофиль дорог для транспортных средств [1-3, 4, 7-10, 12, 13].
Наиболее часто для моделирования используют пакет МАТЬАВ/81МиЬЩК, который
позволяет решать нестандартные ситуации, связанные с логикой условий и заданием внешнего возмущения. К сожалению, большинство исследователей для них используют стандартные логические интерпретируемые компоненты МАТЪАВ, снижающие быстродействие Simulink. А в качестве внешнего возмущения применяется сигнал с генератора белого шума, пропущенный через фильтры. Последнее не всегда отражает реальную картину возмущения. Поэтому предпринимаются попытки задать возмущение по точкам реальных замеров с последующей интерпретацией промежуточных значений. В Simulink имеется возможность задать возмущение через массив MS.Excel с использованием интерпретируемых функций МАТЪАВ. Недостатком такого подхода является ограниченный объем массива (1000 значе-
ний), невозможность его подкачки и недостаточное быстродействие. Тем не менее в ряде случаев такой подход вполне может использоваться, например, моделирование движения автомобиля по реальной дороге на небольших участках [5, 6]. В тоже время он не применим для задач, требующих задания больших массивов данных. Например, моделирование нагру-женности автомобиля [12], траектории полета крылатой ракеты, БЛА по сложно пересеченной местности и больших расстояний или проходческого оборудования метро. В тоже время в пакете MATLAB/SIMULINK имеется модуль S-FUNCTION BUILDER, который позволяет решать эти задачи. В технической литературе его применение крайне плохо описано из-за чего многие его не используют. Второй причиной его неиспользования является непонимание его настройки и невладение языком C/C++. Модуль S-FUNCTION BUILDER позволяет реализовать пользовательскую программу на языке C/C++ в виде своеобразной DLL, Что получить эту DLL необходимо подключить компилятор на языке C/C++ и интегрировать его в MATLAB/SIMULINK. Имеется проблема с компиляцией программы на языке C/C++, начиная с версии.Я2015Ь. Для решения ее на форуме предлагается в основном меню каждый раз после загрузки MATLAB выполнить команду setenv('MW_MINGW64_ LOC','C:\TDM-GCC-64'), что несколько неудобно. Второй сложной проблемой является повторная загрузка данных на каждом цикле операции и подкачка нового блока информации. И пока не предложено их решение.
Начиная с версии R2017b в MATLAB/ SIMULINK появилась библиотека для работы с микроконтроллерами Arduino/Raspberry, которая позволяет через их АЦП и ЦАП получать информацию с датчиков исследуемого объекта и управлять работой стендов. Это в сочетании с моделированием самого объекта на MATLAB/SIMULINK дает возможность реализовать имитационное моделирование более приближенное к реальному. Поэтому использование более корректных моделей, нового подхода и приема по формированию внешнего возмущения через модуль S-FUNCTION BUILDER и решение отмеченных проблем представляется актуальной задачей, играющей ключевую роль в переходе к сложному имита-
ционному моделированию с участием человека.
Настройка модуля S-FUNCTION BUILDER
Для его использования вначале требуется скачать из интернета файл компилятора tdm64-gcc-5.1.0-2.exe (64-х битный) или версии выше и разместить его в папке C:/TDM-GCC-64.
Затем в головном меню MATLAB выполнить команду uiopen( 'C:\TDM-GCC-64\tdm64-gcc-5.1.0-2.exe', 1). При появлении открывшегося окна рекомендуется убрать галочку слева внизу страницы. После его установки перейти в Windows компьютер_система_ переменные среды. Создать и установить системную переменную MW_MINGW64_LOC равную C:\ TDM-GCC-64. После перегрузить компьютер. В результате MATLAB/SIMULINK может компилировать напрямую программу, устранив имевшую проблему.
Снова загружаем MATLAB и устанавливаем путь на папку с программой SIMULINK и запускаем сам Simulink Library. На окно с программой переносим модуль S-FUNCTION BUILDER. Дважды быстро нажав на него, начинаем его настраивать. В первую очередь дадим имя S-function name, например MPD (рис. 1). Рекомендуется давать программе Simulink *.slx имя отличное от S-function name.
В подменю Data Properties задаем входные и выходные параметры/переменные. Нажимаем Save и модуль S-FUNCTION BUILDER создает пустой шаблон программы mpd.c. В эту программу/необходимо внести свои переменные и сам реализующий текст на языке C/C++ и сохранить ее. Фрагмент вносимой программы и места их расположения приведены ниже.
// вставляем свои библиотеки и переменные // Блок своих библиотек и переменных #include #include
Рис. 1 Меню модуль S-FUNCTION BUILDER
long ch=0; long nbl=0;
static void mdlOutputs(SimStruct *S, int_T tid)
// записываем свой текст программ
double x, x_2, x_3, sx, y_0,y_1, y_2, ts, N, h; double yn, kr1, Va, ma, Ndv,ndvs,Fk, Fv,Fy,-jm,a2,kz, m_d,p_u,a,b,c, P0,P1,P2,P3,u,t, t2,t3; FILE *fp1;
long n, i; float an;
// Переменные const real_T *x0.. real_T *y0 = (real_T *)ssGetOutputPortRealSignal(S,0); это переменные генерируемые самим модулем S-FUNCTION BUILDER.
const real_T *x0 = (const real_T*) ssGetInput-
PortSignal(S,0); const real_T *x1 = (const real_T*) ssGetInput-
PortSignal(S,1); real_T *y0 = (real_T *)ssGetOutputPortRealSig-nal(S,0);
real_T *y1 = (real_T *)ssGetOutputPortRealSig-nal(S,1);
real_T *y2 = (real_T *)ssGetOutputPortRealSig-nal(S,2);
real_T *y3 = (real_T *)ssGetOutputPortRealSig-nal(S,3);
real_T *y4 = (real_T *)ssGetOutputPortRealSig-nal(S,4);
// определяю значение для точки X1 // Микропрофиль правая колея переднее колесо
sx=384000*nbl; fp1=fopen("rd.bt","rb"); fseek(fp1, sx, SEEK_SET);
// определеи значение для точки X1 ts=0.125;
//t=fabs(u- n); t2=t*t; t3=t*t*t;
// Интерполирование значений промежуточных точек методом Catmull_Rom P0=rd[n-1]; P1=rd[n]; P2=rd[n+1]; P3=rd[n+2];
*y0 =0.5* ((2*P1) +(-P0 + P2) * t +(2*P0 - 5*P1 + 4*P2 - P3) *t2 +(-P0 + 3*P1- 3*P2 + P3) *t3);
* In this function, you should perform any actions that are necessary
* at the termination of a simulation. For example, if memory was
* allocated in mdlStart, this is the place to free it.
static void mdlTerminate(SimStruct *S)
#ifdef MATLAB_MEX_FILE /* Is this file being
compiled as a MEX-file? */
#include "simulink.c" /* MEX-file interface
#include "cg_sfun.h" /* Code generation registration function */ #endif
Реализация внешнего возмущения
Выбор размера массива для хранения данных float rd[384000]; определен экспериментально. Выяснено, что при значении более 392000 происходит сбой.
Чтобы исключить многократную загрузку данных на каждом шаге вычисления используется счетчик if (ch==0) <>, в тело которого по-
мещается текст программы. И он отслеживает переход на следующий блок загрузки.
Параметр 11892 зависит от шага записи данных. В данном случае массив сформирован с шагом ts = 0,125 м, 160 Гц. Значение 11892 получается, как 96000/8 = 12000. Значение 8 определяется как количество точек на метр пути (1 м/0,125 м). Немного уменьшаем 12000 до 11892, чтобы не было переполнение массива 384000 байт (96000 записей).
Интерполирование значений промежуточных точек выполнено методом Catmull Rom, который наиболее подходит для этих целей. Другие методы (Ньютона, квадратической интерполяции) показали более худшие результаты.
После того как откорректирована программа в головном меню MATLAB выполняем команду mex mpd.c и после сообщения об ее успешной компиляции можно выполнять обычный процесс моделирования в Simulink.
Как видно из представленного материала ничего сложного в применении S-FUNCTION BUILDER нет и предложенный подход и прием позволяет просто реализовать формирование внешнего возмущения. Кроме на этот модуль можно возложить еще логические операции, например, логику управления двигателем и переключением передач КПП, как это реализовано автором при проведении совместного моделирования движения и нагруженности автомобиля (рис. 2).
В данном варианте динамика движения автомобиля по дороге описана следующими известными уравнениями [6-7]
dVa _ Fk - Fm - F
где Fk - сила тяги
где M - текущий крутящих моментов двигателя внутреннего сгорания (ДВС), Н м, пт - КПД трансмиссии на соответствующей передаче КП; гк - радиус качения ведущих колес автомобиля, м; икп - текущее значение передаточного числа КП; ивм - передаточное число главной передачи ведущего моста;
^ - сила сопротивления воздуха
Рис. 2. Блок-схема совместного моделирования движения и нагруженности автомобиля
где Кв - коэффициент обтекаемости автомобиля, Нс2/м4; Аа — лобовая площадь автомобиля, м2, иа - текущая скорость движения автопоезда, м/с,
i Не можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
где а - ускорение автопоезда м/с2, 5 - коэффициент учета вращающихся масс,
5 = ■/ящ'Пт (мкпмвм ) Jk .
где п - текущая частота вращения коленчатого вала ДВС, мин-1; ^ - сила дорожного сопротивления
где та - полная масса автомобиля, кг; y - коэффициент дорожного сопротивления,
y = f cosa + sina
где a - угол наклона текущего элементарного участка маршрута, f- коэффициент сопротивления качению автомобиля как одной материальной точки,
где fm - коэффициент сопротивления качению шин; Fj - сила сопротивления разгону.
где Jeng - момент инерции вращающихся масс двигателя и сцепления, кгм2, Jk - суммарный момент инерции колес автопоезда и приводных валов, кгм2.
Также использовались дополнительные массивы ограничения скорости (связанные с населенными пунктами, поворотами, препятствиями) и встречных и попутных автомобилей. Дополнительно в модель поступает информация о пробое подвески (х3), что вызывает снижение скорости на 10% на последующей длине участка (100 м). Управляющее скоростью воздействие осуществлялось с помощью РГО-ре-гулятора |Р1 (5) и множительного блока Рго-
duct1. Учитывались потери мощности на вентилятор, генератор, глушитель в модуле Р_ехр1. Расход топлива рассчитывался с помощью характеристик двигателя и его загрузки.
Колебания автомобиля 6^6 с задней балан-сирной подвеской (VibrModelAuto) [12], определяющие его нагруженность, описаны на основе принципа Даламбера следующей системой дифференциальных уравнений
та ¿о - (^п1 + ^п2) = 0;
^а Ф1 + С^пЛ - ^2) = 0;
тн2 ^н2 + (Рш2 - Рп2/2) = 0; тн3 4з + (Рш1 - Рп2/2) = 0;
Z1 Z2 2Ьш1 + 2bin1
Fm1 = Fcm1(^1) + Fkm1(qh);
Frn3 = C m3(q3) + Fkш3(^3);
FH1 = (Ф(L1 - L2)) - Fамл1((L1 - L2) p1) + ^1тр1 ( Za1 - Zh3 );
где ^Сш1, Fcш2, РсшЗ - упругая характеристика шин переднего, среднего заднего моста в виде зависимости от относительной их деформации; ^р1, ^р2, - упругая характеристика рессор переднего моста и балансирной подвески в виде зависимости от их относительной деформации; ^гр1, ^гр2 - характеристика трения рессор переднего моста и балансирной подвески в виде зависимости интеграла от относительной скорости перемещения с ограничениями ее величины, подробно описанные в работе [12]; ^ам1 -характеристика амортизаторов переднего моста в виде зависимости от относительной скорости перемещения; ^п1, ^п2 - суммарная характеристика передней и задней подвески - сумма характеристик рессор, амортизатора и трения переднего моста и балансирной подвески; та -масса подрессоренной части автомобиля; тн1, тн2, тн3 -неподрессоренная масса переднего, среднего, заднего моста; Ь1, Ь2 Ь3 - расстояние
между центром тяжести и передней и задними осями подвески; Ja = тар2Х1 - момент инерции подрессоренной массы в продольной плоскости; q1, q2, q3,¿h, q2, q3 - текущая высота микронеровности и ее значение скорости под передний, средним и задним колесом.
При моделировании подвесок использовалась комбинированная модель трения [12] с упругими элементами и «вязкого» трения, которая более точно описывает динамическую характеристику рессорной подвески, сиденья и колебания при малых значениях возмущения и обеспечивает хорошую сходимость в октавных полосах частот (расхождение 5-15 %).
Следует отметить, что использование S-FUNCTION BUILDER при шаге интегрирования 0,001 и 16-ти интеграторах позволяет проводить моделирование в реальном масштабе времени (в полосе частот 0-25 Гц) при использовании компьютеров с процессорами с частотой около 4 Гц.
Вопрос получения внешнего возмущения представляет собой отдельную задачу. Макро и микропрофиль дорог можно получить путем замеров ускорений подрессоренных и непод-рессоренных масс автомобиля с последующим их преобразованием в MATLAB/SIMULINK [11]. Сейчас в ТВ программе National Geographic промелькнул сюжет об возможном использовании для управления беспилотными автомобилями данных сканирования дорожного полотна на его глубину и создании их карт по типу навигационных.
Рассмотренный выше подход и прием использования S-FUNCTION BUILDER и предложенная модель может использоваться в различных областях, например, при:
- моделировании вибронагруженности рабочих мест ТС, операторов, вибраций различных машин и оборудования;
- вибрационной диагностики технических устройств, приборов, машин, мостов, железнодорожных путей и др;
- создании имитационных стендов и проведения на их базе различных исследованиях по оценке нагруженности узлов и систем и вопросов безопасности:
- управлении испытательными стендами;
- задании траекторий полета летательного объекта, туннеля на основе данных радарного сканирования земли [9].
- для задания дорожных условий при моделировании беспилотных автомобилей, роботов;
- управлении позиционированием (подъем и горизонтирование) платформ машин и их модулей;
- оценке качества дорог (микропрофиля).
1. Как показал проведенный анализ используемые стадартные методы задания внешнего возмущения в MATLAB/SIMULINK не обеспечивают решения задач, требующих больших объемов данных и необходимого быстродействия.
2. Предложен подход и прием задания внешнего возмущения с помощью модуля S-FUNCTION BUILDER, позволяющий решить эту проблему.
3. Рассмотрено настройка и использование модуля S-FUNCTION BUILDER для формирования внешнего возмущения, приведена программа на языке C/C++.
4. Предложенный подход и прием задания внешнего возмущения с помощью модуля S-FUNCTION BUILDER позволяет решать сложные задачи и перейти к более сложному имитационному моделированию с участием человека.
1. Emanuele Obialero. A Refined Vehicle Dynamics Model for Driving Simulators // Charhalmers University of Technology / Göteborg, Sweden 2013. Master's thesis, P. 120.
2. Shakouri P. A Longitudinal vehicle dynamics using Simulink/Matlab // P. Shakouri A. Ordys M. Askari, D. S. Laila/ Faculty of Engineering, Kingston University, London, 07 May 2015.
3. Solhmirzaei Ali. Road profile estimation using wavelet neural network and 7-DOF vehicle dynamic systems/ Solhmir-zaei1 Ali, Azadi, Shahram and KazemiJournal Reza of Mechanical Science and Technology 26 (10) (2012) 3029~3036.
4. Skulic A. and All Methods and devices for registration of road microprofiles. / [Электронный pecypc/Electronic resource]. / http://scindeks-clanci.ceon.rs/data/pdf/0040-2176/2016/0040-21761605697S.pdf - Режим доступа Access mode: 30.10.2017.
5. Moustapha Doumiati, Alessandro Victorino. Estimation of road profile for vehicle dynamics motion: experimental validation / [Электронный pecypc/Electronic resource]. / https://www.researchgate.net/publication/224254316_Estimation_ of_road_profile_for_vehicle_dynamics_motion_Experimental_validation 2011 American Control Conference on O'Farrell Street, San Francisco, CA, USA June 29 - July 01, 2011.
6. Выгонный, А. Г. Закон переключения передач, оптимальный по тягово-скоростным и топливо-экономическим показателям магистрального автопоезда / А. Г. Выгонный, О.С. Руктешель, Р. Э. Шейбак// Актуальные вопросы машиностроения 2015, Т. 4, С.182-188.
7. Выгонный, А. Г. Сравнительный анализ многокритериальной и однокритериальной оптимизации параметров двигателя и трансмиссии магистрального автопоезда/ А. Г. Выгонный, М. М. Дечко, А. А. Дюжев, С. В. Харитончик // Механика машин, механизмов и материалов, 2014, № 4. С. 40-46.
8. Карта для определения высоты местности и профиля высот http://22dx.ru/online/karta-vy-sot/ [Электронный ресурс]. / http://www.vhfdx.ru/karta-vyisot // - Режим доступа: 24.12.2017.
9. Per Sahlholm Piecewise Linear Road Grade Estimation /Per Sahlholm, Ather Gattami, Karl Henrik Johansson /Scania CV AB, 2ACCESS Linnaeus Centre Royal Institute of Technology, Swedem,2011. KTH - School of Electrical Engineering SE-100 44 Stockholm, Sweden TRITA-EE 2011:007. P.16.
10. Per Sahlholm Road Grade Estimation for Look-ahead Vehicle Control/Per Sahlholm _ Karl Henrik Johansson _ Scania CV AB, SE-151 87 Sodertalje, Sweden /_ Royal Institute of Technology (KTH), SE-100 44, Stockholm. P.7.
11. Михайлов, В. Г. Получение и использование единого массива продольного профиля и микропрофиля дороги для моделирования ТС // журнал автомобильных инженеров № 2, 2018, с. 4-7.
12. Михайлов, В. Г. Оценка эффективности систем подрессоривания грузового автомобиля / В. Г. Михайлов, Д. В. Ми-шута // Автомобильная промышленность - 2016, №5, С. 16-20.
5. Vigonny, A. G. Law of a gear shift, optimum on on tjagovo-speed and fuel to economic indicators of the main lorry convoy / ofA. G.Vygonny, O. S. Rukteshel, R. E. Shejbak // Pressing questions of mechanical engineering 2015. V 4. С. 182-188.
6. Vigonny, And. The Comparative analysis многокритериальной and однокритериальной optimisation of parametres of the engine and transmission of the main lorry convoy / of A. G.Vygonny, M.M.Dechko, A. A. Djuzhev, S. V. Haritonchik// Mechanics of cars, gears and materials, 2014, № 4. With. 40-46.
9. A chart for definition of height of district and a cross-section of heights [the Electronic resource] / http://www.vhfdx.ru/karta-vyisot_// - an access Mode: 12/24/2017.
9. Михайлов, V. G. Reception and use of a uniform file of a longitudinal cross-section and microcross-section of road for vechicle modelling//magazine of automobile engineers № 2, 2018, P. 4-7.
10. Mikhailov, V. G. Estimation of vibration the staff car / V.G.Mihailov, D.V.Mishuta//the Collection of proceedings of Military academy of Byelorussia - 2016. - № 1. - P. 159-164.
12. Mikhailov, V. G. Otsenka of efficiency of systems of a cushioning of the cargo car/century G. Mihajlov, D. V. Mi-shuta // Motor industry - 2016, №5, С. 16-20.
Поступила После доработки Принята к печати
19.05.2018 21.10.2018 30.11.2018
Vladimir Mikhailov USE S-FUNCTION BUILDER IN MATLAB/SIMULINK
The analysis of used methods of the task of external indignation in MATLAB/SIMULINK by means of the generator of white noise and the subsequentfiltration and the task on points in MS.Excel (1000 values) is carried out. It is established that they do not provide the decision of the problems demanding great volumes of the data and necessary speed and cannot will be applied to more challenges (modelling of movement and loading the vehicle, the task of trajectories offlight, проходческого the equipment and others). Existing approaches and receptions can be used only for the decision of simple problems. It is noticed that the majority of researchers do not use the module S-FUNCTION BUILDER because of misunderstanding of its adjustment and mastery of a language C/C ++. Problems with compilation of programs in the module S-FUNCTION BUILDER ARE REVEALED. Decisions of their elimination offered at forums are not convenient in practice. The decision of this problem through installation of system variable Windows is offered.
The approach and reception of the task of external indignation by means of the module S-FUNCTION BUILDER IS OFFERED, allowing to solve these problems.
Adjustment and module use S-FUNCTION BUILDER for formation of external indignation for these problems are in detail considered,
The program of realisation of the task of external indignation in language C/C ++ is offered, the initial text of the program is resulted.
The block diagramme of use of the module S-FUNCTION for the decision of joint modelling of movement and нагруженности the car is shown.
Scopes of the offered program and the approach for probes мехатронных systems are considered.
The offered approach and reception of the task of external indignation by means of the module S-FUNCTION BUILDER allows to solve challenges and to pass to more difficult imitating modelling with participation of the person.
Keywords: MATLAB/SIMULINK, the module S-FUNCTION BUILDER, its adjustment and programming in language C/C++.
Владимир Георгиевич Михайлов канд. техн. наук 05.05.03, РБ, Минск. Специалист в области разработки систем CALS/PLM (PDM, ERP), программирования в Windows, Raspdebian (Linux), MC, Arduino, Raspberry, автомобилестроения, моделирования динамических систем в пакетах MATLAB\ SIMULIK, оценки напряженно-деформированного состояния в пакете ANSYS, испытаниям подвесок, рам ТС, пневматики, гидравлики, тензометрирования, Tel.: +375-(029)785-09-16. E-mail: sapr7@mail.ru.
Mikhailov Vladimir (S'72-M'76-SM'80) received the D. degree (Cand. Tech.Sci., mechanical Engineering) from the Belarussian Polytechnical institute of Belarus, Minsk, in 1982.
He was a Senior Research and Engineer-designer at Minsk Automobile plant, from 1972 to 1984, Leading Research, Chief of Research laboratory in CenterSystem, Minsk (design and development ERP) from 1984 to 1991, and was leading Engineer-designer at Minsk Wheel plant from 1994 to 2010, from 2010 to 2017 was a leading engineer of Open Stock Company «Midivisana», Republic Belarus, Minsk. His research interests include design and development of Software PDM, ERP, application Oracle on C++, PL/SQL, Java, programming MC, modeling dynamic systems, vibration.
The expert in the field of system engineering CALS/PLM (PDM, ERP), programming MC, motor industry, modeling of dynamic systems in packets MATLAB\SIMULIK (with S-Function Builder), estimations of the intense-deformed state in packet ANSYS, to tests of suspension, frames of the vechicle, a pneumatics, hydraulics.