Lua-скрипт працював надто довго за один раз
Що пише ArduPilot:
- … exceeded time limit
Щоразу, коли ArduPilot викликає скрипт, той може виконати щонайбільше SCR_VM_I_COUNT інструкцій Lua (типово 10000, ніколи не менше ніж 1000), перш ніж поверне керування. Скрипт, що перевищив межу, зупиняється з «Lua: FILE exceeded time limit», вилучається й більше не запускається. Ця межа не дає одному скрипту забрати процесор в інших і в польотного коду.
Що робити: найімовірніше спершу
Аплет важкий, і його інструкція вказує більший
SCR_VM_I_COUNT.ПеревіртеПрочитайте сторінку самого аплета: «Каталог Lua-аплетів» показує параметри, потрібні кожному.
ВиправтеЗадайте
SCR_VM_I_COUNTзначення, якого просить аплет, і перезавантажте.Ваш скрипт робить забагато за один виклик: довгий цикл, велика таблиця, читання файлу до кінця.
ВиправтеРозбийте роботу на кілька викликів: зробіть частину, поверніть керування й продовжте з наступного виклику.
Цикл у скрипті ніколи не завершується.
ВиправтеВиправте умову циклу. Більша межа лише змусить такий скрипт зависати довше.
Параметри, на які варто глянути
| Параметр | Що це |
|---|---|
SCR_VM_I_COUNT | Scripting Virtual Machine Instruction Count |
SCR_THD_PRIORITY | Scripting thread priority |
Де це зробити:Каталог Lua-аплетів
Код, який це надсилає
… exceeded time limit
libraries/AP_Scripting/lua_scripts.cpp lua_scripts::run_next_script() · Відкрити в ArduPilot Copter-4.7.1