2014-11-06 3 views
1

У меня есть функциональный блок MATLAB в Simulink и для каждого шага simlulink ли я хочу, чтобы ввести счетчик с приращением 1. Ex: первый шаг -> Точность = 1 второй шаг -> Точность = 2Накопитель в Simulink

Я пробовал использовать счетный блок + генератор импульсов, но временной шаг симулянта не является постоянным.

Любые идеи?

+0

Вам нужно добавить код (и проверить форматирование), что вы пробовали уже. а также объясните результаты, которые вы видите (то есть, что происходит не так). –

+1

Simulink выбирает Variable Step Solver по умолчанию для вас. Если вы хотите, чтобы шаги были одинаково отдаленными по времени, выберите «Исправленный шаговый решатель» и вместо этого укажите timestep, но знайте последствия этого в своей модели. Если вы хотите, чтобы блок выполнялся с фиксированной периодичностью, выберите вместо него время выборки или, например, попробуйте его с удержанием нулевого ордера. – Manex

+0

Я не уверен, как вы пытались использовать генератор импульсов, но разве нет способа использовать генератор импульсов, чтобы импульсы находились в образцовых ударах, а не во время моделирования? В любом случае, метод, который я использовал для подсчета хитов, - это использовать S-функцию C++, а затем иметь вектор PWork, который подсчитывает вызовы. PWork - это разновидность переменной, которая остается постоянной в памяти. Таким образом, вы добавляете его при каждом вызове функции и выполняете работу независимо от используемого решателя. –

ответ

0

Обычный способ сделать это - использовать сумму и блок памяти с начальным условием 0. Он должен учитывать шаги как для моделирования фиксированного, так и для переменного шага. На самом деле я считаю, что это будет построено и будет очень похоже на решение s-функции во время моделирования.

0

Почему бы просто не использовать блок интегратора? Вы можете выбрать дискретный или непрерывный блок интегратора в зависимости от типа модели. При необходимости вы можете указать условия начала/значения и условия сброса. На приведенном ниже рисунке показан пример сдержанных и непрерывных блоков. Оба просто используют свои значения по умолчанию. Чтобы сделать то, что вы хотите (добавив 1 к выходу на каждом шагу), просто определите время выборки модели как переменную среды (например, sT = 0,01) и установите коэффициент усиления интегратора равным 1/sT.

Integrator example

Смежные вопросы