/ / Запуск блоку Simulink xPC швидше, ніж безперервна швидкість - Matlab, Simulink,

Запуск Simulink xPC-блоку швидше, ніж безперервна швидкість - matlab, simulink, xpc-target

У мене є цільове додаток Simulink xPC, яке маєблоків з дискретними станами при декількох різних частотах дискретизації і деяких ділянках з використанням безперервних станів. Мій намір на збереження безперервних станів є для кращої числової інтеграції.

Що створює проблему: Один блок читає пристрій з дуже високою швидкістю (500 Гц). Решта програми можуть і повинні працювати з більш повільною швидкістю (скажімо, 25 або 50 Гц), тому що було б завищувати, щоб запустити її з найвищою швидкістю, і тому, що процесор просто не може вичавити повний цикл застосування в. швидше. Тому мені потрібні обидві ставки. Проте, безперервні стани виконуються за визначенням в Simulink за швидшої дискретної швидкості всієї програми! Це означає, що скрізь, де я маю безперервні стани, зараз вони змушені працювати на частоті 500 Гц, коли 25 Гц буде робити!

Чи є спосіб примусити безперервні держави в РосіїxPC цільової до швидкості, яка не є найшвидшою в додатку? Або ж, чи є спосіб дозволити певному блоку працювати з більш високою швидкістю, ніж інші програми?

Відповіді:

2 для відповіді № 1

Ви думаєте про безперервні вирішувачі внеправильний шлях - безперервний не означає лише, що він виконується якомога швидше - він використовує принципово інший алгоритм для вирішення рівнянь, ніж дискретний. Завдяки цьому вони повинні працювати принаймні так само швидко, як і дискретні розв'язувачі.

Від Використання Simulink:

Безперервне використання solvers чисельно інтеграція вобчислити модель безперервних станів у поточний час крок від штатів у попередній час етапи і похідні держави. Безперервні розв'язувачі використовують моделі блоків для обчислення значень Модельні дискретні стани кожного разу крок.

Математики розробили широкий різновидичисельна інтеграція техніки вирішення звичайного диференціальні рівняння (ОДУ) представляють безперервні стани динамічні системи. Simulink надає широкий набір фіксованих кроків і безперервні неперервні розв'язувачі, кожна реалізації конкретного рішення ОДУ метод (див. Розв'язувачі).

Дискретні розв'язувачі існують насамперед вирішувати сутодискретні моделі. Вони обчислити наступний крок часу моделювання для моделі і нічого іншого. Вони роблять не обчислюють безперервні стани і вони покластися на моделі блоків для оновлення дискретних станів моделі.

Отже, результат немає це не достатньо, щоб мати безперервний запускповільніше, ніж найшвидші дискретні розв'язувачі - інакше вони, за визначенням, не є безперервними. Ви повинні переглянути, чому ви вказуєте їх як безперервні.

Що ви намагаєтеся досягти, уповільнюючи безперервні розв'язувачі? Це питання моделювання часу / продуктивності?

Адам


0 для відповіді № 2

Мій погляд на це полягає в тому, що це неможливо. Один із способів підійти до цього полягає в тому, щоб замінити безперервні стани дискретними (можливо, на проміжній швидкості, скажімо, 100 Гц), і перетинати мої пальці, щоб втрата точності була терпимою.

Можливо, можна ізолювати блок і запустити його окремо швидше, але я не знаю.


0 для відповіді № 3

По-справжньому безперервне обчислення неможливе в цифровому процесорі, такому як комп'ютер.

Що MATLAB / Simulink означає "безперервний" це "Я буду (динамічно) намагаюся вгадати, що дискретний розмір кроку досить малий, так що помилка дискретизації дуже мала у вашому додатку".

Якщо ви вже знаєте, знаючи вашу програму, що 20ms (50Hz) буде досить малий, а потім використовувати дискретні - 50Hz.